aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/ncurses/ANNOUNCE671
-rw-r--r--contrib/ncurses/AUTHORS38
-rw-r--r--contrib/ncurses/INSTALL719
-rw-r--r--contrib/ncurses/MANIFEST70
-rw-r--r--contrib/ncurses/Makefile.in8
-rw-r--r--contrib/ncurses/Makefile.os231
-rw-r--r--contrib/ncurses/NEWS2763
-rw-r--r--contrib/ncurses/README39
-rw-r--r--contrib/ncurses/README.emx37
-rw-r--r--contrib/ncurses/TO-DO193
-rw-r--r--contrib/ncurses/aclocal.m42708
-rw-r--r--contrib/ncurses/announce.html.in616
-rwxr-xr-xcontrib/ncurses/config.guess843
-rwxr-xr-xcontrib/ncurses/config.sub363
-rwxr-xr-xcontrib/ncurses/configure16867
-rw-r--r--contrib/ncurses/configure.in851
-rw-r--r--contrib/ncurses/convert_configure.pl29
-rw-r--r--contrib/ncurses/dist.mk91
-rw-r--r--contrib/ncurses/doc/hackguide.doc809
-rw-r--r--contrib/ncurses/doc/html/NCURSES-Programming-HOWTO.html6413
-rw-r--r--contrib/ncurses/doc/html/announce.html627
-rw-r--r--contrib/ncurses/doc/html/hackguide.html38
-rw-r--r--contrib/ncurses/doc/html/ncurses-intro.html66
-rw-r--r--contrib/ncurses/doc/ncurses-intro.doc2550
-rw-r--r--contrib/ncurses/form/Makefile.in23
-rw-r--r--contrib/ncurses/form/READ.ME33
-rw-r--r--contrib/ncurses/form/f_trace.c70
-rw-r--r--contrib/ncurses/form/fld_arg.c46
-rw-r--r--contrib/ncurses/form/fld_attr.c54
-rw-r--r--contrib/ncurses/form/fld_current.c80
-rw-r--r--contrib/ncurses/form/fld_def.c355
-rw-r--r--contrib/ncurses/form/fld_dup.c68
-rw-r--r--contrib/ncurses/form/fld_ftchoice.c17
-rw-r--r--contrib/ncurses/form/fld_ftlink.c29
-rw-r--r--contrib/ncurses/form/fld_info.c57
-rw-r--r--contrib/ncurses/form/fld_just.c27
-rw-r--r--contrib/ncurses/form/fld_link.c64
-rw-r--r--contrib/ncurses/form/fld_max.c22
-rw-r--r--contrib/ncurses/form/fld_move.c15
-rw-r--r--contrib/ncurses/form/fld_newftyp.c79
-rw-r--r--contrib/ncurses/form/fld_opts.c38
-rw-r--r--contrib/ncurses/form/fld_pad.c23
-rw-r--r--contrib/ncurses/form/fld_page.c20
-rw-r--r--contrib/ncurses/form/fld_stat.c20
-rw-r--r--contrib/ncurses/form/fld_type.c25
-rw-r--r--contrib/ncurses/form/fld_user.c17
-rw-r--r--contrib/ncurses/form/form.h208
-rw-r--r--contrib/ncurses/form/form.priv.h184
-rw-r--r--contrib/ncurses/form/frm_cursor.c15
-rw-r--r--contrib/ncurses/form/frm_data.c114
-rw-r--r--contrib/ncurses/form/frm_def.c256
-rw-r--r--contrib/ncurses/form/frm_driver.c3133
-rw-r--r--contrib/ncurses/form/frm_hook.c60
-rw-r--r--contrib/ncurses/form/frm_opts.c27
-rw-r--r--contrib/ncurses/form/frm_page.c34
-rw-r--r--contrib/ncurses/form/frm_post.c37
-rw-r--r--contrib/ncurses/form/frm_req_name.c171
-rw-r--r--contrib/ncurses/form/frm_scale.c22
-rw-r--r--contrib/ncurses/form/frm_sub.c26
-rw-r--r--contrib/ncurses/form/frm_user.c15
-rw-r--r--contrib/ncurses/form/frm_win.c27
-rw-r--r--contrib/ncurses/form/fty_alnum.c168
-rw-r--r--contrib/ncurses/form/fty_alpha.c181
-rw-r--r--contrib/ncurses/form/fty_enum.c239
-rw-r--r--contrib/ncurses/form/fty_int.c200
-rw-r--r--contrib/ncurses/form/fty_ipv4.c64
-rw-r--r--contrib/ncurses/form/fty_num.c277
-rw-r--r--contrib/ncurses/form/fty_regex.c170
-rw-r--r--contrib/ncurses/form/llib-lform144
-rw-r--r--contrib/ncurses/form/llib-lformw740
-rw-r--r--contrib/ncurses/form/modules7
-rw-r--r--contrib/ncurses/include/Caps8
-rw-r--r--contrib/ncurses/include/Caps.aix416
-rw-r--r--contrib/ncurses/include/Caps.hpux111278
-rw-r--r--contrib/ncurses/include/Caps.keys8
-rw-r--r--contrib/ncurses/include/Caps.osf1r510
-rw-r--r--contrib/ncurses/include/Caps.uwin16
-rwxr-xr-xcontrib/ncurses/include/MKhashsize.sh28
-rwxr-xr-xcontrib/ncurses/include/MKkey_defs.sh25
-rwxr-xr-xcontrib/ncurses/include/MKncurses_def.sh4
-rwxr-xr-xcontrib/ncurses/include/MKparametrized.sh29
-rw-r--r--contrib/ncurses/include/MKterm.h.awk.in34
-rw-r--r--contrib/ncurses/include/curses.h.in391
-rw-r--r--contrib/ncurses/include/curses.tail120
-rw-r--r--contrib/ncurses/include/curses.wide128
-rw-r--r--contrib/ncurses/include/hashed_db.h67
-rw-r--r--contrib/ncurses/include/nc_alloc.h25
-rw-r--r--contrib/ncurses/include/nc_tparm.h65
-rw-r--r--contrib/ncurses/include/ncurses_cfg.hin18
-rw-r--r--contrib/ncurses/include/ncurses_defs46
-rw-r--r--contrib/ncurses/include/ncurses_dll.h41
-rw-r--r--contrib/ncurses/include/term_entry.h16
-rw-r--r--contrib/ncurses/include/tic.h82
-rwxr-xr-xcontrib/ncurses/install-sh49
-rw-r--r--contrib/ncurses/man/Makefile.in17
-rw-r--r--contrib/ncurses/man/captoinfo.1m18
-rw-r--r--contrib/ncurses/man/clear.19
-rw-r--r--contrib/ncurses/man/curs_add_wch.3x5
-rw-r--r--contrib/ncurses/man/curs_add_wchstr.3x11
-rw-r--r--contrib/ncurses/man/curs_addch.3x70
-rw-r--r--contrib/ncurses/man/curs_addchstr.3x40
-rw-r--r--contrib/ncurses/man/curs_addstr.3x16
-rw-r--r--contrib/ncurses/man/curs_addwstr.3x15
-rw-r--r--contrib/ncurses/man/curs_attr.3x104
-rw-r--r--contrib/ncurses/man/curs_beep.3x12
-rw-r--r--contrib/ncurses/man/curs_bkgd.3x41
-rw-r--r--contrib/ncurses/man/curs_bkgrnd.3x19
-rw-r--r--contrib/ncurses/man/curs_border.3x39
-rw-r--r--contrib/ncurses/man/curs_border_set.3x11
-rw-r--r--contrib/ncurses/man/curs_clear.3x43
-rw-r--r--contrib/ncurses/man/curs_color.3x68
-rw-r--r--contrib/ncurses/man/curs_delch.3x6
-rw-r--r--contrib/ncurses/man/curs_deleteln.3x18
-rw-r--r--contrib/ncurses/man/curs_extend.3x15
-rw-r--r--contrib/ncurses/man/curs_get_wch.3x20
-rw-r--r--contrib/ncurses/man/curs_get_wstr.3x36
-rw-r--r--contrib/ncurses/man/curs_getcchar.3x8
-rw-r--r--contrib/ncurses/man/curs_getch.3x75
-rw-r--r--contrib/ncurses/man/curs_getstr.3x33
-rw-r--r--contrib/ncurses/man/curs_getyx.3x47
-rw-r--r--contrib/ncurses/man/curs_in_wch.3x6
-rw-r--r--contrib/ncurses/man/curs_in_wchstr.3x13
-rw-r--r--contrib/ncurses/man/curs_inch.3x14
-rw-r--r--contrib/ncurses/man/curs_inchstr.3x19
-rw-r--r--contrib/ncurses/man/curs_initscr.3x34
-rw-r--r--contrib/ncurses/man/curs_inopts.3x78
-rw-r--r--contrib/ncurses/man/curs_ins_wch.3x6
-rw-r--r--contrib/ncurses/man/curs_ins_wstr.3x14
-rw-r--r--contrib/ncurses/man/curs_insch.3x14
-rw-r--r--contrib/ncurses/man/curs_insstr.3x52
-rw-r--r--contrib/ncurses/man/curs_instr.3x16
-rw-r--r--contrib/ncurses/man/curs_inwstr.3x10
-rw-r--r--contrib/ncurses/man/curs_kernel.3x67
-rw-r--r--contrib/ncurses/man/curs_mouse.3x129
-rw-r--r--contrib/ncurses/man/curs_move.3x22
-rw-r--r--contrib/ncurses/man/curs_outopts.3x73
-rw-r--r--contrib/ncurses/man/curs_overlay.3x21
-rw-r--r--contrib/ncurses/man/curs_pad.3x102
-rw-r--r--contrib/ncurses/man/curs_print.3x16
-rw-r--r--contrib/ncurses/man/curs_printw.3x48
-rw-r--r--contrib/ncurses/man/curs_refresh.3x34
-rw-r--r--contrib/ncurses/man/curs_scanw.3x44
-rw-r--r--contrib/ncurses/man/curs_scr_dump.3x28
-rw-r--r--contrib/ncurses/man/curs_scroll.3x32
-rw-r--r--contrib/ncurses/man/curs_slk.3x110
-rw-r--r--contrib/ncurses/man/curs_termattrs.3x31
-rw-r--r--contrib/ncurses/man/curs_termcap.3x43
-rw-r--r--contrib/ncurses/man/curs_terminfo.3x137
-rw-r--r--contrib/ncurses/man/curs_touch.3x32
-rw-r--r--contrib/ncurses/man/curs_trace.3x16
-rw-r--r--contrib/ncurses/man/curs_util.3x94
-rw-r--r--contrib/ncurses/man/curs_window.3x67
-rw-r--r--contrib/ncurses/man/default_colors.3x28
-rw-r--r--contrib/ncurses/man/define_key.3x13
-rw-r--r--contrib/ncurses/man/form.3x76
-rw-r--r--contrib/ncurses/man/form_cursor.3x17
-rw-r--r--contrib/ncurses/man/form_data.3x6
-rw-r--r--contrib/ncurses/man/form_driver.3x43
-rw-r--r--contrib/ncurses/man/form_field.3x41
-rw-r--r--contrib/ncurses/man/form_field_attributes.3x19
-rw-r--r--contrib/ncurses/man/form_field_buffer.3x35
-rw-r--r--contrib/ncurses/man/form_field_info.3x17
-rw-r--r--contrib/ncurses/man/form_field_just.3x16
-rw-r--r--contrib/ncurses/man/form_field_new.3x36
-rw-r--r--contrib/ncurses/man/form_field_opts.3x30
-rw-r--r--contrib/ncurses/man/form_field_userptr.3x22
-rw-r--r--contrib/ncurses/man/form_field_validation.3x51
-rw-r--r--contrib/ncurses/man/form_fieldtype.3x70
-rw-r--r--contrib/ncurses/man/form_hook.3x16
-rw-r--r--contrib/ncurses/man/form_new.3x30
-rw-r--r--contrib/ncurses/man/form_new_page.3x14
-rw-r--r--contrib/ncurses/man/form_opts.3x16
-rw-r--r--contrib/ncurses/man/form_page.3x21
-rw-r--r--contrib/ncurses/man/form_post.3x35
-rw-r--r--contrib/ncurses/man/form_requestname.3x5
-rw-r--r--contrib/ncurses/man/form_userptr.3x22
-rw-r--r--contrib/ncurses/man/form_win.3x20
-rw-r--r--contrib/ncurses/man/infocmp.1m263
-rw-r--r--contrib/ncurses/man/infotocap.1m7
-rw-r--r--contrib/ncurses/man/key_defined.3x60
-rw-r--r--contrib/ncurses/man/keybound.3x15
-rw-r--r--contrib/ncurses/man/keyok.3x8
-rw-r--r--contrib/ncurses/man/legacy_coding.3x82
-rwxr-xr-xcontrib/ncurses/man/make_sed.sh18
-rw-r--r--contrib/ncurses/man/man_db.renames34
-rw-r--r--contrib/ncurses/man/manlinks.sed59
-rw-r--r--contrib/ncurses/man/menu.3x65
-rw-r--r--contrib/ncurses/man/menu_attributes.3x16
-rw-r--r--contrib/ncurses/man/menu_cursor.3x12
-rw-r--r--contrib/ncurses/man/menu_driver.3x24
-rw-r--r--contrib/ncurses/man/menu_format.3x19
-rw-r--r--contrib/ncurses/man/menu_hook.3x16
-rw-r--r--contrib/ncurses/man/menu_items.3x36
-rw-r--r--contrib/ncurses/man/menu_mark.3x28
-rw-r--r--contrib/ncurses/man/menu_new.3x23
-rw-r--r--contrib/ncurses/man/menu_opts.3x18
-rw-r--r--contrib/ncurses/man/menu_pattern.3x35
-rw-r--r--contrib/ncurses/man/menu_post.3x22
-rw-r--r--contrib/ncurses/man/menu_requestname.3x12
-rw-r--r--contrib/ncurses/man/menu_spacing.3x6
-rw-r--r--contrib/ncurses/man/menu_userptr.3x22
-rw-r--r--contrib/ncurses/man/menu_win.3x20
-rw-r--r--contrib/ncurses/man/mitem_current.3x33
-rw-r--r--contrib/ncurses/man/mitem_name.3x11
-rw-r--r--contrib/ncurses/man/mitem_new.3x27
-rw-r--r--contrib/ncurses/man/mitem_opts.3x16
-rw-r--r--contrib/ncurses/man/mitem_userptr.3x22
-rw-r--r--contrib/ncurses/man/mitem_value.3x12
-rw-r--r--contrib/ncurses/man/ncurses.3x277
-rw-r--r--contrib/ncurses/man/panel.3x11
-rw-r--r--contrib/ncurses/man/resizeterm.3x20
-rw-r--r--contrib/ncurses/man/term.5115
-rw-r--r--contrib/ncurses/man/term.730
-rw-r--r--contrib/ncurses/man/terminfo.head18
-rw-r--r--contrib/ncurses/man/terminfo.tail262
-rw-r--r--contrib/ncurses/man/tic.1m172
-rw-r--r--contrib/ncurses/man/toe.1m34
-rw-r--r--contrib/ncurses/man/tput.1181
-rw-r--r--contrib/ncurses/man/tset.1152
-rw-r--r--contrib/ncurses/man/wresize.3x8
-rw-r--r--contrib/ncurses/menu/Makefile.in21
-rw-r--r--contrib/ncurses/menu/READ.ME32
-rw-r--r--contrib/ncurses/menu/eti.h6
-rw-r--r--contrib/ncurses/menu/llib-lmenu55
-rw-r--r--contrib/ncurses/menu/llib-lmenuw547
-rw-r--r--contrib/ncurses/menu/m_attribs.c26
-rw-r--r--contrib/ncurses/menu/m_cursor.c39
-rw-r--r--contrib/ncurses/menu/m_driver.c668
-rw-r--r--contrib/ncurses/menu/m_format.c70
-rw-r--r--contrib/ncurses/menu/m_global.c427
-rw-r--r--contrib/ncurses/menu/m_hook.c26
-rw-r--r--contrib/ncurses/menu/m_item_cur.c32
-rw-r--r--contrib/ncurses/menu/m_item_nam.c18
-rw-r--r--contrib/ncurses/menu/m_item_new.c131
-rw-r--r--contrib/ncurses/menu/m_item_opt.c59
-rw-r--r--contrib/ncurses/menu/m_item_top.c43
-rw-r--r--contrib/ncurses/menu/m_item_use.c16
-rw-r--r--contrib/ncurses/menu/m_item_val.c28
-rw-r--r--contrib/ncurses/menu/m_item_vis.c25
-rw-r--r--contrib/ncurses/menu/m_items.c36
-rw-r--r--contrib/ncurses/menu/m_new.c36
-rw-r--r--contrib/ncurses/menu/m_opts.c51
-rw-r--r--contrib/ncurses/menu/m_pad.c27
-rw-r--r--contrib/ncurses/menu/m_pattern.c57
-rw-r--r--contrib/ncurses/menu/m_post.c271
-rw-r--r--contrib/ncurses/menu/m_req_name.c76
-rw-r--r--contrib/ncurses/menu/m_scale.c19
-rw-r--r--contrib/ncurses/menu/m_spacing.c41
-rw-r--r--contrib/ncurses/menu/m_sub.c22
-rw-r--r--contrib/ncurses/menu/m_trace.c77
-rw-r--r--contrib/ncurses/menu/m_userptr.c16
-rw-r--r--contrib/ncurses/menu/m_win.c22
-rw-r--r--contrib/ncurses/menu/menu.h8
-rw-r--r--contrib/ncurses/menu/menu.priv.h40
-rw-r--r--contrib/ncurses/menu/mf_common.h30
-rw-r--r--contrib/ncurses/menu/modules5
-rw-r--r--contrib/ncurses/misc/Makefile.in57
-rw-r--r--contrib/ncurses/misc/chkdef.cmd30
-rw-r--r--contrib/ncurses/misc/cleantic.cmd30
-rw-r--r--contrib/ncurses/misc/cmpdef.cmd30
-rwxr-xr-xcontrib/ncurses/misc/csort36
-rw-r--r--contrib/ncurses/misc/emx.src94
-rwxr-xr-xcontrib/ncurses/misc/gen_edit.sh58
-rwxr-xr-xcontrib/ncurses/misc/jpf-indent119
-rw-r--r--contrib/ncurses/misc/makedef.cmd30
-rwxr-xr-xcontrib/ncurses/misc/ncu-indent130
-rw-r--r--contrib/ncurses/misc/ncurses-config.in156
-rw-r--r--contrib/ncurses/misc/run_tic.in80
-rwxr-xr-xcontrib/ncurses/misc/shlib79
-rw-r--r--contrib/ncurses/misc/terminfo.src23412
-rw-r--r--contrib/ncurses/mk-0th.awk38
-rw-r--r--contrib/ncurses/mk-1st.awk185
-rw-r--r--contrib/ncurses/mk-2nd.awk49
-rwxr-xr-xcontrib/ncurses/mkinstalldirs3
-rw-r--r--contrib/ncurses/ncurses/Makefile.in125
-rw-r--r--contrib/ncurses/ncurses/README29
-rw-r--r--contrib/ncurses/ncurses/README.IZ95
-rw-r--r--contrib/ncurses/ncurses/SigAction.h14
-rw-r--r--contrib/ncurses/ncurses/base/MKkeyname.awk115
-rwxr-xr-xcontrib/ncurses/ncurses/base/MKlib_gen.sh75
-rw-r--r--contrib/ncurses/ncurses/base/MKunctrl.awk44
-rw-r--r--contrib/ncurses/ncurses/base/README30
-rw-r--r--contrib/ncurses/ncurses/base/define_key.c23
-rw-r--r--contrib/ncurses/ncurses/base/key_defined.c76
-rw-r--r--contrib/ncurses/ncurses/base/keybound.c15
-rw-r--r--contrib/ncurses/ncurses/base/keyok.c37
-rw-r--r--contrib/ncurses/ncurses/base/legacy_coding.c48
-rw-r--r--contrib/ncurses/ncurses/base/lib_addch.c408
-rw-r--r--contrib/ncurses/ncurses/base/lib_addstr.c165
-rw-r--r--contrib/ncurses/ncurses/base/lib_beep.c9
-rw-r--r--contrib/ncurses/ncurses/base/lib_bkgd.c46
-rw-r--r--contrib/ncurses/ncurses/base/lib_box.c38
-rw-r--r--contrib/ncurses/ncurses/base/lib_chgat.c18
-rw-r--r--contrib/ncurses/ncurses/base/lib_clrbot.c8
-rw-r--r--contrib/ncurses/ncurses/base/lib_color.c364
-rw-r--r--contrib/ncurses/ncurses/base/lib_colorset.c15
-rw-r--r--contrib/ncurses/ncurses/base/lib_dft_fgbg.c22
-rw-r--r--contrib/ncurses/ncurses/base/lib_erase.c21
-rw-r--r--contrib/ncurses/ncurses/base/lib_freeall.c87
-rw-r--r--contrib/ncurses/ncurses/base/lib_getch.c253
-rw-r--r--contrib/ncurses/ncurses/base/lib_getstr.c41
-rw-r--r--contrib/ncurses/ncurses/base/lib_hline.c8
-rw-r--r--contrib/ncurses/ncurses/base/lib_initscr.c36
-rw-r--r--contrib/ncurses/ncurses/base/lib_insch.c99
-rw-r--r--contrib/ncurses/ncurses/base/lib_insdel.c6
-rw-r--r--contrib/ncurses/ncurses/base/lib_insnstr.c68
-rw-r--r--contrib/ncurses/ncurses/base/lib_instr.c48
-rw-r--r--contrib/ncurses/ncurses/base/lib_mouse.c1014
-rw-r--r--contrib/ncurses/ncurses/base/lib_move.c9
-rw-r--r--contrib/ncurses/ncurses/base/lib_mvwin.c10
-rw-r--r--contrib/ncurses/ncurses/base/lib_newterm.c211
-rw-r--r--contrib/ncurses/ncurses/base/lib_newwin.c54
-rw-r--r--contrib/ncurses/ncurses/base/lib_overlay.c78
-rw-r--r--contrib/ncurses/ncurses/base/lib_pad.c39
-rw-r--r--contrib/ncurses/ncurses/base/lib_printw.c20
-rw-r--r--contrib/ncurses/ncurses/base/lib_redrawln.c13
-rw-r--r--contrib/ncurses/ncurses/base/lib_refresh.c15
-rw-r--r--contrib/ncurses/ncurses/base/lib_restart.c59
-rw-r--r--contrib/ncurses/ncurses/base/lib_screen.c141
-rw-r--r--contrib/ncurses/ncurses/base/lib_scroll.c92
-rw-r--r--contrib/ncurses/ncurses/base/lib_set_term.c300
-rw-r--r--contrib/ncurses/ncurses/base/lib_slk.c138
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkatr_set.c20
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkatrof.c15
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkatron.c15
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkatrset.c10
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkattr.c12
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkclear.c6
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkcolor.c14
-rw-r--r--contrib/ncurses/ncurses/base/lib_slklab.c6
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkrefr.c20
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkset.c99
-rw-r--r--contrib/ncurses/ncurses/base/lib_ungetch.c8
-rw-r--r--contrib/ncurses/ncurses/base/lib_vline.c8
-rw-r--r--contrib/ncurses/ncurses/base/lib_wattroff.c19
-rw-r--r--contrib/ncurses/ncurses/base/lib_wattron.c21
-rw-r--r--contrib/ncurses/ncurses/base/lib_window.c108
-rw-r--r--contrib/ncurses/ncurses/base/resizeterm.c249
-rw-r--r--contrib/ncurses/ncurses/base/safe_sprintf.c84
-rw-r--r--contrib/ncurses/ncurses/base/sigaction.c64
-rw-r--r--contrib/ncurses/ncurses/base/tries.c25
-rw-r--r--contrib/ncurses/ncurses/base/version.c11
-rw-r--r--contrib/ncurses/ncurses/base/vsscanf.c19
-rw-r--r--contrib/ncurses/ncurses/base/wresize.c187
-rw-r--r--contrib/ncurses/ncurses/curses.priv.h905
-rw-r--r--contrib/ncurses/ncurses/llib-lncurses553
-rw-r--r--contrib/ncurses/ncurses/llib-lncursesw767
-rw-r--r--contrib/ncurses/ncurses/modules40
-rw-r--r--contrib/ncurses/ncurses/tinfo/MKcaptab.awk29
-rwxr-xr-xcontrib/ncurses/ncurses/tinfo/MKfallback.sh31
-rwxr-xr-xcontrib/ncurses/ncurses/tinfo/MKkeys_list.sh8
-rw-r--r--contrib/ncurses/ncurses/tinfo/MKnames.awk29
-rw-r--r--contrib/ncurses/ncurses/tinfo/README30
-rw-r--r--contrib/ncurses/ncurses/tinfo/access.c77
-rw-r--r--contrib/ncurses/ncurses/tinfo/add_tries.c6
-rw-r--r--contrib/ncurses/ncurses/tinfo/alloc_entry.c103
-rw-r--r--contrib/ncurses/ncurses/tinfo/alloc_ttype.c48
-rw-r--r--contrib/ncurses/ncurses/tinfo/captoinfo.c51
-rw-r--r--contrib/ncurses/ncurses/tinfo/comp_error.c32
-rw-r--r--contrib/ncurses/ncurses/tinfo/comp_expand.c16
-rw-r--r--contrib/ncurses/ncurses/tinfo/comp_hash.c22
-rw-r--r--contrib/ncurses/ncurses/tinfo/comp_parse.c167
-rw-r--r--contrib/ncurses/ncurses/tinfo/comp_scan.c526
-rw-r--r--contrib/ncurses/ncurses/tinfo/db_iterator.c227
-rw-r--r--contrib/ncurses/ncurses/tinfo/doalloc.c4
-rw-r--r--contrib/ncurses/ncurses/tinfo/free_ttype.c16
-rw-r--r--contrib/ncurses/ncurses/tinfo/hashed_db.c260
-rw-r--r--contrib/ncurses/ncurses/tinfo/home_terminfo.c15
-rw-r--r--contrib/ncurses/ncurses/tinfo/init_keytry.c50
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_acs.c185
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_cur_term.c10
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_data.c20
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_has_cap.c5
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_kernel.c8
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_napms.c19
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_options.c121
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_print.c9
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_raw.c226
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_setup.c411
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_termcap.c210
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_termname.c16
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_tgoto.c23
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_ti.c10
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_tparm.c477
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_tputs.c21
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_ttyflags.c94
-rw-r--r--contrib/ncurses/ncurses/tinfo/make_keys.c10
-rw-r--r--contrib/ncurses/ncurses/tinfo/name_match.c17
-rw-r--r--contrib/ncurses/ncurses/tinfo/parse_entry.c74
-rw-r--r--contrib/ncurses/ncurses/tinfo/read_entry.c455
-rw-r--r--contrib/ncurses/ncurses/tinfo/read_termcap.c91
-rw-r--r--contrib/ncurses/ncurses/tinfo/setbuf.c58
-rw-r--r--contrib/ncurses/ncurses/tinfo/strings.c23
-rw-r--r--contrib/ncurses/ncurses/tinfo/trim_sgr0.c328
-rw-r--r--contrib/ncurses/ncurses/tinfo/write_entry.c372
-rw-r--r--contrib/ncurses/ncurses/trace/README30
-rw-r--r--contrib/ncurses/ncurses/trace/lib_trace.c98
-rw-r--r--contrib/ncurses/ncurses/trace/lib_traceatr.c139
-rw-r--r--contrib/ncurses/ncurses/trace/lib_tracebits.c6
-rw-r--r--contrib/ncurses/ncurses/trace/lib_tracechr.c36
-rw-r--r--contrib/ncurses/ncurses/trace/lib_tracedmp.c41
-rw-r--r--contrib/ncurses/ncurses/trace/lib_tracemse.c42
-rw-r--r--contrib/ncurses/ncurses/trace/trace_buf.c71
-rw-r--r--contrib/ncurses/ncurses/trace/varargs.c64
-rw-r--r--contrib/ncurses/ncurses/trace/visbuf.c227
-rwxr-xr-xcontrib/ncurses/ncurses/tty/MKexpanded.sh6
-rw-r--r--contrib/ncurses/ncurses/tty/hashmap.c18
-rw-r--r--contrib/ncurses/ncurses/tty/lib_mvcur.c253
-rw-r--r--contrib/ncurses/ncurses/tty/lib_tstp.c12
-rw-r--r--contrib/ncurses/ncurses/tty/lib_twait.c213
-rw-r--r--contrib/ncurses/ncurses/tty/lib_vidattr.c72
-rw-r--r--contrib/ncurses/ncurses/tty/tty_display.h11
-rw-r--r--contrib/ncurses/ncurses/tty/tty_update.c639
-rw-r--r--contrib/ncurses/ncurses/widechar/charable.c80
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_add_wch.c113
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_box_set.c4
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_cchar.c56
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_get_wch.c50
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_get_wstr.c76
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_in_wch.c12
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_in_wchnstr.c20
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_ins_wch.c95
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_inwstr.c36
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_pecho_wchar.c57
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_slk_wset.c72
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_unget_wch.c49
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_vid_attr.c252
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_wacs.c43
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_wunctrl.c13
-rw-r--r--contrib/ncurses/panel/Makefile.in23
-rw-r--r--contrib/ncurses/panel/llib-lpanel43
-rw-r--r--contrib/ncurses/panel/llib-lpanelw182
-rw-r--r--contrib/ncurses/panel/p_above.c15
-rw-r--r--contrib/ncurses/panel/p_below.c15
-rw-r--r--contrib/ncurses/panel/p_bottom.c48
-rw-r--r--contrib/ncurses/panel/p_delete.c15
-rw-r--r--contrib/ncurses/panel/p_hidden.c15
-rw-r--r--contrib/ncurses/panel/p_hide.c19
-rw-r--r--contrib/ncurses/panel/p_move.c24
-rw-r--r--contrib/ncurses/panel/p_new.c58
-rw-r--r--contrib/ncurses/panel/p_replace.c27
-rw-r--r--contrib/ncurses/panel/p_show.c30
-rw-r--r--contrib/ncurses/panel/p_top.c9
-rw-r--r--contrib/ncurses/panel/p_update.c13
-rw-r--r--contrib/ncurses/panel/p_user.c22
-rw-r--r--contrib/ncurses/panel/p_win.c13
-rw-r--r--contrib/ncurses/panel/panel.c89
-rw-r--r--contrib/ncurses/panel/panel.h4
-rw-r--r--contrib/ncurses/panel/panel.priv.h20
-rwxr-xr-xcontrib/ncurses/progs/MKtermsort.sh42
-rw-r--r--contrib/ncurses/progs/Makefile.in118
-rwxr-xr-xcontrib/ncurses/progs/capconvert29
-rw-r--r--contrib/ncurses/progs/clear.c24
-rwxr-xr-xcontrib/ncurses/progs/clear.sh28
-rw-r--r--contrib/ncurses/progs/dump_entry.c424
-rw-r--r--contrib/ncurses/progs/dump_entry.h23
-rw-r--r--contrib/ncurses/progs/infocmp.c537
-rw-r--r--contrib/ncurses/progs/modules18
-rw-r--r--contrib/ncurses/progs/progs.priv.h22
-rw-r--r--contrib/ncurses/progs/tic.c597
-rw-r--r--contrib/ncurses/progs/toe.c488
-rw-r--r--contrib/ncurses/progs/tput.c99
-rw-r--r--contrib/ncurses/progs/tset.c223
-rw-r--r--contrib/ncurses/tack/COPYING8
-rw-r--r--contrib/ncurses/tack/HISTORY5
-rw-r--r--contrib/ncurses/tack/Makefile.in103
-rw-r--r--contrib/ncurses/tack/ansi.c6
-rw-r--r--contrib/ncurses/tack/charset.c60
-rw-r--r--contrib/ncurses/tack/color.c114
-rw-r--r--contrib/ncurses/tack/control.c43
-rw-r--r--contrib/ncurses/tack/crum.c24
-rw-r--r--contrib/ncurses/tack/edit.c87
-rw-r--r--contrib/ncurses/tack/fun.c63
-rw-r--r--contrib/ncurses/tack/init.c28
-rw-r--r--contrib/ncurses/tack/menu.c6
-rw-r--r--contrib/ncurses/tack/modes.c22
-rw-r--r--contrib/ncurses/tack/modules29
-rw-r--r--contrib/ncurses/tack/output.c18
-rw-r--r--contrib/ncurses/tack/pad.c47
-rw-r--r--contrib/ncurses/tack/scan.c37
-rw-r--r--contrib/ncurses/tack/sync.c28
-rw-r--r--contrib/ncurses/tack/sysdep.c19
-rw-r--r--contrib/ncurses/tack/tack.131
-rw-r--r--contrib/ncurses/tack/tack.c39
-rw-r--r--contrib/ncurses/tack/tack.h207
-rwxr-xr-xcontrib/ncurses/tar-copy.sh29
486 files changed, 68870 insertions, 32151 deletions
diff --git a/contrib/ncurses/ANNOUNCE b/contrib/ncurses/ANNOUNCE
index 7b5f4efa69ae..bbeeb8922d47 100644
--- a/contrib/ncurses/ANNOUNCE
+++ b/contrib/ncurses/ANNOUNCE
@@ -1,486 +1,463 @@
+ Announcing ncurses 5.6
- Announcing ncurses 5.2
-
- The ncurses (new curses) library is a free software emulation of
- curses in System V Release 4.0, and more. It uses terminfo format,
- supports pads and color and multiple highlights and forms characters
- and function-key mapping, and has all the other SYSV-curses
+ The ncurses (new curses) library is a free software emulation of
+ curses in System V Release 4.0, and more. It uses terminfo format,
+ supports pads and color and multiple highlights and forms characters
+ and function-key mapping, and has all the other SYSV-curses
enhancements over BSD curses.
- In mid-June 1995, the maintainer of 4.4BSD curses declared that he
- considered 4.4BSD curses obsolete, and is encouraging the keepers of
- Unix releases such as BSD/OS, freeBSD and netBSD to switch over to
- ncurses.
+ 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.
- The ncurses code was developed under GNU/Linux. It should port easily
- to any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2
- Warp!
+ The ncurses code was developed under GNU/Linux. It has been in use for
+ some time with OpenBSD as the system curses library, and on FreeBSD
+ and NetBSD as an external package. It should port easily to any
+ ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!
The distribution includes the library and support utilities, including
- a terminfo compiler tic(1), a decompiler infocmp(1), clear(1),
- tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full
+ a terminfo compiler tic(1), a decompiler infocmp(1), clear(1),
+ tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full
manual pages are provided for the library and tools.
- The ncurses distribution is available via anonymous FTP at the GNU
- distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses.
- It is also available at [2]ftp://dickey.his.com/ncurses.
+ 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 and
- 5.1; very few applications will require recompilation, depending on
- the platform. These are the highlights from the change-log since
- ncurses 5.1 release.
+ This release is designed to be upward compatible from ncurses 5.0
+ through 5.5; very few applications will require recompilation,
+ depending on the platform. These are the highlights from the
+ change-log since ncurses 5.5 release.
Interface changes:
- * change type of ospeed variable back to short to match its use in
- legacy applications. It was altered after ncurses 4.2 to speed_t
- to repair a type mismatch which was introduced after 1.9.4 in
- 1995. The principal users of termcap continued to use short, which
- is not the same size.
- NOTE: A few applications will have to be recompiled (about 1% of
- the programs in a typical Linux distribution, 10% of the programs
- that use ncurses). These are easy to identify with nm or strings.
- * remove a private function _nc_can_clear_with(), which was built
- with the configure --enable-expanded option but not used.
- * add several private functions (prefixed with "_nc_") for tracing
- chtype values in the debug library, and for better access and
- buffer limit checking.
+ * generate linkable stubs for some macros:
+ getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx,
+ getpary, getpary,
+ and (for libncursesw)
+ wgetbkgrnd
New features and improvements:
- * rewrote tgoto() to make it better support existing termcap
- applications which use hardcoded strings rather than obtain all of
- their information from the termcap file. If the string does not
- appear to be a terminfo string (i.e., does not refer to a "%p"
- parameter, or terminfo-style padding), and termcap support is
- configured, tgoto() will interpret it as termcap. Otherwise, as
- before, it will use tparm().
- * to ensure that the tgoto() changes work properly, added checks to
- tic which report capabilities that do not reference the expected
- number of parameters.
- * new configure script options:
- + option --disable-root-environ adds runtime checks which tell
- ncurses to disregard $TERMINFO and similar environment
- variables if the current user is root, or running
- setuid/setgid.
- + option --disable-assumed-color allows you to use the pre-5.1
- convention of default colors used for color-pair 0 to be
- configured (see assume_default_colors()).
- + implement configure script options that transform installed
- program names, e.g., --program-prefix, including the manpage
- names and cross references.
- + option --with-database allows you to specify a different
- terminfo source-file to install. On OS/2 EMX, the default is
- misc/emx.src, otherwise misc/terminfo.src
- + option --with-default-terminfo-dir allows you to specify the
- default terminfo database directory.
- + option --with-libtool allows you to build with libtool.
- NOTE: libtool uses a different notation for numbering shared
- library versions from the existing ncurses configuration.
- + option --with-manpage-tbl causes the manpages to be
- preprocessed by tbl(1) prior to installation,
- + option --without-curses-h causes the installation process to
- install curses.h as ncurses.h and make appropriate changes to
- headers and manpages.
- * modified configure script options:
- + change symbol used by the --install-prefix configure option
- from INSTALL_PREFIX to DESTDIR (the latter has become common
- usage although the name is misleading).
- + modify ld -rpath options (e.g., Linux, and Solaris) to use an
- absolute pathname for the build tree's lib directory,
- avoiding confusion with directories relative to the current
- one with the installed programs.
- + modified misc/run_tic.in to use tic -o, to eliminate
- dependency on $TERMINFO variable for installs.
- * terminfo database:
- + updated xterm terminfo entries to match XFree86 xterm patch
- #146.
- + added amiga-vnc, Matrix Orbital, and QNX qansi to
- misc/terminfo.src.
- + added os2 entry to misc/emx.src.
- + add S0 and E0 extensions to screen's terminfo entry since
- otherwise the FreeBSD port makes it pass termcap equivalents
- to tgoto, which would be misinterpreted by older versions of
- ncurses.
- * improvements to program usability:
- + modify programs to use curses_version() string to report the
- version of ncurses with which they are compiled rather than
- the NCURSES_VERSION string. The function returns the patch
- level in addition to the major and minor version numbers.
- + modify tput program so it can be renamed or invoked via a
- link as 'reset' or 'init', producing the same effect as
- tput reset or tput init.
- + add error checking to infocmp's -v and -m options to ensure
- that the option value is indeed a number.
- * improved performance:
- + replace a lookup table in lib_vidattr.c used to decode
- no_color_video with a logic expression which is faster.
+ * library
+ + support hashed databases for the terminal descriptions. This
+ uses the Berkeley database, has been tested for several
+ versions on different platforms.
+ + add use_legacy_coding() function to support lynx's
+ font-switching feature.
+ + add extension nofilter(), to cancel a prior filter() call.
+ + add/install a package config script, e.g., ncurses5-config or
+ ncursesw5-config, according to configuration options.
+ + provide ifdef for NCURSES_NOMACROS which suppresses most
+ macro definitions from curses.h, i.e., where a macro is
+ defined to override a function to improve performance.
+ + make ifdef's consistent in curses.h for the extended colors
+ so the header file can be used for the normal curses library.
+ The header file installed for extended colors is a variation
+ of the wide-character configuration.
+ + improve tgetstr() by making the return value point into the
+ user's buffer, if provided.
+ + add ifdef's allowing ncurses to be built with tparm() using
+ either varargs (the existing status), or using a
+ fixed-parameter list (to match X/Open).
+ + widen the test for xterm kmous a little to allow for other
+ strings than "\E[M", e.g., for xterm-sco functionality in
+ xterm.
+ + modify wgetnstr() to return KEY_RESIZE if a sigwinch occurs.
+ + move prototypes for wide-character trace functions from
+ curses.tail to curses.wide to avoid accidental reference to
+ those if _XOPEN_SOURCE_EXTENDED is defined without ensuring
+ that <wchar.h> is included.
+ + change the way shared libraries (other than libtool) are
+ installed. Rather than copying the build-tree's libraries,
+ link the shared objects into the install directory. This
+ makes the --with-rpath option work except with $(DESTDIR).
+ + several improvements for rendering in hpterm. These are only
+ available if the library is configured using
+ --enable-xmc-glitch.
+ + Add NCURSES_NO_HARD_TABS and NCURSES_NO_MAGIC_COOKIE
+ environment variables to allow runtime suppression of the
+ related hard-tabs and xmc-glitch features.
+ * programs:
+ + add new test programs: chgat.c, demo_altkeys.c, echochar.c,
+ foldkeys.c, movewindow.c, redraw.c, (noting that existing
+ test programs also were modified to test additional
+ features).
+ + modify tack to test extended capability function-key strings.
+ + modify toe to access termcap data, e.g., via cgetent()
+ functions, or as a text file if those are not available.
+ + improve infocmp/tic -f option formatting.
+ + add toe -a option, to show all databases. This uses new
+ private interfaces in the ncurses library for iterating
+ through the list of databases.
+ + modify MKfallback.sh to use tic -x when constructing fallback
+ tables to allow extended capabilities to be retrieved from a
+ fallback entry.
+ * terminal database
+ + add terminfo entries for xfce terminal (xfce) and multi gnome
+ terminal (mgt)
+ + add nsterm-16color entry
+ + updated mlterm terminfo entry
+ + add kon, kon2 and jfbterm terminfo entry
+ + remove invis capability from klone+sgr, mainly used by linux
+ entry, since it does not really do this
+ + add ka2, kb1, kb3, kc2 to vt220-keypad as an extension
+ + add shifted up/down arrow codes to xterm-new as kind/kri
+ strings
+ + add hpterm-color terminfo entry
+ + add 256color variants of terminfo entries for programs which
+ are reported to implement this feature
+ + correct order of use-clauses in rxvt-basic entry which made
+ codes for f1-f4 vt100-style rather than vt220-style.
Major bug fixes:
- * correct manlinks.sed script introduced in ncurses 5.1 to avoid
- using ERE "\+", which is not understood by standard versions of
- sed. This happens to work with GNU sed, but is not portable, and
- was the initial motivation for this release.
- * remove "hpux10.*" case from CF_SHARED_OPTS configure script macro.
- This differed from the "hpux*" case by using reversed symbolic
- links, which made the 5.1 version not match the configuration of
- 5.0 shared libraries.
- * guard against corrupt terminfo data:
- + modify tparm() to disallow arithmetic on strings, analyze the
- varargs list to read strings as strings and numbers as
- numbers.
- + modify tparm()'s internal function spop() to treat a null
- pointer as an empty string.
- + modify parse_format() in lib_tparm.c to ignore precision if
- it is longer than 10000.
- + rewrote limit checks in lib_mvcur.c using new functions
- _nc_safe_strcat(), etc. Made other related changes to check
- lengths used for strcat() and strcpy().
- * corrections to screen optimization:
- + added special case in lib_vidattr.c to reset underline and
- standout for devices that have no sgr0 defined.
- + change handling of non_dest_scroll_region in tty_update.c to
- clear text after it is shifted in rather than before shifting
- out. Also correct row computation.
- + modify rs2 capability in xterm-r6 and similar entries where
- cursor save/restore bracketed the sequence for resetting
- video attributes. The cursor restore would undo that.
- * UTF-8 support:
- + when checking LC_ALL, LC_CTYPE, and LANG environment
- variables for UTF-8 locale, ignore those which are set to an
- empty value, as per SUSV2.
- + encode 0xFFFD in UTF-8 with 3 bytes, not 2.
- + modify _nc_utf8_outch() to avoid sign-extension when checking
- for out-of-range value.
- * other library fixes:
- + added checks for an empty $HOME environment variable, to
- avoid retrieving terminfo descriptions from ./.terminfo .
- + change functions _nc_parse_entry() and postprocess_termcap()
- to avoid using strtok(), because it is non-reentrant.
- + initialize fds[] array to 0's in _nc_timed_wait(); apparently
- poll() only sets the revents members of that array when there
- is activity corresponding to the related file.
- + add a check for null pointer in Make_Enum_Type().
- + fix a heap problem with the c++ binding.
- + correct missing includes for <string.h> in several places,
- including the C++ binding. This is not noted by gcc unless we
- use the -fno-builtin option.
- * several fixes for tic:
- + add a check for empty buffers returned by fgets() in
- comp_scan.c next_char() function, in case tic is run on a
- non-text file (fixes a core dump).
- + modify tic to verify that its inputs are really files, in
- case someone tries to read a directory (or /dev/zero).
- + correct an uninitialized parameter to open_tempfile() in
- tic.c which made "tic -I" give an ambiguous error message
- about tmpnam.
- + correct logic in adjust_cancels(), which did not check both
- alternatives when reclassifying an extended name between
- boolean, number and string, causing an infinite loop in tic.
- * using new checks in tic for parameter counts in capability
- strings, found/fixed several errors both in the terminfo database
- and in the include/Caps file.
- + modified several terminfo capability strings, including the
- definitions for setaf, setab, in include/Caps to indicate
- that the entries are parameterized. This information is used
- to tell which strings are translated when converting to
- termcap. This fixes a problem where the generated termcap
- would contain a spurious "%p1" for the terminfo "%p1%d".
- + correct parameter counts in include/Caps for dclk as well as
- some printer-specific capabilities: csnm, defc, scs, scsd,
- smgtp, smglp.
- * various fixes for install scripts used to support configure
- --srcdir and --with-install-prefix.
- * correct several mismatches between manpage filename and ".TH"
- directives, renaming dft_fgbg.3x to default_colors.3x and
- menu_attribs.3x to menu_attributes.3x.
+ * correct a typo in configure --with-bool option for the case where
+ --without-cxx is used.
+ * move assignment from environment variable ESCDELAY from initscr()
+ down to newterm() so the environment variable affects timeouts for
+ terminals opened with newterm() as well.
+ * modify werase to clear multicolumn characters that extend into a
+ derived window.
+ * modify wchgat() to mark updated cells as changed so a refresh will
+ repaint those cells.
+ * correct logic in wadd_wch() and wecho_wch(), which did not guard
+ against passing the multi-column attribute into a call on
+ waddch(), e.g., using data returned by win_wch()
+ * fix redrawing of windows other than stdscr using wredrawln() by
+ touching the corresponding rows in curscr.
+ * reduce memory leaks in repeated calls to tgetent() by remembering
+ the last TERMINAL* value allocated to hold the corresponding data
+ and freeing that if the tgetent() result buffer is the same as the
+ previous call.
+ * modify read_termtype() so the term_names data is always allocated
+ as part of the str_table, a better fix for a memory leak.
+ * fix wins_nwstr(), which did not handle single-column non-8bit
+ codes.
+ * modify wbkgrnd() to avoid clearing the A_CHARTEXT attribute bits
+ since those record the state of multicolumn characters.
+ * improve SIGWINCH handling by postponing its effect during
+ newterm(), etc., when allocating screens.
+ * remove 970913 feature for copying subwindows as they are moved in
+ mvwin().
+ * add checks in waddchnstr() and wadd_wchnstr() to stop copying when
+ a null character is found.
+ * add some checks to ensure current position is within scrolling
+ region before scrolling on a new line.
+ * add a workaround to ACS mapping to allow applications such as
+ test/blue.c to use the "PC ROM" characters by masking them with
+ A_ALTCHARSET. This worked up til 5.5, but was lost in the revision
+ of legacy coding.
Portability:
* configure script:
- + newer config.guess, config.sub, including changes to support
- OS/2 EMX. The configure script for OS/2 EMX still relies on a
- patch since there is no (working) support for that platform
- in the main autoconf distribution.
- + make configure script checks on variables $GCC and $GXX
- consistently compare against 'yes' rather than test if they
- are nonnull, since either may be set to the corresponding
- name of the C or C++ compiler.
- + change configure script to use AC_CANONICAL_SYSTEM rather
- than AC_CANONICAL_HOST, which means that configure --target
- will set a default program-prefix.
- + modify the check for big-core to force a couple of memory
- accesses, which may work as needed for older/less-capable
- machines (if not, there's still the explicit configure
- option).
- + modify configure test for tcgetattr() to allow for old
- implementations, e.g., on BeOS, which only defined it as a
+ + new options:
+
+ --with-hashed-db
+ Use Berkeley hashed database for storing terminfo
+ data rather than storing each compiled entry in a
+ separate binary file within a directory tree.
+
+ --without-dlsym
+ Do not use dlsym() to load GPM dynamically.
+
+ --with-valgrind
+ Simplify building for testing with valgrind.
+
+ --enable-wgetch-events
+ Compile with experimental wgetch-events code.
+
+ --enable-signed-char
+ Store booleans in "signed char" rather than "char".
+
+ + improved options:
+
+ --disable-largefile
+ make the option work both ways.
+
+ --with-gpm
+ The option now accepts a parameter, i.e., the name
+ of the dynamic GPM library to load via dlopen()
+
+ --disable-symlinks
+ The option now allows one to disable symlink() in
+ tic even when link() does not work.
+
+ * other configure/build issues:
+ + remove special case for Darwin in CF_XOPEN_SOURCE configure
macro.
- + add configure check for filesystems (such as OS/2 EMX) which
- do not distinguish between upper/lowercase filenames, use
- this to fix tags rules in makefiles.
- + add MKncurses_def.sh to generate fallback definitions for
- ncurses_cfg.h, to quiet gcc -Wundef warnings, modified
- ifdef's in code to consistently use "#if" rather than
- "#ifdef".
- + change most remaining unquoted parameters of test in
- configure script to use quotes, for instance fixing a problem
- in the --disable-database option.
- + modify scripts so that "make install.data" works on OS/2 EMX.
- + modify scripts and makefiles so the Ada95 directory builds on
- OS/2 EMX.
+ + add configure check to ensure that SIGWINCH is defined on
+ platforms such as OS X which exclude that when _XOPEN_SOURCE,
+ etc., are defined
+ + use ld's -search_paths_first option on Darwin to work around
+ odd search rules on that platform.
+ + improve ifdef's for _POSIX_VDISABLE in tset to work with Mac
+ OS X.
+ + modify configure script to ensure that if the C compiler is
+ used rather than the loader in making shared libraries, the
+ $(CFLAGS) variable is also used.
+ + use ${CC} rather than ${LD} in shared library rules for
+ IRIX64, Solaris to help ensure that initialization sections
+ are provided for extra linkage requirements, e.g., of C++
+ applications.
+ + improve some shared-library configure scripting for Linux,
+ FreeBSD and NetBSD to make --with-shlib-version work.
+ + split up dependency of names.c and codes.c in
+ ncurses/Makefile to work with parallel make.
+ + modify MKlib_gen.sh to change preprocessor-expanded _Bool
+ back to bool.
+ + modify progs/Makefile.in to make tput init work properly with
+ cygwin, i.e., do not pass a .exe in the reference string used
+ in check_aliases.
* library:
- + replaced case-statement in _nc_tracebits() for CSIZE with a
- table to simplify working around implementations that define
- random combinations of the related macros to zero.
- + improved OS/2 mouse support by retrying as a 2-button mouse
- if code fails to set up a 3-button mouse.
- + added private entrypoint _nc_basename(), used to consolidate
- related code in progs, as well as accommodating OS/2 EMX
- pathnames.
- + alter definition of NCURSES_CONST to make it non-empty.
- + redefine 'TEXT' in menu.h for AMIGA, since it is reported to
- have an (unspecified) symbol conflict.
- * programs:
- + modified progs/tset.c and tack/sysdep.c to build with sgttyb
- interface if neither termio or termios is available. Tested
- this with FreeBSD 2.1.5 (which does have termios - but the
- sgttyb does work).
+ + ignore wide-acs line-drawing characters that wcwidth() claims
+ are not one-column. This is a workaround for Solaris' broken
+ locale support.
+ + reduce name-pollution in term.h by removing #define's for
+ HAVE_xxx symbols.
+ + fix #ifdef in c++/internal.h for QNX 6.1
+ * test programs:
+ + modify test/configure script to allow building test programs
+ with PDCurses/X11.
+ + modified test programs to allow some to work with NetBSD
+ curses. Several do not because NetBSD curses implements a
+ subset of X/Open curses, and also lacks much of SVr4
+ additions. But it is enough for comparison.
+ + improved test/configure to build test/ncurses on HPUX 11
+ using the vendor curses.
+ + change configure script to produce test/Makefile from data
+ file.
Features of Ncurses
The ncurses package is fully compatible with SVr4 (System V Release 4)
curses:
- * All 257 of the SVr4 calls have been implemented (and are
+ * All 257 of the SVr4 calls have been implemented (and are
documented).
- * Full support for SVr4 curses features including keyboard mapping,
- color, forms-drawing with ACS characters, and automatic
+ * Full support for SVr4 curses features including keyboard mapping,
+ color, forms-drawing with ACS characters, and automatic
recognition of keypad and function keys.
- * An emulation of the SVr4 panels library, supporting a stack of
+ * An emulation of the SVr4 panels library, supporting a stack of
windows with backing store, is included.
- * An emulation of the SVr4 menus library, supporting a uniform but
+ * An emulation of the SVr4 menus library, supporting a uniform but
flexible interface for menu programming, is included.
- * An emulation of the SVr4 form library, supporting data collection
+ * An emulation of the SVr4 form library, supporting data collection
through on-screen forms, is included.
- * Binary terminfo entries generated by the ncurses tic(1)
- implementation are bit-for-bit-compatible with the entry format
+ * Binary terminfo entries generated by the ncurses tic(1)
+ implementation are bit-for-bit-compatible with the entry format
SVr4 curses uses.
* The utilities have options to allow you to filter terminfo entries
- for use with less capable curses/terminfo versions such as the
+ for use with less capable curses/terminfo versions such as the
HP/UX and AIX ports.
The ncurses package also has many useful extensions over SVr4:
- * The API is 8-bit clean and base-level conformant with the X/OPEN
- curses specification, XSI curses (that is, it implements all BASE
- level features, but not all EXTENDED features). Most
- EXTENDED-level features not directly concerned with wide-character
- support are implemented, including many function calls not
- supported under SVr4 curses (but portability of all calls is
- documented so you can use the SVr4 subset only).
- * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
- corner of the screen if your terminal has an insert-character
+ * 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).
+ * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
+ corner of the screen if your terminal has an insert-character
capability.
* Ada95 and C++ bindings.
- * Support for mouse event reporting with X Window xterm and OS/2
- console windows.
+ * Support for mouse event reporting with X Window xterm and FreeBSD
+ and OS/2 console windows.
* Extended mouse support via Alessandro Rubini's gpm package.
- * The function wresize() allows you to resize windows, preserving
+ * The function wresize() allows you to resize windows, preserving
their data.
* The function use_default_colors() allows you to use the terminal's
default colors for the default color pair, achieving the effect of
transparent colors.
* The functions keyok() and define_key() allow you to better control
- the use of function keys, e.g., disabling the ncurses KEY_MOUSE,
- or by defining more than one control sequence to map to a given
+ the use of function keys, e.g., disabling the ncurses KEY_MOUSE,
+ or by defining more than one control sequence to map to a given
key code.
- * Support for 16-color terminals, such as aixterm and XFree86 xterm.
- * Better cursor-movement optimization. The package now features a
+ * 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
or System V's.
- * Super hardware scrolling support. The screen-update code
- incorporates a novel, simple, and cheap algorithm that enables it
- to make optimal use of hardware scrolling, line-insertion, and
- line-deletion for screen-line movements. This algorithm is more
+ * Super hardware scrolling support. The screen-update code
+ incorporates a novel, simple, and cheap algorithm that enables it
+ to make optimal use of hardware scrolling, line-insertion, and
+ line-deletion for screen-line movements. This algorithm is more
powerful than the 4.4BSD curses quickch() routine.
- * Real support for terminals with the magic-cookie glitch. The
- screen-update code will refrain from drawing a highlight if the
- magic- cookie unattributed spaces required just before the
- beginning and after the end would step on a non-space character.
- It will automatically shift highlight boundaries when doing so
- would make it possible to draw the highlight without changing the
+ * Real support for terminals with the magic-cookie glitch. The
+ screen-update code will refrain from drawing a highlight if the
+ magic- cookie unattributed spaces required just before the
+ beginning and after the end would step on a non-space character.
+ It will automatically shift highlight boundaries when doing so
+ would make it possible to draw the highlight without changing the
visual appearance of the screen.
- * It is possible to generate the library with a list of pre-loaded
- fallback entries linked to it so that it can serve those terminal
- types even when no terminfo tree or termcap file is accessible
- (this may be useful for support of screen-oriented programs that
+ * It is possible to generate the library with a list of pre-loaded
+ fallback entries linked to it so that it can serve those terminal
+ types even when no terminfo tree or termcap file is accessible
+ (this may be useful for support of screen-oriented programs that
must run in single-user mode).
* The tic(1)/captoinfo utility provided with ncurses has the ability
- to translate many termcaps from the XENIX, IBM and AT&T extension
+ to translate many termcaps from the XENIX, IBM and AT&T extension
sets.
* A BSD-like tset(1) utility is provided.
* The ncurses library and utilities will automatically read terminfo
- entries from $HOME/.terminfo if it exists, and compile to that
- directory if it exists and the user has no write access to the
- system directory. This feature makes it easier for users to have
- personal terminfo entries without giving up access to the system
+ entries from $HOME/.terminfo if it exists, and compile to that
+ directory if it exists and the user has no write access to the
+ system directory. This feature makes it easier for users to have
+ personal terminfo entries without giving up access to the system
terminfo directory.
- * You may specify a path of directories to search for compiled
- descriptions with the environment variable TERMINFO_DIRS (this
- generalizes the feature provided by TERMINFO under stock System
+ * You may specify a path of directories to search for compiled
+ descriptions with the environment variable TERMINFO_DIRS (this
+ generalizes the feature provided by TERMINFO under stock System
V.)
- * In terminfo source files, use capabilities may refer not just to
+ * In terminfo source files, use capabilities may refer not just to
other entries in the same source file (as in System V) but also to
- compiled entries in either the system terminfo directory or the
+ compiled entries in either the system terminfo directory or the
user's $HOME/.terminfo directory.
- * A script (capconvert) is provided to help BSD users transition
- from termcap to terminfo. It gathers the information in a TERMCAP
- environment variable and/or a ~/.termcap local entries file and
- converts it to an equivalent local terminfo tree under
+ * A script (capconvert) is provided to help BSD users transition
+ from termcap to terminfo. It gathers the information in a TERMCAP
+ environment variable and/or a ~/.termcap local entries file and
+ converts it to an equivalent local terminfo tree under
$HOME/.terminfo.
- * Automatic fallback to the /etc/termcap file can be compiled in
- when it is not possible to build a terminfo tree. This feature is
- neither fast nor cheap, you don't want to use it unless you have
+ * Automatic fallback to the /etc/termcap file can be compiled in
+ when it is not possible to build a terminfo tree. This feature is
+ neither fast nor cheap, you don't want to use it unless you have
to, but it's there.
- * The table-of-entries utility toe makes it easy for users to see
+ * The table-of-entries utility toe makes it easy for users to see
exactly what terminal types are available on the system.
* The library meets the XSI requirement that every macro entry point
- have a corresponding function which may be linked (and will be
- prototype-checked) if the macro definition is disabled with
+ have a corresponding function which may be linked (and will be
+ prototype-checked) if the macro definition is disabled with
#undef.
- * An HTML "Introduction to Programming with NCURSES" document
- provides a narrative introduction to the curses programming
+ * An HTML "Introduction to Programming with NCURSES" document
+ provides a narrative introduction to the curses programming
interface.
State of the Package
Numerous bugs present in earlier versions have been fixed; the library
- is far more reliable than it used to be. Bounds checking in many
- `dangerous' entry points has been improved. The code is now type-safe
- according to gcc -Wall. The library has been checked for malloc leaks
+ is far more reliable than it used to be. Bounds checking in many
+ `dangerous' entry points has been improved. The code is now type-safe
+ according to gcc -Wall. The library has been checked for malloc leaks
and arena corruption by the Purify memory-allocation tester.
- The ncurses code has been tested with a wide variety of applications
+ The ncurses code has been tested with a wide variety of applications
including (versions starting with those noted):
cdk
Curses Development Kit
- [3]http://www.vexus.ca/CDK.html
- [4]http://dickey.his.com/cdk.
+ [3]http://invisible-island.net/cdk/
+ [4]http://www.vexus.ca/products/CDK/
ded
directory-editor
- [5]http://dickey.his.com/ded.
+ [5]http://invisible-island.net/ded/
dialog
- the underlying application used in Slackware's setup, and the
+ the underlying application used in Slackware's setup, and the
basis for similar applications on GNU/Linux.
- [6]http://dickey.his.com/dialog.
+ [6]http://invisible-island.net/dialog/
lynx
the character-screen WWW browser
- [7]http://lynx.isc.org/release.
+ [7]http://lynx.isc.org/release/
- Midnight Commander 4.1
+ Midnight Commander
file manager
- [8]www.gnome.org/mc/.
+ [8]http://www.ibiblio.org/mc/
mutt
mail utility
- [9]http://www.mutt.org.
+ [9]http://www.mutt.org/
ncftp
file-transfer utility
- [10]http://www.ncftp.com.
+ [10]http://www.ncftp.com/
nvi
New vi versions 1.50 are able to use ncurses versions 1.9.7 and
later.
- [11]http://www.bostic.com/vi/.
+ [11]http://www.bostic.com/vi/
- tin
- newsreader, supporting color, MIME
- [12]http://www.tin.org.
+ pinfo
+ Lynx-like info browser.
+ [12]http://dione.ids.pl/~pborys/software/pinfo/
- taper
- tape archive utility
- [13]http://members.iinet.net.au/~yusuf/taper/.
+ tin
+ newsreader, supporting color, MIME [13]http://www.tin.org/
vh-1.6
Volks-Hypertext browser for the Jargon File
- [14]http://www.bg.debian.org/Packages/unstable/text/vh.html.
+ [14]http://www.debian.org/Packages/unstable/text/vh.html
as well as some that use ncurses for the terminfo support alone:
minicom
terminal emulator
- [15]http://www.pp.clinet.fi/~walker/minicom.html.
+ [15]http://alioth.debian.org/projects/minicom/
vile
vi-like-emacs
- [16]http://dickey.his.com/vile.
+ [16]http://invisible-island.net/vile/
- The ncurses distribution includes a selection of test programs
+ The ncurses distribution includes a selection of test programs
(including a few games).
Who's Who and What's What
- The original developers of ncurses are [17]Zeyd Ben-Halim and [18]Eric
- S. Raymond. Ongoing work is being done by [19]Thomas Dickey and
- [20]Jürgen Pfeifer. [21]Thomas Dickey acts as the maintainer for the
- Free Software Foundation, which holds the copyright on ncurses.
- Contact the current maintainers at [22]bug-ncurses@gnu.org.
+ 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 [17]Thomas Dickey. Thomas Dickey acts as the maintainer for the
+ Free Software Foundation, which holds the copyright on ncurses.
+ Contact the current maintainers at [18]bug-ncurses@gnu.org.
- To join the ncurses mailing list, please write email to
+ To join the ncurses mailing list, please write email to
bug-ncurses-request@gnu.org containing the line:
subscribe <name>@<host.domain>
This list is open to anyone interested in helping with the development
and testing of this package.
- Beta versions of ncurses and patches to the current release are made
- available at [23]ftp://dickey.his.com/ncurses.
+ Beta versions of ncurses and patches to the current release are made
+ available at [19]ftp://invisible-island.net/ncurses/ .
Future Plans
- * Extended-level XPG4 conformance, with internationalization
+ * Extended-level XPG4 conformance, with internationalization
support.
* Ports to more systems, including DOS and Windows.
- We need people to help with these projects. If you are interested in
+ We need people to help with these projects. If you are interested in
working on them, please join the ncurses list.
Other Related Resources
- The distribution includes and uses a version of the terminfo-format
- terminal description file maintained by Eric Raymond.
- [24]http://earthspace.net/~esr/terminfo.
+ The distribution provides a newer version of the terminfo-format
+ terminal description file once maintained by [20]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.
- You can find lots of information on terminal-related topics not
- covered in the terminfo file at [25]Richard Shuford's archive.
+ You can find lots of information on terminal-related topics not
+ covered in the terminfo file at [21]Richard Shuford's archive .
References
- 1. ftp://ftp.gnu.org/pub/gnu/ncurses
- 2. ftp://dickey.his.com/ncurses
- 3. http://www.vexus.ca/CDK.html
- 4. http://dickey.his.com/cdk/cdk.html
- 5. http://dickey.his.com/ded/ded.html
- 6. http://dickey.his.com/dialog/dialog.html
+ 1. ftp://ftp.gnu.org/gnu/ncurses/
+ 2. ftp://invisible-island.net/ncurses/
+ 3. http://invisible-island.net/cdk/
+ 4. http://www.vexus.ca/products/CDK/
+ 5. http://invisible-island.net/ded/
+ 6. http://invisible-island.net/dialog/
7. http://lynx.isc.org/release/
- 8. file://localhost/usr/build/ncurses/ncurses-5.2-20001021/doc/html/www.gnome.org/mc/
+ 8. http://www.ibiblio.org/mc/
9. http://www.mutt.org/
10. http://www.ncftp.com/
11. http://www.bostic.com/vi/
- 12. http://www.tin.org/
- 13. http://members.iinet.net.au/~yusuf/taper/
- 14. http://www.bg.debian.org/Packages/unstable/text/vh.html
- 15. http://www.pp.clinet.fi/~walker/minicom.html
- 16. http://dickey.his.com/vile/vile.html
- 17. mailto:zmbenhal@netcom.com
- 18. http://www.ccil.org/~esr/home.html
- 19. mailto:dickey@herndon4.his.com
- 20. mailto:juergen.pfeifer@gmx.net
- 21. mailto:dickey@herndon4.his.com
- 22. mailto:bug-ncurses@gnu.org
- 23. ftp://dickey.his.com/ncurses
- 24. http://earthspace.net/~esr/terminfo
- 25. http://www.cs.utk.edu/~shuford/terminal_index.html
+ 12. http://dione.ids.pl/~pborys/software/pinfo/
+ 13. http://www.tin.org/
+ 14. http://www.debian.org/Packages/unstable/text/vh.html
+ 15. http://alioth.debian.org/projects/minicom/
+ 16. http://invisible-island.net/vile/
+ 17. mailto:dickey@invisible-island.net
+ 18. mailto:bug-ncurses@gnu.org
+ 19. ftp://invisible-island.net/ncurses/
+ 20. http://www.catb.org/~esr/terminfo/
+ 21. http://www.cs.utk.edu/~shuford/terminal_index.html
diff --git a/contrib/ncurses/AUTHORS b/contrib/ncurses/AUTHORS
new file mode 100644
index 000000000000..57904c404537
--- /dev/null
+++ b/contrib/ncurses/AUTHORS
@@ -0,0 +1,38 @@
+-------------------------------------------------------------------------------
+-- Copyright (c) 2006 Free Software 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: AUTHORS,v 1.2 2006/10/28 21:44:52 tom Exp $
+-------------------------------------------------------------------------------
+These are the principal authors/contributors of ncurses since 1.9.9e,
+in decreasing order of their contribution:
+
+TD Thomas E. Dickey
+JPF Juergen Pfeifer
+ESR Eric S Raymond
+AVL Alexander V Lukyanov
+PB Philippe Blain
+SV Sven Verdoolaege
diff --git a/contrib/ncurses/INSTALL b/contrib/ncurses/INSTALL
index 7255dffec239..45b13a9b46ef 100644
--- a/contrib/ncurses/INSTALL
+++ b/contrib/ncurses/INSTALL
@@ -1,4 +1,31 @@
--- $Id: INSTALL,v 1.52 2002/01/12 22:56:44 tom Exp $
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998-2005,2006 Free Software 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: INSTALL,v 1.114 2006/12/17 19:58:19 tom Exp $
---------------------------------------------------------------------
How to install Ncurses/Terminfo on your system
---------------------------------------------------------------------
@@ -19,12 +46,6 @@ below.
If you are converting from BSD curses and do not have root access, be sure
to read the BSD CONVERSION NOTES section below.
-If you are using a version of XFree86 xterm older than 3.1.2F, see the section
-on RECENT XTERM VERSIONS below.
-
-If you are trying to build GNU Emacs using ncurses for terminal support,
-read the USING NCURSES WITH EMACS section below.
-
If you are trying to build applications using gpm with ncurses,
read the USING NCURSES WITH GPM section below.
@@ -45,9 +66,9 @@ do anything else.
REQUIREMENTS:
------------
-You will need the following in order to build and install ncurses under UNIX:
+You will need the following to build and install ncurses under UNIX:
- * ANSI C compiler (gcc is recommended)
+ * ANSI C compiler (gcc, for instance)
* sh (bash will do)
* awk (mawk or gawk will do)
* sed
@@ -64,9 +85,10 @@ INSTALLATION PROCEDURE:
with it.
The --prefix option to configure changes the root directory for installing
- ncurses. The default is in subdirectories of /usr/local. Use
- --prefix=/usr to replace your default curses distribution. This is the
- default for Linux and BSD/OS users.
+ ncurses. The default is normally in subdirectories of /usr/local, except
+ for systems where ncurses is normally installed as a system library, e.g.,
+ Linux, the various BSD systems and Cygwin. Use --prefix=/usr to replace
+ your default curses distribution.
The package gets installed beneath the --prefix directory as follows:
@@ -77,9 +99,20 @@ INSTALLATION PROCEDURE:
In $(prefix)/include: C header files
Under $(prefix)/man: the manual pages
- Note however that the configure script attempts to locate previous
- installation of ncurses, and will set the default prefix according to where
- it finds the ncurses headers.
+ Note that the configure script attempts to locate previous installation of
+ ncurses, and will set the default prefix according to where it finds the
+ ncurses headers.
+
+ Do not use commands such as
+
+ make install prefix=XXX
+
+ to change the prefix after configuration, since the prefix value is used
+ for some absolute pathnames such as TERMINFO. Instead do this
+
+ make install DESTDIR=XXX
+
+ See also the discussion of --with-install-prefix.
2. Type `./configure' in the top-level directory of the distribution to
configure ncurses for your operating system and create the Makefiles.
@@ -106,6 +139,16 @@ INSTALLATION PROCEDURE:
libncurses.la (libtool)
+ If you configure using the --enable-widec option, a "w" is appended to the
+ library names (e.g., libncursesw.a), and the resulting libraries support
+ wide-characters, e.g., via a UTF-8 locale. The corresponding header files
+ are compatible with the non-wide-character configuration; wide-character
+ features are provided by ifdef's in the header files. The wide-character
+ library interfaces are not binary-compatible with the non-wide-character
+ version. Building and running the wide-character code relies on a fairly
+ recent implementation of libiconv. We have built this configuration on
+ Linux using libiconv, sometimes requiring libutf8.
+
If you do not specify any models, the normal and debug libraries will be
configured. Typing `configure' with no arguments is equivalent to:
@@ -158,6 +201,14 @@ INSTALLATION PROCEDURE:
databases are SVr4-compatible, but most seem to be. Exceptions include
DEC's Digital Unix (formerly known as OSF/1).
+ 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.
@@ -189,14 +240,14 @@ INSTALLATION PROCEDURE:
with tbl(1) by specifying the configure option --with-manpage-tbl.
If the system already has a curses library that you need to keep using
- for some bizarre binary-compatibility reason, you'll need to distinguish
- between it and ncurses. If ncurses is installed outside the standard
- directories (/usr/include and /usr/lib) then all your users will need
- to use the -I option to compile programs and -L to link them.
+ you'll need to distinguish between it and ncurses. See the discussion of
+ --disable-overwrite. If ncurses is installed outside the standard
+ directories (/usr/include and /usr/lib) then all your users will need to
+ use the -I option to compile programs and -L to link them.
- If you have BSD curses installed in your system and you accidentally
+ If you have another curses installed in your system and you accidentally
compile using its curses.h you'll end up with a large number of
- undefined symbols at link time. _waddbytes is one of them.
+ undefined symbols at link time.
IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory
and run the `capconvert' script. This script will deduce various things
@@ -221,26 +272,6 @@ INSTALLATION PROCEDURE:
which may be supported by C++. IF YOU USE THIS OPTION, BE ADVISED THAT
YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++.
-7. If you're running an older Linux, you must either (a) tell Linux that the
- console terminal type is `linux' or (b) make a link to or copy of the
- linux entry in the appropriate place under your terminfo directory, named
- `console'. All 1.3 and many 1.2 distributions (including Yggdrasil and
- Red Hat) already have the console type set to `linux'.
-
- The way to change the wired-in console type depends on the configuration
- of your system. This may involve editing /etc/inittab, /etc/ttytype,
- /etc/profile and other such files.
-
- Warning: this is not for the fainthearted, if you mess up your console
- getty entries you can make your system unusable! However, if you are
- a distribution maker, this is the right thing to do (see the note for
- integrators near the end of this file).
-
- The easier way is to link or copy l/linux to c/console under your terminfo
- directory. Note: this will go away next time you do `make install.data'
- and you'll have to redo it. There is no need to have entries for all
- possible screen sizes, ncurses will figure out the size automatically.
-
SUMMARY OF CONFIGURE OPTIONS:
----------------------------
@@ -290,14 +321,32 @@ SUMMARY OF CONFIGURE OPTIONS:
Compile without hashmap scrolling-optimization code. This algorithm is
the default.
+ --disable-home-terminfo
+ The $HOME/.terminfo directory is normally added to ncurses' search
+ list for reading/writing terminfo entries, since that directory is
+ more likely writable than the system terminfo database. Use this
+ option to disable the feature altogether.
+
+ --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.
+ --disable-lp64
+ The header files will ignore use of the _LP64 symbol to make chtype
+ and mmask_t types 32 bits (they may be long on 64-bit hosts, for
+ compatibility with older releases).
+
+ NOTE: this is potentially an ABI change, depending on existing
+ packages. The default for this option is "disabled" for ncurses
+ ABI 5, and "enabled" for ABI 6.
+
--disable-macros
For testing, use functions rather than macros. The program will run
- more slowly, but it is simpler to debug. This makes a header file
- "nomacros.h". See also the --enable-expanded option.
+ more slowly, but it is simpler to debug. This defines NCURSES_NOMACROS
+ at build time. See also the --enable-expanded option.
--disable-overwrite
If you are installing ncurses on a system which contains another
@@ -319,9 +368,10 @@ SUMMARY OF CONFIGURE OPTIONS:
Compile without scroll-hints code. This option is ignored when
hashmap scrolling is configured, which is the default.
- --enable-add-ons=DIR...
- This is used to check if this package is a glibc add-on. This is used
- only by the glibc makefiles.
+ --disable-tparm-varargs
+ Portable programs should call tparm() using the fixed-length parameter
+ list documented in X/Open. ncurses provides varargs support for this
+ function. Use --disable-tparm-varargs to disable this support.
--enable-assertions
For testing, compile-in assertion code. This is used only for a few
@@ -379,16 +429,41 @@ SUMMARY OF CONFIGURE OPTIONS:
For testing, generate functions for certain macros to make them visible
as such to the debugger. See also the --disable-macros option.
+ --enable-ext-colors
+ Extend the cchar_t structure to allow more than 16 colors to be
+ encoded. This applies only to the wide-character (--enable-widec)
+ configuration.
+
+ NOTE: using this option will make libraries which are not binary-
+ compatible with libncursesw 5.4. None of the interfaces change, but
+ applications which have an array of cchar_t's must be recompiled.
+
+ --enable-ext-mouse
+ Modify the encoding of mouse state to make room for a 5th mouse button.
+ That allows one to use ncurses with a wheel mouse with xterm or
+ similar X terminal emulators.
+
+ NOTE: using this option will make libraries which are not binary-
+ compatible with libncursesw 5.4. None of the interfaces change, but
+ applications which have mouse mask mmask_t's must be recompiled.
+
--enable-getcap
Use the 4.4BSD getcap code if available, or a bundled version of it to
fetch termcap entries. Entries read in this way cannot use (make
cross-references to) the terminfo tree, but it is faster than reading
/etc/termcap.
+ If configured for one of the *BSD systems, this automatically uses
+ the hashed database system produced using cap_mkdb or similar tools.
+ In that case, there is no advantage in using the --enable-getcap-cache
+ option.
+
+ See also the --with-hashed-db option.
+
--enable-getcap-cache
Cache translated termcaps under the directory $HOME/.terminfo
- NOTE: this sounds good - it makes ncurses run faster the second time.
+ NOTE: this sounds good - it makes ncurses run faster the second time.
But look where the data comes from - an /etc/termcap containing lots of
entries that are not up to date. If you configure with this option and
forget to install the terminfo database before running an ncurses
@@ -408,9 +483,17 @@ SUMMARY OF CONFIGURE OPTIONS:
extended functions.
--enable-rpath
- Use rpath option when generating shared libraries, and with some
- restrictions when linking the corresponding programs. This applies
- mainly to systems using the GNU linker (read the manpage).
+ Use rpath option when generating shared libraries, and (with some
+ restrictions) when linking the corresponding programs. This originally
+ (in 1997) applied mainly to systems using the GNU linker (read the
+ manpage).
+
+ More recently it is useful for systems that require special treatment
+ shared libraries in "unusual" locations. The "system" libraries reside
+ in directories which are on the loader's default search-path. While
+ you may be able to use workarounds such as the $LD_LIBRARY_PATH
+ environment variable, they do not work with setuid applications since
+ the LD_LIBRARY_PATH variable would be unset in that situation.
--enable-safe-sprintf
Compile with experimental safe-sprintf code. You may consider using
@@ -424,6 +507,13 @@ SUMMARY OF CONFIGURE OPTIONS:
changes. This option is the default, unless you have disabled the
extended functions.
+ --enable-signed-char
+ The term.h header declares a Booleans[] array typed "char". But it
+ stores signed values there and "char" is not necessarily signed.
+ Some packagers choose to alter the type of Booleans[] though this
+ is not strictly compatible. This option allows one to implement this
+ alteration without patching the source code.
+
--enable-symlinks
If your system supports symbolic links, make tic use symbolic links
rather than hard links to save diskspace when writing aliases in the
@@ -443,24 +533,37 @@ SUMMARY OF CONFIGURE OPTIONS:
--enable-warnings
Turn on GCC compiler warnings. There should be only a few.
+ --enable-wgetch-events
+ Compile with experimental wgetch-events code. See ncurses/README.IZ
+
--enable-widec
- Compile with experimental wide-character code. This makes a different
- version of the libraries (e.g., libncursesw.so), which stores
- characters in 16-bits. We provide a simple UTF-8 driver and test
- program to use this feature with terminals that can display UTF-8.
+ Compile with wide-character code. This makes a different version of
+ the libraries (e.g., libncursesw.so), which stores characters as
+ wide-characters,
NOTE: applications compiled with this configuration are not compatible
with those built for 8-bit characters. You cannot simply make a
symbolic link to equate libncurses.so with libncursesw.so
+ NOTE: the Ada95 binding may be built against either version of the the
+ ncurses library, but you must decide which: the binding installs the
+ same set of files for either version. Currently (2002/6/22) it does
+ not use the extended features from the wide-character code, so it is
+ probably better to not install the binding for that configuration.
+
--enable-xmc-glitch
Compile-in support experimental xmc (magic cookie) code.
+ --with-abi-version=NUM
+ Override the ABI version, which is used in shared library filenames.
+ Normally this is the same as the release version; some ports have
+ special requirements for compatibility.
+
--with-ada-compiler=CMD
Specify the Ada95 compiler command (default "gnatmake")
--with-ada-include=DIR
- Tell where to install the Ada includes (default:
+ Tell where to install the Ada includes (default:
PREFIX/lib/ada/adainclude)
--with-ada-objects=DIR
@@ -474,7 +577,7 @@ SUMMARY OF CONFIGURE OPTIONS:
--with-build-cc=XXX
If cross-compiling, specify a host C compiler, which is needed to
- compile a few utilties which generate source modules for ncurses.
+ compile a few utilities which generate source modules for ncurses.
If you do not give this option, the configure script checks if the
$BUILD_CC variable is set, and otherwise defaults to gcc or cc.
@@ -483,6 +586,11 @@ SUMMARY OF CONFIGURE OPTIONS:
to do this if the target compiler has unusual flags which confuse the
host compiler.
+ --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
+ the host compiler.
+
--with-build-ldflags=XXX
If cross-compiling, specify the host linker-flags. You might need to
do this if the target linker has unusual flags which confuse the host
@@ -501,6 +609,13 @@ SUMMARY OF CONFIGURE OPTIONS:
to use a terminfo database which is compatible with the native
applications.
+ --with-chtype=TYPE
+ Override type of chtype, which stores the video attributes and (if
+ --enable-widec is not given) a character. Prior to ncurses 5.5, this
+ was always unsigned long, but with ncurses 5.5, it may be unsigned.
+ Use this option if you need to preserve compatibility with 64-bit
+ executables.
+
--with-database=XXX
Specify the terminfo source file to install. Usually you will wish
to install ncurses' default (misc/terminfo.src). Certain systems
@@ -509,6 +624,7 @@ SUMMARY OF CONFIGURE OPTIONS:
--with-dbmalloc
For testing, compile and link with Conor Cahill's dbmalloc library.
+ This also sets the --disable-leaks option.
--with-debug
Generate debug-libraries (default). These are named by adding "_g"
@@ -518,12 +634,9 @@ SUMMARY OF CONFIGURE OPTIONS:
Specify the default terminfo database directory. This is normally
DATADIR/terminfo, e.g., /usr/share/terminfo.
- --with-develop
- Enable experimental/development options. This does not count those
- that change the interface, such as --enable-widec.
-
--with-dmalloc
For testing, compile and link with Gray Watson's dmalloc library.
+ This also sets the --disable-leaks option.
--with-fallbacks=XXX
Specify a list of fallback terminal descriptions which will be
@@ -531,19 +644,75 @@ SUMMARY OF CONFIGURE OPTIONS:
--with-gpm
use Alessandro Rubini's GPM library to provide mouse support on the
- Linux console.
+ Linux console. Prior to ncurses 5.5, this introduced a dependency on
+ the GPM library.
+
+ Currently ncurses uses the dlsym() function to bind to the library at
+ runtime, so it is only necessary that the library be present when
+ ncurses is built, to obtain the filename (or soname) used in the
+ corresponding dlopen() call. If you give a value for this option,
+ e.g.,
+
+ --with-gpm=$HOME/tmp/test-gpm.so
+
+ that overrides the configure check for the soname.
+
+ See also --without-dlsym
+
+ --with-hashed-db
+ Use a hashed database for storing terminfo data rather than storing
+ each compiled entry in a separate binary file within a directory
+ tree.
+
+ If you use this option for configuring ncurses, tic will only be able
+ to write entries in the hashed database. infocmp can still read
+ entries from a directory tree as well as reading entries from the
+ hashed database. To do this, infocmp determines whether the $TERMINFO
+ variable points to a directory or a file, and reads the directory-tree
+ or hashed database respectively.
+
+ You cannot have a directory containing both hashed-database and
+ filesystem-based terminfo entries.
+
+ See also the --enable-getcap option.
--with-install-prefix=XXX
Allows you to specify an alternate location for installing ncurses
after building it. The value you specify is prepended to the "real"
- install location. This simplifies making binary packages.
+ install location. This simplifies making binary packages. The
+ makefile variable DESTDIR is set by this option. It is also possible
+ to use
+ make install DESTDIR=XXX
+ since the makefiles pass that variable to subordinate makes.
NOTE: a few systems build shared libraries with fixed pathnames; this
option probably will not work for those configurations.
- --with-libtool
- Generate libraries with libtool. If this option is selected, then
- it overrides all other library model specifications.
+ --with-libtool[=XXX]
+ Generate libraries with libtool. If this option is selected, then it
+ overrides all other library model specifications. Note that libtool
+ must already be installed, uses makefile rules dependent on GNU make,
+ and does not promise to follow the version numbering convention of
+ other shared libraries on your system. However, if the --with-shared
+ option does not succeed, you may get better results with this option.
+
+ If a parameter value is given, it must be the full pathname of the
+ particular version of libtool, e.g.,
+ /usr/bin/libtool-1.2.3
+
+ It is possible to rebuild the configure script to use the automake
+ 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/
+
+ --with-manpage-aliases
+ Tell the configure script you wish to create entries in the
+ man-directory for aliases to manpages which list them, e.g., the
+ functions in the panel manpage. This is the default. You can disable
+ it if your man program does this. You can also disable
+ --with-manpage-symlinks to install files containing a ".so" command
+ rather than symbolic links.
--with-manpage-format=XXX
Tell the configure script how you would like to install man-pages. The
@@ -569,11 +738,17 @@ SUMMARY OF CONFIGURE OPTIONS:
by running them through tbl to generate tables understandable by
nroff.
+ --with-mmask-t=TYPE
+ Override type of mmask_t, which stores the mouse mask. Prior to
+ ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it
+ may be unsigned. Use this option if you need to preserve compatibility
+ with 64-bit executables.
+
--with-ospeed=TYPE
Override type of ospeed variable, which is part of the termcap
compatibility interface. In termcap, this is a 'short', which works
for a wide range of baudrates because ospeed is not the actual speed
- but the encoded value, e.g., B9600 would be a small number such as 13.
+ but the encoded value, e.g., B9600 would be a small number such as 13.
However the encoding scheme originally allowed for values "only" up to
38400bd. A newer set of definitions past 38400bd is not encoded as
compactly, and is not guaranteed to fit into a short (see the function
@@ -585,6 +760,11 @@ SUMMARY OF CONFIGURE OPTIONS:
--with-normal
Generate normal (i.e., static) libraries (default).
+ Note: on Linux, the configure script will attempt to use the GPM
+ library via the dlsym() function call. Use --without-dlsym to disable
+ this feature, or --without-gpm, depending on whether you wish to use
+ GPM.
+
--with-profile
Generate profile-libraries These are named by adding "_p" to the root,
e.g., libncurses_p.a
@@ -592,20 +772,39 @@ SUMMARY OF CONFIGURE OPTIONS:
--with-rcs-ids
Compile-in RCS identifiers. Most of the C files have an identifier.
+ --with-rel-version=NUM
+ Override the release version, which may be used in shared library
+ filenames. This consists of a major and minor version number separated
+ by ".". Normally the major version number is the same as the ABI
+ version; some ports have special requirements for compatibility.
+
--with-shared
Generate shared-libraries. The names given depend on the system for
which you are building, typically using a ".so" suffix, along with
symbolic links that refer to the release version.
-
+
NOTE: Unless you override the configure script by setting the $CFLAGS
environment variable, these will not be built with the -g debugging
option.
+ NOTE: For some configurations, e.g., installing a new version of
+ ncurses shared libraries on a machine which already has ncurses
+ 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.,
+ ./misc/shlib make install
+
--with-shlib-version=XXX
Specify whether to use the release or ABI version for shared libraries.
This is normally chosen automatically based on the type of system
which you are building on. We use it for testing the configure script.
+ --with-sysmouse
+ use FreeBSD sysmouse interface provide mouse support on the console.
+
--with-system-type=XXX
For testing, override the derived host system-type which is used to
decide things such as the linker commands used to build shared
@@ -617,16 +816,31 @@ SUMMARY OF CONFIGURE OPTIONS:
Specify a search-list of terminfo directories which will be compiled
into the ncurses library (default: DATADIR/terminfo)
- --with-termlib
+ --with-termlib[=XXX]
When building the ncurses library, organize this as two parts: the
curses library (libncurses) and the low-level terminfo library
(libtinfo). This is done to accommodate applications that use only
the latter. The terminfo library is about half the size of the total.
+ If an option value is given, that overrides the name of the terminfo
+ library. For instance, if the wide-character version is built, the
+ terminfo library would be named libtinfow. But the libtinfow interface
+ is upward compatible from libtinfo, so it would be possible to overlay
+ libtinfo.so with a "wide" version of libtinfow.so by renaming it with
+ this option.
+
--with-termpath=XXX
Specify a search-list of termcap files which will be compiled into the
ncurses library (default: /etc/termcap:/usr/share/misc/termcap)
+ --with-trace
+ 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-valgrind
+ For testing, compile with debug option.
+ This also sets the --disable-leaks option.
+
--without-ada
Suppress the configure script's check for Ada95, do not build the
Ada95 binding and related demo.
@@ -649,11 +863,23 @@ SUMMARY OF CONFIGURE OPTIONS:
Suppress the configure script's check for C++, do not build the
C++ binding and related demo.
+ --without-develop
+ Disable development options. This does not include those that change
+ the interface, such as --enable-widec.
+
+ --without-dlsym
+ Do not use dlsym() to load GPM dynamically.
+
--without-progs
Tell the configure script to suppress the build of ncurses' application
programs (e.g., tic). The test applications will still be built if you
type "make", though not if you simply do "make install".
+ --without-xterm-new
+ Tell the configure script to use "xterm-old" for the entry used in
+ the terminfo database. This will work with variations such as
+ X11R5 and X11R6 xterm.
+
COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
--------------------------------------------
@@ -670,6 +896,218 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
you may encounter when building a system with different versions of
ncurses:
+ 5.6 (December 17, 2006)
+ Interface changes:
+
+ + generate linkable stubs for some macros:
+
+ getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx,
+ getpary, getpary,
+
+ and (for libncursesw)
+
+ wgetbkgrnd
+
+ Added extensions:
+ nofilter()
+ use_legacy_coding()
+
+ Added internal functions:
+ _nc_first_db
+ _nc_get_source
+ _nc_handle_sigwinch
+ _nc_is_abs_path
+ _nc_is_dir_path
+ _nc_is_file_path
+ _nc_keep_tic_dir
+ _nc_keep_tic_dir
+ _nc_last_db
+ _nc_next_db
+ _nc_read_termtype
+ _nc_tic_dir
+
+ Also (if using the hashed database configuration):
+
+ _nc_db_close
+ _nc_db_first
+ _nc_db_get
+ _nc_db_have_data
+ _nc_db_have_index
+ _nc_db_next
+ _nc_db_open
+ _nc_db_put
+
+ otherwise
+
+ _nc_hashed_db
+
+ Removed internal functions:
+ none
+
+ Modified internal functions:
+ _nc_add_to_try
+ _nc_do_color
+ _nc_expand_try
+ _nc_remove_key
+ _nc_setupscreen
+
+ 5.5 (October 10, 2005)
+ Interface changes:
+
+ + terminfo installs "xterm-new" as "xterm" entry rather than
+ "xterm-old" (aka xterm-r6).
+
+ + terminfo data is installed using the tic -x option (few systems
+ still use ncurses 4.2).
+
+ + modify C++ binding to work with newer C++ compilers by providing
+ initializers and using modern casts. Old-style header names are
+ still used in this release to allow compiling with not-so-old
+ compilers.
+
+ + form and menu libraries now work with wide-character data.
+ Applications which bypassed the form library and manipulated the
+ FIELD.buf data directly will not work properly with libformw, since
+ that no longer points to an array of char. The set_field_buffer()
+ and field_buffer() functions translate to/from the actual field
+ data.
+
+ + change SP->_current_attr to a pointer, adjust ifdef's to ensure that
+ libtinfo.so and libtinfow.so have the same ABI. The reason for this
+ is that the corresponding data which belongs to the upper-level
+ ncurses library has a different size in each model.
+
+ + winnstr() now returns multibyte character strings for the
+ wide-character configuration.
+
+ + assume_default_colors() no longer requires that use_default_colors()
+ be called first.
+
+ + data_ahead() now works with wide-characters.
+
+ + slk_set() and slk_wset() now accept and store multibyte or
+ multicolumn characters.
+
+ + start_color() now returns OK if colors have already been started.
+ start_color() also returns ERR if it cannot allocate memory.
+
+ + pair_content() now returns -1 for consistency with init_pair() if it
+ corresponds to the default-color.
+
+ + unctrl() now returns null if its parameter does not correspond
+ to an unsigned char.
+
+ Added extensions:
+ Experimental mouse version 2 supports wheel mice with buttons
+ 4 and 5. This requires ABI 6 because it modifies the encoding
+ of mouse events.
+
+ Experimental extended colors allows encoding of 256 foreground
+ and background colors, e.g., with the xterm-256color or
+ xterm-88color terminfo entries. This requires ABI 6 because
+ it changes the size of cchar_t.
+
+ Added internal functions:
+ _nc_check_termtype2
+ _nc_resolve_uses2
+ _nc_retrace_cptr
+ _nc_retrace_cvoid_ptr
+ _nc_retrace_void_ptr
+ _nc_setup_term
+
+ Removed internal functions:
+ none
+
+ Modified internal functions:
+ _nc_insert_ch
+ _nc_save_str
+ _nc_trans_string
+
+ 5.4 (February 8, 2004)
+ Interface changes:
+
+ + add the remaining functions for X/Open curses wide-character support.
+ These are only available if the library is configured using the
+ --enable-widec option.
+ pecho_wchar()
+ slk_wset()
+
+ + write getyx() and related 2-return macros in terms of getcury(),
+ getcurx(), etc.
+
+ + simplify ifdef for bool declaration in curses.h
+
+ + modify ifdef's in curses.h that disabled use of __attribute__() for
+ g++, since recent versions implement the cases which ncurses uses.
+
+ + change some interfaces to use const:
+ define_key()
+ mvprintw()
+ mvwprintw()
+ printw()
+ vw_printw()
+ winsnstr()
+ wprintw()
+
+ Added extensions:
+ key_defined()
+
+ Added internal functions:
+ _nc_get_locale()
+ _nc_insert_ch()
+ _nc_is_charable() wide
+ _nc_locale_breaks_acs()
+ _nc_pathlast()
+ _nc_to_char() wide
+ _nc_to_widechar() wide
+ _nc_tparm_analyze()
+ _nc_trace_bufcat() debug
+ _nc_unicode_locale()
+
+ Removed internal functions:
+ _nc_outstr()
+ _nc_sigaction()
+
+ Modified internal functions:
+ _nc_remove_string()
+ _nc_retrace_chtype()
+
+ 5.3 (October 12, 2002)
+ Interface changes:
+
+ + change type for bool used in headers to NCURSES_BOOL, which usually
+ is the same as the compiler's definition for 'bool'.
+
+ + add all but two functions for X/Open curses wide-character support.
+ These are only available if the library is configured using the
+ --enable-widec option. Missing functions are
+ pecho_wchar()
+ slk_wset()
+
+ + add environment variable $NCURSES_ASSUMED_COLORS to modify the
+ assume_default_colors() extension.
+
+ Added extensions:
+ is_term_resized()
+ resize_term()
+
+ Added internal functions:
+ _nc_altcharset_name() debug
+ _nc_reset_colors()
+ _nc_retrace_bool() debug
+ _nc_retrace_unsigned() debug
+ _nc_rootname()
+ _nc_trace_ttymode() debug
+ _nc_varargs() debug
+ _nc_visbufn() debug
+ _nc_wgetch()
+
+ Removed internal functions:
+ _nc_background()
+
+ Modified internal functions:
+ _nc_freeall() debug
+
5.2 (October 21, 2000)
Interface changes:
@@ -863,31 +1301,34 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES:
IF YOU ARE A SYSTEM INTEGRATOR:
------------------------------
- Beginning with 1.9.9, the ncurses distribution includes both a tset
- utility and /usr/share/tabset directory. If you are installing ncurses,
- it is no longer either necessary or desirable to install tset-jv.
-
Configuration and Installation:
- Configure with --prefix=/usr to make the install productions put
- libraries and headers in the correct locations (overwriting any
- previous curses libraries and headers). This will put the terminfo
- hierarchy under /usr/share/terminfo; you may want to override this with
- --datadir=/usr/share/misc; terminfo and tabset are installed under the
- data directory.
-
- Please configure the ncurses library in a pure-terminfo mode; that
- is, with the --disable-termcap option. This will make the ncurses
- library smaller and faster. The ncurses library includes a termcap
- emulation that queries the terminfo database, so even applications
- that use raw termcap to query terminal characteristics will win
- (providing you recompile and relink them!).
-
- If you must configure with termcap fallback enabled, you may also
- wish to use the --enable-getcap option. This option speeds up
- termcap-based startups, at the expense of not allowing personal
- termcap entries to reference the terminfo tree. See the code in
- ncurses/tinfo/read_termcap.c for details.
+ On platforms where ncurses is assumed to be installed in /usr/lib,
+ the configure script uses "/usr" as a default:
+
+ Linux, FreeBSD, NetBSD, OpenBSD, Cygwin
+
+ For other platforms, the default is "/usr/local". See the discussion
+ of the "--disable-overwrite" option.
+
+ The location of the terminfo is set indirectly by the "--datadir"
+ configure option, e.g., /usr/share/terminfo, given a datadir of
+ /usr/share. You may want to override this if you are installing
+ ncurses libraries in nonstandard locations, but wish to share the
+ terminfo database.
+
+ Normally the ncurses library is configured in a pure-terminfo mode;
+ that is, with the --disable-termcap option. This makes the ncurses
+ library smaller and faster. The ncurses library includes a termcap
+ emulation that queries the terminfo database, so even applications that
+ use raw termcap to query terminal characteristics will win (providing
+ you recompile and relink them!).
+
+ If you must configure with termcap fallback enabled, you may also wish
+ to use the --enable-getcap option. This speeds up termcap-based
+ startups, at the expense of not allowing personal termcap entries to
+ reference the terminfo tree. See comments in
+ ncurses/tinfo/read_termcap.c for further details.
Note that if you have $TERMCAP set, ncurses will use that value
to locate termcap data. In particular, running from xterm will
@@ -907,11 +1348,11 @@ IF YOU ARE A SYSTEM INTEGRATOR:
Naming the Console Terminal
- In various Linuxes (and possibly elsewhere) there has been a practice
- of designating the system console driver type as `console'. Please
- do not do this any more! It complicates peoples' lives, because it
- can mean that several different terminfo entries from different
- operating systems all logically want to be called `console'.
+ In various systems there has been a practice of designating the system
+ console driver type as `console'. Please do not do this! It
+ complicates peoples' lives, because it can mean that several different
+ terminfo entries from different operating systems all logically want to
+ be called `console'.
Please pick a name unique to your console driver and set that up
in the /etc/inittab table or local equivalent. Send the entry to the
@@ -937,17 +1378,10 @@ RECENT XTERM VERSIONS:
---------------------
The terminfo database file included with this distribution assumes you
- are running an XFree86 xterm based on X11R6 (i.e., xterm-r6). The
- earlier X11R5 entry (xterm-r5) is provided as well.
-
- If you are running XFree86 version 3.2 (actually 3.1.2F and up), you
- should consider using the xterm-xf86-v32 (or later, the most recent
- version is always named "xterm-xfree86") entry, which adds ANSI color
- and the VT220 capabilities which have been added in XFree86. If you
- are running a mixed network, however, where this terminal description
- may be used on an older xterm, you may have problems, since
- applications that assume these capabilities will produce incorrect
- output on the older xterm (e.g., highlighting is not cleared).
+ are running a modern xterm based on XFree86 (i.e., xterm-new). The
+ earlier X11R6 entry (xterm-r6) and X11R5 entry (xterm-r5) is provided
+ as well. See the --without-xterm-new configure script option if you
+ are unable to update your system.
CONFIGURING FALLBACK ENTRIES:
@@ -956,7 +1390,8 @@ CONFIGURING FALLBACK ENTRIES:
In order to support operation of ncurses programs before the terminfo
tree is accessible (that is, in single-user mode or at OS installation
time) the ncurses library can be compiled to include an array of
- pre-fetched fallback entries.
+ pre-fetched fallback entries. This must be done on a machine which
+ has ncurses' infocmp and terminfo database installed.
These entries are checked by setupterm() only when the conventional
fetches from the terminfo tree and the termcap fallback (if configured)
@@ -964,23 +1399,23 @@ CONFIGURING FALLBACK ENTRIES:
shadow modifications to the on-disk entry for the same type, when that
entry is accessible.
- By default, there are no entries on the fallback list. After you
- have built the ncurses suite for the first time, you can change
- the list (the process needs infocmp(1)). To do so, use the script
- MKfallback.sh. A configure script option --with-fallbacks does this
- (it accepts a comma-separated list of the names you wish, and does
- not require a rebuild).
+ By default, there are no entries on the fallback list. After you have
+ built the ncurses suite for the first time, you can change the list
+ (the process needs infocmp(1)). To do so, use the script
+ ncurses/tinfo/MKfallback.sh. A configure script option
+ --with-fallbacks does this (it accepts a comma-separated list of the
+ names you wish, and does not require a rebuild).
If you wanted (say) to have linux, vt100, and xterm fallbacks, you
would use the commands
cd ncurses;
- MKfallback.sh linux vt100 xterm >fallback.c
+ tinfo/MKfallback.sh linux vt100 xterm >fallback.c
Then just rebuild and reinstall the library as you would normally.
You can restore the default empty fallback list with
- MKfallback.sh >fallback.c
+ tinfo/MKfallback.sh >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
@@ -1060,45 +1495,37 @@ USING NCURSES WITH AFS:
can't hard-link across them. The --enable-symlinks option copes
with this by making tic use symbolic links.
-USING NCURSES WITH EMACS:
- GNU Emacs has its own termcap support. By default, it uses a mixture
- of those functions and code linked from the host system's libraries.
- You need to foil this and shut out the GNU termcap library entirely.
-
- In order to do this, hack the Linux config file (s/linux.h) to contain
- a #define TERMINFO and set the symbol LIBS_TERMCAP to "-lncurses".
-
- We have submitted such a change for the 19.30 release, so it may
- already be applied in your sources -- check for the #define TERMINFO.
-
USING NCURSES WITH GPM:
- Ncurses 4.1 and up can be configured to use GPM (General Purpose Mouse)
- which is used on Linux console. Be aware that GPM is commonly
+ Ncurses 4.1 and up can be configured to use GPM (General Purpose
+ Mouse) which is used on Linux console. Be aware that GPM is commonly
installed as a shared library which contains a wrapper for the curses
wgetch() function (libcurses.o). Some integrators have simplified
- linking applications by combining all or part of libcurses.so (the BSD
- curses) into the libgpm.so file, producing symbol conflicts with
- ncurses (specifically the wgetch function). You may be able to work
- around this problem by linking as follows:
+ linking applications by combining all or part of libcurses.so into the
+ libgpm.so file, producing symbol conflicts with ncurses (specifically
+ the wgetch function). This was originally the BSD curses, but
+ generally whatever curses library exists on the system.
+
+ You may be able to work around this problem by linking as follows:
cc -o foo foo.o -lncurses -lgpm -lncurses
but the linker may not cooperate, producing mysterious errors.
- A patched version of gpm is available:
-
- dickey.his.com:/ncurses/gpm-1.10-970125.tar.gz
+ See the FAQ, as well as the discussion under the --with-gpm option:
- This patch is incorporated in gpm 1.12; however some integrators
- are slow to update this library. Current distributions of gpm can
- be configured properly using the --without-curses option.
+ http://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
with the host's compiler since they are used for building programs
(e.g., ncurses/make_hash and ncurses/make_keys) that generate tables
- that are compiled into the ncurses library. You should set the
- BUILD_CC environment variable to your host's compiler, and run the
- configure script configuring for the cross-compiler.
+ that are compiled into the ncurses library. The essential thing to do
+ is set the BUILD_CC environment variable to your host's compiler, and
+ run the configure script configuring for the cross-compiler.
+
+ The configure options --with-build-cc, etc., are provided to make this
+ simpler. Since make_hash and make_keys use only ANSI C features, it
+ is normally not necessary to provide the other options such as
+ --with-build-libs, but they are provided for completeness.
Note that all of the generated source-files which are part of ncurses
will be made if you use
@@ -1109,6 +1536,12 @@ BUILDING NCURSES WITH A CROSS-COMPILER
support for the tools used to generate the sources, e.g., sed, awk and
Bourne-shell.
+ When ncurses has been successfully cross-compiled, you may want to use
+ "make install" (with a suitable target directory) to construct an
+ install tree. Note that in this case (as with the --with-fallbacks
+ option), ncurses uses the development platform's tic to do the
+ "make install.data" portion.
+
BUGS:
Send any feedback to the ncurses mailing list at
bug-ncurses@gnu.org. To subscribe send mail to
@@ -1117,3 +1550,5 @@ BUGS:
The Hacker's Guide in the doc directory includes some guidelines
on how to report bugs in ways that will get them fixed most quickly.
+
+-- vile:txtmode
diff --git a/contrib/ncurses/MANIFEST b/contrib/ncurses/MANIFEST
index 4559e55bd01b..97faa3813c02 100644
--- a/contrib/ncurses/MANIFEST
+++ b/contrib/ncurses/MANIFEST
@@ -1,4 +1,5 @@
./ANNOUNCE
+./AUTHORS
./Ada95/Makefile.in
./Ada95/README
./Ada95/TODO
@@ -166,13 +167,11 @@
./Ada95/src/terminal_interface.ads
./INSTALL
./MANIFEST
-./Makefile.glibc
./Makefile.in
./Makefile.os2
./NEWS
./README
./README.emx
-./README.glibc
./TO-DO
./aclocal.m4
./announce.html.in
@@ -208,6 +207,7 @@
./dist.mk
./doc/hackguide.doc
./doc/html/Ada95.html
+./doc/html/NCURSES-Programming-HOWTO.html
./doc/html/ada/files.htm
./doc/html/ada/files/T.htm
./doc/html/ada/funcs.htm
@@ -392,10 +392,13 @@
./doc/html/man/form_requestname.3x.html
./doc/html/man/form_userptr.3x.html
./doc/html/man/form_win.3x.html
+./doc/html/man/index.html
./doc/html/man/infocmp.1m.html
./doc/html/man/infotocap.1m.html
+./doc/html/man/key_defined.3x.html
./doc/html/man/keybound.3x.html
./doc/html/man/keyok.3x.html
+./doc/html/man/legacy_coding.3x.html
./doc/html/man/menu.3x.html
./doc/html/man/menu_attributes.3x.html
./doc/html/man/menu_cursor.3x.html
@@ -434,6 +437,7 @@
./doc/ncurses-intro.doc
./form/Makefile.in
./form/READ.ME
+./form/f_trace.c
./form/fld_arg.c
./form/fld_attr.c
./form/fld_current.c
@@ -477,9 +481,11 @@
./form/fty_regex.c
./form/headers
./form/llib-lform
+./form/llib-lformw
./form/modules
./include/Caps
./include/Caps.aix4
+./include/Caps.hpux11
./include/Caps.keys
./include/Caps.osf1r5
./include/Caps.uwin
@@ -494,9 +500,11 @@
./include/curses.tail
./include/curses.wide
./include/edit_cfg.sh
+./include/hashed_db.h
./include/headers
./include/nc_alloc.h
./include/nc_panel.h
+./include/nc_tparm.h
./include/ncurses_cfg.hin
./include/ncurses_defs
./include/ncurses_dll.h
@@ -591,8 +599,10 @@
./man/form_win.3x
./man/infocmp.1m
./man/infotocap.1m
+./man/key_defined.3x
./man/keybound.3x
./man/keyok.3x
+./man/legacy_coding.3x
./man/make_sed.sh
./man/man_db.renames
./man/manlinks.sed
@@ -636,6 +646,7 @@
./menu/eti.h
./menu/headers
./menu/llib-lmenu
+./menu/llib-lmenuw
./menu/m_attribs.c
./menu/m_cursor.c
./menu/m_driver.c
@@ -660,6 +671,7 @@
./menu/m_scale.c
./menu/m_spacing.c
./menu/m_sub.c
+./menu/m_trace.c
./menu/m_userptr.c
./menu/m_win.c
./menu/menu.h
@@ -670,14 +682,18 @@
./misc/chkdef.cmd
./misc/cleantic.cmd
./misc/cmpdef.cmd
+./misc/csort
./misc/emx.src
./misc/form.def
./misc/form.ref
-./misc/indent.pro
+./misc/gen_edit.sh
+./misc/jpf-indent
./misc/makedef.cmd
./misc/makellib
./misc/menu.def
./misc/menu.ref
+./misc/ncu-indent
+./misc/ncurses-config.in
./misc/ncurses.def
./misc/ncurses.ref
./misc/panel.def
@@ -696,14 +712,17 @@
./mkinstalldirs
./ncurses/Makefile.in
./ncurses/README
+./ncurses/README.IZ
./ncurses/SigAction.h
./ncurses/base/MKkeyname.awk
./ncurses/base/MKlib_gen.sh
./ncurses/base/MKunctrl.awk
./ncurses/base/README
./ncurses/base/define_key.c
+./ncurses/base/key_defined.c
./ncurses/base/keybound.c
./ncurses/base/keyok.c
+./ncurses/base/legacy_coding.c
./ncurses/base/lib_addch.c
./ncurses/base/lib_addstr.c
./ncurses/base/lib_beep.c
@@ -732,7 +751,7 @@
./ncurses/base/lib_initscr.c
./ncurses/base/lib_insch.c
./ncurses/base/lib_insdel.c
-./ncurses/base/lib_insstr.c
+./ncurses/base/lib_insnstr.c
./ncurses/base/lib_instr.c
./ncurses/base/lib_isendwin.c
./ncurses/base/lib_leaveok.c
@@ -803,9 +822,11 @@
./ncurses/tinfo/comp_hash.c
./ncurses/tinfo/comp_parse.c
./ncurses/tinfo/comp_scan.c
+./ncurses/tinfo/db_iterator.c
./ncurses/tinfo/doalloc.c
./ncurses/tinfo/free_ttype.c
./ncurses/tinfo/getenv_num.c
+./ncurses/tinfo/hashed_db.c
./ncurses/tinfo/home_terminfo.c
./ncurses/tinfo/init_keytry.c
./ncurses/tinfo/lib_acs.c
@@ -834,6 +855,7 @@
./ncurses/tinfo/read_termcap.c
./ncurses/tinfo/setbuf.c
./ncurses/tinfo/strings.c
+./ncurses/tinfo/trim_sgr0.c
./ncurses/tinfo/write_entry.c
./ncurses/trace/README
./ncurses/trace/lib_trace.c
@@ -857,6 +879,8 @@
./ncurses/tty/tty_display.h
./ncurses/tty/tty_input.h
./ncurses/tty/tty_update.c
+./ncurses/widechar/charable.c
+./ncurses/widechar/lib_add_wch.c
./ncurses/widechar/lib_box_set.c
./ncurses/widechar/lib_cchar.c
./ncurses/widechar/lib_erasewchar.c
@@ -865,9 +889,10 @@
./ncurses/widechar/lib_hline_set.c
./ncurses/widechar/lib_in_wch.c
./ncurses/widechar/lib_in_wchnstr.c
-./ncurses/widechar/lib_ins_nwstr.c
./ncurses/widechar/lib_ins_wch.c
./ncurses/widechar/lib_inwstr.c
+./ncurses/widechar/lib_pecho_wchar.c
+./ncurses/widechar/lib_slk_wset.c
./ncurses/widechar/lib_unget_wch.c
./ncurses/widechar/lib_vid_attr.c
./ncurses/widechar/lib_vline_set.c
@@ -876,6 +901,7 @@
./panel/Makefile.in
./panel/headers
./panel/llib-lpanel
+./panel/llib-lpanelw
./panel/modules
./panel/p_above.c
./panel/p_below.c
@@ -908,12 +934,6 @@
./progs/toe.c
./progs/tput.c
./progs/tset.c
-./sysdeps/unix/sysv/linux/Makefile
-./sysdeps/unix/sysv/linux/alpha/configure
-./sysdeps/unix/sysv/linux/configure
-./sysdeps/unix/sysv/linux/edit_man.sed
-./sysdeps/unix/sysv/linux/edit_man.sh
-./sysdeps/unix/sysv/linux/run_tic.sh
./tack/COPYING
./tack/HISTORY
./tack/Makefile.in
@@ -940,31 +960,56 @@
./tar-copy.sh
./test/Makefile.in
./test/README
+./test/aclocal.m4
+./test/background.c
./test/blue.c
./test/bs.6
./test/bs.c
+./test/bulgarian-utf8.txt
./test/cardfile.c
./test/cardfile.dat
+./test/chgat.c
+./test/color_set.c
./test/configure
./test/configure.in
+./test/demo_altkeys.c
+./test/demo_defkey.c
+./test/demo_forms.c
+./test/demo_keyok.c
+./test/demo_menus.c
+./test/demo_panels.c
+./test/demo_termcap.c
./test/ditto.c
./test/dots.c
+./test/echochar.c
+./test/edit_field.c
+./test/edit_field.h
./test/filter.c
./test/firework.c
./test/firstlast.c
+./test/foldkeys.c
./test/gdc.6
./test/gdc.c
./test/hanoi.c
./test/hashtest.c
+./test/ins_wide.c
+./test/inserts.c
./test/keynames.c
./test/knight.c
+./test/linux-color.dat
+./test/listused.sh
./test/lrtest.c
+./test/mk-test.awk
./test/modules
+./test/movewindow.c
./test/ncurses.c
./test/ncurses_tst.hin
./test/newdemo.c
+./test/programs
./test/railroad.c
./test/rain.c
+./test/redraw.c
+./test/savescreen.c
./test/tclock.c
./test/test.priv.h
./test/testaddch.c
@@ -972,5 +1017,8 @@
./test/testscanw.c
./test/tracemunch
./test/view.c
+./test/widechars-utf8.txt
./test/worm.c
./test/xmas.c
+./test/xterm-16color.dat
+./test/xterm-88color.dat
diff --git a/contrib/ncurses/Makefile.in b/contrib/ncurses/Makefile.in
index 7a30d3227016..cb8cd422cc49 100644
--- a/contrib/ncurses/Makefile.in
+++ b/contrib/ncurses/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.22 2001/10/27 18:17:22 tom Exp $
+# $Id: Makefile.in,v 1.24 2005/01/29 19:30:06 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2004,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 "Software"), #
@@ -65,6 +65,9 @@ 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 ''
@ echo ' bin directory: '$(bindir)
@ echo ' lib directory: '$(libdir)
@ echo ' include directory: '$(includedir)
@@ -89,5 +92,6 @@ mostlyclean \
realclean \
depend \
sources \
+tags \
uninstall \
install ::
diff --git a/contrib/ncurses/Makefile.os2 b/contrib/ncurses/Makefile.os2
index 167ff657e0f2..1244455dfb9c 100644
--- a/contrib/ncurses/Makefile.os2
+++ b/contrib/ncurses/Makefile.os2
@@ -1,8 +1,33 @@
+##############################################################################
+# Copyright (c) 1998-2000,2006 Free Software 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. #
################################################################################
-# Wrapper Makefile for ncurses library under OS/2.
-################################################################################
-# $Id: Makefile.os2,v 1.10 2000/10/09 23:53:57 Ilya.Zakharevich Exp $
+# $Id: Makefile.os2,v 1.11 2006/04/22 21:46:17 tom Exp $
#
+# Wrapper Makefile for ncurses library under OS/2.
# Author: Juan Jose Garcia Ripoll <worm@arrakis.es>.
# Webpage: http://www.arrakis.es/~worm/
################################################################################
diff --git a/contrib/ncurses/NEWS b/contrib/ncurses/NEWS
index 961934890e45..6286091697f4 100644
--- a/contrib/ncurses/NEWS
+++ b/contrib/ncurses/NEWS
@@ -1,10 +1,2405 @@
--- $Id: NEWS,v 1.690 2002/06/16 00:31:21 tom Exp $
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998-2005,2006 Free Software 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: NEWS,v 1.1056 2006/12/17 20:36:26 tom Exp $
+-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
working with Pavel Curtis' original work, pcurses, in 1992.
-Changes through 1.9.9e are recorded by Zeyd M. Ben-Halim.
-Changes since 1.9.9e are recorded by Thomas Dickey.
+Changes through 1.9.9e are recorded by Zeyd M Ben-Halim.
+Changes since 1.9.9e are recorded by Thomas E Dickey.
+
+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.
+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.
+
+20061217 5.6 release for upload to ftp.gnu.org
+
+20061217
+ + add ifdef's for <wctype.h> for HPUX, which has the corresponding
+ definitions in <wchar.h>.
+ + revert the va_copy() change from 20061202, since it was neither
+ correct nor portable.
+ + add $(LOCAL_LIBS) definition to progs/Makefile.in, needed for
+ rpath on Solaris.
+ + ignore wide-acs line-drawing characters that wcwidth() claims are
+ not one-column. This is a workaround for Solaris' broken locale
+ support.
+
+20061216
+ + modify configure --with-gpm option to allow it to accept a parameter,
+ i.e., the name of the dynamic GPM library to load via dlopen()
+ (requested by Bryan Henderson).
+ + add configure option --with-valgrind (from vile).
+ + modify configure script AC_TRY_RUN and AC_TRY_LINK checks to use
+ 'return' in preference to 'exit()'.
+
+20061209
+ + change default for --with-develop back to "no".
+ + add XTABS to tracing of TTY bits.
+ + updated autoconf patch to ifdef-out the misfeature which declares
+ exit() for configure tests. This fixes a redefinition warning on
+ Solaris.
+ + use ${CC} rather than ${LD} in shared library rules for IRIX64,
+ Solaris to help ensure that initialization sections are provided for
+ extra linkage requirements, e.g., of C++ applications (prompted by
+ comment by Casper Dik in newsgroup).
+ + rename "$target" in CF_MAN_PAGES to make it easier to distinguish
+ from the autoconf predefined symbol. There was no conflict,
+ since "$target" was used only in the generated edit_man.sh file,
+ but SuSE's rpm package contains a patch.
+
+20061202
+ + update man/term.5 to reflect extended terminfo support and hashed
+ database configuration.
+ + updates for test/configure script.
+ + adapted from SuSE rpm package:
+ + remove long-obsolete workaround for broken-linker which declared
+ cur_term in tic.c
+ + improve error recovery in PUTC() macro when wcrtomb() does not
+ return usable results for an 8-bit character.
+ + patches from rpm package (SuSE):
+ + use va_copy() in extra varargs manipulation for tracing version
+ of printw, etc.
+ + use a va_list rather than a null in _nc_freeall()'s call to
+ _nc_printf_string().
+ + add some see-also references in manpages to show related
+ wide-character functions (suggested by Claus Fischer).
+
+20061125
+ + add a check in lib_color.c to ensure caller does not increase COLORS
+ above max_colors, which is used as an array index (discussion with
+ Simon Sasburg).
+ + add ifdef's allowing ncurses to be built with tparm() using either
+ varargs (the existing status), or using a fixed-parameter list (to
+ match X/Open).
+
+20061104
+ + fix redrawing of windows other than stdscr using wredrawln() by
+ touching the corresponding rows in curscr (discussion with Dan
+ Gookin).
+ + add test/redraw.c
+ + add test/echochar.c
+ + review/cleanup manpage descriptions of error-returns for form- and
+ menu-libraries (prompted by FreeBSD docs/46196).
+
+20061028
+ + add AUTHORS file -TD
+ + omit the -D options from output of the new config script --cflags
+ option (suggested by Ralf S Engelschall).
+ + make NCURSES_INLINE unconditionally defined in curses.h
+
+20061021
+ + revert change to accommodate bash 3.2, since that breaks other
+ platforms, e.g., Solaris.
+ + minor fixes to NEWS file to simplify scripting to obtain list of
+ contributors.
+ + improve some shared-library configure scripting for Linux, FreeBSD
+ and NetBSD to make "--with-shlib-version" work.
+ + change configure-script rules for FreeBSD shared libraries to allow
+ for rpath support in versions past 3.
+ + use $(DESTDIR) in makefile rules for installing/uninstalling the
+ package config script (reports/patches by Christian Wiese,
+ Ralf S Engelschall).
+ + fix a warning in the configure script for NetBSD 2.0, working around
+ spurious blanks embedded in its ${MAKEFLAGS} symbol.
+ + change test/Makefile to simplify installing test programs in a
+ different directory when --enable-rpath is used.
+
+20061014
+ + work around bug in bash 3.2 by adding extra quotes (Jim Gifford).
+ + add/install a package config script, e.g., "ncurses5-config" or
+ "ncursesw5-config", according to configuration options.
+
+20061007
+ + add several GNU Screen terminfo variations with 16- and 256-colors,
+ and status line (Alain Bench).
+ + change the way shared libraries (other than libtool) are installed.
+ Rather than copying the build-tree's libraries, link the shared
+ objects into the install directory. This makes the --with-rpath
+ option work except with $(DESTDIR) (cf: 20000930).
+
+20060930
+ + 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.
+ + improve infocmp/tic "-f" option formatting.
+
+20060923
+ + make --disable-largefile option work (report by Thomas M Ott).
+ + updated html documentation.
+ + add ka2, kb1, kb3, kc2 to vt220-keypad as an extension -TD
+ + minor improvements to rxvt+pcfkeys -TD
+
+20060916
+ + move static data from lib_mouse.c into SCREEN struct.
+ + improve ifdef's for _POSIX_VDISABLE in tset to work with Mac OS X
+ (report by Michail Vidiassov).
+ + modify CF_PATH_SYNTAX to ensure it uses the result from --prefix
+ option (from lynx changes) -TD
+ + adapt AC_PROG_EGREP check, noting that this is likely to be another
+ place aggravated by POSIXLY_CORRECT.
+ + modify configure check for awk to ensure that it is found (prompted
+ by report by Christopher Parker).
+ + update config.sub
+
+20060909
+ + add kon, kon2 and jfbterm terminfo entry (request by Till Maas) -TD
+ + remove invis capability from klone+sgr, mainly used by linux entry,
+ since it does not really do this -TD
+
+20060903
+ + correct logic in wadd_wch() and wecho_wch(), which did not guard
+ against passing the multi-column attribute into a call on waddch(),
+ e.g., using data returned by win_wch() (cf: 20041023)
+ (report by Sadrul H Chowdhury).
+
+20060902
+ + fix kterm's acsc string -TD
+ + fix for change to tic/infocmp in 20060819 to ensure no blank is
+ embedded into a termcap description.
+ + workaround for 20050806 ifdef's change to allow visbuf.c to compile
+ when using --with-termlib --with-trace options.
+ + improve tgetstr() by making the return value point into the user's
+ buffer, if provided (patch by Miroslav Lichvar (see Redhat Bugzilla
+ #202480)).
+ + correct libraries needed for foldkeys (report by Stanislav Ievlev)
+
+20060826
+ + add terminfo entries for xfce terminal (xfce) and multi gnome
+ terminal (mgt) -TD
+ + add test/foldkeys.c
+
+20060819
+ + modify tic and infocmp to avoid writing trailing blanks on terminfo
+ source output (Debian #378783).
+ + modify configure script to ensure that if the C compiler is used
+ rather than the loader in making shared libraries, the $(CFLAGS)
+ variable is also used (Redhat Bugzilla #199369).
+ + port hashed-db code to db2 and db3.
+ + fix a bug in tgetent() from 20060625 and 20060715 changes
+ (patch/analysis by Miroslav Lichvar (see Redhat Bugzilla #202480)).
+
+20060805
+ + updated xterm function-keys terminfo to match xterm #216 -TD
+ + add configure --with-hashed-db option (tested only with FreeBSD 6.0,
+ e.g., the db 1.8.5 interface).
+
+20060729
+ + modify toe to access termcap data, e.g., via cgetent() functions,
+ or as a text file if those are not available.
+ + use _nc_basename() in tset to improve $SHELL check for csh/sh.
+ + modify _nc_read_entry() and _nc_read_termcap_entry() so infocmp,
+ can access termcap data when the terminfo database is disabled.
+
+20060722
+ + widen the test for xterm kmous a little to allow for other strings
+ than \E[M, e.g., for xterm-sco functionality in xterm.
+ + update xterm-related terminfo entries to match xterm patch #216 -TD
+ + update config.guess, config.sub
+
+20060715
+ + fix for install-rule in Ada95 to add terminal_interface.ads
+ and terminal_interface.ali (anonymous posting in comp.lang.ada).
+ + correction to manpage for getcchar() (report by William McBrine).
+ + add test/chgat.c
+ + modify wchgat() to mark updated cells as changed so a refresh will
+ repaint those cells (comments by Sadrul H Chowdhury and William
+ McBrine).
+ + split up dependency of names.c and codes.c in ncurses/Makefile to
+ work with parallel make (report/analysis by Joseph S Myers).
+ + suppress a warning message (which is ignored) for systems without
+ an ldconfig program (patch by Justin Hibbits).
+ + modify configure script --disable-symlinks option to allow one to
+ disable symlink() in tic even when link() does not work (report by
+ Nigel Horne).
+ + modify MKfallback.sh to use tic -x when constructing fallback tables
+ to allow extended capabilities to be retrieved from a fallback entry.
+ + improve leak-checking logic in tgetent() from 20060625 to ensure that
+ it does not free the current screen (report by Miroslav Lichvar).
+
+20060708
+ + add a check for _POSIX_VDISABLE in tset (NetBSD #33916).
+ + correct _nc_free_entries() and related functions used for memory leak
+ checking of tic.
+
+20060701
+ + revert a minor change for magic-cookie support from 20060513, which
+ caused unexpected reset of attributes, e.g., when resizing test/view
+ in color mode.
+ + note in clear manpage that the program ignores command-line
+ parameters (prompted by Debian #371855).
+ + fixes to make lib_gen.c build properly with changes to the configure
+ --disable-macros option and NCURSES_NOMACROS (cf: 20060527)
+ + update/correct several terminfo entries -TD
+ + add some notes regarding copyright to terminfo.src -TD
+
+20060625
+ + fixes to build Ada95 binding with gnat-4.1.0
+ + modify read_termtype() so the term_names data is always allocated as
+ part of the str_table, a better fix for a memory leak (cf: 20030809).
+ + reduce memory leaks in repeated calls to tgetent() by remembering the
+ last TERMINAL* value allocated to hold the corresponding data and
+ freeing that if the tgetent() result buffer is the same as the
+ previous call (report by "Matt" for FreeBSD gnu/98975).
+ + modify tack to test extended capability function-key strings.
+ + improved gnome terminfo entry (GenToo #122566).
+ + improved xterm-256color terminfo entry (patch by Alain Bench).
+
+20060617
+ + fix two small memory leaks related to repeated tgetent() calls
+ with TERM=screen (report by "Matt" for FreeBSD gnu/98975).
+ + add --enable-signed-char to simplify Debian package.
+ + reduce name-pollution in term.h by removing #define's for HAVE_xxx
+ symbols.
+ + correct typo in curs_terminfo.3x (Debian #369168).
+
+20060603
+ + enable the mouse in test/movewindow.c
+ + improve a limit-check in frm_def.c (John Heasley).
+ + minor copyright fixes.
+ + change configure script to produce test/Makefile from data file.
+
+20060527
+ + add a configure option --enable-wgetch-events to enable
+ NCURSES_WGETCH_EVENTS, and correct the associated loop-logic in
+ lib_twait.c (report by Bernd Jendrissek).
+ + remove include/nomacros.h from build, since the ifdef for
+ NCURSES_NOMACROS makes that obsolete.
+ + add entrypoints for some functions which were only provided as macros
+ to make NCURSES_NOMACROS ifdef work properly: getcurx(), getcury(),
+ getbegx(), getbegy(), getmaxx(), getmaxy(), getparx() and getpary(),
+ wgetbkgrnd().
+ + provide ifdef for NCURSES_NOMACROS which suppresses most macro
+ definitions from curses.h, i.e., where a macro is defined to override
+ a function to improve performance. Allowing a developer to suppress
+ these definitions can simplify some application (discussion with
+ Stanislav Ievlev).
+ + improve description of memu/meml in terminfo manpage.
+
+20060520
+ + if msgr is false, reset video attributes when doing an automargin
+ wrap to the next line. This makes the ncurses 'k' test work properly
+ for hpterm.
+ + correct caching of keyname(), which was using only half of its table.
+ + minor fixes to memory-leak checking.
+ + make SCREEN._acs_map and SCREEN._screen_acs_map pointers rather than
+ arrays, making ACS_LEN less visible to applications (suggested by
+ Stanislav Ievlev).
+ + move chunk in SCREEN ifdef'd for USE_WIDEC_SUPPORT to the end, so
+ _screen_acs_map will have the same offset in both ncurses/ncursesw,
+ making the corresponding tinfo/tinfow libraries binary-compatible
+ (cf: 20041016, report by Stanislav Ievlev).
+
+20060513
+ + improve debug-tracing for EmitRange().
+ + change default for --with-develop to "yes". Add NCURSES_NO_HARD_TABS
+ and NCURSES_NO_MAGIC_COOKIE environment variables to allow runtime
+ suppression of the related hard-tabs and xmc-glitch features.
+ + add ncurses version number to top-level manpages, e.g., ncurses, tic,
+ infocmp, terminfo as well as form, menu, panel.
+ + update config.guess, config.sub
+ + modify ncurses.c to work around a bug in NetBSD 3.0 curses
+ (field_buffer returning null for a valid field). The 'r' test
+ appears to not work with that configuration since the new_fieldtype()
+ function is broken in that implementation.
+
+20060506
+ + add hpterm-color terminfo entry -TD
+ + fixes to compile test-programs with HPUX 11.23
+
+20060422
+ + add copyright notices to files other than those that are generated,
+ data or adapted from pdcurses (reports by William McBrine, David
+ Taylor).
+ + improve rendering on hpterm by not resetting attributes at the end
+ of doupdate() if the terminal has the magic-cookie feature (report
+ by Bernd Rieke).
+ + add 256color variants of terminfo entries for programs which are
+ reported to implement this feature -TD
+
+20060416
+ + fix typo in change to NewChar() macro from 20060311 changes, which
+ broke tab-expansion (report by Frederic L W Meunier).
+
+20060415
+ + document -U option of tic and infocmp.
+ + modify tic/infocmp to suppress smacs/rmacs when acsc is suppressed
+ due to size limit, e.g., converting to termcap format. Also
+ suppress them if the output format does not contain acsc and it
+ was not VT100-like, i.e., a one-one mapping (Novell #163715).
+ + add configure check to ensure that SIGWINCH is defined on platforms
+ such as OS X which exclude that when _XOPEN_SOURCE, etc., are
+ defined (report by Nicholas Cole)
+
+20060408
+ + modify write_object() to not write coincidental extensions of an
+ entry made due to it being referenced in a use= clause (report by
+ Alain Bench).
+ + another fix for infocmp -i option, which did not ensure that some
+ escape sequences had comparable prefixes (report by Alain Bench).
+
+20060401
+ + improve discussion of init/reset in terminfo and tput manpages
+ (report by Alain Bench).
+ + use is3 string for a fallback of rs3 in the reset program; it was
+ using is2 (report by Alain Bench).
+ + correct logic for infocmp -i option, which did not account for
+ multiple digits in a parameter (cf: 20040828) (report by Alain
+ Bench).
+ + move _nc_handle_sigwinch() to lib_setup.c to make --with-termlib
+ option work after 20060114 changes (report by Arkadiusz Miskiewicz).
+ + add copyright notices to test-programs as needed (report by William
+ McBrine).
+
+20060318
+ + modify ncurses.c 'F' test to combine the wide-characters with color
+ and/or video attributes.
+ + modify test/ncurses to use CTL/Q or ESC consistently for exiting
+ a test-screen (some commands used 'x' or 'q').
+
+20060312
+ + fix an off-by-one in the scrolling-region change (cf_ 20060311).
+
+20060311
+ + add checks in waddchnstr() and wadd_wchnstr() to stop copying when
+ a null character is found (report by Igor Bogomazov).
+ + modify progs/Makefile.in to make "tput init" work properly with
+ cygwin, i.e., do not pass a ".exe" in the reference string used
+ in check_aliases (report by Samuel Thibault).
+ + add some checks to ensure current position is within scrolling
+ region before scrolling on a new line (report by Dan Gookin).
+ + change some NewChar() usage to static variables to work around
+ stack garbage introduced when cchar_t is not packed (Redhat #182024).
+
+20060225
+ + workarounds to build test/movewindow with PDcurses 2.7.
+ + fix for nsterm-16color entry (patch by Alain Bench).
+ + correct a typo in infocmp manpage (Debian #354281).
+
+20060218
+ + add nsterm-16color entry -TD
+ + updated mlterm terminfo entry -TD
+ + remove 970913 feature for copying subwindows as they are moved in
+ mvwin() (discussion with Bryan Christ).
+ + modify test/demo_menus.c to demonstrate moving a menu (both the
+ window and subwindow) using shifted cursor-keys.
+ + start implementing recursive mvwin() in movewindow.c (incomplete).
+ + add a fallback definition for GCC_PRINTFLIKE() in test.priv.h,
+ for movewindow.c (report by William McBrine).
+ + add help-message to test/movewindow.c
+
+20060211
+ + add test/movewindow.c, to test mvderwin().
+ + fix ncurses soft-key test so color changes are shown immediately
+ rather than delayed.
+ + modify ncurses soft-key test to hide the keys when exiting the test
+ screen.
+ + fixes to build test programs with PDCurses 2.7, e.g., its headers
+ rely on autoconf symbols, and it declares stubs for nonfunctional
+ terminfo and termcap entrypoints.
+
+20060204
+ + improved test/configure to build test/ncurses on HPUX 11 using the
+ vendor curses.
+ + documented ALTERNATE CONFIGURATIONS in the ncurses manpage, for the
+ benefit of developers who do not read INSTALL.
+
+20060128
+ + correct form library Window_To_Buffer() change (cf: 20040516), which
+ should ignore the video attributes (report by Ricardo Cantu).
+
+20060121
+ + minor fixes to xmc-glitch experimental code:
+ + suppress line-drawing
+ + implement max_attributes
+ tested with xterm.
+ + minor fixes for the database iterator.
+ + fix some buffer limits in c++ demo (comment by Falk Hueffner in
+ Debian #348117).
+
+20060114
+ + add toe -a option, to show all databases. This uses new private
+ interfaces in the ncurses library for iterating through the list of
+ databases.
+ + fix toe from 20000909 changes which made it not look at
+ $HOME/.terminfo
+ + make toe's -v option parameter optional as per manpage.
+ + improve SIGWINCH handling by postponing its effect during newterm(),
+ etc., when allocating screens.
+
+20060111
+ + modify wgetnstr() to return KEY_RESIZE if a sigwinch occurs. Use
+ this in test/filter.c
+ + fix an error in filter() modification which caused some applications
+ to fail.
+
+20060107
+ + check if filter() was called when getting the screensize. Keep it
+ at 1 if so (based on Redhat #174498).
+ + add extension nofilter().
+ + refined the workaround for ACS mapping.
+ + make ifdef's consistent in curses.h for the extended colors so the
+ header file can be used for the normal curses library. The header
+ file installed for extended colors is a variation of the
+ wide-character configuration (report by Frederic L W Meunier).
+
+20051231
+ + add a workaround to ACS mapping to allow applications such as
+ test/blue.c to use the "PC ROM" characters by masking them with
+ A_ALTCHARSET. This worked up til 5.5, but was lost in the revision
+ of legacy coding (report by Michael Deutschmann).
+ + add a null-pointer check in the wide-character version of
+ calculate_actual_width() (report by Victor Julien).
+ + improve test/ncurses 'd' (color-edit) test by allowing the RGB
+ values to be set independently (patch by William McBrine).
+ + modify test/configure script to allow building test programs with
+ PDCurses/X11.
+ + modified test programs to allow some to work with NetBSD curses.
+ Several do not because NetBSD curses implements a subset of X/Open
+ curses, and also lacks much of SVr4 additions. But it's enough for
+ comparison.
+ + update config.guess and config.sub
+
+20051224
+ + use BSD-specific fix for return-value from cgetent() from CVS where
+ an unknown terminal type would be reportd as "database not found".
+ + make tgetent() return code more readable using new symbols
+ TGETENT_YES, etc.
+ + remove references to non-existent "tctest" program.
+ + remove TESTPROGS from progs/Makefile.in (it was referring to code
+ that was never built in that directory).
+ + typos in curs_addchstr.3x, some doc files (noticed in OpenBSD CVS).
+
+20051217
+ + add use_legacy_coding() function to support lynx's font-switching
+ feature.
+ + fix formatting in curs_termcap.3x (report by Mike Frysinger).
+ + modify MKlib_gen.sh to change preprocessor-expanded _Bool back to
+ bool.
+
+20051210
+ + extend test/ncurses.c 's' (overlay window) test to exercise overlay(),
+ overwrite() and copywin() with different combinations of colors and
+ attributes (including background color) to make it easy to see the
+ effect of the different functions.
+ + corrections to menu/m_global.c for wide-characters (report by
+ Victor Julien).
+
+20051203
+ + add configure option --without-dlsym, allowing developers to
+ configure GPM support without using dlsym() (discussion with Michael
+ Setzer).
+ + fix wins_nwstr(), which did not handle single-column non-8bit codes
+ (Debian #341661).
+
+20051126
+ + move prototypes for wide-character trace functions from curses.tail
+ to curses.wide to avoid accidental reference to those if
+ _XOPEN_SOURCE_EXTENDED is defined without ensuring that <wchar.h> is
+ included.
+ + add/use NCURSES_INLINE definition.
+ + change some internal functions to use int/unsigned rather than the
+ short equivalents.
+
+20051119
+ + remove a redundant check in lib_color.c (Debian #335655).
+ + use ld's -search_paths_first option on Darwin to work around odd
+ search rules on that platform (report by Christian Gennerat, analysis
+ by Andrea Govoni).
+ + remove special case for Darwin in CF_XOPEN_SOURCE configure macro.
+ + ignore EINTR in tcgetattr/tcsetattr calls (Debian #339518).
+ + fix several bugs in test/bs.c (patch by Stephen Lindholm).
+
+20051112
+ + other minor fixes to cygwin based on tack -TD
+ + correct smacs in cygwin (Debian #338234, report by Baurzhan
+ Ismagulov, who noted that it was fixed in Cygwin).
+
+20051029
+ + add shifted up/down arrow codes to xterm-new as kind/kri strings -TD
+ + modify wbkgrnd() to avoid clearing the A_CHARTEXT attribute bits
+ since those record the state of multicolumn characters (Debian
+ #316663).
+ + modify werase to clear multicolumn characters that extend into
+ a derived window (Debian #316663).
+
+20051022
+ + move assignment from environment variable ESCDELAY from initscr()
+ down to newterm() so the environment variable affects timeouts for
+ terminals opened with newterm() as well.
+ + fix a memory leak in keyname().
+ + add test/demo_altkeys.c
+ + modify test/demo_defkey.c to exit from loop via 'q' to allow
+ leak-checking, as well as fix a buffer size in winnstr() call.
+
+20051015
+ + correct order of use-clauses in rxvt-basic entry which made codes for
+ f1-f4 vt100-style rather than vt220-style (report by Gabor Z Papp).
+ + suppress configure check for gnatmake if Ada95/Makefile.in is not
+ found.
+ + correct a typo in configure --with-bool option for the case where
+ --without-cxx is used (report by Daniel Jacobowitz).
+ + add a note to INSTALL's discussion of --with-normal, pointing out
+ that one may wish to use --without-gpm to ensure a completely
+ static link (prompted by report by Felix von Leitner).
+
+20051010 5.5 release for upload to ftp.gnu.org
+
+20051008
+ + document in demo_forms.c some portability issues.
+
+20051001
+ + document side-effect of werase() which sets the cursor position.
+ + save/restore the current position in form field editing to make
+ overlay mode work.
+
+20050924
+ + correct header dependencies in progs, allowing parallel make (report
+ by Daniel Jacobowitz).
+ + modify CF_BUILD_CC to ensure that pre-setting $BUILD_CC overrides
+ the configure check for --with-build-cc (report by Daniel Jacobowitz).
+ + modify CF_CFG_DEFAULTS to not use /usr as the default prefix for
+ NetBSD.
+ + update config.guess and config.sub from
+ http://subversions.gnu.org/cgi-bin/viewcvs/config/config/
+
+20050917
+ + modify sed expression which computes path for /usr/lib/terminfo
+ symbolic link in install to ensure that it does not change unexpected
+ levels of the path (Gentoo #42336).
+ + modify default for --disable-lp64 configure option to reduce impact
+ on existing 64-bit builds. Enabling the _LP64 option may change the
+ size of chtype and mmask_t. However, for ABI 6, it is enabled by
+ default (report by Mike Frysinger).
+ + add configure script check for --enable-ext-mouse, bump ABI to 6 by
+ default if it is used.
+ + improve configure script logic for bumping ABI to omit this if the
+ --with-abi-version option was used.
+ + update address for Free Software Foundation in tack's source.
+ + correct wins_wch(), which was not marking the filler-cells of
+ multi-column characters (cf: 20041023).
+
+20050910
+ + modify mouse initialization to ensure that Gpm_Open() is called only
+ once. Otherwise GPM gets confused in its initialization of signal
+ handlers (Debian #326709).
+
+20050903
+ + modify logic for backspacing in a multiline form field to ensure that
+ it works even when the preceding line is full (report by Frank van
+ Vugt).
+ + remove comment about BUGS section of ncurses manpage (Debian #325481)
+
+20050827
+ + document some workarounds for shared and libtool library
+ configurations in INSTALL (see --with-shared and --with-libtool).
+ + modify CF_GCC_VERSION and CF_GXX_VERSION macros to accommodate
+ cross-compilers which emit the platform name in their version
+ message, e.g.,
+ arm-sa1100-linux-gnu-g++ (GCC) 4.0.1
+ (report by Frank van Vugt).
+
+20050820
+ + start updating documentation for upcoming 5.5 release.
+ + fix to make libtool and libtinfo work together again (cf: 20050122).
+ + fixes to allow building traces into libtinfo
+ + add debug trace to tic that shows if/how ncurses will write to the
+ lower corner of a terminal's screen.
+ + update llib-l* files.
+
+20050813
+ + modify initializers in c++ binding to build with old versions of g++.
+ + improve special case for 20050115 repainting fix, ensuring that if
+ the first changed cell is not a character that the range to be
+ repainted is adjusted to start at a character's beginning (Debian
+ #316663).
+
+20050806
+ + fixes to build on QNX 6.1
+ + improve configure script checks for Intel 9.0 compiler.
+ + remove #include's for libc.h (obsolete).
+ + adjust ifdef's in curses.priv.h so that when cross-compiling to
+ produce comp_hash and make_keys, no dependency on wchar.h is needed.
+ That simplifies the build-cppflags (report by Frank van Vugt).
+ + move modules related to key-binding into libtinfo to fix linkage
+ problem caused by 20050430 changes to MKkeyname.sh (report by
+ Konstantin Andreev).
+
+20050723
+ + updates/fixes for configure script macros from vile -TD
+ + make prism9's sgr string agree with the rest of the terminfo -TD
+ + make vt220's sgr0 string consistent with sgr string, do this for
+ several related cases -TD
+ + improve translation to termcap by filtering the 'me' (sgr0) strings
+ as in the runtime call to tgetent() (prompted by a discussion with
+ Thomas Klausner).
+ + improve tic check for sgr0 versus sgr(0), to help ensure that sgr0
+ resets line-drawing.
+
+20050716
+ + fix special cases for trimming sgr0 for hurd and vt220 (Debian
+ #318621).
+ + split-out _nc_trim_sgr0() from modifications made to tgetent(), to
+ allow it to be used by tic to provide information about the runtime
+ changes that would be made to sgr0 for termcap applications.
+ + modify make_sed.sh to make the group-name in the NAME section of
+ form/menu library manpage agree with the TITLE string when renaming
+ is done for Debian (Debian #78866).
+
+20050702
+ + modify parameter type in c++ binding for insch() and mvwinsch() to
+ be consistent with underlying ncurses library (was char, is chtype).
+ + modify treatment of Intel compiler to allow _GNU_SOURCE to be defined
+ on Linux.
+ + improve configure check for nanosleep(), checking that it works since
+ some older systems such as AIX 4.3 have a nonworking version.
+
+20050625
+ + update config.guess and config.sub from
+ http://subversions.gnu.org/cgi-bin/viewcvs/config/config/
+ + modify misc/shlib to work in test-directory.
+ + suppress $suffix in misc/run_tic.sh when cross-compiling. This
+ allows cross-compiles to use the host's tic program to handle the
+ "make install.data" step.
+ + improve description of $LINES and $COLUMNS variables in manpages
+ (prompted by report by Dave Ulrick).
+ + improve description of cross-compiling in INSTALL
+ + add NCURSES-Programming-HOWTO.html by Pradeep Padala
+ (see http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/).
+ + modify configure script to obtain soname for GPM library (discussion
+ with Daniel Jacobowitz).
+ + modify configure script so that --with-chtype option will still
+ compute the unsigned literals suffix for constants in curses.h
+ (report by Daniel Jacobowitz:
+ + patches from Daniel Jacobowitz:
+ + the man_db.renames entry for tack.1 was backwards.
+ + tack.1 had some 1m's that should have been 1M's.
+ + the section for curs_inwstr.3 was wrong.
+
+20050619
+ + correction to --with-chtype option (report by Daniel Jacobowitz).
+
+20050618
+ + move build-time edit_man.sh and edit_man.sed scripts to top directory
+ to simplify reusing them for renaming tack's manpage (prompted by a
+ review of Debian package).
+ + revert minor optimization from 20041030 (Debian #313609).
+ + libtool-specific fixes, tested with libtool 1.4.3, 1.5.0, 1.5.6,
+ 1.5.10 and 1.5.18 (all work except as noted previously for the c++
+ install using libtool 1.5.0):
+ + modify the clean-rule in c++/Makefile.in to work with IRIX64 make
+ program.
+ + use $(LIBTOOL_UNINSTALL) symbol, overlooked in 20030830
+ + add configure options --with-chtype and --with-mmask-t, to allow
+ overriding of the non-LP64 model's use of the corresponding types.
+ + revise test for size of chtype (and mmask_t), which always returned
+ "long" due to an uninitialized variable (report by Daniel Jacobowitz).
+
+20050611
+ + change _tracef's that used "%p" format for va_list values to ignore
+ that, since on some platforms those are not pointers.
+ + fixes for long-formats in printf's due to largefile support.
+
+20050604
+ + fixes for termcap support:
+ + reset pointer to _nc_curr_token.tk_name when the input stream is
+ closed, which could point to free memory (cf: 20030215).
+ + delink TERMTYPE data which is used by the termcap reader, so that
+ extended names data will be freed consistently.
+ + free pointer to TERMTYPE data in _nc_free_termtype() rather than
+ its callers.
+ + add some entrypoints for freeing permanently allocated data via
+ _nc_freeall() when NO_LEAKS is defined.
+ + amend 20041030 change to _nc_do_color to ensure that optimization is
+ applied only when the terminal supports back_color_erase (bce).
+
+20050528
+ + add sun-color terminfo entry -TD
+ + correct a missing assignment in c++ binding's method
+ NCursesPanel::UserPointer() from 20050409 changes.
+ + improve configure check for large-files, adding check for dirent64
+ from vile -TD
+ + minor change to configure script to improve linker options for the
+ Ada95 tree.
+
+20050515
+ + 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
+
+20050507
+ + regenerated html documentation for manpages.
+ + add $(BUILD_EXEEXT) suffix to invocation of make_keys in
+ ncurses/Makefile (Gentoo #89772).
+ + modify c++/demo.cc to build with g++ -fno-implicit-templates option
+ (patch by Mike Frysinger).
+ + modify tic to filter out long extended names when translating to
+ termcap format. Only two characters are permissible for termcap
+ capability names.
+
+20050430
+ + modify terminfo entries xterm-new and rxvt to add strings for
+ shift-, control-cursor keys.
+ + workaround to allow c++ binding to compile with g++ 2.95.3, which
+ has a broken implementation of static_cast<> (patch by Jeff Chua).
+ + modify initialization of key lookup table so that if an extended
+ capability (tic -x) string is defined, and its name begins with 'k',
+ it will automatically be treated as a key.
+ + modify test/keynames.c to allow for the possibility of extended
+ key names, e.g., via define_key(), or via "tic -x".
+ + add test/demo_termcap.c to show the contents of given entry via the
+ termcap interface.
+
+20050423
+ + minor fixes for vt100/vt52 entries -TD
+ + add configure option --enable-largefile
+ + corrected libraries used to build Ada95/gen/gen, found in testing
+ gcc 4.0.0.
+
+20050416
+ + update config.guess, config.sub
+ + modify configure script check for _XOPEN_SOURCE, disable that on
+ Darwin whose header files have problems (patch by Chris Zubrzycki).
+ + modify form library Is_Printable_String() to use iswprint() rather
+ than wcwidth() for determining if a character is printable. The
+ latter caused it to reject menu items containing non-spacing
+ characters.
+ + modify ncurses test program's F-test to handle non-spacing characters
+ by combining them with a reverse-video blank.
+ + review/fix several gcc -Wconversion warnings.
+
+20050409
+ + correct an off-by-one error in m_driver() for mouse-clicks used to
+ position the mouse to a particular item.
+ + implement test/demo_menus.c
+ + add some checks in lib_mouse to ensure SP is set.
+ + modify C++ binding to make 20050403 changes work with the configure
+ --enable-const option.
+
+20050403
+ + modify start_color() to return ERR if it cannot allocate memory.
+ + address g++ compiler warnings in C++ binding by adding explicit
+ member initialization, assignment operators and copy constructors.
+ Most of the changes simply preserve the existing semantics of the
+ binding, which can leak memory, etc., but by making these features
+ visible, it provides a framework for improving the binding.
+ + improve C++ binding using static_cast, etc.
+ + modify configure script --enable-warnings to add options to g++ to
+ correspond to the gcc --enable-warnings.
+ + modify C++ binding to use some C internal functions to make it
+ compile properly on Solaris (and other platforms).
+
+20050327
+ + amend change from 20050320 to limit it to configurations with a
+ valid locale.
+ + fix a bug introduced in 20050320 which broke the translation of
+ nonprinting characters to uparrow form (report by Takahashi Tamotsu).
+
+20050326
+ + add ifdef's for _LP64 in curses.h to avoid using wasteful 64-bits for
+ chtype and mmask_t, but add configure option --disable-lp64 in case
+ anyone used that configuration.
+ + update misc/shlib script to account for Mac OS X (report by Michail
+ Vidiassov).
+ + correct comparison for wrapping multibyte characters in
+ waddch_literal() (report by Takahashi Tamotsu).
+
+20050320
+ + add -c and -w options to tset to allow user to suppress ncurses'
+ resizing of the terminal emulator window in the special case where it
+ is not able to detect the true size (report by Win Delvaux, Debian
+ #300419).
+ + modify waddch_nosync() to account for locale zn_CH.GBK, which uses
+ codes 128-159 as part of multibyte characters (report by Wang
+ WenRui, Debian #300512).
+
+20050319
+ + modify ncurses.c 'd' test to make it work with 88-color
+ configuration, i.e., by implementing scrolling.
+ + improve scrolling in ncurses.c 'c' and 'C' tests, e.g., for 88-color
+ configuration.
+
+20050312
+ + change tracemunch to use strict checking.
+ + modify ncurses.c 'p' test to test line-drawing within a pad.
+ + implement environment variable NCURSES_NO_UTF8_ACS to support
+ miscellaneous terminal emulators which ignore alternate character
+ set escape sequences when in UTF-8 mode.
+
+20050305
+ + change NCursesWindow::err_handler() to a virtual function (request by
+ Steve Beal).
+ + modify fty_int.c and fty_num.c to handle wide characters (report by
+ Wolfgang Gutjahr).
+ + adapt fix for fty_alpha.c to fty_alnum.c, which also handled normal
+ and wide characters inconsistently (report by Wolfgang Gutjahr).
+ + update llib-* files to reflect internal interface additions/changes.
+
+20050226
+ + improve test/configure script, adding tests for _XOPEN_SOURCE, etc.,
+ from lynx.
+ + add aixterm-16color terminfo entry -TD
+ + modified xterm-new terminfo entry to work with tgetent() changes -TD
+ + extended changes in tgetent() from 20040710 to allow the substring of
+ sgr0 which matches rmacs to be at the beginning of the sgr0 string
+ (request by Thomas Wolff). Wolff says the visual effect in
+ combination with pre-20040710 ncurses is improved.
+ + fix off-by-one in winnstr() call which caused form field validation
+ of multibyte characters to ignore the last character in a field.
+ + correct logic in winsch() for inserting multibyte strings; the code
+ would clear cells after the insertion rather than push them to the
+ right (cf: 20040228).
+ + fix an inconsistency in Check_Alpha_Field() between normal and wide
+ character logic (report by Wolfgang Gutjahr).
+
+20050219
+ + fix a bug in editing wide-characters in form library: deleting a
+ nonwide character modified the previous wide-character.
+ + update manpage to describe NCURSES_MOUSE_VERSION 2.
+ + correct manpage description of mouseinterval() (Debian #280687).
+ + add a note to default_colors.3x explaining why this extension was
+ added (Debian #295083).
+ + add traces to panel library.
+
+20050212
+ + improve editing of wide-characters in form library: left/right
+ cursor movement, and single-character deletions work properly.
+ + disable GPM mouse support when $TERM happens to be prefixed with
+ "xterm". Gpm_Open() would otherwise assert that it can deal with
+ mouse events in this case.
+ + modify GPM mouse support so it closes the server connection when
+ the caller disables the mouse (report by Stanislav Ievlev).
+
+20050205
+ + add traces for callback functions in form library.
+ + add experimental configure option --enable-ext-mouse, which defines
+ NCURSES_MOUSE_VERSION 2, and modifies the encoding of mouse events to
+ support wheel mice, which may transmit buttons 4 and 5. This works
+ with xterm and similar X terminal emulators (prompted by question by
+ Andreas Henningsson, this is also related to Debian #230990).
+ + improve configure macros CF_XOPEN_SOURCE and CF_POSIX_C_SOURCE to
+ avoid redefinition warnings on cygwin.
+
+20050129
+ + merge remaining development changes for extended colors (mostly
+ complete, does not appear to break other configurations).
+ + add xterm-88color.dat (part of extended colors testing).
+ + improve _tracedump() handling of color pairs past 96.
+ + modify return-value from start_color() to return OK if colors have
+ already been started.
+ + modify curs_color.3x list error conditions for init_pair(),
+ pair_content() and color_content().
+ + modify pair_content() to return -1 for consistency with init_pair()
+ if it corresponds to the default-color.
+ + change internal representation of default-color to allow application
+ to use color number 255. This does not affect the total number of
+ color pairs which are allowed.
+ + add a top-level tags rule.
+
+20050122
+ + add a null-pointer check in wgetch() in case it is called without
+ first calling initscr().
+ + add some null-pointer checks for SP, which is not set by libtinfo.
+ + modify misc/shlib to ensure that absolute pathnames are used.
+ + modify test/Makefile.in, etc., to link test programs only against the
+ libraries needed, e.g., omit form/menu/panel library for the ones
+ that are curses-specific.
+ + change SP->_current_attr to a pointer, adjust ifdef's to ensure that
+ libtinfo.so and libtinfow.so have the same ABI. The reason for this
+ is that the corresponding data which belongs to the upper-level
+ ncurses library has a different size in each model (report by
+ Stanislav Ievlev).
+
+20050115
+ + minor fixes to allow test-compiles with g++.
+ + correct column value shown in tic's warnings, which did not account
+ for leading whitespace.
+ + add a check in _nc_trans_string() for improperly ended strings, i.e.,
+ where a following line begins in column 1.
+ + modify _nc_save_str() to return a null pointer on buffer overflow.
+ + improve repainting while scrolling wide-character data (Eungkyu Song).
+
+20050108
+ + merge some development changes to extend color capabilities.
+
+20050101
+ + merge some development changes to extend color capabilities.
+ + fix manpage typo (FreeBSD report docs/75544).
+ + update config.guess, config.sub
+ > patches for configure script (Albert Chin-A-Young):
+ + improved fix to make mbstate_t recognized on HPUX 11i (cf:
+ 20030705), making vsscanf() prototype visible on IRIX64. Tested for
+ on HP-UX 11i, Solaris 7, 8, 9, AIX 4.3.3, 5.2, Tru64 UNIX 4.0D, 5.1,
+ IRIX64 6.5, Redhat Linux 7.1, 9, and RHEL 2.1, 3.0.
+ + print the result of the --disable-home-terminfo option.
+ + use -rpath when compiling with SGI C compiler.
+
+20041225
+ + add trace calls to remaining public functions in form and menu
+ libraries.
+ + fix check for numeric digits in test/ncurses.c 'b' and 'B' tests.
+ + fix typo in test/ncurses.c 'c' test from 20041218.
+
+20041218
+ + revise test/ncurses.c 'c' color test to improve use for xterm-88color
+ and xterm-256color, added 'C' test using the wide-character color_set
+ and attr_set functions.
+
+20041211
+ + modify configure script to work with Intel compiler.
+ + fix an limit-check in wadd_wchnstr() which caused labels in the
+ forms-demo to be one character short.
+ + fix typo in curs_addchstr.3x (Jared Yanovich).
+ + add trace calls to most functions in form and menu libraries.
+ + update working-position for adding wide-characters when window is
+ scrolled (prompted by related report by Eungkyu Song).
+
+20041204
+ + replace some references on Linux to wcrtomb() which use it to obtain
+ the length of a multibyte string with _nc_wcrtomb, since wcrtomb() is
+ broken in glibc (see Debian #284260).
+ + corrected length-computation in wide-character support for
+ field_buffer().
+ + some fixes to frm_driver.c to allow it to accept multibyte input.
+ + modify configure script to work with Intel 8.0 compiler.
+
+20041127
+ + amend change to setupterm() in 20030405 which would reuse the value
+ of cur_term if the same output was selected. This now reuses it only
+ when setupterm() is called from tgetent(), which has no notion of
+ separate SCREENs. Note that tgetent() must be called after initscr()
+ or newterm() to use this feature (Redhat Bugzilla #140326).
+ + add a check in CF_BUILD_CC macro to ensure that developer has given
+ the --with-build-cc option when cross-compiling (report by Alexandre
+ Campo).
+ + improved configure script checks for _XOPEN_SOURCE and
+ _POSIX_C_SOURCE (fix for IRIX 5.3 from Georg Schwarz, _POSIX_C_SOURCE
+ updates from lynx).
+ + cosmetic fix to test/gdc.c to recolor the bottom edge of the box
+ for consistency (comment by Dan Nelson).
+
+20041120
+ + update wsvt25 terminfo entry -TD
+ + modify test/ins_wide.c to test all flavors of ins_wstr().
+ + ignore filler-cells in wadd_wchnstr() when adding a cchar_t array
+ which consists of multi-column characters, since this function
+ constructs them (cf: 20041023).
+ + modify winnstr() to return multibyte character strings for the
+ wide-character configuration.
+
+20041106
+ + fixes to make slk_set() and slk_wset() accept and store multibyte
+ or multicolumn characters.
+
+20041030
+ + improve color optimization a little by making _nc_do_color() check
+ if the old/new pairs are equivalent to the default pair 0.
+ + modify assume_default_colors() to not require that
+ use_default_colors() be called first.
+
+20041023
+ + modify term_attrs() to use termattrs(), add the extended attributes
+ such as enter_horizontal_hl_mode for WA_HORIZONTAL to term_attrs().
+ + add logic in waddch_literal() to clear orphaned cells when one
+ multi-column character partly overwrites another.
+ + improved logic for clearing cells when a multi-column character
+ must be wrapped to a new line.
+ + revise storage of cells for multi-column characters to correct a
+ problem with repainting. In the old scheme, it was possible for
+ doupdate() to decide that only part of a multi-column character
+ should be repainted since the filler cells stored only an attribute
+ to denote them as fillers, rather than the character value and the
+ attribute.
+
+20041016
+ + minor fixes for traces.
+ + add SP->_screen_acs_map[], used to ensure that mapping of missing
+ line-drawing characters is handled properly. For example, ACS_DARROW
+ is absent from xterm-new, and it was coincidentally displayed the
+ same as ACS_BTEE.
+
+20041009
+ + amend 20021221 workaround for broken acs to reset the sgr, rmacs
+ and smacs strings as well. Also modify the check for screen's
+ limitations in that area to allow the multi-character shift-in
+ and shift-out which seem to work.
+ + change GPM initialization, using dl library to load it dynamically
+ at runtime (Debian #110586).
+
+20041002
+ + correct logic for color pair in setcchar() and getcchar() (patch by
+ Marcin 'Qrczak' Kowalczyk).
+ + add t/T commands to ncurses b/B tests to allow a different color to
+ be tested for the attrset part of the test than is used in the
+ background color.
+
+20040925
+ + fix to make setcchar() to work when its wchar_t* parameter is
+ pointing to a string which contains more data than can be converted.
+ + modify wget_wstr() and example in ncurses.c to work if wchar_t and
+ wint_t are different sizes (report by Marcin 'Qrczak' Kowalczyk).
+
+20040918
+ + remove check in wget_wch() added to fix an infinite loop, appears to
+ have been working around a transitory glibc bug, and interferes
+ with normal operation (report by Marcin 'Qrczak' Kowalczyk).
+ + correct wadd_wch() and wecho_wch(), which did not pass the rendition
+ information (report by Marcin 'Qrczak' Kowalczyk).
+ + fix aclocal.m4 so that the wide-character version of ncurses gets
+ compiled as libncursesw.5.dylib, instead of libncurses.5w.dylib
+ (adapted from patch by James J Ramsey).
+ + change configure script for --with-caps option to indicate that it
+ is no longer experimental.
+ + change configure script to reflect the fact that --enable-widec has
+ not been "experimental" since 5.3 (report by Bruno Lustosa).
+
+20040911
+ + add 'B' test to ncurses.c, to exercise some wide-character functions.
+
+20040828
+ + modify infocmp -i option to match 8-bit controls against its table
+ entries, e.g., so it can analyze the xterm-8bit entry.
+ + add morphos terminfo entry, improve amiga-8bit entry (Pavel Fedin).
+ + correct translation of "%%" in terminfo format to termcap, e.g.,
+ using "tic -C" (Redhat Bugzilla #130921).
+ + modified configure script CF_XOPEN_SOURCE macro to ensure that if
+ it defines _POSIX_C_SOURCE, that it defines it to a specific value
+ (comp.os.stratus newsgroup comment).
+
+20040821
+ + fixes to build with Ada95 binding with gnat 3.4 (all warnings are
+ fatal, and gnat does not follow the guidelines for pragmas).
+ 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, #55637). The
+ xterm entries are left alone - old ones for compatibility, and the
+ new ones do not require this change. -TD
+
+20040814
+ + fake a SIGWINCH in newterm() to accommodate buggy terminal emulators
+ and window managers (Debian #265631).
+ > terminfo updates -TD
+ + remove dch/dch1 from rxvt because they are implemented inconsistently
+ with the common usage of bce/ech
+ + remove khome from vt220 (vt220's have no home key)
+ + add rxvt+pcfkeys
+
+20040807
+ + modify test/ncurses.c 'b' test, adding v/V toggles to cycle through
+ combinations of video attributes so that for instance bold and
+ underline can be tested. This made the legend too crowded, added
+ a help window as well.
+ + modify test/ncurses.c 'b' test to cycle through default colors if
+ the -d option is set.
+ + update putty terminfo entry (Robert de Bath).
+
+20040731
+ + modify test/cardfile.c to allow it to read more data than can be
+ displayed.
+ + correct logic in resizeterm.c which kept it from processing all
+ levels of window hierarchy (reports by Folkert van Heusden,
+ Chris Share).
+
+20040724
+ + modify "tic -cv" to ignore delays when comparing strings. Also
+ modify it to ignore a canceled sgr string, e.g., for terminals which
+ cannot properly combine attributes in one control sequence.
+ + corrections for gnome and konsole entries (Redhat Bugzilla #122815,
+ patch by Hans de Goede)
+ > terminfo updates -TD
+ + make ncsa-m rmacs/smacs consistent with sgr
+ + add sgr, rc/sc and ech to syscons entries
+ + add function-keys to decansi
+ + add sgr to mterm-ansi
+ + add sgr, civis, cnorm to emu
+ + correct/simplify cup in addrinfo
+
+20040717
+ > terminfo updates -TD
+ + add xterm-pc-fkeys
+ + review/update gnome and gnome-rh90 entries (prompted by Redhat
+ Bugzilla #122815).
+ + review/update konsole entries
+ + add sgr, correct sgr0 for kterm and mlterm
+ + correct tsl string in kterm
+
+20040711
+ + add configure option --without-xterm-new
+
+20040710
+ + add check in wget_wch() for printable bytes that are not part of a
+ multibyte character.
+ + modify wadd_wchnstr() to render text using window's background
+ attributes.
+ + improve tic's check to compare sgr and sgr0.
+ + fix c++ directory's .cc.i rule.
+ + modify logic in tgetent() which adjusts the termcap "me" string
+ to work with ISO-2022 string used in xterm-new (cf: 20010908).
+ + modify tic's check for conflicting function keys to omit that if
+ converting termcap to termcap format.
+ + add -U option to tic and infocmp.
+ + add rmam/smam to linux terminfo entry (Trevor Van Bremen)
+ > terminfo updates -TD
+ + minor fixes for emu
+ + add emu-220
+ + change wyse acsc strings to use 'i' map rather than 'I'
+ + fixes for avatar0
+ + fixes for vp3a+
+
+20040703
+ + use tic -x to install terminfo database -TD
+ + add -x to infocmp's usage message.
+ + correct field used for comparing O_ROWMAJOR in set_menu_format()
+ (report/patch by Tony Li).
+ + fix a missing nul check in set_field_buffer() from 20040508 changes.
+ > terminfo updates -TD
+ + make xterm-xf86-v43 derived from xterm-xf86-v40 rather than
+ xterm-basic -TD
+ + align with xterm patch #192's use of xterm-new -TD
+ + update xterm-new and xterm-8bit for cvvis/cnorm strings -TD
+ + make xterm-new the default "xterm" entry -TD
+
+20040626
+ + correct BUILD_CPPFLAGS substitution in ncurses/Makefile.in, to allow
+ cross-compiling from a separate directory tree (report/patch by
+ Dan Engel).
+ + modify is_term_resized() to ensure that window sizes are nonzero,
+ as documented in the manpage (report by Ian Collier).
+ + modify CF_XOPEN_SOURCE configure macro to make Hurd port build
+ (Debian #249214, report/patch by Jeff Bailey).
+ + configure-script mods from xterm, e.g., updates to CF_ADD_CFLAGS
+ + update config.guess, config.sub
+ > terminfo updates -TD
+ + add mlterm
+ + add xterm-xf86-v44
+ + modify xterm-new aka xterm-xfree86 to accommodate luit, which
+ relies on G1 being used via an ISO-2022 escape sequence (report by
+ Juliusz Chroboczek)
+ + add 'hurd' entry
+
+20040619
+ + reconsidered winsnstr(), decided after comparing other
+ implementations that wrapping is an X/Open documentation error.
+ + modify test/inserts.c to test all flavors of insstr().
+
+20040605
+ + add setlocale() calls to a few test programs which may require it:
+ demo_forms.c, filter.c, ins_wide.c, inserts.c
+ + correct a few misspelled function names in ncurses-intro.html (report
+ by Tony Li).
+ + correct internal name of key_defined() manpage, which conflicted with
+ define_key().
+
+20040529
+ + correct size of internal pad used for holding wide-character
+ field_buffer() results.
+ + modify data_ahead() to work with wide-characters.
+
+20040522
+ + improve description of terminfo if-then-else expressions (suggested
+ by Arne Thomassen).
+ + improve test/ncurses.c 'd' test, allow it to use external file for
+ initial palette (added xterm-16color.dat and linux-color.dat), and
+ reset colors to the initial palette when starting/ending the test.
+ + change limit-check in init_color() to allow r/g/b component to
+ reach 1000 (cf: 20020928).
+
+20040516
+ + modify form library to use cchar_t's rather than char's in the
+ wide-character configuration for storing data for field buffers.
+ + correct logic of win_wchnstr(), which did not work for more than
+ one cell.
+
+20040508
+ + replace memset/memcpy usage in form library with for-loops to
+ simplify changing the datatype of FIELD.buf, part of wide-character
+ changes.
+ + fix some inconsistent use of #if/#ifdef (report by Alain Guibert).
+
+20040501
+ + modify menu library to account for actual number of columns used by
+ multibyte character strings, in the wide-character configuration
+ (adapted from patch by Philipp Tomsich).
+ + add "-x" option to infocmp like tic's "-x", for use in "-F"
+ comparisons. This modifies infocmp to only report extended
+ capabilities if the -x option is given, making this more consistent
+ with tic. Some scripts may break, since infocmp previous gave this
+ information without an option.
+ + modify termcap-parsing to retain 2-character aliases at the beginning
+ of an entry if the "-x" option is used in tic.
+
+20040424
+ + minor compiler-warning and test-program fixes.
+
+20040417
+ + modify tic's missing-sgr warning to apply to terminfo only.
+ + free some memory leaks in tic.
+ + remove check in post_menu() that prevented menus from extending
+ beyond the screen (request by Max J. Werner).
+ + remove check in newwin() that prevents allocating windows
+ that extend beyond the screen. Solaris curses does this.
+ + add ifdef in test/color_set.c to allow it to compile with older
+ curses.
+ + add napms() calls to test/dots.c to make it not be a CPU hog.
+
+20040403
+ + modify unctrl() to return null if its parameter does not correspond
+ to an unsigned char.
+ + add some limit-checks to guard isprint(), etc., from being used on
+ values that do not fit into an unsigned char (report by Sami Farin).
+
+20040328
+ + fix a typo in the _nc_get_locale() change.
+
+20040327
+ + modify _nc_get_locale() to use setlocale() to query the program's
+ current locale rather than using getenv(). This fixes a case in tin
+ which relies on legacy treatment of 8-bit characters when the locale
+ is not initialized (reported by Urs Jansen).
+ + add sgr string to screen's and rxvt's terminfo entries -TD.
+ + add a check in tic for terminfo entries having an sgr0 but no sgr
+ string. This confuses Tru64 and HPUX curses when combined with
+ color, e.g., making them leave line-drawing characters in odd places.
+ + correct casts used in ABSENT_BOOLEAN, CANCELLED_BOOLEAN, matches the
+ original definitions used in Debian package to fix PowerPC bug before
+ 20030802 (Debian #237629).
+
+20040320
+ + modify PutAttrChar() and PUTC() macro to improve use of
+ A_ALTCHARSET attribute to prevent line-drawing characters from
+ being lost in situations where the locale would otherwise treat the
+ raw data as nonprintable (Debian #227879).
+
+20040313
+ + fix a redefinition of CTRL() macro in test/view.c for AIX 5.2 (report
+ by Jim Idle).
+ + remove ".PP" after ".SH NAME" in a few manpages; this confuses
+ some apropos script (Debian #237831).
+
+20040306
+ + modify ncurses.c 'r' test so editing commands, like inserted text,
+ set the field background, and the state of insert/overlay editing
+ mode is shown in that test.
+ + change syntax of dummy targets in Ada95 makefiles to work with pmake.
+ + correct logic in test/ncurses.c 'b' for noncolor terminals which
+ did not recognize a quit-command (cf: 20030419).
+
+20040228
+ + modify _nc_insert_ch() to allow for its input to be part of a
+ multibyte string.
+ + split out lib_insnstr.c, to prepare to rewrite it. X/Open states
+ that this function performs wrapping, unlike all of the other
+ insert-functions. Currently it does not wrap.
+ + check for nl_langinfo(CODESET), use it if available (report by
+ Stanislav Ievlev).
+ + split-out CF_BUILD_CC macro, actually did this for lynx first.
+ + fixes for configure script CF_WITH_DBMALLOC and CF_WITH_DMALLOC,
+ which happened to work with bash, but not with Bourne shell (report
+ by Marco d'Itri via tin-dev).
+
+20040221
+ + some changes to adapt the form library to wide characters, incomplete
+ (request by Mike Aubury).
+ + add symbol to curses.h which can be used to suppress include of
+ stdbool.h, e.g.,
+ #define NCURSES_ENABLE_STDBOOL_H 0
+ #include <curses.h>
+ (discussion on XFree86 mailing list).
+
+20040214
+ + modify configure --with-termlib option to accept a value which sets
+ the name of the terminfo library. This would allow a packager to
+ build libtinfow.so renamed to coincide with libtinfo.so (discussion
+ with Stanislav Ievlev).
+ + improve documentation of --with-install-prefix, --prefix and
+ $(DESTDIR) in INSTALL (prompted by discussion with Paul Lew).
+ + add configure check if the compiler can use -c -o options to rename
+ its output file, use that to omit the 'cd' command which was used to
+ ensure object files are created in a separate staging directory
+ (prompted by comments by Johnny Wezel, Martin Mokrejs).
+
+20040208 5.4 release for upload to ftp.gnu.org
+ + update TO-DO.
+
+20040207 pre-release
+ + minor fixes to _nc_tparm_analyze(), i.e., do not count %i as a param,
+ and do not count %d if it follows a %p.
+ + correct an inconsistency between handling of codes in the 128-255
+ range, e.g., as illustrated by test/ncurses.c f/F tests. In POSIX
+ locale, the latter did not show printable results, while the former
+ did.
+ + modify MKlib_gen.sh to compensate for broken C preprocessor on Mac
+ OS X, which alters "%%" to "% % " (report by Robert Simms, fix
+ verified by Scott Corscadden).
+
+20040131 pre-release
+ + modify SCREEN struct to align it between normal/wide curses flavors
+ to simplify future changes to build a single version of libtinfo
+ (patch by Stanislav Ievlev).
+ + document handling of carriage return by addch() in manpage.
+ + document special features of unctrl() in manpage.
+ + documented interface changes in INSTALL.
+ + corrected control-char test in lib_addch.c to account for locale
+ (Debian #230335, cf: 971206).
+ + updated test/configure.in to use AC_EXEEXT and AC_OBJEXT.
+ + fixes to compile Ada95 binding with Debian gnat 3.15p-4 package.
+ + minor configure-script fixes for older ports, e.g., BeOS R4.5.
+
+20040125 pre-release
+ + amend change to PutAttrChar() from 20030614 which computed the number
+ of cells for a possibly multi-cell character. The 20030614 change
+ forced the cell to a blank if the result from wcwidth() was not
+ greater than zero. However, wcwidth() called for parameters in the
+ range 128-255 can give this return value. The logic now simply
+ ensures that the number of cells is greater than zero without
+ modifying the displayed value.
+
+20040124 pre-release
+ + looked good for 5.4 release for upload to ftp.gnu.org (but see above)
+ + modify configure script check for ranlib to use AC_CHECK_TOOL, since
+ that works better for cross-compiling.
+
+20040117 pre-release
+ + modify lib_get_wch.c to prefer mblen/mbtowc over mbrlen/mbrtowc to
+ work around core dump in Solaris 8's locale support, e.g., for
+ zh_CN.GB18030 (report by Saravanan Bellan).
+ + add includes for <stdarg.h> and <stdio.h> in configure script macro
+ to make <wchar.h> check work with Tru64 4.0d.
+ + add terminfo entry for U/Win -TD
+ + add terminfo entries for SFU aka Interix aka OpenNT (Federico
+ Bianchi).
+ + modify tput's error messages to prefix them with the program name
+ (report by Vincent Lefevre, patch by Daniel Jacobowitz (see Debian
+ #227586)).
+ + correct a place in tack where exit_standout_mode was used instead of
+ exit_attribute_mode (patch by Jochen Voss (see Debian #224443)).
+ + modify c++/cursesf.h to use const in the Enumeration_Field method.
+ + remove an ambiguous (actually redundant) method from c++/cursesf.h
+ + make $HOME/.terminfo update optional (suggested by Stanislav Ievlev).
+ + improve sed script which extracts libtool's version in the
+ CF_WITH_LIBTOOL macro.
+ + add ifdef'd call to AC_PROG_LIBTOOL to CF_WITH_LIBTOOL macro (to
+ simplify local patch for Albert Chin-A-Young)..
+ + add $(CXXFLAGS) to link command in c++/Makefile.in (adapted from
+ patch by Albert Chin-A-Young)..
+ + fix a missing substitution in configure.in for "$target" needed for
+ HPUX .so/.sl case.
+ + resync CF_XOPEN_SOURCE configure macro with lynx; fixes IRIX64 and
+ NetBSD 1.6 conflicts with _XOPEN_SOURCE.
+ + make check for stdbool.h more specific, to ensure that including it
+ will actually define/declare bool for the configured compiler.
+ + rewrite ifdef's in curses.h relating NCURSES_BOOL and bool. The
+ intention of that is to #define NCURSES_BOOL as bool when the
+ compiler declares bool, and to #define bool as NCURSES_BOOL when it
+ does not (reported by Jim Gifford, Sam Varshavchik, cf: 20031213).
+
+20040110 pre-release
+ + change minor version to 4, i.e., ncurses 5.4
+ + revised/improved terminfo entries for tvi912b, tvi920b (Benjamin C W
+ Sittler).
+ + simplified ncurses/base/version.c by defining the result from the
+ configure script rather than using sprintf (suggested by Stanislav
+ Ievlev).
+ + remove obsolete casts from c++/cursesw.h (reported by Stanislav
+ Ievlev).
+ + modify configure script so that when configuring for termlib, programs
+ such as tic are not linked with the upper-level ncurses library
+ (suggested by Stanislav Ievlev).
+ + move version.c from ncurses/base to ncurses/tinfo to allow linking
+ of tic, etc., using libtinfo (suggested by Stanislav Ievlev).
+
+20040103
+ + adjust -D's to build ncursesw on OpenBSD.
+ + modify CF_PROG_EXT to make OS/2 build with EXEEXT.
+ + add pecho_wchar().
+ + remove <wctype.h> include from lib_slk_wset.c which is not needed (or
+ available) on older platforms.
+
+20031227
+ + add -D's to build ncursew on FreeBSD 5.1.
+ + modify shared library configuration for FreeBSD 4.x/5.x to add the
+ soname information (request by Marc Glisse).
+ + modify _nc_read_tic_entry() to not use MAX_ALIAS, but PATH_MAX only
+ for limiting the length of a filename in the terminfo database.
+ + modify termname() to return the terminal name used by setupterm()
+ rather than $TERM, without truncating to 14 characters as documented
+ by X/Open (report by Stanislav Ievlev, cf: 970719).
+ + re-add definition for _BSD_TYPES, lost in merge (cf: 20031206).
+
+20031220
+ + add configure option --with-manpage-format=catonly to address
+ behavior of BSDI, allow install of man+cat files on NetBSD, whose
+ behavior has diverged by requiring both to be present.
+ + remove leading blanks from comment-lines in manlinks.sed script to
+ work with Tru64 4.0d.
+ + add screen.linux terminfo entry (discussion on mutt-users mailing
+ list).
+
+20031213
+ + add a check for tic to flag missing backslashes for termcap
+ continuation lines. ncurses reads the whole entry, but termcap
+ applications do not.
+ + add configure option "--with-manpage-aliases" extending
+ "--with-manpage-aliases" to provide the option of generating ".so"
+ files rather than symbolic links for manpage aliases.
+ + add bool definition in include/curses.h.in for configurations with no
+ usable C++ compiler (cf: 20030607).
+ + fix pathname of SigAction.h for building with --srcdir (reported by
+ Mike Castle).
+
+20031206
+ + folded ncurses/base/sigaction.c into includes of ncurses/SigAction.h,
+ since that header is used only within ncurses/tty/lib_tstp.c, for
+ non-POSIX systems (discussion with Stanislav Ievlev).
+ + remove obsolete _nc_outstr() function (report by Stanislav Ievlev
+ <inger@altlinux.org>).
+ + add test/background.c and test/color_set.c
+ + modify color_set() function to work with color pair 0 (report by
+ George Andreou <gbandreo@tem.uoc.gr>).
+ + add configure option --with-trace, since defining TRACE seems too
+ awkward for some cases.
+ + remove a call to _nc_free_termtype() from read_termtype(), since the
+ corresponding buffer contents were already zeroed by a memset (cf:
+ 20000101).
+ + improve configure check for _XOPEN_SOURCE and related definitions,
+ adding special cases for Solaris' __EXTENSIONS__ and FreeBSD's
+ __BSD_TYPES (reports by Marc Glisse <marc.glisse@normalesup.org>).
+ + small fixes to compile on Solaris and IRIX64 using cc.
+ + correct typo in check for pre-POSIX sort options in MKkey_defs.sh
+ (cf: 20031101).
+
+20031129
+ + modify _nc_gettime() to avoid a problem with arithmetic on unsigned
+ values (Philippe Blain).
+ + improve the nanosleep() logic in napms() by checking for EINTR and
+ restarting (Philippe Blain).
+ + correct expression for "%D" in lib_tgoto.c (Juha Jarvi
+ <mooz@welho.com>).
+
+20031122
+ + add linux-vt terminfo entry (Andrey V Lukyanov <land@long.yar.ru>).
+ + allow "\|" escape in terminfo; tic should not warn about this.
+ + save the full pathname of the trace-file the first time it is opened,
+ to avoid creating it in different directories if the application
+ opens and closes it while changing its working directory.
+ + modify configure script to provide a non-empty default for
+ $BROKEN_LINKER
+
+20031108
+ + add DJGPP to special case of DOS-style drive letters potentially
+ appearing in TERMCAP environment variable.
+ + fix some spelling in comments (reports by jmc, Jonathon Gray).
+ + update config.guess, config.sub
+
+20031101
+ + fix a memory leak in error-return from setupterm() (report by
+ Stanislav Ievlev <inger@altlinux.org>).
+ + use EXEEXT and OBJEXT consistently in makefiles.
+ + amend fixes for cross-compiling to use separate executable-suffix
+ BUILD_EXEEXT (cf: 20031018).
+ + modify MKkey_defs.sh to check for sort utility that does not
+ recognize key options, e.g., busybox (report by Peter S Mazinger
+ <ps.m@gmx.net>).
+ + fix potential out-of-bounds indexing in _nc_infotocap() (found by
+ David Krause using some of the new malloc debugging features
+ under OpenBSD, patch by Ted Unangst).
+ + modify CF_LIB_SUFFIX for Itanium releases of HP-UX, which use a
+ ".so" suffix (patch by Jonathan Ward <Jonathan.Ward@hp.com>).
+
+20031025
+ + update terminfo for xterm-xfree86 -TD
+ + add check for multiple "tc=" clauses in a termcap to tic.
+ + check for missing op/oc in tic.
+ + correct _nc_resolve_uses() and _nc_merge_entry() to allow infocmp and
+ tic to show cancelled capabilities. These functions were ignoring
+ the state of the target entry, which should be untouched if cancelled.
+ + correct comment in tack/output.c (Debian #215806).
+ + add some null-pointer checks to lib_options.c (report by Michael
+ Bienia).
+ + regenerated html documentation.
+ + correction to tar-copy.sh, remove a trap command that resulted in
+ leaving temporary files (cf: 20030510).
+ + remove contact/maintainer addresses for Juergen Pfeifer (his request).
+
+20031018
+ + updated test/configure to reflect changes for libtool (cf: 20030830).
+ + fix several places in tack/pad.c which tested and used the parameter-
+ and parameterless strings inconsistently, i.e., in pad_rin(),
+ pad_il(), pad_indn() and pad_dl() (Debian #215805).
+ + minor fixes for configure script and makefiles to cleanup executables
+ generated when cross-compiling for DJGPP.
+ + modify infocmp to omit check for $TERM for operations that do not
+ require it, e.g., "infocmp -e" used to build fallback list (report by
+ Koblinger Egmont).
+
+20031004
+ + add terminfo entries for DJGPP.
+ + updated note about maintainer in ncurses-intro.html
+
+20030927
+ + update terminfo entries for gnome terminal.
+ + modify tack to reset colors after each color test, correct a place
+ where exit_standout_mode was used instead of exit_attribute_mode.
+ + improve tack's bce test by making it set colors other than black
+ on white.
+ + plug a potential recursion between napms() and _nc_timed_wait()
+ (report by Philippe Blain).
+
+20030920
+ + add --with-rel-version option to allow workaround to allow making
+ libtool on Darwin generate the "same" library names as with the
+ --with-shared option. The Darwin ld program does not work well
+ with a zero as the minor-version value (request by Chris Zubrzycki).
+ + modify CF_MIXEDCASE_FILENAMES macro to work with cross-compiling.
+ + modify tack to allow it to run from fallback terminfo data.
+ > patch by Philippe Blain:
+ + improve PutRange() by adjusting call to EmitRange() and corresponding
+ return-value to not emit unchanged characters on the end of the
+ range.
+ + improve a check for changed-attribute by exiting a loop when the
+ change is found.
+ + improve logic in TransformLine(), eliminating a duplicated comparison
+ in the clr_bol logic.
+
+20030913
+ > patch by Philippe Blain:
+ + in ncurses/tty/lib_mvcur.c,
+ move the label 'nonlocal' just before the second gettimeofday() to
+ be able to compute the diff time when 'goto nonlocal' used.
+ Rename 'msec' to 'microsec' in the debug-message.
+ + in ncurses/tty/lib_mvcur.c,
+ Use _nc_outch() in carriage return/newline movement instead of
+ putchar() which goes to stdout. Move test for xold>0 out of loop.
+ + in ncurses/tinfo/setbuf.c,
+ Set the flag SP->_buffered at the end of operations when all has been
+ successful (typeMalloc can fail).
+ + simplify NC_BUFFERED macro by moving check inside _nc_setbuf().
+
+20030906
+ + modify configure script to avoid using "head -1", which does not
+ work if POSIXLY_CORRECT (sic) is set.
+ + modify run_tic.in to avoid using wrong shared libraries when
+ cross-compiling (Dan Kegel).
+
+20030830
+ + alter configure script help message to make it clearer that
+ --with-build-cc does not specify a cross-compiler (suggested by Dan
+ Kegel <dank@kegel.com>).
+ + modify configure script to accommodate libtool 1.5, as well as add an
+ parameter to the "--with-libtool" option which can specify the
+ pathname of libtool (report by Chris Zubrzycki). We note that
+ libtool 1.5 has more than one bug in its C++ support, so it is not
+ able to install libncurses++, for instance, if $DESTDIR or the option
+ --with-install-prefix is used.
+
+20030823
+ > patch by Philippe Blain:
+ + move assignments to SP->_cursrow, SP->_curscol into online_mvcur().
+ + make baudrate computation in delay_output() consistent with the
+ assumption in _nc_mvcur_init(), i.e., a byte is 9 bits.
+
+20030816
+ + modify logic in waddch_literal() to take into account zh_TW.Big5
+ whose multibyte sequences may contain "printable" characters, e.g.,
+ a "g" in the sequence "\247g" (Debian #204889, cf: 20030621).
+ + improve storage used by _nc_safe_strcpy() by ensuring that the size
+ is reset based on the initialization call, in case it were called
+ after other strcpy/strcat calls (report by Philippe Blain).
+ > patch by Philippe Blain:
+ + remove an unused ifdef for REAL_ATTR & WANT_CHAR
+ + correct a place where _cup_cost was used rather than _cuu_cost
+
+20030809
+ + fix a small memory leak in _nc_free_termtype().
+ + close trace-file if trace() is called with a zero parameter.
+ + free memory allocated for soft-key strings, in delscreen().
+ + fix an allocation size in safe_sprintf.c for the "*" format code.
+ + correct safe_sprintf.c to not return a null pointer if the format
+ happens to be an empty string. This applies to the "configure
+ --enable-safe-sprintf" option (Redhat #101486).
+
+20030802
+ + modify casts used for ABSENT_BOOLEAN and CANCELLED_BOOLEAN (report by
+ Daniel Jacobowitz).
+ > patch by Philippe Blain:
+ + change padding for change_scroll_region to not be proportional to
+ the size of the scroll-region.
+ + correct error-return in _nc_safe_strcat().
+
+20030726
+ + correct limit-checks in _nc_scroll_window() (report and test-case by
+ Thomas Graf <graf@dms.at> cf: 20011020).
+ + re-order configure checks for _XOPEN_SOURCE to avoid conflict with
+ _GNU_SOURCE check.
+
+20030719
+ + use clr_eol in preference to blanks for bce terminals, so select and
+ paste will have fewer trailing blanks, e.g., when using xterm
+ (request by Vincent Lefevre).
+ + correct prototype for wunctrl() in manpage.
+ + add configure --with-abi-version option (discussion with Charles
+ Wilson).
+ > cygwin changes from Charles Wilson:
+ + aclocal.m4: on cygwin, use autodetected prefix for import
+ and static lib, but use "cyg" for DLL.
+ + include/ncurses_dll.h: correct the comments to reflect current
+ status of cygwin/mingw port. Fix compiler warning.
+ + misc/run_tic.in: ensure that tic.exe can find the uninstalled
+ DLL, by adding the lib-directory to the PATH variable.
+ + misc/terminfo.src (nxterm|xterm-color): make xterm-color
+ primary instead of nxterm, to match XFree86's xterm.terminfo
+ usage and to prevent circular links.
+ (rxvt): add additional codes from rxvt.org.
+ (rxvt-color): new alias
+ (rxvt-xpm): new alias
+ (rxvt-cygwin): like rxvt, but with special acsc codes.
+ (rxvt-cygwin-native): ditto. rxvt may be run under XWindows, or
+ with a "native" MSWin GUI. Each takes different acsc codes,
+ which are both different from the "normal" rxvt's acsc.
+ (cygwin): cygwin-in-cmd.exe window. Lots of fixes.
+ (cygwinDBG): ditto.
+ + mk-1st.awk: use "cyg" for the DLL prefix, but "lib" for import
+ and static libs.
+
+20030712
+ + update config.guess, config.sub
+ + add triples for configuring shared libraries with the Debian
+ GNU/FreeBSD packages (patch by Robert Millan <zeratul2@wanadoo.es>).
+
+20030705
+ + modify CF_GCC_WARNINGS so it only applies to gcc, not g++. Some
+ platforms have installed g++ along with the native C compiler, which
+ would not accept gcc warning options.
+ + add -D_XOPEN_SOURCE=500 when configuring with --enable-widec, to
+ get mbstate_t declaration on HPUX 11.11 (report by David Ellement).
+ + add _nc_pathlast() to get rid of casts in _nc_basename() calls.
+ + correct a sign-extension in wadd_wch() and wecho_wchar() from
+ 20030628 (report by Tomohiro Kubota).
+ + work around omission of btowc() and wctob() from wide-character
+ support (sic) in NetBSD 1.6 using mbtowc() and wctomb() (report by
+ Gabor Z Papp).
+ + add portability note to curs_get_wstr.3x (Debian #199957).
+
+20030628
+ + rewrite wadd_wch() and wecho_wchar() to call waddch() and wechochar()
+ respectively, to avoid calling waddch_noecho() with wide-character
+ data, since that function assumes its input is 8-bit data.
+ Similarly, modify waddnwstr() to call wadd_wch().
+ + remove logic from waddnstr() which transformed multibyte character
+ strings into wide-characters. Rewrite of waddch_literal() from
+ 20030621 assumes its input is raw multibyte data rather than wide
+ characters (report by Tomohiro Kubota).
+
+20030621
+ + write getyx() and related 2-return macros in terms of getcury(),
+ getcurx(), etc.
+ + modify waddch_literal() in case an application passes bytes of a
+ multibyte character directly to waddch(). In this case, waddch()
+ must reassemble the bytes into a wide-character (report by Tomohiro
+ Kubota <kubota@debian.org>).
+
+20030614
+ + modify waddch_literal() in case a multibyte value occupies more than
+ two cells.
+ + modify PutAttrChar() to compute the number of character cells that
+ are used in multibyte values. This fixes a problem displaying
+ double-width characters (report/test by Mitsuru Chinen
+ <mchinen@yamato.ibm.com>).
+ + add a null-pointer check for result of keyname() in _tracechar()
+ + modify _tracechar() to work around glibc sprintf bug.
+
+20030607
+ + add a call to setlocale() in cursesmain.cc, making demo display
+ properly in a UTF-8 locale.
+ + add a fallback definition in curses.priv.h for MB_LEN_MAX (prompted
+ by discussion with Gabor Z Papp).
+ + use macros NCURSES_ACS() and NCURSES_WACS() to hide cast needed to
+ appease -Wchar-subscript with g++ 3.3 (Debian #195732).
+ + fix a redefinition of $RANLIB in the configure script when libtool
+ is used, which broke configure on Mac OS X (report by Chris Zubrzycki
+ <beren@mac.com>).
+ + simplify ifdef for bool declaration in curses.h.in (suggested by
+ Albert Chin-A-Young).
+ + remove configure script check to allow -Wconversion for older
+ versions of gcc (suggested by Albert Chin-A-Young).
+
+20030531
+ + regenerated html manpages.
+ + modify ifdef's in curses.h.in that disabled use of __attribute__()
+ for g++, since recent versions implement the cases which ncurses uses
+ (Debian #195230).
+ + modify _nc_get_token() to handle a case where an entry has no
+ description, and capabilities begin on the same line as the entry
+ name.
+ + fix a typo in ncurses_dll.h reported by gcc 3.3.
+ + add an entry for key_defined.3x to man_db.renames.
+
+20030524
+ + modify setcchar() to allow converting control characters to complex
+ characters (report/test by Mitsuru Chinen <mchinen@yamato.ibm.com>).
+ + add tkterm entry -TD
+ + modify parse_entry.c to allow a terminfo entry with a leading
+ 2-character name (report by Don Libes).
+ + corrected acsc in screen.teraterm, which requires a PC-style mapping.
+ + fix trace statements in read_entry.c to use lseek() rather than
+ tell().
+ + fix signed/unsigned warnings from Sun's compiler (gcc should give
+ these warnings, but it is unpredictable).
+ + modify configure script to omit -Winline for gcc 3.3, since that
+ feature is broken.
+ + modify manlinks.sed to add a few functions that were overlooked since
+ they return function pointers: field_init, field_term, form_init,
+ form_term, item_init, item_term, menu_init and menu_term.
+
+20030517
+ + prevent recursion in wgetch() via wgetnstr() if the connection cannot
+ be switched between cooked/raw modes because it is not a TTY (report
+ by Wolfgang Gutjahr <gutw@knapp.com>).
+ + change parameter of define_key() and key_defined() to const (prompted
+ by Debian #192860).
+ + add a check in test/configure for ncurses extensions, since there
+ are some older versions, etc., which would not compile with the
+ current test programs.
+ + corrected demo in test/ncurses.c of wgetn_wstr(), which did not
+ convert wchar_t string to multibyte form before printing it.
+ + corrections to lib_get_wstr.c:
+ + null-terminate buffer passed to setcchar(), which occasionally
+ failed.
+ + map special characters such as erase- and kill-characters into
+ key-codes so those will work as expected even if they are not
+ mentioned in the terminfo.
+ + modify PUTC() and Charable() macros to make wide-character line
+ drawing work for POSIX locale on Linux console (cf: 20021221).
+
+20030510
+ + make typography for program options in manpages consistent (report
+ by Miloslav Trmac <mitr@volny.cz>).
+ + correct dependencies in Ada95/src/Makefile.in, so the builds with
+ "--srcdir" work (report by Warren L Dodge).
+ + correct missing definition of $(CC) in Ada95/gen/Makefile.in
+ (reported by Warren L Dodge <warrend@mdhost.cse.tek.com>).
+ + fix typos and whitespace in manpages (patch by jmc
+ <jmc@prioris.mini.pw.edu.pl>).
+
+20030503
+ + fix form_driver() cases for REQ_CLR_EOF, REQ_CLR_EOL, REQ_DEL_CHAR,
+ REQ_DEL_PREV and REQ_NEW_LINE, which did not ensure the cursor was at
+ the editing position before making modifications.
+ + add test/demo_forms and associated test/edit_field.c demos.
+ + modify test/configure.in to use test/modules for the list of objects
+ to compile rather than using the list of programs.
+
+20030419
+ + modify logic of acsc to use the original character if no mapping is
+ defined, noting that Solaris does this.
+ + modify ncurses 'b' test to avoid using the acs_map[] array since
+ 20021231 changes it to no longer contain information from the acsc
+ string.
+ + modify makefile rules in c++, progs, tack and test to ensure that
+ the compiler flags (e.g., $CFLAGS or $CCFLAGS) are used in the link
+ command (report by Jose Luis Rico Botella <informatica@serpis.com>).
+ + modify soft-key initialization to use A_REVERSE if A_STANDOUT would
+ not be shown when colors are used, i.e., if ncv#1 is set in the
+ terminfo as is done in "screen".
+
+20030412
+ + add a test for slk_color(), in ncurses.c
+ + fix some issues reported by valgrind in the slk_set() and slk_wset()
+ code, from recent rewrite.
+ + modify ncurses 'E' test to use show previous label via slk_label(),
+ as in 'e' test.
+ + modify wide-character versions of NewChar(), NewChar2() macros to
+ ensure that the whole struct is initialized.
+
+20030405
+ + modify setupterm() to check if the terminfo and terminal-modes have
+ already been read. This ensures that it does not reinvoke
+ def_prog_mode() when an application calls more than one function,
+ such as tgetent() and initscr() (report by Olaf Buddenhagen).
+
+20030329
+ + add 'E' test to ncurses.c, to exercise slk_wset().
+ + correct handling of carriage-return in wgetn_wstr(), used in demo of
+ slk_wset().
+ + first draft of slk_wset() function.
+
+20030322
+ + improved warnings in tic when suppressing items to fit in termcap's
+ 1023-byte limit.
+ + built a list in test/README showing which externals are being used
+ by either programs in the test-directory or via internal library
+ calls.
+ + adjust include-options in CF_ETIP_DEFINES to avoid missing
+ ncurses_dll.h, fixing special definitions that may be needed for
+ etip.h (reported by Greg Schafer <gschafer@zip.com.au>).
+
+20030315
+ + minor fixes for cardfile.c, to make it write the updated fields to
+ a file when ^W is given.
+ + add/use _nc_trace_bufcat() to eliminate some fixed buffer limits in
+ trace code.
+
+20030308
+ + correct a case in _nc_remove_string(), used by define_key(), to avoid
+ infinite loop if the given string happens to be a substring of other
+ strings which are assigned to keys (report by John McCutchan).
+ + add key_defined() function, to tell which keycode a string is bound
+ to (discussion with John McCutchan <ttb@tentacle.dhs.org>).
+ + correct keybound(), which reported definitions in the wrong table,
+ i.e., the list of definitions which are disabled by keyok().
+ + modify demo_keydef.c to show the details it changes, and to check
+ for errors.
+
+20030301
+ + restructured test/configure script, make it work for libncursesw.
+ + add description of link_fieldtype() to manpage (report by
+ L Dee Holtsclaw <dee@sunbeltsoft.com>).
+
+20030222
+ + corrected ifdef's relating to configure check for wchar_t, etc.
+ + if the output is a socket or other non-tty device, use 1 millisecond
+ for the cost in mvcur; previously it was 9 milliseconds because the
+ baudrate was not known.
+ + in _nc_get_tty_mode(), initialize the TTY buffer on error, since
+ glibc copies uninitialized data in that case, as noted by valgrind.
+ + modify tput to use the same parameter analysis as tparm() does, to
+ provide for user-defined strings, e.g., for xterm title, a
+ corresponding capability might be
+ title=\E]2;%p1%s^G,
+ + modify MKlib_gen.sh to avoid passing "#" tokens through the C
+ preprocessor. This works around Mac OS X's preprocessor, which
+ insists on adding a blank on each side of the token (report/analysis
+ by Kevin Murphy <murphy@genome.chop.edu>).
+
+20030215
+ + add configure check for wchar_t and wint_t types, rather than rely
+ on preprocessor definitions. Also work around for gcc fixinclude
+ bug which creates a shadow copy of curses.h if it sees these symbols
+ apparently typedef'd.
+ + if database is disabled, do not generate run_tic.sh
+ + minor fixes for memory-leak checking when termcap is read.
+
+20030208
+ + add checking in tic for incomplete line-drawing character mapping.
+ + update configure script to reflect fix for AC_PROG_GCC_TRADITIONAL,
+ which is broken in autoconf 2.5x for Mac OS X 10.2.3 (report by
+ Gerben Wierda <Sherlock@rna.nl>).
+ + make return value from _nc_printf_string() consistent. Before,
+ depending on whether --enable-safe-sprintf was used, it might not be
+ cached for reallocating.
+
+20030201
+ + minor fixes for memory-leak checking in lib_tparm.c, hardscroll.c
+ + correct a potentially-uninitialized value if _read_termtype() does
+ not read as much data as expected (report by Wolfgang Rohdewald
+ <wr6@uni.de>).
+ + correct several places where the aclocal.m4 macros relied on cache
+ variable names which were incompatible (as usual) between autoconf
+ 2.13 and 2.5x, causing the test for broken-linker to give incorrect
+ results (reports by Gerben Wierda <Sherlock@rna.nl> and Thomas Esser
+ <te@dbs.uni-hannover.de>).
+ + do not try to open gpm mouse driver if standard output is not a tty;
+ the gpm library does not make this check (bug report for dialog
+ by David Oliveira <davidoliveira@develop.prozone.ws>).
+
+20030125
+ + modified emx.src to correspond more closely to terminfo.src, added
+ emx-base to the latter -TD
+ + add configure option for FreeBSD sysmouse, --with-sysmouse, and
+ implement support for that in lib_mouse.c, lib_getch.c
+
+20030118
+ + revert 20030105 change to can_clear_with(), does not work for the
+ case where the update is made on cells which are blanks with
+ attributes, e.g., reverse.
+ + improve ifdef's to guard against redefinition of wchar_t and wint_t
+ in curses.h (report by Urs Jansen).
+
+20030111
+ + improve mvcur() by checking if it is safe to move when video
+ attributes are set (msgr), and if not, reset/restore attributes
+ within that function rather than doing it separately in the GoTo()
+ function in tty_update.c (suggested by Philippe Blain).
+ + add a message in run_tic.in to explain more clearly what does not
+ work when attempting to create a symbolic link for /usr/lib/terminfo
+ on OS/2 and other platforms with no symbolic links (report by John
+ Polterak).
+ + change several sed scripts to avoid using "\+" since it is not a BRE
+ (basic regular expression). One instance caused terminfo.5 to be
+ misformatted on FreeBSD (report by Kazuo Horikawa
+ <horikawa@FreeBSD.org> (see FreeBSD docs/46709)).
+ + correct misspelled 'wint_t' in curs_get_wch.3x (Michael Elkins).
+
+20030105
+ + improve description of terminfo operators, especially static/dynamic
+ variables (comments by Mark I Manning IV <mark4th@earthlink.net>).
+ + demonstrate use of FIELDTYPE by modifying test/ncurses 'r' test to
+ use the predefined TYPE_ALPHA field-type, and by defining a
+ specialized type for the middle initial/name.
+ + fix MKterminfo.sh, another workaround for POSIXLY_CORRECT misfeature
+ of sed 4.0
+ > patch by Philippe Blain:
+ + optimize can_clear_with() a little by testing first if the parameter
+ is indeed a "blank".
+ + simplify ClrBottom() a little by allowing it to use clr_eos to clear
+ sections as small as one line.
+ + improve ClrToEOL() by checking if clr_eos is available before trying
+ to use it.
+ + use tputs() rather than putp() in a few cases in tty_update.c since
+ the corresponding delays are proportional to the number of lines
+ affected: repeat_char, clr_eos, change_scroll_region.
+
+20021231
+ + rewrite of lib_acs.c conflicts with copying of SCREEN acs_map to/from
+ global acs_map[] array; removed the lines that did the copying.
+
+20021228
+ + change some overlooked tputs() calls in scrolling code to use putp()
+ (report by Philippe Blain).
+ + modify lib_getch.c to avoid recursion via wgetnstr() when the input
+ is not a tty and consequently mode-changes do not work (report by
+ <R.Chamberlin@querix.com>).
+ + rewrote lib_acs.c to allow PutAttrChar() to decide how to render
+ alternate-characters, i.e., to work with Linux console and UTF-8
+ locale.
+ + correct line/column reference in adjust_window(), needed to make
+ special windows such as curscr track properly when resizing (report
+ by Lucas Gonze <lgonze@panix.com>).
+ > patch by Philippe Blain:
+ + correct the value used for blank in ClrBottom() (broken in 20000708).
+ + correct an off-by-one in GoTo() parameter in _nc_scrolln().
+
+20021221
+ + change several tputs() calls in scrolling code to use putp(), to
+ enable padding which may be needed for some terminals (patch by
+ Philippe Blain).
+ + use '%' as sed substitute delimiter in run_tic script to avoid
+ problems with pathname delimiters such as ':' and '@' (report by John
+ Polterak).
+ + implement a workaround so that line-drawing works with screen's
+ crippled UTF-8 support (tested with 3.9.13). This only works with
+ the wide-character support (--enable-widec); the normal library will
+ simply suppress line-drawing when running in a UTF-8 locale in screen.
+
+20021214
+ + allow BUILD_CC and related configure script variables to be
+ overridden from the environment.
+ + make build-tools variables in ncurses/Makefile.in consistent with
+ the configure script variables (report by Maciej W Rozycki).
+ + modify ncurses/modules to allow
+ configure --disable-leaks --disable-ext-funcs
+ to build (report by Gary Samuelson).
+ + fix a few places in configure.in which lacked quotes (report by
+ Gary Samuelson <gary.samuelson@verizon.com>).
+ + correct handling of multibyte characters in waddch_literal() which
+ force wrapping because they are started too late on the line (report
+ by Sam Varshavchik).
+ + small fix for CF_GNAT_VERSION to ignore the help-message which
+ gnatmake adds to its version-message.
+ > Maciej W Rozycki <macro@ds2.pg.gda.pl>:
+ + use AC_CHECK_TOOL to get proper values for AR and LD for cross
+ compiling.
+ + use $cross_compiling variable in configure script rather than
+ comparing $host_alias and $target alias, since "host" is
+ traditionally misused in autoconf to refer to the target platform.
+ + change configure --help message to use "build" rather than "host"
+ when referring to the --with-build-XXX options.
+
+20021206
+ + modify CF_GNAT_VERSION to print gnatmake's version, and to allow for
+ possible gnat versions such as 3.2 (report by Chris Lingard
+ <chris@stockwith.co.uk>).
+ + modify #define's for CKILL and other default control characters in
+ tset to use the system's default values if they are defined.
+ + correct interchanged defaults for kill and interrupt characters
+ in tset, which caused it to report unnecessarily (Debian #171583).
+ + repair check for missing C++ compiler, which is broken in autoconf
+ 2.5x by hardcoding it to g++ (report by Martin Mokrejs).
+ + update config.guess, config.sub (2002-11-30)
+ + modify configure script to skip --with-shared, etc., when the
+ --with-libtool option is given, since they would be ignored anyway.
+ + fix to allow "configure --with-libtool --with-termlib" to build.
+ + modify configure script to show version number of libtool, to help
+ with bug reports. libtool still gets confused if the installed
+ ncurses libraries are old, since it ignores the -L options at some
+ point (tested with libtool 1.3.3 and 1.4.3).
+ + reorder configure script's updating of $CPPFLAGS and $CFLAGS to
+ prevent -I options in the user's environment from introducing
+ conflicts with the build -I options (may be related to reports by
+ Patrick Ash and George Goffe).
+ + rename test/define_key.c to test/demo_defkey.c, test/keyok.c to
+ test/demo_keyok.c to allow building these with libtool.
+
+20021123
+ + add example program test/define_key.c for define_key().
+ + add example program test/keyok.c for keyok().
+ + add example program test/ins_wide.c for wins_wch() and wins_wstr().
+ + modify wins_wch() and wins_wstr() to interpret tabs by using the
+ winsch() internal function.
+ + modify setcchar() to allow for wchar_t input strings that have
+ more than one spacing character.
+
+20021116
+ + fix a boundary check in lib_insch.c (patch by Philippe Blain).
+ + change type for *printw functions from NCURSES_CONST to const
+ (prompted by comment by Pedro Palhoto Matos <plpm@mega.ist.utl.pt>,
+ but really from a note on X/Open's website stating that either is
+ acceptable, and the latter will be used in a future revision).
+ + add xterm-1002, xterm-1003 terminfo entries to demonstrate changes in
+ lib_mouse.c (20021026) -TD
+ + add screen-bce, screen-s entries from screen 3.9.13 (report by
+ Adam Lazur <zal@debian.org>) -TD
+ + add mterm terminfo entries -TD
+
+20021109
+ + split-out useful fragments in terminfo for vt100 and vt220 numeric
+ keypad, i.e., vt100+keypad, vt100+pfkeys, vt100+fnkeys and
+ vt220+keypad. The last as embedded in various entries had ka3 and
+ kb2 interchanged (report/discussion with Leonard den Ottolander
+ <leonardjo@hetnet.nl>).
+ + add check in tic for keypads consistent with vt100 layout.
+ + improve checks in tic for color capabilities
+
+20021102
+ + check for missing/empty/illegal terminfo name in _nc_read_entry()
+ (report by Martin Mokrejs, where $TERM was set to an empty string).
+ + rewrote lib_insch.c, combining it with lib_insstr.c so both handle
+ tab and other control characters consistently (report by Philippe
+ Blain).
+ + remove an #undef for KEY_EVENT from curses.tail used in the
+ experimental NCURSES_WGETCH_EVENTS feature. The #undef confuses
+ dpkg's build script (Debian #165897).
+ + fix MKlib_gen.sh, working around the ironically named POSIXLY_CORRECT
+ feature of GNU sed 4.0 (reported by Ervin Nemeth <airwin@inf.bme.hu>).
+
+20021026
+ + implement logic in lib_mouse.c to handle position reports which are
+ generated when XFree86 xterm is initialized with private modes 1002
+ or 1003. These are returned to the application as the
+ REPORT_MOUSE_POSITION mask, which was not implemented. Tested both
+ with ncurses 'a' menu (prompted by discussion with Larry Riedel
+ <Larry@Riedel.org>).
+ + modify lib_mouse.c to look for "XM" terminfo string, which allows
+ one to override the escape sequence used to enable/disable mouse
+ mode. In particular this works for XFree86 xterm private modes
+ 1002 and 1003. If "XM" is missing (note that this is an extended
+ name), lib_mouse uses the conventional private mode 1000.
+ + correct NOT_LOCAL() macro in lib_mvcur.c to refer to screen_columns
+ where it used screen_lines (report by Philippe Blain).
+ + correct makefile rules for the case when both --with-libtool and
+ --with-gpm are given (report by Mr E_T <troll@logi.net.au>).
+ + add note to terminfo manpage regarding the differences between
+ setaf/setab and setf/setb capabilities (report by Pavel Roskin).
+
+20021019
+ + remove redundant initialization of TABSIZE in newterm(), since it is
+ already done in setupterm() (report by Philippe Blain).
+ + add test/inserts.c, to test winnstr() and winsch().
+ + replace 'sort' in dist.mk with script that sets locale to POSIX.
+ + update URLs in announce.html.in (patch by Frederic L W Meunier).
+ + remove glibc add-on files, which are no longer needed (report by
+ Frederic L W Meunier).
+
+20021012 5.3 release for upload to ftp.gnu.org
+ + modify ifdef's in etip.h.in to allow the etip.h header to compile
+ with gcc 3.2 (patch by Dimitar Zhekov <jimmy@is-vn.bg>).
+ + add logic to setupterm() to make it like initscr() and newterm(),
+ by checking for $NCURSES_TRACE environment variable and enabling
+ the debug trace in that case.
+ + modify setupterm() to ensure that it initializes the baudrate, for
+ applications such as tput (report by Frank Henigman).
+ + modify definition of bits used for command-line and library debug
+ traces to avoid overlap, using new definition TRACE_SHIFT to relate
+ the two.
+ + document tput's interpretation of parameterized strings according to
+ whether parameters are given, etc. (discussion with Robert De Bath).
+
+20021005 pre-release
+ + correct winnwstr() to account for non-character cells generated when
+ a double-width character is added (report by Michael Bienia
+ <michael@vorlon.ping.de>).
+ + modify _nc_viswbuf2n() to provide better results using wctomb().
+ + correct logic in _nc_varargs() which broke tracing of parameters for
+ formats such as "%.*s".
+ + correct scale factor in linux-c and linux-c-nc terminfo entries
+ (report Floyd Davidson).
+ + change tic -A option to -t, add the same option to infocmp for
+ consistency.
+ + correct "%c" implementation in lib_tparm.c, which did not map a null
+ character to a 128 (cf: 980620) (patch by Frank Henigman
+ <fjhenigman@mud.cgl.uwaterloo.ca>).
+
+20020928 pre-release
+ + modify MKkey_defs.sh to check for POSIX sort -k option, use that if
+ it is found, to accommodate newer utility which dropped the
+ compatibility support for +number options (reported by Andrey A
+ Chernov).
+ + modify linux terminfo entry to use color palette feature from
+ linux-c-nc entry (comments by Tomasz Wasiak and Floyd Davidson).
+ + restore original color definitions in endwin() if init_color() was
+ used, and resume those colors on the next doupdate() or refresh()
+ (report by Tomasz Wasiak <tjwasiak@komputom.com.pl>).
+ + improve debug-traces by modifying MKlib_gen.sh to generate calls
+ to returnBool() and returnAttr().
+ + add/use _nc_visbufn() and _nc_viswbufn() to limit the debug trace
+ of waddnstr() and similar functions to match the parameters as used.
+ + add/use _nc_retrace_bool() and _nc_retrace_unsigned().
+ + correct type used by _nc_retrace_chtype().
+ + add debug traces to some functions in lib_mouse.c
+ + modify lib_addch.c to handle non-spacing characters.
+ + correct parameter of RemAttr() in lib_bkgd.c, which caused the c++
+ demo's boxes to lose the A_ALTCHARSET flag (broken in 20020629).
+ + correct width computed in _tracedump(), which did not account for
+ the attributes (broken in 20010602).
+ + modify test/tracemunch to replace addresses for windows other than
+ curscr, newscr and stdscr with window0, window1, etc.
+
+20020921 pre-release
+ + redid fix for edit_man.sed path.
+ + workaround for Cygwin bug which makes subprocess writes to stdout
+ result in core dump.
+ + documented getbegx(), etc.
+ + minor fixes to configure script to use '%' consistently as a sed
+ delimiter rather than '@'.
+ > patch by Philippe Blain:
+ + add check in lib_overlay.c to ensure that the windows to be merged
+ actually overlap, and in copywin(), limit the area to be touched
+ to the lines given for the destination window.
+
+20020914 pre-release
+ + modified curses.h so that if the wide-character version is installed
+ overwriting /usr/include/curses.h, and if it relied on libutf8.h,
+ then applications that use that header for wide-character support
+ must define HAVE_LIBUTF8_H.
+ + modify putwin(), getwin() and dupwin() to allow them to operate on
+ pads (request by Philippe Blain).
+ + correct attribute-merging in wborder(), broken in 20020216 (report
+ by Tomasz Wasiak <tjwasiak@grubasek.komputom.com.pl>).
+ > patch by Philippe Blain:
+ + corrected pop-counts in tparam_internal() to '!' and '~' cases.
+ + use sizeof(NCURSES_CH_T) in one place that used sizeof(chtype).
+ + remove some unused variables from mvcur test-driver.
+
+20020907 pre-release
+ + change configure script to allow install of widec-character
+ (ncursesw) headers to overwrite normal (ncurses) headers, since the
+ latter is a compatible subset of the former.
+ + fix path of edit_man.sed in configure script, needed to regenerate
+ html manpages on Debian.
+ + fix mismatched enums in vsscanf.c, which caused warning on Solaris.
+ + update README.emx to reflect current patch used for autoconf.
+ + change web- and ftp-site to invisible-island.net
+ > patch by Philippe Blain:
+ + change case for 'P' in tparam_internal() to indicate that it pops
+ a variable from the stack.
+ + correct sense of precision and width in parse_format(), to avoid
+ confusion.
+ + modify lib_tparm.c, absorb really_get_space() into get_space().
+ + modify getwin() and dupwin() to copy the _notimeout, _idlok and
+ _idcok window fields.
+ + better fix for _nc_set_type(), using typeMalloc().
+
+20020901 pre-release
+ + change minor version to 3, i.e., ncurses 5.3
+ + update config.guess, config.sub
+ + retest build with each configure option; minor ifdef fixes.
+ + make keyname() return a null pointer rather than "UNKNOWN STRING" to
+ match XSI.
+ + modify handling of wide line-drawing character functions to use the
+ normal line-drawing characters when not in UTF-8 locale.
+ + add check/fix to comp_parse.c to suppress warning about missing acsc
+ string. This happens in configurations where raw termcap information
+ is processed; tic already does this and other checks.
+ + modify tic's check for ich/ich1 versus rmir/smir to only warn about
+ ich1, to match xterm patch #70 notes.
+ + moved information for ripped-off lines into SCREEN struct to allow
+ use in resizeterm().
+ + add experimental wgetch_events(), ifdef'd with NCURSES_WGETCH_EVENTS
+ (adapted from patch by Ilya Zakharevich - see ncurses/README.IZ).
+ + amend check in kgetch() from 20020824 to look only for function-keys,
+ otherwise escape sequences are not resolved properly.
+ > patch by Philippe Blain:
+ + removed redundant assignment to SP->_checkfd from newterm().
+ + check return-value of setupterm() in restartterm().
+ + use sizeof(NCURSES_CH_T) in a few places that used sizeof(chtype).
+ + prevent dupwin() from duplicating a pad.
+ + prevent putwin() from writing a pad.
+ + use typeRealloc() or typeMalloc() in preference to direct calls on
+ _nc_doalloc().
+
+20020824
+ + add a check in kgetch() for cooked characters in the fifo to avoid
+ calling fifo_push() when a KEY_RESIZE is available (report/analysis
+ by Sam Varshavchik <mrsam@courier-mta.com>).
+ + fix an overlooked case for bugzilla #68199 (Philippe Blain).
+ + ensure clearerr() is called before using ferror() e.g., in
+ lib_screen.c (report by Philippe Blain).
+
+20020817
+ + modify lib_screen.c and lib_newwin.c to maintain the SCREEN-specific
+ pointers for curscr/stdscr/newscr when scr_save() and scr_restore()
+ modify the global curscr/stdscr/newscr variables. Fixes Redhat
+ bugzilla #68199 dated 2002-07-07.
+ + add checks for null pointer in calls to tparm() and tgoto() based on
+ FreeBSD bug report. If ncurses were built with termcap support, and
+ the first call to tgoto() were a zero-length string, the result would
+ be a null pointer, which was not handled properly.
+ + correct a typo in terminfo.head, which gave the octal code for colon
+ rather than comma.
+ + remove the "tic -u" option from 20020810, since it did not account
+ for nested "tc=" clauses, and when that was addressed, was still
+ unsatisfactory.
+
+20020810
+ + add tic -A option to suppress capabilities which are commented out
+ when translating to termcap.
+ + add tic -u option to provide older behavior of "tc=" clauses.
+ + modified tic to expand all but the final "tc=" clause in a termcap
+ entry, to accommodate termcap libraries which do not handle multiple
+ tc clauses.
+ + correct typo in curs_inopts.3x regarding CS8/CS7 usage (report by
+ Philippe Blain).
+ + remove a couple of redundant uses of A_ATTRIBUTES in expressions
+ using AttrOf(), which already incorporates that mask (report by
+ Philippe Blain).
+ + document TABSIZE variable.
+ + add NCURSES_ASSUMED_COLORS environment variable, to allow users to
+ override compiled-in default black-on-white assumption used in
+ assume_default_colors().
+ + correct an off-by-one comparison against max_colors in COLORFGBG
+ logic.
+ + correct a use of uninitialized memory found by valgrind (reported by
+ Olaf Buddenhagen <olafBuddenhagen@web.de>).
+ + modified wresize() to ensure that a failed realloc will not corrupt
+ the window structure, and to make subwindows fit within the resized
+ window (completes Debian #87678, #101699)
+
+20020803
+ + fix an off-by-one in lib_pad.c check for limits of pad (patch by
+ Philippe Blain).
+ + revise logic for BeOS in lib_twait.c altered in 20011013 to restore
+ logic used by lib_getch.c's support for GPM or EMX mouse (report by
+ Philippe Blain)
+ + remove NCURSES_CONST from several prototypes in curses.wide, to make
+ the --enable-const --enable-widec configure options to work together
+ (report by George Goffe <grgoffe@yahoo.com>).
+
+20020727
+ + finish no-leak checking in cardfile.c, using this for testing changes
+ to resizeterm().
+ + simplify _nc_freeall() using delscreen().
+
+20020720
+ + check error-return from _nc_set_tty_mode() in _nc_initscr() and
+ reset_prog_mode() (report/patch by Philippe Blain).
+ + regenerate configure using patch for autoconf 2.52, to address
+ problem with identifying C++ bool type.
+ + correct/improve logic to produce an exit status for errors in tput,
+ which did not exit with an error when told to put a string not in the
+ current terminfo entry (report by David Gomez <david@pleyades.net>).
+ + modify configure script AC_OUTPUT() call to work around defect in
+ autoconf 2.52 which adds an ifdef'd include to the generated
+ configure definitions.
+ + remove fstat() check from scr_init(), which also fixes a missing
+ include for <sys/stat.h> from 20020713 (reported by David Ellement,
+ fix suggested by Philippe Blain).
+ + update curs_scanw.3x manpage to note that XSI curses differs from
+ SVr4 curses: return-values are incompatible.
+ + correct several prototypes in manpages which used const
+ inconsistently with the curses.h file, and removed spurious const's
+ in a few places from curses.h, e.g., for wbkgd() (report by Glenn
+ Maynard <glenn@zewt.org>).
+ + change internal type used by tparm() to long, to work with LP64 model.
+ + modify nc_alloc.h to allow building with g++, for testing.
+
+20020713
+ + add resize-handling to cardfile.c test program.
+ + altered resizeterm() to avoid having it fail when a child window
+ cannot be resized because it would be larger than its parent. (More
+ work must be done on this, but it works well enough to integrate).
+ + improve a limit-check in lib_refresh.c
+ + remove check in lib_screen.c relating dumptime to file's modification
+ times, since that would not necessarily work for remotely mounted
+ filesystems.
+ + modify lrtest to simplify debugging changes to resizeterm, e.g.,
+ t/T commands to enable/disable tracing.
+ + updated status of multibyte support in TO-DO.
+ + update contact info in source-files (patch by Juergen Pfeifer).
+
+20020706
+ + add Caps.hpux11, as an example.
+ + modify version_filter(), used to implement -R option for tic and
+ infocmp, to use computed array offsets based on the Caps.* file which
+ is actually configured, rather than constants which correspond to
+ the Caps file.
+ + reorganized lib_raw.c to avoid updating SP and cur_term state if the
+ functions fail (reported by Philippe Blain).
+ + add -Wundef to gcc warnings, adjust a few ifdef's to accommodate gcc.
+
+20020629
+ + correct parameters to setcchar() in ncurses.c (cf: 20020406).
+ + set locale in most test programs (view.c and ncurses.c were the
+ only ones).
+ + add configure option --with-build-cppflags (report by Maksim A
+ Nikulin <M.A.Nikulin@inp.nsk.su>).
+ + correct a typo in wide-character logic for lib_bkgnd.c (Philippe
+ Blain).
+ + modify lib_wacs.c to not cancel the acsc, smacs, rmacs strings when
+ in UTF-8 locale. Wide-character functions use Unicode values, while
+ narrow-character functions use the terminfo data.
+ + fix a couple of places in Ada95/samples which did not compile with
+ gnat 3.14
+ + modify mkinstalldirs so the DOS-pathname case is locale-independent.
+ + fix locale problem in MKlib_gen.sh by forcing related variables to
+ POSIX (C), using same approach as autoconf (set variables only if
+ they were set before). Update MKterminfo.sh and MKtermsort.sh to
+ match.
+
+20020622
+ + add charset to generated html.
+ + add mvterm entry, adapted from a FreeBSD bug-report by Daniel Rudy
+ <dcrudy@pacbell.net> -TD
+ + add rxvt-16color, ibm+16color entries -TD
+ + modify check in --disable-overwrite option so that it is used by
+ default unless the --prefix/$prefix value is not /usr, in attempt to
+ work around packagers, e.g., for Sun's freeware, who do not read the
+ INSTALL notes.
20020615
+ modify wgetch() to allow returning ungetch'd KEY_RESIZE as a function
@@ -90,7 +2485,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
can be linked.
20020413
- + add manpages: curs_get_wstr.3x, curs_in_wchstr.3x
+ + add manpages: curs_get_wstr.3x, curs_in_wchstr.3x
+ implement wgetn_wstr().
+ implement win_wchnstr().
+ remove redefinition of unget_wch() in lib_gen.c (reported by
@@ -98,7 +2493,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
20020406
+ modified several of the test programs to allow them to compile with
- vendor curses implementations (Solaris, AIX).
+ vendor curses implementations, e.g., Solaris, AIX -TD
20020323
+ modified test/configure to allow configuring against ncursesw.
@@ -130,7 +2525,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ implement key_name().
+ remove const's in lib_box.c incorrectly leftover after splitting off
lib_box_set.c
- + update llib-lncurses, llib-ncursesw, fix configure script related to these.
+ + update llib-lncurses, llib-ncursesw, fix configure script related to
+ these.
20020218
+ remove quotes on "SYNOPSIS" in man/curs_box_set.3x, which resulted
@@ -152,7 +2548,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
options.
> patch by Sven Verdoolaege (report by Gerhard Haering
<haering_linux@gmx.de>):
- + correct typos in definitions of several wide-character macros:
+ + correct typos in definitions of several wide-character macros:
waddwstr, wgetbkgrnd, mvaddwstr, mvwadd_wchnstr, mvwadd_wchnstr,
mvwaddwstr.
+ pass $(CPPFLAGS) to MKlib_gen.sh, thereby fixing a missing definition
@@ -199,7 +2595,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
to rename manpages, broken in 20010324 fix for Debian #89939 (Debian
#78866).
+ remove -L$(libdir) from linker flags, probably not needed any more
- since HPUX is handled properly (reported by NIIBE Yutaka
+ since HPUX is handled properly (reported by Niibe Yutaka
<gniibe@m17n.org>).
+ add configure check for mbstate_t, needed for wide-character
configuration. On some platforms we must include <wchar.h> to
@@ -314,7 +2710,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
in the C++ runtime.
+ modify the build to name dynamic libraries according to the
convention used on OS X and Darwin. Rather than something like
- libncurses.dylib.5.2, Darwin would name it libncurses. 5.dylib.
+ libncurses.dylib.5.2, Darwin would name it libncurses. 5.dylib.
There are a few additional minor fixes, such as setting the library
version and compatibility version numbers (patch by Jason Evans
<jevans@apple.com>).
@@ -399,7 +2795,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
20011001
+ simpler fix for signal_name(), to replace the one overlooked in
20010929 (reported by Larry Virden).
-
+
20010929
+ add -i option to view.c, to test ncurses' check for non-default
signal handler for SIGINT, etc.
@@ -732,7 +3128,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ add a missing pathname for ncurses_dll.h, needed when building in
a directory outside the source tree (patch by Sven Verdoolaege
<skimo@kotnet.org>).
- > fix 2 bugs in test/bs.c (patch by Erik Sigra <sigra@home.se>):
+ > fix 2 bugs in test/bs.c Erik Sigra <sigra@home.se>:
+ no ships were ever placed in the last row or in the last column.
This made the game very easy to win, because you never had to waste
any shots there, but the computer did.
@@ -746,7 +3142,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ modify screen's terminfo entry to match the khome/kend in screen
3.09.08 (Debian bug report #92215).
+ correct a memory leak in forms library (report by Stefan Vogtner
- <stefan@vogtner.de>, patch by Juergen Pfeifer).
+ <stefan@vogtner.de>) (patch by Juergen Pfeifer).
20010324
+ change symbols used to guard against repeated includes to begin
@@ -861,7 +3257,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ add ncurses_dll.h and related definitions to support generating DLL's
with cygwin (adapted from a patch by Charles Wilson
<cwilson@ece.gatech.edu>, changed NCURSES_EXPORT macro to make it
- work with 'indent').
+ work with 'indent') -TD
20001202
+ correct prototypes for some functions in curs_termcap.3x, matching
@@ -991,12 +3387,12 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ correct logic for 'reverse' variable in lib_vidattr.c, which was
setting it true without checking if newmode had A_REVERSE set, e.g.,
using $TERM=ansi on OS/2 EMX (see 20000917).
- > patch by Todd Miller:
+ > patch by Todd C Miller:
+ add a few missing use_terminfo_vars() and fixes up _nc_tgetent().
Previously, _nc_cgetset() would still get called on cp so the
simplest thing is to set cp to NULL if !use_terminfo_vars().
+ added checks for an empty $HOME environment variable.
- > patches by Ilya Zakharevich for OS/2 EMX:
+ > patches for OS/2 EMX (Ilya Zakharevich):
+ modify convert_configure.pl to support INSTALL. Change compiler
options in that script to use multithreading, needed for the mouse.
+ modify OS/2 mouse support, retrying as a 2-button mouse if code fails
@@ -1053,9 +3449,9 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
20000923
+ modify rs2 capability in xterm-r6 and similar where cursor
- save/restore bracketed the sequence for resetting video attributes.
- The cursor restore would undo that (from a NetBSD bug report by John
- Hawkinson <jhawk@MIT.EDU>).
+ save/restore bracketed the sequence for resetting video attributes.
+ The cursor restore would undo that (report by John Hawkinson
+ <jhawk@MIT.EDU> (see NetBSD misc/11052)).
+ using parameter check added to tic, corrected 27 typos in
terminfo.src -TD
+ modify tic to verify that its inputs are really files, in case
@@ -1344,8 +3740,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
the subwindow's background color cover the subwindow.
+ modify configure script so AC_MSG_ERROR is temporarily defined to a
warning in AC_PROG_CXX to make it recover from a missing C++ compiler
- without requiring user to add --without-cxx option (from comment by
- Akim Demaille <akim@epita.fr> to autoconf mailing list).
+ without requiring user to add --without-cxx option (adapted from
+ comment by Akim Demaille <akim@epita.fr> to autoconf mailing list).
+ modify headers.sh to avoid creating temporary files in the build
directory when installing headers (reported by Sergei Pokrovsky
<pok@nbsp.nsk.su>)
@@ -1359,8 +3755,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
if -fPIC is supported by gcc rather than -fpic. The former option
allows larger symbol tables.
+ update config.guess and config.sub (patches by
- Kevin Buettner <kev@primenet.com> for elf64_ia64
- Bernd Kuemmerlen <bkuemmer@mevis.de> and MacOS X).
+ Kevin Buettner <kev@primenet.com> (for elf64_ia64),
+ Bernd Kuemmerlen <bkuemmer@mevis.de> (for MacOS X)).
+ add warning for 'tic -cv' about use of '^?' in terminfo source, which
is an extension.
@@ -1388,13 +3784,13 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
LANG contain the string "UTF-8", this driver will be used to
translate the output to UTF-8. This works with XFree86 xterm.
+ modify configure script to allow building shared libraries on BeOS
- (from a patch by by Valeriy E Ushakov).
+ (from a patch by Valeriy E Ushakov).
+ modify lib_addch.c to allow repeated update to the lower-right
corner, rather than displaying only the first character written until
the cursor is moved. Recent versions of SVr4 curses can update the
lower-right corner, and behave this way (reported by Neil Zanella).
+ add a limit-check in _nc_do_color(), to avoid using invalid color
- pair value (from bug report by Brendan O'Dea <bod@compusol.com.au>).
+ pair value (report by Brendan O'Dea <bod@compusol.com.au>).
20000513
+ the tack program knows how to use smcup and rmcup but the "show caps
@@ -1448,10 +3844,10 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ corrections/updates for some IBM terminfo entries -TD
+ modify _nc_screen_wrap() so that when exiting curses mode with
non-default colors, the last line on the screen will be cleared to
- the screen's default colors (request by Alexander Lukyanov).
+ the screen's default colors (request by Alexander V Lukyanov).
+ modify ncurses.c 'r' example to set nonl(), allowing control/M to be
read for demonstrating the REQ_NEW_LINE operation (prompted by a
- question by Tony L Keith" <tlkeith@keithconsulting.com>).
+ question by Tony L Keith <tlkeith@keithconsulting.com>).
+ modify ncurses.c 'r' example of field_info() to work on Solaris 2.7,
documented extension of ncurses which allows a zero pointer.
+ modify fmt_complex() to avoid buffer overflow in case of excess
@@ -1486,7 +3882,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ improve logic in _nc_do_color() implementing assume_default_colors()
by passing in previous color pair info to eliminate redundant call to
set_original_colors(). (Part of this is from a patch by Alexander
- Lukyanov).
+ V Lukyanov).
+ modify warning in _nc_trans_string() about a possibly too-long string
to do this once only rather than for each character past the
threshold (600). Change interface of _nc_trans_string() to allow
@@ -1505,7 +3901,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
20000318
+ revert part of the vt220 change (request by Todd C Miller).
- + add ansi-* terminfo entries from Eric's version.
+ + add ansi-* terminfo entries from ESR's version.
+ add -a option to tic and infocmp, which retains commented-out
capabilities during source translation/comparison, e.g., captoinfo
and infotocap.
@@ -1534,9 +3930,9 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
keeping the existing format as the default, though not retaining the
previous behavior that made the -F option compare each entry to
itself.
- + adapted patch by Eric Raymond to make infocmp -F less verbose
+ + adapted patch by ESR to make infocmp -F less verbose -TD
(the submitted patch was unusable because it did not compile
- properly):
+ properly)
+ modify write_entry.c to ensure that absent or cancelled booleans
are written as FALSE, for consistency with infocmp which now
assumes this. Note that for the small-core configuration, tic
@@ -1602,8 +3998,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
20000219
+ store default-color code consistently as C_MASK, even if given as
- -1 for convenience (adapted from patches by Alexander Lukyanov).
- > patches by Alexander Lukyanov:
+ -1 for convenience (adapted from patches by Alexander V Lukyanov).
+ > patches by Alexander V Lukyanov:
+ change can_clear_with() macro to accommodate logic for
assume_default_colors(), making most of the FILL_BCE logic
unnecessary. Made can_clear_with() an inline function to make it
@@ -1612,7 +4008,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
20000212
+ corrected form of recent copyright dates.
+ minor corrections to xterm-xf86-v333 terminfo entry -TD
- > patches by Alexander Lukyanov:
+ > patches by Alexander V Lukyanov:
+ reworded dft_fgbg.3x to avoid assuming that the terminal's default
colors are white on black.
+ fix initialization of tstLine so that it is filled with current blank
@@ -1635,7 +4031,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ correct CF_MATH_LIB parameter, must be sin(x), not sqrt(x).
20000122
- + resync CF_CHECK_ERRNO and CF_LIB_PREFIX macros from tin and xterm.
+ + resync CF_CHECK_ERRNO and CF_LIB_PREFIX macros from tin and xterm -TD
+ modify CF_MATH_LIB configure macro to parameterize the test function
used, for reuse in dialog and similar packages.
+ correct tests for file-descriptors in OS/2 EMX mouse support. A
@@ -1688,12 +4084,12 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
found an incomplete entry such as "dumb" because it did not
initialize its buffer for _nc_read_file_entry().
+ use -fPIC rather than -fpic for shared libraries on Linux, not
- needed for i386 but some ports (from Debian diffs for 5.0).
+ needed for i386 but some ports (from Debian diffs for 5.0) -TD
+ use explicit VALID_NUMERIC() checks in a few places that had been
overlooked, and add a check to ensure that init_tabs is nonzero,
to avoid divide-by-zero (reported by Todd C Miller).
+ minor fix for CF_ANSI_CC_CHECK configure macro, for HPUX 10.x (from
- tin).
+ tin) -TD
19991218
+ reorder tests during mouse initialization to allow for gpm to run in
@@ -1863,10 +4259,10 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
991002 pre-release
+ minor fixes for _nc_msec_cost(), color_content(), pair_content(),
_nc_freewin(), ClrBottom() and onscreen_mvcur() (analysis by Philippe
- Blain, comments by Alexander Lukyanov).
+ Blain, comments by Alexander V Lukyanov).
+ simplify definition of PANEL and eliminate internal functions
_nc_calculate_obscure(), _nc_free_obscure() and _nc_override(),
- (patch by Juergen Pfeifer, based on analysis by Philippe Blain
+ (patch by Juergen Pfeifer, analysis by Philippe Blain
<bledp@voila.fr>)).
+ change renaming of dft_fgbg.3x to use_default_colors.3ncurses in
man_db.renames, since Debian is not concerned with 14-character
@@ -1905,8 +4301,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ add top-level uninstall.data and uninstall.man makefile rules.
+ correct logic of CF_LINK_FUNCS configure script, from BeOS changes so
that hard-links work on Unix again.
- + change default value of cf_cv_builtin_bool to 1 as suggested by
- Jeremy Buhler, making it less likely that a conflicting declaration
+ + change default value of cf_cv_builtin_bool to 1 (suggested by
+ Jeremy Buhler), making it less likely that a conflicting declaration
of bool will be seen when compiling with C++.
990911 pre-release
@@ -1929,9 +4325,9 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
for libg++, since qt uses the same filename incompatibly.
+ correct logic of lib_termcap.c tgetstr function, which did not copy
the result to the buffer parameter. Testing shows Solaris does
- update this, though of course tgetent's buffer is untouched (from
- mpc.lists.freebsd.current newsgroup item by Peter Edwards
- <peter.edwards@ireland.com>).
+ update this, though of course tgetent's buffer is untouched (reported
+ in Peter Edwards <peter.edwards@ireland.com> in
+ mpc.lists.freebsd.current newsgroup.
+ corrected beterm terminfo entry, which lists some capabilities which
are not actually provided by the BeOS Terminal.
+ add special logic to replace select() calls on BeOS, whose select()
@@ -2064,10 +4460,10 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ fix some compiler warnings in tack.
+ add a check for predefined bool type in CC, based on report that
BeOS predefines a bool type.
- + correct logic for infocmp -e option (i.e., the configure
- --with-fallbacks option), which I'd not updated when implementing
- extended names (cf: 990301). The new implementation adds a -E
- option to infocmp.
+ + correct logic for infocmp -e option, i.e., the configure
+ --with-fallbacks option, which I'd not updated when implementing
+ extended names (cf: 990301). The new implementation adds a "-E"
+ option to infocmp -TD
> patch by Juergen Pfeifer:
+ introduce the private type Curses_Bool in the Ada95 binding
implementation. This is to clearly represent the use of "bool" also
@@ -2096,8 +4492,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ add a null-pointer check for SP in lib_vidattr.c to logic that checks
for magic cookies.
+ improve fallback declaration of 'bool' when the --without-cxx option
- is given, by using a 'char' on i386 and related hosts (from
- discussion with Alexander Lukyanov).
+ is given, by using a 'char' on i386 and related hosts (prompted by
+ discussion with Alexander V Lukyanov).
990605 pre-release
+ include time.h in lib_napms.c if nanosleep is used (patch by
@@ -2165,7 +4561,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ add sigismember() to base/sigaction.c compatibility to link on NeXT
(reported by Francisco A. Tomei Torres).
+ further refinements to inequality in hashmap.c to cover a case with
- ^U in nvi (patch by Alexander Lukyanov).
+ ^U in nvi (patch by Alexander V Lukyanov).
990316 pre-release
+ add fallback definition for getcwd, to link on NeXT.
@@ -2173,12 +4569,12 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
(reported by Francisco A. Tomei Torres).
+ change inequality in hashmap.c which checks the distance traveled by
a chunk so that ^D command in nvi (scrolls 1/2 screen) will use
- scrolling logic (patch by Alexander Lukyanov, reported by Jeffrey
+ scrolling logic (patch by Alexander V Lukyanov, reported by Jeffrey
C Honig).
990314 pre-release
+ modify lib_color.c to handle a special case where the curscr
- attributes have been made obsolete (patch by Alexander Lukyanov).
+ attributes have been made obsolete (patch by Alexander V Lukyanov).
+ update BSD/OS console terminfo entries to use klone+sgr and
klone+color (patch by Jeffrey C Honig).
+ update glibc addon configure script for extended capabilities.
@@ -2190,7 +4586,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ correct typos in linux-c initc string - TD
+ add 'crt' terminfo entry, update xterm-xfree86 entry - TD
+ remove a spurious argument to tparm() in lib_sklrefr.c (patch by
- Alexander Lukyanov).
+ Alexander V Lukyanov).
990307 pre-release
+ back-out change to wgetch because it causes a problem with ^Z
@@ -2231,7 +4627,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ modify define_key() to allow multiple strings to be bound to the
same keycode.
+ correct logic error in _nc_remove_string, from 990220.
- > patch by Juergen Pfeifer, for Ada95 binding:
+ > patch for Ada95 binding (Juergen Pfeifer):
+ regenerate some of the html documentation
+ minor cleanup in terminal_interface-curses.adb
@@ -2252,8 +4648,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
comp_parse.c into the tic program.
+ add/use _nc_trace_tries() to show the function keys that will be
recognized.
- + rename init_acs to _nc_init_acs (request by Alexander Lukyanov).
- > patch by Juergen Pfeifer, for Ada95 binding:
+ + rename init_acs to _nc_init_acs (request by Alexander V Lukyanov).
+ > patch for Ada95 binding (Juergen Pfeifer):
+ remove all the *_adabind.c from ncurses, menu and form projects.
Those little helper routines have all been implemented in Ada and are
no longer required.
@@ -2280,7 +4676,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
in smcup/rmcup. This affects only scrolling optimization, to fix a
problem reported by several people with xterm's alternate screen,
though the problem is more general.
- > patch by Juergen Pfeifer, for Ada95 binding:
+ > patch for Ada95 binding (Juergen Pfeifer):
+ removed all pragma Preelaborate() stuff, because the just released
gnat-3.11p complains on some constructs.
+ fixed some upper/lower case notations because gnat-3.11p found
@@ -2291,17 +4687,17 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
990130
+ cache last result from _nc_baudrate, for performance (suggested by
- Alexander Lukyanov).
+ Alexander V Lukyanov).
+ modify ClrUpdate() function to workaround a problem in nvi, which
uses redrawwin in SIGTSTP handling. Jeffrey C Honig reported that
ncurses repainted the screen with nulls before resuming normal
- operation (patch by Alexander Lukyanov).
+ operation (patch by Alexander V Lukyanov).
+ generalize is_xterm() function a little by letting xterm/rxvt/kterm
be any substring rather than the prefix.
+ modify lib_data.c to initialize SP. Some linkers, e.g., IBM's, will
not link a module if the only symbols exported from the module are
- uninitialized ones (patch by Ilya Zakharevich, who says that he has
- seen messages claiming this behaviour conforms to the standard.)
+ uninitialized ones (patch by Ilya Zakharevich). Ilya says that he
+ has seen messages claiming this behavior conforms to the standard.)
+ move call on _nc_signal_handler past _nc_initscr, to avoid a small
window where Nttyb hasn't yet been filled (reported by Klaus Weide).
+ modify lib_tstp.c to block SIGTTOU when handling SIGTSTP, fixes a
@@ -2350,7 +4746,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ reviewed/corrected macros in curses.h as per XSI document.
+ provide support for termcap PC variable by copying it from terminfo
data and using it as the padding character in tputs (reported by
- Alexander Lukyanov).
+ Alexander V Lukyanov).
+ corrected iris-ansi and iris-ansi-ap terminfo entries for kent and
kf9-kf12 capabilities, as well as adding kcbt.
+ document the mouse handling mechanism in menu_driver and make a small
@@ -2369,7 +4765,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
990102
+ disable scroll hints when hashmap is enabled (patch by Alexander
- Lukyanov).
+ V Lukyanov).
+ move logic for tic's verify of -e option versus -I and -C so that the
terminfo data is not processed if we cannot handle -e (reported by
Steven Schwartz <steves@unitrends.com>.
@@ -2380,8 +4776,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
set ospeed, the library behaves as before, except that _nc_timed_wait
is no longer used, or needed, since ospeed always has a value. But
the application can modify ospeed to adjust the output of padding
- characters (from a bug report for screen 3.7.6 and email from Michael
- Schroeder <Michael.Schroeder@informatik.uni-erlangen.de>).
+ characters (prompted by a bug report for screen 3.7.6 and email from
+ Michael Schroeder <Michael.Schroeder@informatik.uni-erlangen.de>).
+ removed some unused ifdef's as part of Alexander's restructuring.
+ reviewed/updated curses.h, term.h against X/Open Curses Issue 4
Version 2. This includes making some parameters NCURSES_CONST
@@ -2406,8 +4802,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
981219
+ modify _nc_set_writedir() to set a flag in _nc_tic_dir() to prevent
it from changing the terminfo directory after chdir'ing to it.
- Otherwise, a relative path in $TERMINFO would confuse tic (from a
- Debian bug report).
+ Otherwise, a relative path in $TERMINFO would confuse tic (prompted
+ by a Debian bug report).
+ correct/update ncsa terminfo entry (report by Larry Virden).
+ update xterm-xfree86 terminfo to current (patch 90), smcur/rmcur
changes
@@ -2494,9 +4890,9 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
981114
+ modify install-script for manpages to skip over .orig and .rej files
(request by Larry Virden).
- > patches/discussion by Alexander Lukyanov:
+ > patches/discussion by Alexander V Lukyanov:
+ move base-library sources into ncurses/base and tty (serial terminal)
- sources into ncurses/tty, as part of Alexander Lukyanov's proposed
+ sources into ncurses/tty, as part of Alexander V Lukyanov's proposed
changes to ncurses library.
+ copy _tracemouse() into ncurses.c so that lib_tracemse.c need not
be linked into the normal ncurses library.
@@ -2512,8 +4908,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ ifdef'd out lib_freeall.c when not configured.
+ rename _tracebits() to _nc_tracebits().
+ move terminfo-library sources into ncurses/tinfo, and trace-support
- functions into ncurses/trace as part of Alexander Lukyanov's proposed
- changes to ncurses library.
+ functions into ncurses/trace as part of Alexander V Lukyanov's
+ proposed changes to ncurses library.
+ modify generated term.h to always specify its own definitions for
HAVE_TERMIOS_H, etc., to guard against inclusion by programs with
broken configure scripts.
@@ -2639,7 +5035,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ add xtermm and xtermc terminfo entries.
> from esr's terminfo version:
+ Added Francesco Potorti's tuned Wyse 99 entries.
- + dtterm enacs correction from Alexander V Lukyanov.
+ + dtterm enacs (from Alexander V Lukyanov).
+ Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version.
980822
@@ -2825,9 +5221,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ put -L$(libdir) first when linking programs, except for HP-UX.
+ modify comp_scan.c to handle SVr4 terminfo description for att477,
which contains a colon in the description field.
- + modify configure script to support SCO osr5.0.5 shared libraries
- (from comp.unix.sco.programmer newsgroup item by Mike Hopkirk
- <hops@sco.com>).
+ + modify configure script to support SCO osr5.0.5 shared libraries,
+ from comp.unix.sco.programmer newsgroup item (Mike Hopkirk).
+ eliminate extra GoTo call in lib_doupdate.c (patch by Alexander V.
Lukyanov).
+ minor adjustments of const/NCURSES_CONST from IRIX compile.
@@ -2915,7 +5310,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
980321
+ revise configure macro CF_SPEED_TYPE so that termcap.h has speed_t
declared (from Adam J. Richter <adam@yggdrasil.com>)
- + remove spurious curs_set() call from leaveok() (J.T.Conklin).
+ + remove spurious curs_set() call from leaveok() (J T Conklin).
+ corrected handling leaveok() in doupdate() (patch by Alexander V.
Lukyanov).
+ improved version of wredrawln (patch by Alexander V. Lukyanov).
@@ -2946,7 +5341,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ modify some man-pages so no '.' or '..' falls between TH and SH
macros, to accommodate man_db program (reported by Ian T. Zimmerman
<itz@rahul.net>).
- + terminfo.src 10.2.1 from Eric's webpage.
+ + terminfo.src 10.2.1 downloaded from ESR's webpage (ESR).
> several changes by Juergen Pfeifer:
+ add copyright notices (and rcs id's) on remaining man-pages.
+ corrected prototypes for slk_* functions, using chtype rather than
@@ -2969,7 +5364,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
980302 4.2 release for upload to prep.ai.mit.edu
+ correct Florian's email address in ncurses-intro.html
- + terminfo.src 10.2.0 from Eric.
+ + terminfo.src 10.2.0 (ESR).
980228 pre-release
+ add linux-koi8r replace linux-koi8, which is not KOI8 (patch by
@@ -3010,8 +5405,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ modify Makefile.glibc so that $(objpfx) is defined (H.J.Lu).
+ ifdef-out true-return from _nc_mouse_inline() which depends on
merge of QNX patch (pending 4.2 release).
- > patch by J.T.Conklin, to split off seldom-used modules in ncurses
- (reduces size by up to 2.6kb):
+ > patch to split off seldom-used modules in ncurses (J T Conklin):
+ This reduces size by up to 2.6kb.
+ move functionality of _nc_usleep into napms, add configuration case
for nanosleep().
+ moved wchgat() from lib_addch.c to lib_chgat.c
@@ -3084,7 +5479,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ progs/infocmp.c: workaround mwcc 32k function data limit
980117
- + correct initialization of color-pair (from 970524) in xmas.c, which
+ + correct initialization of color-pair (cf: 970524) in xmas.c, which
was using only one color-pair for all colors (reported by
J.J.G.Ripoll).
+ add multithread options for objects build on EMX, for compatibility
@@ -3129,11 +5524,11 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ add a copy of emx.src from J.J.G.Ripoll's OS/2 EMX version of ncurses
1.9.9e, together with fixes/additions for the "ansi" terminal type.
+ add tic check for save/restore cursor if change_scroll_region is
- defined (from O'Reilly book).
+ defined (reference: O'Reilly book).
+ modify read_termcap.c to handle EMX-style pathnames (reported by
J.J.G.Ripoll).
- + modify lib_raw.c to use EMX's setmode (from J.J.G.Ripoll, who says
- EMX's curses does this).
+ + modify lib_raw.c to use EMX's setmode (patch from J.J.G.Ripoll).
+ Ripoll says EMX's curses does this.
+ modify _nc_tic_expand() to generate \0 rather than \200.
+ move/revise 'expand()' from dump_entry.c to ncurses library as
_nc_tic_expand(), for use by tack.
@@ -3152,7 +5547,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
971227
+ modify open/fopen calls to use binary mode, needed for EMX.
+ modify configure script to work with autoconf 2.10 mods for OS/2
- EMX from J.J.G.Ripoll.
+ EMX (from J.J.G.Ripoll).
+ generated ncurses_cfg.h with patch (971222) to autoconf 2.12 which
bypasses limited sed buffer length.
> several changes from Juan Jose Garcia Ripoll <worm@arrakis.es>
@@ -3260,18 +5655,18 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ replace test for SCO with more precise header tests.
+ add configure test for unsigned literals, use in NCURSES_BITS macro.
+ comment-out the -PIC, etc., flags from c++, progs and test makefiles
- since they probably are not needed, and are less efficient (noted by.
- Ju"rgen Fluk)
+ since they probably are not needed, and are less efficient (noted by
+ Juergen Fluk)
+ add -L$(libdir) to loader options, after -L../lib so that loaders
that record this information will tend to do the right thing if
- the programs are moved around after installing them (suggested by.
- Ju"rgen Fluk).
+ the programs are moved around after installing them (suggested by
+ Juergen Fluk).
+ add -R option to loader options for programs for Solaris if the
--enable-rpath option is specified for the libraries.
971112
+ correct installed filename for shared libraries on *BSD (reported by
- Ju"rgen Fluk).
+ Juergen Fluk).
971108
+ cleanup logic for deciding when tputs() should call delay_output(),
@@ -3335,7 +5730,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
than uname, which is unreliable on some systems.
+ updated Makefile.glibc, test-built with glibc 2.0.5c
+ modify keyname() to return values consistent with SVr4 curses (patch
- by Ju"rgen Fluk).
+ by Juergen Fluk).
> changes requested by Daniel Weaver:
+ modify delay_output() so that it uses the same output function as
tputs() if called from that function.
@@ -3389,8 +5784,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ install C++ binding as -lncurses++ and associated headers with the
other ncurses headers.
+ fix header uninstall if configure --srcdir is used.
- > minor interface changes (request by Daniel Weaver <danw@znyx.com>,
- to support 'tack' program):
+ > minor interface changes to support 'tack' program -TD
+ (request by Daniel Weaver <danw@znyx.com>).
+ export functions _nc_trans_string() and _nc_msec_cost().
+ add variable _nc_nulls_sent, to record the number of padding
characters output in delay_output().
@@ -3401,7 +5796,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ modify ClrBottom() to avoid using clr_eos if there is only one line
to erase.
+ typo in configure --help.
- > patch by J.T.Conklin (with minor resync against Juergen's changes)
+ > patch by J T Conklin (with minor resync against Juergen's changes)
+ split-out lib_flash.c from lib_beep.c
+ split-out lib_hline.c and lib_vline.c from lib_box.c
+ split-out lib_wattron.c, lib_wattroff.c from lib_addch.c
@@ -3568,7 +5963,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ Modified lib_bkgd.c: hopefully correct implementation of wbkgdset();
streamlined implementation of wbkgd()
+ Modified lib_mvwin.c: Disable move of a pad. Implement (costly)
- move of subwindows. Fixed update behaviour of movements of regular
+ move of subwindows. Fixed update behavior of movements of regular
windows.
+ Fixed lib_pad.c: make chtype argument of pechochar() const.
+ Fixed lib_window.c: dupwin() is not(!) in every bit a really clone
@@ -3722,7 +6117,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ rewrote the hashmap algorithm to be one-pass, this avoids multiple
cost_effective() calls on the same lines.
+ modified cost_effective() so it is now slightly more precise.
- > patches by H.J.Lu for glibc integration:
+ > patches for glibc integration (H.J.Lu):
+ add modules define_key, keyok, name_match, tries
+ add makefile rules for some of the unit tests in ncurses (mvcur,
captoinfo, hardscroll, hashmap).
@@ -3883,7 +6278,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ removed buffer-allocation for name and description from m_item_new.c,
since this might result in incompatibilities with SVr4. Also fixed
the corresponding Ada95 binding module (patch by Juergen Pfeifer,
- from report by Avery Pennarun <apenwarr@foxnet.net>)
+ report by Avery Pennarun <apenwarr@foxnet.net>)
+ removed the mechanism to timestamp the generated Ada95 sources. This
resulted always in generating patches for the HTML doc, even when
nothing really changed (patch by Juergen Pfeifer).
@@ -3927,7 +6322,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ add extensions keyok() and define_key(). These are designed to allow
the user's application better control over the use of function keys,
e.g., disabling the ncurses KEY_MOUSE. (The define_key idea was from
- a mailing-list thread started by kjahds@kjahds.com Nov'1995).
+ a mailing-list thread started by Kenneth Albanowski
+ <kjahds@kjahds.com> Nov'1995).
+ restore original behavior in ncurses 'g' test, i.e., explicitly
set the keypad mode rather than use the default, since it confuses
people.
@@ -3946,9 +6342,9 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
<rwuest@sire.vt.com>)
+ move calls of _nc_background() out of various loops, as its return
value will be the same for the whole window being operated on (patch
- by J.T.Conklin).
+ by J T Conklin).
+ add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in
- SVr4 headers (patch by J.T.Conklin <jtc@NetBSD.ORG>)
+ SVr4 headers (patch by J T Conklin <jtc@NetBSD.ORG>)
+ modify glibc addon-configure scripts (patch by H.J.Lu).
+ correct a bug in hashmap.c: the size used for clearing the hashmap
table was incorrect, causing stack corruption for large values of
@@ -4112,18 +6508,18 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
function in lib_doupdate.c (patch by Alexander V. Lukyanov).
+ correct hashmap.c, which did not update index information (patch by
Alexander V. Lukyanov).
- + patch by Juergen Pfeifer for C++ binding and demo (see c++/NEWS)
+ + fixes for C++ binding and demo (see c++/NEWS) (Juergen Pfeifer).
+ correct index in lib_instr.c (Juergen Pfeifer).
+ correct typo in 970426 patch from Tom's cleanup of lib_overlay.c
- (Juergen Pfeifer).
+ (patch by Juergen Pfeifer).
970426
+ corrected cost computation in PutRange(), which was using
milliseconds compared to characters by adding two new members to the
SCREEN struct, _hpa_ch_cost and _cup_ch_cost.
+ drop ncurses/lib_unctrl.c, add ncurses/MKunctrl.awk to generate a
- const array of strings (suggested by Alexander V. Lukyanov, though
- with a perl script 970118).
+ const array of strings (suggested by Alexander V. Lukyanov). The
+ original suggestion in 970118 used a perl script.
+ rewrote ncurses 'b' test to better exercise magic-cookie (xmc), as
well as noting the attributes that are not supported by a terminal.
+ trace the computation of cost values in lib_mvcur.c
@@ -4151,8 +6547,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
Henderson <bryanh@giraffe.netgate.net>).
970412
- + corrected ifdef'ing of inline (from 970321) for TRACE vs C++.
- + corrected toggle_attr_off() macro (patch by Andries.Brouwer).
+ + corrected ifdef'ing of inline (cf: 970321) for TRACE vs C++.
+ + corrected toggle_attr_off() macro (patch by Andries Brouwer).
+ modify treatment of empty token in $MANPATH to /usr/man (reported by
<Andries.Brouwer@cwi.nl>)
+ modify traces that record functions-called so that chtype and attr_t
@@ -4173,12 +6569,12 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ correct computation of absolute-path for $INSTALL that dropped "-c"
parameter from the expression.
+ rename config.h to ncurses_cfg.h to avoid naming-conflict when
- ncurses is integrated into larger systems (from diffs by H.J.Lu for
- libc).
+ ncurses is integrated into larger systems (adapted from diffs by
+ H.J.Lu for libc).
+ correct inequality in lib_doupdate.c that caused a single-char to not
be updated when the char on the right-margin was not blank, idcok()
- was true (patch by Alexander V. Lukyanov 970124, also reported by
- Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu> 970329).
+ was true (patch by Alexander V Lukyanov (in 970124), reported
+ by Kriang Lerdsuwanakij <lerdsuwa@scf-fs.usc.edu> in 970329).
+ modify 'clean' rule in include/Makefile so that files created by
configure script are removed in 'distclean' rule instead.
@@ -4233,7 +6629,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
implements an expanded form of certain complex macros, for testing
with ATAC.
+ disable CHECK_POSITION unless --with-assertions is configured
- (Alexander Lukyanov pointed out that this is redundant).
+ (Alexander V Lukyanov pointed out that this is redundant).
+ use keyname() to show traced chtype values where applicable rather
than _tracechar(), which truncates the value to 8-bits.
+ minor fixes to TRACE_ICALLS, added T_CREATE, TRACE_CCALLS macros.
@@ -4250,7 +6646,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ modify worm.c to hide cursor while running.
+ add -Wcast-qual to gcc warnings, fix accordingly.
+ use PutChar rather than PutAttrChar in ClrToEOL to properly handle
- wrapping (Alexander Lukyanov).
+ wrapping (Alexander V Lukyanov).
+ correct spurious echoing of input in hanoi.c from eric's #291 & #292
patches (reported by Vernon C. Hoxie <vern@zebra.alphacdc.com>).
+ extend IRIX configuration to IRIX64
@@ -4263,7 +6659,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ autogenerated object-dependencies for test directory
+ add configure option --with-rcs-ids
+ modify configuration scripts to generate major/minor/patch versions
- (suggested by Alexander Lukyanov).
+ (suggested by Alexander V Lukyanov).
+ supply missing va_end's in lib_scanw.c
+ use stream I/O for trace-output, to eliminate fixed-size buffer
+ add TRACE_ICALLS definition/support to lib_trace.c
@@ -4276,8 +6672,9 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
the returned buffer.
+ invoke ldconfig after installing shared library
+ modify install so that overwrite applies to shared library -lcurses
- in preference to static library (reported by Zeyd 960928).
- + correct missing ';' in 961221 mod to overwrite option use of $(LN_S).
+ in preference to static library (reported by Zeyd M Ben-Halim 960928).
+ + correct missing ';' in 961221 mod to overwrite optional use of $(LN_S)
+ symbol.
+ fixes to allow "make install" to work without first doing a "make
all" (suggested by Larry Virden).
@@ -4325,7 +6722,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ modify lib_doupdate to make el, el1 and ed optimization use the
can_clear_with macro, and change EmitRange to allow leaving cursor at
the middle of interval, rather than always at the end (patch by
- Alexander Lukyanov originally 960929, resync 970106).
+ Alexander V Lukyanov). This was originally 960929, resync 970106.
970104
+ workaround defect in autoconf 2.12 (which terminates configuration
@@ -4368,11 +6765,11 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
descriptors, needed for GPM.
+ integrate patch by Andrew Kuchling <amk@magnet.com> for GPM (mouse)
support, correcting logic in wgetch() and _nc_mouse_parse() which
- prevented patch from working properly.
+ prevented patch from working properly -TD
+ improve performance of panel algorithm (Juergen Pfeifer 961203).
+ strip RCS id's from generated .html files in Ada95 subtree.
+ resync with generated .html files (Juergen Pfeifer 961223).
- + terminfo.src 10.1.0 from Eric.
+ + terminfo.src 10.1.0 (ESR).
961224 4.0 release
+ release as 4.0 to accommodate Linux ld.so.1.8.5
@@ -4387,7 +6784,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
include-path to /usr/include if gcc is used (reported by Florian La
Roche).
+ modify setupterm() to allocate new TERMINAL for each call, just as
- solaris' curses does (Alexander Lukyanov 960829).
+ solaris' curses does (Alexander V Lukyanov 960829).
+ corrected memory leaks in read_entry.c
+ add configure options --with-dbmalloc, --with-dmalloc, and
--disable-leaks, tested by instrumenting infocmp, ncurses programs.
@@ -4398,10 +6795,10 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ split-out panel.priv.h, improve dependencies for forms, menus
(Juergen Pfeifer 961204).
+ modify _nc_freewin() to reset globals curscr/newscr/stdscr when
- freeing the corresponding WINDOW (Purify).
+ freeing the corresponding WINDOW (found using Purify).
+ modify delwin() to return ERR if the window to be deleted has
- subwindows, needed as a side-effect of resizeterm() (Purify). Tested
- and found that SVr4 curses behaves this way.
+ subwindows, needed as a side-effect of resizeterm() (found using
+ Purify). Tested and found that SVr4 curses behaves this way.
+ implement logic for _nc_freeall(), bringing stub up to date.
961215
@@ -4433,16 +6830,16 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
handled as an exception to the rule, since some linkers do bulk
inclusion of libraries when given the full name - T.Dickey).
+ modify configure script to allow user-supplied $CFLAGS to set the
- debug-option in all libraries (requested by lots of people).
+ debug-option in all libraries (requested by lots of people) -TD
+ use return consistently from main(), rather than exit (reported by
Florian La Roche).
+ add --enable-getcap-cache option to configure, normally disabled
(requested by Florian La Roche).
+ make configure test for gettimeofday() and possibly -lbsd more
- efficient (requested by Florian La Roche florian@knorke.saar.de)
+ efficient (requested by Florian La Roche <florian@knorke.saar.de>)
+ minor adjustments to Ada95 binding (patches by Juergen Pfeifer)
+ correct attributes after emitting orig_pair in lib_vidattr.c (patch
- by lav@yars.free.net).
+ by Alexander V Lukyanov).
961208
+ corrected README wrt Ada95 (Juergen Pfeifer)
@@ -4455,7 +6852,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
data used in ncurses library.
+ initialize _nc_idcok, _nc_idlok statically to resolve discrepancy
between initscr() and newwin() initialization (reported by
- lav@yars.free.net).
+ Alexander V Lukyanov).
+ test built VERSION=4.0, SHARED_ABI=4 with Linux ld.so.1.8.5
(set beta versions to those values -- NOTE that subsequent pre-4.0
beta may not be interchangeable).
@@ -4466,7 +6863,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
Dickey).
961127
- > patch by Juergen Pfeifer (mostly for panel):
+ > patch, mostly for panel (Juergen Pfeifer):
+ cosmetic improvement for a few routines in the ncurses core library
to avoid warning messages.
+ the panel overlap detection was broken
@@ -4496,7 +6893,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
(Juergen Pfeifer)
+ use MODULE_ID (rcs keywords) in forms and menus libraries (Juergen
Pfeifer).
- > patch #324 by Eric.
+ > patch #324 (ESR):
+ typo in curs_termcap man page (reported by Hendrik Reichel
<106065.2344@compuserve.com>)
+ change default xterm entry to xterm-r6.
@@ -4513,8 +6910,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ modify hanoi.c to work on non-color terminals, and to use timing
delays when in autoplay mode.
+ correct 'echochar()' to refresh immediately (reported by Adrian
- Garside 94ajg2@eng.cam.ac.uk)
- > patch #322 by eric:
+ Garside <94ajg2@eng.cam.ac.uk>)
+ > patch #322 (ESR):
+ reorganize terminfo.src entries for xterm.
961109 - snapshot
@@ -4537,10 +6934,10 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
resize test, use wbkgd and corrected box() parameters.
+ make flushinp() test work in ncurses.c by using napms() instead of
sleep().
- + undo Eric's changes to xterm-x11r6 (it no longer matched the X11R6.1
+ + undo ESR's changes to xterm-x11r6 (it no longer matched the X11R6.1
distribution, as stated)
- + terminfo 9.13.18 (resync by Eric)
- + check for getenv("HOME") returning null (Eric).
+ + terminfo 9.13.18 resync (ESR)
+ + check for getenv("HOME") returning null (ESR).
+ change buffer used to decode xterm-mouse commands to unsigned to
handle displays wider than 128 chars (Juergen Pfeifer).
+ correct typo curs_outopts.3x (Juergen Pfeifer).
@@ -4602,17 +6999,16 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
$datadir instead of actual terminfo path.
+ correct whitespace in include/Caps, which caused kf11, clr_eol and
clr_end to be omitted from terminfo.5
- + fix memory leaks in delscreen() (adapted from Alexander Lukyanov).
+ + fix memory leaks in delscreen() (adapted from Alexander V Lukyanov).
+ improve appearance of marker in multi-selection menu (Juergen
Pfeifer)
- + fix behaviour for forms with all fields inactive (Juergen
- Pfeifer)
+ + fix behavior for forms with all fields inactive (Juergen Pfeifer)
+ document 'field_index()' (Juergen Pfeifer)
- > patch #321 by eric:
+ > patch #321 (ESR):
+ add some more XENIX keycap translations to include/Caps.
+ modify newwin to set initial state of each line to 'touched'
(from patch by Peter Wemm <peter@spinner.dialix.com>)
- + in SET_TTY, replace TCSANOW with TCSADRAIN (Alexander Lukyanov).
+ + in SET_TTY, replace TCSANOW with TCSADRAIN (Alexander V Lukyanov).
960928 - snapshot
+ ifdef'd out _nc_hash_map (still slower)
@@ -4624,36 +7020,36 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ ensure that 'doupdate()' sets the .oldindex values back to a sane
state; this was causing a spurious refresh in ncurses 'r'.
+ add logic to configure (from vile) to guard against builders who
- don't remove config.cache & config.status when doing new builds.
- + corrected logic for 'repeat_char' in EmitRange (from #317), which
+ don't remove config.cache & config.status when doing new builds -TD
+ + corrected logic for 'repeat_char' in EmitRange (cf: eric #317), which
did not follow the 2-parameter scheme specified in XSI.
+ corrected logic of wrefresh, wnoutrefresh broken in #319, making
- clearok work properly (from report by Michael Elkins).
+ clearok work properly (report by Michael Elkins).
+ corrected problem with endwin introduced by #314 (removing the
scrolling-region reset) that broke ncurses.c tests.
+ corrected order of args in AC_CHECK_LIB (from report by Ami Fischman
<fischman@math.ucla.edu>).
+ corrected formatting of terminfo.5 tables (Juergen Ehling)
- > patch 320 by eric:
+ > patch 320 (ESR):
+ change ABI to 3.3
+ emit a carriage-return in 'endwin()' to workaround a kernel bug in
BSDI. (requested by Mike Karels <karels@redrock.bsdi.com>)
+ reverse the default o configure --enable-termcap (consensus).
- > patch 319 by eric:
+ > patch 319 (ESR):
+ modified logic for clearok and related functions (from report by
Michael Elkins) - untested
- > patch 318 by eric:
+ > patch 318 (ESR):
+ correction to #317.
- > patch 317 by eric:
+ > patch 317 (ESR):
+ re-add _nc_hash_map
+ modify EmitRange to maintain position as per original design.
+ add hashtest.c, program to time the hashmap optimization.
- > patch 316 by eric:
+ > patch 316 (ESR):
+ add logic to deal with magic-cookie (how was this tested?)
(lib_doupdate.c).
+ add ncurses.c driver for magic-cookie, some fixes to ncurses.c
- > patch 315 by eric:
- + merged A. Lukyanov's patch to use ech and rep - untested
+ > patch 315 (ESR):
+ + merged Alexander V Lukyanov's patch to use ech and rep - untested
(lib_doupdate.c).
+ modified handling of interrupted system calls - untested
(lib_getch.c, lib_twait.c).
@@ -4671,11 +7067,11 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
either ;-)
+ clarify the documentation for the builtin form fieldtypes (Juergen
Pfeifer)
- > patch 314 by eric:
- + Enhancement suggested by A. Lukyanov -- reset scroll region on
- startup rather than at wrapup time.
- + Fix suggested by A. Lukyanov, make storage of palette tables
- and their size counts per-screen for multi-terminal applications.
+ > patch 314 (ESR):
+ + reset scroll region on startup rather than at wrapup time
+ (enhancement suggested by Alexander V Lukyanov).
+ + make storage of palette tables and their size counts per-screen for
+ multi-terminal applications (suggested by Alexander V Lukyanov).
+ Improved error reporting for infotocap translation errors.
+ Update terminfo.src to 9.13.14.
@@ -4694,7 +7090,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
the corresponding logic from raw, cbreak, etc.
+ disable ONLCR during initialization, to match SVr4 (this is needed
for cursor optimization when the cursor-down is a newline).
- + replaced Eric's imitation of wresize with my original (his didn't
+ + replaced ESR's imitation of wresize with my original (his didn't
work).
960831 - snapshot
@@ -4724,7 +7120,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
descriptions that existed in directories past the first one searched
(reported by Alexander V. Lukyanov)
+ corrected typo in dtterm description.
- > patch 313 by eric:
+ > patch 313 (ESR):
+ add dtterm description
+ clarify ncurses 'i' test (drop vscanf subtest)
@@ -4737,9 +7133,9 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
960804
+ revised fix to tparm; previous fix reversed parameter order.
- > patch 312 by eric:
+ > patch 312 (ESR):
correct terminfo.src corrupted by #310
- > patch 311 by eric:
+ > patch 311 (ESR):
+ fix idlok() and idcok() and the default of the idlok switch.
960803 - snapshot
@@ -4747,7 +7143,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
(reported by William P Setzer)
+ add fallback def for GCC_NORETURN, GCC_UNUSED for termcap users
(reported by Tim Mooney).
- > patch 310 by eric:
+ > patch 310 (ESR):
+ documentation and prototyping errors for has_color, immedok and idcok
(reported by William P Setzer <wsetzer@pams.ncsu.edu>)
+ updated qnx terminfo entry (by Michael Hunter)
@@ -4761,14 +7157,14 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
960727 - snapshot
+ call cbreak() in initscr(), as per XSI & SVr4.
+ turn off hardware echo in initscr() as per XSI & SVr4
- > patch 309 by eric:
+ > patch 309 (ESR):
+ terminfo changes (9.3.10), from BRL
+ add more checks to terminfo parser.
+ add more symbols to infocmp.
960720 - snapshot
+ save previous-attribute in lib_vidattr.c if SP is null (reported by
- Ju"rgen Fluk <louis@dachau.marco.de>)
+ Juergen Fluk <louis@dachau.marco.de>)
+ corrected calls on _nc_render so that background character is set
as per XSI.
+ corrected wbkgdset macro (XSI allows background character to be
@@ -4778,7 +7174,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
because not all systems declare it in the headers that we can safely
include therein).
+ move the ifdefs for errno into curses.priv.h
- > patch 308 by eric:
+ > patch 308 (ESR):
+ terminfo changes (9.3.8)
+ modified logic of error-reporting in terminfo parser
@@ -4786,15 +7182,15 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ always check for <sys/bsdtypes.h> since ISC needs it to declare
fd_set (Juergen Pfeifer)
+ install shared-libraries on NetBSD/FreeBSD with ABI-version (reported
- by several people: Juergen Pfeifer, Mike Long)
+ by Juergen Pfeifer, Mike Long)
+ add LOCAL_LDFLAGS2 symbol (Juergen Pfeifer)
+ corrected prototype for delay_output() -- bump ABI to 3.2
- + terminfo patches #306/307 from Eric.
+ + terminfo patches #306/307 (ESR).
+ moved logic that filters out rmul and rmso from setupterm to newterm
where it is less likely to interfere with termcap applications.
960707
- + rollback Eric's #305 change to terminfo.src (it breaks existing
+ + rollback ESR's #305 change to terminfo.src (it breaks existing
applications, e.g., 'less 290').
+ correct path of edit_man.sh, and fix typo that made all man-pages
preformatted.
@@ -4806,8 +7202,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ make lib_vidattr.c more readable using macros.
+ filter out rmul, rmso that conflict with sgr0 when reading terminal
descriptions.
- + added sanity-checking of various paired string attributes (Eric).
- + work around autoconf bug, force $INSTALL to absolute path.
+ + added sanity-checking of various paired string attributes (ESR).
+ + work around autoconf bug, force $INSTALL to absolute path
(reported by Zeyd).
+ modify man-page install for BSDI to install preformatted .0 files
(reported by David MacKenzie).
@@ -4862,7 +7258,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
screen (Juergen Pfeifer).
+ modified autoconf scripts to prepare for Ada95 (GNAT) binding to
ncurses (Juergen Pfeifer).
- + incorrect buffer-size in _nc_read_entry, reported by Eric Raymond.
+ + incorrect buffer-size in _nc_read_entry, reported by ESR.
960617
+ corrected two logic errors in read_entry.c, write_entry.c (called by
@@ -4882,8 +7278,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
warnings turned on, which makes config.log hard to read.
+ added 'lint' rule to top-level Makefile.
+ added configure option '--with-install-prefix' for use by system
- builders to install into staging locations (from request by
- charles@comm.polymtl.ca)
+ builders to install into staging locations (requested by
+ Charles Levert <charles@comm.polymtl.ca>).
+ corrected autoconfigure for Debian man program; it's not installed
as "man_db".
+ set noecho in 'worm'; it was ifdef'd for debug only
@@ -4895,8 +7291,8 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ modified lib_doupdate.c to use lower-level SP's current_attr state
instead of curscr's state, since it is redundant.
+ correction to IDcTransformLine logic which controls where InsStr is
- invoked (refined by lav@yars.free.net).
- > patches 303 by eric
+ invoked (refined by Alexander V Lukyanov).
+ > patch 303 (ESR):
+ conditionally include Chris Torek's hash function _nc_hash_map().
+ better fix for nvi refresh-bug (Rick Marshall)
+ fix for bug in handling of interrupted keystroke waits,
@@ -4929,19 +7325,19 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ include stdlib.h before defs for EXIT_SUCCESS, for OSF/1.
+ include sys/types.h in case stdlib.h does not declare size_t.
+ fixes for makefile (Tim Mooney)
- + fixes for menus & forms (Juergen.Pfeifer@T-Online.de)
+ + fixes for menus & forms (Juergen Pfeifer)
960518 - snapshot
+ revised ncurses.c panner test, let pad abut all 4 sides of screen.
+ refined case in lib_doupdate.c for ClrToEOL().
- + corrected prior change for PutRange (Alexander V. Lukyanov:
- lav@yars.free.net).
- + autoconf mods (Tim Mooney: mooney@dogbert.cc.ndsu.NoDak.edu).
- + locale fix for forms (Philippe De Muyter: phdemuyt@ulb.ac.be)
+ + corrected prior change for PutRange (Alexander V Lukyanov
+ <lav@yars.free.net>).
+ + autoconf mods (Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu>).
+ + locale fix for forms (Philippe De Muyter <phdemuyt@ulb.ac.be>)
+ renamed "--with-datadir" option to "--with-ticdir" to avoid
confusion, and made this check for the /usr/lib/terminfo pre-existing
directory.
- > patches 299-301 by eric:
+ > patches 299-301 (ESR):
+ added hashmap.c
+ mods to tracing, especially for ACS chars.
+ corrected off-by-one in IDCtransform.
@@ -4958,7 +7354,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ added -T options to tic and infocmp (for testing/analysis)
+ refined the length criteria for termcap and terminfo
+ optimize lib_doupdate with memcpy, PutRange
- > patches 297, 298 by eric
+ > patches 297, 298 (ESR):
+ implement TERMINFO_DIRS, and -o option of tic
+ added TRACE_IEVENT
+ removed boolean version of 'getm'
@@ -4966,12 +7362,13 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ added has_key()
+ added 't' to ncurses.c test.
+ moved delay_output() to lib_tputs.c
- + removed tparam().
+ + removed tparam() (was added in 1.9.9, but conflicts with emacs and
+ is not part of X/Open Curses).
+ misc cursor & optimization fixes.
960504 - snapshot
+ modified ncurses 'p' test to allow full-screen range for panner size.
- + fixes for locale (phdm@labauto1.ulb.ac.be)
+ + fixes for locale (Philippe De Muyter <phdm@labauto1.ulb.ac.be>)
+ don't use fixed buffer-size in fmt_entry().
+ added usage-message to 'infocmp'.
+ modified install.includes rules to prepend subdirectory-name to
@@ -4991,7 +7388,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ change ncurses 'a' test to run in raw mode.
+ make TIOCGWINSZ configure test less stringent, in case user
configures via terminal that cannot get screen size.
- > patches 295, 296 by eric:
+ > patches 295, 296 (ESR):
+ new "-e" option of tic.
+ fix for "infocmp -e".
+ restore working-directory in read_termcap.c
@@ -5003,7 +7400,7 @@ Changes since 1.9.9e are recorded by Thomas Dickey.
+ fix for AIX 3.2.5 (must define _POSIX_SOURCE to get termios struct
definitions via <termios.h>, modified macros in lib_raw.c to avoid
K&R-style substitution)
- > patches 293, 294 by eric:
+ > patches 293, 294 (ESR):
+ mods to wgetch() in cooked mode
+ corrected askuser() logic in tset
+ correct interaction of endwin() with mouse processing
@@ -5535,3 +7932,5 @@ available separately from netcom.com:pub/zmbenhal/
* ANSIfication of some functions.
* Disabling cost analysis 'cause it's incorrect.
* A quick hack for a terminfo entry.
+
+-- vile:txtmode:
diff --git a/contrib/ncurses/README b/contrib/ncurses/README
index c46fc195ac5b..56bc38586f48 100644
--- a/contrib/ncurses/README
+++ b/contrib/ncurses/README
@@ -1,4 +1,31 @@
--- $Id: README,v 1.20 2000/08/12 23:31:21 tom Exp $
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998-2004,2006 Free Software 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: README,v 1.23 2006/04/22 22:19:37 tom Exp $
-------------------------------------------------------------------------------
README file for the ncurses package
@@ -43,6 +70,14 @@ The libraries are:
libform.so (shared)
libform_g.a (debug enabled)
+If you configure using the --enable-widec option, a "w" is appended to the
+library names (e.g., libncursesw.a), and the resulting libraries support
+wide-characters, e.g., via a UTF-8 locale. The corresponding header files
+are compatible with the non-wide-character configuration; wide-character
+features are provided by ifdef's in the header files. The wide-character
+library interfaces are not binary-compatible with the non-wide-character
+version.
+
The ncurses libraries implement the curses API. The panel, menu and forms
libraries implement clones of the SVr4 panel, menu and forms APIs. The source
code for these lives in the `ncurses', `panel', `menu', and `form' directories
@@ -56,7 +91,7 @@ install.libs' rule as libncurses++.
In the `Ada95' directory, you'll find code and documentation for an
Ada95 binding of the curses API, to be used with the GNAT compiler.
This binding is built by a normal top-level `make' if configure detects
-an usable version of GNAT (3.10 or above). It is not installed automatically.
+an usable version of GNAT (3.11 or above). It is not installed automatically.
See the Ada95 directory for more build and installation instructions and
for documentation of the binding.
diff --git a/contrib/ncurses/README.emx b/contrib/ncurses/README.emx
index 3f3d526a94e4..4c04816bbf8d 100644
--- a/contrib/ncurses/README.emx
+++ b/contrib/ncurses/README.emx
@@ -1,4 +1,31 @@
--- $Id: README.emx,v 1.4 2000/09/16 19:28:28 tom Exp $
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998-2005,2006 Free Software 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: README.emx,v 1.8 2006/04/22 22:19:37 tom Exp $
-- Author: Thomas Dickey
-------------------------------------------------------------------------------
@@ -16,13 +43,13 @@ the EMX development tools, of course. Get these programs to start:
Apply the autoconf patches from
- http://dickey.his.com/autoconf
- ftp://dickey.his.com/autoconf
+ http://invisible-island.net/autoconf
+ ftp://invisible-island.net/autoconf
These are ordered by date:
- autoconf-2.13-20000819.patch.gz
- autoconf-2.13-20000819-emx.patch.gz
+ autoconf-2.13-20030927.patch.gz
+ autoconf-2.13-20030927-emx.patch.gz
I built my development environment for ncurses using EMX 0.9c at the end of
1997. Much of the EMX patch for autoconf was done originally by J.J.G.Ripoll,
diff --git a/contrib/ncurses/TO-DO b/contrib/ncurses/TO-DO
index 21e8ee0ca9eb..6834e0380b37 100644
--- a/contrib/ncurses/TO-DO
+++ b/contrib/ncurses/TO-DO
@@ -1,87 +1,103 @@
--- $Id: TO-DO,v 1.39 1998/07/12 00:25:39 tom Exp $
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998-2005,2006 Free Software 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: TO-DO,v 1.48 2006/10/28 19:49:16 tom Exp $
+-------------------------------------------------------------------------------
SHORT-TERM TO-DO ITEMS:
Known Problems:
-* GNAT does not put libraries in the correct order, so a build only links
- properly if you use shared libraries since -lncurses is first.
++ libtool does not work with GNAT.
-* XPG4 specifies that the enhanced features are not available unless the
- _XOPEN_SOURCE_EXTENDED test macro is defined by the application. Ncurses uses
- this macro (incorrectly) to address a dependency upon wchar_t. The functions
- which use wchar_t are not implemented, so the effect of the test macro is
- pointless.
-
-* The screen optimization has been tested only in an ad hoc manner. We should
++ The screen optimization has been tested only in an ad hoc manner. We should
develop a good set of regression tests to cover lib_doupdate.c and
lib_mvcur.c.
-* Magic cookie support does not work, since the logic does not take into account
- refresh. Also, the initial optimize does not adjust the current location
- when a cookie is emitted.
++ Magic cookie support (for nonzero xmc values) does not work, since the logic
+ does not take into account refresh. Also, the initial optimize does not
+ adjust the current location when a cookie is emitted.
-* Scrolling optimization has holes: for example, it forces repaints of the
++ Scrolling optimization has holes: for example, it forces repaints of the
screen between calls to refresh().
-* SVr4 uses slightly different rules for determining when softkeys are shown.
++ SVr4 uses slightly different rules for determining when softkeys are shown.
For example, they are initially displayed (before the ncurses 'e' test
activates them), and a touchwin can apparently also force them to be
displayed.
+ The code departs from perfect 8-bit cleanness in one respect; you cannot
- specify a character \200 as part of a capability string, because the terminfo
- library interprets \200 as a request to embed NUL (\000) at that point. This
- is a legacy terminfo property we can't mess with.
+ specify a character \200 as part of a capability string, because the
+ terminfo library interprets \200 as a request to embed NUL (\000) at that
+ point. This is a legacy terminfo property we can't mess with.
+
++ The window classes defined in the c++ subdirectory need documentation. Some
+ C++ programmer could earn a lot of good karma by doing this...
-* The window classes defined in the c++ subdirectory need documentation.
- Some C++ programmer could earn a lot of good karma by doing this...
++ The resizeterm() function does not handle ripped-off lines such as that done
+ for the slk_XXX functions.
+
++ vid_attr() should support the set_a_attributes (sgr1) string, but does not.
+ There appear to be no terminals that require that functionality.
Portability (or lack thereof):
-* Users of older System V UNIXes (but not Solaris, and probably not SVr4)
- may trip over a known problem with the signal-handling code which causes
- abrupt termination of ncurses applications following resume from a ^Z
- suspend (this problem was first seen running lynx). You will not see
- this problem if you are running Linux or one of the 4.4BSD derivatives
- like FreeBSD, NetBSD, or BSDI. For details, see the analysis in the
- header comment of ncurses/lib_tstp.c.
++ Users of older System V UNIXes (but not Solaris, and probably not SVr4) may
+ trip over a known problem with the signal-handling code which causes abrupt
+ termination of ncurses applications following resume from a ^Z suspend (this
+ problem was first seen running lynx). You will not see this problem if you
+ are running Linux or one of the 4.4BSD derivatives like FreeBSD, NetBSD, or
+ BSDI. For details, see the analysis in the header comment of
+ ncurses/tty/lib_tstp.c .
-* In theory, vwprintw and vwscanf are supposed to use the older varargs.h
++ In theory, vwprintw and vwscanf are supposed to use the older varargs.h
interface for handling variadic argument lists. Linux doesn't have
- varargs.h, it has the newer X/Open-standard stdargs.h equivalent. So
- these functions use stdargs instead. This is unlikely to be a problem
- unless you're building ncurses on a System V old enough to only have
- varargs.h. (Solaris 2.5.1 uses the stdarg.h binding as well).
-
-* If you're using a BSD earlier than 4.4BSD, or a Linux old enough not to
- have a native vsscanf(3) in its library, vwscanw() will not work. You lose.
- (It should work on any System V, however). If you want to fix this, add
- an implementation to ncurses/vsscanf.c.
-
-* The demo build for the c++ library craps out with many link errors under gcc
- 2.6.3. We're told the C++ support in 2.6.3 is broken and that the right
- fix is to upgrade to 2.7.0. This demo is also known to not build with
- the Sun SPARCworks 4.1 C++ compiler, due to a problem resolving templates.
-
-* Under Ultrix, configure craps out (Ultrix sh is lame). Run it under ksh.
-
-* We've not tested the configure script with cross-compilers. The autoconf
- tests are supposed to be able to support this (please report bugs). You will
- have to configure and build in two steps. The first step must create the
- automatically-generated sources (e.g., comp_captab.c) on your host machine.
- Then, run "make mostlyclean", remove config.* from the top-level directory
- and configure for the cross-compiler.
+ varargs.h, it has the newer X/Open-standard stdargs.h equivalent. So these
+ functions use stdargs instead. This is unlikely to be a problem unless
+ you're building ncurses on a System V old enough to only have varargs.h.
+ (Solaris 2.5.1 uses the stdarg.h binding as well).
+
++ If you're using a BSD earlier than 4.4BSD, or a Linux old enough not to have
+ a native vsscanf(3) in its library, vwscanw() will not work. You lose. (It
+ should work on any System V, however). If you want to fix this, add an
+ implementation to ncurses/vsscanf.c.
+
++ The C++ binding fails to build with a few C++ compilers, mainly with
+ configure script problems with vsscanf().
+ terminfo.5 does not format with the SunOS (and most other platform's) tbl
- utility because it relies on a diversion for each table entry. Get the groff
- package.
+ utility because it relies on a diversion for each table entry. Get the
+ groff package.
Untested features:
-* The code for the HP color model using set_color_pair is untested.
++ The code for the HP color model using set_color_pair is untested.
-* The code for handling soft labels on a terminal type with built-in support
++ The code for handling soft labels on a terminal type with built-in support
for them (num_labels > 0, label_height, label_width, label_format, label_off,
label_on, plab_norm, lab_f*) has not been tested. The label_format and
lab_f* capabilities aren't presently used.
@@ -95,72 +111,9 @@ of the SVr4 API. The library is BASE conformant with this standard.
We would like to make ncurses fully conformant at the EXTENDED level
supporting internationalization.
-Here are page references to all material involving wide or multi-byte
-characters in Issue 4 of the XSI Curses standard, with notes on their
-status in this implementation:
-
- Page 1 (1.1.2) New Features discussion of internationalization.
- Page 12 (2.4): Definition of cchar_t, wchar_t.
- Page 16 (3.3.2): Introduction of multi-column characters.
- Page 17-18 (3.3.5): Description of non-spacing characters.
- Page 19-21 (3.4.2): Basic character operations.
- Page 34 (addnstr): These should now call underlying wide-
-character functions, and do (through waddnstr) if _XOPEN_SOURCE_EXTENDED is on).
- Page 35 (addnwstr): wide-character add-string functions. All macros
-except waddnwstr() which is not yet defined.
- Page 36 (add_wch): wide-character add-char functions. All macros
-except wadd_wch() which is not yet defined.
- Page 39 (attr_get): implemented -- we've just made the current-
-attributes field of the window an attr_t.
- Page 43 (bkgrnd): None of these are implemented.
- Page 45 (border_set): Neither of these is implemented.
- Page 47 (box_set): box_set implemented as macro, but the underlying
-wborder_set() is not yet defined.
- Page 78 (echo_wchar): echo_wchar() implemented as macro, underlying
-wecho_wchar() not yet implemented.
- Page 81 (erasechar): Neither entry point is implemented.
- Page 87 (getbkgrnd): Not implemented.
- Page 88 (getcchar): Not implemented.
- Page 93 (getn_wstr): All implemented (as macros) except the
-underlying wgetn_wstr().
- Page 97 (get_wch): All implemented (as macros) except the
-underlying wget_wch().
- Page 99 (get_wstr): Xref to page 93.
- Page 105 (hline_set): All implemented (as macros) except the
-underlying whline_set(), wvline_set().
- Page 114 (innstr): Multi-byte character-completeness check is
-not implemented.
- Page 115 (innwstr): All implemented (as macros) except the
-underlying winnw_str().
- Page 119 (insnstr): Implementation may not be correct for multi-byte
-characters.
- Page 120 (ins_nwstr): Not implemented.
- Page 121 (insstr): Xref to page 119.
- Page 122 (instr): Xref to page 119.
- Page 123 (ins_wch): Not implemented.
- Page 124 (ins_wstr): Xref to page 120.
- Page 126 (in_wch): Not implemented.
- Page 127 (in_wchnstr): Not implemented.
- Page 128 (inwstr): Xref to page 115.
- Page 133 (killwchar): killwchar not implemented.
- Page 158 (pechochar): pecho_wchar() not implemented.
- Page 176 (setcchar): Not implemented.
- Page 181 (slk_attroff): slk_wset not implemented.
- Page 200 (ungetch): unget_wch() not implemented.
- Page 203 (vidattr): vid_attr() and vid_puts() not implemented.
- Page 206 (vline_set): Xref to page 105.
- Page 214 (wunctrl): Not implemented.
- Page 216 (curses.h): cchar_t, wint_t, wchar_t references.
- Page 220 (curses.h): KEY_CODE_YES
-
-Basically, the macro superstructure is there but the core is absent. We
-need better multi-locale support guarantees from the OS to finish this.
-If you are working on internationalization support, please contact us so
-we can cooperate.
-
2. DOS port
-Only 16 of the 55 files in the library depend on the terminfo format.
+Only a few of the files in the library depend on the terminfo format.
It should be possible to further kernelize the package, then rewrite
a small number of core files to produce a functionally-compatible
port that would do updates to a memory-mapped screen area. The first
@@ -248,4 +201,4 @@ These are the potentially important ones for ncurses. Notes:
ii) We probably don't care about dest_tabs_magic_smso; only
Telerays used it and they're all long obsolete.
-
+-- vile:txtmode
diff --git a/contrib/ncurses/aclocal.m4 b/contrib/ncurses/aclocal.m4
index bd1df2660e22..b57ec00d18a0 100644
--- a/contrib/ncurses/aclocal.m4
+++ b/contrib/ncurses/aclocal.m4
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 1998-2000,2001,2002 Free Software Foundation, Inc. *
+dnl Copyright (c) 1998-2005,2006 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,47 +26,104 @@ dnl sale, use or other dealings in this Software without prior written *
dnl authorization. *
dnl***************************************************************************
dnl
-dnl Author: Thomas E. Dickey 1996,1997,1998,1999,2000,2001
+dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: aclocal.m4,v 1.280 2002/04/27 19:31:30 tom Exp $
+dnl $Id: aclocal.m4,v 1.407 2006/12/17 16:12:38 tom Exp $
dnl Macros used in NCURSES auto-configuration script.
dnl
-dnl See http://dickey.his.com/autoconf/ for additional information.
+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
+dnl ---------------------------------------------------------------------------
dnl ---------------------------------------------------------------------------
+dnl AM_LANGINFO_CODESET version: 3 updated: 2002/10/27 23:21:42
+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_ADA_INCLUDE_DIRS version: 5 updated: 2006/10/14 15:23:15
+dnl -------------------
dnl Construct the list of include-options for the C programs in the Ada95
dnl binding.
AC_DEFUN([CF_ADA_INCLUDE_DIRS],
[
-ACPPFLAGS="$ACPPFLAGS -I. -I../../include"
+ACPPFLAGS="-I. -I../../include $ACPPFLAGS"
if test "$srcdir" != "."; then
- ACPPFLAGS="$ACPPFLAGS -I\$(srcdir)/../../include"
+ ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS"
fi
if test "$GCC" != yes; then
- ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
+ ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
elif test "$includedir" != "/usr/include"; then
if test "$includedir" = '${prefix}/include' ; then
if test $prefix != /usr ; then
- ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
+ ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
fi
else
- ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
+ ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
fi
fi
AC_SUBST(ACPPFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_ADD_CFLAGS version: 7 updated: 2004/04/25 17:48:30
+dnl -------------
dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS
dnl The second parameter if given makes this macro verbose.
+dnl
+dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS,
+dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily
+dnl confused by the quotes (which require backslashes to keep them usable).
AC_DEFUN([CF_ADD_CFLAGS],
[
+cf_fix_cppflags=no
cf_new_cflags=
cf_new_cppflags=
+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
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'`
+
+ test "${cf_add_cflags}" != "${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"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
case "$CPPFLAGS" in
*$cf_add_cflags) #(vi
;;
@@ -79,6 +136,17 @@ do
cf_new_cflags="$cf_new_cflags $cf_add_cflags"
;;
esac
+ ;;
+yes)
+ 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 -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
done
if test -n "$cf_new_cflags" ; then
@@ -88,11 +156,20 @@ fi
if test -n "$cf_new_cppflags" ; then
ifelse($2,,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)])
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+ CPPFLAGS="$cf_new_cppflags $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"
+fi
+
+AC_SUBST(EXTRA_CPPFLAGS)
+
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_ANSI_CC_CHECK version: 9 updated: 2001/12/30 17:53:34
+dnl ----------------
dnl This is adapted from the macros 'fp_PROG_CC_STDC' and 'fp_C_PROTOTYPES'
dnl in the sharutils 4.2 distribution.
AC_DEFUN([CF_ANSI_CC_CHECK],
@@ -143,6 +220,8 @@ fi
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_ANSI_CC_REQD version: 3 updated: 1997/09/06 13:40:44
+dnl ---------------
dnl For programs that must use an ANSI compiler, obtain compiler options that
dnl will make it recognize prototypes. We'll do preprocessor checks in other
dnl macros, since tools such as unproto can fake prototypes, but only part of
@@ -159,18 +238,38 @@ You have the following choices:
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18
+dnl ------------
dnl Test if 'bool' is a builtin type in the configured C++ compiler. Some
dnl older compilers (e.g., gcc 2.5.8) don't support 'bool' directly; gcc
dnl 2.6.3 does, in anticipation of the ANSI C++ standard.
dnl
dnl Treat the configuration-variable specially here, since we're directly
dnl substituting its value (i.e., 1/0).
+dnl
+dnl $1 is the shell variable to store the result in, if not $cv_cv_builtin_bool
AC_DEFUN([CF_BOOL_DECL],
[
-AC_CHECK_HEADER(stdbool.h,
- cf_cv_header_stdbool_h=1,
- cf_cv_header_stdbool_h=0)
+AC_MSG_CHECKING(if we should include stdbool.h)
+
+AC_CACHE_VAL(cf_cv_header_stdbool_h,[
+ AC_TRY_COMPILE([],[bool foo = false],
+ [cf_cv_header_stdbool_h=0],
+ [AC_TRY_COMPILE([
+#ifndef __BEOS__
+#include <stdbool.h>
+#endif
+],[bool foo = false],
+ [cf_cv_header_stdbool_h=1],
+ [cf_cv_header_stdbool_h=0])])])
+
+if test "$cf_cv_header_stdbool_h" = 1
+then AC_MSG_RESULT(yes)
+else AC_MSG_RESULT(no)
+fi
+
AC_MSG_CHECKING([for builtin bool type])
+
AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[
AC_TRY_COMPILE([
#include <stdio.h>
@@ -179,12 +278,15 @@ AC_CACHE_VAL(ifelse($1,,cf_cv_builtin_bool,[$1]),[
[ifelse($1,,cf_cv_builtin_bool,[$1])=1],
[ifelse($1,,cf_cv_builtin_bool,[$1])=0])
])
+
if test "$ifelse($1,,cf_cv_builtin_bool,[$1])" = 1
then AC_MSG_RESULT(yes)
else AC_MSG_RESULT(no)
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_BOOL_SIZE version: 12 updated: 2006/12/16 12:33:30
+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.
dnl
@@ -230,7 +332,7 @@ main()
else if (sizeof(x) == sizeof(long)) fputs("long", fp);
fclose(fp);
}
- exit(0);
+ ${cf_cv_main_return:-return}(0);
}
],
[cf_cv_type_of_bool=`cat cf_test.out`
@@ -251,6 +353,99 @@ if test "$cf_cv_type_of_bool" = unknown ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_BUILD_CC version: 6 updated: 2006/10/14 15:23:15
+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
+dnl compiler, etc., but we need a build compiler to generate parts of the
+dnl source.
+dnl
+dnl $1 = default for $CPPFLAGS
+dnl $2 = default for $LIBS
+AC_DEFUN([CF_BUILD_CC],[
+AC_REQUIRE([CF_PROG_EXT])
+if test "$cross_compiling" = yes ; then
+
+ # defaults that we might want to override
+ : ${BUILD_CFLAGS:=''}
+ : ${BUILD_CPPFLAGS:='ifelse([$1],,,[$1])'}
+ : ${BUILD_LDFLAGS:=''}
+ : ${BUILD_LIBS:='ifelse([$2],,,[$2])'}
+ : ${BUILD_EXEEXT:='$x'}
+ : ${BUILD_OBJEXT:='o'}
+
+ 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_MSG_CHECKING(for native build C compiler)
+ AC_MSG_RESULT($BUILD_CC)
+
+ AC_MSG_CHECKING(for native build C preprocessor)
+ AC_ARG_WITH(build-cpp,
+ [ --with-build-cpp=XXX the build C preprocessor ($BUILD_CPP)],
+ [BUILD_CPP="$withval"],
+ [BUILD_CPP='${BUILD_CC} -E'])
+ AC_MSG_RESULT($BUILD_CPP)
+
+ AC_MSG_CHECKING(for native build C flags)
+ AC_ARG_WITH(build-cflags,
+ [ --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)],
+ [BUILD_CFLAGS="$withval"])
+ AC_MSG_RESULT($BUILD_CFLAGS)
+
+ AC_MSG_CHECKING(for native build C preprocessor-flags)
+ AC_ARG_WITH(build-cppflags,
+ [ --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)],
+ [BUILD_CPPFLAGS="$withval"])
+ AC_MSG_RESULT($BUILD_CPPFLAGS)
+
+ AC_MSG_CHECKING(for native build linker-flags)
+ AC_ARG_WITH(build-ldflags,
+ [ --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)],
+ [BUILD_LDFLAGS="$withval"])
+ AC_MSG_RESULT($BUILD_LDFLAGS)
+
+ AC_MSG_CHECKING(for native build linker-libraries)
+ AC_ARG_WITH(build-libs,
+ [ --with-build-libs=XXX the build libraries (${BUILD_LIBS})],
+ [BUILD_LIBS="$withval"])
+ AC_MSG_RESULT($BUILD_LIBS)
+
+ # this assumes we're on Unix.
+ BUILD_EXEEXT=
+ BUILD_OBJEXT=o
+
+ : ${BUILD_CC:='${CC}'}
+
+ if ( test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}' ) ; then
+ AC_MSG_ERROR([Cross-build requires two compilers.
+Use --with-build-cc to specify the native compiler.])
+ fi
+
+else
+ : ${BUILD_CC:='${CC}'}
+ : ${BUILD_CPP:='${CPP}'}
+ : ${BUILD_CFLAGS:='${CFLAGS}'}
+ : ${BUILD_CPPFLAGS:='${CPPFLAGS}'}
+ : ${BUILD_LDFLAGS:='${LDFLAGS}'}
+ : ${BUILD_LIBS:='${LIBS}'}
+ : ${BUILD_EXEEXT:='$x'}
+ : ${BUILD_OBJEXT:='o'}
+fi
+
+AC_SUBST(BUILD_CC)
+AC_SUBST(BUILD_CPP)
+AC_SUBST(BUILD_CFLAGS)
+AC_SUBST(BUILD_CPPFLAGS)
+AC_SUBST(BUILD_LDFLAGS)
+AC_SUBST(BUILD_LIBS)
+AC_SUBST(BUILD_EXEEXT)
+AC_SUBST(BUILD_OBJEXT)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CFG_DEFAULTS version: 7 updated: 2005/09/24 16:15:00
+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
dnl look for:
@@ -267,7 +462,7 @@ 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*|netbsd*|freebsd*|linux*|cygwin*)
+ openbsd*|freebsd*|linux*|cygwin*|k*bsd*-gnu)
prefix=/usr
;;
*) prefix=$ac_default_prefix
@@ -303,6 +498,8 @@ AC_MSG_RESULT($includedir)
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_CGETENT version: 3 updated: 2000/08/12 23:18:52
+dnl ----------
dnl Check if the terminal-capability database functions are available. If not,
dnl ncurses has a much-reduced version.
AC_DEFUN([CF_CGETENT],[
@@ -324,6 +521,8 @@ AC_MSG_RESULT($cf_cv_cgetent)
test "$cf_cv_cgetent" = yes && AC_DEFINE(HAVE_BSD_CGETENT)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_CACHE version: 10 updated: 2004/05/23 13:03:31
+dnl --------------
dnl Check if we're accidentally using a cache from a different machine.
dnl Derive the system name, as a check for reusing the autoconf cache.
dnl
@@ -331,9 +530,12 @@ dnl If we've packaged config.guess and config.sub, run that (since it does a
dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow
dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM
dnl which is useful in cross-compiles.
+dnl
+dnl Note: we would use $ac_config_sub, but that is one of the places where
+dnl autoconf 2.5x broke compatibility with autoconf 2.13
AC_DEFUN([CF_CHECK_CACHE],
[
-if test -f $srcdir/config.guess ; then
+if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
ifelse([$1],,[AC_CANONICAL_HOST],[$1])
system_name="$host_os"
else
@@ -354,6 +556,8 @@ if test ".$system_name" != ".$cf_cv_system_name" ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_ERRNO version: 9 updated: 2001/12/30 18:03:23
+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
dnl ourselves.
@@ -383,6 +587,8 @@ fi
CF_CHECK_EXTERN_DATA($1,int)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_EXTERN_DATA version: 3 updated: 2001/12/30 18:03:23
+dnl --------------------
dnl Check for existence of external data in the current set of libraries. If
dnl we can modify it, it's real enough.
dnl $1 = the name to check
@@ -406,6 +612,8 @@ fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_CPP_PARAM_INIT version: 4 updated: 2001/04/07 22:31:18
+dnl -----------------
dnl Check if the C++ compiler accepts duplicate parameter initialization. This
dnl is a late feature for the standard and is not in some recent compilers
dnl (1999/9/11).
@@ -439,6 +647,64 @@ fi
test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_CPP_STATIC_CAST version: 1 updated: 2005/07/23 16:52:43
+dnl ------------------
+dnl Check if the C++ compiler accepts static_cast in generics. This appears to
+dnl not be supported in g++ before 3.0
+AC_DEFUN([CF_CPP_STATIC_CAST],
+[
+if test -n "$CXX"; then
+
+AC_CACHE_CHECK(if $CXX accepts static_cast,cf_cv_cpp_static_cast,[
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ AC_TRY_COMPILE([
+class NCursesPanel
+{
+public:
+ NCursesPanel(int nlines,
+ int ncols,
+ int begin_y = 0,
+ int begin_x = 0)
+ {
+ }
+
+ ~NCursesPanel();
+};
+
+template<class T> class NCursesUserPanel : public NCursesPanel
+{
+public:
+ NCursesUserPanel (int nlines,
+ int ncols,
+ int begin_y = 0,
+ int begin_x = 0,
+ const T* p_UserData = static_cast<T*>(0))
+ : NCursesPanel (nlines, ncols, begin_y, begin_x)
+ {
+ };
+ NCursesUserPanel(const T* p_UserData = static_cast<T*>(0)) : NCursesPanel()
+ {
+ };
+
+ virtual ~NCursesUserPanel() {};
+};
+],[
+ const char* p_UserData = static_cast<char*>(0)],
+ [cf_cv_cpp_static_cast=yes],
+ [cf_cv_cpp_static_cast=no])
+
+ AC_LANG_RESTORE
+])
+
+fi
+
+test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CPP_VSCAN_FUNC version: 5 updated: 2001/12/02 01:39:28
+dnl -----------------
dnl Check if the g++ compiler supports vscan function (not a standard feature).
AC_DEFUN([CF_CPP_VSCAN_FUNC],
[
@@ -515,9 +781,13 @@ strstream_cast)
esac
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52
+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
+AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_DIRS_TO_MAKE version: 3 updated: 2002/02/23 20:38:31
+dnl ---------------
AC_DEFUN([CF_DIRS_TO_MAKE],
[
DIRS_TO_MAKE="lib"
@@ -537,12 +807,38 @@ done
AC_SUBST(DIRS_TO_MAKE)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_DISABLE_LEAKS version: 4 updated: 2006/12/16 15:10:42
+dnl ----------------
+dnl Combine no-leak checks with the libraries or tools that are used for the
+dnl checks.
+AC_DEFUN([CF_DISABLE_LEAKS],[
+
+AC_REQUIRE([CF_WITH_DMALLOC])
+AC_REQUIRE([CF_WITH_DBMALLOC])
+AC_REQUIRE([CF_WITH_VALGRIND])
+
+AC_MSG_CHECKING(if you want to perform memory-leak testing)
+AC_ARG_ENABLE(leaks,
+ [ --disable-leaks test: free permanent memory, analyze leaks],
+ [with_no_leaks=yes],
+ : ${with_no_leaks:=no})
+AC_MSG_RESULT($with_no_leaks)
+
+if test "$with_no_leaks" = yes ; then
+ AC_DEFINE(NO_LEAKS)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39
+dnl --------
dnl Check if 'errno' is declared in <errno.h>
AC_DEFUN([CF_ERRNO],
[
CF_CHECK_ERRNO(errno)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_ETIP_DEFINES version: 3 updated: 2003/03/22 19:13:43
+dnl ---------------
dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between
dnl math.h and builtin.h, only for ncurses
AC_DEFUN([CF_ETIP_DEFINES],
@@ -554,7 +850,7 @@ for cf_math in "" MATH_H
do
for cf_excp in "" MATH_EXCEPTION
do
- CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu"
+ CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -I${srcdir}/include"
test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
AC_TRY_COMPILE([
@@ -571,6 +867,43 @@ AC_MSG_RESULT($cf_result)
CXXFLAGS="$cf_save_CXXFLAGS"
])
dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_DLSYM version: 1 updated: 2004/06/16 20:52:45
+dnl -------------
+dnl Test for dlsym() and related functions, as well as libdl.
+dnl
+dnl Sets
+dnl $cf_have_dlsym
+dnl $cf_have_libdl
+AC_DEFUN([CF_FUNC_DLSYM],[
+cf_have_dlsym=no
+AC_CHECK_FUNC(dlsym,cf_have_dlsym=yes,[
+
+cf_have_libdl=no
+AC_CHECK_LIB(dl,dlsym,[
+ cf_have_dlsym=yes
+ cf_have_libdl=yes])])
+
+if test "$cf_have_dlsym" = yes ; then
+ test "$cf_have_libdl" = yes && LIBS="-ldl $LIBS"
+
+ AC_MSG_CHECKING(whether able to link to dl*() functions)
+ AC_TRY_LINK([#include <dlfcn.h>],[
+ void *obj;
+ if ((obj = dlopen("filename", 0)) != 0) {
+ if (dlsym(obj, "symbolname") == 0) {
+ dlclose(obj);
+ }
+ }],[
+ AC_DEFINE(HAVE_LIBDL)],[
+ AC_MSG_ERROR(Cannot link test program for libdl)])
+ AC_MSG_RESULT(ok)
+else
+ AC_MSG_ERROR(Cannot find dlsym function)
+fi
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_MEMMOVE version: 7 updated: 2006/12/16 12:33:30
+dnl ---------------
dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither
dnl is found, add our own version of memmove to the list of objects.
AC_DEFUN([CF_FUNC_MEMMOVE],
@@ -585,7 +918,7 @@ int main() {
bcopy(data, temp, sizeof(data));
bcopy(temp+10, temp, 15);
bcopy(temp+5, temp+15, 10);
- exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
+ ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
}
],
[cf_cv_good_bcopy=yes],
@@ -600,6 +933,42 @@ int main() {
fi
])])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_NANOSLEEP version: 3 updated: 2006/12/16 12:33:30
+dnl -----------------
+dnl Check for existence of workable nanosleep() function. Some systems, e.g.,
+dnl AIX 4.x, provide a non-working version.
+AC_DEFUN([CF_FUNC_NANOSLEEP],[
+AC_CACHE_CHECK(if nanosleep really works,cf_cv_func_nanosleep,[
+AC_TRY_RUN([
+#include <stdio.h>
+#include <errno.h>
+#include <time.h>
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+int main() {
+ struct timespec ts1, ts2;
+ int code;
+ ts1.tv_sec = 0;
+ ts1.tv_nsec = 750000000;
+ ts2.tv_sec = 0;
+ ts2.tv_nsec = 0;
+ errno = 0;
+ code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */
+ ${cf_cv_main_return:-return}(code != 0);
+}
+],
+ [cf_cv_func_nanosleep=yes],
+ [cf_cv_func_nanosleep=no],
+ [cf_cv_func_nanosleep=unknown])])
+
+test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP)
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_POLL version: 4 updated: 2006/12/16 12:33:30
+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],[
@@ -619,7 +988,7 @@ int main() {
myfds.events = POLLIN;
ret = poll(&myfds, 1, 100);
- exit(ret != 0);
+ ${cf_cv_main_return:-return}(ret != 0);
}],
[cf_cv_working_poll=yes],
[cf_cv_working_poll=no],
@@ -627,6 +996,8 @@ int main() {
test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_TERMIOS version: 2 updated: 2000/07/22 23:37:24
+dnl ---------------
dnl Some old/broken variations define tcgetattr() only as a macro in
dnl termio(s).h
AC_DEFUN([CF_FUNC_TERMIOS],[
@@ -654,6 +1025,8 @@ tcgetattr(1, &foo);],
test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_VSSCANF version: 3 updated: 2001/12/19 00:50:10
+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
dnl other functions.
@@ -697,6 +1070,8 @@ esac
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_GCC_ATTRIBUTES version: 10 updated: 2005/05/28 13:16:28
+dnl -----------------
dnl Test for availability of useful gcc __attribute__ directives to quiet
dnl compiler warnings. Though useful, not all are supported -- and contrary
dnl to documentation, unrecognized directives cause older compilers to barf.
@@ -743,26 +1118,24 @@ int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { return 0; }
EOF
for cf_attribute in scanf printf unused noreturn
do
- CF_UPPER(CF_ATTRIBUTE,$cf_attribute)
+ CF_UPPER(cf_ATTRIBUTE,$cf_attribute)
cf_directive="__attribute__(($cf_attribute))"
echo "checking for $CC $cf_directive" 1>&AC_FD_CC
case $cf_attribute in
scanf|printf)
cat >conftest.h <<EOF
-#define GCC_$CF_ATTRIBUTE 1
+#define GCC_$cf_ATTRIBUTE 1
EOF
;;
*)
cat >conftest.h <<EOF
-#define GCC_$CF_ATTRIBUTE $cf_directive
+#define GCC_$cf_ATTRIBUTE $cf_directive
EOF
;;
esac
if AC_TRY_EVAL(ac_compile); then
test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
cat conftest.h >>confdefs.h
-# else
-# sed -e 's/__attr.*/\/*nothing*\//' conftest.h >>confdefs.h
fi
done
else
@@ -772,23 +1145,88 @@ rm -rf conftest*
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_GCC_VERSION version: 4 updated: 2005/08/27 09:53:42
+dnl --------------
+dnl Find version of gcc
+AC_DEFUN([CF_GCC_VERSION],[
+AC_REQUIRE([AC_PROG_CC])
+GCC_VERSION=none
+if test "$GCC" = yes ; then
+ AC_MSG_CHECKING(version of $CC)
+ GCC_VERSION="`${CC} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
+ test -z "$GCC_VERSION" && GCC_VERSION=unknown
+ AC_MSG_RESULT($GCC_VERSION)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GCC_WARNINGS version: 20 updated: 2005/08/06 18:37:29
+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 -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)
+dnl -Wwrite-strings (too noisy, but should review occasionally). This
+dnl is enabled for ncurses using "--enable-const".
dnl -pedantic
dnl
+dnl Parameter:
+dnl $1 is an optional list of gcc warning flags that a particular
+dnl application might want to use, e.g., "no-unused" for
+dnl -Wno-unused
+dnl Special:
+dnl If $with_ext_const is "yes", add a check for -Wwrite-strings
+dnl
AC_DEFUN([CF_GCC_WARNINGS],
[
-if test "$GCC" = yes
-then
- cat > conftest.$ac_ext <<EOF
+AC_REQUIRE([CF_GCC_VERSION])
+CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
+
+cat > conftest.$ac_ext <<EOF
#line __oline__ "configure"
int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
EOF
+
+if test "$INTEL_COMPILER" = yes
+then
+# The "-wdXXX" options suppress warnings:
+# remark #1419: external declaration in primary source file
+# remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
+# remark #193: zero used for undefined preprocessing identifier
+# remark #593: variable "curs_sb_left_arrow" was set but never used
+# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
+# remark #869: parameter "tw" was never referenced
+# remark #981: operands are evaluated in unspecified order
+# warning #269: invalid format string conversion
+
+ AC_CHECKING([for $CC warning options])
+ cf_save_CFLAGS="$CFLAGS"
+ EXTRA_CFLAGS="-Wall"
+ for cf_opt in $1 \
+ wd1419 \
+ wd1682 \
+ wd1683 \
+ wd1684 \
+ wd193 \
+ wd279 \
+ wd593 \
+ wd810 \
+ wd869 \
+ wd981
+ do
+ CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+ if AC_TRY_EVAL(ac_compile); then
+ test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
+ fi
+ done
+ CFLAGS="$cf_save_CFLAGS"
+
+elif test "$GCC" = yes
+then
AC_CHECKING([for $CC warning options])
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS="-W -Wall"
@@ -804,23 +1242,71 @@ EOF
Wnested-externs \
Wpointer-arith \
Wshadow \
- Wstrict-prototypes $cf_warn_CONST
+ Wstrict-prototypes \
+ Wundef $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 $GCC_VERSION in
+ 3.3*)
+ CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
+ continue;;
+ esac
+ ;;
+ esac
EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
- test "$cf_opt" = Wcast-qual && EXTRA_CFLAGS="$EXTRA_CFLAGS -DXTSTRINGDEFINES"
fi
done
- rm -f conftest*
CFLAGS="$cf_save_CFLAGS"
fi
+rm -f conftest*
+
AC_SUBST(EXTRA_CFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_GNAT_TRY_LINK version: 1 updated: 2004/08/21 19:02:08
+dnl ----------------
+dnl Verify that a test program compiles/links with GNAT.
+dnl $cf_ada_make is set to the program that compiles/links
+dnl $ADAFLAGS may be set to the GNAT flags.
+dnl
+dnl $1 is the text of the spec
+dnl $2 is the text of the body
+dnl $3 is the shell command to execute if successful
+dnl $4 is the shell command to execute if not successful
+AC_DEFUN([CF_GNAT_TRY_LINK],
+[
+rm -f conftest*
+cat >>conftest.ads <<CF_EOF
+$1
+CF_EOF
+cat >>conftest.adb <<CF_EOF
+$2
+CF_EOF
+if ( $cf_ada_make $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
+ifelse($3,, :,[ $3])
+ifelse($4,,,[else
+ $4])
+fi
+rm -f conftest*
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GNAT_TRY_RUN version: 3 updated: 2004/08/21 19:02:08
+dnl ---------------
dnl Verify that a test program compiles and runs with GNAT
dnl $cf_ada_make is set to the program that compiles/links
+dnl $ADAFLAGS may be set to the GNAT flags.
+dnl
+dnl $1 is the text of the spec
+dnl $2 is the text of the body
+dnl $3 is the shell command to execute if successful
+dnl $4 is the shell command to execute if not successful
AC_DEFUN([CF_GNAT_TRY_RUN],
[
rm -f conftest*
@@ -830,7 +1316,7 @@ CF_EOF
cat >>conftest.adb <<CF_EOF
$2
CF_EOF
-if ( $cf_ada_make conftest 1>&AC_FD_CC 2>&1 ) ; then
+if ( $cf_ada_make $ADAFLAGS conftest 1>&AC_FD_CC 2>&1 ) ; then
if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then
ifelse($3,, :,[ $3])
ifelse($4,,,[ else
@@ -842,23 +1328,28 @@ fi
rm -f conftest*
])dnl
dnl ---------------------------------------------------------------------------
-dnl Verify Version of GNAT.
+dnl CF_GNAT_VERSION version: 12 updated: 2006/10/14 15:23:15
+dnl ---------------
+dnl Verify version of GNAT.
AC_DEFUN([CF_GNAT_VERSION],
[
-cf_cv_gnat_version=`$cf_ada_make -v 2>&1 | grep '[[0-9]].[[0-9]][[0-9]]*' |\
- sed -e 's/[[^0-9 \.]]//g' | $AWK '{print $[1];}'`
-case $cf_cv_gnat_version in
+AC_MSG_CHECKING(for gnat version)
+cf_gnat_version=`${cf_ada_make-gnatmake} -v 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
3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*)
cf_cv_prog_gnat_correct=yes
;;
- *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
+ *) echo Unsupported GNAT version $cf_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
cf_cv_prog_gnat_correct=no
;;
esac
-case $cf_cv_gnat_version in
- 3.1*|[[4-9]].*)
+case $cf_gnat_version in
+ 3.[[1-9]]*|[[4-9]].*)
cf_compile_generics=generics
- cf_generic_objects="\$(GENOBJS)"
+ cf_generic_objects="\${GENOBJS}"
;;
*) cf_compile_generics=
cf_generic_objects=
@@ -866,6 +1357,8 @@ case $cf_cv_gnat_version in
esac
])
dnl ---------------------------------------------------------------------------
+dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07
+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
dnl (or misfeature) of glibc2, which breaks portability of many applications,
@@ -894,6 +1387,8 @@ make an error
test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_GPP_LIBRARY version: 8 updated: 2003/02/02 01:41:46
+dnl --------------
dnl If we're trying to use g++, test if libg++ is installed (a rather common
dnl problem :-). If we have the compiler but no library, we'll be able to
dnl configure, but won't be able to build the c++ demo program.
@@ -908,7 +1403,7 @@ os2*) #(vi
cf_gpp_libname=g++
;;
esac
-if test "$ac_cv_prog_gxx" = yes; then
+if test "$GXX" = yes; then
AC_MSG_CHECKING([for lib$cf_gpp_libname])
cf_save="$LIBS"
LIBS="$LIBS -l$cf_gpp_libname"
@@ -936,35 +1431,340 @@ if test "$ac_cv_prog_gxx" = yes; then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_GXX_VERSION version: 5 updated: 2005/08/27 09:53:42
+dnl --------------
+dnl Check for version of g++
+AC_DEFUN([CF_GXX_VERSION],[
+AC_REQUIRE([AC_PROG_CPP])
+GXX_VERSION=none
+if test "$GXX" = yes; then
+ AC_MSG_CHECKING(version of 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
+ AC_MSG_RESULT($GXX_VERSION)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_GXX_WARNINGS version: 5 updated: 2005/08/13 14:54:38
+dnl ---------------
+dnl Check if the compiler supports useful warning options.
+dnl
+dnl Most of gcc's options apply to g++, except:
+dnl -Wbad-function-cast
+dnl -Wmissing-declarations
+dnl -Wnested-externs
+dnl
+dnl Omit a few (for now):
+dnl -Winline
+dnl
+dnl Parameter:
+dnl $1 is an optional list of g++ warning flags that a particular
+dnl application might want to use, e.g., "no-unused" for
+dnl -Wno-unused
+dnl Special:
+dnl If $with_ext_const is "yes", add a check for -Wwrite-strings
+dnl
+AC_DEFUN([CF_GXX_WARNINGS],
+[
+
+CF_INTEL_COMPILER(GXX,INTEL_CPLUSPLUS,CXXFLAGS)
+
+AC_REQUIRE([CF_GXX_VERSION])
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+
+cat > conftest.$ac_ext <<EOF
+#line __oline__ "configure"
+int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; }
+EOF
+
+if test "$INTEL_CPLUSPLUS" = yes
+then
+# The "-wdXXX" options suppress warnings:
+# remark #1419: external declaration in primary source file
+# remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
+# remark #193: zero used for undefined preprocessing identifier
+# remark #593: variable "curs_sb_left_arrow" was set but never used
+# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
+# remark #869: parameter "tw" was never referenced
+# remark #981: operands are evaluated in unspecified order
+# warning #269: invalid format string conversion
+
+ AC_CHECKING([for $CC warning options])
+ cf_save_CXXFLAGS="$CXXFLAGS"
+ EXTRA_CXXFLAGS="-Wall"
+ for cf_opt in \
+ wd1419 \
+ wd1682 \
+ wd1683 \
+ wd1684 \
+ wd193 \
+ wd279 \
+ wd593 \
+ wd810 \
+ wd869 \
+ wd981
+ do
+ CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt"
+ if AC_TRY_EVAL(ac_compile); then
+ test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
+ EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
+ fi
+ done
+ CXXFLAGS="$cf_save_CXXFLAGS"
+
+elif test "$GXX" = yes
+then
+ AC_CHECKING([for $CXX warning options])
+ 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]].*)
+ ;;
+ *)
+ cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++"
+ ;;
+ esac
+ for cf_opt in \
+ Wabi \
+ fabi-version=0 \
+ Woverloaded-virtual \
+ Wsign-promo \
+ Wsynth \
+ Wold-style-cast \
+ Wcast-align \
+ Wcast-qual \
+ Wmissing-prototypes \
+ Wpointer-arith \
+ Wshadow \
+ Wstrict-prototypes \
+ Wundef $cf_gxx_extra_warnings $1
+ do
+ CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt"
+ if AC_TRY_EVAL(ac_compile); then
+ test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt)
+ EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
+ else
+ test -n "$verbose" && AC_MSG_RESULT(... no -$cf_opt)
+ fi
+ done
+ CXXFLAGS="$cf_save_CXXFLAGS"
+fi
+
+rm -f conftest*
+AC_LANG_RESTORE
+AC_SUBST(EXTRA_CXXFLAGS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_HASHED_DB version: 1 updated: 2006/08/19 09:16:14
+dnl ------------
+dnl Look for an instance of the Berkeley hashed database.
+AC_DEFUN([CF_HASHED_DB],
+[
+AC_CHECK_HEADER(db.h,[
+CF_HASHED_DB_VERSION
+if test "$cf_cv_hashed_db_version" = unknown ; then
+ AC_MSG_ERROR(Cannot determine version of db)
+else
+ CF_HASHED_DB_LIBS
+ if test "$cf_cv_hashed_db_libs" = unknown ; then
+ AC_MSG_ERROR(Cannot determine library for db)
+ elif test "$cf_cv_hashed_db_libs" != default ; then
+ LIBS="-l$cf_cv_hashed_db_libs $LIBS"
+ fi
+fi
+],[
+ AC_MSG_ERROR(Cannot find db.h)
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_HASHED_DB_LIBS version: 6 updated: 2006/12/16 12:33:30
+dnl -----------------
+dnl Given that we have the header and version for hashed database, find the
+dnl library information.
+AC_DEFUN([CF_HASHED_DB_LIBS],
+[
+AC_CACHE_CHECK(for db libraries, cf_cv_hashed_db_libs,[
+cf_cv_hashed_db_libs=unknown
+for cf_db_libs in 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"
+ fi
+ CF_MSG_LOG(checking for library "$cf_db_libs")
+ AC_TRY_LINK([
+$ac_includes_default
+#include <db.h>
+],[
+ char *path = "/tmp/foo";
+#ifdef DB_VERSION_MAJOR
+#if DB_VERSION_MAJOR >= 4
+ DB *result = 0;
+ db_create(&result, NULL, 0);
+ result->open(result,
+ NULL,
+ path,
+ path,
+ DB_HASH,
+ DB_CREATE,
+ 0644);
+#elif DB_VERSION_MAJOR >= 3
+ DB *result = 0;
+ db_create(&result, NULL, 0);
+ result->open(result,
+ path,
+ path,
+ DB_HASH,
+ DB_CREATE,
+ 0644);
+#elif DB_VERSION_MAJOR >= 2
+ DB *result = 0;
+ db_open(path,
+ DB_HASH,
+ DB_CREATE,
+ 0644,
+ (DB_ENV *) 0,
+ (DB_INFO *) 0,
+ &result);
+#endif /* DB_VERSION_MAJOR */
+#else
+ DB *result = dbopen(path,
+ 2,
+ 0644,
+ DB_HASH,
+ 0);
+#endif
+ ${cf_cv_main_return:-return}(result != 0)
+],[
+ if test -n "$cf_db_libs" ; then
+ cf_cv_hashed_db_libs=$cf_db_libs
+ else
+ cf_cv_hashed_db_libs=default
+ fi
+ LIBS="$cf_save_libs"
+ break
+])
+ LIBS="$cf_save_libs"
+done
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_HASHED_DB_VERSION version: 2 updated: 2006/08/19 15:12:49
+dnl --------------------
+dnl Given that we have the header file for hashed database, find the version
+dnl information.
+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
+do
+ CF_MSG_LOG(checking for db version $cf_db_version)
+ AC_TRY_COMPILE([
+$ac_includes_default
+#include <db.h>
+
+#ifdef DB_VERSION_MAJOR
+ /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */
+#if $cf_db_version == DB_VERSION_MAJOR
+ /* ok */
+#else
+ make an error
+#endif
+#else
+#if $cf_db_version == 1
+ /* ok: assuming this is DB 1.8.5 */
+#else
+ make an error
+#endif
+#endif
+],[DBT *foo = 0],[
+ cf_cv_hashed_db_version=$cf_db_version
+ break
+ ])
+done
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23
+dnl ---------------
dnl Insert text into the help-message, for readability, from AC_ARG_WITH.
AC_DEFUN([CF_HELP_MESSAGE],
[AC_DIVERT_HELP([$1])dnl
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_INCLUDE_DIRS version: 5 updated: 2006/10/14 15:23:15
+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.
AC_DEFUN([CF_INCLUDE_DIRS],
[
-CPPFLAGS="$CPPFLAGS -I. -I../include"
+CPPFLAGS="-I. -I../include $CPPFLAGS"
if test "$srcdir" != "."; then
- CPPFLAGS="$CPPFLAGS -I\$(srcdir)/../include"
+ CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
fi
if test "$GCC" != yes; then
- CPPFLAGS="$CPPFLAGS -I\$(includedir)"
+ CPPFLAGS="$CPPFLAGS -I\${includedir}"
elif test "$includedir" != "/usr/include"; then
if test "$includedir" = '${prefix}/include' ; then
if test $prefix != /usr ; then
- CPPFLAGS="$CPPFLAGS -I\$(includedir)"
+ CPPFLAGS="$CPPFLAGS -I\${includedir}"
fi
else
- CPPFLAGS="$CPPFLAGS -I\$(includedir)"
+ CPPFLAGS="$CPPFLAGS -I\${includedir}"
fi
fi
AC_SUBST(CPPFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_INTEL_COMPILER version: 3 updated: 2005/08/06 18:37:29
+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
+dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK.
+dnl
+dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to
+dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from
+dnl the wrappers for gcc and g++ warnings.
+dnl
+dnl $1 = GCC (default) or GXX
+dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS
+dnl $3 = CFLAGS (default) or CXXFLAGS
+AC_DEFUN([CF_INTEL_COMPILER],[
+ifelse($2,,INTEL_COMPILER,[$2])=no
+
+if test "$ifelse($1,,[$1],GCC)" = yes ; then
+ case $host_os in
+ 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"
+ AC_TRY_COMPILE([],[
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+],[ifelse($2,,INTEL_COMPILER,[$2])=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+],[])
+ ifelse($3,,CFLAGS,[$3])="$cf_save_CFLAGS"
+ AC_MSG_RESULT($ifelse($2,,INTEL_COMPILER,[$2]))
+ ;;
+ esac
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ISASCII version: 3 updated: 2000/08/12 23:18:52
+dnl ----------
dnl Check if we have either a function or macro for 'isascii()'.
AC_DEFUN([CF_ISASCII],
[
@@ -978,6 +1778,46 @@ AC_MSG_RESULT($cf_cv_have_isascii)
test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_LARGEFILE version: 6 updated: 2006/09/23 19:07:52
+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_FUNC_FSEEKO
+
+ # Normally we would collect these definitions in the config.h,
+ # but (like _XOPEN_SOURCE), some environments rely on having these
+ # defined before any of the system headers are included. Another
+ # case comes up with C++, e.g., on AIX the compiler compiles the
+ # 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 "
+
+ AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[
+ AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <dirent.h>
+ ],[
+ /* if transitional largefile support is setup, this is true */
+ extern struct dirent64 * readdir(DIR *);
+ struct dirent64 *x = readdir((DIR *)0);
+ struct dirent *y = readdir((DIR *)0);
+ int z = x - y;
+ ],
+ [cf_cv_struct_dirent64=yes],
+ [cf_cv_struct_dirent64=no])
+ ])
+ test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64)
+ fi
+])
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_LIBUTF8 version: 2 updated: 2002/01/19 22:51:32
+dnl ----------
dnl Check for libutf8
AC_DEFUN([CF_LIBUTF8],
[
@@ -997,6 +1837,8 @@ if test "$cf_cv_libutf8" = yes ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_LIB_PREFIX version: 7 updated: 2001/01/12 01:23:48
+dnl -------------
dnl Compute the library-prefix for the given host system
dnl $1 = variable to set
AC_DEFUN([CF_LIB_PREFIX],
@@ -1010,6 +1852,8 @@ ifelse($1,,,[$1=$LIB_PREFIX])
AC_SUBST(LIB_PREFIX)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_LIB_RULES version: 40 updated: 2006/10/14 15:23:15
+dnl ------------
dnl Append definitions and rules for the given models to the subdirectory
dnl Makefiles, and the recursion rule for the top-level Makefile. If the
dnl subdirectory is a library-source directory, modify the LIBRARIES list in
@@ -1027,12 +1871,14 @@ CF_LIB_PREFIX(cf_prefix)
AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
for cf_dir in $SRC_SUBDIRS
do
- if test -f $srcdir/$cf_dir/modules; then
+ if test ! -d $srcdir/$cf_dir ; then
+ continue
+ elif test -f $srcdir/$cf_dir/modules; then
IMPORT_LIB=
SHARED_LIB=
LIBS_TO_MAKE=
- for cf_item in $CF_LIST_MODELS
+ for cf_item in $cf_LIST_MODELS
do
CF_LIB_SUFFIX($cf_item,cf_suffix)
if test $cf_item = shared ; then
@@ -1040,23 +1886,45 @@ do
case "$cf_cv_shlib_version" in #(vi
rel) #(vi
case "$cf_cv_system_name" in #(vi
- darwin*) cf_suffix='.$(REL_VERSION)'"$cf_suffix" ;; #(vi
- *) cf_suffix="$cf_suffix"'.$(REL_VERSION)' ;;
+ darwin*)
+ case .${LIB_SUFFIX} in
+ .w*)
+ cf_suffix=`echo $cf_suffix | sed 's/^w//'`
+ cf_suffix=w'.${REL_VERSION}'"$cf_suffix"
+ ;;
+ *)
+ cf_suffix='.${REL_VERSION}'"$cf_suffix"
+ ;;
+ esac
+ ;; #(vi
+ *) cf_suffix="$cf_suffix"'.${REL_VERSION}' ;;
esac
;;
abi)
case "$cf_cv_system_name" in #(vi
- darwin*) cf_suffix='.$(ABI_VERSION)'"$cf_suffix" ;; #(vi
- *) cf_suffix="$cf_suffix"'.$(ABI_VERSION)' ;;
+ darwin*)
+ case .${LIB_SUFFIX} in
+ .w*)
+ cf_suffix=`echo $cf_suffix | sed 's/^w//'`
+ cf_suffix=w'.${ABI_VERSION}'"$cf_suffix"
+ ;;
+ *)
+ cf_suffix='.${ABI_VERSION}'"$cf_suffix"
+ ;;
+ esac
+ ;; #(vi
+ *) cf_suffix="$cf_suffix"'.${ABI_VERSION}' ;;
esac
;;
esac
fi
# 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.
if test $cf_cv_shlib_version = cygdll ; then
- SHARED_LIB="../lib/${cf_prefix}${cf_dir}\$(ABI_VERSION).dll"
- IMPORT_LIB="../lib/${cf_prefix}${cf_dir}.dll.a"
- LIBS_TO_MAKE="$LIBS_TO_MAKE \$(SHARED_LIB) \$(IMPORT_LIB)"
+ SHARED_LIB="cyg${cf_dir}\${ABI_VERSION}.dll"
+ IMPORT_LIB="${cf_prefix}${cf_dir}.dll.a"
+ LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/\${SHARED_LIB} ../lib/\${IMPORT_LIB}"
continue
fi
fi
@@ -1065,21 +1933,18 @@ do
if test $cf_dir = ncurses ; then
cf_subsets="$LIB_SUBSETS"
- case "$LIB_SUBSETS" in #(vi
- termlib+*) #(vi
- ;;
- *) #(vi
- cf_item=`echo $LIBS_TO_MAKE |sed -e s/$LIB_NAME/$TINFO_NAME/g`
+ cf_termlib=`echo "$cf_subsets" |sed -e 's/ .*$//'`
+ if test "$cf_termlib" != "$cf_subsets" ; then
+ cf_item=`echo $LIBS_TO_MAKE |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g`
LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE"
- ;;
- esac
+ fi
else
- cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib //'`
+ cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'`
fi
- sed -e "s@\@LIBS_TO_MAKE\@@$LIBS_TO_MAKE@" \
- -e "s@\@IMPORT_LIB\@@$IMPORT_LIB@" \
- -e "s@\@SHARED_LIB\@@$SHARED_LIB@" \
+ sed -e "s%@LIBS_TO_MAKE@%$LIBS_TO_MAKE%" \
+ -e "s%@IMPORT_LIB@%$IMPORT_LIB%" \
+ -e "s%@SHARED_LIB@%$SHARED_LIB%" \
$cf_dir/Makefile >$cf_dir/Makefile.out
mv $cf_dir/Makefile.out $cf_dir/Makefile
@@ -1090,20 +1955,36 @@ do
for cf_subset in $cf_subsets
do
cf_subdirs=
- for cf_item in $CF_LIST_MODELS
+ for cf_item in $cf_LIST_MODELS
do
echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})"
- CF_UPPER(CF_ITEM,$cf_item)
+ CF_UPPER(cf_ITEM,$cf_item)
CF_LIB_SUFFIX($cf_item,cf_suffix)
CF_OBJ_SUBDIR($cf_item,cf_subdir)
+ # Test for case where we build libtinfo with a different name.
+ cf_libname=$cf_dir
+ if test $cf_dir = ncurses ; then
+ case $cf_subset in
+ *base*)
+ ;;
+ termlib*)
+ cf_libname=$TINFO_LIB_SUFFIX
+ 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}%%"`
+ fi
+ ;;
+ esac
+ fi
+
# These dependencies really are for development, not
# builds, but they are useful in porting, too.
cf_depend="../include/ncurses_cfg.h"
if test "$srcdir" = "."; then
cf_reldir="."
else
- cf_reldir="\$(srcdir)"
+ cf_reldir="\${srcdir}"
fi
if test -f $srcdir/$cf_dir/$cf_dir.priv.h; then
@@ -1112,10 +1993,24 @@ do
cf_depend="$cf_depend $cf_reldir/curses.priv.h"
fi
+ 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
+ w*)
+ cf_libname=`echo $cf_libname | sed 's/w$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^w//'`
+ cf_dir_suffix=w
+ ;;
+ esac
+ fi
+ fi
+
$AWK -f $srcdir/mk-1st.awk \
- name=$cf_dir \
+ name=${cf_libname}${cf_dir_suffix} \
traces=$LIB_TRACING \
- MODEL=$CF_ITEM \
+ MODEL=$cf_ITEM \
model=$cf_subdir \
prefix=$cf_prefix \
suffix=$cf_suffix \
@@ -1127,8 +2022,11 @@ do
ldconfig="$LDCONFIG" \
overwrite=$WITH_OVERWRITE \
depend="$cf_depend" \
- target="$target" \
+ host="$host" \
$srcdir/$cf_dir/modules >>$cf_dir/Makefile
+
+ cf_suffix="$old_cf_suffix"
+
for cf_subdir2 in $cf_subdirs lib
do
test $cf_subdir = $cf_subdir2 && break
@@ -1137,29 +2035,35 @@ do
$AWK -f $srcdir/mk-2nd.awk \
name=$cf_dir \
traces=$LIB_TRACING \
- MODEL=$CF_ITEM \
+ MODEL=$cf_ITEM \
model=$cf_subdir \
subset=$cf_subset \
srcdir=$srcdir \
echo=$WITH_ECHO \
+ crenames=$cf_cv_prog_CC_c_o \
+ cxxrenames=$cf_cv_prog_CXX_c_o \
$srcdir/$cf_dir/modules >>$cf_dir/Makefile
cf_subdirs="$cf_subdirs $cf_subdir"
done
done
fi
- echo ' cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) [$]@' >>Makefile
+ echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} [$]@' >>Makefile
done
for cf_dir in $SRC_SUBDIRS
do
+ if test ! -d $srcdir/$cf_dir ; then
+ continue
+ fi
+
if test -f $cf_dir/Makefile ; then
case "$cf_dir" in
Ada95) #(vi
echo 'libs \' >> Makefile
echo 'install.libs \' >> Makefile
echo 'uninstall.libs ::' >> Makefile
- echo ' cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) [$]@' >> Makefile
+ echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} [$]@' >> Makefile
;;
esac
fi
@@ -1182,7 +2086,7 @@ install.libs \\
uninstall.libs \\
install.$cf_dir \\
uninstall.$cf_dir ::
- cd $cf_dir && \$(MAKE) \$(CF_MFLAGS) \[$]@
+ cd $cf_dir && \${MAKE} \${CF_MFLAGS} \[$]@
CF_EOF
elif test -f $srcdir/$cf_dir/headers; then
cat >> Makefile <<CF_EOF
@@ -1192,7 +2096,7 @@ install.libs \\
uninstall.libs \\
install.includes \\
uninstall.includes ::
- cd $cf_dir && \$(MAKE) \$(CF_MFLAGS) \[$]@
+ cd $cf_dir && \${MAKE} \${CF_MFLAGS} \[$]@
CF_EOF
fi
done
@@ -1201,16 +2105,16 @@ cat >> Makefile <<CF_EOF
install.data \\
uninstall.data ::
-$MAKE_TERMINFO cd misc && \$(MAKE) \$(CF_MFLAGS) \[$]@
+$MAKE_TERMINFO cd misc && \${MAKE} \${CF_MFLAGS} \[$]@
install.man \\
uninstall.man ::
- cd man && \$(MAKE) \$(CF_MFLAGS) \[$]@
+ cd man && \${MAKE} \${CF_MFLAGS} \[$]@
distclean ::
rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h
rm -f headers.sh headers.sed
- rm -rf \$(DIRS_TO_MAKE)
+ rm -rf \${DIRS_TO_MAKE}
CF_EOF
# Special case: tack's manpage lives in its own directory.
@@ -1220,7 +2124,7 @@ cat >> Makefile <<CF_EOF
install.man \\
uninstall.man ::
- cd tack && \$(MAKE) \$(CF_MFLAGS) \[$]@
+ cd tack && \${MAKE} \${CF_MFLAGS} \[$]@
CF_EOF
fi
fi
@@ -1253,6 +2157,7 @@ TMPSRC=\${TMPDIR-/tmp}/\`basename \$SRC\`\$\$
TMPSED=\${TMPDIR-/tmp}/headers.sed\$\$
echo installing \$SRC in \$DST
CF_EOF
+
if test $WITH_CURSES_H = yes; then
cat >>headers.sh <<CF_EOF
case \$DST in
@@ -1269,6 +2174,7 @@ case \$DST in
;;
esac
CF_EOF
+
else
cat >>headers.sh <<CF_EOF
case \$DST in
@@ -1313,14 +2219,18 @@ chmod 0755 headers.sh
for cf_dir in $SRC_SUBDIRS
do
+ if test ! -d $srcdir/$cf_dir ; then
+ continue
+ fi
+
if test -f $srcdir/$cf_dir/headers; then
cat >>$cf_dir/Makefile <<CF_EOF
-\$(DESTDIR)\$(includedir) :
- sh \$(srcdir)/../mkinstalldirs \[$]@
+\${DESTDIR}\${includedir} :
+ sh \${srcdir}/../mkinstalldirs \[$]@
install \\
install.libs \\
-install.includes :: \$(AUTO_SRC) \$(DESTDIR)\$(includedir) \\
+install.includes :: \${AUTO_SRC} \${DESTDIR}\${includedir} \\
CF_EOF
j=""
for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
@@ -1328,11 +2238,13 @@ CF_EOF
test -n "$j" && echo " $j \\" >>$cf_dir/Makefile
j=$i
done
+
echo " $j" >>$cf_dir/Makefile
+
for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
do
- echo " @ (cd \$(DESTDIR)\$(includedir) && rm -f `basename $i`) ; ../headers.sh \$(INSTALL_DATA) \$(DESTDIR)\$(includedir) \$(srcdir) $i" >>$cf_dir/Makefile
- test $i = curses.h && test $WITH_CURSES_H = yes && echo " @ (cd \$(DESTDIR)\$(includedir) && rm -f ncurses.h && \$(LN_S) curses.h ncurses.h)" >>$cf_dir/Makefile
+ echo " @ (cd \${DESTDIR}\${includedir} && rm -f `basename $i`) ; ../headers.sh \${INSTALL_DATA} \${DESTDIR}\${includedir} \${srcdir} $i" >>$cf_dir/Makefile
+ test $i = curses.h && test $WITH_CURSES_H = yes && echo " @ (cd \${DESTDIR}\${includedir} && rm -f ncurses.h && \${LN_S} curses.h ncurses.h)" >>$cf_dir/Makefile
done
cat >>$cf_dir/Makefile <<CF_EOF
@@ -1344,16 +2256,16 @@ CF_EOF
for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
do
i=`basename $i`
- echo " -@ (cd \$(DESTDIR)\$(includedir) && rm -f $i)" >>$cf_dir/Makefile
- test $i = curses.h && echo " -@ (cd \$(DESTDIR)\$(includedir) && rm -f ncurses.h)" >>$cf_dir/Makefile
+ echo " -@ (cd \${DESTDIR}\${includedir} && rm -f $i)" >>$cf_dir/Makefile
+ test $i = curses.h && echo " -@ (cd \${DESTDIR}\${includedir} && rm -f ncurses.h)" >>$cf_dir/Makefile
done
fi
if test -f $srcdir/$cf_dir/modules; then
if test "$cf_dir" != "c++" ; then
cat >>$cf_dir/Makefile <<"CF_EOF"
-depend : $(AUTO_SRC)
- makedepend -- $(CPPFLAGS) -- $(C_SRC)
+depend : ${AUTO_SRC}
+ makedepend -- ${CPPFLAGS} -- ${C_SRC}
# DO NOT DELETE THIS LINE -- make depend depends on it.
CF_EOF
@@ -1363,6 +2275,45 @@ done
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_LIB_SONAME version: 3 updated: 2006/12/16 15:55:46
+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
+dnl variable to "unknown".
+dnl
+dnl $1 = headers
+dnl $2 = code
+dnl $3 = library name
+AC_DEFUN([CF_LIB_SONAME],
+[
+AC_CACHE_CHECK(for soname of $3 library,cf_cv_$3_soname,[
+
+cf_cv_$3_soname=unknown
+if test "$cross_compiling" != yes ; then
+cat >conftest.$ac_ext <<CF_EOF
+$1
+int main()
+{
+$2
+ ${cf_cv_main_return:-return}(0);
+}
+CF_EOF
+cf_save_LIBS="$LIBS"
+ LIBS="-l$3 $LIBS"
+ if AC_TRY_EVAL(ac_compile) ; then
+ if AC_TRY_EVAL(ac_link) ; then
+ cf_cv_$3_soname=`ldd conftest$ac_exeext 2>/dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | fgrep lib$3.`
+ test -z "$cf_cv_$3_soname" && cf_cv_$3_soname=unknown
+ fi
+ fi
+rm -f conftest*
+LIBS="$cf_save_LIBS"
+fi
+])
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_LIB_SUFFIX version: 13 updated: 2003/11/01 16:09:07
+dnl -------------
dnl Compute the library file-suffix from the given model name
dnl $1 = model name
dnl $2 = variable to set
@@ -1379,13 +2330,20 @@ AC_DEFUN([CF_LIB_SUFFIX],
case $cf_cv_system_name in
cygwin*) $2='.dll' ;;
darwin*) $2='.dylib' ;;
- hpux*) $2='.sl' ;;
+ hpux*)
+ case $target in
+ ia64*) $2='.so' ;;
+ *) $2='.sl' ;;
+ esac
+ ;;
*) $2='.so' ;;
esac
esac
test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_LIB_TYPE version: 4 updated: 2000/10/20 22:57:49
+dnl -----------
dnl Compute the string to append to -library from the given model name
dnl $1 = model name
dnl $2 = variable to set
@@ -1402,6 +2360,8 @@ AC_DEFUN([CF_LIB_TYPE],
test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_LINK_DATAONLY version: 8 updated: 2006/12/16 12:33:30
+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
dnl have to provide wrappers for global tables to ensure they're linked
@@ -1417,7 +2377,7 @@ int testdata[[3]] = { 123, 456, 789 };
EOF
if AC_TRY_EVAL(ac_compile) ; then
mv conftest.o data.o && \
- ( $AR $AR_OPTS conftest.a data.o ) 2>&5 1>/dev/null
+ ( $AR $AR_OPTS conftest.a data.o ) 2>&AC_FD_CC 1>/dev/null
fi
rm -f conftest.$ac_ext data.o
cat >conftest.$ac_ext <<EOF
@@ -1425,7 +2385,7 @@ EOF
int testfunc()
{
#if defined(NeXT)
- exit(1); /* I'm told this linker is broken */
+ ${cf_cv_main_return:-return}(1); /* I'm told this linker is broken */
#else
extern int testdata[[3]];
return testdata[[0]] == 123
@@ -1436,17 +2396,17 @@ int testfunc()
EOF
if AC_TRY_EVAL(ac_compile); then
mv conftest.o func.o && \
- ( $AR $AR_OPTS conftest.a func.o ) 2>&5 1>/dev/null
+ ( $AR $AR_OPTS conftest.a func.o ) 2>&AC_FD_CC 1>/dev/null
fi
rm -f conftest.$ac_ext func.o
- ( eval $ac_cv_prog_RANLIB conftest.a ) 2>&5 >/dev/null
+ ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null
cf_saveLIBS="$LIBS"
LIBS="conftest.a $LIBS"
AC_TRY_RUN([
int main()
{
extern int testfunc();
- exit (!testfunc());
+ ${cf_cv_main_return:-return} (!testfunc());
}
],
[cf_cv_link_dataonly=yes],
@@ -1463,6 +2423,8 @@ fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_LINK_FUNCS version: 7 updated: 2006/12/16 12:33:30
+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).
@@ -1472,7 +2434,7 @@ AC_CHECK_FUNCS( \
remove \
unlink )
-if test "$ac_cv_prog_cc_cross" = yes ; then
+if test "$cross_compiling" = yes ; then
AC_CHECK_FUNCS( \
link \
symlink )
@@ -1503,7 +2465,7 @@ int main()
#else
remove(dst);
#endif
- exit (fail);
+ ${cf_cv_main_return:-return} (fail);
}
],[
cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
@@ -1518,22 +2480,36 @@ int main()
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl Some 'make' programs support $(MAKEFLAGS), some $(MFLAGS), to pass 'make'
+dnl CF_MAIN_RETURN version: 1 updated: 2006/12/10 09:51:54
+dnl --------------
+dnl Check if a return from main to the shell actually returns the same exit
+dnl code. This is true for almost any POSIX environment.
+dnl
+dnl Some very old environments did not flush stdout, etc., on an exit. That
+dnl would be a useful case to test for also.
+AC_DEFUN([CF_MAIN_RETURN],
+[
+cf_cv_main_return=return
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_MAKEFLAGS version: 12 updated: 2006/10/21 08:27: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.
dnl (GNU 'make' does both, something POSIX 'make', which happens to make the
-dnl $(MAKEFLAGS) variable incompatible because it adds the assignments :-)
+dnl ${MAKEFLAGS} variable incompatible because it adds the assignments :-)
AC_DEFUN([CF_MAKEFLAGS],
[
AC_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[
cf_cv_makeflags=''
- for cf_option in '-$(MAKEFLAGS)' '$(MFLAGS)'
+ for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
do
cat >cf_makeflags.tmp <<CF_EOF
SHELL = /bin/sh
all :
@ echo '.$cf_option'
CF_EOF
- cf_result=`${MAKE-make} -k -f cf_makeflags.tmp 2>/dev/null`
+ cf_result=`${MAKE-make} -k -f cf_makeflags.tmp 2>/dev/null | sed -e 's,[[ ]]*$,,'`
case "$cf_result" in
.*k)
cf_result=`${MAKE-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
@@ -1545,7 +2521,8 @@ CF_EOF
esac
break
;;
- *) echo no match "$cf_result"
+ .-) ;;
+ *) echo "given option \"$cf_option\", no match \"$cf_result\""
;;
esac
done
@@ -1555,6 +2532,8 @@ CF_EOF
AC_SUBST(cf_cv_makeflags)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_MAKE_TAGS version: 2 updated: 2000/10/04 09:18:40
+dnl ------------
dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have
dnl a monocase filesystem.
AC_DEFUN([CF_MAKE_TAGS],[
@@ -1582,8 +2561,20 @@ fi
AC_SUBST(MAKE_LOWER_TAGS)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_MANPAGE_FORMAT version: 7 updated: 2003/12/20 19:30:34
+dnl -----------------
dnl Option to allow user to override automatic configuration of manpage format.
-dnl There are several special cases.
+dnl There are several special cases:
+dnl
+dnl gzip - man checks for, can display gzip'd files
+dnl compress - man checks for, can display compressed files
+dnl BSDI - files in the cat-directories are suffixed ".0"
+dnl formatted - installer should format (put files in cat-directory)
+dnl catonly - installer should only format, e.g., for a turnkey system.
+dnl
+dnl There are other configurations which this macro does not test, e.g., HPUX's
+dnl compressed manpages (but uncompressed manpages are fine, and HPUX's naming
+dnl convention would not match our use).
AC_DEFUN([CF_MANPAGE_FORMAT],
[
AC_REQUIRE([CF_PATHSEP])
@@ -1591,49 +2582,96 @@ AC_MSG_CHECKING(format of man-pages)
AC_ARG_WITH(manpage-format,
[ --with-manpage-format specify manpage-format: gzip/compress/BSDI/normal and
- optionally formatted, e.g., gzip,formatted],
+ optionally formatted/catonly, e.g., gzip,formatted],
[MANPAGE_FORMAT=$withval],
[MANPAGE_FORMAT=unknown])
-case ".$MANPAGE_FORMAT" in
-.gzip|.compress|.BSDI|.normal|.formatted) # (vi
- ;;
-.unknown|.) # (vi
+test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown
+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}${PATHSEP}"
- MANPAGE_FORMAT=unknown
for cf_dir in $MANPATH; do
test -z "$cf_dir" && cf_dir=/usr/man
- for cf_name in $cf_dir/*/date.[[01]]* $cf_dir/*/date
+ 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=gzip;;
- *.Z) MANPAGE_FORMAT=compress;;
- *.0) MANPAGE_FORMAT=BSDI,formatted;;
- *) MANPAGE_FORMAT=normal;;
- esac
- break
- fi
+ 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
- if test "$MANPAGE_FORMAT" != "unknown" ; then
+ # 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"
;;
-.*) # (vi
- AC_MSG_WARN(Unexpected manpage-format)
+*)
+ 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
;;
esac
AC_MSG_RESULT($MANPAGE_FORMAT)
+if test -n "$cf_unknown" ; then
+ 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 ------------------
dnl The Debian people have their own naming convention for manpages. This
dnl option lets us override the name of the file containing renaming, or
dnl disable it altogether.
@@ -1671,7 +2709,7 @@ if test "$MANPAGE_RENAMES" != no ; then
# 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 >man/edit_man.sed
+ sh $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed
fi
fi
@@ -1679,21 +2717,51 @@ AC_MSG_RESULT($MANPAGE_RENAMES)
AC_SUBST(MANPAGE_RENAMES)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_MANPAGE_SYMLINKS version: 4 updated: 2003/12/13 18:01:58
+dnl -------------------
dnl Some people expect each tool to make all aliases for manpages in the
dnl man-directory. This accommodates the older, less-capable implementations
dnl of 'man', and is optional.
AC_DEFUN([CF_MANPAGE_SYMLINKS],
[
-AC_MSG_CHECKING(for manpage symlinks)
+AC_MSG_CHECKING(if manpage aliases will be installed)
+
+AC_ARG_WITH(manpage-aliases,
+ [ --with-manpage-aliases specify manpage-aliases using .so],
+ [MANPAGE_ALIASES=$withval],
+ [MANPAGE_ALIASES=yes])
+
+AC_MSG_RESULT($MANPAGE_ALIASES)
+
+if test "$LN_S" = "ln -s"; then
+ cf_use_symlinks=yes
+else
+ cf_use_symlinks=no
+fi
+
+MANPAGE_SYMLINKS=no
+if test "$MANPAGE_ALIASES" = yes ; then
+AC_MSG_CHECKING(if manpage symlinks should be used)
AC_ARG_WITH(manpage-symlinks,
- [ --with-manpage-symlinks specify manpage-symlinks],
+ [ --with-manpage-symlinks specify manpage-aliases using symlinks],
[MANPAGE_SYMLINKS=$withval],
- [MANPAGE_SYMLINKS=yes])
+ [MANPAGE_SYMLINKS=$cf_use_symlinks])
+
+if test "$$cf_use_symlinks" = no; then
+if test "$MANPAGE_SYMLINKS" = yes ; then
+ AC_MSG_WARN(cannot make symlinks, will use .so files)
+ MANPAGE_SYMLINKS=no
+fi
+fi
AC_MSG_RESULT($MANPAGE_SYMLINKS)
+fi
+
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_MANPAGE_TBL version: 3 updated: 2002/01/19 22:51:32
+dnl --------------
dnl This option causes manpages to be run through tbl(1) to generate tables
dnl correctly.
AC_DEFUN([CF_MANPAGE_TBL],
@@ -1708,6 +2776,8 @@ AC_ARG_WITH(manpage-tbl,
AC_MSG_RESULT($MANPAGE_TBL)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_MAN_PAGES version: 31 updated: 2006/12/09 12:27:08
+dnl ------------
dnl Try to determine if the man-pages on the system are compressed, and if
dnl so, what format is used. Use this information to construct a script that
dnl will install man-pages.
@@ -1726,83 +2796,132 @@ CF_MANPAGE_TBL
fi
case "$MANPAGE_FORMAT" in # (vi
+ *catonly*) # (vi
+ cf_format=yes
+ cf_inboth=no
+ ;;
*formatted*) # (vi
- cf_subdir='$mandir/cat'
cf_format=yes
+ cf_inboth=yes
;;
*)
- cf_subdir='$mandir/man'
cf_format=no
+ cf_inboth=no
;;
esac
test ! -d man && mkdir man
-cat >man/edit_man.sh <<CF_EOF
+
+cf_so_strip=
+cf_compress=
+case "$MANPAGE_FORMAT" in #(vi
+*compress*) #(vi
+ cf_so_strip="Z"
+ cf_compress=compress
+ ;;
+*gzip*) #(vi
+ cf_so_strip="gz"
+ cf_compress=gzip
+ ;;
+esac
+
+cf_edit_man=./edit_man.sh
+
+cat >$cf_edit_man <<CF_EOF
#! /bin/sh
-# this script is generated by the configure-script
+# this script is generated by the configure-script CF_MAN_PAGES macro.
+
prefix="$cf_prefix"
datadir="$datadir"
+
+NCURSES_MAJOR="$NCURSES_MAJOR"
+NCURSES_MINOR="$NCURSES_MINOR"
+NCURSES_PATCH="$NCURSES_PATCH"
+
NCURSES_OSPEED="$NCURSES_OSPEED"
TERMINFO="$TERMINFO"
+
MKDIRS="sh `cd $srcdir && pwd`/mkinstalldirs"
+
INSTALL="$INSTALL"
INSTALL_DATA="$INSTALL_DATA"
+
transform="$program_transform_name"
TMP=\${TMPDIR-/tmp}/man\$\$
trap "rm -f \$TMP" 0 1 2 5 15
+form=\[$]1
+shift || exit 1
+
verb=\[$]1
-shift
+shift || exit 1
mandir=\[$]1
-shift
+shift || exit 1
srcdir=\[$]1
-shift
+top_srcdir=\[$]srcdir/..
+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 \[$]*
+ exit $?
+ fi
+ fi
+ cf_subdir=\$mandir/man
+ cf_tables=$MANPAGE_TBL
+else
+ cf_subdir=\$mandir/cat
+ cf_tables=yes
+fi
+# process the list of source-files
for i in \[$]* ; do
case \$i in #(vi
*.orig|*.rej) ;; #(vi
*.[[0-9]]*)
section=\`expr "\$i" : '.*\\.\\([[0-9]]\\)[[xm]]*'\`;
if test \$verb = installing ; then
- if test ! -d $cf_subdir\${section} ; then
- \$MKDIRS $cf_subdir\$section
+ if test ! -d \$cf_subdir\${section} ; then
+ \$MKDIRS \$cf_subdir\$section
fi
fi
aliases=
- source=\`basename \$i\`
- inalias=\$source
+ cf_source=\`basename \$i\`
+ inalias=\$cf_source
test ! -f \$inalias && inalias="\$srcdir/\$inalias"
if test ! -f \$inalias ; then
- echo .. skipped \$source
+ echo .. skipped \$cf_source
continue
fi
CF_EOF
-if test "$MANPAGE_SYMLINKS" = yes ; then
-cat >>man/edit_man.sh <<CF_EOF
- aliases=\`sed -f \$srcdir/manlinks.sed \$inalias | sort -u\`
+
+if test "$MANPAGE_ALIASES" != no ; then
+cat >>$cf_edit_man <<CF_EOF
+ aliases=\`sed -f \$top_srcdir/man/manlinks.sed \$inalias | sort -u\`
CF_EOF
fi
if test "$MANPAGE_RENAMES" = no ; then
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
# perform program transformations for section 1 man pages
if test \$section = 1 ; then
- target=$cf_subdir\${section}/\`echo \$source|sed "\${transform}"\`
+ cf_target=\$cf_subdir\${section}/\`echo \$cf_source|sed "\${transform}"\`
else
- target=$cf_subdir\${section}/\$source
+ cf_target=\$cf_subdir\${section}/\$cf_source
fi
CF_EOF
else
-cat >>man/edit_man.sh <<CF_EOF
- target=\`grep "^\$source" $MANPAGE_RENAMES | $AWK '{print \[$]2}'\`
- if test -z "\$target" ; then
- echo '? missing rename for '\$source
- target="\$source"
+cat >>$cf_edit_man <<CF_EOF
+ cf_target=\`grep "^\$cf_source" $MANPAGE_RENAMES | $AWK '{print \[$]2}'\`
+ if test -z "\$cf_target" ; then
+ echo '? missing rename for '\$cf_source
+ cf_target="\$cf_source"
fi
- target="$cf_subdir\${section}/\${target}"
+ cf_target="\$cf_subdir\${section}/\${cf_target}"
CF_EOF
fi
@@ -1810,118 +2929,134 @@ fi
ifelse($1,,,[
for cf_name in $1
do
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
prog_$cf_name=\`echo $cf_name|sed "\${transform}"\`
CF_EOF
done
])
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
sed -e "s,@DATADIR@,\$datadir," \\
-e "s,@TERMINFO@,\$TERMINFO," \\
+ -e "s,@NCURSES_MAJOR@,\$NCURSES_MAJOR," \\
+ -e "s,@NCURSES_MINOR@,\$NCURSES_MINOR," \\
+ -e "s,@NCURSES_PATCH@,\$NCURSES_PATCH," \\
-e "s,@NCURSES_OSPEED@,\$NCURSES_OSPEED," \\
CF_EOF
+
ifelse($1,,,[
for cf_name in $1
do
cf_NAME=`echo "$cf_name" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
-e "s,@$cf_NAME@,\$prog_$cf_name," \\
CF_EOF
done
])
+
if test -f $MANPAGE_RENAMES ; then
-cat >>man/edit_man.sh <<CF_EOF
- < \$i | sed -f edit_man.sed >\$TMP
+cat >>$cf_edit_man <<CF_EOF
+ < \$i | sed -f `pwd`/edit_man.sed >\$TMP
CF_EOF
else
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
< \$i >\$TMP
CF_EOF
fi
-if test $MANPAGE_TBL = yes ; then
-cat >>man/edit_man.sh <<CF_EOF
+
+cat >>$cf_edit_man <<CF_EOF
+if test \$cf_tables = yes ; then
tbl \$TMP >\$TMP.out
mv \$TMP.out \$TMP
-CF_EOF
fi
+CF_EOF
+
if test $with_curses_h != yes ; then
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
sed -e "/\#[ ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out
mv \$TMP.out \$TMP
CF_EOF
fi
-if test $cf_format = yes ; then
-cat >>man/edit_man.sh <<CF_EOF
- nroff -man \$TMP >\$TMP.out
- mv \$TMP.out \$TMP
-CF_EOF
-fi
-case "$MANPAGE_FORMAT" in #(vi
-*compress*) #(vi
-cat >>man/edit_man.sh <<CF_EOF
- if test \$verb = installing ; then
- if ( compress -f \$TMP )
- then
- mv \$TMP.Z \$TMP
- fi
+
+cat >>$cf_edit_man <<CF_EOF
+ if test \$form = format ; then
+ nroff -man \$TMP >\$TMP.out
+ mv \$TMP.out \$TMP
fi
- target="\$target.Z"
CF_EOF
- ;;
-*gzip*) #(vi
-cat >>man/edit_man.sh <<CF_EOF
+
+if test -n "$cf_compress" ; then
+cat >>$cf_edit_man <<CF_EOF
if test \$verb = installing ; then
- if ( gzip -f \$TMP )
+ if ( $cf_compress -f \$TMP )
then
- mv \$TMP.gz \$TMP
+ mv \$TMP.$cf_so_strip \$TMP
fi
fi
- target="\$target.gz"
+ cf_target="\$cf_target.$cf_so_strip"
CF_EOF
- ;;
+fi
+
+case "$MANPAGE_FORMAT" in #(vi
*BSDI*)
-cat >>man/edit_man.sh <<CF_EOF
- # BSDI installs only .0 suffixes in the cat directories
- target="\`echo \$target|sed -e 's/\.[[1-9]]\+.\?/.0/'\`"
+cat >>$cf_edit_man <<CF_EOF
+ if test \$form = format ; then
+ # BSDI installs only .0 suffixes in the cat directories
+ cf_target="\`echo \$cf_target|sed -e 's/\.[[1-9]]\+[[a-z]]*/.0/'\`"
+ fi
CF_EOF
;;
esac
-cat >>man/edit_man.sh <<CF_EOF
- suffix=\`basename \$target | sed -e 's/^[[^.]]*//'\`
+
+cat >>$cf_edit_man <<CF_EOF
+ suffix=\`basename \$cf_target | sed -e 's%^[[^.]]*%%'\`
if test \$verb = installing ; then
- echo \$verb \$target
- \$INSTALL_DATA \$TMP \$target
+ echo \$verb \$cf_target
+ \$INSTALL_DATA \$TMP \$cf_target
test -n "\$aliases" && (
- cd $cf_subdir\${section} && (
- target=\`basename \$target\`
+ cd \$cf_subdir\${section} && (
+ cf_source=\`echo \$cf_target |sed -e 's%^.*/\([[^/]][[^/]]*/[[^/]][[^/]]*$\)%\1%'\`
+ test -n "$cf_so_strip" && cf_source=\`echo \$cf_source |sed -e 's%\.$cf_so_strip\$%%'\`
+ cf_target=\`basename \$cf_target\`
for cf_alias in \$aliases
do
if test \$section = 1 ; then
cf_alias=\`echo \$cf_alias|sed "\${transform}"\`
fi
- if test -f \$cf_alias\${suffix} ; then
- if ( cmp -s \$target \$cf_alias\${suffix} )
- then
- :
- else
- echo .. \$verb alias \$cf_alias\${suffix}
- rm -f \$cf_alias\${suffix}
- $LN_S \$target \$cf_alias\${suffix}
+ if test "$MANPAGE_SYMLINKS" = yes ; then
+ if test -f \$cf_alias\${suffix} ; then
+ if ( cmp -s \$cf_target \$cf_alias\${suffix} )
+ then
+ continue
+ fi
fi
- else
echo .. \$verb alias \$cf_alias\${suffix}
rm -f \$cf_alias\${suffix}
- $LN_S \$target \$cf_alias\${suffix}
+ $LN_S \$cf_target \$cf_alias\${suffix}
+ elif test "\$cf_target" != "\$cf_alias\${suffix}" ; then
+ echo ".so \$cf_source" >\$TMP
+CF_EOF
+if test -n "$cf_compress" ; then
+cat >>$cf_edit_man <<CF_EOF
+ if test -n "$cf_so_strip" ; then
+ $cf_compress -f \$TMP
+ mv \$TMP.$cf_so_strip \$TMP
+ fi
+CF_EOF
+fi
+cat >>$cf_edit_man <<CF_EOF
+ echo .. \$verb alias \$cf_alias\${suffix}
+ rm -f \$cf_alias\${suffix}
+ \$INSTALL_DATA \$TMP \$cf_alias\${suffix}
fi
done
)
)
elif test \$verb = removing ; then
- echo \$verb \$target
- rm -f \$target
+ echo \$verb \$cf_target
+ rm -f \$cf_target
test -n "\$aliases" && (
- cd $cf_subdir\${section} && (
+ cd \$cf_subdir\${section} && (
for cf_alias in \$aliases
do
if test \$section = 1 ; then
@@ -1940,12 +3075,21 @@ cat >>man/edit_man.sh <<CF_EOF
;;
esac
done
+
+if test $cf_inboth = yes ; then
+if test \$form != format ; then
+ sh \[$]0 format \$verb \$mandir \$srcdir \[$]*
+fi
+fi
+
exit 0
CF_EOF
-chmod 755 man/edit_man.sh
+chmod 755 $cf_edit_man
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_MATH_LIB version: 5 updated: 2000/05/28 01:39:10
+dnl -----------
dnl Checks for libraries. At least one UNIX system, Apple Macintosh
dnl Rhapsody 5.5, does not have -lm. We cannot use the simpler
dnl AC_CHECK_LIB(m,sin), because that fails for C++.
@@ -1968,42 +3112,23 @@ ifelse($1,,[
fi
])
dnl ---------------------------------------------------------------------------
-dnl Check if mbstate_t is declared, and if so, which header file.
-AC_DEFUN([CF_MBSTATE_T],
-[
-# This is needed on Tru64 5.0 to declare mbstate_t
-AC_CACHE_CHECK(if we must include wchar.h to declare mbstate_t,cf_cv_mbstate_t,[
-AC_TRY_COMPILE([
-#include <stdlib.h>
-#ifdef HAVE_LIBUTF8_H
-#include <libutf8.h>
-#endif],
- [mbstate_t state],
- [cf_cv_mbstate_t=no],
- [AC_TRY_COMPILE([
-#include <stdlib.h>
-#include <wchar.h>
-#ifdef HAVE_LIBUTF8_H
-#include <libutf8.h>
-#endif],
- [mbstate_t value],
- [cf_cv_mbstate_t=yes],
- [cf_cv_mbstate_t=unknown])])])
-
-if test "$cf_cv_mbstate_t" = yes ; then
- AC_DEFINE(NEED_WCHAR_H)
-fi
-
-if test "$cf_cv_mbstate_t" != unknown ; then
- AC_DEFINE(HAVE_MBSTATE_T)
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
+dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55
+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.
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*|*-mingw32*|*-uwin*) #(vi
+ cf_cv_mixedcase=no
+ ;;
+ *)
+ cf_cv_mixedcase=yes
+ ;;
+ esac
+else
rm -f conftest CONFTEST
echo test >conftest
if test -f CONFTEST ; then
@@ -2012,10 +3137,13 @@ AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[
cf_cv_mixedcase=yes
fi
rm -f conftest CONFTEST
+fi
])
test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_MKSTEMP version: 5 updated: 2006/12/16 12:33:30
+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],[
@@ -2052,7 +3180,7 @@ int main()
if (result == 0
&& !strcmp(name[0], name[1]))
result = 1;
- exit(result);
+ ${cf_cv_main_return:-return}(result);
}
],[cf_cv_func_mkstemp=yes
],[cf_cv_func_mkstemp=no
@@ -2064,6 +3192,80 @@ if test "$cf_cv_func_mkstemp" = yes ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_MSG_LOG version: 3 updated: 1997/09/07 14:05:52
+dnl ----------
+dnl Write a debug message to config.log, along with the line number in the
+dnl configure script.
+AC_DEFUN([CF_MSG_LOG],[
+echo "(line __oline__) testing $* ..." 1>&AC_FD_CC
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_NCURSES_ABI_6 version: 1 updated: 2005/09/17 18:42:49
+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.*)
+ cf_cv_rel_version=6.0
+ cf_cv_abi_version=6
+ AC_MSG_WARN(Overriding ABI version to $cf_cv_abi_version)
+ ;;
+ esac
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_NO_LEAKS_OPTION version: 4 updated: 2006/12/16 14:24:05
+dnl ------------------
+dnl see CF_WITH_NO_LEAKS
+AC_DEFUN([CF_NO_LEAKS_OPTION],[
+AC_MSG_CHECKING(if you want to use $1 for testing)
+AC_ARG_WITH($1,
+ [$2],
+ [AC_DEFINE($3)ifelse([$4],,[
+ $4
+])
+ : ${with_cflags:=-g}
+ : ${with_no_leaks:=yes}
+ with_$1=yes],
+ [with_$1=])
+AC_MSG_RESULT(${with_$1:-no})
+
+case .$with_cflags in #(vi
+.*-g*)
+ case .$CFLAGS in #(vi
+ .*-g*) #(vi
+ ;;
+ *)
+ CF_ADD_CFLAGS([-g])
+ ;;
+ esac
+ ;;
+esac
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_NUMBER_SYNTAX version: 1 updated: 2003/09/20 18:12:49
+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
+ ;;
+ *)
+ AC_MSG_ERROR($2 is not a number: $1)
+ ;;
+ esac
+else
+ AC_MSG_ERROR($2 value is empty)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_OBJ_SUBDIR version: 4 updated: 2002/02/23 20:38:31
+dnl -------------
dnl Compute the object-directory name from the given model name
AC_DEFUN([CF_OBJ_SUBDIR],
[
@@ -2082,6 +3284,8 @@ AC_DEFUN([CF_OBJ_SUBDIR],
esac
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_PATHSEP version: 3 updated: 2001/01/12 01:23:53
+dnl ----------
dnl Provide a value for the $PATH and similar separator
AC_DEFUN([CF_PATHSEP],
[
@@ -2093,11 +3297,19 @@ ifelse($1,,,[$1=$PATHSEP])
AC_SUBST(PATHSEP)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_PATH_SYNTAX version: 11 updated: 2006/09/02 08:55:46
+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
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"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
case ".[$]$1" in #(vi
.\[$]\(*\)*|.\'*\'*) #(vi
;;
@@ -2109,12 +3321,12 @@ case ".[$]$1" in #(vi
eval $1="[$]$1"
case ".[$]$1" in #(vi
.NONE/*)
- $1=`echo [$]$1 | sed -e s@NONE@$ac_default_prefix@`
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
;;
esac
;; #(vi
-.NONE/*)
- $1=`echo [$]$1 | sed -e s@NONE@$ac_default_prefix@`
+.no|.NONE/*)
+ $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%`
;;
*)
ifelse($2,,[AC_ERROR([expected a pathname, not \"[$]$1\"])],$2)
@@ -2122,28 +3334,256 @@ case ".[$]$1" in #(vi
esac
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_POSIX_C_SOURCE version: 6 updated: 2005/07/14 20:25:10
+dnl -----------------
+dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed.
+dnl
+dnl POSIX.1-1990 _POSIX_SOURCE
+dnl POSIX.1-1990 and _POSIX_SOURCE and
+dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2
+dnl Bindings Option
+dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L
+dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L
+dnl X/Open 2000 _POSIX_C_SOURCE=200112L
+dnl
+dnl Parameters:
+dnl $1 is the nominal value for _POSIX_C_SOURCE
+AC_DEFUN([CF_POSIX_C_SOURCE],
+[
+cf_POSIX_C_SOURCE=ifelse($1,,199506L,$1)
+
+cf_save_CFLAGS="$CFLAGS"
+cf_save_CPPFLAGS="$CPPFLAGS"
+
+CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE)
+CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE)
+
+AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[
+ CF_MSG_LOG(if the symbol is already defined go no further)
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif],
+ [cf_cv_posix_c_source=no],
+ [cf_want_posix_source=no
+ case .$cf_POSIX_C_SOURCE in #(vi
+ .[[12]]??*) #(vi
+ cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
+ ;;
+ .2) #(vi
+ 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
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifdef _POSIX_SOURCE
+make an error
+#endif],[],
+ cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE")
+ fi
+ CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE)
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_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
+make an error
+#endif],,
+ [cf_cv_posix_c_source=no])
+ CFLAGS="$cf_save_CFLAGS"
+ CPPFLAGS="$cf_save_CPPFLAGS"
+ ])
+])
+
+if test "$cf_cv_posix_c_source" != no ; then
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+ if test "$cf_cv_cc_u_d_options" = yes ; then
+ cf_temp_posix_c_source=`echo "$cf_cv_posix_c_source" | \
+ sed -e 's/-D/-U/g' -e 's/=[[^ ]]*//g'`
+ CPPFLAGS="$CPPFLAGS $cf_temp_posix_c_source"
+ fi
+ CPPFLAGS="$CPPFLAGS $cf_cv_posix_c_source"
+fi
+
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PREDEFINE version: 1 updated: 2003/07/26 17:53:56
+dnl ------------
+dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles.
+dnl
+dnl $1 = symbol to test
+dnl $2 = value (if any) to use for a predefinition
+AC_DEFUN([CF_PREDEFINE],
+[
+AC_MSG_CHECKING(if we must define $1)
+AC_TRY_COMPILE([#include <sys/types.h>
+],[
+#ifndef $1
+make an error
+#endif],[cf_result=no],[cf_result=yes])
+AC_MSG_RESULT($cf_result)
+
+if test "$cf_result" = yes ; then
+ CPPFLAGS="$CPPFLAGS ifelse($2,,-D$1,[-D$1=$2])"
+elif test "x$2" != "x" ; then
+ AC_MSG_CHECKING(checking for compatible value versus $2)
+ AC_TRY_COMPILE([#include <sys/types.h>
+],[
+#if $1-$2 < 0
+make an error
+#endif],[cf_result=yes],[cf_result=no])
+ AC_MSG_RESULT($cf_result)
+ if test "$cf_result" = no ; then
+ # perhaps we can override it - try...
+ CPPFLAGS="$CPPFLAGS -D$1=$2"
+ fi
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PRG_RULES version: 1 updated: 2006/06/03 11:45:08
+dnl ------------
+dnl Append definitions and rules for the given programs to the subdirectory
+dnl Makefiles, and the recursion rule for the top-level Makefile.
+dnl
+dnl parameters
+dnl $1 = script to run
+dnl $2 = list of subdirectories
+dnl
+dnl variables
+dnl $AWK
+AC_DEFUN([CF_PRG_RULES],
+[
+for cf_dir in $2
+do
+ if test ! -d $srcdir/$cf_dir; then
+ continue
+ elif test -f $srcdir/$cf_dir/programs; then
+ $AWK -f $1 $srcdir/$cf_dir/programs >>$cf_dir/Makefile
+ fi
+done
+
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59
+dnl -----------
+dnl Check for awk, ensure that the check found something.
+AC_DEFUN([CF_PROG_AWK],
+[
+AC_PROG_AWK
+test -z "$AWK" && AC_MSG_ERROR(No awk program found)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PROG_CC_C_O version: 2 updated: 2006/12/16 15:55:46
+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
+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
+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()
+{
+ ${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'
+if AC_TRY_EVAL(ac_try) &&
+ test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try);
+then
+ eval cf_cv_prog_$1_c_o=yes
+else
+ eval cf_cv_prog_$1_c_o=no
+fi
+rm -f conftest*
+])dnl
+if test $cf_cv_prog_$1_c_o = yes; then
+ AC_MSG_RESULT([yes])
+else
+ AC_MSG_RESULT([no])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PROG_CC_U_D version: 1 updated: 2005/07/14 16:59:30
+dnl --------------
+dnl Check if C (preprocessor) -U and -D options are processed in the order
+dnl given rather than by type of option. Some compilers insist on apply all
+dnl of the -U options after all of the -D options. Others allow mixing them,
+dnl and may predefine symbols that conflict with those we define.
+AC_DEFUN([CF_PROG_CC_U_D],
+[
+AC_CACHE_CHECK(if $CC -U and -D options work together,cf_cv_cc_u_d_options,[
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="-UU_D_OPTIONS -DU_D_OPTIONS -DD_U_OPTIONS -UD_U_OPTIONS"
+ AC_TRY_COMPILE([],[
+#ifndef U_D_OPTIONS
+make an undefined-error
+#endif
+#ifdef D_U_OPTIONS
+make a defined-error
+#endif
+ ],[
+ cf_cv_cc_u_d_options=yes],[
+ cf_cv_cc_u_d_options=no])
+ CPPFLAGS="$cf_save_CPPFLAGS"
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PROG_EGREP version: 1 updated: 2006/09/16 11:40:59
+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)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_PROG_EXT version: 10 updated: 2004/01/03 19:28:18
+dnl -----------
dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX.
AC_DEFUN([CF_PROG_EXT],
[
AC_REQUIRE([CF_CHECK_CACHE])
-PROG_EXT=
case $cf_cv_system_name in
os2*)
- # We make sure -Zexe is not used -- it would interfere with @PROG_EXT@
CFLAGS="$CFLAGS -Zmt"
CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
CXXFLAGS="$CXXFLAGS -Zmt"
- LDFLAGS=`echo "$LDFLAGS -Zmt -Zcrtdll" | sed "s/-Zexe//g"`
- PROG_EXT=".exe"
- ;;
-cygwin*)
- PROG_EXT=".exe"
+ # autoconf's macro sets -Zexe and suffix both, which conflict:w
+ LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
+ ac_cv_exeext=.exe
;;
esac
+
+AC_EXEEXT
+AC_OBJEXT
+
+PROG_EXT="$EXEEXT"
AC_SUBST(PROG_EXT)
test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT")
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_PROG_INSTALL version: 5 updated: 2002/12/21 22:46:07
+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
@@ -2155,11 +3595,41 @@ case $INSTALL in
*)
CF_DIRNAME(cf_dir,$INSTALL)
test -z "$cf_dir" && cf_dir=.
- INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's:^.*/::'`
+ INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
;;
esac
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_PROG_LDCONFIG version: 1 updated: 2003/09/20 17:07:55
+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=:
+else
+case "$cf_cv_system_name" in #(vi
+freebsd*) #(vi
+ 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: 1 updated: 2006/09/16 11:40:59
+dnl ------------
+AC_DEFUN([CF_PROG_LINT],
+[
+AC_CHECK_PROGS(LINT, tdlint lint alint)
+AC_SUBST(LINT_OPTS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_REGEX version: 3 updated: 1997/11/01 14:26:01
+dnl --------
dnl Attempt to determine if we've got one of the flavors of regular-expression
dnl code that we can support.
AC_DEFUN([CF_REGEX],
@@ -2192,14 +3662,35 @@ case $cf_cv_regex in
esac
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_REMOVE_DEFINE version: 2 updated: 2005/07/09 16:12:18
+dnl ----------------
+dnl Remove all -U and -D options that refer to the given symbol from a list
+dnl of C compiler options. This works around the problem that not all
+dnl compilers process -U and -D options from left-to-right, so a -U option
+dnl cannot be used to cancel the effect of a preceding -D option.
+dnl
+dnl $1 = target (which could be the same as the source variable)
+dnl $2 = source (including '$')
+dnl $3 = symbol to remove
+define([CF_REMOVE_DEFINE],
+[
+# remove $3 symbol from $2
+$1=`echo "$2" | \
+ sed -e 's/-[[UD]]$3\(=[[^ ]]*\)\?[[ ]]/ /g' \
+ -e 's/-[[UD]]$3\(=[[^ ]]*\)\?[$]//g'`
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_SHARED_OPTS version: 41 updated: 2006/12/09 12:32:00
+dnl --------------
+dnl --------------
dnl Attempt to determine the appropriate CC/LD options for creating a shared
dnl library.
dnl
-dnl Note: $(LOCAL_LDFLAGS) is used to link executables that will run within the
+dnl Note: ${LOCAL_LDFLAGS} is used to link executables that will run within the
dnl build-tree, i.e., by making use of the libraries that are compiled in ../lib
dnl We avoid compiling-in a ../lib path for the shared library since that can
dnl lead to unexpected results at runtime.
-dnl $(LOCAL_LDFLAGS2) has the same intention but assumes that the shared libraries
+dnl ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared libraries
dnl are compiled in ../../lib
dnl
dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure
@@ -2262,89 +3753,116 @@ AC_DEFUN([CF_SHARED_OPTS],
case $cf_cv_system_name in
beos*)
- MK_SHARED_LIB='$(CC) -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
+ MK_SHARED_LIB='${CC} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
;;
cygwin*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='$(CC) -shared -Wl,--out-implib=$(IMPORT_LIB) -Wl,--export-all-symbols -o $(SHARED_LIB)'
+ MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,--out-implib=../lib/${IMPORT_LIB} -Wl,--export-all-symbols -o ../lib/${SHARED_LIB}'
cf_cv_shlib_version=cygdll
cf_cv_shlib_version_infix=cygdll
;;
darwin*)
EXTRA_CFLAGS="-no-cpp-precomp"
CC_SHARED_OPTS="-dynamic"
- MK_SHARED_LIB='$(CC) -dynamiclib -install_name $(DESTDIR)$(libdir)/`basename $[@]` -compatibility_version $(ABI_VERSION) -current_version $(ABI_VERSION) -o $[@]'
+ MK_SHARED_LIB='${CC} ${CFLAGS} -dynamiclib -install_name ${DESTDIR}${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, [
+ cf_save_LDFLAGS=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ AC_TRY_LINK(, [int i;], cf_cv_ldflags_search_paths_first=yes, cf_cv_ldflags_search_paths_first=no)
+ LDFLAGS=$cf_save_LDFLAGS])
+ if test $cf_cv_ldflags_search_paths_first = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ fi
;;
hpux*)
# (tested with gcc 2.7.2 -- I don't have c89)
if test "$GCC" = yes; then
- LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
+ LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
else
CC_SHARED_OPTS='+Z'
- LD_SHARED_OPTS='-Wl,+b,$(libdir)'
+ LD_SHARED_OPTS='-Wl,+b,${libdir}'
fi
- MK_SHARED_LIB='$(LD) +b $(libdir) -b -o $[@]'
+ MK_SHARED_LIB='${LD} +b ${libdir} -b -o $[@]'
# HP-UX shared libraries must be executable, and should be
# readonly to exploit a quirk in the memory manager.
INSTALL_LIB="-m 555"
;;
irix*)
if test "$cf_cv_ld_rpath" = yes ; then
- cf_ld_rpath_opt="-Wl,-rpath,"
- EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
+ if test "$GCC" = yes; then
+ cf_ld_rpath_opt="-Wl,-rpath,"
+ EXTRA_LDFLAGS="-Wl,-rpath,\${libdir} $EXTRA_LDFLAGS"
+ else
+ cf_ld_rpath_opt="-rpath "
+ EXTRA_LDFLAGS="-rpath \${libdir} $EXTRA_LDFLAGS"
+ fi
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $[@]` -o $[@]'
+ MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
cf_cv_rm_so_locs=yes
;;
- linux*|gnu*)
+ linux*|gnu*|k*bsd*-gnu)
if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
+ LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_ld_rpath" = yes ; then
cf_ld_rpath_opt="-Wl,-rpath,"
- EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="-Wl,-rpath,\${libdir} $EXTRA_LDFLAGS"
fi
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $[@]'
+ CF_SHARED_SONAME
+ MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_shared_soname',-stats,-lc -o $[@]'
;;
openbsd2*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $[@].$(ABI_VERSION)` -o $[@]'
+ MK_SHARED_LIB='${LD} -Bshareable -soname,`basename $[@].${ABI_VERSION}` -o $[@]'
;;
- openbsd*|freebsd*)
+ openbsd*|freebsd[[23]]*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
+ MK_SHARED_LIB='${LD} -Bshareable -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
+ freebsd*)
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
+ if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_ld_rpath" = yes ; then
+ LOCAL_LDFLAGS="-rpath \$(LOCAL_LIBDIR)"
+ LOCAL_LDFLAGS2="-rpath \${libdir} $LOCAL_LDFLAGS"
+ cf_ld_rpath_opt="-rpath "
+ EXTRA_LDFLAGS="-rpath \${libdir} $EXTRA_LDFLAGS"
+ fi
+ CF_SHARED_SONAME
+ MK_SHARED_LIB='${LD} -Bshareable -soname=`basename $[@]` -o $[@]'
+ ;;
netbsd*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
test "$cf_cv_ld_rpath" = yes && cf_ld_rpath_opt="-Wl,-rpath,"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_ld_rpath" = yes ; then
- LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
+ LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
+ EXTRA_LDFLAGS="-Wl,-rpath,\${libdir} $EXTRA_LDFLAGS"
if test "$cf_cv_shlib_version" = auto; then
- if test ! -f /usr/libexec/ld.elf_so; then
+ if test -f /usr/libexec/ld.elf_so; then
+ cf_cv_shlib_version=abi
+ else
cf_cv_shlib_version=rel
fi
fi
+ CF_SHARED_SONAME
+ MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_shared_soname' -o $[@]'
else
- MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
+ MK_SHARED_LIB='${LD} -Bshareable -o $[@]'
fi
;;
osf*|mls+*)
# tested with OSF/1 V3.2 and 'cc'
# tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
# link with shared libs).
- MK_SHARED_LIB='$(LD) -set_version $(REL_VERSION):$(ABI_VERSION) -expect_unresolved "*" -shared -soname `basename $[@]`'
+ MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`'
case $host_os in
osf4*)
MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
@@ -2352,7 +3870,7 @@ AC_DEFUN([CF_SHARED_OPTS],
esac
MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]'
if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
+ LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_ld_rpath" = yes ; then
@@ -2363,48 +3881,48 @@ AC_DEFUN([CF_SHARED_OPTS],
;;
sco3.2v5*) # (also uw2* and UW7) hops 13-Apr-98
# tested with osr5.0.5
- if test "$ac_cv_prog_gcc" != yes; then
+ 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} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@'
if test "$cf_cv_ld_rpath" = yes ; then
# only way is to set LD_RUN_PATH but no switch for it
RUN_PATH=$libdir
fi
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- LINK_PROGS='LD_RUN_PATH=$(libdir)'
+ LINK_PROGS='LD_RUN_PATH=${libdir}'
LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
;;
sunos4*)
# tested with SunOS 4.1.1 and gcc 2.7.0
- if test "$ac_cv_prog_gcc" != yes; then
+ if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -assert pure-text -o $[@]'
+ MK_SHARED_LIB='${LD} -assert pure-text -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
solaris2*)
# tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
- if test "$ac_cv_prog_gcc" != yes; then
+ if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="-R `pwd`/lib:\$(libdir)"
+ LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_ld_rpath" = yes ; then
cf_ld_rpath_opt="-R"
EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
fi
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ CF_SHARED_SONAME
+ MK_SHARED_LIB='${CC} -dy -G -h '$cf_shared_soname' -o $[@]'
;;
sysv5uw7*|unix_sv*)
# tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
- if test "$ac_cv_prog_gcc" != yes; then
+ if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -d y -G -o [$]@'
+ MK_SHARED_LIB='${LD} -d y -G -o [$]@'
;;
*)
CC_SHARED_OPTS='unknown'
@@ -2434,7 +3952,7 @@ AC_DEFUN([CF_SHARED_OPTS],
LIBS="$cf_save_LIBS"
AC_MSG_RESULT($cf_rpath_space)
test "$cf_rpath_space" = yes && cf_ld_rpath_opt="$cf_ld_rpath_opt "
- MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\$(libdir)"
+ MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}"
fi
AC_SUBST(CC_SHARED_OPTS)
@@ -2448,6 +3966,85 @@ AC_DEFUN([CF_SHARED_OPTS],
AC_SUBST(INSTALL_LIB)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_SHARED_SONAME version: 2 updated: 2006/10/21 12:33:41
+dnl ----------------
+dnl utility macro for CF_SHARED_OPTS, constructs "$cf_shared_soname" for
+dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar)
+dnl option.
+dnl
+dnl $1 is the default that should be used for "$cf_cv_shlib_version".
+dnl If missing, use "rel".
+define([CF_SHARED_SONAME],
+[
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1)
+ if test "$cf_cv_shlib_version" = rel; then
+ cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_shared_soname='`basename $[@]`'
+ fi
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_SIGWINCH version: 1 updated: 2006/04/02 16:41:09
+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 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_SIZECHANGE version: 8 updated: 2000/11/04 12:22:16
+dnl -------------
dnl Check for definitions & structures needed for window size-changing
dnl FIXME: check that this works with "snake" (HP-UX 10.x)
AC_DEFUN([CF_SIZECHANGE],
@@ -2516,6 +4113,8 @@ if test "$cf_cv_sizechange" != no ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_SRC_MODULES version: 18 updated: 2005/05/28 12:58:54
+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
dnl use in CF_LIB_RULES.
@@ -2528,15 +4127,15 @@ AC_MSG_CHECKING(for src modules)
# dependencies and linker-arguments for test-programs
TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
+TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEP2"
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"
fi
-# dependencies and linker-arguments for utility-programs
-PROG_ARGS="$TEST_ARGS"
-
cf_cv_src_modules=
for cf_dir in $1
do
@@ -2567,21 +4166,27 @@ do
AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H)
AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include})
TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
+ TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEP2"
if test "$DFT_LWR_MODEL" = "libtool"; then
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"
fi
fi
fi
done
AC_MSG_RESULT($cf_cv_src_modules)
+
TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
-AC_SUBST(TEST_DEPS)
+TEST_ARG2="-L${LIB_2ND} $TEST_ARG2"
+
AC_SUBST(TEST_ARGS)
+AC_SUBST(TEST_DEPS)
-PROG_ARGS="-L${LIB_DIR} $PROG_ARGS"
-AC_SUBST(PROG_ARGS)
+AC_SUBST(TEST_ARG2)
+AC_SUBST(TEST_DEP2)
SRC_SUBDIRS="man include"
for cf_dir in $cf_cv_src_modules
@@ -2613,6 +4218,8 @@ if test -n "$ADA_SUBDIRS"; then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_STDCPP_LIBRARY version: 5 updated: 2000/08/12 23:18:52
+dnl -----------------
dnl Check for -lstdc++, which is GNU's standard C++ library.
AC_DEFUN([CF_STDCPP_LIBRARY],
[
@@ -2641,10 +4248,14 @@ test "$cf_cv_libstdcpp" = yes && CXXLIBS="$CXXLIBS -l$cf_stdcpp_libname"
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_STRIP_G_OPT version: 3 updated: 2002/12/21 19:25:52
+dnl --------------
dnl Remove "-g" option from the compiler options
AC_DEFUN([CF_STRIP_G_OPT],
-[$1=`echo ${$1} | sed -e 's/-g //' -e 's/-g$//'`])dnl
+[$1=`echo ${$1} | sed -e 's%-g %%' -e 's%-g$%%'`])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_STRUCT_SIGACTION version: 3 updated: 2000/08/12 23:18:52
+dnl -------------------
dnl Check if we need _POSIX_SOURCE defined to use struct sigaction. We'll only
dnl do this if we've found the sigaction function.
dnl
@@ -2670,6 +4281,8 @@ AC_MSG_RESULT($sigact_bad)
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_STRUCT_TERMIOS version: 5 updated: 2000/11/04 12:22:46
+dnl -----------------
dnl Some machines require _POSIX_SOURCE to completely define struct termios.
dnl If so, define SVR4_TERMIO
AC_DEFUN([CF_STRUCT_TERMIOS],[
@@ -2704,6 +4317,8 @@ if test "$ac_cv_header_termios_h" = yes ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_SUBST version: 4 updated: 2006/06/17 12:33:03
+dnl --------
dnl Shorthand macro for substituting things that the user may override
dnl with an environment variable.
dnl
@@ -2713,19 +4328,40 @@ dnl $3 = default value
AC_DEFUN([CF_SUBST],
[AC_CACHE_VAL(cf_cv_subst_$2,[
AC_MSG_CHECKING(for $1 (symbol $2))
-test -z "[$]$2" && $2=$3
+CF_SUBST_IF([-z "[$]$2"], [$2], [$3])
+cf_cv_subst_$2=[$]$2
AC_MSG_RESULT([$]$2)
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_SUBST_IF version: 2 updated: 2006/06/17 12:33:03
+dnl -----------
+dnl Shorthand macro for substituting things that the user may override
+dnl with an environment variable.
+dnl
+dnl $1 = condition to pass to "test"
+dnl $2 = environment variable
+dnl $3 = value if the test succeeds
+dnl $4 = value if the test fails
+AC_DEFUN([CF_SUBST_IF],
+[
+if test $1 ; then
+ $2=$3
+ifelse($4,,,[else
+ $2=$4])
+fi
AC_SUBST($2)
-cf_cv_subst_$2=[$]$2])
-$2=${cf_cv_subst_$2}
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_SUBST_NCURSES_VERSION version: 8 updated: 2006/09/16 11:40:59
+dnl ------------------------
dnl Get the version-number for use in shared-library naming, etc.
AC_DEFUN([CF_SUBST_NCURSES_VERSION],
[
-NCURSES_MAJOR="`egrep '^NCURSES_MAJOR[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
-NCURSES_MINOR="`egrep '^NCURSES_MINOR[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
-NCURSES_PATCH="`egrep '^NCURSES_PATCH[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
+AC_REQUIRE([CF_PROG_EGREP])
+NCURSES_MAJOR="`$ac_cv_prog_egrep '^NCURSES_MAJOR[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
+NCURSES_MINOR="`$ac_cv_prog_egrep '^NCURSES_MINOR[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
+NCURSES_PATCH="`$ac_cv_prog_egrep '^NCURSES_PATCH[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`"
cf_cv_abi_version=${NCURSES_MAJOR}
cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
dnl Show the computed version, for logging
@@ -2738,12 +4374,13 @@ AC_SUBST(NCURSES_PATCH)
dnl We need these values in the generated makefiles
AC_SUBST(cf_cv_rel_version)
AC_SUBST(cf_cv_abi_version)
-AC_SUBST(cf_cv_cc_bool_type)
AC_SUBST(cf_cv_builtin_bool)
AC_SUBST(cf_cv_header_stdbool_h)
AC_SUBST(cf_cv_type_of_bool)dnl
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_SYS_TIME_SELECT version: 4 updated: 2000/10/04 09:18:40
+dnl ------------------
dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
dnl older SCO configurations.
AC_DEFUN([CF_SYS_TIME_SELECT],
@@ -2765,41 +4402,39 @@ AC_MSG_RESULT($cf_cv_sys_time_select)
test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_TOP_BUILDDIR version: 1 updated: 2006/10/15 16:33:23
+dnl ---------------
+dnl Define a top_builddir symbol, for applications that need an absolute path.
+AC_DEFUN([CF_TOP_BUILDDIR],
+[
+top_builddir=`pwd`
+AC_SUBST(top_builddir)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_TYPEOF_CHTYPE version: 8 updated: 2006/12/16 12:33:30
+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
dnl long, but on newer 64-bit machines, probably want an int. If we're using
dnl wide characters, we have to have a type compatible with that, as well.
AC_DEFUN([CF_TYPEOF_CHTYPE],
[
-AC_REQUIRE([CF_UNSIGNED_LITERALS])
AC_MSG_CHECKING([for type of chtype])
AC_CACHE_VAL(cf_cv_typeof_chtype,[
AC_TRY_RUN([
-#ifdef USE_WIDEC_SUPPORT
-#include <stddef.h> /* we want wchar_t */
-#define WANT_BITS 39
-#else
#define WANT_BITS 31
-#endif
#include <stdio.h>
int main()
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
char *result = "long";
-#ifdef USE_WIDEC_SUPPORT
- /*
- * If wchar_t is smaller than a long, it must be an int or a
- * short. We prefer not to use a short anyway.
- */
- if (sizeof(unsigned long) > sizeof(wchar_t))
- result = "int";
-#endif
if (sizeof(unsigned long) > sizeof(unsigned int)) {
int n;
- unsigned int x;
+ unsigned int x, y;
for (n = 0; n < WANT_BITS; n++) {
- unsigned int y = (x >> n);
+ x = (1 << n);
+ y = (x >> n);
if (y != 1 || x == 0) {
x = 0;
break;
@@ -2814,7 +4449,7 @@ int main()
fputs(result, fp);
fclose(fp);
}
- exit(0);
+ ${cf_cv_main_return:-return}(0);
}
],
[cf_cv_typeof_chtype=`cat cf_test.out`],
@@ -2826,14 +4461,10 @@ AC_MSG_RESULT($cf_cv_typeof_chtype)
AC_SUBST(cf_cv_typeof_chtype)
AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype)
-
-cf_cv_1UL="1"
-test "$cf_cv_unsigned_literals" = yes && cf_cv_1UL="${cf_cv_1UL}U"
-test "$cf_cv_typeof_chtype" = long && cf_cv_1UL="${cf_cv_1UL}L"
-AC_SUBST(cf_cv_1UL)
-
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_TYPE_SIGACTION version: 3 updated: 2000/08/12 23:18:52
+dnl -----------------
dnl
AC_DEFUN([CF_TYPE_SIGACTION],
[
@@ -2848,6 +4479,8 @@ AC_MSG_RESULT($cf_cv_type_sigaction)
test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_UNSIGNED_LITERALS version: 2 updated: 1998/02/07 22:10:16
+dnl --------------------
dnl Test if the compiler supports 'U' and 'L' suffixes. Only old compilers
dnl won't, but they're still there.
AC_DEFUN([CF_UNSIGNED_LITERALS],
@@ -2861,6 +4494,8 @@ AC_CACHE_VAL(cf_cv_unsigned_literals,[
AC_MSG_RESULT($cf_cv_unsigned_literals)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59
+dnl --------
dnl Make an uppercase version of a variable
dnl $1=uppercase($2)
AC_DEFUN([CF_UPPER],
@@ -2868,11 +4503,277 @@ AC_DEFUN([CF_UPPER],
$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_VERBOSE version: 2 updated: 1997/09/05 10:45:14
+dnl ----------
dnl Use AC_VERBOSE w/o the warnings
AC_DEFUN([CF_VERBOSE],
[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_WCHAR_TYPE version: 2 updated: 2004/01/17 19:18:20
+dnl -------------
+dnl Check if type wide-character type $1 is declared, and if so, which header
+dnl file is needed. The second parameter is used to set a shell variable when
+dnl the type is not found. The first parameter sets a shell variable for the
+dnl opposite sense.
+AC_DEFUN([CF_WCHAR_TYPE],
+[
+# This is needed on Tru64 5.0 to declare $1
+AC_CACHE_CHECK(if we must include wchar.h to declare $1,cf_cv_$1,[
+AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#ifdef HAVE_LIBUTF8_H
+#include <libutf8.h>
+#endif],
+ [$1 state],
+ [cf_cv_$1=no],
+ [AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <wchar.h>
+#ifdef HAVE_LIBUTF8_H
+#include <libutf8.h>
+#endif],
+ [$1 value],
+ [cf_cv_$1=yes],
+ [cf_cv_$1=unknown])])])
+
+if test "$cf_cv_$1" = yes ; then
+ AC_DEFINE(NEED_WCHAR_H)
+ NEED_WCHAR_H=1
+fi
+
+ifelse($2,,,[
+# if we do not find $1 in either place, use substitution to provide a fallback.
+if test "$cf_cv_$1" = unknown ; then
+ $2=1
+fi
+])
+ifelse($3,,,[
+# if we find $1 in either place, use substitution to provide a fallback.
+if test "$cf_cv_$1" != unknown ; then
+ $3=1
+fi
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_ABI_VERSION version: 1 updated: 2003/09/20 18:12:49
+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,
+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_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)
+ifelse($1,,,[
+$1_ABI=$cf_cv_abi_version
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_DBMALLOC version: 6 updated: 2006/12/16 14:24:05
+dnl ----------------
+dnl Configure-option for dbmalloc. The optional parameter is used to override
+dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
+AC_DEFUN([CF_WITH_DBMALLOC],[
+CF_NO_LEAKS_OPTION(dbmalloc,
+ [ --with-dbmalloc test: use Conor Cahill's dbmalloc library],
+ [USE_DBMALLOC])
+
+if test "$with_dbmalloc" = yes ; then
+ AC_CHECK_HEADER(dbmalloc.h,
+ [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse($1,,[],[,$1]))])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_DMALLOC version: 6 updated: 2006/12/16 14:24:05
+dnl ---------------
+dnl Configure-option for dmalloc. The optional parameter is used to override
+dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests.
+AC_DEFUN([CF_WITH_DMALLOC],[
+CF_NO_LEAKS_OPTION(dmalloc,
+ [ --with-dmalloc test: use Gray Watson's dmalloc library],
+ [USE_DMALLOC])
+
+if test "$with_dmalloc" = yes ; then
+ AC_CHECK_HEADER(dmalloc.h,
+ [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse($1,,[],[,$1]))])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_GPM version: 6 updated: 2006/12/17 11:12:09
+dnl -----------
+dnl
+dnl The option parameter (if neither yes/no) is assumed to be the name of
+dnl the gpm library, e.g., for dynamic loading.
+AC_DEFUN([CF_WITH_GPM],
+[
+AC_MSG_CHECKING(if you want to link with the GPM mouse library)
+AC_ARG_WITH(gpm,
+ [ --with-gpm use Alessandro Rubini's GPM library],
+ [with_gpm=$withval],
+ [with_gpm=maybe])
+AC_MSG_RESULT($with_gpm)
+
+if test "$with_gpm" != no ; then
+ AC_CHECK_HEADER(gpm.h,[
+ AC_DEFINE(HAVE_GPM_H)
+ if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
+ CF_VERBOSE(assuming we really have GPM library)
+ AC_DEFINE(HAVE_LIBGPM)
+ else
+ AC_CHECK_LIB(gpm,Gpm_Open,[:],[
+ AC_ERROR(Cannot link with GPM library)
+ fi
+ with_gpm=yes
+ ])
+ ],[
+ test "$with_gpm" != maybe && AC_MSG_WARN(Cannot find GPM header)
+ with_gpm=no
+ ])
+fi
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_LIBTOOL version: 10 updated: 2006/10/14 15:23:15
+dnl ---------------
+dnl Provide a configure option to incorporate libtool. Define several useful
+dnl symbols for the makefile rules.
+dnl
+dnl The reference to AC_PROG_LIBTOOL does not normally work, since it uses
+dnl macros from libtool.m4 which is in the aclocal directory of automake.
+dnl Following is a simple script which turns on the AC_PROG_LIBTOOL macro.
+dnl But that still does not work properly since the macro is expanded outside
+dnl the CF_WITH_LIBTOOL macro:
+dnl
+dnl #!/bin/sh
+dnl ACLOCAL=`aclocal --print-ac-dir`
+dnl if test -z "$ACLOCAL" ; then
+dnl echo cannot find aclocal directory
+dnl exit 1
+dnl elif test ! -f $ACLOCAL/libtool.m4 ; then
+dnl echo cannot find libtool.m4 file
+dnl exit 1
+dnl fi
+dnl
+dnl LOCAL=aclocal.m4
+dnl ORIG=aclocal.m4.orig
+dnl
+dnl trap "mv $ORIG $LOCAL" 0 1 2 5 15
+dnl rm -f $ORIG
+dnl mv $LOCAL $ORIG
+dnl
+dnl # sed the LIBTOOL= assignment to omit the current directory?
+dnl sed -e 's/^LIBTOOL=.*/LIBTOOL=${LIBTOOL-libtool}/' $ACLOCAL/libtool.m4 >>$LOCAL
+dnl cat $ORIG >>$LOCAL
+dnl
+dnl autoconf-257 $*
+dnl
+AC_DEFUN([CF_WITH_LIBTOOL],
+[
+ifdef([AC_PROG_LIBTOOL],,[
+LIBTOOL=
+])
+# common library maintenance symbols that are convenient for libtool scripts:
+LIB_CREATE='${AR} -cr'
+LIB_OBJECT='${OBJECTS}'
+LIB_SUFFIX=.a
+LIB_PREP="$RANLIB"
+
+# symbols used to prop libtool up to enable it to determine what it should be
+# doing:
+LIB_CLEAN=
+LIB_COMPILE=
+LIB_LINK=
+LIB_INSTALL=
+LIB_UNINSTALL=
+
+AC_MSG_CHECKING(if you want to build libraries with libtool)
+AC_ARG_WITH(libtool,
+ [ --with-libtool generate libraries with libtool],
+ [with_libtool=$withval],
+ [with_libtool=no])
+AC_MSG_RESULT($with_libtool)
+if test "$with_libtool" != "no"; then
+ifdef([AC_PROG_LIBTOOL],[
+ # missing_content_AC_PROG_LIBTOOL{{
+ AC_PROG_LIBTOOL
+ # missing_content_AC_PROG_LIBTOOL}}
+],[
+ if test "$with_libtool" != "yes" ; then
+ CF_PATH_SYNTAX(with_libtool)
+ LIBTOOL=$with_libtool
+ else
+ AC_PATH_PROG(LIBTOOL,libtool)
+ fi
+ if test -z "$LIBTOOL" ; then
+ AC_MSG_ERROR(Cannot find libtool)
+ fi
+])dnl
+ LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${DESTDIR}${libdir} -version-info `cut -f1 ${srcdir}/VERSION` -o'
+ LIB_OBJECT='${OBJECTS}.o=.lo)'
+ LIB_SUFFIX=.la
+ LIB_CLEAN='${LIBTOOL} --mode=clean'
+ LIB_COMPILE='${LIBTOOL} --mode=compile'
+ LIB_LINK='${LIBTOOL} --mode=link'
+ LIB_INSTALL='${LIBTOOL} --mode=install'
+ LIB_UNINSTALL='${LIBTOOL} --mode=uninstall'
+ LIB_PREP=:
+
+ # Show the version of libtool
+ AC_MSG_CHECKING(version of libtool)
+
+ # Save the version in a cache variable - this is not entirely a good
+ # thing, but the version string from libtool is very ugly, and for
+ # bug reports it might be useful to have the original string.
+ cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '2,$d' -e 's/([[^)]]*)//g' -e 's/^[[^1-9]]*//' -e 's/[[^0-9.]].*//'`
+ AC_MSG_RESULT($cf_cv_libtool_version)
+ if test -z "$cf_cv_libtool_version" ; then
+ AC_MSG_ERROR(This is not libtool)
+ fi
+
+ # special hack to add --tag option for C++ compiler
+ case $cf_cv_libtool_version in
+ 1.[[5-9]]*|[[2-9]]*)
+ LIBTOOL_CXX="$LIBTOOL --tag=CXX"
+ ;;
+ *)
+ LIBTOOL_CXX="$LIBTOOL"
+ ;;
+ esac
+else
+ LIBTOOL=""
+ LIBTOOL_CXX=""
+fi
+
+test -z "$LIBTOOL" && ECHO_LT=
+
+AC_SUBST(LIBTOOL)
+AC_SUBST(LIBTOOL_CXX)
+
+AC_SUBST(LIB_CREATE)
+AC_SUBST(LIB_OBJECT)
+AC_SUBST(LIB_SUFFIX)
+AC_SUBST(LIB_PREP)
+
+AC_SUBST(LIB_CLEAN)
+AC_SUBST(LIB_COMPILE)
+AC_SUBST(LIB_LINK)
+AC_SUBST(LIB_INSTALL)
+AC_SUBST(LIB_UNINSTALL)
+
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_PATH version: 7 updated: 2006/08/03 15:20:08
+dnl ------------
dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just
dnl defaulting to yes/no.
dnl
@@ -2886,10 +4787,12 @@ AC_DEFUN([CF_WITH_PATH],
[AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),,
ifelse($4,,[withval="${$3}"],[withval="${$3-ifelse($5,,$4,$5)}"]))dnl
CF_PATH_SYNTAX(withval)
-eval $3="$withval"
+$3="$withval"
AC_SUBST($3)dnl
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_WITH_PATHLIST version: 5 updated: 2001/12/10 01:28:30
+dnl ----------------
dnl Process an option specifying a list of colon-separated paths.
dnl
dnl $1 = option name
@@ -2929,3 +4832,154 @@ eval '$3="$cf_dst_path"'
AC_SUBST($3)dnl
])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_REL_VERSION version: 1 updated: 2003/09/20 18:12:49
+dnl -------------------
+dnl Allow library's release-version to be overridden. Generally this happens when a
+dnl packager has incremented the release-version 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 corresponding {package}_MAJOR
+dnl and {package}_MINOR symbols
+dnl symbol.
+AC_DEFUN([CF_WITH_REL_VERSION],[
+test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0
+AC_ARG_WITH(rel-version,
+[ --with-rel-version=XXX override derived release version],
+[AC_MSG_WARN(overriding release version $cf_cv_rel_version to $withval)
+ cf_cv_rel_version=$withval])
+ifelse($1,,[
+ CF_NUMBER_SYNTAX($cf_cv_rel_version,Release version)
+],[
+ $1_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'`
+ $1_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[[^.]]*//' -e 's/^\.//' -e 's/\..*//'`
+ CF_NUMBER_SYNTAX([$]$1_MAJOR,Release major-version)
+ CF_NUMBER_SYNTAX([$]$1_MINOR,Release minor-version)
+])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_SYSMOUSE version: 2 updated: 2003/03/22 19:13:43
+dnl ----------------
+dnl If we can compile with sysmouse, make it available unless it is not wanted.
+AC_DEFUN([CF_WITH_SYSMOUSE],[
+# not everyone has "test -c"
+if test -c /dev/sysmouse 2>/dev/null ; then
+AC_MSG_CHECKING(if you want to use sysmouse)
+AC_ARG_WITH(sysmouse,
+ [ --with-sysmouse use sysmouse (FreeBSD console)],
+ [cf_with_sysmouse=$withval],
+ [cf_with_sysmouse=maybe])
+ if test "$cf_with_sysmouse" != no ; then
+ AC_TRY_COMPILE([
+#include <osreldate.h>
+#if (__FreeBSD_version >= 400017)
+#include <sys/consio.h>
+#include <sys/fbio.h>
+#else
+#include <machine/console.h>
+#endif
+],[
+ struct mouse_info the_mouse;
+ ioctl(0, CONS_MOUSECTL, &the_mouse);
+],[cf_with_sysmouse=yes],[cf_with_sysmouse=no])
+ fi
+AC_MSG_RESULT($cf_with_sysmouse)
+test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
+dnl ----------------
+AC_DEFUN([CF_WITH_VALGRIND],[
+CF_NO_LEAKS_OPTION(valgrind,
+ [ --with-valgrind test: use valgrind],
+ [USE_VALGRIND])
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_XOPEN_SOURCE version: 24 updated: 2006/04/02 16:41:09
+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,
+dnl without losing the common non-POSIX features.
+dnl
+dnl Parameters:
+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([CF_PROG_CC_U_D])
+
+cf_XOPEN_SOURCE=ifelse($1,,500,$1)
+cf_POSIX_C_SOURCE=ifelse($2,,199506L,$2)
+
+case $host_os in #(vi
+aix[[45]]*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_ALL_SOURCE"
+ ;;
+freebsd*) #(vi
+ # 5.x headers associate
+ # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
+ # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
+ cf_POSIX_C_SOURCE=200112L
+ cf_XOPEN_SOURCE=600
+ CPPFLAGS="$CPPFLAGS -D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ ;;
+hpux*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE"
+ ;;
+irix[[56]].*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_SGI_SOURCE"
+ ;;
+linux*|gnu*) #(vi
+ CF_GNU_SOURCE
+ ;;
+mirbsd*) #(vi
+ # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <arpa/inet.h>
+ ;;
+netbsd*) #(vi
+ # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+ ;;
+openbsd*) #(vi
+ # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
+ ;;
+osf[[45]]*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_OSF_SOURCE"
+ ;;
+nto-qnx*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_QNX_SOURCE"
+ ;;
+sco*) #(vi
+ # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
+ ;;
+solaris*) #(vi
+ CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
+ ;;
+*)
+ AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifndef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_cv_xopen_source=no],
+ [cf_save="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ AC_TRY_COMPILE([#include <sys/types.h>],[
+#ifdef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_cv_xopen_source=no],
+ [cf_cv_xopen_source=$cf_XOPEN_SOURCE])
+ CPPFLAGS="$cf_save"
+ ])
+])
+ if test "$cf_cv_xopen_source" != no ; then
+ CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
+ CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
+ test "$cf_cv_cc_u_d_options" = yes && \
+ CPPFLAGS="$CPPFLAGS -U_XOPEN_SOURCE"
+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_cv_xopen_source"
+ fi
+ CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
+ ;;
+esac
+])
diff --git a/contrib/ncurses/announce.html.in b/contrib/ncurses/announce.html.in
index e62db47cb32a..84d5bbe127c7 100644
--- a/contrib/ncurses/announce.html.in
+++ b/contrib/ncurses/announce.html.in
@@ -1,11 +1,39 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<!--
- $Id: announce.html.in,v 1.41 2000/10/28 21:43:25 tom Exp $
+ $Id: announce.html.in,v 1.64 2006/12/17 23:31:26 tom Exp $
+ ****************************************************************************
+ * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************
-->
<HTML>
<HEAD>
<TITLE>Announcing ncurses @VERSION@</TITLE>
<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY>
@@ -18,8 +46,8 @@ and multiple highlights and forms characters and function-key mapping,
and has all the other SYSV-curses enhancements over BSD curses.<P>
In mid-June 1995, the maintainer of 4.4BSD curses declared that he
-considered 4.4BSD curses obsolete, and is encouraging the keepers of
-Unix releases such as BSD/OS, freeBSD and netBSD to switch over to
+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>
The ncurses code was developed under GNU/Linux.
@@ -35,333 +63,305 @@ the library and tools.<P>
The ncurses distribution is available via anonymous FTP at
the GNU distribution site
-<A HREF="ftp://ftp.gnu.org/pub/gnu/ncurses">ftp://ftp.gnu.org/pub/gnu/ncurses</A>.
+<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://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
+<A HREF="ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</A>&nbsp;.
<H1>Release Notes</H1>
-This release is designed to be upward compatible from ncurses 5.0 and 5.1;
+This release is designed to be upward compatible from ncurses 5.0 through 5.5;
very few applications will require recompilation, depending on the platform.
-These are the highlights from the change-log since ncurses 5.1 release.
+These are the highlights from the change-log since ncurses 5.5 release.
<p>
Interface changes:
<ul>
- <li>change type of <code>ospeed</code> variable back to
- <code>short</code> to match its use in legacy applications. It was
- altered after ncurses 4.2 to <code>speed_t</code> to repair a type
- mismatch which was introduced after 1.9.4 in 1995. The principal
- users of termcap continued to use <code>short</code>, which is
- not the same size.
- <p>
- <em>NOTE</em>: A few applications will have to be recompiled
- (about 1% of the programs in a typical Linux distribution,
- 10% of the programs that use ncurses). These are easy to
- identify with <code>nm</code> or <code>strings</code>.
-
- <li>remove a private function <code>_nc_can_clear_with()</code>, which
- was built with the configure --enable-expanded option but not used.
-
- <li>add several private functions (prefixed with "_nc_") for tracing
- <code>chtype</code> values in the debug library, and for better
- access and buffer limit checking.
+ <li>generate linkable stubs for some macros:
+ <br>
+ getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx,
+ getpary, getpary,
+ <br>
+ and (for libncursesw)
+ <br>
+ wgetbkgrnd
+
</ul>
New features and improvements:
<ul>
- <li>rewrote <code>tgoto()</code> to make it better support existing
- termcap applications which use hardcoded strings rather than obtain
- all of their information from the termcap file. If the string does
- not appear to be a terminfo string (i.e., does not refer to a "%p"
- parameter, or terminfo-style padding), and termcap support is configured, <code>tgoto()</code>
- will interpret it as termcap. Otherwise, as before, it will use
- <code>tparm()</code>.
-
- <li>to ensure that the <code>tgoto()</code> changes work properly,
- added checks to <code>tic</code> which report capabilities that do
- not reference the expected number of parameters.
-
- <li>new configure script options:
+ <li>library
<ul>
- <li>option <code>--disable-root-environ</code> adds runtime checks
- which tell ncurses to disregard $TERMINFO and similar environment
- variables if the current user is root, or running setuid/setgid.
-
- <li>option <code>--disable-assumed-color</code> allows you to use the
- pre-5.1 convention of default colors used for color-pair 0 to be
- configured (see assume_default_colors()).
+ <li>support hashed databases for the terminal descriptions.
+ This uses the Berkeley database, has been tested for
+ several versions on different platforms.
+
+ <li>add <code>use_legacy_coding()</code> function to support
+ lynx's font-switching feature.
+
+ <li>add extension <code>nofilter()</code>, to cancel a prior
+ <code>filter()</code> call.
+
+ <li>add/install a package config script, e.g.,
+ <code>ncurses5-config</code> or
+ <code>ncursesw5-config</code>, according to
+ configuration options.
+
+ <li>provide ifdef for <code>NCURSES_NOMACROS</code> which
+ suppresses most macro definitions from curses.h, i.e.,
+ where a macro is defined to override a function to improve
+ performance.
+
+ <li>make ifdef's consistent in <code>curses.h</code> for the
+ extended colors so the header file can be used for the
+ normal curses library. The header file installed for
+ extended colors is a variation of the wide-character
+ configuration.
+
+ <li>improve <code>tgetstr()</code> by making the return value
+ point into the user's buffer, if provided.
+
+ <li>add ifdef's allowing ncurses to be built with
+ <code>tparm()</code> using either varargs (the existing
+ status), or using a fixed-parameter list (to match X/Open).
+
+ <li>widen the test for xterm <code>kmous</code> a little to
+ <code>allow</code> for other
+ strings than "\E[M", e.g., for <code>xterm-sco</code>
+ functionality in xterm.
+
+ <li>modify <code>wgetnstr()</code> to return
+ <code>KEY_RESIZE</code> if a sigwinch occurs.
+
+ <li>move prototypes for wide-character trace functions from
+ curses.tail to curses.wide to avoid accidental reference to
+ those if <code>_XOPEN_SOURCE_EXTENDED</code> is defined
+ without ensuring that &lt;wchar.h&gt; is included.
+
+ <li>change the way shared libraries (other than libtool) are
+ installed. Rather than copying the build-tree's libraries,
+ link the shared objects into the install directory. This
+ makes the <code>--with-rpath</code> option work except with
+ <code>$(DESTDIR)</code>.
+
+ <li>several improvements for rendering in hpterm. These are
+ only available if the library is configured using
+ <code>--enable-xmc-glitch</code>.
+
+ <li>Add <code>NCURSES_NO_HARD_TABS</code> and
+ <code>NCURSES_NO_MAGIC_COOKIE</code> environment variables
+ to allow runtime suppression of the related hard-tabs and
+ xmc-glitch features.
+ </ul>
- <li>implement configure script options that transform installed
- program names, e.g., <code>--program-prefix</code>, including the
- manpage names and cross references.
+ <li>programs:
+ <ul>
+ <li>add new test programs: chgat.c, demo_altkeys.c,
+ echochar.c, foldkeys.c, movewindow.c, redraw.c, (noting
+ that existing test programs also were modified to test
+ additional features).
- <li>option <code>--with-database</code> allows you to specify a
- different terminfo source-file to install. On OS/2 EMX, the
- default is misc/emx.src, otherwise misc/terminfo.src
+ <li>modify tack to test extended capability function-key
+ strings.
- <li>option <code>--with-default-terminfo-dir</code> allows you to
- specify the default terminfo database directory.
+ <li>modify toe to access termcap data, e.g., via <code>cgetent()</code>
+ functions, or as a text file if those are not available.
- <li>option <code>--with-libtool</code> allows you to build with
- <code>libtool</code>. <p> <em>NOTE</em>: <code>libtool</code>
- uses a different notation for numbering shared library versions
- from the existing ncurses configuration.
+ <li>improve infocmp/tic <code>-f</code> option formatting.
- <li>option <code>--with-manpage-tbl</code> causes the manpages to be
- preprocessed by tbl(1) prior to installation,
+ <li>add <code>toe -a</code> option, to show all databases.
+ This uses new private interfaces in the ncurses library for
+ iterating through the list of databases.
- <li>option <code>--without-curses-h</code> causes the installation
- process to install curses.h as ncurses.h and make appropriate
- changes to headers and manpages.
+ <li>modify <code>MKfallback.sh</code> to use
+ <code>tic&nbsp;-x</code> when constructing fallback tables to
+ allow extended capabilities to be retrieved from a fallback entry.
</ul>
- <li>modified configure script options:
+ <li>terminal database
<ul>
- <li>change symbol used by the <code>--install-prefix</code> configure
- option from <code>INSTALL_PREFIX</code> to <code>DESTDIR</code>
- (the latter has become common usage although the name is
- misleading).
-
- <li>modify <code>ld -rpath</code> options (e.g., Linux, and Solaris)
- to use an absolute pathname for the build tree's lib directory,
- avoiding confusion with directories relative to the current one
- with the installed programs.
-
- <li>modified <code>misc/run_tic.in</code> to use
- <code>tic&nbsp;-o</code>, to eliminate dependency on
- <code>$TERMINFO</code> variable for installs.
+ <li>add terminfo entries for xfce terminal (xfce) and multi gnome terminal (mgt)
+ <li>add nsterm-16color entry
+ <li>updated mlterm terminfo entry
+ <li>add kon, kon2 and jfbterm terminfo entry
+ <li>remove invis capability from klone+sgr, mainly used by linux entry, since it does not really do this
+ <li>add ka2, kb1, kb3, kc2 to vt220-keypad as an extension
+ <li>add shifted up/down arrow codes to xterm-new as kind/kri strings
+ <li>add hpterm-color terminfo entry
+ <li>add 256color variants of terminfo entries for programs which are reported to implement this feature
+ <li>correct order of use-clauses in rxvt-basic entry which made codes for f1-f4 vt100-style rather than vt220-style.
</ul>
+</ul>
+Major bug fixes:
+<ul>
+ <li>correct a typo in configure <code>--with-bool</code> option for the
+ case where <code>--without-cxx</code> is used.
- <li>terminfo database:
- <ul>
- <li>updated xterm terminfo entries to match XFree86 xterm patch #146.
+ <li>move assignment from environment variable <code>ESCDELAY</code>
+ from <code>initscr()</code> down to <code>newterm()</code> so the
+ environment variable affects timeouts for terminals opened with
+ newterm() as well.
- <li>added amiga-vnc,
- Matrix Orbital, and
- QNX qansi to misc/terminfo.src.
+ <li>modify <code>werase</code> to clear multicolumn characters that
+ extend into a derived window.
- <li>added os2 entry to misc/emx.src.
+ <li>modify <code>wchgat()</code> to mark updated cells as changed so a
+ refresh will repaint those cells.
- <li>add S0 and E0 extensions to <code>screen</code>'s terminfo entry
- since otherwise the FreeBSD port makes it pass termcap equivalents
- to <code>tgoto</code>, which would be misinterpreted by older
- versions of ncurses.
- </ul>
+ <li>correct logic in <code>wadd_wch()</code> and
+ <code>wecho_wch()</code>, which did not guard against passing the
+ multi-column attribute into a call on <code>waddch()</code>, e.g.,
+ using data returned by <code>win_wch()</code>
- <li>improvements to program usability:
- <ul>
- <li>modify programs to use <code>curses_version()</code> string to
- report the version of ncurses with which they are compiled rather
- than the NCURSES_VERSION string. The function returns the patch
- level in addition to the major and minor version numbers.
+ <li>fix redrawing of windows other than <code>stdscr</code> using
+ <code>wredrawln()</code> by touching the corresponding rows in
+ <code>curscr</code>.
- <li>modify <code>tput</code> program so it can be renamed or invoked via a link as
- 'reset' or 'init', producing the same effect as <code>tput&nbsp;reset</code> or <code>tput&nbsp;init</code>.
+ <li>reduce memory leaks in repeated calls to <code>tgetent()</code> by
+ remembering the last <code>TERMINAL*</code> value allocated to hold
+ the corresponding data and freeing that if the
+ <code>tgetent()</code> result buffer is the same as the previous
+ call.
- <li>add error checking to infocmp's -v and -m options to ensure that
- the option value is indeed a number.
- </ul>
+ <li>modify <code>read_termtype()</code> so the <code>term_names</code>
+ data is always allocated as part of the <code>str_table</code>, a
+ better fix for a memory leak.
- <li>improved performance:
- <ul>
- <li>replace a lookup table in lib_vidattr.c used to decode
- <code>no_color_video</code> with a logic expression which is faster.
- </ul>
+ <li>fix <code>wins_nwstr(),</code> which did not handle single-column
+ non-8bit codes.
+
+ <li>modify <code>wbkgrnd()</code> to avoid clearing the
+ <code>A_CHARTEXT</code> attribute bits since those record the state
+ of multicolumn characters.
+
+ <li>improve <code>SIGWINCH</code> handling by postponing its effect
+ during <code>newterm()</code>, etc., when allocating screens.
+
+ <li>remove 970913 feature for copying subwindows as they are moved in
+ <code>mvwin()</code>.
+ <li>add checks in <code>waddchnstr()</code> and
+ <code>wadd_wchnstr()</code> to stop copying when a null character
+ is found.
+
+ <li>add some checks to ensure current position is within scrolling
+ region before scrolling on a new line.
+
+ <li>add a workaround to ACS mapping to allow applications such as
+ test/blue.c to use the "PC ROM" characters by masking them with
+ A_ALTCHARSET. This worked up til 5.5, but was lost in the revision
+ of legacy coding.
</ul>
-Major bug fixes:
+
+Portability:
<ul>
- <li>correct <code>manlinks.sed</code> script introduced in ncurses 5.1
- to avoid using ERE "\+", which is not understood by standard versions
- of <code>sed</code>. This happens to work with GNU <code>sed</code>,
- but is not portable, and was the initial motivation for this release.
-
- <li>remove "hpux10.*" case from CF_SHARED_OPTS configure script macro.
- This differed from the "hpux*" case by using reversed symbolic
- links, which made the 5.1 version not match the configuration of
- 5.0 shared libraries.
-
- <li>guard against corrupt terminfo data:
- <ul>
- <li>modify <code>tparm()</code> to disallow arithmetic on strings,
- analyze the varargs list to read strings as strings and numbers as
- numbers.
-
- <li>modify <code>tparm()</code>'s internal function
- <code>spop()</code> to treat a null pointer as an empty string.
-
- <li>modify <code>parse_format()</code> in lib_tparm.c to ignore
- precision if it is longer than 10000.
-
- <li>rewrote limit checks in lib_mvcur.c using new functions
- <code>_nc_safe_strcat()</code>, etc. Made other related changes to
- check lengths used for <code>strcat()</code> and
- <code>strcpy()</code>.
- </ul>
-
- <li>corrections to screen optimization:
- <ul>
- <li>added special case in lib_vidattr.c to reset underline and
- standout for devices that have no sgr0 defined.
-
- <li>change handling of <code>non_dest_scroll_region</code> in
- tty_update.c to clear text after it is shifted in rather than before
- shifting out. Also correct row computation.
-
- <li>modify <code>rs2</code> capability in xterm-r6 and similar entries
- where cursor save/restore bracketed the sequence for resetting video
- attributes. The cursor restore would undo that.
- </ul>
-
- <li>UTF-8 support:
- <ul>
- <li>when checking LC_ALL, LC_CTYPE, and LANG environment variables
- for UTF-8 locale, ignore those which are set to an empty value, as
- per SUSV2.
+ <li>configure script:
+ <ul>
+ <li>new options:
+ <dl>
- <li>encode 0xFFFD in UTF-8 with 3 bytes, not 2.
+ <dt>--with-hashed-db
+ <dd>Use Berkeley hashed database for storing terminfo data rather than storing
+ each compiled entry in a separate binary file within a directory
+ tree.
- <li>modify <code>_nc_utf8_outch()</code> to avoid sign-extension when
- checking for out-of-range value.
- </ul>
+ <dt>--without-dlsym
+ <dd>Do not use <code>dlsym()</code> to load GPM dynamically.
- <li>other library fixes:
- <ul>
- <li>added checks for an empty <code>$HOME</code> environment
- variable, to avoid retrieving terminfo descriptions from
- <code>./.terminfo</code> .
+ <dt>--with-valgrind
+ <dd>Simplify building for testing with valgrind.
- <li>change functions <code>_nc_parse_entry()</code> and
- <code>postprocess_termcap()</code> to avoid using
- <code>strtok()</code>, because it is non-reentrant.
+ <dt>--enable-wgetch-events
+ <dd>Compile with experimental wgetch-events code.
- <li>initialize <code>fds[]</code> array to 0's in
- <code>_nc_timed_wait()</code>; apparently <code>poll()</code> only
- sets the <code>revents</code> members of that array when there is
- activity corresponding to the related file.
+ <dt>--enable-signed-char
+ <dd>Store booleans in "signed char" rather than "char".
- <li>add a check for null pointer in <code>Make_Enum_Type()</code>.
+ </dl>
- <li>fix a heap problem with the c++ binding.
+ <li>improved options:
+ <dl>
- <li>correct missing includes for &lt;string.h&gt; in several places,
- including the C++ binding. This is not noted by gcc unless we use
- the <code>-fno-builtin</code> option.
- </ul>
+ <dt>--disable-largefile
+ <dd>make the option work both ways.
- <li>several fixes for tic:
- <ul>
- <li>add a check for empty buffers returned by <code>fgets()</code> in
- comp_scan.c <code>next_char()</code> function, in case
- <code>tic</code> is run on a non-text file (fixes a core dump).
-
- <li>modify <code>tic</code> to verify that its inputs are really files,
- in case someone tries to read a directory (or
- <code>/dev/zero</code>).
-
- <li>correct an uninitialized parameter to <code>open_tempfile()</code>
- in tic.c which made "tic -I" give an ambiguous error message about
- <code>tmpnam</code>.
-
- <li>correct logic in <code>adjust_cancels()</code>, which did not check
- both alternatives when reclassifying an extended name between
- boolean, number and string, causing an infinite loop in
- <code>tic</code>.
- </ul>
-
- <li>using new checks in <code>tic</code> for parameter counts in
- capability strings, found/fixed several errors both in the
- terminfo database and in the include/Caps file.
- <ul>
- <li>modified several terminfo capability strings, including the
- definitions for setaf, setab, in include/Caps to indicate that the
- entries are parameterized. This information is used to tell which
- strings are translated when converting to termcap. This fixes a
- problem where the generated termcap would contain a spurious "%p1"
- for the terminfo "%p1%d".
-
- <li>correct parameter counts in include/Caps for dclk as well as some
- printer-specific capabilities: csnm, defc, scs, scsd, smgtp, smglp.
- </ul>
-
- <li>various fixes for install scripts used to support configure
- <code>--srcdir</code> and <code>--with-install-prefix</code>.
-
- <li>correct several mismatches between manpage filename and ".TH"
- directives, renaming dft_fgbg.3x to default_colors.3x and
- menu_attribs.3x to menu_attributes.3x.
-</ul>
+ <dt>--with-gpm
+ <dd>The option now accepts a parameter,
+ i.e., the name of the dynamic GPM library to load via
+ <code>dlopen()</code>
-Portability:
-<ul>
- <li>configure script:
- <ul>
- <li>newer config.guess, config.sub, including changes to support OS/2
- EMX. The configure script for OS/2 EMX still relies on a patch
- since there is no (working) support for that platform in the main
- autoconf distribution.
+ <dt>--disable-symlinks
+ <dd>The option now allows one to
+ disable <code>symlink()</code> in <code>tic</code> even when
+ <code>link()</code> does not work.
+
+ </dl>
+
+ </ul>
+
+ <li>other configure/build issues: <ul> <li>remove special case for
+ Darwin in <code>CF_XOPEN_SOURCE</code> configure macro.
- <li>make configure script checks on variables <code>$GCC</code> and
- <code>$GXX</code> consistently compare against 'yes' rather than
- test if they are nonnull, since either may be set to the
- corresponding name of the C or C++ compiler.
+ <li>add configure check to ensure that <code>SIGWINCH</code> is
+ defined on platforms such as OS X which exclude that when
+ <code>_XOPEN_SOURCE,</code> etc., are defined
- <li>change configure script to use AC_CANONICAL_SYSTEM rather than
- AC_CANONICAL_HOST, which means that <code>configure --target</code>
- will set a default program-prefix.
+ <li>use ld's <code>-search_paths_first</code> option on Darwin
+ to work around odd search rules on that platform.
- <li>modify the check for big-core to force a couple of memory
- accesses, which may work as needed for older/less-capable machines
- (if not, there's still the explicit configure option).
+ <li>improve ifdef's for <code>_POSIX_VDISABLE</code> in tset to
+ work with Mac OS X.
- <li>modify configure test for <code>tcgetattr()</code> to allow for
- old implementations, e.g., on BeOS, which only defined it as a
- macro.
+ <li>modify configure script to ensure that if the C compiler is
+ used rather than the loader in making shared libraries, the
+ <code>$(CFLAGS)</code> variable is also used.
- <li>add configure check for filesystems (such as OS/2 EMX) which do
- not distinguish between upper/lowercase filenames, use this to fix
- tags rules in makefiles.
+ <li>use <code>${CC}</code> rather than <code>${LD}</code> in
+ shared library rules for IRIX64, Solaris to help ensure
+ that initialization sections are provided for extra linkage
+ requirements, e.g., of C++ applications.
- <li>add MKncurses_def.sh to generate fallback definitions for
- ncurses_cfg.h, to quiet gcc -Wundef warnings, modified ifdef's in
- code to consistently use "#if" rather than "#ifdef".
+ <li>improve some shared-library configure scripting for Linux,
+ FreeBSD and NetBSD to make
+ <code>--with-shlib-version</code> work.
- <li>change most remaining unquoted parameters of <code>test</code> in
- configure script to use quotes, for instance fixing a problem in the
- <code>--disable-database</code> option.
+ <li>split up dependency of <code>names.c</code> and
+ <code>codes.c</code> in <code>ncurses/Makefile</code> to
+ work with parallel make.
- <li>modify scripts so that "make install.data" works on OS/2 EMX.
+ <li>modify <code>MKlib_gen.sh</code> to change
+ preprocessor-expanded <code>_Bool</code> back to <code>bool</code>.
- <li>modify scripts and makefiles so the Ada95 directory builds on
- OS/2 EMX.
+ <li>modify <code>progs/Makefile.in</code> to make
+ <code>tput&nbsp;init</code> work properly with cygwin,
+ i.e., do not pass a <code>.exe</code> in the reference
+ string used in check_aliases.
</ul>
<li>library:
<ul>
- <li>replaced case-statement in <code>_nc_tracebits()</code> for CSIZE
- with a table to simplify working around implementations that define
- random combinations of the related macros to zero.
+ <li>ignore wide-acs line-drawing characters that
+ <code>wcwidth()</code> claims are not one-column. This is
+ a workaround for Solaris' broken locale support.
- <li>improved OS/2 mouse support by retrying as a 2-button mouse if code
- fails to set up a 3-button mouse.
+ <li>reduce name-pollution in <code>term.h</code> by removing
+ <code>#define</code>'s for HAVE_xxx symbols.
- <li>added private entrypoint <code>_nc_basename()</code>, used to
- consolidate related code in progs, as well as accommodating OS/2 EMX
- pathnames.
+ <li>fix <code>#ifdef</code> in <code>c++/internal.h</code> for
+ QNX 6.1
+ </ul>
- <li>alter definition of NCURSES_CONST to make it non-empty.
+ <li>test programs: <ul> <li>modify <code>test/configure</code> script
+ to allow building test programs with PDCurses/X11.
- <li>redefine 'TEXT' in menu.h for AMIGA, since it is reported to have
- an (unspecified) symbol conflict.
- </ul>
+ <li>modified test programs to allow some to work with NetBSD
+ curses. Several do not because NetBSD curses implements a
+ subset of X/Open curses, and also lacks much of SVr4
+ additions. But it is enough for comparison.
- <li>programs:
- <ul>
- <li>modified progs/tset.c and tack/sysdep.c to build with sgttyb
- interface if neither termio or termios is available. Tested this
- with FreeBSD 2.1.5 (which does have termios - but the sgttyb does
- work).
- </ul>
+ <li>improved <code>test/configure</code> to build test/ncurses
+ on HPUX 11 using the vendor curses.
+ <li>change configure script to produce
+ <code>test/Makefile</code> from data file.
+ </ul>
</ul>
<H1>Features of Ncurses</H1>
@@ -390,14 +390,15 @@ 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,
-but not all EXTENDED features). Most EXTENDED-level features not directly
-concerned with wide-character support are implemented, including many
-function calls not supported under SVr4 curses (but portability of all
+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>Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner
of the screen if your terminal has an insert-character capability.
<LI>Ada95 and C++ bindings.
-<LI>Support for mouse event reporting with X Window xterm and OS/2 console windows.
+<LI>Support for mouse event reporting with X Window xterm
+and FreeBSD and OS/2 console windows.
<LI>Extended mouse support via Alessandro Rubini's gpm package.
<LI>The function <CODE>wresize()</CODE> allows you to resize windows, preserving
their data.
@@ -409,7 +410,7 @@ 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>Support for 16-color terminals, such as aixterm and XFree86 xterm.
+<LI>Support for 16-color terminals, such as aixterm and modern xterm.
<LI>Better cursor-movement optimization. The package now features a
cursor-local-movement computation more efficient than either BSD's
or System V's.
@@ -477,61 +478,61 @@ including (versions starting with those noted):
<DT> cdk
<DD> Curses Development Kit
<br>
-<A HREF="http://www.vexus.ca/CDK.html">http://www.vexus.ca/CDK.html</a>
+<A HREF="http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</A>
<br>
-<A HREF="http://dickey.his.com/cdk/cdk.html">http://dickey.his.com/cdk</A>.
+<A HREF="http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a>
<DT> ded
<DD> directory-editor
<br>
-<A HREF="http://dickey.his.com/ded/ded.html">http://dickey.his.com/ded</A>.
+<A HREF="http://invisible-island.net/ded/">http://invisible-island.net/ded/</A>
<DT> dialog
<DD> the underlying application used in Slackware's setup, and the basis
for similar applications on GNU/Linux.
<br>
-<A HREF="http://dickey.his.com/dialog/dialog.html">http://dickey.his.com/dialog</A>.
+<A HREF="http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</A>
<DT> lynx
<DD> the character-screen WWW browser
<br>
-<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release</A>.
-<DT> Midnight Commander 4.1
+<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release/</A>
+<DT> Midnight Commander
<DD> file manager
<br>
-<A HREF="www.gnome.org/mc/">www.gnome.org/mc/</A>.
+<A HREF="http://www.ibiblio.org/mc/">http://www.ibiblio.org/mc/</A>
<DT> mutt
<DD> mail utility
<br>
-<A HREF="http://www.mutt.org">http://www.mutt.org</A>.
+<A HREF="http://www.mutt.org/">http://www.mutt.org/</A>
<DT> ncftp
<DD> file-transfer utility
<br>
-<A HREF="http://www.ncftp.com">http://www.ncftp.com</A>.
+<A HREF="http://www.ncftp.com/">http://www.ncftp.com/</A>
<DT> nvi
<DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
<br>
-<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>.
+<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>
+<br>
+<DT> pinfo
+<DD> Lynx-like info browser.
+<A HREF="http://dione.ids.pl/~pborys/software/pinfo/">http://dione.ids.pl/~pborys/software/pinfo/</A>
<DT> tin
<DD> newsreader, supporting color, MIME
-<br>
-<A HREF="http://www.tin.org">http://www.tin.org</A>.
-<DT> taper
-<DD> tape archive utility
-<br>
-<A HREF="http://members.iinet.net.au/~yusuf/taper/">http://members.iinet.net.au/~yusuf/taper/</A>.
+<A HREF="http://www.tin.org/">http://www.tin.org/</A>
<DT> vh-1.6
<DD> Volks-Hypertext browser for the Jargon File
<br>
-<A HREF="http://www.bg.debian.org/Packages/unstable/text/vh.html">http://www.bg.debian.org/Packages/unstable/text/vh.html</A>.
+<A HREF="http://www.debian.org/Packages/unstable/text/vh.html">http://www.debian.org/Packages/unstable/text/vh.html</A>
</DL>
as well as some that use ncurses for the terminfo support alone:
<DL>
<DT> minicom
<DD> terminal emulator
<br>
-<A HREF="http://www.pp.clinet.fi/~walker/minicom.html">http://www.pp.clinet.fi/~walker/minicom.html</A>.
+<A HREF="http://alioth.debian.org/projects/minicom/">
+http://alioth.debian.org/projects/minicom/</A>
<DT> vile
<DD> vi-like-emacs
<br>
-<A HREF="http://dickey.his.com/vile/vile.html">http://dickey.his.com/vile</A>.
+<A HREF="http://invisible-island.net/vile/">http://invisible-island.net/vile/</A>
</DL>
<P>
@@ -540,16 +541,16 @@ a few games).
<H2>Who's Who and What's What</H2>
-The original developers of ncurses are <A
-HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A> and
-<A HREF="http://www.ccil.org/~esr/home.html">Eric S. Raymond</A>.
+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@herndon4.his.com">Thomas Dickey</A>
-and
-<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
-<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
-acts as the maintainer for the Free Software Foundation, which holds the
-copyright on ncurses.
+<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>
@@ -564,7 +565,7 @@ This list is open to anyone interested in helping with the development and
testing of this package.<P>
Beta versions of ncurses and patches to the current release are made available at
-<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
+<A HREF="ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</A>&nbsp;.
<H2>Future Plans</H2>
<UL>
@@ -576,14 +577,17 @@ on them, please join the ncurses list.
<H2>Other Related Resources</H2>
-The distribution includes and uses a version of the terminfo-format
-terminal description file maintained by Eric Raymond.
-<A HREF="http://earthspace.net/~esr/terminfo">http://earthspace.net/~esr/terminfo</A>.<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>
You can find lots of information on terminal-related topics
not covered in the terminfo file at
<A HREF="http://www.cs.utk.edu/~shuford/terminal_index.html">Richard Shuford's
-archive</A>.
+archive</A>&nbsp;.
</BODY>
</HTML>
<!--
diff --git a/contrib/ncurses/config.guess b/contrib/ncurses/config.guess
index ff40ddb03874..396482d6cb50 100755
--- a/contrib/ncurses/config.guess
+++ b/contrib/ncurses/config.guess
@@ -1,9 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
-timestamp='2002-03-20'
+timestamp='2006-07-02'
# 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
@@ -17,13 +18,15 @@ timestamp='2002-03-20'
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
+
# Originally written by Per Bothner <per@bothner.com>.
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
@@ -53,7 +56,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -66,11 +69,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -88,30 +91,42 @@ if test $# != 0; then
exit 1
fi
+trap 'exit 1' 1 2 15
-dummy=dummy-$$
-trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; 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
+# headache to deal with in a portable fashion.
-# CC_FOR_BUILD -- compiler used by this script.
# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
# use `HOST_CC' if defined, but it is deprecated.
-set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
- ,,) echo "int dummy(){}" > $dummy.c ;
+# 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
- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
- if test $? = 0 ; then
+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
CC_FOR_BUILD="$c"; break ;
fi ;
done ;
- rm -f $dummy.c $dummy.o $dummy.rel ;
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'
+esac ; set_cc_for_build= ;'
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 1994-08-24)
@@ -142,6 +157,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
UNAME_MACHINE_ARCH=`(/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 ;;
@@ -167,141 +183,128 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
;;
esac
# The OS release
- release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ # 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
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ 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}"
- exit 0 ;;
- amiga:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- arc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- hp300:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mac68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- macppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme68k:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvme88k:OpenBSD:*:*)
- echo m88k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- mvmeppc:OpenBSD:*:*)
- echo powerpc-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- pmax:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sgi:OpenBSD:*:*)
- echo mipseb-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- sun3:OpenBSD:*:*)
- echo m68k-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
- wgrisc:OpenBSD:*:*)
- echo mipsel-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:OpenBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
- exit 0 ;;
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *:SolidBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
+ exit ;;
+ macppc:MirBSD:*:*)
+ echo powerpc-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
+ *:MirBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+ exit ;;
alpha:OSF1:*:*)
- if test $UNAME_RELEASE = "V4.0"; then
+ case $UNAME_RELEASE in
+ *4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
- fi
+ ;;
+ *5.*)
+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ ;;
+ esac
+ # According to Compaq, /usr/sbin/psrinfo has been available on
+ # OSF/1 and Tru64 systems produced since 1995. I hope that
+ # covers most systems running today. This code pipes the CPU
+ # types through head -n 1, so we only detect the type of CPU 0.
+ 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" ;;
+ "EV4.5 (21064)")
+ UNAME_MACHINE="alpha" ;;
+ "LCA4 (21066/21068)")
+ UNAME_MACHINE="alpha" ;;
+ "EV5 (21164)")
+ UNAME_MACHINE="alphaev5" ;;
+ "EV5.6 (21164A)")
+ UNAME_MACHINE="alphaev56" ;;
+ "EV5.6 (21164PC)")
+ UNAME_MACHINE="alphapca56" ;;
+ "EV5.7 (21164PC)")
+ UNAME_MACHINE="alphapca57" ;;
+ "EV6 (21264)")
+ UNAME_MACHINE="alphaev6" ;;
+ "EV6.7 (21264A)")
+ UNAME_MACHINE="alphaev67" ;;
+ "EV6.8CB (21264C)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8AL (21264B)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.8CX (21264D)")
+ UNAME_MACHINE="alphaev68" ;;
+ "EV6.9A (21264/EV69A)")
+ UNAME_MACHINE="alphaev69" ;;
+ "EV7 (21364)")
+ UNAME_MACHINE="alphaev7" ;;
+ "EV7.9 (21364A)")
+ 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.
- cat <<EOF >$dummy.s
- .data
-\$Lformat:
- .byte 37,100,45,37,120,10,0 # "%d-%x\n"
-
- .text
- .globl main
- .align 4
- .ent main
-main:
- .frame \$30,16,\$26,0
- ldgp \$29,0(\$27)
- .prologue 1
- .long 0x47e03d80 # implver \$0
- lda \$2,-1
- .long 0x47e20c21 # amask \$2,\$1
- lda \$16,\$Lformat
- mov \$0,\$17
- not \$1,\$18
- jsr \$26,printf
- ldgp \$29,0(\$26)
- mov 0,\$16
- jsr \$26,exit
- .end main
-EOF
- eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
- if test "$?" = 0 ; then
- case `./$dummy` in
- 0-0)
- UNAME_MACHINE="alpha"
- ;;
- 1-0)
- UNAME_MACHINE="alphaev5"
- ;;
- 1-1)
- UNAME_MACHINE="alphaev56"
- ;;
- 1-101)
- UNAME_MACHINE="alphapca56"
- ;;
- 2-303)
- UNAME_MACHINE="alphaev6"
- ;;
- 2-307)
- UNAME_MACHINE="alphaev67"
- ;;
- 2-1307)
- UNAME_MACHINE="alphaev68"
- ;;
- esac
- fi
- rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit 0 ;;
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
# of the specific Alpha model?
echo alpha-pc-interix
- exit 0 ;;
+ exit ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
- exit 0 ;;
+ exit ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-unknown-sysv4
- exit 0;;
+ exit ;;
*:[Aa]miga[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-amigaos
- exit 0 ;;
+ exit ;;
*:[Mm]orph[Oo][Ss]:*:*)
echo ${UNAME_MACHINE}-unknown-morphos
- exit 0 ;;
+ exit ;;
*:OS/390:*:*)
echo i370-ibm-openedition
- exit 0 ;;
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
- exit 0;;
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
- exit 0;;
+ exit ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
@@ -309,25 +312,32 @@ EOF
else
echo pyramid-pyramid-bsd
fi
- exit 0 ;;
+ exit ;;
NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
- exit 0 ;;
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
i86pc:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ 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/[^.]*//'`
- exit 0 ;;
+ exit ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
@@ -336,10 +346,10 @@ EOF
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
- exit 0 ;;
+ exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
- exit 0 ;;
+ 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
@@ -351,10 +361,10 @@ EOF
echo sparc-sun-sunos${UNAME_RELEASE}
;;
esac
- exit 0 ;;
+ exit ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
# The situation for MiNT is a little confusing. The machine name
# can be virtually everything (everything which is not
# "atarist" or "atariste" at least should have a processor
@@ -365,37 +375,40 @@ EOF
# be no problem.
atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
echo m68k-atari-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
echo m68k-milan-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
echo m68k-hades-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
echo m68k-unknown-mint${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
- exit 0 ;;
+ exit ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
2020:CLIX:*:* | 2430:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -419,27 +432,33 @@ EOF
exit (-1);
}
EOF
- $CC_FOR_BUILD $dummy.c -o $dummy \
- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
+ $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}
- exit 0 ;;
+ exit ;;
Motorola:PowerMAX_OS:*:*)
echo powerpc-motorola-powermax
- exit 0 ;;
+ exit ;;
+ Motorola:*:4.3:PL8-*)
+ echo powerpc-harris-powermax
+ exit ;;
+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+ echo powerpc-harris-powermax
+ exit ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
- exit 0 ;;
+ exit ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
- exit 0 ;;
+ exit ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
- exit 0 ;;
+ exit ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
@@ -455,29 +474,29 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
- exit 0 ;;
+ exit ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
- exit 0 ;;
+ exit ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
- exit 0 ;;
+ exit ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
- exit 0 ;;
+ exit ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
- exit 0 ;;
+ 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
- exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i*86:AIX:*:*)
echo i386-ibm-aix
- exit 0 ;;
+ exit ;;
ia64:AIX:*:*)
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
@@ -485,7 +504,7 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
eval $set_cc_for_build
@@ -500,15 +519,18 @@ EOF
exit(0);
}
EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo rs6000-ibm-aix3.2.5
+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+ then
+ echo "$SYSTEM_NAME"
+ else
+ echo rs6000-ibm-aix3.2.5
+ fi
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
else
echo rs6000-ibm-aix3.2
fi
- exit 0 ;;
+ exit ;;
*:AIX:*:[45])
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
@@ -522,28 +544,28 @@ EOF
IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
- exit 0 ;;
+ exit ;;
*:AIX:*:*)
echo rs6000-ibm-aix
- exit 0 ;;
+ exit ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
- exit 0 ;;
+ exit ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
- exit 0 ;; # report: romp-ibm BSD 4.3
+ exit ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
- exit 0 ;;
+ exit ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
- exit 0 ;;
+ exit ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
- exit 0 ;;
+ exit ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
- exit 0 ;;
+ exit ;;
9000/[34678]??:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
case "${UNAME_MACHINE}" in
@@ -599,17 +621,37 @@ EOF
exit (0);
}
EOF
- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy`
- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
- rm -f $dummy.c $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" ]
+ then
+ eval $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
+ # generating 64-bit code. GNU and HP use different nomenclature:
+ #
+ # $ CC_FOR_BUILD=cc ./config.guess
+ # => hppa2.0w-hp-hpux11.23
+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+ # => hppa64-hp-hpux11.23
+
+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+ grep __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
ia64:HP-UX:*:*)
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ia64-hp-hpux${HPUX_REV}
- exit 0 ;;
+ exit ;;
3050*:HI-UX:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -637,134 +679,179 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+ { echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
- exit 0 ;;
+ exit ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
- exit 0 ;;
+ exit ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
- exit 0 ;;
+ exit ;;
*9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
echo hppa1.0-hp-mpeix
- exit 0 ;;
+ exit ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
- exit 0 ;;
+ exit ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
- exit 0 ;;
+ exit ;;
i*86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
- exit 0 ;;
+ exit ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
- exit 0 ;;
+ exit ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*[A-Z]90:*:*:*)
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
-e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
- CRAY*T3D:*:*:*)
- echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*T3E:*:*:*)
echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
CRAY*SV1:*:*:*)
echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
- exit 0 ;;
+ exit ;;
+ *:UNICOS/mp:*:*)
+ 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/ /_/'`
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
- exit 0 ;;
+ 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/ /_/'`
+ 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}
- exit 0 ;;
+ exit ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:BSD/OS:*:*)
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:FreeBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
- exit 0 ;;
+ case ${UNAME_MACHINE} in
+ pc98)
+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ amd64)
+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ *)
+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ esac
+ exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
- exit 0 ;;
+ exit ;;
i*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
- exit 0 ;;
+ exit ;;
+ i*:windows32*:*)
+ # uname -m includes "-pc" on this system.
+ echo ${UNAME_MACHINE}-mingw32
+ exit ;;
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
- exit 0 ;;
- x86:Interix*:3*)
- echo i386-pc-interix3
- exit 0 ;;
+ exit ;;
+ x86:Interix*:[3456]*)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T:Interix*:[3456]*)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+ echo i${UNAME_MACHINE}-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 i386-pc-interix
- exit 0 ;;
+ echo i586-pc-interix
+ exit ;;
i*:UWIN*:*)
echo ${UNAME_MACHINE}-pc-uwin
- exit 0 ;;
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
- exit 0 ;;
+ exit ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit 0 ;;
+ exit ;;
*:GNU:*:*)
+ # the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
- exit 0 ;;
+ 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/[-(].*//'`-gnu
+ exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
- exit 0 ;;
+ exit ;;
arm*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
+ avr32*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ cris:Linux:*:*)
+ echo cris-axis-linux-gnu
+ exit ;;
+ crisv32:Linux:*:*)
+ echo crisv32-axis-linux-gnu
+ exit ;;
+ frv:Linux:*:*)
+ echo frv-unknown-linux-gnu
+ exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
mips:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
@@ -781,16 +868,45 @@ EOF
#endif
#endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
- rm -f $dummy.c
- test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
EV5) UNAME_MACHINE=alphaev5 ;;
@@ -804,7 +920,7 @@ EOF
objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
@@ -812,22 +928,28 @@ EOF
PA8*) echo hppa2.0-unknown-linux-gnu ;;
*) echo hppa-unknown-linux-gnu ;;
esac
- exit 0 ;;
+ exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux
- exit 0 ;;
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
- exit 0 ;;
+ exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
@@ -845,15 +967,15 @@ EOF
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
- exit 0 ;;
+ exit ;;
coff-i386)
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
- exit 0 ;;
+ exit ;;
"")
# Either a pre-BFD a.out linker (linux-gnuoldld) or
# one that does not give us useful --help.
echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
- exit 0 ;;
+ exit ;;
esac
# Determine whether the default compiler is a.out or elf
eval $set_cc_for_build
@@ -870,24 +992,33 @@ EOF
LIBC=gnulibc1
# endif
#else
- #ifdef __INTEL_COMPILER
+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
LIBC=gnu
#else
LIBC=gnuaout
#endif
#endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
- rm -f $dummy.c
- test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^LIBC/{
+ s: ::g
+ p
+ }'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both
# sysname and nodename.
echo i386-sequent-sysv4
- exit 0 ;;
+ exit ;;
i*86:UNIX_SV:4.2MP:2.*)
# Unixware is an offshoot of SVR4, but it has its own version
# number series starting with 2...
@@ -895,7 +1026,27 @@ EOF
# I just have to hope. -- rms.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
- exit 0 ;;
+ 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
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
@@ -903,99 +1054,100 @@ EOF
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
fi
- exit 0 ;;
- i*86:*:5:[78]*)
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
case `/bin/uname -X | grep "^Machine"` in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
- exit 0 ;;
+ 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
elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
- (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
&& UNAME_MACHINE=i686
- (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
&& UNAME_MACHINE=i686
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
- exit 0 ;;
- i*86:*DOS:*:*)
- echo ${UNAME_MACHINE}-pc-msdosdjgpp
- exit 0 ;;
+ exit ;;
pc:*:*:*)
# Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i386.
echo i386-pc-msdosdjgpp
- exit 0 ;;
+ exit ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
- exit 0 ;;
+ exit ;;
paragon:*:*:*)
echo i860-intel-osf1
- exit 0 ;;
+ 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
else # Add other i860-SVR4 vendors below as they are discovered.
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
fi
- exit 0 ;;
+ exit ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
- exit 0 ;;
- M68*:*:R3V[567]*:*)
- test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
- 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
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 0
+ && { 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 0 ;;
+ && { 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 0 ;;
+ && { echo i486-ncr-sysv4; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
- exit 0 ;;
- i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
- echo i386-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
RM*:ReliantUNIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
- exit 0 ;;
+ exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
@@ -1003,61 +1155,72 @@ EOF
else
echo ns32k-sni-sysv
fi
- exit 0 ;;
+ exit ;;
PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
- exit 0 ;;
+ exit ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
- exit 0 ;;
+ exit ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
- exit 0 ;;
+ exit ;;
+ i*86:VOS:*:*)
+ # From Paul.Green@stratus.com.
+ echo ${UNAME_MACHINE}-stratus-vos
+ exit ;;
*:VOS:*:*)
# From Paul.Green@stratus.com.
echo hppa1.1-stratus-vos
- exit 0 ;;
+ exit ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
news*:NEWS-OS:6*:*)
echo mips-sony-newsos6
- exit 0 ;;
+ exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
fi
- exit 0 ;;
+ exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
echo powerpc-be-beos
- exit 0 ;;
+ exit ;;
BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only.
echo powerpc-apple-beos
- exit 0 ;;
+ exit ;;
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
- exit 0 ;;
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
SX-5:SUPER-UX:*:*)
echo sx5-nec-superux${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
+ SX-6:SUPER-UX:*:*)
+ echo sx6-nec-superux${UNAME_RELEASE}
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Rhapsody:*:*)
echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Darwin:*:*)
- echo `uname -p`-apple-darwin${UNAME_RELEASE}
- exit 0 ;;
+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = "x86"; then
@@ -1065,22 +1228,25 @@ EOF
UNAME_MACHINE=pc
fi
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:QNX:*:4*)
echo i386-pc-qnx
- exit 0 ;;
- NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*)
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
echo nsr-tandem-nsk${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:NonStop-UX:*:*)
echo mips-compaq-nonstopux
- exit 0 ;;
+ exit ;;
BS2000:POSIX*:*:*)
echo bs2000-siemens-sysv
- exit 0 ;;
+ exit ;;
DS/*:UNIX_System_V:*:*)
echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
- exit 0 ;;
+ exit ;;
*:Plan9:*:*)
# "uname -m" is not consistent, so use $cputype instead. 386
# is converted to i386 for consistency with other x86
@@ -1091,36 +1257,47 @@ EOF
UNAME_MACHINE="$cputype"
fi
echo ${UNAME_MACHINE}-unknown-plan9
- exit 0 ;;
- i*86:OS/2:*:*)
- # If we were able to find `uname', then EMX Unix compatibility
- # is probably installed.
- echo ${UNAME_MACHINE}-pc-os2-emx
- exit 0 ;;
+ exit ;;
*:TOPS-10:*:*)
echo pdp10-unknown-tops10
- exit 0 ;;
+ exit ;;
*:TENEX:*:*)
echo pdp10-unknown-tenex
- exit 0 ;;
+ exit ;;
KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
echo pdp10-dec-tops20
- exit 0 ;;
+ exit ;;
XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
echo pdp10-xkl-tops20
- exit 0 ;;
+ exit ;;
*:TOPS-20:*:*)
echo pdp10-unknown-tops20
- exit 0 ;;
+ exit ;;
*:ITS:*:*)
echo pdp10-unknown-its
- exit 0 ;;
- i*86:XTS-300:*:STOP)
- echo ${UNAME_MACHINE}-unknown-stop
- exit 0 ;;
- i*86:atheos:*:*)
- echo ${UNAME_MACHINE}-unknown-atheos
- exit 0 ;;
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ exit ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
@@ -1152,7 +1329,7 @@ main ()
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
- printf ("arm-acorn-riscix"); exit (0);
+ printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
@@ -1241,12 +1418,12 @@ main ()
}
EOF
-$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
-rm -f $dummy.c $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 0; }
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
@@ -1255,22 +1432,22 @@ then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
- exit 0 ;;
+ exit ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
- exit 0 ;;
+ exit ;;
c34*)
echo c34-convex-bsd
- exit 0 ;;
+ exit ;;
c38*)
echo c38-convex-bsd
- exit 0 ;;
+ exit ;;
c4*)
echo c4-convex-bsd
- exit 0 ;;
+ exit ;;
esac
fi
@@ -1281,7 +1458,9 @@ 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
- ftp://ftp.gnu.org/pub/gnu/config/
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/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
diff --git a/contrib/ncurses/config.sub b/contrib/ncurses/config.sub
index 299f3f4c5ea2..53954dbe90a9 100755
--- a/contrib/ncurses/config.sub
+++ b/contrib/ncurses/config.sub
@@ -1,9 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002 Free Software Foundation, Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
-timestamp='2002-04-26'
+timestamp='2006-08-14'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -21,14 +22,15 @@ timestamp='2002-04-26'
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
+
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
#
@@ -70,7 +72,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
@@ -83,11 +85,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
- echo "$timestamp" ; exit 0 ;;
+ echo "$timestamp" ; exit ;;
--version | -v )
- echo "$version" ; exit 0 ;;
+ echo "$version" ; exit ;;
--help | --h* | -h )
- echo "$usage"; exit 0 ;;
+ echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@@ -99,7 +101,7 @@ while test $# -gt 0 ; do
*local*)
# First pass through any local machine types.
echo $1
- exit 0;;
+ exit ;;
* )
break ;;
@@ -118,7 +120,9 @@ esac
# 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* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@@ -144,7 +148,7 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple | -axis)
+ -apple | -axis | -knuth | -cray)
os=
basic_machine=$1
;;
@@ -169,6 +173,10 @@ case $os in
-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/'`
@@ -185,6 +193,10 @@ case $os in
# 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/'`
@@ -228,31 +240,51 @@ case $basic_machine in
| a29k \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+ | am33_2.0 \
+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | bfin \
| c4x | clipper \
- | d10v | d30v | dsp16xx \
- | fr30 \
+ | d10v | d30v | dlx | dsp16xx \
+ | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
- | m32r | m68000 | m68k | m88k | mcore \
- | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
- | mips64vr4100 | mips64vr4100el | mips64vr4300 \
- | mips64vr4300el | mips64vr5000 | mips64vr5000el \
- | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
- | mipsisa32 | mipsisa64 \
+ | ip2k | iq2000 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
| mn10200 | mn10300 \
+ | mt \
+ | msp430 \
+ | nios | nios2 \
| ns16k | ns32k \
- | openrisc | or32 \
+ | or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
- | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \
- | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
- | strongarm \
- | tahoe | thumb | tic80 | tron \
+ | sh | sh[1234] | sh[24]a | 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 | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \
| we32k \
- | x86 | xscale | xstormy16 | xtensa \
+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k)
basic_machine=$basic_machine-unknown
;;
@@ -263,6 +295,9 @@ case $basic_machine in
;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;;
+ ms1)
+ basic_machine=mt-unknown
+ ;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
@@ -281,38 +316,59 @@ case $basic_machine in
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armv*-* \
- | avr-* \
- | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c54x-* \
- | clipper-* | cydra-* \
- | d10v-* | d30v-* \
+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
+ | avr-* | avr32-* \
+ | bfin-* | bs2000-* \
+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+ | clipper-* | craynv-* | cydra-* \
+ | d10v-* | d30v-* | dlx-* \
| elxsi-* \
- | f30[01]-* | f700-* | fr30-* | fx80-* \
+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
- | m32r-* \
+ | ip2k-* | iq2000-* \
+ | m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | mcore-* \
- | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
- | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
- | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
- | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
- | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \
- | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
- | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | 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-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
- | xtensa-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
| ymp-* \
| z8k-*)
;;
@@ -332,6 +388,9 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
adobe68k)
basic_machine=m68010-adobe
os=-scout
@@ -346,6 +405,12 @@ case $basic_machine in
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
@@ -405,12 +470,27 @@ case $basic_machine in
basic_machine=j90-cray
os=-unicos
;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-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
;;
@@ -433,6 +513,10 @@ case $basic_machine in
basic_machine=m88k-motorola
os=-sysv3
;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
@@ -611,10 +695,6 @@ case $basic_machine in
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
- mmix*)
- basic_machine=mmix-knuth
- os=-mmixware
- ;;
monitor)
basic_machine=m68k-rom68k
os=-coff
@@ -627,6 +707,9 @@ case $basic_machine in
basic_machine=i386-pc
os=-msdos
;;
+ ms1-*)
+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
@@ -702,9 +785,12 @@ case $basic_machine in
basic_machine=hppa1.1-oki
os=-proelf
;;
- or32 | or32-*)
+ openrisc | openrisc-*)
basic_machine=or32-unknown
- os=-coff
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
@@ -728,49 +814,61 @@ case $basic_machine in
pbb)
basic_machine=m68k-tti
;;
- pc532 | pc532-*)
+ 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)
+ pentiumpro | p6 | 6x86 | athlon | athlon_*)
basic_machine=i686-pc
;;
- pentiumii | pentium2)
+ 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-*)
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
+ pentium4-*)
+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
pn)
basic_machine=pn-gould
;;
power) basic_machine=power-ibm
;;
ppc) basic_machine=powerpc-unknown
- ;;
+ ;;
ppc-*) 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/^[^-]*-//'`
;;
@@ -781,6 +879,10 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
+ rdos)
+ basic_machine=i386-pc
+ os=-rdos
+ ;;
rom68k)
basic_machine=m68k-rom68k
os=-coff
@@ -801,6 +903,20 @@ case $basic_machine in
basic_machine=a29k-amd
os=-udi
;;
+ sb1)
+ basic_machine=mipsisa64sb1-unknown
+ ;;
+ sb1el)
+ basic_machine=mipsisa64sb1el-unknown
+ ;;
+ sde)
+ basic_machine=mipsisa32-sde
+ os=-elf
+ ;;
+ sei)
+ basic_machine=mips-sei
+ os=-seiux
+ ;;
sequent)
basic_machine=i386-sequent
;;
@@ -808,6 +924,9 @@ case $basic_machine in
basic_machine=sh-hitachi
os=-hms
;;
+ sh64)
+ basic_machine=sh64-unknown
+ ;;
sparclite-wrs | simso-wrs)
basic_machine=sparclite-wrs
os=-vxworks
@@ -866,7 +985,7 @@ case $basic_machine in
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
- sv1)
+ sv1)
basic_machine=sv1-cray
os=-unicos
;;
@@ -874,10 +993,6 @@ case $basic_machine in
basic_machine=i386-sequent
os=-dynix
;;
- t3d)
- basic_machine=alpha-cray
- os=-unicos
- ;;
t3e)
basic_machine=alphaev5-cray
os=-unicos
@@ -890,6 +1005,14 @@ case $basic_machine in
basic_machine=tic54x-unknown
os=-coff
;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
tx39)
basic_machine=mipstx39-unknown
;;
@@ -903,6 +1026,10 @@ case $basic_machine in
tower | tower-32)
basic_machine=m68k-ncr
;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
udi29k)
basic_machine=a29k-amd
os=-udi
@@ -924,8 +1051,8 @@ case $basic_machine in
os=-vms
;;
vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
- ;;
+ basic_machine=f301-fujitsu
+ ;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
@@ -946,11 +1073,11 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
- windows32)
- basic_machine=i386-pc
- os=-windows32-msvcrt
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
;;
- xps | xps100)
+ xps | xps100)
basic_machine=xps100-honeywell
;;
ymp)
@@ -980,6 +1107,9 @@ case $basic_machine in
romp)
basic_machine=romp-ibm
;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
rs6000)
basic_machine=rs6000-ibm
;;
@@ -996,16 +1126,13 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
- sh3 | sh4 | sh3eb | sh4eb)
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
- sh64)
- basic_machine=sh64-unknown
- ;;
- sparc | sparcv9 | sparcv9b)
+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
basic_machine=sparc-sun
;;
- cydra)
+ cydra)
basic_machine=cydra-cydrome
;;
orion)
@@ -1020,10 +1147,6 @@ case $basic_machine in
pmac | pmac-mpw)
basic_machine=powerpc-apple
;;
- c4x*)
- basic_machine=c4x-none
- os=-coff
- ;;
*-unknown)
# Make sure to match an already-canonicalized machine name.
;;
@@ -1079,18 +1202,23 @@ case $os in
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
- | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -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* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+ | -mingw32* | -linux-gnu* | -linux-newlib* | -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* )
+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+ | -skyos* | -haiku* | -rdos* | -toppers*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1102,16 +1230,21 @@ case $os in
;;
esac
;;
+ -nto-qnx*)
+ ;;
-nto*)
- os=-nto-qnx
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
-mac*)
os=`echo $os | sed -e 's|mac|macos|'`
;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
-linux*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
@@ -1124,6 +1257,9 @@ case $os in
-opened*)
os=-openedition
;;
+ -os400*)
+ os=-os400
+ ;;
-wince*)
os=-wince
;;
@@ -1145,6 +1281,9 @@ case $os in
-atheos*)
os=-atheos
;;
+ -syllable*)
+ os=-syllable
+ ;;
-386bsd)
os=-bsd
;;
@@ -1155,7 +1294,7 @@ case $os in
os=-rtmk-nova
;;
-ns2 )
- os=-nextstep2
+ os=-nextstep2
;;
-nsk*)
os=-nsk
@@ -1167,6 +1306,9 @@ case $os in
-sinix*)
os=-sysv4
;;
+ -tpf*)
+ os=-tpf
+ ;;
-triton*)
os=-sysv3
;;
@@ -1194,8 +1336,17 @@ case $os in
-xenix)
os=-xenix
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
;;
-none)
;;
@@ -1219,6 +1370,9 @@ else
# system, and we'll never get to this point.
case $basic_machine in
+ spu-*)
+ os=-elf
+ ;;
*-acorn)
os=-riscix1.2
;;
@@ -1228,11 +1382,14 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
;;
- pdp11-*)
+ pdp11-*)
os=-none
;;
*-dec | vax-*)
@@ -1271,9 +1428,15 @@ case $basic_machine in
*-be)
os=-beos
;;
+ *-haiku)
+ os=-haiku
+ ;;
*-ibm)
os=-aix
;;
+ *-knuth)
+ os=-mmixware
+ ;;
*-wec)
os=-proelf
;;
@@ -1325,19 +1488,19 @@ case $basic_machine in
*-next)
os=-nextstep3
;;
- *-gould)
+ *-gould)
os=-sysv
;;
- *-highlevel)
+ *-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
- *-sgi)
+ *-sgi)
os=-irix
;;
- *-siemens)
+ *-siemens)
os=-sysv4
;;
*-masscomp)
@@ -1406,9 +1569,15 @@ case $basic_machine in
-mvs* | -opened*)
vendor=ibm
;;
+ -os400*)
+ vendor=ibm
+ ;;
-ptx*)
vendor=sequent
;;
+ -tpf*)
+ vendor=ibm
+ ;;
-vxsim* | -vxworks* | -windiss*)
vendor=wrs
;;
@@ -1433,7 +1602,7 @@ case $basic_machine in
esac
echo $basic_machine$os
-exit 0
+exit
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/contrib/ncurses/configure b/contrib/ncurses/configure
index e3a6bccbbc5d..f46dcb6d248d 100755
--- a/contrib/ncurses/configure
+++ b/contrib/ncurses/configure
@@ -1,30 +1,156 @@
#! /bin/sh
-
-# From configure.in Revision: 1.268
-
-
-
+# From configure.in Revision: 1.383 .
# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13.20020210
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+# Generated by Autoconf 2.52.20061216.
#
+# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
# This configure script is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
-# Defaults:
-ac_help=
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
+
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p="test -f"
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+exec 6>&1
+
+#
+# Initializations.
+#
ac_default_prefix=/usr/local
-# Any additions from configure.in:
+cross_compiling=no
+subdirs=
+MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Maximum number of lines to put in a shell here document.
+# This variable seems obsolete. It should probably be removed, and
+# only ac_max_sed_lines should be used.
+: ${ac_max_here_lines=38}
+
+ac_unique_file="ncurses/base/lib_initscr.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=
+ac_init_version=false
# The variables have the same names as the options, with
# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
+cache_file=/dev/null
exec_prefix=NONE
-host=NONE
no_create=
-nonopt=NONE
no_recursion=
prefix=NONE
program_prefix=NONE
@@ -33,10 +159,15 @@ program_transform_name=s,x,x,
silent=
site=
srcdir=
-target=NONE
verbose=
x_includes=NONE
x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
@@ -50,17 +181,16 @@ oldincludedir='/usr/include'
infodir='${prefix}/info'
mandir='${prefix}/man'
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
ac_prev=
for ac_option
do
-
# If the previous option needs an argument, assign it.
if test -n "$ac_prev"; then
eval "$ac_prev=\$ac_option"
@@ -68,59 +198,59 @@ do
continue
fi
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
# Accept the important Cygnus configure options, so we can diagnose typos.
- case "$ac_option" in
+ case $ac_option in
-bindir | --bindir | --bindi | --bind | --bin | --bi)
ac_prev=bindir ;;
-bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
+ bindir=$ac_optarg ;;
-build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
+ ac_prev=build_alias ;;
-build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
+ build_alias=$ac_optarg ;;
-cache-file | --cache-file | --cache-fil | --cache-fi \
| --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
ac_prev=cache_file ;;
-cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
| --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
-datadir | --datadir | --datadi | --datad | --data | --dat | --da)
ac_prev=datadir ;;
-datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
| --da=*)
- datadir="$ac_optarg" ;;
+ datadir=$ac_optarg ;;
-disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ eval "enable_$ac_feature=no" ;;
-enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/-/_/g'`
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
*) ac_optarg=yes ;;
esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
+ eval "enable_$ac_feature='$ac_optarg'" ;;
-exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
| --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
@@ -129,185 +259,47 @@ do
-exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
| --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
| --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
+ exec_prefix=$ac_optarg ;;
-gas | --gas | --ga | --g)
# Obsolete; use --with-gas.
with_gas=yes ;;
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
-cat <<EOF
---enable and --with options recognized:
- --with-system-type=XXX test: override derived host system-type
- --enable-add-ons=DIR... used to check if we are a glibc add-on.
- --with-build-cc=XXX if cross-compiling, the host C compiler (\$BUILD_CC)
- --with-build-cflags=XXX if cross-compiling, the host C compiler-flags
- --with-build-ldflags=XXX if cross-compiling, the host linker-flags
- --with-build-libs=XXX if cross-compiling, the host libraries
- --without-cxx do not adjust ncurses bool to match C++
- --without-cxx-binding do not build C++ binding and demo
- --without-ada suppress check for Ada95, don't build demo
- --without-progs suppress build with programs (e.g., tic)
- --without-curses-h install curses.h as ncurses.h only
- --with-install-prefix prefixes actual install-location (\$DESTDIR)
-Options to Specify the Libraries Built/Used:
-EOF
-cat <<EOF
- --with-libtool generate libraries with libtool
- --with-shared generate shared-libraries
- --with-normal generate normal-libraries (default)
- --with-debug generate debug-libraries (default)
- --with-profile generate profile-libraries
- --with-termlib generate separate terminfo library
- --with-dbmalloc test: use Conor Cahill's dbmalloc library
- --with-dmalloc test: use Gray Watson's dmalloc library
- --with-gpm use Alessandro Rubini's GPM library
- --enable-rpath use rpath option when generating shared libraries
- --with-shlib-version=X Specify rel or abi version for shared libs
-Fine-Tuning Your Configuration:
-EOF
-cat <<EOF
- --disable-overwrite leave out the link to -lcurses
- --disable-database do not use terminfo, only fallbacks/termcap
- --with-database=XXX specify terminfo source to install
- --with-fallbacks=XXX specify list of fallback terminal descriptions
- --with-terminfo-dirs=XXX specify list of terminfo directories (default: DATADIR/terminfo)
- --with-default-terminfo-dir=DIR default terminfo directory (default: DATADIR/terminfo)
- --disable-big-core assume machine has little memory
- --enable-termcap compile in termcap fallback support
- --with-termpath=XXX specify list of termcap files (default: /etc/termcap:/usr/share/misc/termcap)
- --enable-getcap fast termcap load, no xrefs to terminfo
- --enable-getcap-cache cache translated termcaps in ~/.terminfo
- --enable-symlinks make tic use symbolic links not hard links
-EOF
-cat <<EOF
- --enable-broken_linker compile with broken-linker support code
- --with-bool=TYPE override fallback type of bool variable
- --with-ospeed=TYPE override type of ospeed variable
- --enable-bsdpad recognize BSD-style prefix padding
- --with-rcs-ids compile-in RCS identifiers
-Options to Specify How Manpages are Installed:
- --with-manpage-format specify manpage-format: gzip/compress/BSDI/normal and
- optionally formatted, e.g., gzip,formatted
- --with-manpage-renames specify manpage-renaming
- --with-manpage-symlinks specify manpage-symlinks
- --with-manpage-tbl specify manpage processing with tbl
-Extensions:
- --disable-ext-funcs disable function-extensions
-EOF
-cat <<EOF
- --enable-const compile with extra/non-standard const
- --enable-no-padding compile with \$NCURSES_NO_PADDING code
- --enable-sigwinch compile with SIGWINCH handler
- --enable-tcap-names compile with user-definable terminal capabilities
-Development Code:
- --with-develop enable all development options
- --enable-hard-tabs compile with hard-tabs code
- --disable-root-environ limit environment when running as root
- --enable-xmc-glitch compile with limited support for xmc
-Experimental Code:
- --disable-assumed-color do not assume anything about default-colors
- --disable-hashmap compile without hashmap scrolling-optimization
-EOF
-cat <<EOF
- --enable-colorfgbg compile with \$COLORFGBG code
- --enable-safe-sprintf compile with experimental safe-sprintf code
- --disable-scroll-hints compile without scroll-hints code
- --enable-widec compile with experimental wide-char/UTF-8 code
- --with-caps=alt compile with experimental alternate Caps file
-Testing/development Options:
- --enable-echo build: display "compiling" commands (default)
- --enable-warnings build: turn on GCC compiler warnings
- --enable-assertions test: turn on generation of assertion code
- --disable-leaks test: suppress permanent memory-leaks
- --enable-expanded test: generate functions for certain macros
- --disable-macros test: use functions rather than macros
-EOF
-cat <<EOF
-Ada95 Binding Options:
- --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)
- --with-ada-include=DIR Ada includes are in DIR (default: PREFIX/lib/ada/adainclude)
- --with-ada-objects=DIR Ada objects are in DIR (default: PREFIX/lib/ada/adalib)
-EOF
- exit 0 ;;
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
-host | --host | --hos | --ho)
- ac_prev=host ;;
+ ac_prev=host_alias ;;
-host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
+ host_alias=$ac_optarg ;;
-includedir | --includedir | --includedi | --included | --include \
| --includ | --inclu | --incl | --inc)
ac_prev=includedir ;;
-includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
| --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
+ includedir=$ac_optarg ;;
-infodir | --infodir | --infodi | --infod | --info | --inf)
ac_prev=infodir ;;
-infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
+ infodir=$ac_optarg ;;
-libdir | --libdir | --libdi | --libd)
ac_prev=libdir ;;
-libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
+ libdir=$ac_optarg ;;
-libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
| --libexe | --libex | --libe)
ac_prev=libexecdir ;;
-libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
| --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
+ libexecdir=$ac_optarg ;;
-localstatedir | --localstatedir | --localstatedi | --localstated \
| --localstate | --localstat | --localsta | --localst \
@@ -316,12 +308,12 @@ EOF
-localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
| --localstate=* | --localstat=* | --localsta=* | --localst=* \
| --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
+ localstatedir=$ac_optarg ;;
-mandir | --mandir | --mandi | --mand | --man | --ma | --m)
ac_prev=mandir ;;
-mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
+ mandir=$ac_optarg ;;
-nfp | --nfp | --nf)
# Obsolete; use --without-fp.
@@ -342,26 +334,26 @@ EOF
-oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
| --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
| --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
+ oldincludedir=$ac_optarg ;;
-prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
ac_prev=prefix ;;
-prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
+ prefix=$ac_optarg ;;
-program-prefix | --program-prefix | --program-prefi | --program-pref \
| --program-pre | --program-pr | --program-p)
ac_prev=program_prefix ;;
-program-prefix=* | --program-prefix=* | --program-prefi=* \
| --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
+ program_prefix=$ac_optarg ;;
-program-suffix | --program-suffix | --program-suffi | --program-suff \
| --program-suf | --program-su | --program-s)
ac_prev=program_suffix ;;
-program-suffix=* | --program-suffix=* | --program-suffi=* \
| --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
+ program_suffix=$ac_optarg ;;
-program-transform-name | --program-transform-name \
| --program-transform-nam | --program-transform-na \
@@ -378,7 +370,7 @@ EOF
| --program-transfo=* | --program-transf=* \
| --program-trans=* | --program-tran=* \
| --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
+ program_transform_name=$ac_optarg ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil)
@@ -388,7 +380,7 @@ EOF
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
| --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
+ sbindir=$ac_optarg ;;
-sharedstatedir | --sharedstatedir | --sharedstatedi \
| --sharedstated | --sharedstate | --sharedstat | --sharedsta \
@@ -399,58 +391,57 @@ EOF
| --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
| --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
| --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
+ sharedstatedir=$ac_optarg ;;
-site | --site | --sit)
ac_prev=site ;;
-site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
+ site=$ac_optarg ;;
-srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
ac_prev=srcdir ;;
-srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
+ srcdir=$ac_optarg ;;
-sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
| --syscon | --sysco | --sysc | --sys | --sy)
ac_prev=sysconfdir ;;
-sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
| --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
+ sysconfdir=$ac_optarg ;;
-target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
+ ac_prev=target_alias ;;
-target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
+ target_alias=$ac_optarg ;;
-v | -verbose | --verbose | --verbos | --verbo | --verb)
verbose=yes ;;
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.13.20020210"
- exit 0 ;;
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
-with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
+ case $ac_option in
+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
*) ac_optarg=yes ;;
esac
- eval "with_${ac_package}='$ac_optarg'" ;;
+ eval "with_$ac_package='$ac_optarg'" ;;
-without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/-/_/g'`
+ eval "with_$ac_package=no" ;;
--x)
# Obsolete; use --with-x.
@@ -461,98 +452,98 @@ EOF
ac_prev=x_includes ;;
-x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
| --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
+ x_includes=$ac_optarg ;;
-x-libraries | --x-libraries | --x-librarie | --x-librari \
| --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
ac_prev=x_libraries ;;
-x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
| --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
+ x_libraries=$ac_optarg ;;
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
;;
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
+ eval "$ac_envvar='$ac_optarg'"
+ export $ac_envvar ;;
+
*)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
;;
esac
done
if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
fi
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
+# Be sure to have absolute paths.
+for ac_var in exec_prefix prefix
+do
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
+ *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
+ esac
+done
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
+# Be sure to have absolute paths.
+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+ localstatedir libdir includedir oldincludedir infodir mandir
do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+ eval ac_val=$`echo $ac_var`
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) ;;
+ *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; };;
esac
done
-# NLS nuisances.
-# Only set these to C if already set. These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: should be removed in autoconf 3.0.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=ncurses/base/lib_initscr.c
+test "$silent" = yes && exec 6>/dev/null
# Find the source files, if location was not specified.
if test -z "$srcdir"; then
ac_srcdir_defaulted=yes
# Try the directory containing this script, then its parent.
ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+ ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'`
test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
srcdir=$ac_confdir
if test ! -r $srcdir/$ac_unique_file; then
@@ -563,13 +554,428 @@ else
fi
if test ! -r $srcdir/$ac_unique_file; then
if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+ { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2
+ { (exit 1); exit 1; }; }
else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+ { echo "$as_me: error: cannot find sources in $srcdir" >&2
+ { (exit 1); exit 1; }; }
fi
fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
+ac_env_build_alias_set=${build_alias+set}
+ac_env_build_alias_value=$build_alias
+ac_cv_env_build_alias_set=${build_alias+set}
+ac_cv_env_build_alias_value=$build_alias
+ac_env_host_alias_set=${host_alias+set}
+ac_env_host_alias_value=$host_alias
+ac_cv_env_host_alias_set=${host_alias+set}
+ac_cv_env_host_alias_value=$host_alias
+ac_env_target_alias_set=${target_alias+set}
+ac_env_target_alias_value=$target_alias
+ac_cv_env_target_alias_set=${target_alias+set}
+ac_cv_env_target_alias_value=$target_alias
+ac_env_CC_set=${CC+set}
+ac_env_CC_value=$CC
+ac_cv_env_CC_set=${CC+set}
+ac_cv_env_CC_value=$CC
+ac_env_CFLAGS_set=${CFLAGS+set}
+ac_env_CFLAGS_value=$CFLAGS
+ac_cv_env_CFLAGS_set=${CFLAGS+set}
+ac_cv_env_CFLAGS_value=$CFLAGS
+ac_env_LDFLAGS_set=${LDFLAGS+set}
+ac_env_LDFLAGS_value=$LDFLAGS
+ac_cv_env_LDFLAGS_set=${LDFLAGS+set}
+ac_cv_env_LDFLAGS_value=$LDFLAGS
+ac_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_env_CPPFLAGS_value=$CPPFLAGS
+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set}
+ac_cv_env_CPPFLAGS_value=$CPPFLAGS
+ac_env_CPP_set=${CPP+set}
+ac_env_CPP_value=$CPP
+ac_cv_env_CPP_set=${CPP+set}
+ac_cv_env_CPP_value=$CPP
+ac_env_CXX_set=${CXX+set}
+ac_env_CXX_value=$CXX
+ac_cv_env_CXX_set=${CXX+set}
+ac_cv_env_CXX_value=$CXX
+ac_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_env_CXXFLAGS_value=$CXXFLAGS
+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
+ac_cv_env_CXXFLAGS_value=$CXXFLAGS
+ac_env_CXXCPP_set=${CXXCPP+set}
+ac_env_CXXCPP_value=$CXXCPP
+ac_cv_env_CXXCPP_set=${CXXCPP+set}
+ac_cv_env_CXXCPP_value=$CXXCPP
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<EOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+EOF
+
+ cat <<EOF
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --datadir=DIR read-only architecture-independent data [PREFIX/share]
+ --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]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --infodir=DIR info documentation [PREFIX/info]
+ --mandir=DIR man documentation [PREFIX/man]
+EOF
+
+ cat <<\EOF
+
+Program names:
+ --program-prefix=PREFIX prepend PREFIX to installed program names
+ --program-suffix=SUFFIX append SUFFIX to installed program names
+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names
+
+System types:
+ --build=BUILD configure for building on BUILD [guessed]
+ --host=HOST build programs to run on HOST [BUILD]
+ --target=TARGET configure for building compilers for TARGET [HOST]
+EOF
+fi
+
+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]
+
+ --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-cxx do not adjust ncurses bool to match C++
+ --without-cxx-binding do not build C++ binding and demo
+ --without-ada suppress check for Ada95, don't build demo
+ --without-progs suppress build with programs (e.g., tic)
+ --without-curses-h install curses.h as ncurses.h only
+ --with-install-prefix prefixes actual install-location ($DESTDIR)
+Build-Tools Needed to Compile Temporary Applications for Cross-compiling:
+ --with-build-cc=XXX the build C compiler ($BUILD_CC)
+ --with-build-cpp=XXX the build C preprocessor ($BUILD_CPP)
+ --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)
+ --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)
+ --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)
+ --with-build-libs=XXX the build libraries (${BUILD_LIBS})
+Options to Specify the Libraries Built/Used:
+ --with-libtool generate libraries with libtool
+ --with-shared generate shared-libraries
+ --with-normal generate normal-libraries (default)
+ --with-debug generate debug-libraries (default)
+ --with-profile generate profile-libraries
+ --with-termlib generate separate terminfo 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
+ --with-shlib-version=X Specify rel or abi version for shared libs
+Fine-Tuning Your Configuration:
+ --disable-overwrite leave out the link to -lcurses
+ --disable-database 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
+ --without-xterm-new specify if xterm terminfo should be old version
+ --with-terminfo-dirs=XXX specify list of terminfo directories (default: DATADIR/terminfo)
+ --with-default-terminfo-dir=DIR default terminfo directory (default: DATADIR/terminfo)
+ --disable-big-core assume machine has little memory
+ --enable-termcap compile in termcap fallback support
+ --with-termpath=XXX specify list of termcap files (default: /etc/termcap:/usr/share/misc/termcap)
+ --enable-getcap fast termcap load, no xrefs to terminfo
+ --enable-getcap-cache cache translated termcaps in ~/.terminfo
+ --disable-home-terminfo drop ~/.terminfo from terminfo search-path
+ --disable-root-environ restrict environment when running as root
+ --enable-symlinks make tic use symbolic links not hard links
+ --enable-broken_linker compile with broken-linker support code
+ --enable-bsdpad recognize BSD-style prefix padding
+ --enable-widec compile with wide-char/UTF-8 code
+ --disable-lp64 allow chtype to be long (ignore _LP64)
+ --disable-largefile omit support for large files
+ --disable-tparm-varargs compile tparm() without varargs interface
+ --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-rcs-ids compile-in RCS identifiers
+Options to Specify How Manpages are Installed:
+ --with-manpage-format specify manpage-format: gzip/compress/BSDI/normal and
+ optionally formatted/catonly, e.g., gzip,formatted
+ --with-manpage-renames specify manpage-renaming
+ --with-manpage-aliases specify manpage-aliases using .so
+ --with-manpage-symlinks specify manpage-aliases using symlinks
+ --with-manpage-tbl specify manpage processing with tbl
+Extensions:
+ --disable-ext-funcs disable function-extensions
+ --enable-const compile with extra/non-standard const
+ --enable-no-padding compile with $NCURSES_NO_PADDING code
+ --enable-signed-char compile with SIGWINCH handler
+ --enable-sigwinch compile with SIGWINCH handler
+ --enable-tcap-names compile with user-definable terminal capabilities
+Development Code:
+ --without-develop disable development options
+ --enable-hard-tabs compile with hard-tabs code
+ --enable-xmc-glitch compile with support for xmc (magic-cookie)
+Experimental Code:
+ --disable-assumed-color do not assume anything about default-colors
+ --disable-hashmap compile without hashmap scrolling-optimization
+ --enable-colorfgbg compile with $COLORFGBG code
+ --enable-ext-colors compile for experimental 256-color support
+ --enable-ext-mouse compile for experimental mouse-encoding
+ --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
+Testing/development Options:
+ --enable-echo build: display "compiling" commands (default)
+ --enable-warnings build: turn on GCC compiler warnings
+ --enable-assertions test: turn on generation of assertion code
+ --with-dmalloc test: use Gray Watson's dmalloc library
+ --with-dbmalloc test: use Conor Cahill's dbmalloc library
+ --with-valgrind test: use valgrind
+ --disable-leaks test: free permanent memory, analyze leaks
+ --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:
+ --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)
+ --with-ada-include=DIR Ada includes are in DIR (default: PREFIX/lib/ada/adainclude)
+ --with-ada-objects=DIR Ada objects are in DIR (default: PREFIX/lib/ada/adalib)
+
+Some influential environment variables:
+ CC C compiler command
+ CFLAGS C compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
+ headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+EOF
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ ac_popdir=`pwd`
+ for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue
+ cd $ac_subdir
+ # A "../" for each directory in /$ac_subdir.
+ ac_dots=`echo $ac_subdir |
+ sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'`
+
+ case $srcdir in
+ .) # No --srcdir option. We are building in place.
+ ac_sub_srcdir=$srcdir ;;
+ [\\/]* | ?:[\\/]* ) # Absolute path.
+ ac_sub_srcdir=$srcdir/$ac_subdir ;;
+ *) # Relative path.
+ ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;;
+ esac
+
+ # Check for guested configure; otherwise get Cygnus style configure.
+ if test -f $ac_sub_srcdir/configure.gnu; then
+ echo
+ $SHELL $ac_sub_srcdir/configure.gnu --help=recursive
+ elif test -f $ac_sub_srcdir/configure; then
+ echo
+ $SHELL $ac_sub_srcdir/configure --help=recursive
+ elif test -f $ac_sub_srcdir/configure.ac ||
+ test -f $ac_sub_srcdir/configure.in; then
+ echo
+ $ac_configure --help
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2
+ fi
+ cd $ac_popdir
+ done
+fi
+
+test -n "$ac_init_help" && exit 0
+if $ac_init_version; then
+ cat <<\EOF
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+EOF
+ exit 0
+fi
+exec 5>config.log
+cat >&5 <<EOF
+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.20061216. Invocation command line was
+
+ $ $0 $@
+
+EOF
+{
+cat <<_ASUNAME
+## ---------- ##
+## Platform. ##
+## ---------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+hostinfo = `(hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+PATH = $PATH
+
+_ASUNAME
+} >&5
+
+cat >&5 <<EOF
+## ------------ ##
+## Core tests. ##
+## ------------ ##
+
+EOF
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell meta-characters.
+ac_configure_args=
+ac_sep=
+for ac_arg
+do
+ case $ac_arg in
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c) ;;
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"`
+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
+ ac_sep=" " ;;
+ *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg"
+ ac_sep=" " ;;
+ esac
+ # Get rid of the leading space.
+done
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ echo >&5
+ echo "## ----------------- ##" >&5
+ echo "## Cache variables. ##" >&5
+ echo "## ----------------- ##" >&5
+ echo >&5
+ # The following way of writing the cache mishandles newlines in values,
+{
+ (set) 2>&1 |
+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ sed -n \
+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
+ ;;
+ *)
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} >&5
+ sed "/^$/d" confdefs.h >conftest.log
+ if test -s conftest.log; then
+ echo >&5
+ echo "## ------------ ##" >&5
+ echo "## confdefs.h. ##" >&5
+ echo "## ------------ ##" >&5
+ echo >&5
+ cat conftest.log >&5
+ fi
+ (echo; echo) >&5
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal" >&5
+ echo "$as_me: exit $exit_status" >&5
+ rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files &&
+ exit $exit_status
+ ' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo >confdefs.h
+
+# Let the site file select an alternate cache file if it wants to.
# Prefer explicitly selected file to automatically selected ones.
if test -z "$CONFIG_SITE"; then
if test "x$prefix" != xNONE; then
@@ -580,59 +986,210 @@ if test -z "$CONFIG_SITE"; then
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
+ { echo "$as_me:989: 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"
fi
done
if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
+ # 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:1000: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . $cache_file;;
+ *) . ./$cache_file;;
+ esac
+ fi
else
- echo "creating cache $cache_file"
- > $cache_file
+ { echo "$as_me:1008: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in `(set) 2>&1 |
+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val="\$ac_cv_env_${ac_var}_value"
+ eval ac_new_val="\$ac_env_${ac_var}_value"
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:1024: 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:1028: 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:1034: 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:1036: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:1038: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status. It doesn't matter if
+ # we pass some twice (in addition to the command line arguments).
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"`
+ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val"
+ ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:1057: 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:1059: 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
ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
+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
+
+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
+ *c*,-n*) ECHO_N= ECHO_C='
+' 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:1080: PATH=\".;.\"; conftest.sh") >&5
+ (PATH=".;."; conftest.sh) 2>&5
+ ac_status=$?
+ echo "$as_me:1083: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ ac_path_separator=';'
else
- ac_n= ac_c='\c' ac_t=
+ ac_path_separator=:
fi
+PATH_SEPARATOR="$ac_path_separator"
+rm -f conftest.sh
+ac_config_headers="$ac_config_headers include/ncurses_cfg.h:include/ncurses_cfg.hin"
+top_builddir=`pwd`
+echo "$as_me:1096: 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
+fi
+echo "$as_me:1106: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+test -z "$EGREP" && { { echo "$as_me:1110: error: No egrep program found" >&5
+echo "$as_me: error: No egrep program found" >&2;}
+ { (exit 1); exit 1; }; }
-NCURSES_MAJOR="`egrep '^NCURSES_MAJOR[ ]*=' $srcdir/dist.mk | sed -e 's/^[^0-9]*//'`"
-NCURSES_MINOR="`egrep '^NCURSES_MINOR[ ]*=' $srcdir/dist.mk | sed -e 's/^[^0-9]*//'`"
-NCURSES_PATCH="`egrep '^NCURSES_PATCH[ ]*=' $srcdir/dist.mk | sed -e 's/^[^0-9]*//'`"
+NCURSES_MAJOR="`$ac_cv_prog_egrep '^NCURSES_MAJOR[ ]*=' $srcdir/dist.mk | sed -e 's/^[^0-9]*//'`"
+NCURSES_MINOR="`$ac_cv_prog_egrep '^NCURSES_MINOR[ ]*=' $srcdir/dist.mk | sed -e 's/^[^0-9]*//'`"
+NCURSES_PATCH="`$ac_cv_prog_egrep '^NCURSES_PATCH[ ]*=' $srcdir/dist.mk | sed -e 's/^[^0-9]*//'`"
cf_cv_abi_version=${NCURSES_MAJOR}
cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
cf_cv_timestamp=`date`
-echo "$ac_t""Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" 1>&6
-
-
-
-
+echo "$as_me:1120: 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
+
+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:1128: 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;
+
+ NCURSES_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'`
+ 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
+ ;;
+ *)
+ { { echo "$as_me:1141: 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:1147: 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
+ ;;
+ *)
+ { { echo "$as_me:1157: 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:1163: error: Release minor-version value is empty" >&5
+echo "$as_me: error: Release minor-version value is empty" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+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:1173: 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
+fi;
+if test -n "$cf_cv_abi_version" ; then
+ case $cf_cv_abi_version in #(vi
+ [0-9]*) #(vi
+ ;;
+ *)
+ { { echo "$as_me:1183: 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:1189: error: ABI version value is empty" >&5
+echo "$as_me: error: ABI version value is empty" >&2;}
+ { (exit 1); exit 1; }; }
+fi
ac_aux_dir=
for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
@@ -644,106 +1201,101 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
ac_aux_dir=$ac_dir
ac_install_sh="$ac_aux_dir/install.sh -c"
break
+ elif test -f $ac_dir/shtool; then
+ ac_aux_dir=$ac_dir
+ ac_install_sh="$ac_aux_dir/shtool install -c"
+ break
fi
done
if test -z "$ac_aux_dir"; then
- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
+ { { echo "$as_me:1211: 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
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"
+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-if test -f $srcdir/config.guess ; then
-
-# Do some error checking and defaulting for the host and target type.
-# The inputs are:
-# configure --host=HOST --target=TARGET --build=BUILD NONOPT
-#
-# The rules are:
-# 1. You are not allowed to specify --host, --target, and nonopt at the
-# same time.
-# 2. Host defaults to nonopt.
-# 3. If nonopt is not specified, then host defaults to the current host,
-# as determined by config.guess.
-# 4. Target and build default to nonopt.
-# 5. If nonopt is not specified, then target and build default to host.
+# Make sure we can run config.sub.
+$ac_config_sub sun4 >/dev/null 2>&1 ||
+ { { echo "$as_me:1221: error: cannot run $ac_config_sub" >&5
+echo "$as_me: error: cannot run $ac_config_sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+echo "$as_me:1225: 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
+else
+ ac_cv_build_alias=$build_alias
+test -z "$ac_cv_build_alias" &&
+ ac_cv_build_alias=`$ac_config_guess`
+test -z "$ac_cv_build_alias" &&
+ { { echo "$as_me:1234: 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:1238: 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:1243: 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:1250: 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
+else
+ ac_cv_host_alias=$host_alias
+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:1259: 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:1264: 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/'`
+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:1272: 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
+else
+ ac_cv_target_alias=$target_alias
+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:1281: 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:1286: 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/'`
+target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
# The aliases save the names the user supplied, while $host etc.
# will get canonicalized.
-case $host---$target---$nonopt in
-NONE---*---* | *---NONE---* | *---*---NONE) ;;
-*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
-esac
-
-
-# Make sure we can run config.sub.
-if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
-else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:687: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
- case $nonopt in
- NONE)
- if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
- else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
- fi ;;
- *) host_alias=$nonopt ;;
- esac ;;
-esac
-
-host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$host" 1>&6
-
-echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:708: checking target system type" >&5
-
-target_alias=$target
-case "$target_alias" in
-NONE)
- case $nonopt in
- NONE) target_alias=$host_alias ;;
- *) target_alias=$nonopt ;;
- esac ;;
-esac
-
-target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
-target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$target" 1>&6
-
-echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:726: checking build system type" >&5
-
-build_alias=$build
-case "$build_alias" in
-NONE)
- case $nonopt in
- NONE) build_alias=$host_alias ;;
- *) build_alias=$nonopt ;;
- esac ;;
-esac
-
-build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
-build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$build" 1>&6
-
-test "$host_alias" != "$target_alias" &&
+test -n "$target_alias" &&
test "$program_prefix$program_suffix$program_transform_name" = \
NONENONEs,x,x, &&
program_prefix=${target_alias}-
-
system_name="$host_os"
else
system_name="`(uname -s -r) 2>/dev/null`"
@@ -751,86 +1303,59 @@ else
system_name="`(hostname) 2>/dev/null`"
fi
fi
-test -n "$system_name" && cat >> confdefs.h <<EOF
+test -n "$system_name" && cat >>confdefs.h <<EOF
#define SYSTEM_NAME "$system_name"
EOF
-if eval "test \"`echo '$''{'cf_cv_system_name'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+if test "${cf_cv_system_name+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
cf_cv_system_name="$system_name"
fi
-
test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$ac_t""Configuring for $cf_cv_system_name" 1>&6
+test -n "$cf_cv_system_name" && echo "$as_me:1317: 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 "$ac_t""Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" 1>&6
- { echo "configure: error: "Please remove config.cache and try again."" 1>&2; exit 1; }
+ echo "$as_me:1321: 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:1323: 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
-
# Check whether --with-system-type or --without-system-type was given.
if test "${with_system_type+set}" = set; then
withval="$with_system_type"
- echo "configure: warning: overriding system type to $withval" 1>&2
+ { echo "$as_me:1331: WARNING: overriding system type to $withval" >&5
+echo "$as_me: WARNING: overriding system type to $withval" >&2;}
cf_cv_system_name=$withval
-fi
-
-
-# We need a configure script only when compiling as part of GNU C library.
-# Here we have to generate one of the files we need while compiling.
-#
-# The only problem is that users of the package might think they have to
-# run configure themself and find it irritating when nothing happens.
-#
-# So we try here to find out whether we are called from the glibc configure
-# or by a user.
-#
-
-# Check whether --enable-add-ons or --disable-add-ons was given.
-if test "${enable_add_ons+set}" = set; then
- enableval="$enable_add_ons"
- glibc_add_on=yes
-else
- glibc_add_on=
-fi
-
-
-if test x"$glibc_add_on" = "xyes" ; then
- rm -f $srcdir/Banner
- # We are in glibc.
- rm -f $srcdir/Makefile
- cp $srcdir/Makefile.glibc $srcdir/Makefile
- echo "ncurses `grep \"^[ ]*ncurses-version[ ]*=.*$\" \
- $srcdir/Makefile | sed -e \
- 's/^[ ]*ncurses-version[ ]*=[ ]*\([^ ^ ]*\)[ ]*$/\1/'`" > $srcdir/Banner
- exit 0
-fi
+fi;
### Save the given $CFLAGS to allow user-override.
cf_user_CFLAGS="$CFLAGS"
### Default install-location
-echo $ac_n "checking for prefix""... $ac_c" 1>&6
-echo "configure:819: checking for prefix" >&5
+echo "$as_me:1341: 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*|netbsd*|freebsd*|linux*|cygwin*)
+ openbsd*|freebsd*|linux*|cygwin*|k*bsd*-gnu)
prefix=/usr
;;
*) prefix=$ac_default_prefix
;;
esac
fi
-echo "$ac_t""$prefix" 1>&6
+echo "$as_me:1353: result: $prefix" >&5
+echo "${ECHO_T}$prefix" >&6
if test "x$prefix" = "xNONE" ; then
-echo $ac_n "checking for default include-directory""... $ac_c" 1>&6
-echo "configure:834: checking for default include-directory" >&5
+echo "$as_me:1357: 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 \
$includedir \
@@ -852,219 +1377,584 @@ do
fi
test -n "$verbose" && echo " tested $cf_dir" 1>&6
done
-echo "$ac_t""$includedir" 1>&6
+echo "$as_me:1380: result: $includedir" >&5
+echo "${ECHO_T}$includedir" >&6
fi
-
### Checks for programs.
-# Extract the first word of "gcc", so it can be a program name with args.
+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
+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:1394: 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
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}gcc"
+echo "$as_me:1409: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ echo "$as_me:1417: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
+else
+ echo "$as_me:1420: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:864: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:1429: 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
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_CC="gcc"
+echo "$as_me:1444: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:1452: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:1455: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+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:1468: 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
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="gcc"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ 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_CC="${ac_tool_prefix}cc"
+echo "$as_me:1483: found $ac_dir/$ac_word" >&5
+break
+done
+
fi
fi
-CC="$ac_cv_prog_CC"
+CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
+ echo "$as_me:1491: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:1494: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
fi
+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:1503: 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
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_CC="cc"
+echo "$as_me:1518: found $ac_dir/$ac_word" >&5
+break
+done
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:1526: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:1529: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ CC=$ac_ct_CC
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:894: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:1542: 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
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
ac_prog_rejected=no
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ 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
+if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+fi
+ac_cv_prog_CC="cc"
+echo "$as_me:1562: found $ac_dir/$ac_word" >&5
+break
+done
+
if test $ac_prog_rejected = yes; then
# We found a bogon in the path, so make sure we never use it.
set dummy $ac_cv_prog_CC
shift
- if test $# -gt 0; then
+ if test $# != 0; then
# We chose a different compiler from the bogus one.
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
- set dummy "$ac_dir/$ac_word" "$@"
+ set dummy "$ac_dir/$ac_word" ${1+"$@"}
shift
ac_cv_prog_CC="$@"
fi
fi
fi
fi
-CC="$ac_cv_prog_CC"
+CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
+ echo "$as_me:1584: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:1587: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
- if test -z "$CC"; then
- case "`uname -s`" in
- *win32* | *WIN32*)
- # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:945: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl
+ 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:1598: 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
else
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="cl"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ 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_CC="$ac_tool_prefix$ac_prog"
+echo "$as_me:1613: found $ac_dir/$ac_word" >&5
+break
+done
+
fi
fi
-CC="$ac_cv_prog_CC"
+CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
+ echo "$as_me:1621: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6
else
- echo "$ac_t""no" 1>&6
-fi
- ;;
- esac
- fi
- test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
+ echo "$as_me:1624: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:977: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in 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:1637: 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
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_CC="$ac_prog"
+echo "$as_me:1652: found $ac_dir/$ac_word" >&5
+break
+done
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ echo "$as_me:1660: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6
+else
+ echo "$as_me:1663: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
-cat > conftest.$ac_ext << EOF
+ test -n "$ac_ct_CC" && break
+done
-#line 988 "configure"
+ CC=$ac_ct_CC
+fi
+
+fi
+
+test -z "$CC" && { { echo "$as_me:1675: 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:1680:" \
+ "checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:1683: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:1686: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:1688: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:1691: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:1693: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:1696: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 1700 "configure"
#include "confdefs.h"
-main(){return(0);}
-EOF
-if { (eval echo configure:993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cc_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cc_cross=no
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+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:1716: 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:1719: \"$ac_link_default\"") >&5
+ (eval $ac_link_default) 2>&5
+ ac_status=$?
+ echo "$as_me:1722: \$? = $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
+# resort.
+for ac_file in `ls a.exe conftest.exe 2>/dev/null;
+ ls a.out conftest 2>/dev/null;
+ ls a.* conftest.* 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
+ a.out ) # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ # FIXME: I believe we export ac_cv_exeext for Libtool --akim.
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1745: 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:1751: 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:1756: 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:1762: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1765: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
else
- ac_cv_prog_cc_cross=yes
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:1772: 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;}
+ { (exit 1); exit 1; }; }
+ fi
fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cc_works=no
fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1019: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1024: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1033: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gcc=yes
+echo "$as_me:1780: 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:1787: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
+echo "$as_me:1789: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6
+
+echo "$as_me:1792: checking for executable suffix" >&5
+echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
+if { (eval echo "$as_me:1794: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:1797: \$? = $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
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
+ case $ac_file in
+ *.$ac_ext | *.o | *.obj | *.xcoff | *.tds | *.d | *.pdb ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ export ac_cv_exeext
+ break;;
+ * ) break;;
+ esac
+done
else
- ac_cv_prog_gcc=no
-fi
+ { { echo "$as_me:1813: 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
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+rm -f conftest$ac_cv_exeext
+echo "$as_me:1819: 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:1825: 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 1831 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (eval echo "$as_me:1843: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1846: \$? = $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
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
else
- GCC=
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+{ { echo "$as_me:1858: error: cannot compute OBJEXT: cannot compile" >&5
+echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
+ { (exit 1); exit 1; }; }
fi
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1052: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+echo "$as_me:1865: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+echo "$as_me:1869: 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
- echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
+ cat >conftest.$ac_ext <<_ACEOF
+#line 1875 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1890: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1893: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1896: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1899: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:1911: 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:1917: 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 1923 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1935: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1938: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1941: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1944: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
ac_cv_prog_cc_g=yes
else
- ac_cv_prog_cc_g=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_prog_cc_g=no
fi
-rm -f conftest*
-
+rm -f conftest.$ac_objext conftest.$ac_ext
fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
+echo "$as_me:1954: 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"
+ CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
CFLAGS="-g -O2"
@@ -1078,227 +1968,425 @@ else
CFLAGS=
fi
fi
-
-GCC_VERSION=none
-if test "$GCC" = yes ; then
- echo $ac_n "checking version of gcc""... $ac_c" 1>&6
-echo "configure:1086: checking version of gcc" >&5
- GCC_VERSION="`${CC} --version|head -1`"
- echo "$ac_t""$GCC_VERSION" 1>&6
-fi
-
-# If we're cross-compiling, allow the user to override the tools and their
-# options. The configure script is oriented toward identifying the target
-# compiler, etc., but we need a host compiler to generate parts of the source.
-BUILD_CC='$(CC)'
-BUILD_CFLAGS='$(CFLAGS)'
-BUILD_LDFLAGS='$(LDFLAGS)'
-BUILD_LIBS='$(LIBS)'
-if test "$host_alias" != "$target_alias" ; then
-
-# Check whether --with-build-cc or --without-build-cc was given.
-if test "${with_build_cc+set}" = set; then
- withval="$with_build_cc"
- BUILD_CC="$withval"
-else
- for ac_prog in $CC gcc cc
+# Some people use a C++ compiler to compile C. Since we use `exit',
+# in C++ we need to declare it. In case someone uses the same compiler
+# for both compiling C and C++ we need to have the C++ compiler decide
+# the declaration of exit, since it's the most demanding environment.
+cat >conftest.$ac_ext <<_ACEOF
+#ifndef __cplusplus
+ choke me
+#endif
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:1981: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:1984: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:1987: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:1990: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ for ac_declaration in \
+ ''\
+ '#include <stdlib.h>' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1110: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$BUILD_CC"; then
- ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2002 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2015: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2018: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2021: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2024: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_BUILD_CC="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+continue
fi
-BUILD_CC="$ac_cv_prog_BUILD_CC"
-if test -n "$BUILD_CC"; then
- echo "$ac_t""$BUILD_CC" 1>&6
+rm -f conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2034 "configure"
+#include "confdefs.h"
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2046: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2049: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2052: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2055: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ break
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
fi
-
-test -n "$BUILD_CC" && break
+rm -f conftest.$ac_objext conftest.$ac_ext
done
-
-fi
-
-
-# Check whether --with-build-cflags or --without-build-cflags was given.
-if test "${with_build_cflags+set}" = set; then
- withval="$with_build_cflags"
- BUILD_CFLAGS="$withval"
-fi
-
-
-# Check whether --with-build-ldflags or --without-build-ldflags was given.
-if test "${with_build_ldflags+set}" = set; then
- withval="$with_build_ldflags"
- BUILD_LDFLAGS="$withval"
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
fi
-
-# Check whether --with-build-libs or --without-build-libs was given.
-if test "${with_build_libs+set}" = set; then
- withval="$with_build_libs"
- BUILD_LIBS="$withval"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+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
+GCC_VERSION=none
+if test "$GCC" = yes ; then
+ echo "$as_me:2085: checking version of $CC" >&5
+echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
+ GCC_VERSION="`${CC} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
+ test -z "$GCC_VERSION" && GCC_VERSION=unknown
+ echo "$as_me:2089: result: $GCC_VERSION" >&5
+echo "${ECHO_T}$GCC_VERSION" >&6
fi
-
-
-
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1169: checking how to run the C preprocessor" >&5
+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:2099: 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
CPP=
fi
if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- # This must be in double quotes, not single quotes, because CPP may get
- # substituted into the Makefile and "${CC-cc}" will confuse make.
- CPP="${CC-cc} -E"
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
# On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
-#line 1184 "configure"
+ # not just through cpp. "Syntax error" is here to catch this case.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2120 "configure"
#include "confdefs.h"
#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1190: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:2125: \"$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:2131: \$? = $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
:
else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 1201 "configure"
+ # Broken: fails on valid input.
+continue
+fi
+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 2154 "configure"
#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1207: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:2158: \"$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:2164: \$? = $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
+ # Broken: success on invalid input.
+continue
else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -nologo -E"
- cat > conftest.$ac_ext <<EOF
-#line 1218 "configure"
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+echo "$as_me:2201: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # 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 2211 "configure"
#include "confdefs.h"
#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1224: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:2216: \"$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:2222: \$? = $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
:
else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP=/lib/cpp
+ # Broken: fails on valid input.
+continue
fi
-rm -f conftest*
-fi
-rm -f conftest*
+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 2245 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:2249: \"$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:2255: \$? = $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
-rm -f conftest*
- ac_cv_prog_CPP="$CPP"
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ # Passes both tests.
+ac_preproc_ok=:
+break
fi
- CPP="$ac_cv_prog_CPP"
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
else
- ac_cv_prog_CPP="$CPP"
+ { { echo "$as_me:2283: error: C preprocessor \"$CPP\" fails sanity check" >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
+ { (exit 1); exit 1; }; }
fi
-echo "$ac_t""$CPP" 1>&6
-if test $ac_cv_prog_gcc = yes; then
- echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:1250: checking whether ${CC-cc} needs -traditional" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+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
+
+if test $ac_cv_c_compiler_gnu = yes; then
+ echo "$as_me:2296: 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 <<EOF
-#line 1256 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2303 "configure"
#include "confdefs.h"
#include <sgtty.h>
-Autoconf TIOCGETP
-EOF
+int Autoconf = TIOCGETP;
+_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "$ac_pattern" >/dev/null 2>&1; then
- rm -rf conftest*
ac_cv_prog_gcc_traditional=yes
else
- rm -rf conftest*
ac_cv_prog_gcc_traditional=no
fi
rm -f conftest*
-
if test $ac_cv_prog_gcc_traditional = no; then
- cat > conftest.$ac_ext <<EOF
-#line 1274 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2318 "configure"
#include "confdefs.h"
#include <termio.h>
-Autoconf TCGETA
-EOF
+int Autoconf = TCGETA;
+_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "$ac_pattern" >/dev/null 2>&1; then
- rm -rf conftest*
ac_cv_prog_gcc_traditional=yes
fi
rm -f conftest*
fi
fi
-
-echo "$ac_t""$ac_cv_prog_gcc_traditional" 1>&6
+echo "$as_me:2331: 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 $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1296: checking for POSIXized ISC" >&5
+echo "$as_me:2338: 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()
+{
+ ${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:2354: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2357: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest2.$ac_objext && { (eval echo "$as_me:2359: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2362: \$? = $ac_status" >&5
+ (exit $ac_status); };
+then
+ eval cf_cv_prog_CC_c_o=yes
+else
+ eval cf_cv_prog_CC_c_o=no
+fi
+rm -f conftest*
+
+fi
+if test $cf_cv_prog_CC_c_o = yes; then
+ echo "$as_me:2373: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:2376: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+echo "$as_me:2380: checking for POSIXized ISC" >&5
+echo $ECHO_N "checking for POSIXized ISC... $ECHO_C" >&6
if test -d /etc/conf/kconfig.d &&
- grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
+ grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
- echo "$ac_t""yes" 1>&6
+ echo "$as_me:2385: result: yes" >&5
+echo "${ECHO_T}yes" >&6
ISC=yes # If later tests want to check for ISC.
- cat >> confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define _POSIX_SOURCE 1
EOF
@@ -1308,17 +2396,17 @@ EOF
CC="$CC -Xp"
fi
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:2399: result: no" >&5
+echo "${ECHO_T}no" >&6
ISC=
fi
-
-echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:1318: checking for ${CC-cc} option to accept ANSI C" >&5
-if eval "test \"`echo '$''{'cf_cv_ansi_cc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:2404: checking for ${CC-cc} option to accept ANSI C" >&5
+echo $ECHO_N "checking for ${CC-cc} option to accept ANSI C... $ECHO_C" >&6
+if test "${cf_cv_ansi_cc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
-
+
cf_cv_ansi_cc=no
cf_save_CFLAGS="$CFLAGS"
cf_save_CPPFLAGS="$CPPFLAGS"
@@ -1337,13 +2425,35 @@ for cf_arg in "-DCC_HAS_PROTOS" \
"-Aa -D_HPUX_SOURCE" \
-Xc
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 #(vi
-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${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"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
case "$CPPFLAGS" in
*$cf_add_cflags) #(vi
;;
@@ -1356,21 +2466,36 @@ do
cf_new_cflags="$cf_new_cflags $cf_add_cflags"
;;
esac
+ ;;
+yes)
+ 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 -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
done
if test -n "$cf_new_cflags" ; then
-
+
CFLAGS="$CFLAGS $cf_new_cflags"
fi
if test -n "$cf_new_cppflags" ; then
-
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+
+ CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
fi
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
- cat > conftest.$ac_ext <<EOF
-#line 1374 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2498 "configure"
#include "confdefs.h"
#ifndef CC_HAS_PROTOS
@@ -1379,38 +2504,74 @@ choke me
#endif
#endif
-int main() {
+int
+main ()
+{
int test (int i, double x);
struct s1 {int (*f) (int a);};
struct s2 {int (*f) (double a);};
-; return 0; }
-EOF
-if { (eval echo configure:1390: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2519: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2522: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2525: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2528: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_ansi_cc="$cf_arg"; break
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
done
CFLAGS="$cf_save_CFLAGS"
CPPFLAGS="$cf_save_CPPFLAGS"
fi
-
-echo "$ac_t""$cf_cv_ansi_cc" 1>&6
+echo "$as_me:2541: result: $cf_cv_ansi_cc" >&5
+echo "${ECHO_T}$cf_cv_ansi_cc" >&6
if test "$cf_cv_ansi_cc" != "no"; then
if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
-
+
+cf_fix_cppflags=no
cf_new_cflags=
cf_new_cppflags=
+cf_new_extra_cppflags=
+
for cf_add_cflags in $cf_cv_ansi_cc
do
+case $cf_fix_cppflags in
+no)
case $cf_add_cflags in #(vi
-undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${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"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
case "$CPPFLAGS" in
*$cf_add_cflags) #(vi
;;
@@ -1423,105 +2584,124 @@ do
cf_new_cflags="$cf_new_cflags $cf_add_cflags"
;;
esac
+ ;;
+yes)
+ 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 -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
done
if test -n "$cf_new_cflags" ; then
-
+
CFLAGS="$CFLAGS $cf_new_cflags"
fi
if test -n "$cf_new_cppflags" ; then
-
- CPPFLAGS="$CPPFLAGS $cf_new_cppflags"
+
+ CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
fi
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
else
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define CC_HAS_PROTOS 1
EOF
fi
fi
-
if test "$cf_cv_ansi_cc" = "no"; then
- { echo "configure: error: Your compiler does not appear to recognize prototypes.
+ { { echo "$as_me:2624: error: Your compiler does not appear to recognize prototypes.
+You have the following choices:
+ a. adjust your compiler options
+ b. get an up-to-date compiler
+ c. use a wrapper such as unproto" >&5
+echo "$as_me: error: Your compiler does not appear to recognize prototypes.
You have the following choices:
a. adjust your compiler options
b. get an up-to-date compiler
- c. use a wrapper such as unproto" 1>&2; exit 1; }
+ c. use a wrapper such as unproto" >&2;}
+ { (exit 1); exit 1; }; }
fi
-
-
-PROG_EXT=
case $cf_cv_system_name in
os2*)
- # We make sure -Zexe is not used -- it would interfere with @PROG_EXT@
CFLAGS="$CFLAGS -Zmt"
CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
CXXFLAGS="$CXXFLAGS -Zmt"
- LDFLAGS=`echo "$LDFLAGS -Zmt -Zcrtdll" | sed "s/-Zexe//g"`
- PROG_EXT=".exe"
- ;;
-cygwin*)
- PROG_EXT=".exe"
+ # autoconf's macro sets -Zexe and suffix both, which conflict:w
+ LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
+ ac_cv_exeext=.exe
;;
esac
-test -n "$PROG_EXT" && cat >> confdefs.h <<EOF
+PROG_EXT="$EXEEXT"
+
+test -n "$PROG_EXT" && cat >>confdefs.h <<EOF
#define PROG_EXT "$PROG_EXT"
EOF
-
-
-case "$cf_cv_system_name" in
+if test "$cross_compiling" = yes ; then
+ LDCONFIG=:
+else
+case "$cf_cv_system_name" in #(vi
freebsd*) #(vi
test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
;;
*) LDPATH=$PATH:/sbin:/usr/sbin
# Extract the first word of "ldconfig", so it can be a program name with args.
set dummy ldconfig; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1488: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_LDCONFIG'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:2664: 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
else
- case "$LDCONFIG" in
- /*)
+ case $LDCONFIG in
+ [\\/]* | ?:[\\/]*)
ac_cv_path_LDCONFIG="$LDCONFIG" # Let the user override the test with a path.
;;
- ?:/*)
- ac_cv_path_LDCONFIG="$LDCONFIG" # Let the user override the test with a dos path.
- ;;
*)
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$LDPATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_path_LDCONFIG="$ac_dir/$ac_word"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ ac_save_IFS=$IFS; IFS=$ac_path_separator
+ac_dummy="$LDPATH"
+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_LDCONFIG="$ac_dir/$ac_word"
+ echo "$as_me:2681: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
;;
esac
fi
-LDCONFIG="$ac_cv_path_LDCONFIG"
+LDCONFIG=$ac_cv_path_LDCONFIG
+
if test -n "$LDCONFIG"; then
- echo "$ac_t""$LDCONFIG" 1>&6
+ echo "$as_me:2692: result: $LDCONFIG" >&5
+echo "${ECHO_T}$LDCONFIG" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:2695: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
;;
esac
+fi
-
-echo $ac_n "checking if you want to ensure bool is consistent with C++""... $ac_c" 1>&6
-echo "configure:1525: checking if you want to ensure bool is consistent with C++" >&5
+echo "$as_me:2703: 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.
if test "${with_cxx+set}" = set; then
@@ -1529,142 +2709,210 @@ if test "${with_cxx+set}" = set; then
cf_with_cxx=$withval
else
cf_with_cxx=yes
-fi
-
-echo "$ac_t""$cf_with_cxx" 1>&6
+fi;
+echo "$as_me:2713: result: $cf_with_cxx" >&5
+echo "${ECHO_T}$cf_with_cxx" >&6
if test "X$cf_with_cxx" = Xno ; then
CXX=""
GXX=""
else
- for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1545: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ # with autoconf 2.13, we can change the error to a warning:
+ 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 -n "$ac_tool_prefix"; then
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+ 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:2731: 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
else
if test -n "$CXX"; then
ac_cv_prog_CXX="$CXX" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CXX="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ 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_CXX="$ac_tool_prefix$ac_prog"
+echo "$as_me:2746: found $ac_dir/$ac_word" >&5
+break
+done
+
fi
fi
-CXX="$ac_cv_prog_CXX"
+CXX=$ac_cv_prog_CXX
if test -n "$CXX"; then
- echo "$ac_t""$CXX" 1>&6
+ echo "$as_me:2754: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:2757: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-test -n "$CXX" && break
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
+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:2770: 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
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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_CXX="$ac_prog"
+echo "$as_me:2785: found $ac_dir/$ac_word" >&5
+break
done
-test -n "$CXX" || CXX="gcc"
-
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1577: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-
-cat > conftest.$ac_ext << EOF
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ echo "$as_me:2793: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6
+else
+ echo "$as_me:2796: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
-#line 1588 "configure"
+ test -n "$ac_ct_CXX" && break
+done
+test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
+
+ CXX=$ac_ct_CXX
+fi
+
+# Provide some information about the compiler.
+echo "$as_me:2808:" \
+ "checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (eval echo "$as_me:2811: \"$ac_compiler --version </dev/null >&5\"") >&5
+ (eval $ac_compiler --version </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:2814: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:2816: \"$ac_compiler -v </dev/null >&5\"") >&5
+ (eval $ac_compiler -v </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:2819: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (eval echo "$as_me:2821: \"$ac_compiler -V </dev/null >&5\"") >&5
+ (eval $ac_compiler -V </dev/null >&5) 2>&5
+ ac_status=$?
+ echo "$as_me:2824: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+echo "$as_me:2827: 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 2833 "configure"
#include "confdefs.h"
-int main(){return(0);}
-EOF
-if { (eval echo configure:1593: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cxx_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cxx_cross=no
- else
- ac_cv_prog_cxx_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cxx_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
-if test $ac_cv_prog_cxx_works = no; then
- echo "$ac_t""You don't have any C++ compiler, too bad" 1>&6; cf_with_cxx=no; CXX=""; GXX="";
-fi
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1619: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
-cross_compiling=$ac_cv_prog_cxx_cross
-
-echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1624: checking whether we are using GNU C++" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.C <<EOF
-#ifdef __GNUC__
- yes;
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
#endif
-EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1633: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gxx=yes
-else
- ac_cv_prog_gxx=no
-fi
-fi
-echo "$ac_t""$ac_cv_prog_gxx" 1>&6
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2848: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2851: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2854: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2857: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_compiler_gnu=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+echo "$as_me:2869: 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:2875: 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 2881 "configure"
+#include "confdefs.h"
-if test $ac_cv_prog_gxx = yes; then
- GXX=yes
-else
- GXX=
-fi
+int
+main ()
+{
-ac_test_CXXFLAGS="${CXXFLAGS+set}"
-ac_save_CXXFLAGS="$CXXFLAGS"
-CXXFLAGS=
-echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1652: checking whether ${CXX-g++} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- echo 'void f(){}' > conftest.cc
-if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2893: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2896: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2899: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2902: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
ac_cv_prog_cxx_g=yes
else
- ac_cv_prog_cxx_g=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_prog_cxx_g=no
fi
-rm -f conftest*
-
+rm -f conftest.$ac_objext conftest.$ac_ext
fi
-
-echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
+echo "$as_me:2912: 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"
+ CXXFLAGS=$ac_save_CXXFLAGS
elif test $ac_cv_prog_cxx_g = yes; then
if test "$GXX" = yes; then
CXXFLAGS="-g -O2"
@@ -1678,26 +2926,160 @@ else
CXXFLAGS=
fi
fi
+for ac_declaration in \
+ ''\
+ '#include <stdlib.h>' \
+ 'extern "C" void std::exit (int) throw (); using std::exit;' \
+ 'extern "C" void std::exit (int); using std::exit;' \
+ 'extern "C" void exit (int) throw ();' \
+ 'extern "C" void exit (int);' \
+ 'void exit (int);'
+do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2939 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2952: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2955: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2958: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2961: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+continue
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+#line 2971 "configure"
+#include "confdefs.h"
+$ac_declaration
+int
+main ()
+{
+exit (42);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:2983: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2986: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2989: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2992: \$? = $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
+rm -f conftest*
+if test -n "$ac_declaration"; then
+ echo '#ifdef __cplusplus' >>confdefs.h
+ echo $ac_declaration >>confdefs.h
+ echo '#endif' >>confdefs.h
+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 - by hardcoding it to g++.
+ 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:3019: 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
+else
+ case $CXX in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_CXX="$CXX" # 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=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_CXX="$ac_dir/$ac_word"
+ echo "$as_me:3036: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+CXX=$ac_cv_path_CXX
+
+if test -n "$CXX"; then
+ echo "$as_me:3047: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6
+else
+ echo "$as_me:3050: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ fi
+ if test "$CXX" = "g++" ; then
+ { echo "$as_me:3056: WARNING: ignoring hardcoded g++" >&5
+echo "$as_me: WARNING: ignoring hardcoded g++" >&2;}
+ cf_with_cxx=no; CXX=""; GXX="";
fi
+fi
GXX_VERSION=none
if test "$GXX" = yes; then
- echo $ac_n "checking version of g++""... $ac_c" 1>&6
-echo "configure:1688: checking version of g++" >&5
- GXX_VERSION="`${CXX-g++} --version|head -1`"
- echo "$ac_t""$GXX_VERSION" 1>&6
- case $GXX_VERSION in
- 1*|2.[0-6]*)
- GXX=""; CXX=""; ac_cv_prog_gxx=no
- cf_cxx_library=no
- echo "configure: warning: templates do not work" 1>&2
- ;;
- esac
-fi
+ echo "$as_me:3064: checking version of g++" >&5
+echo $ECHO_N "checking version of 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:3068: result: $GXX_VERSION" >&5
+echo "${ECHO_T}$GXX_VERSION" >&6
+fi
+
+case $GXX_VERSION in
+1*|2.[0-6]*)
+ # GXX=""; CXX=""; ac_cv_prog_gxx=no
+ # cf_cxx_library=no
+ { echo "$as_me:3076: WARNING: templates do not work" >&5
+echo "$as_me: WARNING: templates do not work" >&2;}
+ ;;
+esac
-echo $ac_n "checking if you want to build C++ binding and demo""... $ac_c" 1>&6
-echo "configure:1701: checking if you want to build C++ binding and demo" >&5
+echo "$as_me:3081: 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.
if test "${with_cxx_binding+set}" = set; then
@@ -1705,12 +3087,12 @@ if test "${with_cxx_binding+set}" = set; then
cf_with_cxx_binding=$withval
else
cf_with_cxx_binding=$cf_with_cxx
-fi
-
-echo "$ac_t""$cf_with_cxx_binding" 1>&6
+fi;
+echo "$as_me:3091: result: $cf_with_cxx_binding" >&5
+echo "${ECHO_T}$cf_with_cxx_binding" >&6
-echo $ac_n "checking if you want to build with Ada95""... $ac_c" 1>&6
-echo "configure:1714: checking if you want to build with Ada95" >&5
+echo "$as_me:3094: checking if you want to build with Ada95" >&5
+echo $ECHO_N "checking if you want to build with Ada95... $ECHO_C" >&6
# Check whether --with-ada or --without-ada was given.
if test "${with_ada+set}" = set; then
@@ -1718,12 +3100,12 @@ if test "${with_ada+set}" = set; then
cf_with_ada=$withval
else
cf_with_ada=yes
-fi
-
-echo "$ac_t""$cf_with_ada" 1>&6
+fi;
+echo "$as_me:3104: result: $cf_with_ada" >&5
+echo "${ECHO_T}$cf_with_ada" >&6
-echo $ac_n "checking if you want to build programs such as tic""... $ac_c" 1>&6
-echo "configure:1727: checking if you want to build programs such as tic" >&5
+echo "$as_me:3107: 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.
if test "${with_progs+set}" = set; then
@@ -1731,12 +3113,12 @@ if test "${with_progs+set}" = set; then
cf_with_progs=$withval
else
cf_with_progs=yes
-fi
+fi;
+echo "$as_me:3117: result: $cf_with_progs" >&5
+echo "${ECHO_T}$cf_with_progs" >&6
-echo "$ac_t""$cf_with_progs" 1>&6
-
-echo $ac_n "checking if you wish to install curses.h""... $ac_c" 1>&6
-echo "configure:1740: checking if you wish to install curses.h" >&5
+echo "$as_me:3120: 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.
if test "${with_curses_h+set}" = set; then
@@ -1744,9 +3126,9 @@ if test "${with_curses_h+set}" = set; then
with_curses_h=$withval
else
with_curses_h=yes
-fi
-
-echo "$ac_t""$with_curses_h" 1>&6
+fi;
+echo "$as_me:3130: result: $with_curses_h" >&5
+echo "${ECHO_T}$with_curses_h" >&6
modules_to_build="ncurses"
if test "X$cf_with_progs" != Xno ; then
@@ -1754,85 +3136,77 @@ modules_to_build="$modules_to_build progs tack"
fi
modules_to_build="$modules_to_build panel menu form"
-if test "$program_transform_name" = s,x,x,; then
- program_transform_name=
-else
- # Double any \ or $. echo might interpret backslashes.
- cat <<\EOF_SED > conftestsed
-s,\\,\\\\,g; s,\$,$$,g
-EOF_SED
- program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
- rm -f conftestsed
-fi
test "$program_prefix" != NONE &&
- program_transform_name="s,^,${program_prefix},; $program_transform_name"
+ program_transform_name="s,^,$program_prefix,;$program_transform_name"
# Use a double $ so make ignores it.
test "$program_suffix" != NONE &&
- program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
-
-# sed with no file args requires a program.
-test "$program_transform_name" = "" && program_transform_name="s,x,x,"
+ program_transform_name="s,\$,$program_suffix,;$program_transform_name"
+# Double any \ or $. echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm conftest.sed
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.
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1782: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3156: 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
else
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_AWK="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ 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_AWK="$ac_prog"
+echo "$as_me:3171: found $ac_dir/$ac_word" >&5
+break
+done
+
fi
fi
-AWK="$ac_cv_prog_AWK"
+AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- echo "$ac_t""$AWK" 1>&6
+ echo "$as_me:3179: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:3182: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-test -n "$AWK" && break
+ test -n "$AWK" && break
done
-echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1812: checking whether ${MAKE-make} sets \${MAKE}" >&5
-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftestmake <<\EOF
-all:
- @echo 'ac_maketemp="${MAKE}"'
-EOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
-eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
-if test -n "$ac_maketemp"; then
- eval ac_cv_prog_make_${ac_make}_set=yes
-else
- eval ac_cv_prog_make_${ac_make}_set=no
-fi
-rm -f conftestmake
-fi
-if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- SET_MAKE=
+test -z "$AWK" && { { echo "$as_me:3189: error: No awk program found" >&5
+echo "$as_me: error: No awk program found" >&2;}
+ { (exit 1); exit 1; }; }
+
+echo "$as_me:3193: 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
- echo "$ac_t""no" 1>&6
- SET_MAKE="MAKE=${MAKE-make}"
+ 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
fi
+echo "$as_me:3203: result: $ac_cv_prog_egrep" >&5
+echo "${ECHO_T}$ac_cv_prog_egrep" >&6
+ EGREP=$ac_cv_prog_egrep
+
+test -z "$EGREP" && { { echo "$as_me:3207: error: No egrep program found" >&5
+echo "$as_me: error: No egrep program found" >&2;}
+ { (exit 1); exit 1; }; }
# Find a good install program. We prefer a C program (faster),
# so one script is as good as another. But avoid the broken or
@@ -1841,31 +3215,39 @@ fi
# 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 $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1850: checking for a BSD compatible install" >&5
+echo "$as_me:3223: 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 eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
+ 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
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
+ 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 test -f $ac_dir/$ac_prog; then
+ 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
+ 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
@@ -1875,26 +3257,26 @@ else
;;
esac
done
- IFS="$ac_save_IFS"
fi
if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
+ 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"
+ INSTALL=$ac_install_sh
fi
fi
-echo "$ac_t""$INSTALL" 1>&6
+echo "$as_me:3272: 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_PROGRAM}'
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
@@ -1902,63 +3284,105 @@ case $INSTALL in
/*)
;;
*)
- cf_dir=`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:^.*/::'`
+ INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'`
;;
esac
-echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:1913: checking for long file names" >&5
-if eval "test \"`echo '$''{'ac_cv_sys_long_file_names'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+for ac_prog in tdlint lint alint
+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:3297: 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
else
- ac_cv_sys_long_file_names=yes
-# Test for long file names in all the places we know might matter:
-# . the current directory, where building will happen
-# $prefix/lib where we will be installing things
-# $exec_prefix/lib likewise
-# eval it to expand exec_prefix.
-# $TMPDIR if set, where it might want to write temporary files
-# if $TMPDIR is not set:
-# /tmp where it might want to write temporary files
-# /var/tmp likewise
-# /usr/tmp likewise
-if test -n "$TMPDIR" && test -d "$TMPDIR" && test -w "$TMPDIR"; then
- ac_tmpdirs="$TMPDIR"
+ if test -n "$LINT"; then
+ ac_cv_prog_LINT="$LINT" # Let the user override the test.
else
- ac_tmpdirs='/tmp /var/tmp /usr/tmp'
+ 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_LINT="$ac_prog"
+echo "$as_me:3312: found $ac_dir/$ac_word" >&5
+break
+done
+
fi
-for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do
- test -d $ac_dir || continue
- test -w $ac_dir || continue # It is less confusing to not echo anything here.
- (echo 1 > $ac_dir/conftest9012345) 2>/dev/null
- (echo 2 > $ac_dir/conftest9012346) 2>/dev/null
- val=`cat $ac_dir/conftest9012345 2>/dev/null`
- if test ! -f $ac_dir/conftest9012345 || test "$val" != 1; then
- ac_cv_sys_long_file_names=no
- rm -f $ac_dir/conftest9012345 $ac_dir/conftest9012346 2>/dev/null
- break
- fi
- rm -f $ac_dir/conftest9012345 $ac_dir/conftest9012346 2>/dev/null
+fi
+LINT=$ac_cv_prog_LINT
+if test -n "$LINT"; then
+ echo "$as_me:3320: result: $LINT" >&5
+echo "${ECHO_T}$LINT" >&6
+else
+ echo "$as_me:3323: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$LINT" && break
done
+
+echo "$as_me:3330: 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:3334: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:3337: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6
fi
-echo "$ac_t""$ac_cv_sys_long_file_names" 1>&6
-if test $ac_cv_sys_long_file_names = yes; then
- cat >> confdefs.h <<\EOF
-#define HAVE_LONG_FILE_NAMES 1
+echo "$as_me:3341: 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
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.make <<\EOF
+all:
+ @echo 'ac_maketemp="${MAKE}"'
EOF
-
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=`
+if test -n "$ac_maketemp"; then
+ eval ac_cv_prog_make_${ac_make}_set=yes
+else
+ eval ac_cv_prog_make_${ac_make}_set=no
+fi
+rm -f conftest.make
+fi
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
+ echo "$as_me:3361: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ SET_MAKE=
+else
+ echo "$as_me:3365: result: no" >&5
+echo "${ECHO_T}no" >&6
+ SET_MAKE="MAKE=${MAKE-make}"
fi
+echo "$as_me:3370: 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
-echo $ac_n "checking if filesystem supports mixed-case filenames""... $ac_c" 1>&6
-echo "configure:1958: checking if filesystem supports mixed-case filenames" >&5
-if eval "test \"`echo '$''{'cf_cv_mixedcase'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+if test "$cross_compiling" = yes ; then
+ case $target_alias in #(vi
+ *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi
+ cf_cv_mixedcase=no
+ ;;
+ *)
+ cf_cv_mixedcase=yes
+ ;;
+ esac
else
-
rm -f conftest CONFTEST
echo test >conftest
if test -f CONFTEST ; then
@@ -1967,128 +3391,80 @@ else
cf_cv_mixedcase=yes
fi
rm -f conftest CONFTEST
-
fi
-echo "$ac_t""$cf_cv_mixedcase" 1>&6
-test "$cf_cv_mixedcase" = yes && cat >> confdefs.h <<\EOF
+fi
+echo "$as_me:3397: result: $cf_cv_mixedcase" >&5
+echo "${ECHO_T}$cf_cv_mixedcase" >&6
+test "$cf_cv_mixedcase" = yes && cat >>confdefs.h <<\EOF
#define MIXEDCASE_FILENAMES 1
EOF
-
-echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1981: checking whether ln -s works" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- rm -f conftestdata
-if ln -s X conftestdata 2>/dev/null
-then
- rm -f conftestdata
- ac_cv_prog_LN_S="ln -s"
-else
- ac_cv_prog_LN_S=ln
-fi
-fi
-LN_S="$ac_cv_prog_LN_S"
-if test "$ac_cv_prog_LN_S" = "ln -s"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2004: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$RANLIB"; then
- ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_RANLIB="ranlib"
- break
- fi
- done
- IFS="$ac_save_ifs"
- test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
- echo "$ac_t""$RANLIB" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-
# Extract the first word of "ctags", so it can be a program name with args.
set dummy ctags; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2036: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MAKE_LOWER_TAGS'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3405: 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
else
if test -n "$MAKE_LOWER_TAGS"; then
ac_cv_prog_MAKE_LOWER_TAGS="$MAKE_LOWER_TAGS" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_MAKE_LOWER_TAGS="yes"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ 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_MAKE_LOWER_TAGS="yes"
+echo "$as_me:3420: found $ac_dir/$ac_word" >&5
+break
+done
+
test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS="no"
fi
fi
-MAKE_LOWER_TAGS="$ac_cv_prog_MAKE_LOWER_TAGS"
+MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
if test -n "$MAKE_LOWER_TAGS"; then
- echo "$ac_t""$MAKE_LOWER_TAGS" 1>&6
+ echo "$as_me:3429: result: $MAKE_LOWER_TAGS" >&5
+echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:3432: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-
if test "$cf_cv_mixedcase" = yes ; then
# Extract the first word of "etags", so it can be a program name with args.
set dummy etags; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2068: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MAKE_UPPER_TAGS'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:3439: 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
else
if test -n "$MAKE_UPPER_TAGS"; then
ac_cv_prog_MAKE_UPPER_TAGS="$MAKE_UPPER_TAGS" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_MAKE_UPPER_TAGS="yes"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ 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_MAKE_UPPER_TAGS="yes"
+echo "$as_me:3454: found $ac_dir/$ac_word" >&5
+break
+done
+
test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS="no"
fi
fi
-MAKE_UPPER_TAGS="$ac_cv_prog_MAKE_UPPER_TAGS"
+MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
if test -n "$MAKE_UPPER_TAGS"; then
- echo "$ac_t""$MAKE_UPPER_TAGS" 1>&6
+ echo "$as_me:3463: result: $MAKE_UPPER_TAGS" >&5
+echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:3466: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
else
@@ -2101,169 +3477,373 @@ else
MAKE_UPPER_TAGS="#"
fi
-
if test "$MAKE_LOWER_TAGS" = yes ; then
MAKE_LOWER_TAGS=
else
MAKE_LOWER_TAGS="#"
fi
+echo "$as_me:3486: 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
+else
-for ac_prog in tdlint lint alint
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2118: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_LINT'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ cf_cv_makeflags=''
+ for cf_option in '-${MAKEFLAGS}' '${MFLAGS}'
+ do
+ cat >cf_makeflags.tmp <<CF_EOF
+SHELL = /bin/sh
+all :
+ @ echo '.$cf_option'
+CF_EOF
+ cf_result=`${MAKE-make} -k -f cf_makeflags.tmp 2>/dev/null | sed -e 's,[ ]*$,,'`
+ case "$cf_result" in
+ .*k)
+ cf_result=`${MAKE-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
+ case "$cf_result" in
+ .*CC=*) cf_cv_makeflags=
+ ;;
+ *) cf_cv_makeflags=$cf_option
+ ;;
+ esac
+ break
+ ;;
+ .-) ;;
+ *) echo "given option \"$cf_option\", no match \"$cf_result\""
+ ;;
+ esac
+ done
+ rm -f cf_makeflags.tmp
+
+fi
+echo "$as_me:3520: result: $cf_cv_makeflags" >&5
+echo "${ECHO_T}$cf_cv_makeflags" >&6
+
+echo "$as_me:3523: 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
else
- if test -n "$LINT"; then
- ac_cv_prog_LINT="$LINT" # Let the user override the test.
+ ac_cv_sys_long_file_names=yes
+# Test for long file names in all the places we know might matter:
+# . the current directory, where building will happen
+# $prefix/lib where we will be installing things
+# $exec_prefix/lib likewise
+# eval it to expand exec_prefix.
+# $TMPDIR if set, where it might want to write temporary files
+# if $TMPDIR is not set:
+# /tmp where it might want to write temporary files
+# /var/tmp likewise
+# /usr/tmp likewise
+if test -n "$TMPDIR" && test -d "$TMPDIR" && test -w "$TMPDIR"; then
+ ac_tmpdirs=$TMPDIR
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_LINT="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ ac_tmpdirs='/tmp /var/tmp /usr/tmp'
fi
+for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do
+ test -d $ac_dir || continue
+ test -w $ac_dir || continue # It is less confusing to not echo anything here.
+ ac_xdir=$ac_dir/cf$$
+ (umask 077 && mkdir $ac_xdir 2>/dev/null) || continue
+ ac_tf1=$ac_xdir/conftest9012345
+ ac_tf2=$ac_xdir/conftest9012346
+ (echo 1 >$ac_tf1) 2>/dev/null
+ (echo 2 >$ac_tf2) 2>/dev/null
+ ac_val=`cat $ac_tf1 2>/dev/null`
+ if test ! -f $ac_tf1 || test "$ac_val" != 1; then
+ ac_cv_sys_long_file_names=no
+ rm -rf $ac_xdir 2>/dev/null
+ break
+ fi
+ rm -rf $ac_xdir 2>/dev/null
+done
fi
-LINT="$ac_cv_prog_LINT"
-if test -n "$LINT"; then
- echo "$ac_t""$LINT" 1>&6
+echo "$as_me:3562: 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
+
+cat >>confdefs.h <<\EOF
+#define HAVE_LONG_FILE_NAMES 1
+EOF
+
+fi
+
+echo "$as_me:3572: 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*|*-mingw32*|*-uwin*) #(vi
+ cf_cv_mixedcase=no
+ ;;
+ *)
+ cf_cv_mixedcase=yes
+ ;;
+ esac
else
- echo "$ac_t""no" 1>&6
+ rm -f conftest CONFTEST
+ echo test >conftest
+ if test -f CONFTEST ; then
+ cf_cv_mixedcase=no
+ else
+ cf_cv_mixedcase=yes
+ fi
+ rm -f conftest CONFTEST
fi
-test -n "$LINT" && break
+fi
+echo "$as_me:3599: result: $cf_cv_mixedcase" >&5
+echo "${ECHO_T}$cf_cv_mixedcase" >&6
+test "$cf_cv_mixedcase" = yes && cat >>confdefs.h <<\EOF
+#define MIXEDCASE_FILENAMES 1
+EOF
+
+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:3608: 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
+else
+ if test -n "$RANLIB"; then
+ ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib"
+echo "$as_me:3623: found $ac_dir/$ac_word" >&5
+break
done
-for ac_prog in man man_db
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2152: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MAN'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$MAN"; then
- ac_cv_prog_MAN="$MAN" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_MAN="$ac_prog"
- break
- fi
- done
- IFS="$ac_save_ifs"
fi
fi
-MAN="$ac_cv_prog_MAN"
-if test -n "$MAN"; then
- echo "$ac_t""$MAN" 1>&6
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+ echo "$as_me:3631: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:3634: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-test -n "$MAN" && break
+fi
+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:3643: 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
+else
+ if test -n "$ac_ct_RANLIB"; then
+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_RANLIB="ranlib"
+echo "$as_me:3658: found $ac_dir/$ac_word" >&5
+break
done
+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB="':'"
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+ echo "$as_me:3667: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6
+else
+ echo "$as_me:3670: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ RANLIB=$ac_ct_RANLIB
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
-if eval "test \"`echo '$''{'cf_cv_subst_LD'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+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:3682: 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
else
-
-echo $ac_n "checking for loader (symbol LD)""... $ac_c" 1>&6
-echo "configure:2188: checking for loader (symbol LD)" >&5
-test -z "$LD" && LD=ld
-echo "$ac_t""$LD" 1>&6
+ if test -n "$LD"; then
+ ac_cv_prog_LD="$LD" # 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_LD="${ac_tool_prefix}ld"
+echo "$as_me:3697: found $ac_dir/$ac_word" >&5
+break
+done
-cf_cv_subst_LD=$LD
+fi
+fi
+LD=$ac_cv_prog_LD
+if test -n "$LD"; then
+ echo "$as_me:3705: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6
+else
+ echo "$as_me:3708: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-LD=${cf_cv_subst_LD}
-
-if eval "test \"`echo '$''{'cf_cv_subst_AR'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+fi
+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:3717: 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
else
-
-echo $ac_n "checking for archiver (symbol AR)""... $ac_c" 1>&6
-echo "configure:2202: checking for archiver (symbol AR)" >&5
-test -z "$AR" && AR=ar
-echo "$ac_t""$AR" 1>&6
+ if test -n "$ac_ct_LD"; then
+ ac_cv_prog_ac_ct_LD="$ac_ct_LD" # 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_LD="ld"
+echo "$as_me:3732: found $ac_dir/$ac_word" >&5
+break
+done
-cf_cv_subst_AR=$AR
+ test -z "$ac_cv_prog_ac_ct_LD" && ac_cv_prog_ac_ct_LD="ld"
+fi
+fi
+ac_ct_LD=$ac_cv_prog_ac_ct_LD
+if test -n "$ac_ct_LD"; then
+ echo "$as_me:3741: result: $ac_ct_LD" >&5
+echo "${ECHO_T}$ac_ct_LD" >&6
+else
+ echo "$as_me:3744: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-AR=${cf_cv_subst_AR}
+ LD=$ac_ct_LD
+else
+ LD="$ac_cv_prog_LD"
+fi
-if eval "test \"`echo '$''{'cf_cv_subst_AR_OPTS'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+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:3756: 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
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
else
-
-echo $ac_n "checking for archiver options (symbol AR_OPTS)""... $ac_c" 1>&6
-echo "configure:2216: checking for archiver options (symbol AR_OPTS)" >&5
-test -z "$AR_OPTS" && AR_OPTS=rv
-echo "$ac_t""$AR_OPTS" 1>&6
+ 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_AR="${ac_tool_prefix}ar"
+echo "$as_me:3771: found $ac_dir/$ac_word" >&5
+break
+done
-cf_cv_subst_AR_OPTS=$AR_OPTS
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ echo "$as_me:3779: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6
+else
+ echo "$as_me:3782: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-AR_OPTS=${cf_cv_subst_AR_OPTS}
+fi
+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:3791: 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
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_AR="ar"
+echo "$as_me:3806: found $ac_dir/$ac_word" >&5
+break
+done
+ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar"
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ echo "$as_me:3815: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6
+else
+ echo "$as_me:3818: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+ AR=$ac_ct_AR
+else
+ AR="$ac_cv_prog_AR"
+fi
-echo $ac_n "checking for makeflags variable""... $ac_c" 1>&6
-echo "configure:2228: checking for makeflags variable" >&5
-if eval "test \"`echo '$''{'cf_cv_makeflags'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+if test "${cf_cv_subst_AR_OPTS+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
-
- cf_cv_makeflags=''
- for cf_option in '-$(MAKEFLAGS)' '$(MFLAGS)'
- do
- cat >cf_makeflags.tmp <<CF_EOF
-SHELL = /bin/sh
-all :
- @ echo '.$cf_option'
-CF_EOF
- cf_result=`${MAKE-make} -k -f cf_makeflags.tmp 2>/dev/null`
- case "$cf_result" in
- .*k)
- cf_result=`${MAKE-make} -k -f cf_makeflags.tmp CC=cc 2>/dev/null`
- case "$cf_result" in
- .*CC=*) cf_cv_makeflags=
- ;;
- *) cf_cv_makeflags=$cf_option
- ;;
- esac
- break
- ;;
- *) echo no match "$cf_result"
- ;;
- esac
- done
- rm -f cf_makeflags.tmp
-fi
+echo "$as_me:3831: checking for archiver options (symbol AR_OPTS)" >&5
+echo $ECHO_N "checking for archiver options (symbol AR_OPTS)... $ECHO_C" >&6
-echo "$ac_t""$cf_cv_makeflags" 1>&6
+if test -z "$AR_OPTS" ; then
+ AR_OPTS=rv
+fi
+cf_cv_subst_AR_OPTS=$AR_OPTS
+echo "$as_me:3840: result: $AR_OPTS" >&5
+echo "${ECHO_T}$AR_OPTS" >&6
+fi
-echo $ac_n "checking if you have specified an install-prefix""... $ac_c" 1>&6
-echo "configure:2267: checking if you have specified an install-prefix" >&5
+echo "$as_me:3845: 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
@@ -2274,21 +3854,181 @@ if test "${with_install_prefix+set}" = set; then
*) DESTDIR="$withval"
;;
esac
+fi;
+echo "$as_me:3858: result: $DESTDIR" >&5
+echo "${ECHO_T}$DESTDIR" >&6
+
+###############################################################################
+
+# If we're cross-compiling, allow the user to override the tools and their
+# options. The configure script is oriented toward identifying the host
+# compiler, etc., but we need a build compiler to generate parts of the source.
+
+if test "$cross_compiling" = yes ; then
+
+ # defaults that we might want to override
+ : ${BUILD_CFLAGS:=''}
+ : ${BUILD_CPPFLAGS:=''}
+ : ${BUILD_LDFLAGS:=''}
+ : ${BUILD_LIBS:=''}
+ : ${BUILD_EXEEXT:='$x'}
+ : ${BUILD_OBJEXT:='o'}
+
+# Check whether --with-build-cc or --without-build-cc was given.
+if test "${with_build_cc+set}" = set; then
+ withval="$with_build_cc"
+ BUILD_CC="$withval"
+else
+ for ac_prog in gcc 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:3886: 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
+else
+ if test -n "$BUILD_CC"; then
+ ac_cv_prog_BUILD_CC="$BUILD_CC" # 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_BUILD_CC="$ac_prog"
+echo "$as_me:3901: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+BUILD_CC=$ac_cv_prog_BUILD_CC
+if test -n "$BUILD_CC"; then
+ echo "$as_me:3909: result: $BUILD_CC" >&5
+echo "${ECHO_T}$BUILD_CC" >&6
+else
+ echo "$as_me:3912: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-echo "$ac_t""$DESTDIR" 1>&6
+ test -n "$BUILD_CC" && break
+done
+fi;
+ echo "$as_me:3920: checking for native build C compiler" >&5
+echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6
+ echo "$as_me:3922: result: $BUILD_CC" >&5
+echo "${ECHO_T}$BUILD_CC" >&6
-###############################################################################
+ echo "$as_me:3925: 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.
+if test "${with_build_cpp+set}" = set; then
+ withval="$with_build_cpp"
+ BUILD_CPP="$withval"
+else
+ BUILD_CPP='${BUILD_CC} -E'
+fi;
+ echo "$as_me:3935: result: $BUILD_CPP" >&5
+echo "${ECHO_T}$BUILD_CPP" >&6
+ echo "$as_me:3938: 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.
+if test "${with_build_cflags+set}" = set; then
+ withval="$with_build_cflags"
+ BUILD_CFLAGS="$withval"
+fi;
+ echo "$as_me:3946: result: $BUILD_CFLAGS" >&5
+echo "${ECHO_T}$BUILD_CFLAGS" >&6
+
+ echo "$as_me:3949: 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.
+if test "${with_build_cppflags+set}" = set; then
+ withval="$with_build_cppflags"
+ BUILD_CPPFLAGS="$withval"
+fi;
+ echo "$as_me:3957: result: $BUILD_CPPFLAGS" >&5
+echo "${ECHO_T}$BUILD_CPPFLAGS" >&6
+
+ echo "$as_me:3960: 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.
+if test "${with_build_ldflags+set}" = set; then
+ withval="$with_build_ldflags"
+ BUILD_LDFLAGS="$withval"
+fi;
+ echo "$as_me:3968: result: $BUILD_LDFLAGS" >&5
+echo "${ECHO_T}$BUILD_LDFLAGS" >&6
+
+ echo "$as_me:3971: 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.
+if test "${with_build_libs+set}" = set; then
+ withval="$with_build_libs"
+ BUILD_LIBS="$withval"
+fi;
+ echo "$as_me:3979: result: $BUILD_LIBS" >&5
+echo "${ECHO_T}$BUILD_LIBS" >&6
+
+ # this assumes we're on Unix.
+ BUILD_EXEEXT=
+ BUILD_OBJEXT=o
+
+ : ${BUILD_CC:='${CC}'}
+
+ if ( test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}' ) ; then
+ { { echo "$as_me:3989: 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;}
+ { (exit 1); exit 1; }; }
+ fi
+
+else
+ : ${BUILD_CC:='${CC}'}
+ : ${BUILD_CPP:='${CPP}'}
+ : ${BUILD_CFLAGS:='${CFLAGS}'}
+ : ${BUILD_CPPFLAGS:='${CPPFLAGS}'}
+ : ${BUILD_LDFLAGS:='${LDFLAGS}'}
+ : ${BUILD_LIBS:='${LIBS}'}
+ : ${BUILD_EXEEXT:='$x'}
+ : ${BUILD_OBJEXT:='o'}
+fi
+
+###############################################################################
### Options to allow the user to specify the set of libraries which are used.
### Use "--without-normal --with-shared" to allow the default model to be
### shared, for example.
cf_list_models=""
-echo $ac_n "checking if you want to build libraries with libtool""... $ac_c" 1>&6
-echo "configure:2292: checking if you want to build libraries with libtool" >&5
+LIBTOOL=
+
+# common library maintenance symbols that are convenient for libtool scripts:
+LIB_CREATE='${AR} -cr'
+LIB_OBJECT='${OBJECTS}'
+LIB_SUFFIX=.a
+LIB_PREP="$RANLIB"
+
+# symbols used to prop libtool up to enable it to determine what it should be
+# doing:
+LIB_CLEAN=
+LIB_COMPILE=
+LIB_LINK=
+LIB_INSTALL=
+LIB_UNINSTALL=
+
+echo "$as_me:4030: 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.
if test "${with_libtool+set}" = set; then
@@ -2296,19 +4036,139 @@ if test "${with_libtool+set}" = set; then
with_libtool=$withval
else
with_libtool=no
+fi;
+echo "$as_me:4040: 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"
+else
+ cf_path_syntax="$ac_default_prefix"
fi
-echo "$ac_t""$with_libtool" 1>&6
-if test "$with_libtool" = "yes"; then
- cf_list_models="$cf_list_models libtool"
- test -z "$LIBTOOL" && LIBTOOL=libtool
+case ".$with_libtool" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*) #(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:4071: 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
+ else
+ # Extract the first word of "libtool", so it can be a program name with args.
+set dummy libtool; ac_word=$2
+echo "$as_me:4081: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_LIBTOOL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $LIBTOOL in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_LIBTOOL="$LIBTOOL" # 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=.
+ if $as_executable_p "$ac_dir/$ac_word"; then
+ ac_cv_path_LIBTOOL="$ac_dir/$ac_word"
+ echo "$as_me:4098: found $ac_dir/$ac_word" >&5
+ break
+fi
+done
+
+ ;;
+esac
+fi
+LIBTOOL=$ac_cv_path_LIBTOOL
+
+if test -n "$LIBTOOL"; then
+ echo "$as_me:4109: result: $LIBTOOL" >&5
+echo "${ECHO_T}$LIBTOOL" >&6
+else
+ echo "$as_me:4112: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ fi
+ if test -z "$LIBTOOL" ; then
+ { { echo "$as_me:4118: 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} -version-info `cut -f1 ${srcdir}/VERSION` -o'
+ LIB_OBJECT='${OBJECTS}.o=.lo)'
+ LIB_SUFFIX=.la
+ LIB_CLEAN='${LIBTOOL} --mode=clean'
+ LIB_COMPILE='${LIBTOOL} --mode=compile'
+ LIB_LINK='${LIBTOOL} --mode=link'
+ LIB_INSTALL='${LIBTOOL} --mode=install'
+ LIB_UNINSTALL='${LIBTOOL} --mode=uninstall'
+ LIB_PREP=:
+
+ # Show the version of libtool
+ echo "$as_me:4133: checking version of libtool" >&5
+echo $ECHO_N "checking version of libtool... $ECHO_C" >&6
+
+ # Save the version in a cache variable - this is not entirely a good
+ # thing, but the version string from libtool is very ugly, and for
+ # bug reports it might be useful to have the original string.
+ cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '2,$d' -e 's/([^)]*)//g' -e 's/^[^1-9]*//' -e 's/[^0-9.].*//'`
+ echo "$as_me:4140: 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:4143: error: This is not libtool" >&5
+echo "$as_me: error: This is not libtool" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # special hack to add --tag option for C++ compiler
+ case $cf_cv_libtool_version in
+ 1.[5-9]*|[2-9]*)
+ LIBTOOL_CXX="$LIBTOOL --tag=CXX"
+ ;;
+ *)
+ LIBTOOL_CXX="$LIBTOOL"
+ ;;
+ esac
else
LIBTOOL=""
+ LIBTOOL_CXX=""
fi
+test -z "$LIBTOOL" && ECHO_LT=
+
+if test "$with_libtool" != "no" ; then
-echo $ac_n "checking if you want to build shared libraries""... $ac_c" 1>&6
-echo "configure:2312: checking if you want to build shared libraries" >&5
+cf_list_models="$cf_list_models libtool"
+
+else
+
+echo "$as_me:4170: 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.
if test "${with_shared+set}" = set; then
@@ -2316,13 +4176,13 @@ if test "${with_shared+set}" = set; then
with_shared=$withval
else
with_shared=no
-fi
-
-echo "$ac_t""$with_shared" 1>&6
+fi;
+echo "$as_me:4180: result: $with_shared" >&5
+echo "${ECHO_T}$with_shared" >&6
test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
-echo $ac_n "checking if you want to build static libraries""... $ac_c" 1>&6
-echo "configure:2326: checking if you want to build static libraries" >&5
+echo "$as_me:4184: 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.
if test "${with_normal+set}" = set; then
@@ -2330,13 +4190,13 @@ if test "${with_normal+set}" = set; then
with_normal=$withval
else
with_normal=yes
-fi
-
-echo "$ac_t""$with_normal" 1>&6
+fi;
+echo "$as_me:4194: result: $with_normal" >&5
+echo "${ECHO_T}$with_normal" >&6
test "$with_normal" = "yes" && cf_list_models="$cf_list_models normal"
-echo $ac_n "checking if you want to build debug libraries""... $ac_c" 1>&6
-echo "configure:2340: checking if you want to build debug libraries" >&5
+echo "$as_me:4198: 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.
if test "${with_debug+set}" = set; then
@@ -2344,13 +4204,13 @@ if test "${with_debug+set}" = set; then
with_debug=$withval
else
with_debug=yes
-fi
-
-echo "$ac_t""$with_debug" 1>&6
+fi;
+echo "$as_me:4208: result: $with_debug" >&5
+echo "${ECHO_T}$with_debug" >&6
test "$with_debug" = "yes" && cf_list_models="$cf_list_models debug"
-echo $ac_n "checking if you want to build profiling libraries""... $ac_c" 1>&6
-echo "configure:2354: checking if you want to build profiling libraries" >&5
+echo "$as_me:4212: 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.
if test "${with_profile+set}" = set; then
@@ -2358,37 +4218,38 @@ if test "${with_profile+set}" = set; then
with_profile=$withval
else
with_profile=no
-fi
-
-echo "$ac_t""$with_profile" 1>&6
+fi;
+echo "$as_me:4222: result: $with_profile" >&5
+echo "${ECHO_T}$with_profile" >&6
test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
+fi
+
###############################################################################
-echo $ac_n "checking for specified models""... $ac_c" 1>&6
-echo "configure:2370: checking for specified models" >&5
+echo "$as_me:4230: 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" = "yes" && cf_list_models=libtool
-echo "$ac_t""$cf_list_models" 1>&6
+test "$with_libtool" != "no" && cf_list_models=libtool
+echo "$as_me:4234: 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 $ac_n "checking for default model""... $ac_c" 1>&6
-echo "configure:2378: checking for default model" >&5
-DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
-echo "$ac_t""$DFT_LWR_MODEL" 1>&6
-
+echo "$as_me:4239: 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:4242: result: $DFT_LWR_MODEL" >&5
+echo "${ECHO_T}$DFT_LWR_MODEL" >&6
DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
TINFO_NAME=tinfo
-
LIB_NAME=ncurses
-
LIB_DIR=../lib
+LIB_2ND=../../lib
case $cf_cv_system_name in
OS/2*) LIB_PREFIX='' ;;
@@ -2396,18 +4257,15 @@ LIB_DIR=../lib
*) LIB_PREFIX='lib' ;;
esac
cf_prefix=$LIB_PREFIX
-
LIB_PREFIX=$cf_prefix
-
LIB_SUFFIX=
-
###############################################################################
-echo $ac_n "checking if you want to build a separate terminfo library""... $ac_c" 1>&6
-echo "configure:2411: checking if you want to build a separate terminfo library" >&5
+echo "$as_me:4267: 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.
if test "${with_termlib+set}" = set; then
@@ -2415,254 +4273,535 @@ if test "${with_termlib+set}" = set; then
with_termlib=$withval
else
with_termlib=no
-fi
-
-echo "$ac_t""$with_termlib" 1>&6
+fi;
+echo "$as_me:4277: result: $with_termlib" >&5
+echo "${ECHO_T}$with_termlib" >&6
### Checks for special libraries, must be done up-front.
-echo $ac_n "checking if you want to link with dbmalloc for testing""... $ac_c" 1>&6
-echo "configure:2425: checking if you want to link with dbmalloc for testing" >&5
+SHLIB_LIST=""
-# Check whether --with-dbmalloc or --without-dbmalloc was given.
-if test "${with_dbmalloc+set}" = set; then
- withval="$with_dbmalloc"
- with_dbmalloc=$withval
+echo "$as_me:4283: 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.
+if test "${with_gpm+set}" = set; then
+ withval="$with_gpm"
+ with_gpm=$withval
else
- with_dbmalloc=no
-fi
+ with_gpm=maybe
+fi;
+echo "$as_me:4293: result: $with_gpm" >&5
+echo "${ECHO_T}$with_gpm" >&6
-echo "$ac_t""$with_dbmalloc" 1>&6
-if test "$with_dbmalloc" = yes ; then
- echo $ac_n "checking for debug_malloc in -ldbmalloc""... $ac_c" 1>&6
-echo "configure:2438: checking for debug_malloc in -ldbmalloc" >&5
-ac_lib_var=`echo dbmalloc'_'debug_malloc | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+if test "$with_gpm" != no ; then
+ echo "$as_me:4297: 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
- ac_save_LIBS="$LIBS"
-LIBS="-ldbmalloc $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2446 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4303 "configure"
#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char debug_malloc();
-
-int main() {
-debug_malloc()
-; return 0; }
-EOF
-if { (eval echo configure:2457: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
+#include <gpm.h>
+_ACEOF
+if { (eval echo "$as_me:4307: \"$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:4313: \$? = $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
- echo "configure: failed program was:" >&5
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ ac_cv_header_gpm_h=yes
+else
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
+ ac_cv_header_gpm_h=no
fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
+rm -f conftest.err conftest.$ac_ext
fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_lib=HAVE_LIB`echo dbmalloc | sed -e 's/[^a-zA-Z0-9_]/_/g' \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
+echo "$as_me:4332: 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
+
+ cat >>confdefs.h <<\EOF
+#define HAVE_GPM_H 1
EOF
- LIBS="-ldbmalloc $LIBS"
+ if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
+ test -n "$verbose" && echo " assuming we really have GPM library" 1>&6
+
+ cat >>confdefs.h <<\EOF
+#define HAVE_LIBGPM 1
+EOF
+ else
+ echo "$as_me:4348: 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
- echo "$ac_t""no" 1>&6
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgpm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4356 "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 ()
+{
+Gpm_Open ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4375: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:4378: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:4381: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4384: \$? = $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:4395: 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
+ :
+else
+
+ { { echo "$as_me:4401: 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
+else
+
+ test "$with_gpm" != maybe && { echo "$as_me:4411: WARNING: Cannot find GPM header" >&5
+echo "$as_me: WARNING: Cannot find GPM header" >&2;}
+ with_gpm=no
+
fi
-echo $ac_n "checking if you want to link with dmalloc for testing""... $ac_c" 1>&6
-echo "configure:2487: checking if you want to link with dmalloc for testing" >&5
+fi
-# Check whether --with-dmalloc or --without-dmalloc was given.
-if test "${with_dmalloc+set}" = set; then
- withval="$with_dmalloc"
- with_dmalloc=$withval
+if test "$with_gpm" != no ; then
+ echo "$as_me:4420: 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.
+if test "${with_dlsym+set}" = set; then
+ withval="$with_dlsym"
+ with_dlsym=$withval
else
- with_dmalloc=no
-fi
+ with_dlsym=yes
+fi;
+ echo "$as_me:4430: result: $with_dlsym" >&5
+echo "${ECHO_T}$with_dlsym" >&6
+ if test "$with_dlsym" = yes ; then
-echo "$ac_t""$with_dmalloc" 1>&6
-if test "$with_dmalloc" = yes ; then
- echo $ac_n "checking for dmalloc_debug in -ldmalloc""... $ac_c" 1>&6
-echo "configure:2500: checking for dmalloc_debug in -ldmalloc" >&5
-ac_lib_var=`echo dmalloc'_'dmalloc_debug | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+cf_have_dlsym=no
+echo "$as_me:4435: 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
- ac_save_LIBS="$LIBS"
-LIBS="-ldmalloc $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2508 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4441 "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. */
+#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 dmalloc_debug();
+ builtin and then its argument prototype would still apply. */
+char dlsym ();
+char (*f) ();
-int main() {
-dmalloc_debug()
-; return 0; }
-EOF
-if { (eval echo configure:2519: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_dlsym) || defined (__stub___dlsym)
+choke me
+#else
+f = dlsym;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4472: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:4475: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:4478: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4481: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_dlsym=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_dlsym=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:4491: 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:4498: 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
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4506 "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 dlsym ();
+int
+main ()
+{
+dlsym ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4525: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:4528: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:4531: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4534: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dl_dlsym=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dl_dlsym=no
fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:4545: 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
+ cf_have_dlsym=yes
+ cf_have_libdl=yes
fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_lib=HAVE_LIB`echo dmalloc | sed -e 's/[^a-zA-Z0-9_]/_/g' \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
+
+fi
+
+if test "$cf_have_dlsym" = yes ; then
+ test "$cf_have_libdl" = yes && LIBS="-ldl $LIBS"
+
+ echo "$as_me:4558: 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 4561 "configure"
+#include "confdefs.h"
+#include <dlfcn.h>
+int
+main ()
+{
+
+ void *obj;
+ if ((obj = dlopen("filename", 0)) != 0) {
+ if (dlsym(obj, "symbolname") == 0) {
+ dlclose(obj);
+ }
+ }
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4579: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:4582: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:4585: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4588: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cat >>confdefs.h <<\EOF
+#define HAVE_LIBDL 1
EOF
- LIBS="-ldmalloc $LIBS"
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ { { echo "$as_me:4599: 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:4604: result: ok" >&5
+echo "${ECHO_T}ok" >&6
else
- echo "$ac_t""no" 1>&6
+ { { echo "$as_me:4607: error: Cannot find dlsym function" >&5
+echo "$as_me: error: Cannot find dlsym function" >&2;}
+ { (exit 1); exit 1; }; }
fi
-fi
+ if test "$with_gpm" != yes ; then
+ test -n "$verbose" && echo " assuming soname for gpm is $with_gpm" 1>&6
-SHLIB_LIST=""
-echo $ac_n "checking if you want to link with the gpm mouse library""... $ac_c" 1>&6
-echo "configure:2550: checking if you want to link with the gpm mouse library" >&5
+ cf_cv_gpm_soname="$with_gpm"
+ else
-# Check whether --with-gpm or --without-gpm was given.
-if test "${with_gpm+set}" = set; then
- withval="$with_gpm"
- with_gpm=$withval
+echo "$as_me:4618: 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
else
- with_gpm=no
+
+cf_cv_gpm_soname=unknown
+if test "$cross_compiling" != yes ; then
+cat >conftest.$ac_ext <<CF_EOF
+#include <gpm.h>
+int main()
+{
+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:4636: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4639: \$? = $ac_status" >&5
+ (exit $ac_status); } ; then
+ if { (eval echo "$as_me:4641: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:4644: \$? = $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
+ fi
+ fi
+rm -f conftest*
+LIBS="$cf_save_LIBS"
fi
-echo "$ac_t""$with_gpm" 1>&6
-if test "$with_gpm" = yes ; then
- echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:2563: checking for Gpm_Open in -lgpm" >&5
-ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-lgpm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2571 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char Gpm_Open();
+fi
+echo "$as_me:4655: result: $cf_cv_gpm_soname" >&5
+echo "${ECHO_T}$cf_cv_gpm_soname" >&6
-int main() {
-Gpm_Open()
-; return 0; }
+ fi
+ test "$cf_cv_gpm_soname" != "unknown" && cat >>confdefs.h <<EOF
+#define LIBGPM_SONAME "$cf_cv_gpm_soname"
EOF
-if { (eval echo configure:2582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
-
- EXTRA_LIBS="-lgpm -lncurses $EXTRA_LIBS"
+ SHLIB_LIST="-ldl $SHLIB_LIST"
+ else
SHLIB_LIST="-lgpm $SHLIB_LIST"
- cat >> confdefs.h <<\EOF
+ fi
+ cat >>confdefs.h <<\EOF
#define HAVE_LIBGPM 1
EOF
- for ac_hdr in gpm.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2608: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ echo "$as_me:4671: 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
else
- cat > conftest.$ac_ext <<EOF
-#line 2613 "configure"
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lgpm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 4679 "configure"
#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2618: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-else
- echo "$ac_t""no" 1>&6
-echo "configure: warning: Cannot link with gpm library - read the FAQ" 1>&2
-fi
+/* 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_Wgetch ();
+int
+main ()
+{
+Gpm_Wgetch ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4698: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:4701: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:4704: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4707: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_gpm_Gpm_Wgetch=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_gpm_Gpm_Wgetch=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:4718: 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:4722: 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
+
+fi
+
+# not everyone has "test -c"
+if test -c /dev/sysmouse 2>/dev/null ; then
+echo "$as_me:4731: checking if you want to use sysmouse" >&5
+echo $ECHO_N "checking if you want to use sysmouse... $ECHO_C" >&6
+
+# 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 4743 "configure"
+#include "confdefs.h"
-fi
+#include <osreldate.h>
+#if (__FreeBSD_version >= 400017)
+#include <sys/consio.h>
+#include <sys/fbio.h>
+#else
+#include <machine/console.h>
+#endif
+
+int
+main ()
+{
+
+ struct mouse_info the_mouse;
+ ioctl(0, CONS_MOUSECTL, &the_mouse);
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4766: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4769: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4772: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4775: \$? = $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:4785: 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
+fi
if test X"$CC_G_OPT" = X"" ; then
CC_G_OPT='-g'
test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT=''
fi
-
if test X"$CXX_G_OPT" = X"" ; then
CXX_G_OPT='-g'
test -n "$GXX" && test "${ac_cv_prog_cxx_g}" != yes && CXX_G_OPT=''
fi
-
-echo $ac_n "checking for default loader flags""... $ac_c" 1>&6
-echo "configure:2666: checking for default loader flags" >&5
+echo "$as_me:4803: 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='' ;;
@@ -2670,10 +4809,11 @@ debug) LD_MODEL=$CC_G_OPT ;;
profile) LD_MODEL='-pg';;
shared) LD_MODEL='' ;;
esac
-echo "$ac_t""$LD_MODEL" 1>&6
+echo "$as_me:4812: result: $LD_MODEL" >&5
+echo "${ECHO_T}$LD_MODEL" >&6
-echo $ac_n "checking if rpath option should be used""... $ac_c" 1>&6
-echo "configure:2677: checking if rpath option should be used" >&5
+echo "$as_me:4815: 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
@@ -2681,12 +4821,10 @@ if test "${enable_rpath+set}" = set; then
cf_cv_ld_rpath=$enableval
else
cf_cv_ld_rpath=no
-fi
-
-echo "$ac_t""$cf_cv_ld_rpath" 1>&6
-
+fi;
+echo "$as_me:4825: result: $cf_cv_ld_rpath" >&5
+echo "${ECHO_T}$cf_cv_ld_rpath" >&6
-
LOCAL_LDFLAGS=
LOCAL_LDFLAGS2=
LD_SHARED_OPTS=
@@ -2694,9 +4832,9 @@ echo "$ac_t""$cf_cv_ld_rpath" 1>&6
cf_cv_do_symlinks=no
- echo $ac_n "checking if release/abi version should be used for shared libs""... $ac_c" 1>&6
-echo "configure:2699: checking if release/abi version should be used for shared libs" >&5
-
+ echo "$as_me:4835: 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"
@@ -2709,15 +4847,17 @@ if test "${with_shlib_version+set}" = set; then
cf_cv_shlib_version=$withval
;;
*)
- { echo "configure: error: option value must be one of: rel, abi, auto or no" 1>&2; exit 1; }
+ { { echo "$as_me:4850: 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; }; }
;;
esac
-
+
else
cf_cv_shlib_version=auto
-fi
-
- echo "$ac_t""$cf_cv_shlib_version" 1>&6
+fi;
+ echo "$as_me:4859: result: $cf_cv_shlib_version" >&5
+echo "${ECHO_T}$cf_cv_shlib_version" >&6
cf_cv_rm_so_locs=no
@@ -2725,30 +4865,45 @@ fi
CC_SHARED_OPTS=
if test "$GCC" = yes
then
- echo $ac_n "checking which $CC option to use""... $ac_c" 1>&6
-echo "configure:2730: checking which $CC option to use" >&5
+ echo "$as_me:4868: 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 <<EOF
-#line 2736 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 4875 "configure"
#include "confdefs.h"
#include <stdio.h>
-int main() {
+int
+main ()
+{
int x = 1
-; return 0; }
-EOF
-if { (eval echo configure:2743: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:4887: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:4890: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:4893: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4896: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
break
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
done
- echo "$ac_t""$CC_SHARED_OPTS" 1>&6
+ echo "$as_me:4905: result: $CC_SHARED_OPTS" >&5
+echo "${ECHO_T}$CC_SHARED_OPTS" >&6
CFLAGS="$cf_save_CFLAGS"
fi
@@ -2756,89 +4911,175 @@ rm -f conftest*
case $cf_cv_system_name in
beos*)
- MK_SHARED_LIB='$(CC) -o $@ -Xlinker -soname=`basename $@` -nostart -e 0'
+ MK_SHARED_LIB='${CC} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0'
;;
cygwin*)
CC_SHARED_OPTS=
- MK_SHARED_LIB='$(CC) -shared -Wl,--out-implib=$(IMPORT_LIB) -Wl,--export-all-symbols -o $(SHARED_LIB)'
+ MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,--out-implib=../lib/${IMPORT_LIB} -Wl,--export-all-symbols -o ../lib/${SHARED_LIB}'
cf_cv_shlib_version=cygdll
cf_cv_shlib_version_infix=cygdll
;;
darwin*)
EXTRA_CFLAGS="-no-cpp-precomp"
CC_SHARED_OPTS="-dynamic"
- MK_SHARED_LIB='$(CC) -dynamiclib -install_name $(DESTDIR)$(libdir)/`basename $@` -compatibility_version $(ABI_VERSION) -current_version $(ABI_VERSION) -o $@'
+ MK_SHARED_LIB='${CC} ${CFLAGS} -dynamiclib -install_name ${DESTDIR}${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:4928: 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 4937 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+int i;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:4949: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:4952: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:4955: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:4958: \$? = $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:4969: 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*)
# (tested with gcc 2.7.2 -- I don't have c89)
if test "$GCC" = yes; then
- LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
+ LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}'
else
CC_SHARED_OPTS='+Z'
- LD_SHARED_OPTS='-Wl,+b,$(libdir)'
+ LD_SHARED_OPTS='-Wl,+b,${libdir}'
fi
- MK_SHARED_LIB='$(LD) +b $(libdir) -b -o $@'
+ MK_SHARED_LIB='${LD} +b ${libdir} -b -o $@'
# HP-UX shared libraries must be executable, and should be
# readonly to exploit a quirk in the memory manager.
INSTALL_LIB="-m 555"
;;
irix*)
if test "$cf_cv_ld_rpath" = yes ; then
- cf_ld_rpath_opt="-Wl,-rpath,"
- EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
+ if test "$GCC" = yes; then
+ cf_ld_rpath_opt="-Wl,-rpath,"
+ EXTRA_LDFLAGS="-Wl,-rpath,\${libdir} $EXTRA_LDFLAGS"
+ else
+ cf_ld_rpath_opt="-rpath "
+ EXTRA_LDFLAGS="-rpath \${libdir} $EXTRA_LDFLAGS"
+ fi
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $@` -o $@'
+ MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $@` -o $@'
cf_cv_rm_so_locs=yes
;;
- linux*|gnu*)
+ linux*|gnu*|k*bsd*-gnu)
if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
+ LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_ld_rpath" = yes ; then
cf_ld_rpath_opt="-Wl,-rpath,"
- EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="-Wl,-rpath,\${libdir} $EXTRA_LDFLAGS"
fi
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@ .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $@'
+
+ 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
+
+ MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_shared_soname',-stats,-lc -o $@'
;;
openbsd2*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $@.$(ABI_VERSION)` -o $@'
+ MK_SHARED_LIB='${LD} -Bshareable -soname,`basename $@.${ABI_VERSION}` -o $@'
;;
- openbsd*|freebsd*)
+ openbsd*|freebsd[23]*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
- MK_SHARED_LIB='$(LD) -Bshareable -o $@'
+ MK_SHARED_LIB='${LD} -Bshareable -o $@'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
+ freebsd*)
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
+ if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_ld_rpath" = yes ; then
+ LOCAL_LDFLAGS="-rpath \$(LOCAL_LIBDIR)"
+ LOCAL_LDFLAGS2="-rpath \${libdir} $LOCAL_LDFLAGS"
+ cf_ld_rpath_opt="-rpath "
+ EXTRA_LDFLAGS="-rpath \${libdir} $EXTRA_LDFLAGS"
+ fi
+
+ 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
+
+ MK_SHARED_LIB='${LD} -Bshareable -soname=`basename $@` -o $@'
+ ;;
netbsd*)
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
test "$cf_cv_ld_rpath" = yes && cf_ld_rpath_opt="-Wl,-rpath,"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_ld_rpath" = yes ; then
- LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
+ LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@ .$(REL_VERSION)`.$(ABI_VERSION) -o $@'
+ EXTRA_LDFLAGS="-Wl,-rpath,\${libdir} $EXTRA_LDFLAGS"
if test "$cf_cv_shlib_version" = auto; then
- if test ! -f /usr/libexec/ld.elf_so; 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_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_shared_soname='`basename $@`'
+ fi
+
+ MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_shared_soname' -o $@'
else
- MK_SHARED_LIB='$(LD) -Bshareable -o $@'
+ MK_SHARED_LIB='${LD} -Bshareable -o $@'
fi
;;
osf*|mls+*)
# tested with OSF/1 V3.2 and 'cc'
# tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't
# link with shared libs).
- MK_SHARED_LIB='$(LD) -set_version $(REL_VERSION):$(ABI_VERSION) -expect_unresolved "*" -shared -soname `basename $@`'
+ MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`'
case $host_os in
osf4*)
MK_SHARED_LIB="${MK_SHARED_LIB} -msym"
@@ -2846,7 +5087,7 @@ rm -f conftest*
esac
MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@'
if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="-Wl,-rpath,`pwd`/lib"
+ LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_ld_rpath" = yes ; then
@@ -2857,48 +5098,55 @@ rm -f conftest*
;;
sco3.2v5*) # (also uw2* and UW7) hops 13-Apr-98
# tested with osr5.0.5
- if test "$ac_cv_prog_gcc" != yes; then
+ 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} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@'
if test "$cf_cv_ld_rpath" = yes ; then
# only way is to set LD_RUN_PATH but no switch for it
RUN_PATH=$libdir
fi
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
- LINK_PROGS='LD_RUN_PATH=$(libdir)'
+ LINK_PROGS='LD_RUN_PATH=${libdir}'
LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib'
;;
sunos4*)
# tested with SunOS 4.1.1 and gcc 2.7.0
- if test "$ac_cv_prog_gcc" != yes; then
+ if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -assert pure-text -o $@'
+ MK_SHARED_LIB='${LD} -assert pure-text -o $@'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
solaris2*)
# tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
- if test "$ac_cv_prog_gcc" != yes; then
+ if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -dy -G -h `basename $@ .$(REL_VERSION)`.$(ABI_VERSION) -o $@'
if test "$DFT_LWR_MODEL" = "shared" ; then
- LOCAL_LDFLAGS="-R `pwd`/lib:\$(libdir)"
+ LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_ld_rpath" = yes ; then
cf_ld_rpath_opt="-R"
EXTRA_LDFLAGS="$LOCAL_LDFLAGS $EXTRA_LDFLAGS"
fi
- test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+
+ 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
+
+ MK_SHARED_LIB='${CC} -dy -G -h '$cf_shared_soname' -o $@'
;;
sysv5uw7*|unix_sv*)
# tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
- if test "$ac_cv_prog_gcc" != yes; then
+ if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -d y -G -o $@'
+ MK_SHARED_LIB='${LD} -d y -G -o $@'
;;
*)
CC_SHARED_OPTS='unknown'
@@ -2914,78 +5162,84 @@ rm -f conftest*
test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
;;
*)
- echo "configure: warning: ignored --with-shlib-version" 1>&2
+ { echo "$as_me:5165: WARNING: ignored --with-shlib-version" >&5
+echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
;;
esac
;;
esac
if test -n "$cf_ld_rpath_opt" ; then
- echo $ac_n "checking if we need a space after rpath option""... $ac_c" 1>&6
-echo "configure:2926: checking if we need a space after rpath option" >&5
+ echo "$as_me:5173: 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="$LIBS ${cf_ld_rpath_opt}$libdir"
- cat > conftest.$ac_ext <<EOF
-#line 2930 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5178 "configure"
#include "confdefs.h"
-int main() {
+int
+main ()
+{
-; return 0; }
-EOF
-if { (eval echo configure:2937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5190: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5193: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5196: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5199: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_rpath_space=no
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_rpath_space=yes
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_rpath_space=yes
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save_LIBS"
- echo "$ac_t""$cf_rpath_space" 1>&6
+ echo "$as_me:5209: result: $cf_rpath_space" >&5
+echo "${ECHO_T}$cf_rpath_space" >&6
test "$cf_rpath_space" = yes && cf_ld_rpath_opt="$cf_ld_rpath_opt "
- MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\$(libdir)"
+ MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}"
fi
-
-
-
-
-
-
-
-
-
-
if test "$CC_SHARED_OPTS" = "unknown"; then
for model in $cf_list_models; do
if test "$model" = "shared"; then
- { echo "configure: error: Shared libraries are not supported in this version" 1>&2; exit 1; }
+ { { echo "$as_me:5218: 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
###############################################################################
-
### use option --disable-overwrite to leave out the link to -lcurses
-echo $ac_n "checking if you wish to install ncurses overwriting curses""... $ac_c" 1>&6
-echo "configure:2976: checking if you wish to install ncurses overwriting curses" >&5
+echo "$as_me:5228: 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.
if test "${enable_overwrite+set}" = set; then
enableval="$enable_overwrite"
with_overwrite=$enableval
else
- if test "$prefix" != "/usr/local" ; then with_overwrite=yes; else with_overwrite=no; fi
-fi
+ if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi
+fi;
+echo "$as_me:5238: result: $with_overwrite" >&5
+echo "${ECHO_T}$with_overwrite" >&6
-echo "$ac_t""$with_overwrite" 1>&6
-
-echo $ac_n "checking if external terminfo-database is used""... $ac_c" 1>&6
-echo "configure:2989: checking if external terminfo-database is used" >&5
+echo "$as_me:5241: 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.
if test "${enable_database+set}" = set; then
@@ -2993,9 +5247,9 @@ if test "${enable_database+set}" = set; then
use_database=$enableval
else
use_database=yes
-fi
-
-echo "$ac_t""$use_database" 1>&6
+fi;
+echo "$as_me:5251: result: $use_database" >&5
+echo "${ECHO_T}$use_database" >&6
case $host_os in #(vi
os2*) #(vi
@@ -3006,34 +5260,43 @@ os2*) #(vi
;;
esac
-
-
case $cf_cv_system_name in
os2*) PATHSEP=';' ;;
*) PATHSEP=':' ;;
esac
-
-
if test "$use_database" != no ; then
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define USE_DATABASE 1
EOF
- echo $ac_n "checking which terminfo source-file will be installed""... $ac_c" 1>&6
-echo "configure:3025: checking which terminfo source-file will be installed" >&5
-
+ echo "$as_me:5273: 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 --enable-database or --disable-database was given.
if test "${enable_database+set}" = set; then
enableval="$enable_database"
TERMINFO_SRC=$withval
-fi
+fi;
+ echo "$as_me:5281: result: $TERMINFO_SRC" >&5
+echo "${ECHO_T}$TERMINFO_SRC" >&6
- echo "$ac_t""$TERMINFO_SRC" 1>&6
+ echo "$as_me:5284: 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.
+if test "${with_hashed_db+set}" = set; then
+ withval="$with_hashed_db"
+
+else
+ with_hashed_db=no
+fi;
+ echo "$as_me:5294: result: $with_hashed_db" >&5
+echo "${ECHO_T}$with_hashed_db" >&6
fi
-echo $ac_n "checking for list of fallback descriptions""... $ac_c" 1>&6
-echo "configure:3037: checking for list of fallback descriptions" >&5
+echo "$as_me:5298: 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.
if test "${with_fallbacks+set}" = set; then
@@ -3041,11 +5304,28 @@ if test "${with_fallbacks+set}" = set; then
with_fallback=$withval
else
with_fallback=
-fi
-
-echo "$ac_t""$with_fallback" 1>&6
-FALLBACK_LIST=`echo $with_fallback|sed -e 's/,/ /g'`
-
+fi;
+echo "$as_me:5308: result: $with_fallback" >&5
+echo "${ECHO_T}$with_fallback" >&6
+FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'`
+
+echo "$as_me:5312: 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.
+if test "${with_xterm_new+set}" = set; then
+ withval="$with_xterm_new"
+ with_xterm_new=$withval
+else
+ with_xterm_new=yes
+fi;
+case $with_xterm_new in
+no) with_xterm_new=xterm-old;;
+*) with_xterm_new=xterm-new;;
+esac
+echo "$as_me:5326: result: $with_xterm_new" >&5
+echo "${ECHO_T}$with_xterm_new" >&6
+WHICH_XTERM=$with_xterm_new
MAKE_TERMINFO=
if test "$use_database" = no ; then
@@ -3053,24 +5333,27 @@ if test "$use_database" = no ; then
MAKE_TERMINFO="#"
else
-echo $ac_n "checking for list of terminfo directories""... $ac_c" 1>&6
-echo "configure:3058: checking for list of terminfo directories" >&5
-
-
+echo "$as_me:5336: 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.
if test "${with_terminfo_dirs+set}" = set; then
withval="$with_terminfo_dirs"
- :
+
else
withval=${TERMINFO_DIRS-${datadir}/terminfo}
-fi
-
+fi;
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${PATHSEP}"
cf_dst_path=
for cf_src_path in $withval
do
-
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
case ".$cf_src_path" in #(vi
.\$\(*\)*|.\'*\'*) #(vi
;;
@@ -3082,15 +5365,17 @@ case ".$cf_src_path" in #(vi
eval cf_src_path="$cf_src_path"
case ".$cf_src_path" in #(vi
.NONE/*)
- cf_src_path=`echo $cf_src_path | sed -e s@NONE@$ac_default_prefix@`
+ cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
;;
esac
;; #(vi
-.NONE/*)
- cf_src_path=`echo $cf_src_path | sed -e s@NONE@$ac_default_prefix@`
+.no|.NONE/*)
+ cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { echo "configure: error: expected a pathname, not \"$cf_src_path\"" 1>&2; exit 1; }
+ { { echo "$as_me:5376: 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
@@ -3099,26 +5384,28 @@ esac
done
IFS="$ac_save_ifs"
-
-
eval 'TERMINFO_DIRS="$cf_dst_path"'
-
-echo "$ac_t""$TERMINFO_DIRS" 1>&6
-test -n "$TERMINFO_DIRS" && cat >> confdefs.h <<EOF
+echo "$as_me:5389: 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 $ac_n "checking for default terminfo directory""... $ac_c" 1>&6
-echo "configure:3115: checking for default terminfo directory" >&5
+echo "$as_me:5395: 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.
if test "${with_default_terminfo_dir+set}" = set; then
withval="$with_default_terminfo_dir"
- :
+
else
withval="${TERMINFO-${datadir}/terminfo}"
+fi;
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
fi
case ".$withval" in #(vi
@@ -3132,35 +5419,34 @@ case ".$withval" in #(vi
eval withval="$withval"
case ".$withval" in #(vi
.NONE/*)
- withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
;;
esac
;; #(vi
-.NONE/*)
- withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
+.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { echo "configure: error: expected a pathname, not \"$withval\"" 1>&2; exit 1; }
+ { { echo "$as_me:5430: error: expected a pathname, not \"$withval\"" >&5
+echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
+ { (exit 1); exit 1; }; }
;;
esac
-eval TERMINFO="$withval"
+TERMINFO="$withval"
-echo "$ac_t""$TERMINFO" 1>&6
-cat >> confdefs.h <<EOF
+echo "$as_me:5438: result: $TERMINFO" >&5
+echo "${ECHO_T}$TERMINFO" >&6
+cat >>confdefs.h <<EOF
#define TERMINFO "$TERMINFO"
EOF
-
fi
-
-
-
### use option --disable-big-core to make tic run on small machines
### We need 4Mb, check if we can allocate 50% more than that.
-echo $ac_n "checking if big-core option selected""... $ac_c" 1>&6
-echo "configure:3164: checking if big-core option selected" >&5
+echo "$as_me:5448: 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.
if test "${enable_big_core+set}" = set; then
@@ -3170,8 +5456,8 @@ else
if test "$cross_compiling" = yes; then
with_big_core=no
else
- cat > conftest.$ac_ext <<EOF
-#line 3175 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5460 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -3181,32 +5467,39 @@ int main() {
char *s = malloc(n);
if (s != 0)
s[0] = s[n-1] = 0;
- exit(s == 0);
+ ${cf_cv_main_return:-return}(s == 0);
}
-EOF
-if { (eval echo configure:3188: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:5474: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5477: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:5479: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5482: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
with_big_core=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- with_big_core=no
-fi
-rm -fr conftest*
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+with_big_core=no
fi
-
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
-echo "$ac_t""$with_big_core" 1>&6
-test "$with_big_core" = "yes" && cat >> confdefs.h <<\EOF
+fi;
+echo "$as_me:5494: result: $with_big_core" >&5
+echo "${ECHO_T}$with_big_core" >&6
+test "$with_big_core" = "yes" && cat >>confdefs.h <<\EOF
#define HAVE_BIG_CORE 1
EOF
-
### use option --enable-termcap to compile in the termcap fallback support
-echo $ac_n "checking if you want termcap-fallback support""... $ac_c" 1>&6
-echo "configure:3210: checking if you want termcap-fallback support" >&5
+echo "$as_me:5501: 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.
if test "${enable_termcap+set}" = set; then
@@ -3214,44 +5507,49 @@ if test "${enable_termcap+set}" = set; then
with_termcap=$enableval
else
with_termcap=no
-fi
-
-echo "$ac_t""$with_termcap" 1>&6
+fi;
+echo "$as_me:5511: result: $with_termcap" >&5
+echo "${ECHO_T}$with_termcap" >&6
if test "$with_termcap" != "yes" ; then
if test "$use_database" = no ; then
- if test -z $with_fallback ; then
- { echo "configure: error: You have disabled the database w/o specifying fallbacks" 1>&2; exit 1; }
+ if test -z "$with_fallback" ; then
+ { { echo "$as_me:5517: 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
fi
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define PURE_TERMINFO 1
EOF
else
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define USE_TERMCAP 1
EOF
-echo $ac_n "checking for list of termcap files""... $ac_c" 1>&6
-echo "configure:3239: checking for list of termcap files" >&5
-
-
+echo "$as_me:5532: 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.
if test "${with_termpath+set}" = set; then
withval="$with_termpath"
- :
+
else
withval=${TERMPATH-/etc/termcap:/usr/share/misc/termcap}
-fi
-
+fi;
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${PATHSEP}"
cf_dst_path=
for cf_src_path in $withval
do
-
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
case ".$cf_src_path" in #(vi
.\$\(*\)*|.\'*\'*) #(vi
;;
@@ -3263,15 +5561,17 @@ case ".$cf_src_path" in #(vi
eval cf_src_path="$cf_src_path"
case ".$cf_src_path" in #(vi
.NONE/*)
- cf_src_path=`echo $cf_src_path | sed -e s@NONE@$ac_default_prefix@`
+ cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
;;
esac
;; #(vi
-.NONE/*)
- cf_src_path=`echo $cf_src_path | sed -e s@NONE@$ac_default_prefix@`
+.no|.NONE/*)
+ cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { echo "configure: error: expected a pathname, not \"$cf_src_path\"" 1>&2; exit 1; }
+ { { echo "$as_me:5572: 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
@@ -3280,20 +5580,17 @@ esac
done
IFS="$ac_save_ifs"
-
-
eval 'TERMPATH="$cf_dst_path"'
-
-echo "$ac_t""$TERMPATH" 1>&6
-test -n "$TERMPATH" && cat >> confdefs.h <<EOF
+echo "$as_me:5585: result: $TERMPATH" >&5
+echo "${ECHO_T}$TERMPATH" >&6
+test -n "$TERMPATH" && cat >>confdefs.h <<EOF
#define TERMPATH "$TERMPATH"
EOF
-
### use option --enable-getcap to use a hacked getcap for reading termcaps
-echo $ac_n "checking if fast termcap-loader is needed""... $ac_c" 1>&6
-echo "configure:3297: checking if fast termcap-loader is needed" >&5
+echo "$as_me:5592: 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.
if test "${enable_getcap+set}" = set; then
@@ -3301,16 +5598,15 @@ if test "${enable_getcap+set}" = set; then
with_getcap=$enableval
else
with_getcap=no
-fi
-
-echo "$ac_t""$with_getcap" 1>&6
-test "$with_getcap" = "yes" && cat >> confdefs.h <<\EOF
+fi;
+echo "$as_me:5602: result: $with_getcap" >&5
+echo "${ECHO_T}$with_getcap" >&6
+test "$with_getcap" = "yes" && cat >>confdefs.h <<\EOF
#define USE_GETCAP 1
EOF
-
-echo $ac_n "checking if translated termcaps will be cached in ~/.terminfo""... $ac_c" 1>&6
-echo "configure:3314: checking if translated termcaps will be cached in ~/.terminfo" >&5
+echo "$as_me:5608: 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.
if test "${enable_getcap_cache+set}" = set; then
@@ -3318,150 +5614,210 @@ if test "${enable_getcap_cache+set}" = set; then
with_getcap_cache=$enableval
else
with_getcap_cache=no
+fi;
+echo "$as_me:5618: result: $with_getcap_cache" >&5
+echo "${ECHO_T}$with_getcap_cache" >&6
+test "$with_getcap_cache" = "yes" && cat >>confdefs.h <<\EOF
+#define USE_GETCAP_CACHE 1
+EOF
+
fi
-echo "$ac_t""$with_getcap_cache" 1>&6
-test "$with_getcap_cache" = "yes" && cat >> confdefs.h <<\EOF
-#define USE_GETCAP_CACHE 1
+### Use option --disable-home-terminfo to completely remove ~/.terminfo
+echo "$as_me:5627: 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.
+if test "${enable_home_terminfo+set}" = set; then
+ enableval="$enable_home_terminfo"
+ with_home_terminfo=$enableval
+else
+ with_home_terminfo=yes
+fi;
+echo "$as_me:5637: result: $with_home_terminfo" >&5
+echo "${ECHO_T}$with_home_terminfo" >&6
+test "$with_home_terminfo" = "yes" && cat >>confdefs.h <<\EOF
+#define USE_HOME_TERMINFO 1
EOF
+echo "$as_me:5643: 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
-fi
+# Check whether --enable-root-environ or --disable-root-environ was given.
+if test "${enable_root_environ+set}" = set; then
+ enableval="$enable_root_environ"
+ with_root_environ=$enableval
+else
+ with_root_environ=yes
+fi;
+echo "$as_me:5653: result: $with_root_environ" >&5
+echo "${ECHO_T}$with_root_environ" >&6
+test "$with_root_environ" = yes && cat >>confdefs.h <<\EOF
+#define USE_ROOT_ENVIRON 1
+EOF
### Use option --enable-symlinks to make tic use symlinks, not hard links
### to reduce storage requirements for the terminfo database.
for ac_func in \
remove \
- unlink
+ unlink
do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3340: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 3345 "configure"
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:5667: 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 5673 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
+ which can conflict with char $ac_func (); below. */
#include <assert.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 $ac_func();
-
-int main() {
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+char (*f) ();
+int
+main ()
+{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-$ac_func();
+f = $ac_func;
#endif
-; return 0; }
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5704: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5707: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5710: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5713: \$? = $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:5723: 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
-if { (eval echo configure:3368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
fi
done
+if test "$cross_compiling" = yes ; then
-if test "$ac_cv_prog_cc_cross" = yes ; then
- for ac_func in \
+for ac_func in \
link \
- symlink
+ symlink
do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3399: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 3404 "configure"
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:5740: 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 5746 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
+ which can conflict with char $ac_func (); below. */
#include <assert.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 $ac_func();
-
-int main() {
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+char (*f) ();
+int
+main ()
+{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-$ac_func();
+f = $ac_func;
#endif
-; return 0; }
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:5777: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5780: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:5783: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5786: \$? = $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:5796: 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
-if { (eval echo configure:3427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
fi
done
else
- echo $ac_n "checking if link/symlink functions work""... $ac_c" 1>&6
-echo "configure:3453: checking if link/symlink functions work" >&5
-if eval "test \"`echo '$''{'cf_cv_link_funcs'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ echo "$as_me:5807: 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
else
-
+
cf_cv_link_funcs=
for cf_func in link symlink ; do
if test "$cross_compiling" = yes; then
-
+
eval 'ac_cv_func_'$cf_func'=error'
else
- cat > conftest.$ac_ext <<EOF
-#line 3465 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 5820 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -3486,112 +5842,116 @@ int main()
#else
remove(dst);
#endif
- exit (fail);
+ ${cf_cv_main_return:-return} (fail);
}
-
-EOF
-if { (eval echo configure:3494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
-
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:5850: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:5853: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:5855: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:5858: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
eval 'ac_cv_func_'$cf_func'=yes'
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
-
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
eval 'ac_cv_func_'$cf_func'=no'
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
done
test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
-
-fi
-echo "$ac_t""$cf_cv_link_funcs" 1>&6
- test "$ac_cv_func_link" = yes && cat >> confdefs.h <<\EOF
+fi
+echo "$as_me:5876: result: $cf_cv_link_funcs" >&5
+echo "${ECHO_T}$cf_cv_link_funcs" >&6
+ test "$ac_cv_func_link" = yes && cat >>confdefs.h <<\EOF
#define HAVE_LINK 1
EOF
- test "$ac_cv_func_symlink" = yes && cat >> confdefs.h <<\EOF
+ test "$ac_cv_func_symlink" = yes && cat >>confdefs.h <<\EOF
#define HAVE_SYMLINK 1
EOF
fi
-
with_links=no
with_symlinks=no
-if test "$ac_cv_func_link" != yes ; then
- echo $ac_n "checking if tic should use symbolic links""... $ac_c" 1>&6
-echo "configure:3531: checking if tic should use symbolic links" >&5
- if test "$ac_cv_func_symlink" = yes ; then
- with_symlinks=yes
- else
- with_symlinks=no
- fi
- echo "$ac_t""$with_symlinks" 1>&6
-elif test "$ac_cv_func_symlink" != yes ; then
- echo $ac_n "checking if tic should use hard links""... $ac_c" 1>&6
-echo "configure:3540: checking if tic should use hard links" >&5
- if test "$ac_cv_func_link" = yes ; then
- with_links=yes
- else
- with_links=no
- fi
- echo "$ac_t""$with_links" 1>&6
-else
- echo $ac_n "checking if tic should use symbolic links""... $ac_c" 1>&6
-echo "configure:3549: checking if tic should use symbolic links" >&5
-
+# 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 "$ac_cv_func_symlink" = yes ; then
+ echo "$as_me:5894: 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.
if test "${enable_symlinks+set}" = set; then
enableval="$enable_symlinks"
with_symlinks=$enableval
else
with_symlinks=no
+fi;
+ echo "$as_me:5904: result: $with_symlinks" >&5
+echo "${ECHO_T}$with_symlinks" >&6
fi
- echo "$ac_t""$with_symlinks" 1>&6
+# 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:5911: checking if tic should use hard links" >&5
+echo $ECHO_N "checking if tic should use hard links... $ECHO_C" >&6
+ if test "$ac_cv_func_link" = yes ; then
+ with_links=yes
+ else
+ with_links=no
+ fi
+ echo "$as_me:5918: result: $with_links" >&5
+echo "${ECHO_T}$with_links" >&6
fi
-test "$with_links" = yes && cat >> confdefs.h <<\EOF
+test "$with_links" = yes && cat >>confdefs.h <<\EOF
#define USE_LINKS 1
EOF
-test "$with_symlinks" = yes && cat >> confdefs.h <<\EOF
+test "$with_symlinks" = yes && cat >>confdefs.h <<\EOF
#define USE_SYMLINKS 1
EOF
-
### use option --enable-broken-linker to force on use of broken-linker support
-echo $ac_n "checking if you want broken-linker support code""... $ac_c" 1>&6
-echo "configure:3573: checking if you want broken-linker support code" >&5
+echo "$as_me:5931: 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.
if test "${enable_broken_linker+set}" = set; then
enableval="$enable_broken_linker"
with_broken_linker=$enableval
else
- with_broken_linker=$BROKEN_LINKER
-fi
-
-echo "$ac_t""$with_broken_linker" 1>&6
+ with_broken_linker=${BROKEN_LINKER-no}
+fi;
+echo "$as_me:5941: result: $with_broken_linker" >&5
+echo "${ECHO_T}$with_broken_linker" >&6
BROKEN_LINKER=0
if test "$with_broken_linker" = yes ; then
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define BROKEN_LINKER 1
EOF
BROKEN_LINKER=1
-elif test $DFT_LWR_MODEL = shared ; then
+elif test "$DFT_LWR_MODEL" = shared ; then
case $cf_cv_system_name in #(vi
cygwin*)
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define BROKEN_LINKER 1
EOF
@@ -3602,10 +5962,1768 @@ EOF
esac
fi
+### use option --enable-bsdpad to have tputs process BSD-style prefix padding
+echo "$as_me:5966: 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.
+if test "${enable_bsdpad+set}" = set; then
+ enableval="$enable_bsdpad"
+ with_bsdpad=$enableval
+else
+ with_bsdpad=no
+fi;
+echo "$as_me:5976: result: $with_bsdpad" >&5
+echo "${ECHO_T}$with_bsdpad" >&6
+test "$with_bsdpad" = yes && cat >>confdefs.h <<\EOF
+#define BSD_TPUTS 1
+EOF
+
+### use option --enable-widec to turn on use of wide-character support
+NCURSES_CH_T=chtype
+NCURSES_LIBUTF8=0
+
+NEED_WCHAR_H=0
+NCURSES_MBSTATE_T=0
+NCURSES_WCHAR_T=0
+NCURSES_WINT_T=0
+
+# Check to define _XOPEN_SOURCE "automatically"
+
+echo "$as_me:5993: checking if $CC -U and -D options work together" >&5
+echo $ECHO_N "checking if $CC -U and -D options work together... $ECHO_C" >&6
+if test "${cf_cv_cc_u_d_options+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="-UU_D_OPTIONS -DU_D_OPTIONS -DD_U_OPTIONS -UD_U_OPTIONS"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6002 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+#ifndef U_D_OPTIONS
+make an undefined-error
+#endif
+#ifdef D_U_OPTIONS
+make a defined-error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6021: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6024: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6027: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6030: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_cc_u_d_options=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cf_cv_cc_u_d_options=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$cf_save_CPPFLAGS"
+
+fi
+echo "$as_me:6044: result: $cf_cv_cc_u_d_options" >&5
+echo "${ECHO_T}$cf_cv_cc_u_d_options" >&6
+
+cf_XOPEN_SOURCE=500
+cf_POSIX_C_SOURCE=199506L
+
+case $host_os in #(vi
+aix[45]*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_ALL_SOURCE"
+ ;;
+freebsd*) #(vi
+ # 5.x headers associate
+ # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L
+ # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L
+ cf_POSIX_C_SOURCE=200112L
+ cf_XOPEN_SOURCE=600
+ CPPFLAGS="$CPPFLAGS -D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
+ ;;
+hpux*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE"
+ ;;
+irix[56].*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_SGI_SOURCE"
+ ;;
+linux*|gnu*) #(vi
+
+echo "$as_me:6070: 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 6077 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6092: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6095: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6098: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6101: \$? = $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 6110 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifdef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6125: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6128: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6131: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6134: \$? = $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_cv_gnu_source=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$cf_save"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:6149: 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"
+
+ ;;
+mirbsd*) #(vi
+ # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <arpa/inet.h>
+ ;;
+netbsd*) #(vi
+ # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+ ;;
+openbsd*) #(vi
+ # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
+ ;;
+osf[45]*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_OSF_SOURCE"
+ ;;
+nto-qnx*) #(vi
+ CPPFLAGS="$CPPFLAGS -D_QNX_SOURCE"
+ ;;
+sco*) #(vi
+ # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
+ ;;
+solaris*) #(vi
+ CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__"
+ ;;
+*)
+ echo "$as_me:6176: 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 6183 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6198: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6201: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6204: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6207: \$? = $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"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6216 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifdef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6231: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6234: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6237: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6240: \$? = $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_cv_xopen_source=$cf_XOPEN_SOURCE
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CPPFLAGS="$cf_save"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:6255: result: $cf_cv_xopen_source" >&5
+echo "${ECHO_T}$cf_cv_xopen_source" >&6
+ if test "$cf_cv_xopen_source" != no ; then
+
+# remove _XOPEN_SOURCE symbol from $CFLAGS
+CFLAGS=`echo "$CFLAGS" | \
+ sed -e 's/-[UD]_XOPEN_SOURCE\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]_XOPEN_SOURCE\(=[^ ]*\)\?$//g'`
+
+# remove _XOPEN_SOURCE symbol from $CPPFLAGS
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]_XOPEN_SOURCE\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]_XOPEN_SOURCE\(=[^ ]*\)\?$//g'`
+
+ test "$cf_cv_cc_u_d_options" = yes && \
+ CPPFLAGS="$CPPFLAGS -U_XOPEN_SOURCE"
+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_cv_xopen_source"
+ fi
+
+cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
+
+cf_save_CFLAGS="$CFLAGS"
+cf_save_CPPFLAGS="$CPPFLAGS"
+
+# remove _POSIX_C_SOURCE symbol from $cf_save_CFLAGS
+cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \
+ sed -e 's/-[UD]_POSIX_C_SOURCE\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]_POSIX_C_SOURCE\(=[^ ]*\)\?$//g'`
+
+# remove _POSIX_C_SOURCE symbol from $cf_save_CPPFLAGS
+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:6289: 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 "(line 6295) testing if the symbol is already defined go no further ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6298 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6313: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6316: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6319: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6322: \$? = $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
+ cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE"
+ ;;
+ .2) #(vi
+ 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 6343 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifdef _POSIX_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6358: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6361: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6364: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6367: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE"
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ fi
+
+echo "(line 6378) testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+
+echo "(line 6383) testing if the second compile does not leave our definition intact error ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 6386 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int
+main ()
+{
+
+#ifndef _POSIX_C_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6401: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6404: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6407: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6410: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_posix_c_source=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ CPPFLAGS="$cf_save_CPPFLAGS"
+
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:6426: 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
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS"
+ if test "$cf_cv_cc_u_d_options" = yes ; then
+ cf_temp_posix_c_source=`echo "$cf_cv_posix_c_source" | \
+ sed -e 's/-D/-U/g' -e 's/=[^ ]*//g'`
+ CPPFLAGS="$CPPFLAGS $cf_temp_posix_c_source"
+ fi
+ CPPFLAGS="$CPPFLAGS $cf_cv_posix_c_source"
+fi
+
+ ;;
+esac
+
+# Work around breakage on OS X
+
+echo "$as_me:6445: 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 6452 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <sys/signal.h>
+
+int
+main ()
+{
+int x = SIGWINCH
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6467: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6470: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6473: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6476: \$? = $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 6483 "configure"
+#include "confdefs.h"
+
+#undef _XOPEN_SOURCE
+#undef _POSIX_SOURCE
+#undef _POSIX_C_SOURCE
+#include <sys/types.h>
+#include <sys/signal.h>
+
+int
+main ()
+{
+int x = SIGWINCH
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6501: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6504: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6507: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6510: \$? = $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:6524: 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:6528: 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 6539 "configure"
+#include "confdefs.h"
+
+#undef _XOPEN_SOURCE
+#undef _POSIX_SOURCE
+#undef _POSIX_C_SOURCE
+#include <sys/types.h>
+#include <sys/signal.h>
+
+int
+main ()
+{
+
+#if SIGWINCH != $cf_sigwinch
+make an error
+#endif
+int x = SIGWINCH
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6561: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6564: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6567: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6570: \$? = $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:6584: 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:6594: 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 6600 "configure"
+#include "confdefs.h"
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:6612: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:6615: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:6618: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6621: \$? = $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:6632: 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
+
+# use these variables to work around a defect in gcc's fixincludes.
+NCURSES_OK_WCHAR_T=
+NCURSES_OK_WINT_T=
+
+echo "$as_me:6646: 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.
+if test "${enable_widec+set}" = set; then
+ enableval="$enable_widec"
+ with_widec=$enableval
+else
+ with_widec=no
+fi;
+echo "$as_me:6656: result: $with_widec" >&5
+echo "${ECHO_T}$with_widec" >&6
+if test "$with_widec" = yes ; then
+ LIB_SUFFIX="w${LIB_SUFFIX}"
+ cat >>confdefs.h <<\EOF
+#define USE_WIDEC_SUPPORT 1
+EOF
+
+echo "$as_me:6664: 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 6667 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE_EXTENDED
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6683: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6686: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6689: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6692: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_result=no
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_result=yes
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:6701: 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:6707: 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 6710 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+
+int
+main ()
+{
+
+#if _XOPEN_SOURCE_EXTENDED- < 0
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6726: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6729: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6732: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6735: \$? = $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:6744: result: $cf_result" >&5
+echo "${ECHO_T}$cf_result" >&6
+ if test "$cf_result" = no ; then
+ # perhaps we can override it - try...
+ CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED="
+ fi
+fi
+
+ # with_overwrite=no
+ NCURSES_CH_T=cchar_t
+
+for ac_func in putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:6758: 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 6764 "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. */
+#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) ();
+
+int
+main ()
+{
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
+choke me
+#else
+f = $ac_func;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:6795: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:6798: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:6801: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6804: \$? = $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:6814: 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
+
+ if test "$ac_cv_func_putwc" != yes ; then
+
+echo "$as_me:6826: checking for putwc in libutf8" >&5
+echo $ECHO_N "checking for putwc in libutf8... $ECHO_C" >&6
+if test "${cf_cv_libutf8+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cf_save_LIBS="$LIBS"
+ LIBS="-lutf8 $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 6835 "configure"
+#include "confdefs.h"
+
+#include <libutf8.h>
+int
+main ()
+{
+putwc(0,0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:6848: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:6851: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:6854: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6857: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_libutf8=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_libutf8=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ LIBS="$cf_save_LIBS"
+
+fi
+echo "$as_me:6869: result: $cf_cv_libutf8" >&5
+echo "${ECHO_T}$cf_cv_libutf8" >&6
+
+if test "$cf_cv_libutf8" = yes ; then
+ cat >>confdefs.h <<\EOF
+#define HAVE_LIBUTF8_H 1
+EOF
+
+ LIBS="-lutf8 $LIBS"
+fi
+
+ if test "$cf_cv_libutf8" = yes ; then
+ NCURSES_LIBUTF8=1
+ fi
+ fi
+
+# This is needed on Tru64 5.0 to declare mbstate_t
+echo "$as_me:6886: 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 6893 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#ifdef HAVE_LIBUTF8_H
+#include <libutf8.h>
+#endif
+int
+main ()
+{
+mbstate_t state
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6911: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6914: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6917: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6920: \$? = $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 6927 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <wchar.h>
+#ifdef HAVE_LIBUTF8_H
+#include <libutf8.h>
+#endif
+int
+main ()
+{
+mbstate_t value
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:6946: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6949: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:6952: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:6955: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_mbstate_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_mbstate_t=unknown
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:6967: result: $cf_cv_mbstate_t" >&5
+echo "${ECHO_T}$cf_cv_mbstate_t" >&6
+
+if test "$cf_cv_mbstate_t" = yes ; then
+ cat >>confdefs.h <<\EOF
+#define NEED_WCHAR_H 1
+EOF
+
+ NEED_WCHAR_H=1
+fi
+
+# if we do not find mbstate_t in either place, use substitution to provide a fallback.
+if test "$cf_cv_mbstate_t" = unknown ; then
+ NCURSES_MBSTATE_T=1
+fi
+
+# This is needed on Tru64 5.0 to declare wchar_t
+echo "$as_me:6984: 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 6991 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#ifdef HAVE_LIBUTF8_H
+#include <libutf8.h>
+#endif
+int
+main ()
+{
+wchar_t state
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7009: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7012: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7015: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7018: \$? = $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 7025 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <wchar.h>
+#ifdef HAVE_LIBUTF8_H
+#include <libutf8.h>
+#endif
+int
+main ()
+{
+wchar_t value
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7044: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7047: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7050: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7053: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_wchar_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_wchar_t=unknown
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:7065: result: $cf_cv_wchar_t" >&5
+echo "${ECHO_T}$cf_cv_wchar_t" >&6
+
+if test "$cf_cv_wchar_t" = yes ; then
+ cat >>confdefs.h <<\EOF
+#define NEED_WCHAR_H 1
+EOF
+
+ NEED_WCHAR_H=1
+fi
+
+# if we do not find wchar_t in either place, use substitution to provide a fallback.
+if test "$cf_cv_wchar_t" = unknown ; then
+ NCURSES_WCHAR_T=1
+fi
+
+# if we find wchar_t in either place, use substitution to provide a fallback.
+if test "$cf_cv_wchar_t" != unknown ; then
+ NCURSES_OK_WCHAR_T=1
+fi
+
+# This is needed on Tru64 5.0 to declare wint_t
+echo "$as_me:7087: 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 7094 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#ifdef HAVE_LIBUTF8_H
+#include <libutf8.h>
+#endif
+int
+main ()
+{
+wint_t state
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7112: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7115: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7118: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7121: \$? = $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 7128 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <wchar.h>
+#ifdef HAVE_LIBUTF8_H
+#include <libutf8.h>
+#endif
+int
+main ()
+{
+wint_t value
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7147: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7150: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7153: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7156: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_wint_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_wint_t=unknown
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:7168: result: $cf_cv_wint_t" >&5
+echo "${ECHO_T}$cf_cv_wint_t" >&6
+
+if test "$cf_cv_wint_t" = yes ; then
+ cat >>confdefs.h <<\EOF
+#define NEED_WCHAR_H 1
+EOF
+
+ NEED_WCHAR_H=1
+fi
+
+# if we do not find wint_t in either place, use substitution to provide a fallback.
+if test "$cf_cv_wint_t" = unknown ; then
+ NCURSES_WINT_T=1
+fi
+
+# if we find wint_t in either place, use substitution to provide a fallback.
+if test "$cf_cv_wint_t" != unknown ; then
+ NCURSES_OK_WINT_T=1
+fi
+
+ if test "$NCURSES_MBSTATE_T" != 0; then
+ cat >>confdefs.h <<\EOF
+#define NEED_MBSTATE_T_DEF 1
+EOF
+
+ fi
+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:7207: 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.
+if test "${enable_lp64+set}" = set; then
+ enableval="$enable_lp64"
+ with_lp64=$enableval
+else
+ with_lp64=$default_with_lp64
+fi;
+echo "$as_me:7217: result: $with_lp64" >&5
+echo "${ECHO_T}$with_lp64" >&6
+
+if test "$with_lp64" = yes ; then
+ cf_cv_enable_lp64=1
+else
+ cf_cv_enable_lp64=0
+fi
+
+# Check whether --enable-largefile or --disable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+ enableval="$enable_largefile"
+
+fi;
+if test "$enable_largefile" != no; then
+
+ echo "$as_me:7233: 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
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # 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 7245 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7265: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7268: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7271: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7274: \$? = $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
+ CC="$CC -n32"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7284: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7287: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7290: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7293: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_largefile_CC=' -n32'; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+echo "$as_me:7307: 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:7313: 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
+else
+ while :; do
+ ac_cv_sys_file_offset_bits=no
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7321 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7341: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7344: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7347: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7350: \$? = $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
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7359 "configure"
+#include "confdefs.h"
+#define _FILE_OFFSET_BITS 64
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7380: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7383: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7386: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7389: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_file_offset_bits=64; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ break
+done
+fi
+echo "$as_me:7400: 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
+
+cat >>confdefs.h <<EOF
+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
+EOF
+
+fi
+rm -f conftest*
+ echo "$as_me:7410: 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
+else
+ while :; do
+ ac_cv_sys_large_files=no
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7418 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7438: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7441: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7444: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7447: \$? = $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
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7456 "configure"
+#include "confdefs.h"
+#define _LARGE_FILES 1
+#include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7477: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7480: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7483: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7486: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_large_files=1; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ break
+done
+fi
+echo "$as_me:7497: 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
+
+cat >>confdefs.h <<EOF
+#define _LARGE_FILES $ac_cv_sys_large_files
+EOF
+
+fi
+rm -f conftest*
+fi
+
+ if test "$enable_largefile" != no ; then
+ echo "$as_me:7510: 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
+else
+ while :; do
+ ac_cv_sys_largefile_source=no
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7518 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main ()
+{
+return !fseeko;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7530: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7533: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7536: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7539: \$? = $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
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7548 "configure"
+#include "confdefs.h"
+#define _LARGEFILE_SOURCE 1
+#include <stdio.h>
+int
+main ()
+{
+return !fseeko;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7561: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7564: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7567: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7570: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sys_largefile_source=1; break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ break
+done
+fi
+echo "$as_me:7581: 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
+
+cat >>confdefs.h <<EOF
+#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source
+EOF
+
+fi
+rm -f 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:7595: 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 7601 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int
+main ()
+{
+return fseeko && fseeko (stdin, 0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:7613: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:7616: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:7619: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7622: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_fseeko=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_fseeko=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:7632: result: $ac_cv_func_fseeko" >&5
+echo "${ECHO_T}$ac_cv_func_fseeko" >&6
+if test $ac_cv_func_fseeko = yes; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_FSEEKO 1
+EOF
+
+fi
+
+ # Normally we would collect these definitions in the config.h,
+ # but (like _XOPEN_SOURCE), some environments rely on having these
+ # defined before any of the system headers are included. Another
+ # case comes up with C++, e.g., on AIX the compiler compiles the
+ # 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 "
+
+ echo "$as_me:7652: 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 7659 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <dirent.h>
+
+int
+main ()
+{
+
+ /* if transitional largefile support is setup, this is true */
+ extern struct dirent64 * readdir(DIR *);
+ struct dirent64 *x = readdir((DIR *)0);
+ struct dirent *y = readdir((DIR *)0);
+ int z = x - y;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:7680: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7683: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7686: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7689: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_struct_dirent64=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_struct_dirent64=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+echo "$as_me:7700: 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
+
+### use option --disable-tparm-varargs to make tparm() conform to X/Open
+echo "$as_me:7709: 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.
+if test "${enable_tparm_varargs+set}" = set; then
+ enableval="$enable_tparm_varargs"
+ with_tparm_varargs=$enableval
+else
+ with_tparm_varargs=yes
+fi;
+echo "$as_me:7719: result: $with_tparm_varargs" >&5
+echo "${ECHO_T}$with_tparm_varargs" >&6
+NCURSES_TPARM_VARARGS=0
+test "$with_tparm_varargs" = yes && NCURSES_TPARM_VARARGS=1
### use option --with-bool to override bool's type
-echo $ac_n "checking for type of bool""... $ac_c" 1>&6
-echo "configure:3609: checking for type of bool" >&5
+echo "$as_me:7725: 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.
if test "${with_bool+set}" = set; then
@@ -3613,14 +7731,41 @@ if test "${with_bool+set}" = set; then
NCURSES_BOOL="$withval"
else
NCURSES_BOOL=auto
-fi
+fi;
+echo "$as_me:7735: result: $NCURSES_BOOL" >&5
+echo "${ECHO_T}$NCURSES_BOOL" >&6
+
+echo "$as_me:7738: 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.
+if test "${with_caps+set}" = set; then
+ withval="$with_caps"
+ TERMINFO_CAPS=Caps.$withval
+else
+ TERMINFO_CAPS=Caps
+fi;
+test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps
+echo "$as_me:7749: result: $TERMINFO_CAPS" >&5
+echo "${ECHO_T}$TERMINFO_CAPS" >&6
-echo "$ac_t""$NCURSES_BOOL" 1>&6
+### use option --with-chtype to override chtype's type
+echo "$as_me:7753: 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.
+if test "${with_chtype+set}" = set; then
+ withval="$with_chtype"
+ NCURSES_CHTYPE="$withval"
+else
+ NCURSES_CHTYPE=auto
+fi;
+echo "$as_me:7763: result: $NCURSES_CHTYPE" >&5
+echo "${ECHO_T}$NCURSES_CHTYPE" >&6
### use option --with-ospeed to override ospeed's type
-echo $ac_n "checking for type of ospeed""... $ac_c" 1>&6
-echo "configure:3624: checking for type of ospeed" >&5
+echo "$as_me:7767: 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.
if test "${with_ospeed+set}" = set; then
@@ -3628,32 +7773,27 @@ if test "${with_ospeed+set}" = set; then
NCURSES_OSPEED="$withval"
else
NCURSES_OSPEED=short
-fi
+fi;
+echo "$as_me:7777: result: $NCURSES_OSPEED" >&5
+echo "${ECHO_T}$NCURSES_OSPEED" >&6
-echo "$ac_t""$NCURSES_OSPEED" 1>&6
+### use option --with-mmask-t to override mmask_t's type
+echo "$as_me:7781: checking for type of mmask_t" >&5
+echo $ECHO_N "checking for type of mmask_t... $ECHO_C" >&6
-
-### use option --enable-bsdpad to have tputs process BSD-style prefix padding
-echo $ac_n "checking if tputs should process BSD-style prefix padding""... $ac_c" 1>&6
-echo "configure:3639: checking if tputs should process BSD-style prefix padding" >&5
-
-# Check whether --enable-bsdpad or --disable-bsdpad was given.
-if test "${enable_bsdpad+set}" = set; then
- enableval="$enable_bsdpad"
- with_bsdpad=$enableval
+# Check whether --with-mmask-t or --without-mmask-t was given.
+if test "${with_mmask_t+set}" = set; then
+ withval="$with_mmask_t"
+ NCURSES_MMASK_T="$withval"
else
- with_bsdpad=no
-fi
-
-echo "$ac_t""$with_bsdpad" 1>&6
-test "$with_bsdpad" = yes && cat >> confdefs.h <<\EOF
-#define BSD_TPUTS 1
-EOF
-
+ NCURSES_MMASK_T=auto
+fi;
+echo "$as_me:7791: result: $NCURSES_MMASK_T" >&5
+echo "${ECHO_T}$NCURSES_MMASK_T" >&6
### Enable compiling-in rcs id's
-echo $ac_n "checking if RCS identifiers should be compiled-in""... $ac_c" 1>&6
-echo "configure:3657: checking if RCS identifiers should be compiled-in" >&5
+echo "$as_me:7795: 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.
if test "${with_rcs_ids+set}" = set; then
@@ -3661,22 +7801,17 @@ if test "${with_rcs_ids+set}" = set; then
with_rcs_ids=$withval
else
with_rcs_ids=no
-fi
-
-echo "$ac_t""$with_rcs_ids" 1>&6
-test "$with_rcs_ids" = yes && cat >> confdefs.h <<\EOF
+fi;
+echo "$as_me:7805: result: $with_rcs_ids" >&5
+echo "${ECHO_T}$with_rcs_ids" >&6
+test "$with_rcs_ids" = yes && cat >>confdefs.h <<\EOF
#define USE_RCS_IDS 1
EOF
-
###############################################################################
-
-
-
-echo $ac_n "checking format of man-pages""... $ac_c" 1>&6
-echo "configure:3679: checking format of man-pages" >&5
-
+echo "$as_me:7813: 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.
if test "${with_manpage_format+set}" = set; then
@@ -3684,51 +7819,95 @@ if test "${with_manpage_format+set}" = set; then
MANPAGE_FORMAT=$withval
else
MANPAGE_FORMAT=unknown
-fi
+fi;
+test -z "$MANPAGE_FORMAT" && MANPAGE_FORMAT=unknown
+MANPAGE_FORMAT=`echo "$MANPAGE_FORMAT" | sed -e 's/,/ /g'`
-case ".$MANPAGE_FORMAT" in
-.gzip|.compress|.BSDI|.normal|.formatted) # (vi
- ;;
-.unknown|.) # (vi
+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}${PATHSEP}"
- MANPAGE_FORMAT=unknown
for cf_dir in $MANPATH; do
test -z "$cf_dir" && cf_dir=/usr/man
- for cf_name in $cf_dir/*/date.[01]* $cf_dir/*/date
+ 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=gzip;;
- *.Z) MANPAGE_FORMAT=compress;;
- *.0) MANPAGE_FORMAT=BSDI,formatted;;
- *) MANPAGE_FORMAT=normal;;
- esac
- break
- fi
+ 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
- if test "$MANPAGE_FORMAT" != "unknown" ; then
+ # 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"
;;
-.*) # (vi
- echo "configure: warning: Unexpected manpage-format" 1>&2
+*)
+ 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
;;
esac
-echo "$ac_t""$MANPAGE_FORMAT" 1>&6
-
-
-echo $ac_n "checking for manpage renaming""... $ac_c" 1>&6
-echo "configure:3731: checking for manpage renaming" >&5
+echo "$as_me:7902: result: $MANPAGE_FORMAT" >&5
+echo "${ECHO_T}$MANPAGE_FORMAT" >&6
+if test -n "$cf_unknown" ; then
+ { echo "$as_me:7905: WARNING: Unexpected manpage-format $cf_unknown" >&5
+echo "$as_me: WARNING: Unexpected manpage-format $cf_unknown" >&2;}
+fi
+echo "$as_me:7909: 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.
if test "${with_manpage_renames+set}" = set; then
@@ -3736,8 +7915,7 @@ if test "${with_manpage_renames+set}" = set; then
MANPAGE_RENAMES=$withval
else
MANPAGE_RENAMES=yes
-fi
-
+fi;
case ".$MANPAGE_RENAMES" in #(vi
.no) #(vi
@@ -3756,7 +7934,9 @@ 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 "configure: error: not a filename: $MANPAGE_RENAMES" 1>&2; exit 1; }
+ { { echo "$as_me:7937: error: not a filename: $MANPAGE_RENAMES" >&5
+echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;}
+ { (exit 1); exit 1; }; }
fi
test ! -d man && mkdir man
@@ -3764,33 +7944,60 @@ if test "$MANPAGE_RENAMES" != no ; then
# 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 >man/edit_man.sed
+ sh $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed
fi
fi
-echo "$ac_t""$MANPAGE_RENAMES" 1>&6
+echo "$as_me:7951: result: $MANPAGE_RENAMES" >&5
+echo "${ECHO_T}$MANPAGE_RENAMES" >&6
+echo "$as_me:7954: 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.
+if test "${with_manpage_aliases+set}" = set; then
+ withval="$with_manpage_aliases"
+ MANPAGE_ALIASES=$withval
+else
+ MANPAGE_ALIASES=yes
+fi;
+echo "$as_me:7965: result: $MANPAGE_ALIASES" >&5
+echo "${ECHO_T}$MANPAGE_ALIASES" >&6
-echo $ac_n "checking for manpage symlinks""... $ac_c" 1>&6
-echo "configure:3777: checking for manpage symlinks" >&5
+if test "$LN_S" = "ln -s"; then
+ cf_use_symlinks=yes
+else
+ cf_use_symlinks=no
+fi
+MANPAGE_SYMLINKS=no
+if test "$MANPAGE_ALIASES" = yes ; then
+echo "$as_me:7976: 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.
if test "${with_manpage_symlinks+set}" = set; then
withval="$with_manpage_symlinks"
MANPAGE_SYMLINKS=$withval
else
- MANPAGE_SYMLINKS=yes
-fi
-
-
-echo "$ac_t""$MANPAGE_SYMLINKS" 1>&6
+ MANPAGE_SYMLINKS=$cf_use_symlinks
+fi;
+if test "$$cf_use_symlinks" = no; then
+if test "$MANPAGE_SYMLINKS" = yes ; then
+ { echo "$as_me:7989: WARNING: cannot make symlinks" >&5
+echo "$as_me: WARNING: cannot make symlinks" >&2;}
+ MANPAGE_SYMLINKS=no
+fi
+fi
-echo $ac_n "checking for manpage tbl""... $ac_c" 1>&6
-echo "configure:3793: checking for manpage tbl" >&5
+echo "$as_me:7995: result: $MANPAGE_SYMLINKS" >&5
+echo "${ECHO_T}$MANPAGE_SYMLINKS" >&6
+fi
+echo "$as_me:7999: 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.
if test "${with_manpage_tbl+set}" = set; then
@@ -3798,11 +8005,10 @@ if test "${with_manpage_tbl+set}" = set; then
MANPAGE_TBL=$withval
else
MANPAGE_TBL=no
-fi
-
-
-echo "$ac_t""$MANPAGE_TBL" 1>&6
+fi;
+echo "$as_me:8010: result: $MANPAGE_TBL" >&5
+echo "${ECHO_T}$MANPAGE_TBL" >&6
if test "$prefix" = "NONE" ; then
cf_prefix="$ac_default_prefix"
@@ -3811,202 +8017,265 @@ echo "$ac_t""$MANPAGE_TBL" 1>&6
fi
case "$MANPAGE_FORMAT" in # (vi
+ *catonly*) # (vi
+ cf_format=yes
+ cf_inboth=no
+ ;;
*formatted*) # (vi
- cf_subdir='$mandir/cat'
cf_format=yes
+ cf_inboth=yes
;;
*)
- cf_subdir='$mandir/man'
cf_format=no
+ cf_inboth=no
;;
esac
test ! -d man && mkdir man
-cat >man/edit_man.sh <<CF_EOF
+
+cf_so_strip=
+cf_compress=
+case "$MANPAGE_FORMAT" in #(vi
+*compress*) #(vi
+ cf_so_strip="Z"
+ cf_compress=compress
+ ;;
+*gzip*) #(vi
+ cf_so_strip="gz"
+ cf_compress=gzip
+ ;;
+esac
+
+cf_edit_man=./edit_man.sh
+
+cat >$cf_edit_man <<CF_EOF
#! /bin/sh
-# this script is generated by the configure-script
+# this script is generated by the configure-script CF_MAN_PAGES macro.
+
prefix="$cf_prefix"
datadir="$datadir"
+
+NCURSES_MAJOR="$NCURSES_MAJOR"
+NCURSES_MINOR="$NCURSES_MINOR"
+NCURSES_PATCH="$NCURSES_PATCH"
+
NCURSES_OSPEED="$NCURSES_OSPEED"
TERMINFO="$TERMINFO"
+
MKDIRS="sh `cd $srcdir && pwd`/mkinstalldirs"
+
INSTALL="$INSTALL"
INSTALL_DATA="$INSTALL_DATA"
+
transform="$program_transform_name"
TMP=\${TMPDIR-/tmp}/man\$\$
trap "rm -f \$TMP" 0 1 2 5 15
+form=\$1
+shift || exit 1
+
verb=\$1
-shift
+shift || exit 1
mandir=\$1
-shift
+shift || exit 1
srcdir=\$1
-shift
+top_srcdir=\$srcdir/..
+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 \$*
+ exit $?
+ fi
+ fi
+ cf_subdir=\$mandir/man
+ cf_tables=$MANPAGE_TBL
+else
+ cf_subdir=\$mandir/cat
+ cf_tables=yes
+fi
+# process the list of source-files
for i in \$* ; do
case \$i in #(vi
*.orig|*.rej) ;; #(vi
*.[0-9]*)
section=\`expr "\$i" : '.*\\.\\([0-9]\\)[xm]*'\`;
if test \$verb = installing ; then
- if test ! -d $cf_subdir\${section} ; then
- \$MKDIRS $cf_subdir\$section
+ if test ! -d \$cf_subdir\${section} ; then
+ \$MKDIRS \$cf_subdir\$section
fi
fi
aliases=
- source=\`basename \$i\`
- inalias=\$source
+ cf_source=\`basename \$i\`
+ inalias=\$cf_source
test ! -f \$inalias && inalias="\$srcdir/\$inalias"
if test ! -f \$inalias ; then
- echo .. skipped \$source
+ echo .. skipped \$cf_source
continue
fi
CF_EOF
-if test "$MANPAGE_SYMLINKS" = yes ; then
-cat >>man/edit_man.sh <<CF_EOF
- aliases=\`sed -f \$srcdir/manlinks.sed \$inalias | sort -u\`
+
+if test "$MANPAGE_ALIASES" != no ; then
+cat >>$cf_edit_man <<CF_EOF
+ aliases=\`sed -f \$top_srcdir/man/manlinks.sed \$inalias | sort -u\`
CF_EOF
fi
if test "$MANPAGE_RENAMES" = no ; then
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
# perform program transformations for section 1 man pages
if test \$section = 1 ; then
- target=$cf_subdir\${section}/\`echo \$source|sed "\${transform}"\`
+ cf_target=\$cf_subdir\${section}/\`echo \$cf_source|sed "\${transform}"\`
else
- target=$cf_subdir\${section}/\$source
+ cf_target=\$cf_subdir\${section}/\$cf_source
fi
CF_EOF
else
-cat >>man/edit_man.sh <<CF_EOF
- target=\`grep "^\$source" $MANPAGE_RENAMES | $AWK '{print \$2}'\`
- if test -z "\$target" ; then
- echo '? missing rename for '\$source
- target="\$source"
+cat >>$cf_edit_man <<CF_EOF
+ cf_target=\`grep "^\$cf_source" $MANPAGE_RENAMES | $AWK '{print \$2}'\`
+ if test -z "\$cf_target" ; then
+ echo '? missing rename for '\$cf_source
+ cf_target="\$cf_source"
fi
- target="$cf_subdir\${section}/\${target}"
+ cf_target="\$cf_subdir\${section}/\${cf_target}"
CF_EOF
fi
# replace variables in man page
-
- for cf_name in captoinfo clear infocmp infotocap tic toe tput
+
+ for cf_name in captoinfo clear infocmp infotocap tic toe tput
do
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
prog_$cf_name=\`echo $cf_name|sed "\${transform}"\`
CF_EOF
done
-
-cat >>man/edit_man.sh <<CF_EOF
+
+cat >>$cf_edit_man <<CF_EOF
sed -e "s,@DATADIR@,\$datadir," \\
-e "s,@TERMINFO@,\$TERMINFO," \\
+ -e "s,@NCURSES_MAJOR@,\$NCURSES_MAJOR," \\
+ -e "s,@NCURSES_MINOR@,\$NCURSES_MINOR," \\
+ -e "s,@NCURSES_PATCH@,\$NCURSES_PATCH," \\
-e "s,@NCURSES_OSPEED@,\$NCURSES_OSPEED," \\
CF_EOF
-
- for cf_name in captoinfo clear infocmp infotocap tic toe tput
+
+ for cf_name in captoinfo clear infocmp infotocap tic toe tput
do
cf_NAME=`echo "$cf_name" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
-e "s,@$cf_NAME@,\$prog_$cf_name," \\
CF_EOF
done
-
+
if test -f $MANPAGE_RENAMES ; then
-cat >>man/edit_man.sh <<CF_EOF
- < \$i | sed -f edit_man.sed >\$TMP
+cat >>$cf_edit_man <<CF_EOF
+ < \$i | sed -f `pwd`/edit_man.sed >\$TMP
CF_EOF
else
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
< \$i >\$TMP
CF_EOF
fi
-if test $MANPAGE_TBL = yes ; then
-cat >>man/edit_man.sh <<CF_EOF
+
+cat >>$cf_edit_man <<CF_EOF
+if test \$cf_tables = yes ; then
tbl \$TMP >\$TMP.out
mv \$TMP.out \$TMP
-CF_EOF
fi
+CF_EOF
+
if test $with_curses_h != yes ; then
-cat >>man/edit_man.sh <<CF_EOF
+cat >>$cf_edit_man <<CF_EOF
sed -e "/\#[ ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out
mv \$TMP.out \$TMP
CF_EOF
fi
-if test $cf_format = yes ; then
-cat >>man/edit_man.sh <<CF_EOF
- nroff -man \$TMP >\$TMP.out
- mv \$TMP.out \$TMP
-CF_EOF
-fi
-case "$MANPAGE_FORMAT" in #(vi
-*compress*) #(vi
-cat >>man/edit_man.sh <<CF_EOF
- if test \$verb = installing ; then
- if ( compress -f \$TMP )
- then
- mv \$TMP.Z \$TMP
- fi
+
+cat >>$cf_edit_man <<CF_EOF
+ if test \$form = format ; then
+ nroff -man \$TMP >\$TMP.out
+ mv \$TMP.out \$TMP
fi
- target="\$target.Z"
CF_EOF
- ;;
-*gzip*) #(vi
-cat >>man/edit_man.sh <<CF_EOF
+
+if test -n "$cf_compress" ; then
+cat >>$cf_edit_man <<CF_EOF
if test \$verb = installing ; then
- if ( gzip -f \$TMP )
+ if ( $cf_compress -f \$TMP )
then
- mv \$TMP.gz \$TMP
+ mv \$TMP.$cf_so_strip \$TMP
fi
fi
- target="\$target.gz"
+ cf_target="\$cf_target.$cf_so_strip"
CF_EOF
- ;;
+fi
+
+case "$MANPAGE_FORMAT" in #(vi
*BSDI*)
-cat >>man/edit_man.sh <<CF_EOF
- # BSDI installs only .0 suffixes in the cat directories
- target="\`echo \$target|sed -e 's/\.[1-9]\+.\?/.0/'\`"
+cat >>$cf_edit_man <<CF_EOF
+ if test \$form = format ; then
+ # BSDI installs only .0 suffixes in the cat directories
+ cf_target="\`echo \$cf_target|sed -e 's/\.[1-9]\+[a-z]*/.0/'\`"
+ fi
CF_EOF
;;
esac
-cat >>man/edit_man.sh <<CF_EOF
- suffix=\`basename \$target | sed -e 's/^[^.]*//'\`
+
+cat >>$cf_edit_man <<CF_EOF
+ suffix=\`basename \$cf_target | sed -e 's%^[^.]*%%'\`
if test \$verb = installing ; then
- echo \$verb \$target
- \$INSTALL_DATA \$TMP \$target
+ echo \$verb \$cf_target
+ \$INSTALL_DATA \$TMP \$cf_target
test -n "\$aliases" && (
- cd $cf_subdir\${section} && (
- target=\`basename \$target\`
+ cd \$cf_subdir\${section} && (
+ cf_source=\`echo \$cf_target |sed -e 's%^.*/\([^/][^/]*/[^/][^/]*$\)%\1%'\`
+ test -n "$cf_so_strip" && cf_source=\`echo \$cf_source |sed -e 's%\.$cf_so_strip\$%%'\`
+ cf_target=\`basename \$cf_target\`
for cf_alias in \$aliases
do
if test \$section = 1 ; then
cf_alias=\`echo \$cf_alias|sed "\${transform}"\`
fi
- if test -f \$cf_alias\${suffix} ; then
- if ( cmp -s \$target \$cf_alias\${suffix} )
- then
- :
- else
- echo .. \$verb alias \$cf_alias\${suffix}
- rm -f \$cf_alias\${suffix}
- $LN_S \$target \$cf_alias\${suffix}
+ if test "$MANPAGE_SYMLINKS" = yes ; then
+ if test -f \$cf_alias\${suffix} ; then
+ if ( cmp -s \$cf_target \$cf_alias\${suffix} )
+ then
+ continue
+ fi
fi
- else
echo .. \$verb alias \$cf_alias\${suffix}
rm -f \$cf_alias\${suffix}
- $LN_S \$target \$cf_alias\${suffix}
+ $LN_S \$cf_target \$cf_alias\${suffix}
+ elif test "\$cf_target" != "\$cf_alias\${suffix}" ; then
+ echo ".so \$cf_source" >\$TMP
+CF_EOF
+if test -n "$cf_compress" ; then
+cat >>$cf_edit_man <<CF_EOF
+ if test -n "$cf_so_strip" ; then
+ $cf_compress -f \$TMP
+ mv \$TMP.$cf_so_strip \$TMP
+ fi
+CF_EOF
+fi
+cat >>$cf_edit_man <<CF_EOF
+ echo .. \$verb alias \$cf_alias\${suffix}
+ rm -f \$cf_alias\${suffix}
+ \$INSTALL_DATA \$TMP \$cf_alias\${suffix}
fi
done
)
)
elif test \$verb = removing ; then
- echo \$verb \$target
- rm -f \$target
+ echo \$verb \$cf_target
+ rm -f \$cf_target
test -n "\$aliases" && (
- cd $cf_subdir\${section} && (
+ cd \$cf_subdir\${section} && (
for cf_alias in \$aliases
do
if test \$section = 1 ; then
@@ -4025,18 +8294,22 @@ cat >>man/edit_man.sh <<CF_EOF
;;
esac
done
-exit 0
-CF_EOF
-chmod 755 man/edit_man.sh
+if test $cf_inboth = yes ; then
+if test \$form != format ; then
+ sh \$0 format \$verb \$mandir \$srcdir \$*
+fi
+fi
+exit 0
+CF_EOF
+chmod 755 $cf_edit_man
###############################################################################
-
### Note that some functions (such as const) are normally disabled anyway.
-echo $ac_n "checking if you want to build with function extensions""... $ac_c" 1>&6
-echo "configure:4040: checking if you want to build with function extensions" >&5
+echo "$as_me:8311: 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.
if test "${enable_ext_funcs+set}" = set; then
@@ -4044,32 +8317,36 @@ if test "${enable_ext_funcs+set}" = set; then
with_ext_funcs=$enableval
else
with_ext_funcs=yes
-fi
-
-echo "$ac_t""$with_ext_funcs" 1>&6
+fi;
+echo "$as_me:8321: result: $with_ext_funcs" >&5
+echo "${ECHO_T}$with_ext_funcs" >&6
if test "$with_ext_funcs" = yes ; then
NCURSES_EXT_FUNCS=1
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define HAVE_CURSES_VERSION 1
EOF
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define HAVE_HAS_KEY 1
EOF
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define HAVE_RESIZETERM 1
EOF
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
+#define HAVE_RESIZE_TERM 1
+EOF
+
+ cat >>confdefs.h <<\EOF
#define HAVE_USE_DEFAULT_COLORS 1
EOF
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define HAVE_WRESIZE 1
EOF
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define NCURSES_EXT_FUNCS 1
EOF
@@ -4077,10 +8354,9 @@ else
NCURSES_EXT_FUNCS=0
fi
-
### use option --enable-const to turn on use of const beyond that in XSI.
-echo $ac_n "checking for extended use of const keyword""... $ac_c" 1>&6
-echo "configure:4084: checking for extended use of const keyword" >&5
+echo "$as_me:8358: 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.
if test "${enable_const+set}" = set; then
@@ -4088,17 +8364,16 @@ if test "${enable_const+set}" = set; then
with_ext_const=$enableval
else
with_ext_const=no
-fi
-
-echo "$ac_t""$with_ext_const" 1>&6
+fi;
+echo "$as_me:8368: result: $with_ext_const" >&5
+echo "${ECHO_T}$with_ext_const" >&6
NCURSES_CONST='/*nothing*/'
if test "$with_ext_const" = yes ; then
NCURSES_CONST=const
fi
-
-echo $ac_n "checking if you want \$NCURSES_NO_PADDING code""... $ac_c" 1>&6
-echo "configure:4102: checking if you want \$NCURSES_NO_PADDING code" >&5
+echo "$as_me:8375: 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.
if test "${enable_no_padding+set}" = set; then
@@ -4106,17 +8381,457 @@ if test "${enable_no_padding+set}" = set; then
with_no_padding=$enableval
else
with_no_padding=$with_ext_funcs
+fi;
+echo "$as_me:8385: result: $with_no_padding" >&5
+echo "${ECHO_T}$with_no_padding" >&6
+test "$with_no_padding" = yes && cat >>confdefs.h <<\EOF
+#define NCURSES_NO_PADDING 1
+EOF
+
+echo "$as_me:8391: 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 8397 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+_ACEOF
+if { (eval echo "$as_me:8405: \"$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:8411: \$? = $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
-echo "$ac_t""$with_no_padding" 1>&6
-test "$with_no_padding" = yes && cat >> confdefs.h <<\EOF
-#define NCURSES_NO_PADDING 1
+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 8433 "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 -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+#line 8451 "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 -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 8472 "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:8498: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:8501: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:8503: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8506: \$? = $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:8519: 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:8535: 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 8541 "configure"
+#include "confdefs.h"
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:8547: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8550: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8553: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8556: \$? = $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:8566: 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:8576: 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 8582 "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:8597: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8600: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8603: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8606: \$? = $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:8616: result: $ac_cv_type_signed_char" >&5
+echo "${ECHO_T}$ac_cv_type_signed_char" >&6
+
+echo "$as_me:8619: 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 8628 "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:8640: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8643: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8646: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8649: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 8654 "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:8666: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8669: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8672: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8675: \$? = $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 8691 "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:8703: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8706: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8709: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8712: \$? = $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 8728 "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:8740: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8743: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8746: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8749: \$? = $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:8762: 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 8767 "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:8783: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:8786: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:8788: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8791: \$? = $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:8807: 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:8818: 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:8828: result: $with_signed_char" >&5
+echo "${ECHO_T}$with_signed_char" >&6
+test "$with_signed_char" != yes && NCURSES_SBOOL="char"
### use option --enable-sigwinch to turn on use of SIGWINCH logic
-echo $ac_n "checking if you want SIGWINCH handler""... $ac_c" 1>&6
-echo "configure:4120: checking if you want SIGWINCH handler" >&5
+echo "$as_me:8833: 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.
if test "${enable_sigwinch+set}" = set; then
@@ -4124,17 +8839,16 @@ if test "${enable_sigwinch+set}" = set; then
with_sigwinch=$enableval
else
with_sigwinch=$with_ext_funcs
-fi
-
-echo "$ac_t""$with_sigwinch" 1>&6
-test "$with_sigwinch" = yes && cat >> confdefs.h <<\EOF
+fi;
+echo "$as_me:8843: result: $with_sigwinch" >&5
+echo "${ECHO_T}$with_sigwinch" >&6
+test "$with_sigwinch" = yes && cat >>confdefs.h <<\EOF
#define USE_SIGWINCH 1
EOF
-
### use option --enable-tcap-names to allow user to define new capabilities
-echo $ac_n "checking if you want user-definable terminal capabilities like termcap""... $ac_c" 1>&6
-echo "configure:4138: checking if you want user-definable terminal capabilities like termcap" >&5
+echo "$as_me:8850: 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.
if test "${enable_tcap_names+set}" = set; then
@@ -4142,18 +8856,17 @@ if test "${enable_tcap_names+set}" = set; then
with_tcap_names=$enableval
else
with_tcap_names=$with_ext_funcs
-fi
-
-echo "$ac_t""$with_tcap_names" 1>&6
+fi;
+echo "$as_me:8860: result: $with_tcap_names" >&5
+echo "${ECHO_T}$with_tcap_names" >&6
NCURSES_XNAMES=0
test "$with_tcap_names" = yes && NCURSES_XNAMES=1
-
###############################################################################
# These options are relatively safe to experiment with.
-echo $ac_n "checking if you want all development code""... $ac_c" 1>&6
-echo "configure:4157: checking if you want all development code" >&5
+echo "$as_me:8868: 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
@@ -4161,69 +8874,49 @@ if test "${with_develop+set}" = set; then
with_develop=$withval
else
with_develop=no
-fi
-
-echo "$ac_t""$with_develop" 1>&6
+fi;
+echo "$as_me:8878: result: $with_develop" >&5
+echo "${ECHO_T}$with_develop" >&6
### use option --enable-hard-tabs to turn on use of hard-tabs optimize
-echo $ac_n "checking if you want hard-tabs code""... $ac_c" 1>&6
-echo "configure:4171: checking if you want hard-tabs code" >&5
+echo "$as_me:8882: 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"
- with_hardtabs=$enableval
-else
- with_hardtabs=$with_develop
-fi
-
-echo "$ac_t""$with_hardtabs" 1>&6
-test "$with_hardtabs" = yes && cat >> confdefs.h <<\EOF
-#define USE_HARD_TABS 1
-EOF
-
-
-echo $ac_n "checking if you want to use restrict environment when running as root""... $ac_c" 1>&6
-echo "configure:4188: checking if you want to use restrict environment when running as root" >&5
-# Check whether --enable-root-environ or --disable-root-environ was given.
-if test "${enable_root_environ+set}" = set; then
- enableval="$enable_root_environ"
- with_root_environ=$enableval
else
- with_root_environ=yes
-fi
-
-echo "$ac_t""$with_root_environ" 1>&6
-test "$with_root_environ" = yes && cat >> confdefs.h <<\EOF
-#define USE_ROOT_ENVIRON 1
+ enable_hard_tabs=$with_develop
+fi;
+echo "$as_me:8892: result: $enable_hard_tabs" >&5
+echo "${ECHO_T}$enable_hard_tabs" >&6
+test "$enable_hard_tabs" = yes && cat >>confdefs.h <<\EOF
+#define USE_HARD_TABS 1
EOF
-
### use option --enable-xmc-glitch to turn on use of magic-cookie optimize
-echo $ac_n "checking if you want limited support for xmc""... $ac_c" 1>&6
-echo "configure:4206: checking if you want limited support for xmc" >&5
+echo "$as_me:8899: 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"
- with_xmc_glitch=$enableval
-else
- with_xmc_glitch=$with_develop
-fi
-echo "$ac_t""$with_xmc_glitch" 1>&6
-test "$with_xmc_glitch" = yes && cat >> confdefs.h <<\EOF
+else
+ enable_xmc_glitch=$with_develop
+fi;
+echo "$as_me:8909: result: $enable_xmc_glitch" >&5
+echo "${ECHO_T}$enable_xmc_glitch" >&6
+test "$enable_xmc_glitch" = yes && cat >>confdefs.h <<\EOF
#define USE_XMC_SUPPORT 1
EOF
-
###############################################################################
# These are just experimental, probably should not be in a package:
-
-echo $ac_n "checking if you do not want to assume colors are white-on-black""... $ac_c" 1>&6
-echo "configure:4227: checking if you do not want to assume colors are white-on-black" >&5
+echo "$as_me:8918: 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
@@ -4231,17 +8924,16 @@ if test "${enable_assumed_color+set}" = set; then
with_assumed_color=$enableval
else
with_assumed_color=yes
-fi
-
-echo "$ac_t""$with_assumed_color" 1>&6
-test "$with_assumed_color" = yes && cat >> confdefs.h <<\EOF
+fi;
+echo "$as_me:8928: result: $with_assumed_color" >&5
+echo "${ECHO_T}$with_assumed_color" >&6
+test "$with_assumed_color" = yes && cat >>confdefs.h <<\EOF
#define USE_ASSUMED_COLOR 1
EOF
-
### use option --enable-hashmap to turn on use of hashmap scrolling logic
-echo $ac_n "checking if you want hashmap scrolling-optimization code""... $ac_c" 1>&6
-echo "configure:4245: checking if you want hashmap scrolling-optimization code" >&5
+echo "$as_me:8935: 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
@@ -4249,17 +8941,16 @@ if test "${enable_hashmap+set}" = set; then
with_hashmap=$enableval
else
with_hashmap=yes
-fi
-
-echo "$ac_t""$with_hashmap" 1>&6
-test "$with_hashmap" = yes && cat >> confdefs.h <<\EOF
+fi;
+echo "$as_me:8945: result: $with_hashmap" >&5
+echo "${ECHO_T}$with_hashmap" >&6
+test "$with_hashmap" = yes && cat >>confdefs.h <<\EOF
#define USE_HASHMAP 1
EOF
-
### use option --enable-colorfgbg to turn on use of $COLORFGBG environment
-echo $ac_n "checking if you want colorfgbg code""... $ac_c" 1>&6
-echo "configure:4263: checking if you want colorfgbg code" >&5
+echo "$as_me:8952: 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
@@ -4267,16 +8958,85 @@ if test "${enable_colorfgbg+set}" = set; then
with_colorfgbg=$enableval
else
with_colorfgbg=no
+fi;
+echo "$as_me:8962: result: $with_colorfgbg" >&5
+echo "${ECHO_T}$with_colorfgbg" >&6
+test "$with_colorfgbg" = yes && cat >>confdefs.h <<\EOF
+#define USE_COLORFGBG 1
+EOF
+
+### use option --enable-ext-colors to turn on use of colors beyond 16.
+echo "$as_me:8969: checking if you want to use experimental extended colors" >&5
+echo $ECHO_N "checking if you want to use experimental extended colors... $ECHO_C" >&6
+
+# Check whether --enable-ext-colors or --disable-ext-colors was given.
+if test "${enable_ext_colors+set}" = set; then
+ enableval="$enable_ext_colors"
+ with_ext_colors=$enableval
+else
+ with_ext_colors=no
+fi;
+echo "$as_me:8979: result: $with_ext_colors" >&5
+echo "${ECHO_T}$with_ext_colors" >&6
+NCURSES_EXT_COLORS=0
+if test "$with_ext_colors" = yes ; then
+ if test "$with_widec" != yes ; then
+ { echo "$as_me:8984: 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.*)
+ cf_cv_rel_version=6.0
+ cf_cv_abi_version=6
+ { echo "$as_me:8994: 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
-echo "$ac_t""$with_colorfgbg" 1>&6
-test "$with_colorfgbg" = yes && cat >> confdefs.h <<\EOF
-#define USE_COLORFGBG 1
+ fi
+ NCURSES_EXT_COLORS=1
+ cat >>confdefs.h <<\EOF
+#define NCURSES_EXT_COLORS 1
EOF
+fi
+
+### use option --enable-ext-mouse to modify coding to support 5-button mice
+echo "$as_me:9009: checking if you want to use experimental extended mouse encoding" >&5
+echo $ECHO_N "checking if you want to use experimental extended mouse encoding... $ECHO_C" >&6
+
+# Check whether --enable-ext-mouse or --disable-ext-mouse was given.
+if test "${enable_ext_mouse+set}" = set; then
+ enableval="$enable_ext_mouse"
+ with_ext_mouse=$enableval
+else
+ with_ext_mouse=no
+fi;
+echo "$as_me:9019: result: $with_ext_mouse" >&5
+echo "${ECHO_T}$with_ext_mouse" >&6
+NCURSES_MOUSE_VERSION=1
+if test "$with_ext_mouse" = yes ; then
+ NCURSES_MOUSE_VERSION=2
+
+if test "${with_abi_version+set}" != set; then
+ case $cf_cv_rel_version in
+ 5.*)
+ cf_cv_rel_version=6.0
+ cf_cv_abi_version=6
+ { echo "$as_me:9030: 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
-echo $ac_n "checking if you want experimental safe-sprintf code""... $ac_c" 1>&6
-echo "configure:4280: checking if you want experimental safe-sprintf code" >&5
+fi
+
+echo "$as_me:9038: 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.
if test "${enable_safe_sprintf+set}" = set; then
@@ -4284,19 +9044,18 @@ if test "${enable_safe_sprintf+set}" = set; then
with_safe_sprintf=$enableval
else
with_safe_sprintf=no
-fi
-
-echo "$ac_t""$with_safe_sprintf" 1>&6
-test "$with_safe_sprintf" = yes && cat >> confdefs.h <<\EOF
+fi;
+echo "$as_me:9048: result: $with_safe_sprintf" >&5
+echo "${ECHO_T}$with_safe_sprintf" >&6
+test "$with_safe_sprintf" = yes && 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 $ac_n "checking if you want to experiment without scrolling-hints code""... $ac_c" 1>&6
-echo "configure:4300: checking if you want to experiment without scrolling-hints code" >&5
+echo "$as_me:9057: 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.
if test "${enable_scroll_hints+set}" = set; then
@@ -4304,234 +9063,36 @@ if test "${enable_scroll_hints+set}" = set; then
with_scroll_hints=$enableval
else
with_scroll_hints=yes
-fi
-
-echo "$ac_t""$with_scroll_hints" 1>&6
-test "$with_scroll_hints" = yes && cat >> confdefs.h <<\EOF
+fi;
+echo "$as_me:9067: result: $with_scroll_hints" >&5
+echo "${ECHO_T}$with_scroll_hints" >&6
+test "$with_scroll_hints" = yes && cat >>confdefs.h <<\EOF
#define USE_SCROLL_HINTS 1
EOF
fi
-### use option --enable-widec to turn on use of wide-character support
-NCURSES_CH_T=chtype
-NCURSES_LIBUTF8=0
-NCURSES_MBSTATE_T=0
-echo $ac_n "checking if you want experimental wide-character code""... $ac_c" 1>&6
-echo "configure:4322: checking if you want experimental wide-character code" >&5
+echo "$as_me:9075: checking if you want experimental wgetch-events code" >&5
+echo $ECHO_N "checking if you want experimental wgetch-events code... $ECHO_C" >&6
-# Check whether --enable-widec or --disable-widec was given.
-if test "${enable_widec+set}" = set; then
- enableval="$enable_widec"
- with_widec=$enableval
+# Check whether --enable-wgetch-events or --disable-wgetch-events was given.
+if test "${enable_wgetch_events+set}" = set; then
+ enableval="$enable_wgetch_events"
+ with_wgetch_events=$enableval
else
- with_widec=no
-fi
-
-echo "$ac_t""$with_widec" 1>&6
-if test "$with_widec" = yes ; then
- LIB_SUFFIX="w${LIB_SUFFIX}"
- cat >> confdefs.h <<\EOF
-#define USE_WIDEC_SUPPORT 1
+ with_wgetch_events=no
+fi;
+echo "$as_me:9085: result: $with_wgetch_events" >&5
+echo "${ECHO_T}$with_wgetch_events" >&6
+test "$with_wgetch_events" = yes && cat >>confdefs.h <<\EOF
+#define NCURSES_WGETCH_EVENTS 1
EOF
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
- with_overwrite=no
- NCURSES_CH_T=cchar_t
- echo $ac_n "checking for putwc""... $ac_c" 1>&6
-echo "configure:4343: checking for putwc" >&5
-if eval "test \"`echo '$''{'ac_cv_func_putwc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 4348 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char putwc(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char putwc();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_putwc) || defined (__stub___putwc)
-choke me
-#else
-putwc();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:4371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_putwc=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_putwc=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'putwc`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- :
-else
- echo "$ac_t""no" 1>&6
-fi
-
-if test "$ac_cv_func_putwc" != yes ; then
-
-echo $ac_n "checking for putwc in libutf8""... $ac_c" 1>&6
-echo "configure:4393: checking for putwc in libutf8" >&5
-if eval "test \"`echo '$''{'cf_cv_libutf8'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
- cf_save_LIBS="$LIBS"
- LIBS="-lutf8 $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4401 "configure"
-#include "confdefs.h"
-
-#include <libutf8.h>
-int main() {
-putwc(0,0);
-; return 0; }
-EOF
-if { (eval echo configure:4409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- cf_cv_libutf8=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_libutf8=no
-fi
-rm -f conftest*
- LIBS="$cf_save_LIBS"
-
-fi
-
-echo "$ac_t""$cf_cv_libutf8" 1>&6
-
-if test "$cf_cv_libutf8" = yes ; then
- cat >> confdefs.h <<\EOF
-#define HAVE_LIBUTF8_H 1
-EOF
-
- LIBS="-lutf8 $LIBS"
-fi
-
- if test "$cf_cv_libutf8" = yes ; then
- NCURSES_LIBUTF8=1
- fi
-fi
-
-# This is needed on Tru64 5.0 to declare mbstate_t
-echo $ac_n "checking if we must include wchar.h to declare mbstate_t""... $ac_c" 1>&6
-echo "configure:4440: checking if we must include wchar.h to declare mbstate_t" >&5
-if eval "test \"`echo '$''{'cf_cv_mbstate_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
-cat > conftest.$ac_ext <<EOF
-#line 4446 "configure"
-#include "confdefs.h"
-
-#include <stdlib.h>
-#ifdef HAVE_LIBUTF8_H
-#include <libutf8.h>
-#endif
-int main() {
-mbstate_t state
-; return 0; }
-EOF
-if { (eval echo configure:4457: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- cf_cv_mbstate_t=no
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cat > conftest.$ac_ext <<EOF
-#line 4465 "configure"
-#include "confdefs.h"
-
-#include <stdlib.h>
-#include <wchar.h>
-#ifdef HAVE_LIBUTF8_H
-#include <libutf8.h>
-#endif
-int main() {
-mbstate_t value
-; return 0; }
-EOF
-if { (eval echo configure:4477: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- cf_cv_mbstate_t=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_mbstate_t=unknown
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$cf_cv_mbstate_t" 1>&6
-
-if test "$cf_cv_mbstate_t" = yes ; then
- cat >> confdefs.h <<\EOF
-#define NEED_WCHAR_H 1
-EOF
-
-fi
-
-if test "$cf_cv_mbstate_t" != unknown ; then
- cat >> confdefs.h <<\EOF
-#define HAVE_MBSTATE_T 1
-EOF
-
-fi
-
- if test $cf_cv_mbstate_t = yes ; then
- NCURSES_MBSTATE_T=1
- fi
-fi
-
-
-
-
-echo $ac_n "checking for terminal capabilities file""... $ac_c" 1>&6
-echo "configure:4516: checking for terminal capabilities file" >&5
-
-# Check whether --with-caps or --without-caps was given.
-if test "${with_caps+set}" = set; then
- withval="$with_caps"
- TERMINFO_CAPS=Caps.$withval
-else
- TERMINFO_CAPS=Caps
-fi
-
-test -f ${srcdir}/include/${TERMINFO_CAPS} || TERMINFO_CAPS=Caps
-echo "$ac_t""$TERMINFO_CAPS" 1>&6
-
-
###############################################################################
-
### use option --disable-echo to suppress full display compiling commands
-echo $ac_n "checking if you want to display full commands during build""... $ac_c" 1>&6
-echo "configure:4535: checking if you want to display full commands during build" >&5
+echo "$as_me:9094: checking if you want to display full commands during build" >&5
+echo $ECHO_N "checking if you want to display full commands during build... $ECHO_C" >&6
# Check whether --enable-echo or --disable-echo was given.
if test "${enable_echo+set}" = set; then
@@ -4539,40 +9100,136 @@ if test "${enable_echo+set}" = set; then
with_echo=$enableval
else
with_echo=yes
-fi
-
+fi;
if test "$with_echo" = yes; then
ECHO_LINK=
else
ECHO_LINK='@ echo linking $@ ... ;'
test -n "$LIBTOOL" && LIBTOOL="$LIBTOOL --silent"
fi
-echo "$ac_t""$with_echo" 1>&6
-
+echo "$as_me:9110: result: $with_echo" >&5
+echo "${ECHO_T}$with_echo" >&6
### use option --enable-warnings to turn on all gcc warnings
-echo $ac_n "checking if you want to see compiler warnings""... $ac_c" 1>&6
-echo "configure:4556: checking if you want to see compiler warnings" >&5
+echo "$as_me:9114: 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.
if test "${enable_warnings+set}" = set; then
enableval="$enable_warnings"
with_warnings=$enableval
-fi
-
-echo "$ac_t""$with_warnings" 1>&6
+fi;
+echo "$as_me:9122: result: $with_warnings" >&5
+echo "${ECHO_T}$with_warnings" >&6
if test -n "$with_warnings"; then
ADAFLAGS="$ADAFLAGS -gnatg"
-
-if test "$GCC" = yes
-then
- cat > conftest.$ac_ext <<EOF
-#line 4572 "configure"
+
+INTEL_COMPILER=no
+
+if test "$GCC" = yes ; then
+ case $host_os in
+ linux*|gnu*)
+ echo "$as_me:9133: 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 9138 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:9155: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9158: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:9161: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:9164: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ INTEL_COMPILER=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+
+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:9175: result: $INTEL_COMPILER" >&5
+echo "${ECHO_T}$INTEL_COMPILER" >&6
+ ;;
+ esac
+fi
+
+cat > conftest.$ac_ext <<EOF
+#line 9182 "configure"
int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
EOF
- echo "checking for $CC warning options" 1>&6
-echo "configure:4576: checking for $CC warning options" >&5
+
+if test "$INTEL_COMPILER" = yes
+then
+# The "-wdXXX" options suppress warnings:
+# remark #1419: external declaration in primary source file
+# remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
+# remark #193: zero used for undefined preprocessing identifier
+# remark #593: variable "curs_sb_left_arrow" was set but never used
+# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
+# remark #869: parameter "tw" was never referenced
+# remark #981: operands are evaluated in unspecified order
+# warning #269: invalid format string conversion
+
+ { echo "$as_me:9200: checking for $CC warning options..." >&5
+echo "$as_me: checking for $CC warning options..." >&6;}
+ cf_save_CFLAGS="$CFLAGS"
+ EXTRA_CFLAGS="-Wall"
+ for cf_opt in \
+ wd1419 \
+ wd1682 \
+ wd1683 \
+ wd1684 \
+ wd193 \
+ wd279 \
+ wd593 \
+ wd810 \
+ wd869 \
+ wd981
+ do
+ CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
+ if { (eval echo "$as_me:9217: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9220: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ test -n "$verbose" && echo "$as_me:9222: 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
+then
+ { echo "$as_me:9231: checking for $CC warning options..." >&5
+echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS="-W -Wall"
cf_warn_CONST=""
@@ -4587,20 +9244,203 @@ echo "configure:4576: checking for $CC warning options" >&5
Wnested-externs \
Wpointer-arith \
Wshadow \
- Wstrict-prototypes $cf_warn_CONST
+ Wstrict-prototypes \
+ Wundef $cf_warn_CONST
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo configure:4594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6
+ if { (eval echo "$as_me:9251: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9254: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ test -n "$verbose" && echo "$as_me:9256: result: ... -$cf_opt" >&5
+echo "${ECHO_T}... -$cf_opt" >&6
+ case $cf_opt in #(vi
+ Wcast-qual) #(vi
+ CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES"
+ ;;
+ Winline) #(vi
+ case $GCC_VERSION in
+ 3.3*)
+ test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
+
+ continue;;
+ esac
+ ;;
+ esac
EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
- test "$cf_opt" = Wcast-qual && EXTRA_CFLAGS="$EXTRA_CFLAGS -DXTSTRINGDEFINES"
fi
done
- rm -f conftest*
CFLAGS="$cf_save_CFLAGS"
fi
+rm -f conftest*
+
+ if test "$cf_with_cxx" = yes ; then
+
+INTEL_CPLUSPLUS=no
+
+if test "$GCC" = yes ; then
+ case $host_os in
+ linux*|gnu*)
+ echo "$as_me:9285: 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 9290 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+#ifdef __INTEL_COMPILER
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:9307: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9310: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:9313: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:9316: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ INTEL_CPLUSPLUS=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CXXFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:9327: result: $INTEL_CPLUSPLUS" >&5
+echo "${ECHO_T}$INTEL_CPLUSPLUS" >&6
+ ;;
+ esac
+fi
+
+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
+
+cat > conftest.$ac_ext <<EOF
+#line 9341 "configure"
+int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
+EOF
+
+if test "$INTEL_CPLUSPLUS" = yes
+then
+# The "-wdXXX" options suppress warnings:
+# remark #1419: external declaration in primary source file
+# remark #1682: implicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem)
+# remark #1684: conversion from pointer to same-sized integral type (potential portability problem)
+# remark #193: zero used for undefined preprocessing identifier
+# remark #593: variable "curs_sb_left_arrow" was set but never used
+# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits
+# remark #869: parameter "tw" was never referenced
+# remark #981: operands are evaluated in unspecified order
+# warning #269: invalid format string conversion
+
+ { echo "$as_me:9359: checking for $CC warning options..." >&5
+echo "$as_me: checking for $CC warning options..." >&6;}
+ cf_save_CXXFLAGS="$CXXFLAGS"
+ EXTRA_CXXFLAGS="-Wall"
+ for cf_opt in \
+ wd1419 \
+ wd1682 \
+ wd1683 \
+ wd1684 \
+ wd193 \
+ wd279 \
+ wd593 \
+ wd810 \
+ wd869 \
+ wd981
+ do
+ CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt"
+ if { (eval echo "$as_me:9376: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9379: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ test -n "$verbose" && echo "$as_me:9381: result: ... -$cf_opt" >&5
+echo "${ECHO_T}... -$cf_opt" >&6
+ EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
+ fi
+ done
+ CXXFLAGS="$cf_save_CXXFLAGS"
+
+elif test "$GXX" = yes
+then
+ { echo "$as_me:9390: 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].*)
+ ;;
+ *)
+ cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++"
+ ;;
+ esac
+ for cf_opt in \
+ Wabi \
+ fabi-version=0 \
+ Woverloaded-virtual \
+ Wsign-promo \
+ Wsynth \
+ Wold-style-cast \
+ Wcast-align \
+ Wcast-qual \
+ Wmissing-prototypes \
+ Wpointer-arith \
+ Wshadow \
+ Wstrict-prototypes \
+ Wundef $cf_gxx_extra_warnings Wno-unused
+ do
+ CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt"
+ if { (eval echo "$as_me:9419: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9422: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ test -n "$verbose" && echo "$as_me:9424: result: ... -$cf_opt" >&5
+echo "${ECHO_T}... -$cf_opt" >&6
+ EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
+ else
+ test -n "$verbose" && echo "$as_me:9428: result: ... no -$cf_opt" >&5
+echo "${ECHO_T}... no -$cf_opt" >&6
+ fi
+ done
+ CXXFLAGS="$cf_save_CXXFLAGS"
+fi
+rm -f conftest*
+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
+ fi
fi
if test "$GCC" = yes
@@ -4621,10 +9461,10 @@ cat > conftest.i <<EOF
EOF
if test "$GCC" = yes
then
- echo "checking for $CC __attribute__ directives" 1>&6
-echo "configure:4626: checking for $CC __attribute__ directives" >&5
+ { echo "$as_me:9464: checking for $CC __attribute__ directives..." >&5
+echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
cat > conftest.$ac_ext <<EOF
-#line 4628 "configure"
+#line 9467 "configure"
#include "confdefs.h"
#include "conftest.h"
#include "conftest.i"
@@ -4645,28 +9485,31 @@ int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED) { return 0; }
EOF
for cf_attribute in scanf printf unused noreturn
do
-
-CF_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
+cf_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
cf_directive="__attribute__(($cf_attribute))"
echo "checking for $CC $cf_directive" 1>&5
case $cf_attribute in
scanf|printf)
cat >conftest.h <<EOF
-#define GCC_$CF_ATTRIBUTE 1
+#define GCC_$cf_ATTRIBUTE 1
EOF
;;
*)
cat >conftest.h <<EOF
-#define GCC_$CF_ATTRIBUTE $cf_directive
+#define GCC_$cf_ATTRIBUTE $cf_directive
EOF
;;
esac
- if { (eval echo configure:4666: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- test -n "$verbose" && echo "$ac_t""... $cf_attribute" 1>&6
+ if { (eval echo "$as_me:9505: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:9508: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ test -n "$verbose" && echo "$as_me:9510: result: ... $cf_attribute" >&5
+echo "${ECHO_T}... $cf_attribute" >&6
cat conftest.h >>confdefs.h
-# else
-# sed -e 's/__attr.*/\/*nothing*\//' conftest.h >>confdefs.h
fi
done
else
@@ -4675,10 +9518,9 @@ fi
rm -rf conftest*
fi
-
### use option --enable-assertions to turn on generation of assertion code
-echo $ac_n "checking if you want to enable runtime assertions""... $ac_c" 1>&6
-echo "configure:4682: checking if you want to enable runtime assertions" >&5
+echo "$as_me:9522: 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.
if test "${enable_assertions+set}" = set; then
@@ -4686,14 +9528,14 @@ if test "${enable_assertions+set}" = set; then
with_assertions=$enableval
else
with_assertions=no
-fi
-
-echo "$ac_t""$with_assertions" 1>&6
+fi;
+echo "$as_me:9532: result: $with_assertions" >&5
+echo "${ECHO_T}$with_assertions" >&6
if test -n "$GCC"
then
if test "$with_assertions" = no
then
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define NDEBUG 1
EOF
@@ -4705,279 +9547,877 @@ fi
### use option --disable-leaks to suppress "permanent" leaks, for testing
+echo "$as_me:9550: 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.
+if test "${with_dmalloc+set}" = set; then
+ withval="$with_dmalloc"
+ cat >>confdefs.h <<\EOF
+#define USE_DMALLOC 1
+EOF
+
+ : ${with_cflags:=-g}
+ : ${with_no_leaks:=yes}
+ with_dmalloc=yes
+else
+ with_dmalloc=
+fi;
+echo "$as_me:9566: result: ${with_dmalloc:-no}" >&5
+echo "${ECHO_T}${with_dmalloc:-no}" >&6
+
+case .$with_cflags in #(vi
+.*-g*)
+ case .$CFLAGS in #(vi
+ .*-g*) #(vi
+ ;;
+ *)
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+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
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${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"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ 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 -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+ ;;
+ esac
+ ;;
+esac
+
+if test "$with_dmalloc" = yes ; then
+ echo "$as_me:9650: 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 9656 "configure"
+#include "confdefs.h"
+#include <dmalloc.h>
+_ACEOF
+if { (eval echo "$as_me:9660: \"$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:9666: \$? = $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_dmalloc_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_header_dmalloc_h=no
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:9685: 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:9689: 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
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldmalloc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 9697 "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 dmalloc_debug ();
+int
+main ()
+{
+dmalloc_debug ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:9716: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:9719: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:9722: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:9725: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dmalloc_dmalloc_debug=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dmalloc_dmalloc_debug=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:9736: 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
+#define HAVE_LIBDMALLOC 1
+EOF
+
+ LIBS="-ldmalloc $LIBS"
+
+fi
+
+fi
+
+fi
+
+echo "$as_me:9751: 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.
+if test "${with_dbmalloc+set}" = set; then
+ withval="$with_dbmalloc"
+ cat >>confdefs.h <<\EOF
+#define USE_DBMALLOC 1
+EOF
+
+ : ${with_cflags:=-g}
+ : ${with_no_leaks:=yes}
+ with_dbmalloc=yes
+else
+ with_dbmalloc=
+fi;
+echo "$as_me:9767: result: ${with_dbmalloc:-no}" >&5
+echo "${ECHO_T}${with_dbmalloc:-no}" >&6
+
+case .$with_cflags in #(vi
+.*-g*)
+ case .$CFLAGS in #(vi
+ .*-g*) #(vi
+ ;;
+ *)
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+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
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${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"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ 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 -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+ ;;
+ esac
+ ;;
+esac
+
+if test "$with_dbmalloc" = yes ; then
+ echo "$as_me:9851: 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 9857 "configure"
+#include "confdefs.h"
+#include <dbmalloc.h>
+_ACEOF
+if { (eval echo "$as_me:9861: \"$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:9867: \$? = $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_dbmalloc_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_header_dbmalloc_h=no
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:9886: 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:9890: 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
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldbmalloc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line 9898 "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 debug_malloc ();
+int
+main ()
+{
+debug_malloc ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:9917: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:9920: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:9923: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:9926: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dbmalloc_debug_malloc=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dbmalloc_debug_malloc=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:9937: 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
+#define HAVE_LIBDBMALLOC 1
+EOF
+
+ LIBS="-ldbmalloc $LIBS"
+
+fi
+
+fi
+
+fi
+
+echo "$as_me:9952: 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.
+if test "${with_valgrind+set}" = set; then
+ withval="$with_valgrind"
+ cat >>confdefs.h <<\EOF
+#define USE_VALGRIND 1
+EOF
+
+ : ${with_cflags:=-g}
+ : ${with_no_leaks:=yes}
+ with_valgrind=yes
+else
+ with_valgrind=
+fi;
+echo "$as_me:9968: result: ${with_valgrind:-no}" >&5
+echo "${ECHO_T}${with_valgrind:-no}" >&6
+
+case .$with_cflags in #(vi
+.*-g*)
+ case .$CFLAGS in #(vi
+ .*-g*) #(vi
+ ;;
+ *)
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+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
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${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"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ 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 -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+ ;;
+ esac
+ ;;
+esac
+
+echo "$as_me:10051: 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.
if test "${enable_leaks+set}" = set; then
enableval="$enable_leaks"
- test "$enableval" = no && cat >> confdefs.h <<\EOF
+ with_no_leaks=yes
+else
+ : ${with_no_leaks:=no}
+fi;
+echo "$as_me:10061: result: $with_no_leaks" >&5
+echo "${ECHO_T}$with_no_leaks" >&6
+
+if test "$with_no_leaks" = yes ; then
+ cat >>confdefs.h <<\EOF
#define NO_LEAKS 1
EOF
fi
-cat >> confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define HAVE_NC_ALLOC_H 1
EOF
-
### use option --enable-expanded to generate certain macros as functions
# Check whether --enable-expanded or --disable-expanded was given.
if test "${enable_expanded+set}" = set; then
enableval="$enable_expanded"
- test "$enableval" = yes && cat >> confdefs.h <<\EOF
+ test "$enableval" = yes && cat >>confdefs.h <<\EOF
#define NCURSES_EXPANDED 1
EOF
-fi
-
+fi;
### use option --disable-macros to suppress macros in favor of functions
# Check whether --enable-macros or --disable-macros was given.
if test "${enable_macros+set}" = set; then
enableval="$enable_macros"
- test "$enableval" = no && cat >> confdefs.h <<\EOF
+ test "$enableval" = no && cat >>confdefs.h <<\EOF
#define NCURSES_NOMACROS 1
EOF
+fi;
+
+# Normally we only add trace() to the debug-library. Allow this to be
+# extended to all models of the ncurses library:
+cf_all_traces=no
+case "$CFLAGS $CPPFLAGS" in
+*-DTRACE*)
+ cf_all_traces=yes
+ ;;
+esac
+
+echo "$as_me:10106: 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.
+if test "${with_trace+set}" = set; then
+ withval="$with_trace"
+ cf_with_trace=$withval
+else
+ cf_with_trace=$cf_all_traces
+fi;
+echo "$as_me:10116: result: $cf_with_trace" >&5
+echo "${ECHO_T}$cf_with_trace" >&6
+
+if test "$cf_with_trace" = yes ; then
+ LIB_TRACING=all
+ ADA_TRACE=TRUE
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+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
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${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"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ 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 -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
fi
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+else
+ LIB_TRACING=DEBUG
+ ADA_TRACE=FALSE
+fi
### Checks for libraries.
-echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6
-echo "configure:4749: checking for gettimeofday" >&5
-if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:10197: 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 <<EOF
-#line 4754 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10203 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char gettimeofday(); below. */
+ which can conflict with char gettimeofday (); below. */
#include <assert.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 gettimeofday();
-
-int main() {
+ builtin and then its argument prototype would still apply. */
+char gettimeofday ();
+char (*f) ();
+int
+main ()
+{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday)
choke me
#else
-gettimeofday();
+f = gettimeofday;
#endif
-; return 0; }
-EOF
-if { (eval echo configure:4777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_gettimeofday=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_gettimeofday=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'gettimeofday`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:10234: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10237: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:10240: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10243: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_gettimeofday=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_gettimeofday=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:10253: 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
#define HAVE_GETTIMEOFDAY 1
EOF
else
- echo "$ac_t""no" 1>&6
-
-echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
-echo "configure:4800: checking for gettimeofday in -lbsd" >&5
-ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:10262: 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
else
- ac_save_LIBS="$LIBS"
+ ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 4808 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 10270 "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 gettimeofday();
-
-int main() {
-gettimeofday()
-; return 0; }
-EOF
-if { (eval echo configure:4819: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- cat >> confdefs.h <<\EOF
+ builtin and then its argument prototype would still apply. */
+char gettimeofday ();
+int
+main ()
+{
+gettimeofday ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:10289: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10292: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:10295: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10298: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_bsd_gettimeofday=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_bsd_gettimeofday=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:10309: 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
+ cat >>confdefs.h <<\EOF
#define HAVE_GETTIMEOFDAY 1
EOF
LIBS="$LIBS -lbsd"
-else
- echo "$ac_t""no" 1>&6
fi
fi
-
-echo $ac_n "checking if -lm needed for math functions""... $ac_c" 1>&6
-echo "configure:4847: checking if -lm needed for math functions" >&5
-if eval "test \"`echo '$''{'cf_cv_need_libm'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:10321: 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 <<EOF
-#line 4853 "configure"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10328 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <math.h>
-
-int main() {
+
+int
+main ()
+{
double x = rand(); printf("result = %g\n", sin(x))
-; return 0; }
-EOF
-if { (eval echo configure:4863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:10343: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10346: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:10349: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10352: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_need_libm=no
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_need_libm=yes
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_need_libm=yes
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-
-echo "$ac_t""$cf_cv_need_libm" 1>&6
+echo "$as_me:10362: result: $cf_cv_need_libm" >&5
+echo "${ECHO_T}$cf_cv_need_libm" >&6
if test "$cf_cv_need_libm" = yes
then
MATH_LIB=-lm
fi
-
-
### Checks for header files.
-
-echo $ac_n "checking if we must define _GNU_SOURCE""... $ac_c" 1>&6
-echo "configure:4886: checking if we must define _GNU_SOURCE" >&5
-if eval "test \"`echo '$''{'cf_cv_gnu_source'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:10370: 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 <<EOF
-#line 4892 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int main() {
-
-#ifndef _XOPEN_SOURCE
-make an error
-#endif
-; return 0; }
-EOF
-if { (eval echo configure:4902: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- cf_cv_gnu_source=no
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_save="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- cat > conftest.$ac_ext <<EOF
-#line 4912 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int main() {
-
-#ifdef _XOPEN_SOURCE
-make an error
-#endif
-; return 0; }
-EOF
-if { (eval echo configure:4922: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- cf_cv_gnu_source=no
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_gnu_source=yes
-fi
-rm -f conftest*
- CPPFLAGS="$cf_save"
-
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$cf_cv_gnu_source" 1>&6
-test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:4943: checking for ANSI C header files" >&5
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 4948 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10376 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
+
+_ACEOF
+if { (eval echo "$as_me:10384: \"$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:10390: \$? = $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 "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
ac_cv_header_stdc=no
fi
-rm -f conftest*
+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 <<EOF
-#line 4973 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10412 "configure"
#include "confdefs.h"
#include <string.h>
-EOF
+
+_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "memchr" >/dev/null 2>&1; then
:
else
- rm -rf conftest*
ac_cv_header_stdc=no
fi
rm -f conftest*
@@ -4986,16 +10426,16 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 4991 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10430 "configure"
#include "confdefs.h"
#include <stdlib.h>
-EOF
+
+_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
egrep "free" >/dev/null 2>&1; then
:
else
- rm -rf conftest*
ac_cv_header_stdc=no
fi
rm -f conftest*
@@ -5004,303 +10444,419 @@ 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
+ if test "$cross_compiling" = yes; then
:
else
- cat > conftest.$ac_ext <<EOF
-#line 5012 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10451 "configure"
#include "confdefs.h"
#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
+#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
-EOF
-if { (eval echo configure:5023: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+#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:10477: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10480: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:10482: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10485: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
:
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_header_stdc=no
+ 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 -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
fi
fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
+echo "$as_me:10498: 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
+
+cat >>confdefs.h <<\EOF
#define STDC_HEADERS 1
EOF
fi
ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:5051: checking for $ac_hdr that defines DIR" >&5
-if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 5056 "configure"
+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:10511: 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 10517 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
-int main() {
-DIR *dirp = 0;
-; return 0; }
-EOF
-if { (eval echo configure:5064: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- eval "ac_cv_header_dirent_$ac_safe=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_dirent_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:10532: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:10535: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:10538: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10541: \$? = $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:10551: 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_hdr" | $as_tr_cpp` 1
EOF
- ac_header_dirent=$ac_hdr; break
-else
- echo "$ac_t""no" 1>&6
+
+ac_header_dirent=$ac_hdr; break
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 $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:5089: checking for opendir in -ldir" >&5
-ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ echo "$as_me:10564: 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
else
- ac_save_LIBS="$LIBS"
+ ac_check_lib_save_LIBS=$LIBS
LIBS="-ldir $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 5097 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 10572 "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 opendir();
-
-int main() {
-opendir()
-; return 0; }
-EOF
-if { (eval echo configure:5108: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:10591: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10594: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:10597: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10600: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_dir_opendir=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_dir_opendir=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:10611: 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"
-else
- echo "$ac_t""no" 1>&6
fi
else
-echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:5130: checking for opendir in -lx" >&5
-ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ echo "$as_me:10618: 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
else
- ac_save_LIBS="$LIBS"
+ ac_check_lib_save_LIBS=$LIBS
LIBS="-lx $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 5138 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 10626 "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 opendir();
-
-int main() {
-opendir()
-; return 0; }
-EOF
-if { (eval echo configure:5149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
+ builtin and then its argument prototype would still apply. */
+char opendir ();
+int
+main ()
+{
+opendir ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:10645: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10648: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:10651: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10654: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_x_opendir=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_x_opendir=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:10665: 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"
-else
- echo "$ac_t""no" 1>&6
fi
fi
-echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:5172: checking whether time.h and sys/time.h may both be included" >&5
-if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:10673: 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 <<EOF
-#line 5177 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10679 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
#include <time.h>
-int main() {
-struct tm *tp;
-; return 0; }
-EOF
-if { (eval echo configure:5186: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+
+int
+main ()
+{
+if ((struct tm *) 0)
+return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:10695: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:10698: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:10701: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10704: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
ac_cv_header_time=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_header_time=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_header_time=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
fi
-
-echo "$ac_t""$ac_cv_header_time" 1>&6
+echo "$as_me:10714: result: $ac_cv_header_time" >&5
+echo "${ECHO_T}$ac_cv_header_time" >&6
if test $ac_cv_header_time = yes; then
- cat >> confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define TIME_WITH_SYS_TIME 1
EOF
fi
-
-echo $ac_n "checking for regular-expression headers""... $ac_c" 1>&6
-echo "configure:5208: checking for regular-expression headers" >&5
-if eval "test \"`echo '$''{'cf_cv_regex'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:10724: checking for regular-expression headers" >&5
+echo $ECHO_N "checking for regular-expression headers... $ECHO_C" >&6
+if test "${cf_cv_regex+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
-
-cat > conftest.$ac_ext <<EOF
-#line 5214 "configure"
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 10731 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <regex.h>
-int main() {
+int
+main ()
+{
regex_t *p;
int x = regcomp(p, "", 0);
int y = regexec(p, "", 0, 0, 0);
regfree(p);
-
-; return 0; }
-EOF
-if { (eval echo configure:5227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:10749: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10752: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:10755: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10758: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_regex="regex.h"
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
-
- cat > conftest.$ac_ext <<EOF
-#line 5236 "configure"
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10766 "configure"
#include "confdefs.h"
#include <regexp.h>
-int main() {
+int
+main ()
+{
char *p = compile("", "", "", 0);
int x = step("", "");
-
-; return 0; }
-EOF
-if { (eval echo configure:5246: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:10781: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10784: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:10787: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10790: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_regex="regexp.h"
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
-
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
cf_save_LIBS="$LIBS"
LIBS="-lgen $LIBS"
- cat > conftest.$ac_ext <<EOF
-#line 5257 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 10800 "configure"
#include "confdefs.h"
#include <regexpr.h>
-int main() {
+int
+main ()
+{
char *p = compile("", "", "");
int x = step("", "");
-
-; return 0; }
-EOF
-if { (eval echo configure:5267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:10815: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10818: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:10821: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10824: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_regex="regexpr.h"
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- LIBS="$cf_save_LIBS"
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+LIBS="$cf_save_LIBS"
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$ac_t""$cf_cv_regex" 1>&6
+echo "$as_me:10840: result: $cf_cv_regex" >&5
+echo "${ECHO_T}$cf_cv_regex" >&6
case $cf_cv_regex in
- regex.h) cat >> confdefs.h <<\EOF
+ regex.h) cat >>confdefs.h <<\EOF
#define HAVE_REGEX_H_FUNCS 1
EOF
;;
- regexp.h) cat >> confdefs.h <<\EOF
+ regexp.h) cat >>confdefs.h <<\EOF
#define HAVE_REGEXP_H_FUNCS 1
EOF
;;
- regexpr.h) cat >> confdefs.h <<\EOF
+ regexpr.h) cat >>confdefs.h <<\EOF
#define HAVE_REGEXPR_H_FUNCS 1
EOF
;;
esac
-
-for ac_hdr in \
+for ac_header in \
fcntl.h \
getopt.h \
-libc.h \
limits.h \
locale.h \
poll.h \
@@ -5313,143 +10869,172 @@ sys/time.h \
sys/times.h \
ttyent.h \
unistd.h \
+wctype.h \
do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5321: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 5326 "configure"
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:10876: 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 10882 "configure"
#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5331: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:10886: \"$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:10892: \$? = $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 "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
+ eval "$as_ac_Header=no"
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_ext
fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
+echo "$as_me:10911: 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
-
-else
- echo "$ac_t""no" 1>&6
+
fi
done
-
# check for ISC (this may also define _POSIX_SOURCE)
# Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
if test "$ISC" = yes ; then
- echo $ac_n "checking for main in -lcposix""... $ac_c" 1>&6
-echo "configure:5362: checking for main in -lcposix" >&5
-ac_lib_var=`echo cposix'_'main | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+
+echo "$as_me:10925: 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
else
- ac_save_LIBS="$LIBS"
+ ac_check_lib_save_LIBS=$LIBS
LIBS="-lcposix $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 5370 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 10933 "configure"
#include "confdefs.h"
-int main() {
-main()
-; return 0; }
-EOF
-if { (eval echo configure:5377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_lib=HAVE_LIB`echo cposix | sed -e 's/[^a-zA-Z0-9_]/_/g' \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
+int
+main ()
+{
+main ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:10945: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:10948: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:10951: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:10954: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_cposix_main=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_cposix_main=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:10965: 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
+#define HAVE_LIBCPOSIX 1
EOF
LIBS="-lcposix $LIBS"
-else
- echo "$ac_t""no" 1>&6
fi
- echo $ac_n "checking for bzero in -linet""... $ac_c" 1>&6
-echo "configure:5405: checking for bzero in -linet" >&5
-ac_lib_var=`echo inet'_'bzero | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ echo "$as_me:10976: 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
else
- ac_save_LIBS="$LIBS"
+ ac_check_lib_save_LIBS=$LIBS
LIBS="-linet $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 5413 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 10984 "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 bzero();
-
-int main() {
-bzero()
-; return 0; }
-EOF
-if { (eval echo configure:5424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
+ builtin and then its argument prototype would still apply. */
+char bzero ();
+int
+main ()
+{
+bzero ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:11003: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:11006: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:11009: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11012: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_lib_inet_bzero=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_lib_inet_bzero=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:11023: 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="$LIBS -linet"
-else
- echo "$ac_t""no" 1>&6
fi
fi
-
-echo $ac_n "checking if sys/time.h works with sys/select.h""... $ac_c" 1>&6
-echo "configure:5447: checking if sys/time.h works with sys/select.h" >&5
-if eval "test \"`echo '$''{'cf_cv_sys_time_select'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:11030: 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 <<EOF
-#line 5453 "configure"
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 11037 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -5460,228 +11045,323 @@ cat > conftest.$ac_ext <<EOF
#include <sys/select.h>
#endif
-int main() {
+int
+main ()
+{
-; return 0; }
-EOF
-if { (eval echo configure:5468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11057: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11060: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11063: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11066: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_sys_time_select=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_sys_time_select=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_sys_time_select=no
fi
-rm -f conftest*
-
+rm -f conftest.$ac_objext conftest.$ac_ext
+
fi
-echo "$ac_t""$cf_cv_sys_time_select" 1>&6
-test "$cf_cv_sys_time_select" = yes && cat >> confdefs.h <<\EOF
+echo "$as_me:11078: 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
-
-
### checks for compiler characteristics
ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
+ac_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:11092: 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
+else
+ ac_cv_prog_cc_stdc=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+#line 11100 "configure"
+#include "confdefs.h"
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
+ ;
+ return 0;
+}
+_ACEOF
+# Don't try gcc -ansi; that turns off useful extensions and
+# breaks some systems' header files.
+# AIX -qlanglvl=ansi
+# Ultrix and OSF/1 -std1
+# HP-UX 10.20 and later -Ae
+# HP-UX older versions -Aa -D_HPUX_SOURCE
+# SVR4 -Xc -D__EXTENSIONS__
+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11149: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11152: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11155: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11158: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_prog_cc_stdc=$ac_arg
+break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext
+done
+rm -f conftest.$ac_ext conftest.$ac_objext
+CC=$ac_save_CC
+
+fi
-echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:5497: checking for working const" >&5
-if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:11175: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:11178: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+echo "$as_me:11183: 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 <<EOF
-#line 5502 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11189 "configure"
#include "confdefs.h"
-int main() {
+int
+main ()
+{
+/* FIXME: Include the comments suggested by Paul. */
+#ifndef __cplusplus
+ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+ const charset x;
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *ccp;
+ char **p;
+ /* NEC SVR4.0.2 mips cc rejects this. */
+ struct point {int x, y;};
+ static struct point const zero = {0,0};
+ /* AIX XL C 1.02.0.0 rejects this.
+ It does not let you subtract one const X* pointer from another in
+ an arm of an if-expression whose if-part is not a constant
+ expression */
+ const char *g = "string";
+ ccp = &g + (g ? g-g : 0);
+ /* HPUX 7.0 cc rejects these. */
+ ++ccp;
+ p = (char**) ccp;
+ ccp = (char const *const *) p;
+ { /* SCO 3.2v4 cc rejects this. */
+ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+ }
+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
+ int x[] = {25, 17};
+ const int *foo = &x[0];
+ ++foo;
+ }
+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
+ typedef const int *iptr;
+ iptr p = 0;
+ ++p;
+ }
+ { /* AIX XL C 1.02.0.0 rejects this saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+ struct s { int j; const int *ap[3]; };
+ struct s *b; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+ }
+#endif
-/* Ultrix mips cc rejects this. */
-typedef int charset[2]; const charset x;
-/* SunOS 4.1.1 cc rejects this. */
-char const *const *ccp;
-char **p;
-/* NEC SVR4.0.2 mips cc rejects this. */
-struct point {int x, y;};
-static struct point const zero = {0,0};
-/* AIX XL C 1.02.0.0 rejects this.
- It does not let you subtract one const X* pointer from another in an arm
- of an if-expression whose if-part is not a constant expression */
-const char *g = "string";
-ccp = &g + (g ? g-g : 0);
-/* HPUX 7.0 cc rejects these. */
-++ccp;
-p = (char**) ccp;
-ccp = (char const *const *) p;
-{ /* SCO 3.2v4 cc rejects this. */
- char *t;
- char const *s = 0 ? (char *) 0 : (char const *) 0;
-
- *t++ = 0;
-}
-{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */
- int x[] = {25, 17};
- const int *foo = &x[0];
- ++foo;
-}
-{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */
- typedef const int *iptr;
- iptr p = 0;
- ++p;
-}
-{ /* AIX XL C 1.02.0.0 rejects this saying
- "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
- struct s { int j; const int *ap[3]; };
- struct s *b; b->j = 5;
-}
-{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
- const int foo = 10;
-}
-
-; return 0; }
-EOF
-if { (eval echo configure:5551: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11247: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11250: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11253: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11256: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
ac_cv_c_const=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_c_const=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_c_const=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
fi
-
-echo "$ac_t""$ac_cv_c_const" 1>&6
+echo "$as_me:11266: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6
if test $ac_cv_c_const = no; then
- cat >> confdefs.h <<\EOF
-#define const
+
+cat >>confdefs.h <<\EOF
+#define const
EOF
fi
-echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:5572: checking for inline" >&5
-if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:11276: 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 <<EOF
-#line 5579 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11284 "configure"
#include "confdefs.h"
+#ifndef __cplusplus
+static $ac_kw int static_foo () {return 0; }
+$ac_kw int foo () {return 0; }
+#endif
-int main() {
-} $ac_kw foo() {
-; return 0; }
-EOF
-if { (eval echo configure:5586: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11293: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11296: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11299: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11302: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
ac_cv_c_inline=$ac_kw; break
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-
-echo "$ac_t""$ac_cv_c_inline" 1>&6
-case "$ac_cv_c_inline" in
+echo "$as_me:11313: 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
+ no)
+cat >>confdefs.h <<\EOF
+#define inline
EOF
;;
- *) cat >> confdefs.h <<EOF
+ *) cat >>confdefs.h <<EOF
#define inline $ac_cv_c_inline
EOF
;;
esac
-test "$ac_cv_c_inline" != no && cat >> confdefs.h <<\EOF
+NCURSES_INLINE=
+if test "$ac_cv_c_inline" != no ; then
+ cat >>confdefs.h <<\EOF
#define CC_HAS_INLINE_FUNCS 1
EOF
-
-
-echo $ac_n "checking if unsigned literals are legal""... $ac_c" 1>&6
-echo "configure:5618: checking if unsigned literals are legal" >&5
-if eval "test \"`echo '$''{'cf_cv_unsigned_literals'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
- cat > conftest.$ac_ext <<EOF
-#line 5624 "configure"
-#include "confdefs.h"
-
-int main() {
-long x = 1L + 1UL + 1U + 1
-; return 0; }
-EOF
-if { (eval echo configure:5631: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- cf_cv_unsigned_literals=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_unsigned_literals=no
+ NCURSES_INLINE=inline
fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$cf_cv_unsigned_literals" 1>&6
+if test $NCURSES_CHTYPE = auto ; then
-
-echo $ac_n "checking for type of chtype""... $ac_c" 1>&6
-echo "configure:5649: checking for type of chtype" >&5
-if eval "test \"`echo '$''{'cf_cv_typeof_chtype'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:11339: 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
else
-
+
if test "$cross_compiling" = yes; then
cf_cv_typeof_chtype=long
else
- cat > conftest.$ac_ext <<EOF
-#line 5658 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11349 "configure"
#include "confdefs.h"
-#ifdef USE_WIDEC_SUPPORT
-#include <stddef.h> /* we want wchar_t */
-#define WANT_BITS 39
-#else
#define WANT_BITS 31
-#endif
#include <stdio.h>
int main()
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
char *result = "long";
-#ifdef USE_WIDEC_SUPPORT
- /*
- * If wchar_t is smaller than a long, it must be an int or a
- * short. We prefer not to use a short anyway.
- */
- if (sizeof(unsigned long) > sizeof(wchar_t))
- result = "int";
-#endif
if (sizeof(unsigned long) > sizeof(unsigned int)) {
int n;
- unsigned int x;
+ unsigned int x, y;
for (n = 0; n < WANT_BITS; n++) {
- unsigned int y = (x >> n);
+ x = (1 << n);
+ y = (x >> n);
if (y != 1 || x == 0) {
x = 0;
break;
@@ -5696,52 +11376,108 @@ int main()
fputs(result, fp);
fclose(fp);
}
- exit(0);
+ ${cf_cv_main_return:-return}(0);
}
-
-EOF
-if { (eval echo configure:5704: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:11384: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:11387: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:11389: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11392: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_typeof_chtype=`cat cf_test.out`
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- cf_cv_typeof_chtype=long
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_typeof_chtype=long
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
rm -f cf_test.out
-
-fi
-echo "$ac_t""$cf_cv_typeof_chtype" 1>&6
+fi
+echo "$as_me:11407: result: $cf_cv_typeof_chtype" >&5
+echo "${ECHO_T}$cf_cv_typeof_chtype" >&6
-cat >> confdefs.h <<EOF
+cat >>confdefs.h <<EOF
#define TYPEOF_CHTYPE $cf_cv_typeof_chtype
EOF
+else
+ cf_cv_typeof_chtype=$NCURSES_CHTYPE
+fi
+
+echo "$as_me:11418: 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 11425 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+long x = 1L + 1UL + 1U + 1
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11437: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11440: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11443: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11446: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_unsigned_literals=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_unsigned_literals=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+echo "$as_me:11458: result: $cf_cv_unsigned_literals" >&5
+echo "${ECHO_T}$cf_cv_unsigned_literals" >&6
cf_cv_1UL="1"
test "$cf_cv_unsigned_literals" = yes && cf_cv_1UL="${cf_cv_1UL}U"
test "$cf_cv_typeof_chtype" = long && cf_cv_1UL="${cf_cv_1UL}L"
-
-
+if test $NCURSES_MMASK_T = auto ; then
+ cf_cv_typeof_mmask_t=long
+else
+ cf_cv_typeof_mmask_t=$NCURSES_MMASK_T
+fi
### Checks for external-data
-
-echo $ac_n "checking if external errno is declared""... $ac_c" 1>&6
-echo "configure:5739: checking if external errno is declared" >&5
-if eval "test \"`echo '$''{'cf_cv_dcl_errno'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:11473: 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 <<EOF
-#line 5745 "configure"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11480 "configure"
#include "confdefs.h"
#ifdef HAVE_STDLIB_H
@@ -5749,31 +11485,44 @@ else
#endif
#include <stdio.h>
#include <sys/types.h>
-#include <errno.h>
-int main() {
+#include <errno.h>
+int
+main ()
+{
long x = (long) errno
-; return 0; }
-EOF
-if { (eval echo configure:5758: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11498: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11501: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11504: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11507: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_dcl_errno=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_dcl_errno=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_dcl_errno=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
fi
-
-echo "$ac_t""$cf_cv_dcl_errno" 1>&6
+echo "$as_me:11518: 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
@@ -5781,74 +11530,87 @@ fi
# It's possible (for near-UNIX clones) that the data doesn't exist
-echo $ac_n "checking if external errno exists""... $ac_c" 1>&6
-echo "configure:5786: checking if external errno exists" >&5
-if eval "test \"`echo '$''{'cf_cv_have_errno'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:11533: 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 <<EOF
-#line 5792 "configure"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11540 "configure"
#include "confdefs.h"
#undef errno
extern int errno;
-int main() {
+int
+main ()
+{
errno = 2
-; return 0; }
-EOF
-if { (eval echo configure:5802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:11555: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:11558: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:11561: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11564: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_have_errno=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_have_errno=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_have_errno=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-
-echo "$ac_t""$cf_cv_have_errno" 1>&6
+echo "$as_me:11575: 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 $ac_n "checking if data-only library module links""... $ac_c" 1>&6
-echo "configure:5832: checking if data-only library module links" >&5
-if eval "test \"`echo '$''{'cf_cv_link_dataonly'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:11588: 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
else
-
+
rm -f conftest.a
cat >conftest.$ac_ext <<EOF
-#line 5839 "configure"
+#line 11596 "configure"
int testdata[3] = { 123, 456, 789 };
EOF
- if { (eval echo configure:5842: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } ; then
+ if { (eval echo "$as_me:11599: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11602: \$? = $ac_status" >&5
+ (exit $ac_status); } ; then
mv conftest.o data.o && \
( $AR $AR_OPTS conftest.a data.o ) 2>&5 1>/dev/null
fi
rm -f conftest.$ac_ext data.o
cat >conftest.$ac_ext <<EOF
-#line 5848 "configure"
+#line 11609 "configure"
int testfunc()
{
#if defined(NeXT)
- exit(1); /* I'm told this linker is broken */
+ ${cf_cv_main_return:-return}(1); /* I'm told this linker is broken */
#else
extern int testdata[3];
return testdata[0] == 123
@@ -5857,65 +11619,75 @@ int testfunc()
#endif
}
EOF
- if { (eval echo configure:5861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo "$as_me:11622: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11625: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
mv conftest.o func.o && \
( $AR $AR_OPTS conftest.a func.o ) 2>&5 1>/dev/null
fi
rm -f conftest.$ac_ext func.o
- ( eval $ac_cv_prog_RANLIB conftest.a ) 2>&5 >/dev/null
+ ( eval $RANLIB conftest.a ) 2>&5 >/dev/null
cf_saveLIBS="$LIBS"
LIBS="conftest.a $LIBS"
if test "$cross_compiling" = yes; then
cf_cv_link_dataonly=unknown
else
- cat > conftest.$ac_ext <<EOF
-#line 5873 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11638 "configure"
#include "confdefs.h"
int main()
{
extern int testfunc();
- exit (!testfunc());
+ ${cf_cv_main_return:-return} (!testfunc());
}
-
-EOF
-if { (eval echo configure:5883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:11649: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:11652: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:11654: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11657: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_link_dataonly=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- cf_cv_link_dataonly=no
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_link_dataonly=no
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
LIBS="$cf_saveLIBS"
-
+
fi
-echo "$ac_t""$cf_cv_link_dataonly" 1>&6
+echo "$as_me:11672: result: $cf_cv_link_dataonly" >&5
+echo "${ECHO_T}$cf_cv_link_dataonly" >&6
if test "$cf_cv_link_dataonly" = no ; then
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define BROKEN_LINKER 1
EOF
BROKEN_LINKER=1
fi
-
-
### Checks for library functions.
+
for ac_func in \
getcwd \
getegid \
geteuid \
getttynam \
issetugid \
-memccpy \
-nanosleep \
poll \
remove \
select \
@@ -5931,73 +11703,89 @@ times \
vsnprintf \
do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5936: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 5941 "configure"
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:11707: 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 11713 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
+ which can conflict with char $ac_func (); below. */
#include <assert.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 $ac_func();
-
-int main() {
+ builtin and then its argument prototype would still apply. */
+char $ac_func ();
+char (*f) ();
+int
+main ()
+{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-$ac_func();
+f = $ac_func;
#endif
-; return 0; }
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:11744: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:11747: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:11750: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11753: \$? = $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:11763: 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
-if { (eval echo configure:5964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
fi
done
if test "$with_getcap" = "yes" ; then
-
-echo $ac_n "checking for terminal-capability database functions""... $ac_c" 1>&6
-echo "configure:5991: checking for terminal-capability database functions" >&5
-if eval "test \"`echo '$''{'cf_cv_cgetent'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+
+echo "$as_me:11775: 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 <<EOF
-#line 5997 "configure"
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 11782 "configure"
#include "confdefs.h"
#include <stdlib.h>
-int main() {
+int
+main ()
+{
char temp[128];
char *buf = temp;
@@ -6005,198 +11793,325 @@ int main() {
cgetent(&buf, /* int *, */ &db_array, "vt100");
cgetcap(buf, "tc", '=');
cgetmatch(buf, "tc");
-
-; return 0; }
-EOF
-if { (eval echo configure:6012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:11802: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:11805: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:11808: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11811: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_cgetent=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_cgetent=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_cgetent=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$ac_t""$cf_cv_cgetent" 1>&6
-test "$cf_cv_cgetent" = yes && cat >> confdefs.h <<\EOF
+echo "$as_me:11823: result: $cf_cv_cgetent" >&5
+echo "${ECHO_T}$cf_cv_cgetent" >&6
+test "$cf_cv_cgetent" = yes && cat >>confdefs.h <<\EOF
#define HAVE_BSD_CGETENT 1
EOF
-
fi
-
-echo $ac_n "checking for isascii""... $ac_c" 1>&6
-echo "configure:6035: checking for isascii" >&5
-if eval "test \"`echo '$''{'cf_cv_have_isascii'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:11831: 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 <<EOF
-#line 6041 "configure"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11838 "configure"
#include "confdefs.h"
#include <ctype.h>
-int main() {
+int
+main ()
+{
int x = isascii(' ')
-; return 0; }
-EOF
-if { (eval echo configure:6048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:11850: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:11853: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:11856: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11859: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_have_isascii=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_have_isascii=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_have_isascii=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$ac_t""$cf_cv_have_isascii" 1>&6
-test "$cf_cv_have_isascii" = yes && cat >> confdefs.h <<\EOF
+echo "$as_me:11870: result: $cf_cv_have_isascii" >&5
+echo "${ECHO_T}$cf_cv_have_isascii" >&6
+test "$cf_cv_have_isascii" = yes && cat >>confdefs.h <<\EOF
#define HAVE_ISASCII 1
EOF
-
-
if test "$ac_cv_func_sigaction" = yes; then
-echo $ac_n "checking whether sigaction needs _POSIX_SOURCE""... $ac_c" 1>&6
-echo "configure:6069: checking whether sigaction needs _POSIX_SOURCE" >&5
-cat > conftest.$ac_ext <<EOF
-#line 6071 "configure"
+echo "$as_me:11877: 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 11880 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
-int main() {
+int
+main ()
+{
struct sigaction act
-; return 0; }
-EOF
-if { (eval echo configure:6080: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11894: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11897: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11900: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11903: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
sigact_bad=no
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
-
-cat > conftest.$ac_ext <<EOF
-#line 6089 "configure"
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 11911 "configure"
#include "confdefs.h"
#define _POSIX_SOURCE
#include <sys/types.h>
#include <signal.h>
-int main() {
+int
+main ()
+{
struct sigaction act
-; return 0; }
-EOF
-if { (eval echo configure:6099: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:11926: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:11929: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:11932: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11935: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
sigact_bad=yes
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define SVR4_ACTION 1
EOF
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- sigact_bad=unknown
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+sigact_bad=unknown
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
fi
-rm -f conftest*
-echo "$ac_t""$sigact_bad" 1>&6
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:11950: result: $sigact_bad" >&5
+echo "${ECHO_T}$sigact_bad" >&6
fi
+echo "$as_me:11954: 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
+else
+
+if test "$cross_compiling" = yes; then
+ cf_cv_func_nanosleep=unknown
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11964 "configure"
+#include "confdefs.h"
-for ac_hdr in \
+#include <stdio.h>
+#include <errno.h>
+#include <time.h>
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+int main() {
+ struct timespec ts1, ts2;
+ int code;
+ ts1.tv_sec = 0;
+ ts1.tv_nsec = 750000000;
+ ts2.tv_sec = 0;
+ ts2.tv_nsec = 0;
+ errno = 0;
+ code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */
+ ${cf_cv_main_return:-return}(code != 0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:11989: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:11992: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:11994: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:11997: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_func_nanosleep=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_func_nanosleep=no
+fi
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+fi
+echo "$as_me:12009: result: $cf_cv_func_nanosleep" >&5
+echo "${ECHO_T}$cf_cv_func_nanosleep" >&6
+
+test "$cf_cv_func_nanosleep" = "yes" && cat >>confdefs.h <<\EOF
+#define HAVE_NANOSLEEP 1
+EOF
+
+for ac_header in \
termio.h \
termios.h \
unistd.h \
do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6127: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 6132 "configure"
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:12023: 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 12029 "configure"
#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6137: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:12033: \"$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:12039: \$? = $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
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ 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
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
+ eval "$as_ac_Header=no"
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_ext
fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
+echo "$as_me:12058: 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
-
-else
- echo "$ac_t""no" 1>&6
+
fi
done
if test "$ISC" = yes ; then
- for ac_hdr in sys/termio.h
+
+for ac_header in sys/termio.h
do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6168: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 6173 "configure"
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:12073: 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 12079 "configure"
#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6178: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:12083: \"$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:12089: \$? = $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 "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
+ eval "$as_ac_Header=no"
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_ext
fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
+echo "$as_me:12108: 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
-
-else
- echo "$ac_t""no" 1>&6
+
fi
done
@@ -6208,64 +12123,89 @@ if test "$ac_cv_header_termios_h" = yes ; then
*) termios_bad=maybe ;;
esac
if test "$termios_bad" = maybe ; then
- echo $ac_n "checking whether termios.h needs _POSIX_SOURCE""... $ac_c" 1>&6
-echo "configure:6213: checking whether termios.h needs _POSIX_SOURCE" >&5
- cat > conftest.$ac_ext <<EOF
-#line 6215 "configure"
+ echo "$as_me:12126: 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 12129 "configure"
#include "confdefs.h"
#include <termios.h>
-int main() {
+int
+main ()
+{
struct termios foo; int x = foo.c_iflag
-; return 0; }
-EOF
-if { (eval echo configure:6222: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:12141: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:12144: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:12147: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12150: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
termios_bad=no
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
-
- cat > conftest.$ac_ext <<EOF
-#line 6231 "configure"
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12158 "configure"
#include "confdefs.h"
#define _POSIX_SOURCE
#include <termios.h>
-int main() {
+int
+main ()
+{
struct termios foo; int x = foo.c_iflag
-; return 0; }
-EOF
-if { (eval echo configure:6240: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:12172: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:12175: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:12178: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12181: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
termios_bad=unknown
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- termios_bad=yes cat >> confdefs.h <<\EOF
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+termios_bad=yes cat >>confdefs.h <<\EOF
#define SVR4_TERMIO 1
EOF
fi
-rm -f conftest*
-
+rm -f conftest.$ac_objext conftest.$ac_ext
+
fi
-rm -f conftest*
- echo "$ac_t""$termios_bad" 1>&6
+rm -f conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:12196: result: $termios_bad" >&5
+echo "${ECHO_T}$termios_bad" >&6
fi
fi
-
-
-echo $ac_n "checking for tcgetattr""... $ac_c" 1>&6
-echo "configure:6263: checking for tcgetattr" >&5
-if eval "test \"`echo '$''{'cf_cv_have_tcgetattr'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:12201: 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 <<EOF
-#line 6269 "configure"
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 12208 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -6282,64 +12222,90 @@ cat > conftest.$ac_ext <<EOF
#endif
#endif
-int main() {
+int
+main ()
+{
TTY foo;
tcgetattr(1, &foo);
-; return 0; }
-EOF
-if { (eval echo configure:6292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:12236: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12239: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:12242: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12245: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_have_tcgetattr=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_have_tcgetattr=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_have_tcgetattr=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-
-echo "$ac_t""$cf_cv_have_tcgetattr" 1>&6
-test "$cf_cv_have_tcgetattr" = yes && cat >> confdefs.h <<\EOF
+echo "$as_me:12255: 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 $ac_n "checking for vsscanf function or workaround""... $ac_c" 1>&6
-echo "configure:6312: checking for vsscanf function or workaround" >&5
-if eval "test \"`echo '$''{'cf_cv_func_vsscanf'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:12261: 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 <<EOF
-#line 6318 "configure"
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 12268 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
-int main() {
+int
+main ()
+{
va_list ap;
vsscanf("from", "%d", ap)
-; return 0; }
-EOF
-if { (eval echo configure:6329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:12284: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12287: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:12290: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12293: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_func_vsscanf=vsscanf
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
-
-cat > conftest.$ac_ext <<EOF
-#line 6338 "configure"
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 12301 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
-int main() {
+int
+main ()
+{
FILE strbuf;
char *str = "from";
@@ -6349,23 +12315,36 @@ int main() {
strbuf._cnt = strlen(str);
strbuf._file = _NFILE;
return (vfscanf(&strbuf, "%d", ap))
-; return 0; }
-EOF
-if { (eval echo configure:6355: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:12323: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12326: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:12329: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12332: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_func_vsscanf=vfscanf
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
-
-cat > conftest.$ac_ext <<EOF
-#line 6364 "configure"
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 12340 "configure"
#include "confdefs.h"
#include <stdarg.h>
#include <stdio.h>
-int main() {
+int
+main ()
+{
FILE strbuf;
char *str = "from";
@@ -6375,104 +12354,123 @@ int main() {
strbuf._cnt = strlen(str);
strbuf._file = _NFILE;
return (_doscan(&strbuf, "%d", ap))
-; return 0; }
-EOF
-if { (eval echo configure:6381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:12362: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12365: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:12368: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12371: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_func_vsscanf=_doscan
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
-
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+
cf_cv_func_vsscanf=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-
-echo "$ac_t""$cf_cv_func_vsscanf" 1>&6
+echo "$as_me:12386: result: $cf_cv_func_vsscanf" >&5
+echo "${ECHO_T}$cf_cv_func_vsscanf" >&6
case $cf_cv_func_vsscanf in #(vi
-vsscanf) cat >> confdefs.h <<\EOF
+vsscanf) cat >>confdefs.h <<\EOF
#define HAVE_VSSCANF 1
EOF
;; #(vi
-vfscanf) cat >> confdefs.h <<\EOF
+vfscanf) cat >>confdefs.h <<\EOF
#define HAVE_VFSCANF 1
EOF
;; #(vi
-_doscan) cat >> confdefs.h <<\EOF
+_doscan) cat >>confdefs.h <<\EOF
#define HAVE__DOSCAN 1
EOF
;;
esac
-
-
-echo $ac_n "checking for working mkstemp""... $ac_c" 1>&6
-echo "configure:6418: checking for working mkstemp" >&5
-if eval "test \"`echo '$''{'cf_cv_func_mkstemp'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:12404: 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
else
-
+
rm -f conftest*
if test "$cross_compiling" = yes; then
- echo $ac_n "checking for mkstemp""... $ac_c" 1>&6
-echo "configure:6426: checking for mkstemp" >&5
-if eval "test \"`echo '$''{'ac_cv_func_mkstemp'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ echo "$as_me:12412: 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 <<EOF
-#line 6431 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12418 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char mkstemp(); below. */
+ which can conflict with char mkstemp (); below. */
#include <assert.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 mkstemp();
-
-int main() {
+ builtin and then its argument prototype would still apply. */
+char mkstemp ();
+char (*f) ();
+int
+main ()
+{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_mkstemp) || defined (__stub___mkstemp)
choke me
#else
-mkstemp();
+f = mkstemp;
#endif
-; return 0; }
-EOF
-if { (eval echo configure:6454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_mkstemp=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_mkstemp=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'mkstemp`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- :
-else
- echo "$ac_t""no" 1>&6
-fi
-
-
-else
- cat > conftest.$ac_ext <<EOF
-#line 6476 "configure"
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:12449: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12452: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:12455: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12458: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_mkstemp=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_mkstemp=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:12468: result: $ac_cv_func_mkstemp" >&5
+echo "${ECHO_T}$ac_cv_func_mkstemp" >&6
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12473 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -6505,106 +12503,127 @@ int main()
if (result == 0
&& !strcmp(name[0], name[1]))
result = 1;
- exit(result);
+ ${cf_cv_main_return:-return}(result);
}
-EOF
-if { (eval echo configure:6513: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:12511: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12514: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:12516: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12519: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_func_mkstemp=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- cf_cv_func_mkstemp=no
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_func_mkstemp=no
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
fi
-
-echo "$ac_t""$cf_cv_func_mkstemp" 1>&6
+echo "$as_me:12534: result: $cf_cv_func_mkstemp" >&5
+echo "${ECHO_T}$cf_cv_func_mkstemp" >&6
if test "$cf_cv_func_mkstemp" = yes ; then
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define HAVE_MKSTEMP 1
EOF
fi
-
# setup for prototype of fallback for vsscanf()
+
if test "$cf_cv_func_vsscanf" = vsscanf ; then
HAVE_VSSCANF=1
else
HAVE_VSSCANF=0
fi
-
if test "$cross_compiling" = yes ; then
- echo "configure: warning: cross compiling: assume setvbuf params not reversed" 1>&2
+ { echo "$as_me:12552: WARNING: cross compiling: assume setvbuf params not reversed" >&5
+echo "$as_me: WARNING: cross compiling: assume setvbuf params not reversed" >&2;}
else
- echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6
-echo "configure:6551: checking whether setvbuf arguments are reversed" >&5
-if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ echo "$as_me:12555: 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 "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
+ { { echo "$as_me:12561: 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 <<EOF
-#line 6559 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12566 "configure"
#include "confdefs.h"
#include <stdio.h>
/* If setvbuf has the reversed format, exit 0. */
-main () {
+int
+main ()
+{
/* This call has the arguments reversed.
A reversed system may check and see that the address of main
is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */
if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0)
- exit(1);
+ $ac_main_return(1);
putc('\r', stdout);
- exit(0); /* Non-reversed systems segv here. */
+ $ac_main_return(0); /* Non-reversed systems segv here. */
}
-EOF
-if { (eval echo configure:6573: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:12583: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12586: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:12588: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12591: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
ac_cv_func_setvbuf_reversed=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_func_setvbuf_reversed=no
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_setvbuf_reversed=no
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
rm -f core core.* *.core
fi
-
-echo "$ac_t""$ac_cv_func_setvbuf_reversed" 1>&6
+echo "$as_me:12604: 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
- cat >> confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define SETVBUF_REVERSED 1
EOF
fi
fi
-echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:6598: checking return type of signal handlers" >&5
-if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:12615: checking return type of signal handlers" >&5
+echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6
+if test "${ac_cv_type_signal+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- cat > conftest.$ac_ext <<EOF
-#line 6603 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12621 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
#ifdef signal
-#undef signal
+# undef signal
#endif
#ifdef __cplusplus
extern "C" void (*signal (int, void (*)(int)))(int);
@@ -6612,70 +12631,93 @@ extern "C" void (*signal (int, void (*)(int)))(int);
void (*signal ()) ();
#endif
-int main() {
+int
+main ()
+{
int i;
-; return 0; }
-EOF
-if { (eval echo configure:6620: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:12643: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:12646: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:12649: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12652: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
ac_cv_type_signal=void
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_type_signal=int
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_signal=int
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
fi
+echo "$as_me:12662: result: $ac_cv_type_signal" >&5
+echo "${ECHO_T}$ac_cv_type_signal" >&6
-echo "$ac_t""$ac_cv_type_signal" 1>&6
-cat >> confdefs.h <<EOF
+cat >>confdefs.h <<EOF
#define RETSIGTYPE $ac_cv_type_signal
EOF
-
-
-echo $ac_n "checking for type sigaction_t""... $ac_c" 1>&6
-echo "configure:6640: checking for type sigaction_t" >&5
-if eval "test \"`echo '$''{'cf_cv_type_sigaction'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:12669: 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 <<EOF
-#line 6646 "configure"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12676 "configure"
#include "confdefs.h"
#include <signal.h>
-int main() {
+int
+main ()
+{
sigaction_t x
-; return 0; }
-EOF
-if { (eval echo configure:6654: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:12689: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:12692: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:12695: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12698: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_type_sigaction=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_type_sigaction=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_type_sigaction=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$ac_t""$cf_cv_type_sigaction" 1>&6
-test "$cf_cv_type_sigaction" = yes && cat >> confdefs.h <<\EOF
+echo "$as_me:12709: 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 $ac_n "checking declaration of size-change""... $ac_c" 1>&6
-echo "configure:6675: checking declaration of size-change" >&5
-if eval "test \"`echo '$''{'cf_cv_sizechange'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:12715: 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"
@@ -6684,8 +12726,8 @@ do
CPPFLAGS="$cf_save_CPPFLAGS"
test -n "$cf_opts" && CPPFLAGS="$CPPFLAGS -D$cf_opts"
- cat > conftest.$ac_ext <<EOF
-#line 6689 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12730 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_TERMIOS_H
@@ -6706,7 +12748,9 @@ do
#include <sys/ioctl.h>
#endif
-int main() {
+int
+main ()
+{
#ifdef TIOCGSIZE
struct ttysize win; /* FIXME: what system is this? */
@@ -6721,19 +12765,30 @@ int main() {
no TIOCGSIZE or TIOCGWINSZ
#endif /* TIOCGWINSZ */
#endif /* TIOCGSIZE */
-
-; return 0; }
-EOF
-if { (eval echo configure:6728: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:12774: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:12777: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:12780: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12783: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_sizechange=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_sizechange=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_sizechange=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
CPPFLAGS="$cf_save_CPPFLAGS"
if test "$cf_cv_sizechange" = yes ; then
@@ -6744,16 +12799,16 @@ rm -f conftest*
done
fi
-
-echo "$ac_t""$cf_cv_sizechange" 1>&6
+echo "$as_me:12802: result: $cf_cv_sizechange" >&5
+echo "${ECHO_T}$cf_cv_sizechange" >&6
if test "$cf_cv_sizechange" != no ; then
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define HAVE_SIZECHANGE 1
EOF
case $cf_cv_sizechange in #(vi
NEED*)
- cat >> confdefs.h <<EOF
+ cat >>confdefs.h <<EOF
#define $cf_cv_sizechange 1
EOF
@@ -6761,109 +12816,139 @@ EOF
esac
fi
-
-echo $ac_n "checking for memmove""... $ac_c" 1>&6
-echo "configure:6767: checking for memmove" >&5
-if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:12819: 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 <<EOF
-#line 6772 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12825 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char memmove(); below. */
+ which can conflict with char memmove (); below. */
#include <assert.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 memmove();
-
-int main() {
+ builtin and then its argument prototype would still apply. */
+char memmove ();
+char (*f) ();
+int
+main ()
+{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_memmove) || defined (__stub___memmove)
choke me
#else
-memmove();
+f = memmove;
#endif
-; return 0; }
-EOF
-if { (eval echo configure:6795: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_memmove=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_memmove=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'memmove`\" = yes"; then
- echo "$ac_t""yes" 1>&6
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:12856: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12859: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:12862: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12865: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_memmove=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_memmove=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:12875: result: $ac_cv_func_memmove" >&5
+echo "${ECHO_T}$ac_cv_func_memmove" >&6
+if test $ac_cv_func_memmove = yes; then
:
else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for bcopy""... $ac_c" 1>&6
-echo "configure:6814: checking for bcopy" >&5
-if eval "test \"`echo '$''{'ac_cv_func_bcopy'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:12881: 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 <<EOF
-#line 6819 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12887 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char bcopy(); below. */
+ which can conflict with char bcopy (); below. */
#include <assert.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 bcopy();
-
-int main() {
+ builtin and then its argument prototype would still apply. */
+char bcopy ();
+char (*f) ();
+int
+main ()
+{
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_bcopy) || defined (__stub___bcopy)
choke me
#else
-bcopy();
+f = bcopy;
#endif
-; return 0; }
-EOF
-if { (eval echo configure:6842: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_bcopy=yes"
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:12918: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12921: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:12924: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12927: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_bcopy=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_func_bcopy=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+fi
+echo "$as_me:12937: 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:12941: 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
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_bcopy=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_func_'bcopy`\" = yes"; then
- echo "$ac_t""yes" 1>&6
-
- echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6
-echo "configure:6858: checking if bcopy does overlapping moves" >&5
-if eval "test \"`echo '$''{'cf_cv_good_bcopy'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
if test "$cross_compiling" = yes; then
cf_cv_good_bcopy=unknown
else
- cat > conftest.$ac_ext <<EOF
-#line 6867 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12951 "configure"
#include "confdefs.h"
int main() {
@@ -6872,39 +12957,46 @@ int main() {
bcopy(data, temp, sizeof(data));
bcopy(temp+10, temp, 15);
bcopy(temp+5, temp+15, 10);
- exit (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
+ ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz"));
}
-
-EOF
-if { (eval echo configure:6880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:12965: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12968: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:12970: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12973: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_good_bcopy=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- cf_cv_good_bcopy=no
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_good_bcopy=no
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
fi
+echo "$as_me:12986: result: $cf_cv_good_bcopy" >&5
+echo "${ECHO_T}$cf_cv_good_bcopy" >&6
-echo "$ac_t""$cf_cv_good_bcopy" 1>&6
-
else
- echo "$ac_t""no" 1>&6
-cf_cv_good_bcopy=no
+ cf_cv_good_bcopy=no
fi
if test "$cf_cv_good_bcopy" = yes ; then
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define USE_OK_BCOPY 1
EOF
else
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define USE_MY_MEMMOVE 1
EOF
@@ -6912,18 +13004,17 @@ EOF
fi
-
-echo $ac_n "checking if poll really works""... $ac_c" 1>&6
-echo "configure:6918: checking if poll really works" >&5
-if eval "test \"`echo '$''{'cf_cv_working_poll'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:13007: 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
else
-
+
if test "$cross_compiling" = yes; then
cf_cv_working_poll=unknown
else
- cat > conftest.$ac_ext <<EOF
-#line 6927 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13017 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -6940,114 +13031,427 @@ int main() {
myfds.events = POLLIN;
ret = poll(&myfds, 1, 100);
- exit(ret != 0);
+ ${cf_cv_main_return:-return}(ret != 0);
}
-EOF
-if { (eval echo configure:6947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:13038: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:13041: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:13043: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13046: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_working_poll=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- cf_cv_working_poll=no
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_working_poll=no
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
fi
-
-echo "$ac_t""$cf_cv_working_poll" 1>&6
-test "$cf_cv_working_poll" = "yes" && cat >> confdefs.h <<\EOF
+echo "$as_me:13058: 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
+if test "$with_hashed_db" != no ; then
+ cat >>confdefs.h <<\EOF
+#define USE_HASHED_DB 1
+EOF
+echo "$as_me:13069: 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 13075 "configure"
+#include "confdefs.h"
+#include <db.h>
+_ACEOF
+if { (eval echo "$as_me:13079: \"$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:13085: \$? = $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_db_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ ac_cv_header_db_h=no
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:13104: 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:13108: 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
+else
+
+cf_cv_hashed_db_version=unknown
+
+for cf_db_version in 1 2 3 4
+do
+
+echo "(line 13119) testing checking for db version $cf_db_version ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13122 "configure"
+#include "confdefs.h"
+
+$ac_includes_default
+#include <db.h>
+
+#ifdef DB_VERSION_MAJOR
+ /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */
+#if $cf_db_version == DB_VERSION_MAJOR
+ /* ok */
+#else
+ make an error
+#endif
+#else
+#if $cf_db_version == 1
+ /* ok: assuming this is DB 1.8.5 */
+#else
+ make an error
+#endif
+#endif
+
+int
+main ()
+{
+DBT *foo = 0
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13152: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13155: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13158: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13161: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ cf_cv_hashed_db_version=$cf_db_version
+ break
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
-if test -z "$cf_user_CFLAGS" ; then
- CFLAGS=`echo ${CFLAGS} | sed -e 's/-g //' -e 's/-g$//'`
- CXXFLAGS=`echo ${CXXFLAGS} | sed -e 's/-g //' -e 's/-g$//'`
fi
+echo "$as_me:13175: 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:13179: error: Cannot determine version of db" >&5
+echo "$as_me: error: Cannot determine version of db" >&2;}
+ { (exit 1); exit 1; }; }
+else
-ac_safe=`echo "stdbool.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for stdbool.h""... $ac_c" 1>&6
-echo "configure:6976: checking for stdbool.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:13184: 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
else
- cat > conftest.$ac_ext <<EOF
-#line 6981 "configure"
+
+cf_cv_hashed_db_libs=unknown
+for cf_db_libs in 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"
+ fi
+
+echo "(line 13198) testing checking for library "$cf_db_libs" ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13201 "configure"
#include "confdefs.h"
-#include <stdbool.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6986: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
+
+$ac_includes_default
+#include <db.h>
+
+int
+main ()
+{
+
+ char *path = "/tmp/foo";
+#ifdef DB_VERSION_MAJOR
+#if DB_VERSION_MAJOR >= 4
+ DB *result = 0;
+ db_create(&result, NULL, 0);
+ result->open(result,
+ NULL,
+ path,
+ path,
+ DB_HASH,
+ DB_CREATE,
+ 0644);
+#elif DB_VERSION_MAJOR >= 3
+ DB *result = 0;
+ db_create(&result, NULL, 0);
+ result->open(result,
+ path,
+ path,
+ DB_HASH,
+ DB_CREATE,
+ 0644);
+#elif DB_VERSION_MAJOR >= 2
+ DB *result = 0;
+ db_open(path,
+ DB_HASH,
+ DB_CREATE,
+ 0644,
+ (DB_ENV *) 0,
+ (DB_INFO *) 0,
+ &result);
+#endif /* DB_VERSION_MAJOR */
+#else
+ DB *result = dbopen(path,
+ 2,
+ 0644,
+ DB_HASH,
+ 0);
+#endif
+ ${cf_cv_main_return:-return}(result != 0)
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:13256: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:13259: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:13262: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13265: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ if test -n "$cf_db_libs" ; then
+ cf_cv_hashed_db_libs=$cf_db_libs
+ else
+ cf_cv_hashed_db_libs=default
+ fi
+ LIBS="$cf_save_libs"
+ break
+
else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+ LIBS="$cf_save_libs"
+done
+
+fi
+echo "$as_me:13285: 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:13289: 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"
+ fi
+fi
+
+else
+
+ { { echo "$as_me:13299: error: Cannot find db.h" >&5
+echo "$as_me: error: Cannot find db.h" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+
+fi
+
+if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then
+ CFLAGS=`echo ${CFLAGS} | sed -e 's%-g %%' -e 's%-g$%%'`
+ CXXFLAGS=`echo ${CXXFLAGS} | sed -e 's%-g %%' -e 's%-g$%%'`
fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
+
+# Just in case, check if the C compiler has a bool type.
+
+echo "$as_me:13314: 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
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13322 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+bool foo = false
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13334: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13337: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13340: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13343: \$? = $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 13350 "configure"
+#include "confdefs.h"
+
+#ifndef __BEOS__
+#include <stdbool.h>
+#endif
+
+int
+main ()
+{
+bool foo = false
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13366: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13369: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13372: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13375: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_header_stdbool_h=1
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
cf_cv_header_stdbool_h=0
fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+
+if test "$cf_cv_header_stdbool_h" = 1
+then echo "$as_me:13389: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else echo "$as_me:13391: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
-echo $ac_n "checking for builtin bool type""... $ac_c" 1>&6
-echo "configure:7009: checking for builtin bool type" >&5
-if eval "test \"`echo '$''{'cf_cv_cc_bool_type'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:13395: 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
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
-
- cat > conftest.$ac_ext <<EOF
-#line 7015 "configure"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13403 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
-int main() {
+int
+main ()
+{
bool x = false
-; return 0; }
-EOF
-if { (eval echo configure:7025: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13418: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13421: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13424: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13427: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_cc_bool_type=1
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_cc_bool_type=0
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_cc_bool_type=0
fi
-rm -f conftest*
-
+rm -f conftest.$ac_objext conftest.$ac_ext
+
fi
if test "$cf_cv_cc_bool_type" = 1
-then echo "$ac_t""yes" 1>&6
-else echo "$ac_t""no" 1>&6
+then echo "$as_me:13440: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else echo "$as_me:13442: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
+# Check for C++ compiler characteristics (and ensure that it's there!)
if test -n "$CXX" ; then
- ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ ac_ext=cc
ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
+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 -n "$GXX" ; then
case $cf_cv_system_name in #(vi
os2*) #(vi
@@ -7057,51 +13461,105 @@ os2*) #(vi
cf_stdcpp_libname=stdc++
;;
esac
-echo $ac_n "checking for library $cf_stdcpp_libname""... $ac_c" 1>&6
-echo "configure:7062: checking for library $cf_stdcpp_libname" >&5
-if eval "test \"`echo '$''{'cf_cv_libstdcpp'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:13464: 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="$LIBS -l$cf_stdcpp_libname"
-cat > conftest.$ac_ext <<EOF
-#line 7070 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 13473 "configure"
#include "confdefs.h"
#include <strstream.h>
-int main() {
+int
+main ()
+{
char buf[80];
strstreambuf foo(buf, sizeof(buf))
-; return 0; }
-EOF
-if { (eval echo configure:7081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:13489: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:13492: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:13495: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13498: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_libstdcpp=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_libstdcpp=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_libstdcpp=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save"
fi
-
-echo "$ac_t""$cf_cv_libstdcpp" 1>&6
+echo "$as_me:13510: result: $cf_cv_libstdcpp" >&5
+echo "${ECHO_T}$cf_cv_libstdcpp" >&6
test "$cf_cv_libstdcpp" = yes && CXXLIBS="$CXXLIBS -l$cf_stdcpp_libname"
fi
+ echo "$as_me:13515: 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()
+{
+ ${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:13531: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13534: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest2.$ac_objext && { (eval echo "$as_me:13536: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13539: \$? = $ac_status" >&5
+ (exit $ac_status); };
+then
+ eval cf_cv_prog_CXX_c_o=yes
+else
+ eval cf_cv_prog_CXX_c_o=no
+fi
+rm -f conftest*
+
+fi
+if test $cf_cv_prog_CXX_c_o = yes; then
+ echo "$as_me:13550: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else
+ echo "$as_me:13553: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
case $GXX_VERSION in
1*|2.0-6*)
cf_cxx_library=yes
;;
*-2.7*|2.7*)
-
+
cf_cxx_library=unknown
case $cf_cv_system_name in #(vi
os2*) #(vi
@@ -7111,69 +13569,96 @@ os2*) #(vi
cf_gpp_libname=g++
;;
esac
-if test "$ac_cv_prog_gxx" = yes; then
- echo $ac_n "checking for lib$cf_gpp_libname""... $ac_c" 1>&6
-echo "configure:7117: checking for lib$cf_gpp_libname" >&5
+if test "$GXX" = yes; then
+ echo "$as_me:13573: checking for lib$cf_gpp_libname" >&5
+echo $ECHO_N "checking for lib$cf_gpp_libname... $ECHO_C" >&6
cf_save="$LIBS"
LIBS="$LIBS -l$cf_gpp_libname"
- cat > conftest.$ac_ext <<EOF
-#line 7121 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13578 "configure"
#include "confdefs.h"
#include <$cf_gpp_libname/builtin.h>
-
-int main() {
+
+int
+main ()
+{
two_arg_error_handler_t foo2 = lib_error_handler
-; return 0; }
-EOF
-if { (eval echo configure:7130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:13592: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:13595: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:13598: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13601: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cxx_library=yes
CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
if test "$cf_gpp_libname" = cpp ; then
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define HAVE_GPP_BUILTIN_H 1
EOF
else
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define HAVE_GXX_BUILTIN_H 1
EOF
fi
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cat > conftest.$ac_ext <<EOF
-#line 7150 "configure"
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cat >conftest.$ac_ext <<_ACEOF
+#line 13620 "configure"
#include "confdefs.h"
#include <builtin.h>
-
-int main() {
+
+int
+main ()
+{
two_arg_error_handler_t foo2 = lib_error_handler
-; return 0; }
-EOF
-if { (eval echo configure:7159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:13634: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:13637: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:13640: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13643: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cxx_library=yes
CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define HAVE_BUILTIN_H 1
EOF
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cxx_library=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cxx_library=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save"
- echo "$ac_t""$cf_cxx_library" 1>&6
+ echo "$as_me:13660: result: $cf_cxx_library" >&5
+echo "${ECHO_T}$cf_cxx_library" >&6
fi
;;
@@ -7182,177 +13667,397 @@ fi
;;
esac
- echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:7187: checking how to run the C++ preprocessor" >&5
+ 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
+echo "$as_me:13676: 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 eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
- ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
- CXXCPP="${CXX-g++} -E"
- cat > conftest.$ac_ext <<EOF
-#line 7200 "configure"
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # 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 13693 "configure"
#include "confdefs.h"
-#include <stdlib.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7205: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
+#include <assert.h>
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:13698: \"$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:13704: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
:
else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
- CXXCPP=/lib/cpp
+ # Broken: fails on valid input.
+continue
fi
-rm -f conftest*
- ac_cv_prog_CXXCPP="$CXXCPP"
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
+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 13727 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:13731: \"$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:13737: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
fi
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ # Passes both tests.
+ac_preproc_ok=:
+break
fi
-CXXCPP="$ac_cv_prog_CXXCPP"
-echo "$ac_t""$CXXCPP" 1>&6
+rm -f conftest.err conftest.$ac_ext
-for ac_hdr in typeinfo
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7233: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
else
- cat > conftest.$ac_ext <<EOF
-#line 7238 "configure"
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+echo "$as_me:13774: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # 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 13784 "configure"
#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7243: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
+#include <assert.h>
+ Syntax error
+_ACEOF
+if { (eval echo "$as_me:13789: \"$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:13795: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
+ # Broken: fails on valid input.
+continue
fi
-rm -f conftest*
+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 13818 "configure"
+#include "confdefs.h"
+#include <ac_nonexistent.h>
+_ACEOF
+if { (eval echo "$as_me:13822: \"$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:13828: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-
+if test -z "$ac_cpp_err"; then
+ # Broken: success on invalid input.
+continue
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ # Passes both tests.
+ac_preproc_ok=:
+break
fi
+rm -f conftest.err conftest.$ac_ext
+
done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:13856: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+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
-
-ac_safe=`echo "stdbool.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for stdbool.h""... $ac_c" 1>&6
-echo "configure:7273: checking for stdbool.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 7278 "configure"
+for ac_header in typeinfo
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:13871: 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 13877 "configure"
#include "confdefs.h"
-#include <stdbool.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:13881: \"$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:13887: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_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 "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
+ eval "$as_ac_Header=no"
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_ext
fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
+echo "$as_me:13906: 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:13916: 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
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 13924 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+bool foo = false
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13936: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13939: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13942: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13945: \$? = $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 13952 "configure"
+#include "confdefs.h"
+
+#ifndef __BEOS__
+#include <stdbool.h>
+#endif
+
+int
+main ()
+{
+bool foo = false
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:13968: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:13971: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:13974: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:13977: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_header_stdbool_h=1
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
cf_cv_header_stdbool_h=0
fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
-echo $ac_n "checking for builtin bool type""... $ac_c" 1>&6
-echo "configure:7306: checking for builtin bool type" >&5
-if eval "test \"`echo '$''{'cf_cv_builtin_bool'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+if test "$cf_cv_header_stdbool_h" = 1
+then echo "$as_me:13991: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else echo "$as_me:13993: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+echo "$as_me:13997: 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
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
-
- cat > conftest.$ac_ext <<EOF
-#line 7312 "configure"
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14005 "configure"
#include "confdefs.h"
#include <stdio.h>
#include <sys/types.h>
-int main() {
+int
+main ()
+{
bool x = false
-; return 0; }
-EOF
-if { (eval echo configure:7322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14020: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14023: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14026: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14029: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_builtin_bool=1
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_builtin_bool=0
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_builtin_bool=0
fi
-rm -f conftest*
-
+rm -f conftest.$ac_objext conftest.$ac_ext
+
fi
if test "$cf_cv_builtin_bool" = 1
-then echo "$ac_t""yes" 1>&6
-else echo "$ac_t""no" 1>&6
+then echo "$as_me:14042: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+else echo "$as_me:14044: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
-
-echo $ac_n "checking for size of bool""... $ac_c" 1>&6
-echo "configure:7342: checking for size of bool" >&5
-if eval "test \"`echo '$''{'cf_cv_type_of_bool'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:14048: 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
else
-
+
rm -f cf_test.out
if test "$cross_compiling" = yes; then
cf_cv_type_of_bool=unknown
else
- cat > conftest.$ac_ext <<EOF
-#line 7352 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14059 "configure"
#include "confdefs.h"
-#ifdef __cplusplus
-extern "C" void exit(int);
-#endif
#include <stdlib.h>
#include <stdio.h>
@@ -7388,68 +14093,91 @@ main()
else if (sizeof(x) == sizeof(long)) fputs("long", fp);
fclose(fp);
}
- exit(0);
+ ${cf_cv_main_return:-return}(0);
}
-
-EOF
-if { (eval echo configure:7396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:14101: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:14104: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:14106: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14109: \$? = $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
cf_cv_type_of_bool=unknown
fi
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- cf_cv_type_of_bool=unknown
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_type_of_bool=unknown
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
fi
rm -f cf_test.out
-echo "$ac_t""$cf_cv_type_of_bool" 1>&6
+echo "$as_me:14127: 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;;
esac
- echo "configure: warning: Assuming $NCURSES_BOOL for type of bool" 1>&2
+ { echo "$as_me:14133: 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 $ac_n "checking for special defines needed for etip.h""... $ac_c" 1>&6
-echo "configure:7426: checking for special defines needed for etip.h" >&5
+echo "$as_me:14138: 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"
for cf_math in "" MATH_H
do
for cf_excp in "" MATH_EXCEPTION
do
- CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu"
+ CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -I${srcdir}/include"
test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
-cat > conftest.$ac_ext <<EOF
-#line 7437 "configure"
+cat >conftest.$ac_ext <<_ACEOF
+#line 14150 "configure"
#include "confdefs.h"
#include <etip.h.in>
-int main() {
+int
+main ()
+{
-; return 0; }
-EOF
-if { (eval echo configure:7446: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
-
- test -n "$cf_math" && cat >> confdefs.h <<EOF
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14164: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14167: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14170: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14173: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ test -n "$cf_math" && cat >>confdefs.h <<EOF
#define ETIP_NEEDS_${cf_math} 1
EOF
- test -n "$cf_excp" && cat >> confdefs.h <<EOF
+ test -n "$cf_excp" && cat >>confdefs.h <<EOF
#define ETIP_NEEDS_${cf_excp} 1
EOF
@@ -7457,40 +14185,36 @@ EOF
break
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest.$ac_ext
done
done
-echo "$ac_t""$cf_result" 1>&6
+echo "$as_me:14194: result: $cf_result" >&5
+echo "${ECHO_T}$cf_result" >&6
CXXFLAGS="$cf_save_CXXFLAGS"
-
if test -n "$CXX"; then
-echo $ac_n "checking if $CXX accepts parameter initialization""... $ac_c" 1>&6
-echo "configure:7473: checking if $CXX accepts parameter initialization" >&5
-if eval "test \"`echo '$''{'cf_cv_cpp_param_init'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
-
- ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+echo "$as_me:14199: 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
+else
+
+ ac_ext=cc
ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
+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 "$cross_compiling" = yes; then
cf_cv_cpp_param_init=unknown
else
- cat > conftest.$ac_ext <<EOF
-#line 7490 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14216 "configure"
#include "confdefs.h"
-#ifdef __cplusplus
-extern "C" void exit(int);
-#endif
class TEST {
private:
@@ -7506,94 +14230,201 @@ TEST::TEST(int x = 1) // some compilers do not like second initializer
}
void main() { }
-EOF
-if { (eval echo configure:7511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:14235: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:14238: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:14240: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14243: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_cpp_param_init=yes
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- cf_cv_cpp_param_init=no
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_cpp_param_init=no
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
+ 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
- ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+fi
+echo "$as_me:14262: result: $cf_cv_cpp_param_init" >&5
+echo "${ECHO_T}$cf_cv_cpp_param_init" >&6
+fi
+test "$cf_cv_cpp_param_init" = yes && cat >>confdefs.h <<\EOF
+#define CPP_HAS_PARAM_INIT 1
+EOF
+
+if test -n "$CXX"; then
+
+echo "$as_me:14271: 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
+else
+
+ ac_ext=cc
ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
+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
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14285 "configure"
+#include "confdefs.h"
+class NCursesPanel
+{
+public:
+ NCursesPanel(int nlines,
+ int ncols,
+ int begin_y = 0,
+ int begin_x = 0)
+ {
+ }
+
+ ~NCursesPanel();
+};
+
+template<class T> class NCursesUserPanel : public NCursesPanel
+{
+public:
+ NCursesUserPanel (int nlines,
+ int ncols,
+ int begin_y = 0,
+ int begin_x = 0,
+ const T* p_UserData = static_cast<T*>(0))
+ : NCursesPanel (nlines, ncols, begin_y, begin_x)
+ {
+ };
+ NCursesUserPanel(const T* p_UserData = static_cast<T*>(0)) : NCursesPanel()
+ {
+ };
+
+ virtual ~NCursesUserPanel() {};
+};
+
+int
+main ()
+{
+
+ const char* p_UserData = static_cast<char*>(0)
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14329: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14332: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14335: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14338: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_cpp_static_cast=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_cpp_static_cast=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+
+ 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
fi
+echo "$as_me:14356: result: $cf_cv_cpp_static_cast" >&5
+echo "${ECHO_T}$cf_cv_cpp_static_cast" >&6
-echo "$ac_t""$cf_cv_cpp_param_init" 1>&6
fi
-test "$cf_cv_cpp_param_init" = yes && cat >> confdefs.h <<\EOF
-#define CPP_HAS_PARAM_INIT 1
-EOF
+test "$cf_cv_cpp_static_cast" = yes && cat >>confdefs.h <<\EOF
+#define CPP_HAS_STATIC_CAST 1
+EOF
-
if test -n "$CXX"; then
-
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_ext=cc
ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
+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
-for ac_hdr in strstream.h
+for ac_header in strstream.h
do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7555: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 7560 "configure"
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:14377: 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 14383 "configure"
#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7565: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:14387: \"$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:14393: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_cxx_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
+ 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
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
+ eval "$as_ac_Header=no"
fi
-rm -f conftest*
+rm -f conftest.err conftest.$ac_ext
fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
+echo "$as_me:14412: 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
-
-else
- echo "$ac_t""no" 1>&6
+
fi
done
-
-echo $ac_n "checking if $CXX supports vscan function""... $ac_c" 1>&6
-echo "configure:7593: checking if $CXX supports vscan function" >&5
-if eval "test \"`echo '$''{'cf_cv_cpp_vscan_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:14422: checking if $CXX supports vscan function" >&5
+echo $ECHO_N "checking if $CXX supports vscan function... $ECHO_C" >&6
+if test "${cf_cv_cpp_vscan_func+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
else
-
+
for cf_vscan_func in strstream strstream_cast stdio
do
case $cf_vscan_func in #(vi
@@ -7601,8 +14432,8 @@ else
strstream) cf_vscan_defs=USE_STRSTREAM_VSCAN ;;
strstream_cast) cf_vscan_defs=USE_STRSTREAM_VSCAN_CAST ;;
esac
- cat > conftest.$ac_ext <<EOF
-#line 7606 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14436 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -7638,70 +14469,82 @@ int scanw(const char* fmt, ...)
return result;
}
-int main() {
+int
+main ()
+{
int tmp, foo = scanw("%d", &tmp)
-; return 0; }
-EOF
-if { (eval echo configure:7646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:14481: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:14484: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:14487: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14490: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
cf_cv_cpp_vscan_func=$cf_vscan_func; break
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- cf_cv_cpp_vscan_func=no
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_cpp_vscan_func=no
fi
-rm -f conftest*
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
test "$cf_cv_cpp_vscan_func" != no && break
done
fi
+echo "$as_me:14503: result: $cf_cv_cpp_vscan_func" >&5
+echo "${ECHO_T}$cf_cv_cpp_vscan_func" >&6
-echo "$ac_t""$cf_cv_cpp_vscan_func" 1>&6
-
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
+ac_ext=cc
ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
+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
fi
case $cf_cv_cpp_vscan_func in #(vi
stdio) #(vi
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define CPP_HAS_VSCAN_FUNC 1
EOF
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define USE_STDIO_VSCAN 1
EOF
;;
strstream)
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define CPP_HAS_VSCAN_FUNC 1
EOF
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define USE_STRSTREAM_VSCAN 1
EOF
;;
strstream_cast)
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define CPP_HAS_VSCAN_FUNC 1
EOF
- cat >> confdefs.h <<\EOF
+ cat >>confdefs.h <<\EOF
#define USE_STRSTREAM_VSCAN_CAST 1
EOF
;;
esac
-
CXX_AR='$(AR)'
CXX_AR_OPTS='$(AR_OPTS)'
case $cf_cv_system_name in #(vi
@@ -7721,9 +14564,7 @@ esac
fi
;;
esac
-
-
-
+
else
cf_cxx_library=no
cf_cv_builtin_bool=1
@@ -7738,26 +14579,24 @@ else
# may change.
if test "$NCURSES_BOOL" != auto ; then
- cf_cv_type_of_bool=$NCURSES_AUTO
+ cf_cv_type_of_bool=$NCURSES_BOOL
+ cf_cv_header_stdbool_h=0
else
if test "$cf_cv_header_stdbool_h" = 1 ; then
-
-echo $ac_n "checking for size of bool""... $ac_c" 1>&6
-echo "configure:7747: checking for size of bool" >&5
-if eval "test \"`echo '$''{'cf_cv_type_of_bool'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+
+echo "$as_me:14587: 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
else
-
+
rm -f cf_test.out
if test "$cross_compiling" = yes; then
cf_cv_type_of_bool=unknown
else
- cat > conftest.$ac_ext <<EOF
-#line 7757 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14598 "configure"
#include "confdefs.h"
-#ifdef __cplusplus
-extern "C" void exit(int);
-#endif
#include <stdlib.h>
#include <stdio.h>
@@ -7793,103 +14632,139 @@ main()
else if (sizeof(x) == sizeof(long)) fputs("long", fp);
fclose(fp);
}
- exit(0);
+ ${cf_cv_main_return:-return}(0);
}
-
-EOF
-if { (eval echo configure:7801: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:14640: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:14643: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:14645: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14648: \$? = $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
cf_cv_type_of_bool=unknown
fi
else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- cf_cv_type_of_bool=unknown
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_type_of_bool=unknown
fi
-rm -fr conftest*
+rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-
fi
rm -f cf_test.out
-echo "$ac_t""$cf_cv_type_of_bool" 1>&6
+echo "$as_me:14666: 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;;
esac
- echo "configure: warning: Assuming $NCURSES_BOOL for type of bool" 1>&2
+ { echo "$as_me:14672: 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 $ac_n "checking for fallback type of bool""... $ac_c" 1>&6
-echo "configure:7831: checking for fallback type of bool" >&5
+ echo "$as_me:14678: 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 ;;
esac
- echo "$ac_t""$cf_cv_type_of_bool" 1>&6
+ echo "$as_me:14684: result: $cf_cv_type_of_bool" >&5
+echo "${ECHO_T}$cf_cv_type_of_bool" >&6
fi
fi
fi
+# If the C compiler did not declare bool, and we did not determine that the C++
+# compiler does not declare bool, turn on an ifdef in curses.h that makes the
+# ncurses library use the same type as C++ bool. Note that this allows one to
+# specify the type of bool in a configure-script option and postpone
+# integration with the C++ compiler provided that the types are compatible.
+USE_CXX_BOOL=1
+if test $cf_cv_cc_bool_type = 1
+then
+ # oops: C has a bool. Unlikely, but C++ could differ.
+ USE_CXX_BOOL=0
+elif test $cf_cv_builtin_bool = 0
+then
+ # C++ has no bool
+ USE_CXX_BOOL=0
+else
+ # this is the normal case
+ USE_CXX_BOOL='defined(__cplusplus)'
+fi
-
-
+if test -f "${srcdir}/Ada95/Makefile.in" ; then
if test "$cf_with_ada" != "no" ; then
cf_ada_make=gnatmake
# Extract the first word of "$cf_ada_make", so it can be a program name with args.
set dummy $cf_ada_make; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7849: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gnat_exists'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:14714: 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
+ 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
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_gnat_exists="yes"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ 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:14729: found $ac_dir/$ac_word" >&5
+break
+done
+
test -z "$ac_cv_prog_gnat_exists" && ac_cv_prog_gnat_exists="no"
fi
fi
-gnat_exists="$ac_cv_prog_gnat_exists"
+gnat_exists=$ac_cv_prog_gnat_exists
if test -n "$gnat_exists"; then
- echo "$ac_t""$gnat_exists" 1>&6
+ echo "$as_me:14738: result: $gnat_exists" >&5
+echo "${ECHO_T}$gnat_exists" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:14741: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
if test "$ac_cv_prog_gnat_exists" = no; then
cf_ada_make=
else
-
-cf_cv_gnat_version=`$cf_ada_make -v 2>&1 | grep '[0-9].[0-9][0-9]*' |\
- sed -e 's/[^0-9 \.]//g' | $AWK '{print $1;}'`
-case $cf_cv_gnat_version in
+
+echo "$as_me:14749: 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 | grep '[0-9].[0-9][0-9]*' |\
+ sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'`
+echo "$as_me:14753: result: $cf_gnat_version" >&5
+echo "${ECHO_T}$cf_gnat_version" >&6
+
+case $cf_gnat_version in
3.1[1-9]*|3.[2-9]*|[4-9].*)
cf_cv_prog_gnat_correct=yes
;;
- *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
+ *) echo Unsupported GNAT version $cf_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
cf_cv_prog_gnat_correct=no
;;
esac
-case $cf_cv_gnat_version in
- 3.1*|[4-9].*)
+case $cf_gnat_version in
+ 3.[1-9]*|[4-9].*)
cf_compile_generics=generics
- cf_generic_objects="\$(GENOBJS)"
+ cf_generic_objects="\${GENOBJS}"
;;
*) cf_compile_generics=
cf_generic_objects=
@@ -7898,32 +14773,35 @@ esac
# Extract the first word of "m4", so it can be a program name with args.
set dummy m4; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:7903: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_M4_exists'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
+echo "$as_me:14776: 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
else
if test -n "$M4_exists"; then
ac_cv_prog_M4_exists="$M4_exists" # Let the user override the test.
else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_M4_exists="yes"
- break
- fi
- done
- IFS="$ac_save_ifs"
+ 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_M4_exists="yes"
+echo "$as_me:14791: found $ac_dir/$ac_word" >&5
+break
+done
+
test -z "$ac_cv_prog_M4_exists" && ac_cv_prog_M4_exists="no"
fi
fi
-M4_exists="$ac_cv_prog_M4_exists"
+M4_exists=$ac_cv_prog_M4_exists
if test -n "$M4_exists"; then
- echo "$ac_t""$M4_exists" 1>&6
+ echo "$as_me:14800: result: $M4_exists" >&5
+echo "${ECHO_T}$M4_exists" >&6
else
- echo "$ac_t""no" 1>&6
+ echo "$as_me:14803: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
if test "$ac_cv_prog_M4_exists" = no; then
@@ -7931,9 +14809,9 @@ fi
echo Ada95 binding required program m4 not found. Ada95 binding disabled.
fi
if test "$cf_cv_prog_gnat_correct" = yes; then
- echo $ac_n "checking if GNAT works""... $ac_c" 1>&6
-echo "configure:7936: checking if GNAT works" >&5
-
+ echo "$as_me:14812: checking if GNAT works" >&5
+echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6
+
rm -f conftest*
cat >>conftest.ads <<CF_EOF
procedure conftest;
@@ -7948,7 +14826,7 @@ begin
GNAT.OS_Lib.OS_Exit (0);
end conftest;
CF_EOF
-if ( $cf_ada_make conftest 1>&5 2>&1 ) ; then
+if ( $cf_ada_make $ADAFLAGS conftest 1>&5 2>&1 ) ; then
if ( ./conftest 1>&5 2>&1 ) ; then
cf_cv_prog_gnat_correct=yes
else
@@ -7959,38 +14837,71 @@ else
fi
rm -f conftest*
- echo "$ac_t""$cf_cv_prog_gnat_correct" 1>&6
+ echo "$as_me:14840: result: $cf_cv_prog_gnat_correct" >&5
+echo "${ECHO_T}$cf_cv_prog_gnat_correct" >&6
fi
fi
if test "$cf_cv_prog_gnat_correct" = yes; then
ADAFLAGS="-O3 -gnatpn $ADAFLAGS"
-
+ echo "$as_me:14847: checking if GNAT pragma Unreferenced works" >&5
+echo $ECHO_N "checking if GNAT pragma Unreferenced works... $ECHO_C" >&6
+
+rm -f conftest*
+cat >>conftest.ads <<CF_EOF
+procedure conftest;
+CF_EOF
+cat >>conftest.adb <<CF_EOF
+with Text_IO;
+with GNAT.OS_Lib;
+procedure conftest is
+ 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 -f conftest*
+
+ echo "$as_me:14874: 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
+
# Check whether --with-ada-compiler or --without-ada-compiler was given.
if test "${with_ada_compiler+set}" = set; then
withval="$with_ada_compiler"
cf_ada_compiler=$withval
else
cf_ada_compiler=gnatmake
-fi
-
+fi;
cf_ada_package=terminal_interface
-
-
-
-
-
-
-
-
# Check whether --with-ada-include or --without-ada-include was given.
if test "${with_ada_include+set}" = set; then
withval="$with_ada_include"
- :
+
else
withval="${ADA_INCLUDE-$prefix/lib/ada/adainclude}"
+fi;
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
fi
case ".$withval" in #(vi
@@ -8004,29 +14915,33 @@ case ".$withval" in #(vi
eval withval="$withval"
case ".$withval" in #(vi
.NONE/*)
- withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
;;
esac
;; #(vi
-.NONE/*)
- withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
+.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { echo "configure: error: expected a pathname, not \"$withval\"" 1>&2; exit 1; }
+ { { echo "$as_me:14926: error: expected a pathname, not \"$withval\"" >&5
+echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
+ { (exit 1); exit 1; }; }
;;
esac
-eval ADA_INCLUDE="$withval"
+ADA_INCLUDE="$withval"
-
-
-
# Check whether --with-ada-objects or --without-ada-objects was given.
if test "${with_ada_objects+set}" = set; then
withval="$with_ada_objects"
- :
+
else
withval="${ADA_OBJECTS-$prefix/lib/ada/adalib}"
+fi;
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
fi
case ".$withval" in #(vi
@@ -8040,106 +14955,81 @@ case ".$withval" in #(vi
eval withval="$withval"
case ".$withval" in #(vi
.NONE/*)
- withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
;;
esac
;; #(vi
-.NONE/*)
- withval=`echo $withval | sed -e s@NONE@$ac_default_prefix@`
+.no|.NONE/*)
+ withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { echo "configure: error: expected a pathname, not \"$withval\"" 1>&2; exit 1; }
+ { { echo "$as_me:14966: error: expected a pathname, not \"$withval\"" >&5
+echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
+ { (exit 1); exit 1; }; }
;;
esac
-eval ADA_OBJECTS="$withval"
-
-
+ADA_OBJECTS="$withval"
fi
fi
-
-### It's not possible to appease gcc 2.6.3's conversion-warnings if we're
-### using a 'char' for bools. gcc 2.7.0's conversion-warnings are broken too
-### badly to consider using for development purposes, but 2.5.8 is okay.
-if test -n "$with_warnings"; then
- case $GCC_VERSION in
- 2.6.3)
- if test "$cf_cv_type_of_bool" != "char"; then
- EXTRA_CFLAGS="$EXTRA_CFLAGS -Wconversion"
- fi
- ;;
- 2.5*)
- EXTRA_CFLAGS="$EXTRA_CFLAGS -Wconversion"
- ;;
- esac
fi
### Construct the library-subsets, if any, from this set of keywords:
-### none, base, ext_funcs, termlib.
-echo $ac_n "checking for library subsets""... $ac_c" 1>&6
-echo "configure:8082: checking for library subsets" >&5
-if test "$with_termlib" = yes ; then
- LIB_SUBSETS="termlib "
+### none, base, ext_funcs, ext_tinfo, termlib, widechar (see CF_LIB_RULES).
+echo "$as_me:14980: checking for library subsets" >&5
+echo $ECHO_N "checking for library subsets... $ECHO_C" >&6
+if test "$with_termlib" != no ; then
+ LIB_SUBSETS="termlib"
+ test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo"
+ LIB_SUBSETS="${LIB_SUBSETS} "
else
LIB_SUBSETS="termlib+"
+ test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}ext_tinfo+"
fi
LIB_SUBSETS="${LIB_SUBSETS}base"
-test "$with_widec" = yes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
+test "$with_widec" = yes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
-echo "$ac_t""$LIB_SUBSETS" 1>&6
-
-LIB_TRACING=DEBUG
-ADA_TRACE=FALSE
-case "$CFLAGS $CPPFLAGS" in
-*-DTRACE*)
- LIB_TRACING=all
- ADA_TRACE=TRUE
- ;;
-esac
-
+echo "$as_me:14993: result: $LIB_SUBSETS" >&5
+echo "${ECHO_T}$LIB_SUBSETS" >&6
### Construct the list of include-directories to be generated
-CPPFLAGS="$CPPFLAGS -I. -I../include"
+CPPFLAGS="-I. -I../include $CPPFLAGS"
if test "$srcdir" != "."; then
- CPPFLAGS="$CPPFLAGS -I\$(srcdir)/../include"
+ CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
fi
if test "$GCC" != yes; then
- CPPFLAGS="$CPPFLAGS -I\$(includedir)"
+ CPPFLAGS="$CPPFLAGS -I\${includedir}"
elif test "$includedir" != "/usr/include"; then
if test "$includedir" = '${prefix}/include' ; then
if test $prefix != /usr ; then
- CPPFLAGS="$CPPFLAGS -I\$(includedir)"
+ CPPFLAGS="$CPPFLAGS -I\${includedir}"
fi
else
- CPPFLAGS="$CPPFLAGS -I\$(includedir)"
+ CPPFLAGS="$CPPFLAGS -I\${includedir}"
fi
fi
-
-
-ACPPFLAGS="$ACPPFLAGS -I. -I../../include"
+ACPPFLAGS="-I. -I../../include $ACPPFLAGS"
if test "$srcdir" != "."; then
- ACPPFLAGS="$ACPPFLAGS -I\$(srcdir)/../../include"
+ ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS"
fi
if test "$GCC" != yes; then
- ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
+ ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
elif test "$includedir" != "/usr/include"; then
if test "$includedir" = '${prefix}/include' ; then
if test $prefix != /usr ; then
- ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
+ ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
fi
else
- ACPPFLAGS="$ACPPFLAGS -I\$(includedir)"
+ ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
fi
fi
-
-
### Build up pieces for makefile rules
-echo $ac_n "checking default library suffix""... $ac_c" 1>&6
-echo "configure:8143: checking default library suffix" >&5
+echo "$as_me:15031: checking default library suffix" >&5
+echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
case $DFT_LWR_MODEL in
libtool) DFT_ARG_SUFFIX='' ;;
@@ -8149,12 +15039,12 @@ echo "configure:8143: checking default library suffix" >&5
shared) DFT_ARG_SUFFIX='' ;;
esac
test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}"
-echo "$ac_t""$DFT_ARG_SUFFIX" 1>&6
+echo "$as_me:15042: result: $DFT_ARG_SUFFIX" >&5
+echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6
-echo $ac_n "checking default library-dependency suffix""... $ac_c" 1>&6
-echo "configure:8156: checking default library-dependency suffix" >&5
+echo "$as_me:15045: checking default library-dependency suffix" >&5
+echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
-
case $DFT_LWR_MODEL in
libtool) DFT_DEP_SUFFIX='.la' ;;
normal) DFT_DEP_SUFFIX='.a' ;;
@@ -8164,7 +15054,12 @@ echo "configure:8156: checking default library-dependency suffix" >&5
case $cf_cv_system_name in
cygwin*) DFT_DEP_SUFFIX='.dll' ;;
darwin*) DFT_DEP_SUFFIX='.dylib' ;;
- hpux*) DFT_DEP_SUFFIX='.sl' ;;
+ hpux*)
+ case $target in
+ ia64*) DFT_DEP_SUFFIX='.so' ;;
+ *) DFT_DEP_SUFFIX='.sl' ;;
+ esac
+ ;;
*) DFT_DEP_SUFFIX='.so' ;;
esac
esac
@@ -8176,10 +15071,11 @@ if test $DFT_LWR_MODEL = shared ; then
;;
esac
fi
-echo "$ac_t""$DFT_DEP_SUFFIX" 1>&6
+echo "$as_me:15074: result: $DFT_DEP_SUFFIX" >&5
+echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6
-echo $ac_n "checking default object directory""... $ac_c" 1>&6
-echo "configure:8183: checking default object directory" >&5
+echo "$as_me:15077: 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' ;;
@@ -8194,16 +15090,17 @@ echo "configure:8183: checking default object directory" >&5
DFT_OBJ_SUBDIR='obj_s' ;;
esac
esac
-echo "$ac_t""$DFT_OBJ_SUBDIR" 1>&6
+echo "$as_me:15093: result: $DFT_OBJ_SUBDIR" >&5
+echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6
# libtool thinks it can make c++ shared libraries (perhaps only g++)
-echo $ac_n "checking c++ library-dependency suffix""... $ac_c" 1>&6
-echo "configure:8202: checking c++ library-dependency suffix" >&5
-if test "$with_libtool" = "yes"; then
+if test "$cf_with_cxx" = yes ; then
+echo "$as_me:15098: checking c++ library-dependency suffix" >&5
+echo $ECHO_N "checking c++ library-dependency suffix... $ECHO_C" >&6
+if test "$with_libtool" != "no"; then
CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX
else
-
-
+
case normal in
libtool) CXX_LIB_SUFFIX='.la' ;;
normal) CXX_LIB_SUFFIX='.a' ;;
@@ -8213,60 +15110,96 @@ else
case $cf_cv_system_name in
cygwin*) CXX_LIB_SUFFIX='.dll' ;;
darwin*) CXX_LIB_SUFFIX='.dylib' ;;
- hpux*) CXX_LIB_SUFFIX='.sl' ;;
+ hpux*)
+ case $target in
+ ia64*) CXX_LIB_SUFFIX='.so' ;;
+ *) CXX_LIB_SUFFIX='.sl' ;;
+ esac
+ ;;
*) CXX_LIB_SUFFIX='.so' ;;
esac
esac
test -n "$LIB_SUFFIX" && CXX_LIB_SUFFIX="${LIB_SUFFIX}${CXX_LIB_SUFFIX}"
fi
-echo "$ac_t""$CXX_LIB_SUFFIX" 1>&6
+echo "$as_me:15124: result: $CXX_LIB_SUFFIX" >&5
+echo "${ECHO_T}$CXX_LIB_SUFFIX" >&6
+fi
+### Set up low-level terminfo dependencies for makefiles.
TINFO_LIST="$SHLIB_LIST"
-test "$with_termlib" = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo${LIB_SUFFIX}"
-
-echo $ac_n "checking where we will install curses.h""... $ac_c" 1>&6
-echo "configure:8230: checking where we will install curses.h" >&5
-test "$with_overwrite" = no && \
-test "x$includedir" = 'x${prefix}/include' && \
- includedir='$(prefix)/include/ncurses'${LIB_SUFFIX}
-echo "$ac_t""$includedir" 1>&6
-
-
-
+if test "$with_termlib" != no ; then
+ if test "$with_termlib" != yes ; then
+ TINFO_NAME=$with_termlib
+ TINFO_ARG_SUFFIX="${with_termlib}`echo ${DFT_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_ARG_SUFFIX="${TINFO_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}"
+ TINFO_LIB_SUFFIX="${TINFO_NAME}${LIB_SUFFIX}"
+ fi
-### Set up low-level terminfo dependencies for makefiles. Note that we
-### could override this.
-if test "$with_termlib" = yes ; then
- TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
+ TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
+ TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
if test "$DFT_LWR_MODEL" = "libtool"; then
TEST_ARGS="${TEST_DEPS}"
+ TEST_ARG2="${TEST_DEP2}"
+ TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
else
- TEST_ARGS="-l${TINFO_NAME}${DFT_ARG_SUFFIX}"
+ TEST_ARGS="-l${TINFO_ARG_SUFFIX}"
+ TEST_ARG2="-l${TINFO_ARG_SUFFIX}"
+ TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
+ SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
fi
+else
+ TINFO_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+fi
+
+# needed for Ada95
+TINFO_ARGS2=`echo "$TINFO_ARGS" | sed -e 's,-L\.\./,-L../../,'`
+
+echo "$as_me:15163: checking where we will install curses.h" >&5
+echo $ECHO_N "checking where we will install curses.h... $ECHO_C" >&6
+test "$with_overwrite" = no && \
+test "x$includedir" = 'x${prefix}/include' && \
+ includedir='${prefix}/include/ncurses'${LIB_SUFFIX}
+echo "$as_me:15168: result: $includedir" >&5
+echo "${ECHO_T}$includedir" >&6
+
+### Resolve a conflict between normal and wide-curses by forcing applications
+### that will need libutf8 to add it to their configure script.
+if test "$with_overwrite" != no ; then
+if test "$NCURSES_LIBUTF8" = 1 ; then
+ NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)'
+ { echo "$as_me:15176: 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
-PROG_DEPS="$TEST_DEPS"
-PROG_ARGS="$TEST_ARGS"
+
+### predefined stuff for the test programs
+cat >>confdefs.h <<\EOF
+#define HAVE_SLK_COLOR 1
+EOF
### Construct the list of subdirectories for which we'll customize makefiles
### with the appropriate compile-rules.
-
-echo $ac_n "checking for src modules""... $ac_c" 1>&6
-echo "configure:8258: checking for src modules" >&5
+echo "$as_me:15189: checking for src modules" >&5
+echo $ECHO_N "checking for src modules... $ECHO_C" >&6
# dependencies and linker-arguments for test-programs
TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
+TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEP2"
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"
fi
-# dependencies and linker-arguments for utility-programs
-PROG_ARGS="$TEST_ARGS"
-
cf_cv_src_modules=
for cf_dir in $modules_to_build
do
@@ -8293,33 +15226,34 @@ do
if test $cf_dir = tack ; then
continue
elif test -f $srcdir/${cf_dir}/${cf_dir}.h; then
-
+
cf_have_include=`echo "$cf_dir" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
- cat >> confdefs.h <<EOF
+ cat >>confdefs.h <<EOF
#define HAVE_${cf_have_include}_H 1
EOF
- cat >> confdefs.h <<EOF
+ cat >>confdefs.h <<EOF
#define HAVE_LIB${cf_have_include} 1
EOF
TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
+ TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEP2"
if test "$DFT_LWR_MODEL" = "libtool"; then
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"
fi
fi
fi
done
-echo "$ac_t""$cf_cv_src_modules" 1>&6
-TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
-
-
-
-PROG_ARGS="-L${LIB_DIR} $PROG_ARGS"
+echo "$as_me:15252: result: $cf_cv_src_modules" >&5
+echo "${ECHO_T}$cf_cv_src_modules" >&6
+TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
+TEST_ARG2="-L${LIB_2ND} $TEST_ARG2"
SRC_SUBDIRS="man include"
for cf_dir in $cf_cv_src_modules
@@ -8347,14 +15281,13 @@ if test -n "$ADA_SUBDIRS"; then
do
SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile"
done
-
-fi
+fi
DIRS_TO_MAKE="lib"
for cf_item in $cf_list_models
do
-
+
case $cf_item in
libtool) cf_subdir='obj_lo' ;;
normal) cf_subdir='objects' ;;
@@ -8380,448 +15313,986 @@ do
test ! -d $cf_dir && mkdir $cf_dir
done
-
-
-cat >> confdefs.h <<EOF
+cat >>confdefs.h <<EOF
#define NCURSES_PATHSEP '$PATHSEP'
EOF
+cat >>confdefs.h <<EOF
+#define NCURSES_VERSION_STRING "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}"
+EOF
### Now that we're done running tests, add the compiler-warnings, if any
-CFLAGS="$CFLAGS $EXTRA_CFLAGS"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+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
+ case $cf_add_cflags in
+ -D*)
+ cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'`
+
+ test "${cf_add_cflags}" != "${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"
+ continue
+ elif test "${cf_tst_cflags}" = "\"'" ; then
+ cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags"
+ continue
+ fi
+ ;;
+ esac
+ case "$CPPFLAGS" in
+ *$cf_add_cflags) #(vi
+ ;;
+ *) #(vi
+ cf_new_cppflags="$cf_new_cppflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+ *)
+ cf_new_cflags="$cf_new_cflags $cf_add_cflags"
+ ;;
+ esac
+ ;;
+yes)
+ 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 -z "${cf_tst_cflags}" \
+ && cf_fix_cppflags=no
+ ;;
+esac
+done
+
+if test -n "$cf_new_cflags" ; then
+
+ CFLAGS="$CFLAGS $cf_new_cflags"
+fi
+
+if test -n "$cf_new_cppflags" ; then
+
+ CPPFLAGS="$cf_new_cppflags $CPPFLAGS"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+### Define substitutions for header files to avoid name-pollution
+
+if test "$cf_cv_have_tcgetattr" = yes ; then
+ HAVE_TCGETATTR=1
+else
+ HAVE_TCGETATTR=0
+fi
+
+if test "$ac_cv_header_termio_h" = yes ; then
+ HAVE_TERMIO_H=1
+else
+ HAVE_TERMIO_H=0
+fi
+
+if test "$ac_cv_header_termios_h" = yes ; then
+ HAVE_TERMIOS_H=1
+else
+ HAVE_TERMIOS_H=0
+fi
################################################################################
-trap '' 1 2 15
-cat > confcache <<\EOF
+test "$use_database" = yes && SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
+SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in"
+ac_config_files="$ac_config_files include/MKterm.h.awk include/curses.head:include/curses.h.in 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
# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems. If it contains results you don't
+# want to keep, you may remove or edit it.
#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
#
-EOF
+# `ac_cv_env_foo' variables (set or unset) will be overriden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
# The following way of writing the cache mishandles newlines in values,
# but we know of no workaround that is simple, portable, and efficient.
# So, don't put newlines in cache variables' values.
# Ultrix sh set writes to stderr and can't be redirected directly,
# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
+{
+ (set) 2>&1 |
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
+ *ac_space=\ *)
+ # `set' does not quote correctly, so add quotes (double-quote
+ # substitution turns \\\\ into \\, and sed turns \\ into \).
+ sed -n \
+ "s/'/'\\\\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+ ;;
+ *)
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
+ sed -n \
+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
+ ;;
+ esac;
+} |
+ sed '
+ t clear
+ : clear
+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ t end
+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+ : end' >>confcache
+if cmp -s $cache_file confcache; then :; else
if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
+ cat confcache >$cache_file
else
echo "not updating unwritable cache $cache_file"
fi
fi
rm -f confcache
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
test "x$prefix" = xNONE && prefix=$ac_default_prefix
# Let make expand exec_prefix.
test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/;
+s/:*\${srcdir}:*/:/;
+s/:*@srcdir@:*/:/;
+s/^\([^=]*=[ ]*\):*/\1/;
+s/:*$//;
+s/^[^=]*=[ ]*$//;
+}'
fi
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
DEFS=-DHAVE_CONFIG_H
-# Without the "./", some shells look in PATH for config.status.
: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:15498: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
# Generated automatically by configure.
# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
+# configure, is in config.log if it exists.
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
+debug=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+ac_cs_invocation="\$0 \$@"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# Be Bourne compatible
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
+ set -o posix
+fi
+
+# Name of the executable.
+as_me=`echo "$0" |sed 's,.*[\\/],,'`
+
+if expr a : '\(a\)' >/dev/null 2>&1; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ # We could just check for DJGPP; but this test a) works b) is more generic
+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
+ if test -f conf$$.exe; then
+ # Don't use ln at all; we don't have any links
+ as_ln_s='cp -p'
+ else
+ as_ln_s='ln -s'
+ fi
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.file
+
+as_executable_p="test -f"
+
+# Support unset when possible.
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+# NLS nuisances.
+$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; }
+$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; }
+$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; }
+$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; }
+$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; }
+$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; }
+$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; }
+$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; }
+
+# IFS
+# We need space, tab and new line, in precisely that order.
+as_nl='
+'
+IFS=" $as_nl"
+
+# CDPATH.
+$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; }
+
+exec 6>&1
+
+_ACEOF
+
+# Files that config.status was made for.
+if test -n "$ac_config_files"; then
+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_headers"; then
+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_links"; then
+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
+fi
+
+if test -n "$ac_config_commands"; then
+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
+fi
+
+cat >>$CONFIG_STATUS <<\EOF
+
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+EOF
+
+cat >>$CONFIG_STATUS <<EOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.52.20061216,
+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+srcdir=$srcdir
+INSTALL="$INSTALL"
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
do
- case "\$ac_option" in
+ case $1 in
+ --*=*)
+ ac_option=`expr "x$1" : 'x\([^=]*\)='`
+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
+ shift
+ set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
+ shift
+ ;;
+ -*);;
+ *) # This is not an option, so the user has probably given explicit
+ # arguments.
+ ac_need_defaults=false;;
+ esac
+
+ case $1 in
+ # Handling of the options.
+EOF
+cat >>$CONFIG_STATUS <<EOF
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.13.20020210"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
+ echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
+ exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+ --version | --vers* | -V )
+ echo "$ac_cs_version"; exit 0 ;;
+ --he | --h)
+ # Conflict between --help and --header
+ { { echo "$as_me:15674: 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;}
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit 0 ;;
+ --debug | --d* | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ shift
+ CONFIG_FILES="$CONFIG_FILES $1"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $1"
+ ac_need_defaults=false;;
+
+ # This is an error.
+ -*) { { echo "$as_me:15693: 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;}
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1" ;;
+
esac
+ shift
done
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
+exec 5>>config.log
+cat >&5 << _ACEOF
-trap 'rm -fr `echo "\
- include/MKterm.h.awk \
- include/curses.head:include/curses.h.in \
- include/termcap.h \
- include/unctrl.h \
- misc/run_tic.sh:misc/run_tic.in \
- $SUB_MAKEFILES \
- Makefile include/ncurses_cfg.h:include/ncurses_cfg.hin" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
+## ----------------------- ##
+## Running config.status. ##
+## ----------------------- ##
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@NCURSES_MAJOR@%$NCURSES_MAJOR%g
-s%@NCURSES_MINOR@%$NCURSES_MINOR%g
-s%@NCURSES_PATCH@%$NCURSES_PATCH%g
-s%@cf_cv_rel_version@%$cf_cv_rel_version%g
-s%@cf_cv_abi_version@%$cf_cv_abi_version%g
-s%@cf_cv_cc_bool_type@%$cf_cv_cc_bool_type%g
-s%@cf_cv_builtin_bool@%$cf_cv_builtin_bool%g
-s%@cf_cv_header_stdbool_h@%$cf_cv_header_stdbool_h%g
-s%@cf_cv_type_of_bool@%$cf_cv_type_of_bool%g
-s%@host@%$host%g
-s%@host_alias@%$host_alias%g
-s%@host_cpu@%$host_cpu%g
-s%@host_vendor@%$host_vendor%g
-s%@host_os@%$host_os%g
-s%@target@%$target%g
-s%@target_alias@%$target_alias%g
-s%@target_cpu@%$target_cpu%g
-s%@target_vendor@%$target_vendor%g
-s%@target_os@%$target_os%g
-s%@build@%$build%g
-s%@build_alias@%$build_alias%g
-s%@build_cpu@%$build_cpu%g
-s%@build_vendor@%$build_vendor%g
-s%@build_os@%$build_os%g
-s%@CC@%$CC%g
-s%@BUILD_CC@%$BUILD_CC%g
-s%@BUILD_CFLAGS@%$BUILD_CFLAGS%g
-s%@BUILD_LDFLAGS@%$BUILD_LDFLAGS%g
-s%@BUILD_LIBS@%$BUILD_LIBS%g
-s%@CPP@%$CPP%g
-s%@PROG_EXT@%$PROG_EXT%g
-s%@LDCONFIG@%$LDCONFIG%g
-s%@CXX@%$CXX%g
-s%@AWK@%$AWK%g
-s%@SET_MAKE@%$SET_MAKE%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@LN_S@%$LN_S%g
-s%@RANLIB@%$RANLIB%g
-s%@MAKE_LOWER_TAGS@%$MAKE_LOWER_TAGS%g
-s%@MAKE_UPPER_TAGS@%$MAKE_UPPER_TAGS%g
-s%@LINT@%$LINT%g
-s%@MAN@%$MAN%g
-s%@LINT_OPTS@%$LINT_OPTS%g
-s%@LD@%$LD%g
-s%@AR@%$AR%g
-s%@AR_OPTS@%$AR_OPTS%g
-s%@cf_cv_makeflags@%$cf_cv_makeflags%g
-s%@DESTDIR@%$DESTDIR%g
-s%@cf_list_models@%$cf_list_models%g
-s%@LIBTOOL@%$LIBTOOL%g
-s%@DFT_LWR_MODEL@%$DFT_LWR_MODEL%g
-s%@DFT_UPR_MODEL@%$DFT_UPR_MODEL%g
-s%@TINFO_NAME@%$TINFO_NAME%g
-s%@LIB_NAME@%$LIB_NAME%g
-s%@LIB_PREFIX@%$LIB_PREFIX%g
-s%@LIB_SUFFIX@%$LIB_SUFFIX%g
-s%@CC_G_OPT@%$CC_G_OPT%g
-s%@CXX_G_OPT@%$CXX_G_OPT%g
-s%@LD_MODEL@%$LD_MODEL%g
-s%@CC_SHARED_OPTS@%$CC_SHARED_OPTS%g
-s%@LD_SHARED_OPTS@%$LD_SHARED_OPTS%g
-s%@MK_SHARED_LIB@%$MK_SHARED_LIB%g
-s%@LINK_PROGS@%$LINK_PROGS%g
-s%@LINK_TESTS@%$LINK_TESTS%g
-s%@EXTRA_LDFLAGS@%$EXTRA_LDFLAGS%g
-s%@LOCAL_LDFLAGS@%$LOCAL_LDFLAGS%g
-s%@LOCAL_LDFLAGS2@%$LOCAL_LDFLAGS2%g
-s%@INSTALL_LIB@%$INSTALL_LIB%g
-s%@TERMINFO_SRC@%$TERMINFO_SRC%g
-s%@PATHSEP@%$PATHSEP%g
-s%@FALLBACK_LIST@%$FALLBACK_LIST%g
-s%@TERMINFO_DIRS@%$TERMINFO_DIRS%g
-s%@TERMINFO@%$TERMINFO%g
-s%@MAKE_TERMINFO@%$MAKE_TERMINFO%g
-s%@TERMPATH@%$TERMPATH%g
-s%@BROKEN_LINKER@%$BROKEN_LINKER%g
-s%@NCURSES_BOOL@%$NCURSES_BOOL%g
-s%@NCURSES_OSPEED@%$NCURSES_OSPEED%g
-s%@MANPAGE_RENAMES@%$MANPAGE_RENAMES%g
-s%@NCURSES_EXT_FUNCS@%$NCURSES_EXT_FUNCS%g
-s%@NCURSES_CONST@%$NCURSES_CONST%g
-s%@NCURSES_XNAMES@%$NCURSES_XNAMES%g
-s%@NCURSES_CH_T@%$NCURSES_CH_T%g
-s%@NCURSES_LIBUTF8@%$NCURSES_LIBUTF8%g
-s%@NCURSES_MBSTATE_T@%$NCURSES_MBSTATE_T%g
-s%@TERMINFO_CAPS@%$TERMINFO_CAPS%g
-s%@ECHO_LINK@%$ECHO_LINK%g
-s%@EXTRA_CFLAGS@%$EXTRA_CFLAGS%g
-s%@MATH_LIB@%$MATH_LIB%g
-s%@cf_cv_typeof_chtype@%$cf_cv_typeof_chtype%g
-s%@cf_cv_1UL@%$cf_cv_1UL%g
-s%@HAVE_VSSCANF@%$HAVE_VSSCANF%g
-s%@CXXCPP@%$CXXCPP%g
-s%@CXXLDFLAGS@%$CXXLDFLAGS%g
-s%@CXX_AR@%$CXX_AR%g
-s%@CXX_AR_OPTS@%$CXX_AR_OPTS%g
-s%@CXXLIBS@%$CXXLIBS%g
-s%@gnat_exists@%$gnat_exists%g
-s%@M4_exists@%$M4_exists%g
-s%@cf_ada_make@%$cf_ada_make%g
-s%@cf_ada_compiler@%$cf_ada_compiler%g
-s%@cf_ada_package@%$cf_ada_package%g
-s%@ADAFLAGS@%$ADAFLAGS%g
-s%@cf_compile_generics@%$cf_compile_generics%g
-s%@cf_generic_objects@%$cf_generic_objects%g
-s%@ADA_INCLUDE@%$ADA_INCLUDE%g
-s%@ADA_OBJECTS@%$ADA_OBJECTS%g
-s%@ADA_TRACE@%$ADA_TRACE%g
-s%@ACPPFLAGS@%$ACPPFLAGS%g
-s%@DFT_ARG_SUFFIX@%$DFT_ARG_SUFFIX%g
-s%@DFT_DEP_SUFFIX@%$DFT_DEP_SUFFIX%g
-s%@DFT_OBJ_SUBDIR@%$DFT_OBJ_SUBDIR%g
-s%@CXX_LIB_SUFFIX@%$CXX_LIB_SUFFIX%g
-s%@EXTRA_LIBS@%$EXTRA_LIBS%g
-s%@TINFO_LIST@%$TINFO_LIST%g
-s%@SHLIB_LIST@%$SHLIB_LIST%g
-s%@TEST_DEPS@%$TEST_DEPS%g
-s%@TEST_ARGS@%$TEST_ARGS%g
-s%@PROG_ARGS@%$PROG_ARGS%g
-s%@ADA_SUBDIRS@%$ADA_SUBDIRS%g
-s%@DIRS_TO_MAKE@%$DIRS_TO_MAKE%g
+This file was extended by $as_me 2.52.20061216, executed with
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ > $ac_cs_invocation
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
-CEOF
+_ACEOF
EOF
-cat >> $CONFIG_STATUS <<\EOF
+cat >>$CONFIG_STATUS <<EOF
+#
+# INIT-COMMANDS section.
+#
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
- else
- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
- fi
- if test ! -s conftest.s$ac_file; then
- ac_more_lines=false
- rm -f conftest.s$ac_file
- else
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f conftest.s$ac_file"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
- fi
- ac_file=`expr $ac_file + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_cmds`
- fi
+### Special initialization commands, used to pass information from the
+### configuration-run into config.status
+
+AWK="$AWK"
+DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
+DFT_LWR_MODEL="$DFT_LWR_MODEL"
+ECHO_LINK="$ECHO_LINK"
+LDCONFIG="$LDCONFIG"
+LIB_NAME="$LIB_NAME"
+LIB_SUBSETS="$LIB_SUBSETS"
+LIB_SUFFIX="$LIB_SUFFIX"
+LIB_TRACING="$LIB_TRACING"
+MAKE_TERMINFO="$MAKE_TERMINFO"
+NCURSES_MAJOR="$NCURSES_MAJOR"
+NCURSES_MINOR="$NCURSES_MINOR"
+NCURSES_OSPEED="$NCURSES_OSPEED"
+NCURSES_PATCH="$NCURSES_PATCH"
+SRC_SUBDIRS="$SRC_SUBDIRS"
+TERMINFO="$TERMINFO"
+TINFO_ARG_SUFFIX="$TINFO_ARG_SUFFIX"
+TINFO_LIB_SUFFIX="$TINFO_LIB_SUFFIX"
+TINFO_NAME="$TINFO_NAME"
+WITH_CURSES_H="$with_curses_h"
+WITH_ECHO="$with_echo"
+WITH_OVERWRITE="$with_overwrite"
+cf_LIST_MODELS="$cf_list_models"
+cf_cv_abi_version="$cf_cv_abi_version"
+cf_cv_do_symlinks="$cf_cv_do_symlinks"
+cf_cv_enable_lp64="$cf_cv_enable_lp64"
+cf_cv_prog_CC_c_o=$cf_cv_prog_CC_c_o
+cf_cv_prog_CXX_c_o=$cf_cv_prog_CXX_c_o
+cf_cv_rel_version="$cf_cv_rel_version"
+cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
+cf_cv_shlib_version="$cf_cv_shlib_version"
+cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
+cf_cv_system_name="$cf_cv_system_name"
+cf_with_cxx_binding="$cf_with_cxx_binding"
+host="$host"
+target="$target"
+
+EOF
+
+cat >>$CONFIG_STATUS <<\EOF
+for ac_config_target in $ac_config_targets
+do
+ case "$ac_config_target" in
+ # Handling of arguments.
+ "include/MKterm.h.awk" ) CONFIG_FILES="$CONFIG_FILES include/MKterm.h.awk" ;;
+ "include/curses.head" ) CONFIG_FILES="$CONFIG_FILES include/curses.head:include/curses.h.in" ;;
+ "include/termcap.h" ) CONFIG_FILES="$CONFIG_FILES include/termcap.h" ;;
+ "include/unctrl.h" ) CONFIG_FILES="$CONFIG_FILES include/unctrl.h" ;;
+ "$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:15783: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
done
-if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
fi
+
+# Create a temporary directory, and hook for its removal unless debugging.
+$debug ||
+{
+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+
+# Create a (secure) tmp directory for tmp files.
+: ${TMPDIR=/tmp}
+{
+ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=$TMPDIR/cs$$-$RANDOM
+ (umask 077 && mkdir $tmp)
+} ||
+{
+ echo "$me: cannot create a temporary directory in $TMPDIR" >&2
+ { (exit 1); exit 1; }
+}
+
EOF
-cat >> $CONFIG_STATUS <<EOF
+cat >>$CONFIG_STATUS <<EOF
+
+#
+# CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "\$CONFIG_FILES"; then
+ # Protect against being on the right side of a sed subst in config.status.
+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
+s,@SHELL@,$SHELL,;t t
+s,@exec_prefix@,$exec_prefix,;t t
+s,@prefix@,$prefix,;t t
+s,@program_transform_name@,$program_transform_name,;t t
+s,@bindir@,$bindir,;t t
+s,@sbindir@,$sbindir,;t t
+s,@libexecdir@,$libexecdir,;t t
+s,@datadir@,$datadir,;t t
+s,@sysconfdir@,$sysconfdir,;t t
+s,@sharedstatedir@,$sharedstatedir,;t t
+s,@localstatedir@,$localstatedir,;t t
+s,@libdir@,$libdir,;t t
+s,@includedir@,$includedir,;t t
+s,@oldincludedir@,$oldincludedir,;t t
+s,@infodir@,$infodir,;t t
+s,@mandir@,$mandir,;t t
+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
+s,@build_alias@,$build_alias,;t t
+s,@host_alias@,$host_alias,;t t
+s,@target_alias@,$target_alias,;t t
+s,@ECHO_C@,$ECHO_C,;t t
+s,@ECHO_N@,$ECHO_N,;t t
+s,@ECHO_T@,$ECHO_T,;t t
+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
+s,@DEFS@,$DEFS,;t t
+s,@LIBS@,$LIBS,;t t
+s,@top_builddir@,$top_builddir,;t t
+s,@EGREP@,$EGREP,;t t
+s,@NCURSES_MAJOR@,$NCURSES_MAJOR,;t t
+s,@NCURSES_MINOR@,$NCURSES_MINOR,;t t
+s,@NCURSES_PATCH@,$NCURSES_PATCH,;t t
+s,@cf_cv_rel_version@,$cf_cv_rel_version,;t t
+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,@build@,$build,;t t
+s,@build_cpu@,$build_cpu,;t t
+s,@build_vendor@,$build_vendor,;t t
+s,@build_os@,$build_os,;t t
+s,@host@,$host,;t t
+s,@host_cpu@,$host_cpu,;t t
+s,@host_vendor@,$host_vendor,;t t
+s,@host_os@,$host_os,;t t
+s,@target@,$target,;t t
+s,@target_cpu@,$target_cpu,;t t
+s,@target_vendor@,$target_vendor,;t t
+s,@target_os@,$target_os,;t t
+s,@CC@,$CC,;t t
+s,@CFLAGS@,$CFLAGS,;t t
+s,@LDFLAGS@,$LDFLAGS,;t t
+s,@CPPFLAGS@,$CPPFLAGS,;t t
+s,@ac_ct_CC@,$ac_ct_CC,;t t
+s,@EXEEXT@,$EXEEXT,;t t
+s,@OBJEXT@,$OBJEXT,;t t
+s,@CPP@,$CPP,;t t
+s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t
+s,@PROG_EXT@,$PROG_EXT,;t t
+s,@LDCONFIG@,$LDCONFIG,;t t
+s,@CXX@,$CXX,;t t
+s,@CXXFLAGS@,$CXXFLAGS,;t t
+s,@ac_ct_CXX@,$ac_ct_CXX,;t t
+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,@LINT@,$LINT,;t t
+s,@LINT_OPTS@,$LINT_OPTS,;t t
+s,@LN_S@,$LN_S,;t t
+s,@SET_MAKE@,$SET_MAKE,;t t
+s,@MAKE_LOWER_TAGS@,$MAKE_LOWER_TAGS,;t t
+s,@MAKE_UPPER_TAGS@,$MAKE_UPPER_TAGS,;t t
+s,@cf_cv_makeflags@,$cf_cv_makeflags,;t t
+s,@RANLIB@,$RANLIB,;t t
+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t
+s,@LD@,$LD,;t t
+s,@ac_ct_LD@,$ac_ct_LD,;t t
+s,@AR@,$AR,;t t
+s,@ac_ct_AR@,$ac_ct_AR,;t t
+s,@AR_OPTS@,$AR_OPTS,;t t
+s,@DESTDIR@,$DESTDIR,;t t
+s,@BUILD_CC@,$BUILD_CC,;t t
+s,@BUILD_CPP@,$BUILD_CPP,;t t
+s,@BUILD_CFLAGS@,$BUILD_CFLAGS,;t t
+s,@BUILD_CPPFLAGS@,$BUILD_CPPFLAGS,;t t
+s,@BUILD_LDFLAGS@,$BUILD_LDFLAGS,;t t
+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,@LIBTOOL@,$LIBTOOL,;t t
+s,@LIBTOOL_CXX@,$LIBTOOL_CXX,;t t
+s,@LIB_CREATE@,$LIB_CREATE,;t t
+s,@LIB_OBJECT@,$LIB_OBJECT,;t t
+s,@LIB_SUFFIX@,$LIB_SUFFIX,;t t
+s,@LIB_PREP@,$LIB_PREP,;t t
+s,@LIB_CLEAN@,$LIB_CLEAN,;t t
+s,@LIB_COMPILE@,$LIB_COMPILE,;t t
+s,@LIB_LINK@,$LIB_LINK,;t t
+s,@LIB_INSTALL@,$LIB_INSTALL,;t t
+s,@LIB_UNINSTALL@,$LIB_UNINSTALL,;t t
+s,@DFT_LWR_MODEL@,$DFT_LWR_MODEL,;t t
+s,@DFT_UPR_MODEL@,$DFT_UPR_MODEL,;t t
+s,@TINFO_NAME@,$TINFO_NAME,;t t
+s,@LIB_NAME@,$LIB_NAME,;t t
+s,@LIB_PREFIX@,$LIB_PREFIX,;t t
+s,@CC_G_OPT@,$CC_G_OPT,;t t
+s,@CXX_G_OPT@,$CXX_G_OPT,;t t
+s,@LD_MODEL@,$LD_MODEL,;t t
+s,@CC_SHARED_OPTS@,$CC_SHARED_OPTS,;t t
+s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t
+s,@MK_SHARED_LIB@,$MK_SHARED_LIB,;t t
+s,@LINK_PROGS@,$LINK_PROGS,;t t
+s,@LINK_TESTS@,$LINK_TESTS,;t t
+s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t
+s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t
+s,@LOCAL_LDFLAGS2@,$LOCAL_LDFLAGS2,;t t
+s,@INSTALL_LIB@,$INSTALL_LIB,;t t
+s,@TERMINFO_SRC@,$TERMINFO_SRC,;t t
+s,@PATHSEP@,$PATHSEP,;t t
+s,@FALLBACK_LIST@,$FALLBACK_LIST,;t t
+s,@WHICH_XTERM@,$WHICH_XTERM,;t t
+s,@TERMINFO_DIRS@,$TERMINFO_DIRS,;t t
+s,@TERMINFO@,$TERMINFO,;t t
+s,@MAKE_TERMINFO@,$MAKE_TERMINFO,;t t
+s,@TERMPATH@,$TERMPATH,;t t
+s,@BROKEN_LINKER@,$BROKEN_LINKER,;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
+s,@NCURSES_MBSTATE_T@,$NCURSES_MBSTATE_T,;t t
+s,@NCURSES_WCHAR_T@,$NCURSES_WCHAR_T,;t t
+s,@NCURSES_WINT_T@,$NCURSES_WINT_T,;t t
+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_BOOL@,$NCURSES_BOOL,;t t
+s,@TERMINFO_CAPS@,$TERMINFO_CAPS,;t t
+s,@NCURSES_OSPEED@,$NCURSES_OSPEED,;t t
+s,@MANPAGE_RENAMES@,$MANPAGE_RENAMES,;t t
+s,@NCURSES_EXT_FUNCS@,$NCURSES_EXT_FUNCS,;t t
+s,@NCURSES_CONST@,$NCURSES_CONST,;t t
+s,@NCURSES_SBOOL@,$NCURSES_SBOOL,;t t
+s,@NCURSES_XNAMES@,$NCURSES_XNAMES,;t t
+s,@NCURSES_EXT_COLORS@,$NCURSES_EXT_COLORS,;t t
+s,@NCURSES_MOUSE_VERSION@,$NCURSES_MOUSE_VERSION,;t t
+s,@ECHO_LINK@,$ECHO_LINK,;t t
+s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t
+s,@EXTRA_CXXFLAGS@,$EXTRA_CXXFLAGS,;t t
+s,@ADA_TRACE@,$ADA_TRACE,;t t
+s,@MATH_LIB@,$MATH_LIB,;t t
+s,@NCURSES_INLINE@,$NCURSES_INLINE,;t t
+s,@cf_cv_typeof_chtype@,$cf_cv_typeof_chtype,;t t
+s,@cf_cv_1UL@,$cf_cv_1UL,;t t
+s,@cf_cv_typeof_mmask_t@,$cf_cv_typeof_mmask_t,;t t
+s,@HAVE_VSSCANF@,$HAVE_VSSCANF,;t t
+s,@CXXCPP@,$CXXCPP,;t t
+s,@CXXLDFLAGS@,$CXXLDFLAGS,;t t
+s,@CXX_AR@,$CXX_AR,;t t
+s,@CXX_AR_OPTS@,$CXX_AR_OPTS,;t t
+s,@CXXLIBS@,$CXXLIBS,;t t
+s,@USE_CXX_BOOL@,$USE_CXX_BOOL,;t t
+s,@gnat_exists@,$gnat_exists,;t t
+s,@M4_exists@,$M4_exists,;t t
+s,@cf_ada_make@,$cf_ada_make,;t t
+s,@cf_ada_compiler@,$cf_ada_compiler,;t t
+s,@cf_ada_package@,$cf_ada_package,;t t
+s,@ADAFLAGS@,$ADAFLAGS,;t t
+s,@cf_compile_generics@,$cf_compile_generics,;t t
+s,@cf_generic_objects@,$cf_generic_objects,;t t
+s,@PRAGMA_UNREF@,$PRAGMA_UNREF,;t t
+s,@ADA_INCLUDE@,$ADA_INCLUDE,;t t
+s,@ADA_OBJECTS@,$ADA_OBJECTS,;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,@TINFO_ARG_SUFFIX@,$TINFO_ARG_SUFFIX,;t t
+s,@TINFO_DEP_SUFFIX@,$TINFO_DEP_SUFFIX,;t t
+s,@TINFO_LIB_SUFFIX@,$TINFO_LIB_SUFFIX,;t t
+s,@TINFO_ARGS@,$TINFO_ARGS,;t t
+s,@TINFO_ARGS2@,$TINFO_ARGS2,;t t
+s,@WITH_OVERWRITE@,$WITH_OVERWRITE,;t t
+s,@TINFO_LIST@,$TINFO_LIST,;t t
+s,@SHLIB_LIST@,$SHLIB_LIST,;t t
+s,@TEST_ARGS@,$TEST_ARGS,;t t
+s,@TEST_DEPS@,$TEST_DEPS,;t t
+s,@TEST_ARG2@,$TEST_ARG2,;t t
+s,@TEST_DEP2@,$TEST_DEP2,;t t
+s,@ADA_SUBDIRS@,$ADA_SUBDIRS,;t t
+s,@DIRS_TO_MAKE@,$DIRS_TO_MAKE,;t t
+s,@HAVE_TCGETATTR@,$HAVE_TCGETATTR,;t t
+s,@HAVE_TERMIO_H@,$HAVE_TERMIO_H,;t t
+s,@HAVE_TERMIOS_H@,$HAVE_TERMIOS_H,;t t
+CEOF
+
+EOF
+
+ cat >>$CONFIG_STATUS <<\EOF
+ # Split the substitutions into bite-sized pieces for seds with
+ # small command number limits, like on Digital OSF/1 and HP-UX.
+ ac_max_sed_lines=48
+ ac_sed_frag=1 # Number of current file.
+ ac_beg=1 # First line for current file.
+ ac_end=$ac_max_sed_lines # Line after last line for current file.
+ ac_more_lines=:
+ ac_sed_cmds=
+ while $ac_more_lines; do
+ if test $ac_beg -gt 1; then
+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ else
+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
+ fi
+ if test ! -s $tmp/subs.frag; then
+ ac_more_lines=false
+ else
+ # The purpose of the label and of the branching condition is to
+ # speed up the sed processing (if there are no `@' at all, there
+ # is no need to browse any of the substitutions).
+ # 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
+ if test -z "$ac_sed_cmds"; then
+ 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"
+ fi
+ ac_sed_frag=`expr $ac_sed_frag + 1`
+ ac_beg=$ac_end
+ ac_end=`expr $ac_end + $ac_max_sed_lines`
+ fi
+ done
+ if test -z "$ac_sed_cmds"; then
+ ac_sed_cmds=cat
+ fi
+fi # test -n "$CONFIG_FILES"
-CONFIG_FILES=\${CONFIG_FILES-"\
- include/MKterm.h.awk \
- include/curses.head:include/curses.h.in \
- include/termcap.h \
- include/unctrl.h \
- misc/run_tic.sh:misc/run_tic.in \
- $SUB_MAKEFILES \
- Makefile"}
EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+cat >>$CONFIG_STATUS <<\EOF
+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
esac
- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
+ ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+ { case "$ac_dir" in
+ [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+ *) as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+ case $as_mkdir_dir in
+ # Skip DOS drivespec
+ ?:) as_incr_dir=$as_mkdir_dir ;;
+ *)
+ as_incr_dir=$as_incr_dir/$as_mkdir_dir
+ test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+ ;;
+ esac
+done; }
+
+ ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`"
# A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+ ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'`
else
ac_dir_suffix= ac_dots=
fi
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+ case $srcdir in
+ .) ac_srcdir=.
+ if test -z "$ac_dots"; then
+ ac_top_srcdir=.
+ else
+ ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'`
+ fi ;;
+ [\\/]* | ?:[\\/]* )
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir ;;
*) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ ac_srcdir=$ac_dots$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_dots$srcdir ;;
esac
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+ case $INSTALL in
+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+ *) ac_INSTALL=$ac_dots$INSTALL ;;
esac
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
+ if test x"$ac_file" != x-; then
+ { echo "$as_me:16149: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ rm -f "$ac_file"
+ fi
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated automatically by config.status. */
+ configure_input="Generated automatically from `echo $ac_file_in |
+ sed 's,.*/,,'` by configure."
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:16167: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo $f;;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo $f
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo $srcdir/$f
+ else
+ # /dev/null tree
+ { { echo "$as_me:16180: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+EOF
+cat >>$CONFIG_STATUS <<EOF
+ sed "$ac_vpsub
+$extrasub
+EOF
+cat >>$CONFIG_STATUS <<\EOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s,@configure_input@,$configure_input,;t t
+s,@srcdir@,$ac_srcdir,;t t
+s,@top_srcdir@,$ac_top_srcdir,;t t
+s,@INSTALL@,$ac_INSTALL,;t t
+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
+ rm -f $tmp/stdin
+ if test x"$ac_file" != x-; then
+ mv $tmp/out $ac_file
+ else
+ cat $tmp/out
+ rm -f $tmp/out
+ fi
+
+done
+EOF
+cat >>$CONFIG_STATUS <<\EOF
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
+#
+# CONFIG_HEADER section.
+#
# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
# NAME is the cpp macro being defined and VALUE is the value it is being given.
#
# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)'
-ac_dB='\([ ][ ]*\)[^ ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_uB='\([ ]\)%\1#\2define\3'
+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)'
+ac_dB='[ ].*$,\1#\2'
+ac_dC=' '
+ac_dD=',;t'
+# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_iB='\([ ]\),\1#\2define\3'
+ac_iC=' '
+ac_iD='\4,;t'
+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
+ac_uB='$,\1#\2define\3'
ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
+ac_uD=',;t'
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
- CONFIG_HEADERS="include/ncurses_cfg.h:include/ncurses_cfg.hin"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
# Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
+ case $ac_file in
+ - | *:- | *:-:* ) # input from stdin
+ cat >$tmp/stdin
+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
+ * ) ac_file_in=$ac_file.in ;;
esac
- echo creating $ac_file
-
- rm -f conftest.frag conftest.in conftest.out
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- cat $ac_file_inputs > conftest.in
+ test x"$ac_file" != x- && { echo "$as_me:16246: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+
+ # First look for the input files in the build tree, otherwise in the
+ # src tree.
+ ac_file_inputs=`IFS=:
+ for f in $ac_file_in; do
+ case $f in
+ -) echo $tmp/stdin ;;
+ [\\/$]*)
+ # Absolute (can't be DOS-style, as IFS=:)
+ test -f "$f" || { { echo "$as_me:16257: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ echo $f;;
+ *) # Relative
+ if test -f "$f"; then
+ # Build tree
+ echo $f
+ elif test -f "$srcdir/$f"; then
+ # Source tree
+ echo $srcdir/$f
+ else
+ # /dev/null tree
+ { { echo "$as_me:16270: error: cannot find input file: $f" >&5
+echo "$as_me: error: cannot find input file: $f" >&2;}
+ { (exit 1); exit 1; }; }
+ fi;;
+ esac
+ done` || { (exit 1); exit 1; }
+ # Remove the trailing spaces.
+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in
EOF
-
# Transform confdefs.h into a list of #define's. We won't use it as a sed
# script, but as data to insert where we see @DEFS@. We expect AC_SAVE_DEFS to
# be either 'cat' or 'sort'.
-sort confdefs.h >conftest.vals
+cat confdefs.h | uniq >conftest.vals
# Break up conftest.vals because some shells have a limit on
# the size of here documents, and old seds have small limits too.
rm -f conftest.tail
echo ' rm -f conftest.frag' >> $CONFIG_STATUS
-while :
+while grep . conftest.vals >/dev/null
do
- ac_lines=`grep -c . conftest.vals`
- # grep -c gives empty output for an empty file on some AIX systems.
- if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
# Write chunks of a limited-size here document to conftest.frag.
echo ' cat >> conftest.frag <<CEOF' >> $CONFIG_STATUS
- sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+ sed ${ac_max_here_lines}q conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> $CONFIG_STATUS
echo 'CEOF' >> $CONFIG_STATUS
sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
rm -f conftest.vals
@@ -8829,78 +16300,92 @@ do
done
rm -f conftest.vals
-# Run sed to substitute the contents of conftest.frag into conftest.in at the
+# Run sed to substitute the contents of conftest.frag into $tmp/in at the
# marker @DEFS@.
echo ' cat >> conftest.edit <<CEOF
/@DEFS@/r conftest.frag
/@DEFS@/d
CEOF
-sed -f conftest.edit conftest.in > conftest.out
-rm -f conftest.in
-mv conftest.out conftest.in
+sed -f conftest.edit $tmp/in > $tmp/out
+rm -f $tmp/in
+mv $tmp/out $tmp/in
rm -f conftest.edit conftest.frag
' >> $CONFIG_STATUS
-
-cat >> $CONFIG_STATUS <<\EOF
- rm -f conftest.frag conftest.h
- echo "/* $ac_file. Generated automatically by configure. */" > conftest.h
- cat conftest.in >> conftest.h
- rm -f conftest.in
- if cmp -s $ac_file conftest.h 2>/dev/null; then
- echo "$ac_file is unchanged"
- rm -f conftest.h
+cat >>$CONFIG_STATUS <<\EOF
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated automatically by config.status. */
+ if test x"$ac_file" = x-; then
+ echo "/* Generated automatically by configure. */" >$tmp/config.h
else
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+ echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h
+ fi
+ cat $tmp/in >>$tmp/config.h
+ 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:16328: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| \
+ . : '\(.\)' 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
+ /^X\(\/\/\)[^/].*/{ s//\1/; q; }
+ /^X\(\/\/\)$/{ s//\1/; q; }
+ /^X\(\/\).*/{ s//\1/; q; }
+ s/.*/./; q'`
if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
+ { case "$ac_dir" in
+ [\\/]* | ?:[\\/]* ) as_incr_dir=;;
+ *) as_incr_dir=.;;
+esac
+as_dummy="$ac_dir"
+for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
+ case $as_mkdir_dir in
+ # Skip DOS drivespec
+ ?:) as_incr_dir=$as_mkdir_dir ;;
+ *)
+ as_incr_dir=$as_incr_dir/$as_mkdir_dir
+ test -d "$as_incr_dir" || mkdir "$as_incr_dir"
+ ;;
+ esac
+done; }
+
+ fi
+ rm -f $ac_file
+ mv $tmp/config.h $ac_file
fi
- rm -f $ac_file
- mv conftest.h $ac_file
+ else
+ cat $tmp/config.h
+ rm -f $tmp/config.h
fi
-fi; done
-
+done
EOF
-cat >> $CONFIG_STATUS <<EOF
-# Extra initialization commands, if any
-
-### Special initialization commands, used to pass information from the
-### configuration-run into config.status
-
-AWK="$AWK"
-CF_LIST_MODELS="$cf_list_models"
-DFT_LWR_MODEL="$DFT_LWR_MODEL"
-LDCONFIG="$LDCONFIG"
-LIB_NAME="$LIB_NAME"
-LIB_SUBSETS="$LIB_SUBSETS"
-LIB_SUFFIX="$LIB_SUFFIX"
-LIB_TRACING="$LIB_TRACING"
-MAKE_TERMINFO="$MAKE_TERMINFO"
-NCURSES_OSPEED="$NCURSES_OSPEED"
-SRC_SUBDIRS="$SRC_SUBDIRS"
-TERMINFO="$TERMINFO"
-TINFO_NAME="$TINFO_NAME"
-WITH_CURSES_H="$with_curses_h"
-WITH_ECHO="$with_echo"
-WITH_OVERWRITE="$with_overwrite"
-cf_cv_abi_version="$cf_cv_abi_version"
-cf_cv_do_symlinks="$cf_cv_do_symlinks"
-cf_cv_rel_version="$cf_cv_rel_version"
-cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
-cf_cv_shlib_version="$cf_cv_shlib_version"
-cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
-cf_cv_system_name="$cf_cv_system_name"
-cf_with_cxx_binding="$cf_with_cxx_binding"
-target="$target"
-
+cat >>$CONFIG_STATUS <<\EOF
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-# Extra commands, if any
+#
+# CONFIG_COMMANDS section.
+#
+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'`
+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'`
+ case $ac_dest in
+ default )
+for cf_dir in test
+do
+ if test ! -d $srcdir/$cf_dir; then
+ continue
+ elif test -f $srcdir/$cf_dir/programs; then
+ $AWK -f $srcdir/test/mk-test.awk ECHO_LINK="$ECHO_LINK" $srcdir/$cf_dir/programs >>$cf_dir/Makefile
+ fi
+done
case $cf_cv_system_name in
OS/2*) LIB_PREFIX='' ;;
@@ -8908,20 +16393,19 @@ cat >> $CONFIG_STATUS <<\EOF
*) LIB_PREFIX='lib' ;;
esac
cf_prefix=$LIB_PREFIX
-
-
for cf_dir in $SRC_SUBDIRS
do
- if test -f $srcdir/$cf_dir/modules; then
+ if test ! -d $srcdir/$cf_dir ; then
+ continue
+ elif test -f $srcdir/$cf_dir/modules; then
IMPORT_LIB=
SHARED_LIB=
LIBS_TO_MAKE=
- for cf_item in $CF_LIST_MODELS
+ for cf_item in $cf_LIST_MODELS
do
-
-
+
case $cf_item in
libtool) cf_suffix='.la' ;;
normal) cf_suffix='.a' ;;
@@ -8931,7 +16415,12 @@ do
case $cf_cv_system_name in
cygwin*) cf_suffix='.dll' ;;
darwin*) cf_suffix='.dylib' ;;
- hpux*) cf_suffix='.sl' ;;
+ hpux*)
+ case $target in
+ ia64*) cf_suffix='.so' ;;
+ *) cf_suffix='.sl' ;;
+ esac
+ ;;
*) cf_suffix='.so' ;;
esac
esac
@@ -8942,23 +16431,45 @@ do
case "$cf_cv_shlib_version" in #(vi
rel) #(vi
case "$cf_cv_system_name" in #(vi
- darwin*) cf_suffix='.$(REL_VERSION)'"$cf_suffix" ;; #(vi
- *) cf_suffix="$cf_suffix"'.$(REL_VERSION)' ;;
+ darwin*)
+ case .${LIB_SUFFIX} in
+ .w*)
+ cf_suffix=`echo $cf_suffix | sed 's/^w//'`
+ cf_suffix=w'.${REL_VERSION}'"$cf_suffix"
+ ;;
+ *)
+ cf_suffix='.${REL_VERSION}'"$cf_suffix"
+ ;;
+ esac
+ ;; #(vi
+ *) cf_suffix="$cf_suffix"'.${REL_VERSION}' ;;
esac
;;
abi)
case "$cf_cv_system_name" in #(vi
- darwin*) cf_suffix='.$(ABI_VERSION)'"$cf_suffix" ;; #(vi
- *) cf_suffix="$cf_suffix"'.$(ABI_VERSION)' ;;
+ darwin*)
+ case .${LIB_SUFFIX} in
+ .w*)
+ cf_suffix=`echo $cf_suffix | sed 's/^w//'`
+ cf_suffix=w'.${ABI_VERSION}'"$cf_suffix"
+ ;;
+ *)
+ cf_suffix='.${ABI_VERSION}'"$cf_suffix"
+ ;;
+ esac
+ ;; #(vi
+ *) cf_suffix="$cf_suffix"'.${ABI_VERSION}' ;;
esac
;;
esac
fi
# 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.
if test $cf_cv_shlib_version = cygdll ; then
- SHARED_LIB="../lib/${cf_prefix}${cf_dir}\$(ABI_VERSION).dll"
- IMPORT_LIB="../lib/${cf_prefix}${cf_dir}.dll.a"
- LIBS_TO_MAKE="$LIBS_TO_MAKE \$(SHARED_LIB) \$(IMPORT_LIB)"
+ SHARED_LIB="cyg${cf_dir}\${ABI_VERSION}.dll"
+ IMPORT_LIB="${cf_prefix}${cf_dir}.dll.a"
+ LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/\${SHARED_LIB} ../lib/\${IMPORT_LIB}"
continue
fi
fi
@@ -8967,21 +16478,18 @@ do
if test $cf_dir = ncurses ; then
cf_subsets="$LIB_SUBSETS"
- case "$LIB_SUBSETS" in #(vi
- termlib+*) #(vi
- ;;
- *) #(vi
- cf_item=`echo $LIBS_TO_MAKE |sed -e s/$LIB_NAME/$TINFO_NAME/g`
+ cf_termlib=`echo "$cf_subsets" |sed -e 's/ .*$//'`
+ if test "$cf_termlib" != "$cf_subsets" ; then
+ cf_item=`echo $LIBS_TO_MAKE |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g`
LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE"
- ;;
- esac
+ fi
else
- cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib //'`
+ cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'`
fi
- sed -e "s@\@LIBS_TO_MAKE\@@$LIBS_TO_MAKE@" \
- -e "s@\@IMPORT_LIB\@@$IMPORT_LIB@" \
- -e "s@\@SHARED_LIB\@@$SHARED_LIB@" \
+ sed -e "s%@LIBS_TO_MAKE@%$LIBS_TO_MAKE%" \
+ -e "s%@IMPORT_LIB@%$IMPORT_LIB%" \
+ -e "s%@SHARED_LIB@%$SHARED_LIB%" \
$cf_dir/Makefile >$cf_dir/Makefile.out
mv $cf_dir/Makefile.out $cf_dir/Makefile
@@ -8992,14 +16500,12 @@ do
for cf_subset in $cf_subsets
do
cf_subdirs=
- for cf_item in $CF_LIST_MODELS
+ for cf_item in $cf_LIST_MODELS
do
echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})"
-
-CF_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-
-
+cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
+
case $cf_item in
libtool) cf_suffix='.la' ;;
normal) cf_suffix='.a' ;;
@@ -9009,13 +16515,17 @@ CF_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
case $cf_cv_system_name in
cygwin*) cf_suffix='.dll' ;;
darwin*) cf_suffix='.dylib' ;;
- hpux*) cf_suffix='.sl' ;;
+ hpux*)
+ case $target in
+ ia64*) cf_suffix='.so' ;;
+ *) cf_suffix='.sl' ;;
+ esac
+ ;;
*) cf_suffix='.so' ;;
esac
esac
test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}"
-
case $cf_item in
libtool) cf_subdir='obj_lo' ;;
normal) cf_subdir='objects' ;;
@@ -9030,6 +16540,21 @@ CF_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
esac
esac
+ # Test for case where we build libtinfo with a different name.
+ cf_libname=$cf_dir
+ if test $cf_dir = ncurses ; then
+ case $cf_subset in
+ *base*)
+ ;;
+ termlib*)
+ cf_libname=$TINFO_LIB_SUFFIX
+ 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}%%"`
+ fi
+ ;;
+ esac
+ fi
# These dependencies really are for development, not
# builds, but they are useful in porting, too.
@@ -9037,7 +16562,7 @@ CF_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
if test "$srcdir" = "."; then
cf_reldir="."
else
- cf_reldir="\$(srcdir)"
+ cf_reldir="\${srcdir}"
fi
if test -f $srcdir/$cf_dir/$cf_dir.priv.h; then
@@ -9046,10 +16571,24 @@ CF_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
cf_depend="$cf_depend $cf_reldir/curses.priv.h"
fi
+ 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
+ w*)
+ cf_libname=`echo $cf_libname | sed 's/w$//'`
+ cf_suffix=`echo $cf_suffix | sed 's/^w//'`
+ cf_dir_suffix=w
+ ;;
+ esac
+ fi
+ fi
+
$AWK -f $srcdir/mk-1st.awk \
- name=$cf_dir \
+ name=${cf_libname}${cf_dir_suffix} \
traces=$LIB_TRACING \
- MODEL=$CF_ITEM \
+ MODEL=$cf_ITEM \
model=$cf_subdir \
prefix=$cf_prefix \
suffix=$cf_suffix \
@@ -9061,8 +16600,11 @@ CF_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
ldconfig="$LDCONFIG" \
overwrite=$WITH_OVERWRITE \
depend="$cf_depend" \
- target="$target" \
+ host="$host" \
$srcdir/$cf_dir/modules >>$cf_dir/Makefile
+
+ cf_suffix="$old_cf_suffix"
+
for cf_subdir2 in $cf_subdirs lib
do
test $cf_subdir = $cf_subdir2 && break
@@ -9071,29 +16613,35 @@ CF_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
$AWK -f $srcdir/mk-2nd.awk \
name=$cf_dir \
traces=$LIB_TRACING \
- MODEL=$CF_ITEM \
+ MODEL=$cf_ITEM \
model=$cf_subdir \
subset=$cf_subset \
srcdir=$srcdir \
echo=$WITH_ECHO \
+ crenames=$cf_cv_prog_CC_c_o \
+ cxxrenames=$cf_cv_prog_CXX_c_o \
$srcdir/$cf_dir/modules >>$cf_dir/Makefile
cf_subdirs="$cf_subdirs $cf_subdir"
done
done
fi
- echo ' cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) $@' >>Makefile
+ echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} $@' >>Makefile
done
for cf_dir in $SRC_SUBDIRS
do
+ if test ! -d $srcdir/$cf_dir ; then
+ continue
+ fi
+
if test -f $cf_dir/Makefile ; then
case "$cf_dir" in
Ada95) #(vi
echo 'libs \' >> Makefile
echo 'install.libs \' >> Makefile
echo 'uninstall.libs ::' >> Makefile
- echo ' cd '$cf_dir' && $(MAKE) $(CF_MFLAGS) $@' >> Makefile
+ echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} $@' >> Makefile
;;
esac
fi
@@ -9116,7 +16664,7 @@ install.libs \\
uninstall.libs \\
install.$cf_dir \\
uninstall.$cf_dir ::
- cd $cf_dir && \$(MAKE) \$(CF_MFLAGS) \$@
+ cd $cf_dir && \${MAKE} \${CF_MFLAGS} \$@
CF_EOF
elif test -f $srcdir/$cf_dir/headers; then
cat >> Makefile <<CF_EOF
@@ -9126,7 +16674,7 @@ install.libs \\
uninstall.libs \\
install.includes \\
uninstall.includes ::
- cd $cf_dir && \$(MAKE) \$(CF_MFLAGS) \$@
+ cd $cf_dir && \${MAKE} \${CF_MFLAGS} \$@
CF_EOF
fi
done
@@ -9135,16 +16683,16 @@ cat >> Makefile <<CF_EOF
install.data \\
uninstall.data ::
-$MAKE_TERMINFO cd misc && \$(MAKE) \$(CF_MFLAGS) \$@
+$MAKE_TERMINFO cd misc && \${MAKE} \${CF_MFLAGS} \$@
install.man \\
uninstall.man ::
- cd man && \$(MAKE) \$(CF_MFLAGS) \$@
+ cd man && \${MAKE} \${CF_MFLAGS} \$@
distclean ::
rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h
rm -f headers.sh headers.sed
- rm -rf \$(DIRS_TO_MAKE)
+ rm -rf \${DIRS_TO_MAKE}
CF_EOF
# Special case: tack's manpage lives in its own directory.
@@ -9154,12 +16702,11 @@ cat >> Makefile <<CF_EOF
install.man \\
uninstall.man ::
- cd tack && \$(MAKE) \$(CF_MFLAGS) \$@
+ cd tack && \${MAKE} \${CF_MFLAGS} \$@
CF_EOF
fi
fi
-
rm -f headers.sed headers.sh
echo creating headers.sh
@@ -9181,6 +16728,7 @@ TMPSRC=\${TMPDIR-/tmp}/\`basename \$SRC\`\$\$
TMPSED=\${TMPDIR-/tmp}/headers.sed\$\$
echo installing \$SRC in \$DST
CF_EOF
+
if test $WITH_CURSES_H = yes; then
cat >>headers.sh <<CF_EOF
case \$DST in
@@ -9197,6 +16745,7 @@ case \$DST in
;;
esac
CF_EOF
+
else
cat >>headers.sh <<CF_EOF
case \$DST in
@@ -9241,14 +16790,18 @@ chmod 0755 headers.sh
for cf_dir in $SRC_SUBDIRS
do
+ if test ! -d $srcdir/$cf_dir ; then
+ continue
+ fi
+
if test -f $srcdir/$cf_dir/headers; then
cat >>$cf_dir/Makefile <<CF_EOF
-\$(DESTDIR)\$(includedir) :
- sh \$(srcdir)/../mkinstalldirs \$@
+\${DESTDIR}\${includedir} :
+ sh \${srcdir}/../mkinstalldirs \$@
install \\
install.libs \\
-install.includes :: \$(AUTO_SRC) \$(DESTDIR)\$(includedir) \\
+install.includes :: \${AUTO_SRC} \${DESTDIR}\${includedir} \\
CF_EOF
j=""
for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
@@ -9256,11 +16809,13 @@ CF_EOF
test -n "$j" && echo " $j \\" >>$cf_dir/Makefile
j=$i
done
+
echo " $j" >>$cf_dir/Makefile
+
for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
do
- echo " @ (cd \$(DESTDIR)\$(includedir) && rm -f `basename $i`) ; ../headers.sh \$(INSTALL_DATA) \$(DESTDIR)\$(includedir) \$(srcdir) $i" >>$cf_dir/Makefile
- test $i = curses.h && test $WITH_CURSES_H = yes && echo " @ (cd \$(DESTDIR)\$(includedir) && rm -f ncurses.h && \$(LN_S) curses.h ncurses.h)" >>$cf_dir/Makefile
+ echo " @ (cd \${DESTDIR}\${includedir} && rm -f `basename $i`) ; ../headers.sh \${INSTALL_DATA} \${DESTDIR}\${includedir} \${srcdir} $i" >>$cf_dir/Makefile
+ test $i = curses.h && test $WITH_CURSES_H = yes && echo " @ (cd \${DESTDIR}\${includedir} && rm -f ncurses.h && \${LN_S} curses.h ncurses.h)" >>$cf_dir/Makefile
done
cat >>$cf_dir/Makefile <<CF_EOF
@@ -9272,16 +16827,16 @@ CF_EOF
for i in `cat $srcdir/$cf_dir/headers |fgrep -v "#"`
do
i=`basename $i`
- echo " -@ (cd \$(DESTDIR)\$(includedir) && rm -f $i)" >>$cf_dir/Makefile
- test $i = curses.h && echo " -@ (cd \$(DESTDIR)\$(includedir) && rm -f ncurses.h)" >>$cf_dir/Makefile
+ echo " -@ (cd \${DESTDIR}\${includedir} && rm -f $i)" >>$cf_dir/Makefile
+ test $i = curses.h && echo " -@ (cd \${DESTDIR}\${includedir} && rm -f ncurses.h)" >>$cf_dir/Makefile
done
fi
if test -f $srcdir/$cf_dir/modules; then
if test "$cf_dir" != "c++" ; then
cat >>$cf_dir/Makefile <<"CF_EOF"
-depend : $(AUTO_SRC)
- makedepend -- $(CPPFLAGS) -- $(C_SRC)
+depend : ${AUTO_SRC}
+ makedepend -- ${CPPFLAGS} -- ${C_SRC}
# DO NOT DELETE THIS LINE -- make depend depends on it.
CF_EOF
@@ -9289,11 +16844,33 @@ CF_EOF
fi
done
+ ;;
+ esac
+done
+EOF
+cat >>$CONFIG_STATUS <<\EOF
-exit 0
+{ (exit 0); exit 0; }
EOF
chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+ac_clean_files=$ac_clean_files_save
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
${MAKE-make} preinstall
diff --git a/contrib/ncurses/configure.in b/contrib/ncurses/configure.in
index 93a6d0091e16..34b5c0a191e5 100644
--- a/contrib/ncurses/configure.in
+++ b/contrib/ncurses/configure.in
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+dnl Copyright (c) 1998-2005,2006 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,50 +28,29 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: configure.in,v 1.268 2002/06/15 17:40:45 tom Exp $
+dnl $Id: configure.in,v 1.383 2006/12/17 01:26:06 tom Exp $
dnl Process this file with autoconf to produce a configure script.
dnl
-dnl See http://dickey.his.com/autoconf/ for additional information.
+dnl See http://invisible-island.net/autoconf/ for additional information.
dnl
dnl ---------------------------------------------------------------------------
AC_PREREQ(2.13.20020210)
-AC_REVISION($Revision: 1.268 $)
+AC_REVISION($Revision: 1.383 $)
AC_INIT(ncurses/base/lib_initscr.c)
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
+CF_TOP_BUILDDIR
CF_SUBST_NCURSES_VERSION
+
+CF_WITH_REL_VERSION(NCURSES)
+CF_WITH_ABI_VERSION
+
CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
AC_ARG_WITH(system-type,
[ --with-system-type=XXX test: override derived host system-type],
[AC_MSG_WARN(overriding system type to $withval)
cf_cv_system_name=$withval])
-# We need a configure script only when compiling as part of GNU C library.
-# Here we have to generate one of the files we need while compiling.
-#
-# The only problem is that users of the package might think they have to
-# run configure themself and find it irritating when nothing happens.
-#
-# So we try here to find out whether we are called from the glibc configure
-# or by a user.
-#
-dnl Check if we are a drop-in addition to glibc.
-AC_ARG_ENABLE(add-ons, dnl
-[ --enable-add-ons=DIR... used to check if we are a glibc add-on.],
- [glibc_add_on=yes],
- [glibc_add_on=])
-
-if test x"$glibc_add_on" = "xyes" ; then
- rm -f $srcdir/Banner
- # We are in glibc.
- rm -f $srcdir/Makefile
- cp $srcdir/Makefile.glibc $srcdir/Makefile
- echo "ncurses `grep \"^[[ ]]*ncurses-version[[ ]]*=.*$\" \
- $srcdir/Makefile | sed -e \
- 's/^[[ ]]*ncurses-version[[ ]]*=[[ ]]*\([[^ ^ ]]*\)[[ ]]*$/\1/'`" > $srcdir/Banner
- exit 0
-fi
-
### Save the given $CFLAGS to allow user-override.
cf_user_CFLAGS="$CFLAGS"
@@ -80,55 +59,15 @@ CF_CFG_DEFAULTS
### Checks for programs.
AC_PROG_CC
-GCC_VERSION=none
-if test "$GCC" = yes ; then
- AC_MSG_CHECKING(version of gcc)
- GCC_VERSION="`${CC} --version|head -1`"
- AC_MSG_RESULT($GCC_VERSION)
-fi
-
-# If we're cross-compiling, allow the user to override the tools and their
-# options. The configure script is oriented toward identifying the target
-# compiler, etc., but we need a host compiler to generate parts of the source.
-BUILD_CC='$(CC)'
-BUILD_CFLAGS='$(CFLAGS)'
-BUILD_LDFLAGS='$(LDFLAGS)'
-BUILD_LIBS='$(LIBS)'
-if test "$host_alias" != "$target_alias" ; then
- AC_ARG_WITH(build-cc,
- [ --with-build-cc=XXX if cross-compiling, the host C compiler (\$BUILD_CC)],
- [BUILD_CC="$withval"],
- [AC_CHECK_PROGS(BUILD_CC, $CC gcc cc)])
- AC_ARG_WITH(build-cflags,
- [ --with-build-cflags=XXX if cross-compiling, the host C compiler-flags],
- [BUILD_CFLAGS="$withval"])
- AC_ARG_WITH(build-ldflags,
- [ --with-build-ldflags=XXX if cross-compiling, the host linker-flags],
- [BUILD_LDFLAGS="$withval"])
- AC_ARG_WITH(build-libs,
- [ --with-build-libs=XXX if cross-compiling, the host libraries],
- [BUILD_LIBS="$withval"])
-fi
-AC_SUBST(BUILD_CC)
-AC_SUBST(BUILD_CFLAGS)
-AC_SUBST(BUILD_LDFLAGS)
-AC_SUBST(BUILD_LIBS)
+CF_GCC_VERSION
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL
+CF_PROG_CC_C_O(CC)
AC_ISC_POSIX
CF_ANSI_CC_REQD
CF_PROG_EXT
-
-case "$cf_cv_system_name" in
-freebsd*) #(vi
- test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
- ;;
-*) LDPATH=$PATH:/sbin:/usr/sbin
- AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
- ;;
-esac
-AC_SUBST(LDCONFIG)
+CF_PROG_LDCONFIG
dnl DEFECT in autoconf 2.12: an attempt to set policy, this breaks the
dnl configure script by not letting us test if C++
@@ -143,26 +82,31 @@ if test "X$cf_with_cxx" = Xno ; then
CXX=""
GXX=""
else
+ # with autoconf 2.13, we can change the error to a warning:
pushdef([AC_MSG_ERROR],
- [AC_MSG_RESULT([You don't have any C++ compiler, too bad]); dnl
+ [AC_MSG_RESULT(no)
+ AC_MSG_WARN([You don't have any C++ compiler, too bad])
cf_with_cxx=no; CXX=""; GXX="";])dnl
AC_PROG_CXX
popdef([AC_MSG_ERROR])dnl
+ # autoconf 2.5x removed the error - by hardcoding it to g++.
+ if test "$CXX" = "g++" ; then
+ AC_PATH_PROG(CXX,g++)
+ fi
+ if test "$CXX" = "g++" ; then
+ AC_MSG_WARN(ignoring hardcoded g++)
+ cf_with_cxx=no; CXX=""; GXX="";
+ fi
fi
-GXX_VERSION=none
-if test "$GXX" = yes; then
- AC_MSG_CHECKING(version of g++)
- GXX_VERSION="`${CXX-g++} --version|head -1`"
- AC_MSG_RESULT($GXX_VERSION)
- case $GXX_VERSION in
- 1*|2.[[0-6]]*)
- GXX=""; CXX=""; ac_cv_prog_gxx=no
- cf_cxx_library=no
- AC_MSG_WARN(templates do not work)
- ;;
- esac
-fi
+CF_GXX_VERSION
+case $GXX_VERSION in
+1*|2.[[0-6]]*)
+ # GXX=""; CXX=""; ac_cv_prog_gxx=no
+ # cf_cxx_library=no
+ AC_MSG_WARN(templates do not work)
+ ;;
+esac
AC_MSG_CHECKING(if you want to build C++ binding and demo)
AC_ARG_WITH(cxx-binding,
@@ -199,31 +143,32 @@ fi
modules_to_build="$modules_to_build panel menu form"
AC_ARG_PROGRAM
-AC_PROG_AWK
-AC_PROG_MAKE_SET
+
+CF_PROG_AWK
+CF_PROG_EGREP
CF_PROG_INSTALL
-AC_SYS_LONG_FILE_NAMES
-CF_MIXEDCASE_FILENAMES
+CF_PROG_LINT
AC_PROG_LN_S
-AC_PROG_RANLIB
+
+AC_PROG_MAKE_SET
CF_MAKE_TAGS
-AC_CHECK_PROGS(LINT, tdlint lint alint)
-AC_CHECK_PROGS(MAN, man man_db)
-AC_SUBST(LINT_OPTS)
+CF_MAKEFLAGS
+
+AC_SYS_LONG_FILE_NAMES
+CF_MIXEDCASE_FILENAMES
dnl These are standard among *NIX systems, but not when cross-compiling
-CF_SUBST(loader,LD,ld)
-CF_SUBST(archiver,AR,ar)
+AC_CHECK_TOOL(RANLIB, ranlib, ':')
+AC_CHECK_TOOL(LD, ld, ld)
+AC_CHECK_TOOL(AR, ar, ar)
CF_SUBST(archiver options,AR_OPTS,rv)
-CF_MAKEFLAGS
-
dnl Special option for use by system-builders: the install-prefix is used to
dnl adjust the location into which the actual install is done, so that an
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)],
+ [ --with-install-prefix prefixes actual install-location ($DESTDIR)],
[case "$withval" in #(vi
yes|no) #(vi
;;
@@ -234,6 +179,13 @@ AC_MSG_RESULT($DESTDIR)
AC_SUBST(DESTDIR)
###############################################################################
+CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:)
+# If we're cross-compiling, allow the user to override the tools and their
+# options. The configure script is oriented toward identifying the host
+# compiler, etc., but we need a build compiler to generate parts of the source.
+CF_BUILD_CC
+
+###############################################################################
CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
### Options to allow the user to specify the set of libraries which are used.
@@ -242,19 +194,12 @@ CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
cf_list_models=""
AC_SUBST(cf_list_models)dnl the complete list of models ("normal debug")
-AC_MSG_CHECKING(if you want to build libraries with libtool)
-AC_ARG_WITH(libtool,
- [ --with-libtool generate libraries with libtool],
- [with_libtool=$withval],
- [with_libtool=no])
-AC_MSG_RESULT($with_libtool)
-if test "$with_libtool" = "yes"; then
- cf_list_models="$cf_list_models libtool"
- test -z "$LIBTOOL" && LIBTOOL=libtool
+CF_WITH_LIBTOOL
+if test "$with_libtool" != "no" ; then
+
+cf_list_models="$cf_list_models libtool"
+
else
- LIBTOOL=""
-fi
-AC_SUBST(LIBTOOL)
AC_MSG_CHECKING(if you want to build shared libraries)
AC_ARG_WITH(shared,
@@ -288,19 +233,21 @@ AC_ARG_WITH(profile,
AC_MSG_RESULT($with_profile)
test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
+fi
+
###############################################################################
AC_MSG_CHECKING(for specified models)
test -z "$cf_list_models" && cf_list_models=normal
dnl If we use libtool to generate libraries, then it must be the only
dnl specified model.
-test "$with_libtool" = "yes" && cf_list_models=libtool
+test "$with_libtool" != "no" && cf_list_models=libtool
AC_MSG_RESULT($cf_list_models)
### Use the first model as the default, and save its suffix for use in building
### up test-applications.
AC_MSG_CHECKING(for default model)
-DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
+DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
AC_MSG_RESULT($DFT_LWR_MODEL)
CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
@@ -315,6 +262,8 @@ LIB_NAME=ncurses
AC_SUBST(LIB_NAME)
LIB_DIR=../lib
+LIB_2ND=../../lib
+
CF_LIB_PREFIX(cf_prefix)
LIB_PREFIX=$cf_prefix
AC_SUBST(LIB_PREFIX)
@@ -332,42 +281,36 @@ AC_ARG_WITH(termlib,
AC_MSG_RESULT($with_termlib)
### Checks for special libraries, must be done up-front.
-AC_MSG_CHECKING(if you want to link with dbmalloc for testing)
-AC_ARG_WITH(dbmalloc,
- [ --with-dbmalloc test: use Conor Cahill's dbmalloc library],
- [with_dbmalloc=$withval],
- [with_dbmalloc=no])
-AC_MSG_RESULT($with_dbmalloc)
-if test "$with_dbmalloc" = yes ; then
- AC_CHECK_LIB(dbmalloc,debug_malloc)
-fi
-
-AC_MSG_CHECKING(if you want to link with dmalloc for testing)
-AC_ARG_WITH(dmalloc,
- [ --with-dmalloc test: use Gray Watson's dmalloc library],
- [with_dmalloc=$withval],
- [with_dmalloc=no])
-AC_MSG_RESULT($with_dmalloc)
-if test "$with_dmalloc" = yes ; then
- AC_CHECK_LIB(dmalloc,dmalloc_debug)
-fi
-
SHLIB_LIST=""
-AC_MSG_CHECKING(if you want to link with the gpm mouse library)
-AC_ARG_WITH(gpm,
- [ --with-gpm use Alessandro Rubini's GPM library],
- [with_gpm=$withval],
- [with_gpm=no])
-AC_MSG_RESULT($with_gpm)
-if test "$with_gpm" = yes ; then
- AC_CHECK_LIB(gpm,Gpm_Open,[
- EXTRA_LIBS="-lgpm -lncurses $EXTRA_LIBS"
+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 "$with_dlsym" = yes ; then
+ CF_FUNC_DLSYM
+ if test "$with_gpm" != yes ; 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")
+ SHLIB_LIST="-ldl $SHLIB_LIST"
+ else
SHLIB_LIST="-lgpm $SHLIB_LIST"
- AC_DEFINE(HAVE_LIBGPM)
- AC_CHECK_HEADERS(gpm.h)
- ],AC_MSG_WARN(Cannot link with gpm library - read the FAQ))
+ fi
+ AC_DEFINE(HAVE_LIBGPM)
+ AC_CHECK_LIB(gpm,Gpm_Wgetch,[
+ AC_MSG_WARN(GPM library is already linked with curses - read the FAQ)
+ ])
fi
+CF_WITH_SYSMOUSE
+
dnl Not all ports of gcc support the -g option
if test X"$CC_G_OPT" = X"" ; then
@@ -417,7 +360,7 @@ AC_MSG_CHECKING(if you wish to install ncurses overwriting curses)
AC_ARG_ENABLE(overwrite,
[ --disable-overwrite leave out the link to -lcurses],
[with_overwrite=$enableval],
- [if test "$prefix" != "/usr/local" ; then with_overwrite=yes; else with_overwrite=no; fi])
+ [if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi])
AC_MSG_RESULT($with_overwrite)
AC_MSG_CHECKING(if external terminfo-database is used)
@@ -440,11 +383,18 @@ AC_SUBST(TERMINFO_SRC)
CF_PATHSEP
if test "$use_database" != no ; then
AC_DEFINE(USE_DATABASE)
+
AC_MSG_CHECKING(which terminfo source-file will be installed)
AC_ARG_ENABLE(database,
[ --with-database=XXX specify terminfo source to install],
[TERMINFO_SRC=$withval])
AC_MSG_RESULT($TERMINFO_SRC)
+
+ AC_MSG_CHECKING(whether to use hashed database instead of directory/tree)
+ AC_ARG_WITH(hashed-db,
+ [ --with-hashed-db specify hashed-database library],,
+ [with_hashed_db=no])
+ AC_MSG_RESULT($with_hashed_db)
fi
AC_MSG_CHECKING(for list of fallback descriptions)
@@ -453,9 +403,22 @@ AC_ARG_WITH(fallbacks,
[with_fallback=$withval],
[with_fallback=])
AC_MSG_RESULT($with_fallback)
-FALLBACK_LIST=`echo $with_fallback|sed -e 's/,/ /g'`
+FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'`
AC_SUBST(FALLBACK_LIST)
+AC_MSG_CHECKING(if you want modern xterm or antique)
+AC_ARG_WITH(xterm-new,
+ [ --without-xterm-new specify if xterm terminfo should be old version],
+ [with_xterm_new=$withval],
+ [with_xterm_new=yes])
+case $with_xterm_new in
+no) with_xterm_new=xterm-old;;
+*) with_xterm_new=xterm-new;;
+esac
+AC_MSG_RESULT($with_xterm_new)
+WHICH_XTERM=$with_xterm_new
+AC_SUBST(WHICH_XTERM)
+
MAKE_TERMINFO=
if test "$use_database" = no ; then
TERMINFO="${datadir}/terminfo"
@@ -499,7 +462,7 @@ int main() {
char *s = malloc(n);
if (s != 0)
s[0] = s[n-1] = 0;
- exit(s == 0);
+ ${cf_cv_main_return:-return}(s == 0);
}],
[with_big_core=yes],
[with_big_core=no],
@@ -517,7 +480,7 @@ AC_MSG_RESULT($with_termcap)
if test "$with_termcap" != "yes" ; then
if test "$use_database" = no ; then
- if test -z $with_fallback ; then
+ if test -z "$with_fallback" ; then
AC_ERROR(You have disabled the database w/o specifying fallbacks)
fi
fi
@@ -552,6 +515,23 @@ test "$with_getcap_cache" = "yes" && AC_DEFINE(USE_GETCAP_CACHE)
fi
+### Use option --disable-home-terminfo to completely remove ~/.terminfo
+AC_MSG_CHECKING(if ~/.terminfo is wanted)
+AC_ARG_ENABLE(home-terminfo,
+ [ --disable-home-terminfo drop ~/.terminfo from terminfo search-path],
+ [with_home_terminfo=$enableval],
+ [with_home_terminfo=yes])
+AC_MSG_RESULT($with_home_terminfo)
+test "$with_home_terminfo" = "yes" && AC_DEFINE(USE_HOME_TERMINFO)
+
+AC_MSG_CHECKING(if you want to use restricted environment when running as root)
+AC_ARG_ENABLE(root-environ,
+ [ --disable-root-environ restrict environment when running as root],
+ [with_root_environ=$enableval],
+ [with_root_environ=yes])
+AC_MSG_RESULT($with_root_environ)
+test "$with_root_environ" = yes && AC_DEFINE(USE_ROOT_ENVIRON)
+
### Use option --enable-symlinks to make tic use symlinks, not hard links
### to reduce storage requirements for the terminfo database.
CF_LINK_FUNCS
@@ -559,29 +539,27 @@ CF_LINK_FUNCS
with_links=no
with_symlinks=no
-if test "$ac_cv_func_link" != yes ; then
+# 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 "$ac_cv_func_symlink" = yes ; then
AC_MSG_CHECKING(if tic should use symbolic links)
- if test "$ac_cv_func_symlink" = yes ; then
- with_symlinks=yes
- else
- with_symlinks=no
- fi
+ 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)
-elif test "$ac_cv_func_symlink" != yes ; then
+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 "$ac_cv_func_link" = yes ; then
- with_links=yes
+ with_links=yes
else
- with_links=no
+ with_links=no
fi
AC_MSG_RESULT($with_links)
-else
- 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)
fi
test "$with_links" = yes && AC_DEFINE(USE_LINKS)
@@ -592,14 +570,14 @@ AC_MSG_CHECKING(if you want broken-linker support code)
AC_ARG_ENABLE(broken_linker,
[ --enable-broken_linker compile with broken-linker support code],
[with_broken_linker=$enableval],
- [with_broken_linker=$BROKEN_LINKER])
+ [with_broken_linker=${BROKEN_LINKER-no}])
AC_MSG_RESULT($with_broken_linker)
BROKEN_LINKER=0
if test "$with_broken_linker" = yes ; then
AC_DEFINE(BROKEN_LINKER)
BROKEN_LINKER=1
-elif test $DFT_LWR_MODEL = shared ; then
+elif test "$DFT_LWR_MODEL" = shared ; then
case $cf_cv_system_name in #(vi
cygwin*)
AC_DEFINE(BROKEN_LINKER)
@@ -610,6 +588,112 @@ elif test $DFT_LWR_MODEL = shared ; then
fi
AC_SUBST(BROKEN_LINKER)
+### use option --enable-bsdpad to have tputs process BSD-style prefix padding
+AC_MSG_CHECKING(if tputs should process BSD-style prefix padding)
+AC_ARG_ENABLE(bsdpad,
+ [ --enable-bsdpad recognize BSD-style prefix padding],
+ [with_bsdpad=$enableval],
+ [with_bsdpad=no])
+AC_MSG_RESULT($with_bsdpad)
+test "$with_bsdpad" = yes && AC_DEFINE(BSD_TPUTS)
+
+### use option --enable-widec to turn on use of wide-character support
+NCURSES_CH_T=chtype
+NCURSES_LIBUTF8=0
+
+NEED_WCHAR_H=0
+NCURSES_MBSTATE_T=0
+NCURSES_WCHAR_T=0
+NCURSES_WINT_T=0
+
+# Check to define _XOPEN_SOURCE "automatically"
+CF_XOPEN_SOURCE
+
+# Work around breakage on OS X
+CF_SIGWINCH
+
+# Checks for CODESET support.
+AM_LANGINFO_CODESET
+
+# use these variables to work around a defect in gcc's fixincludes.
+NCURSES_OK_WCHAR_T=
+NCURSES_OK_WINT_T=
+
+AC_MSG_CHECKING(if you want wide-character code)
+AC_ARG_ENABLE(widec,
+ [ --enable-widec compile with wide-char/UTF-8 code],
+ [with_widec=$enableval],
+ [with_widec=no])
+AC_MSG_RESULT($with_widec)
+if test "$with_widec" = yes ; then
+ LIB_SUFFIX="w${LIB_SUFFIX}"
+ AC_DEFINE(USE_WIDEC_SUPPORT)
+ CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED)
+ # with_overwrite=no
+ NCURSES_CH_T=cchar_t
+ AC_CHECK_FUNCS(putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc)
+ if test "$ac_cv_func_putwc" != yes ; then
+ CF_LIBUTF8
+ if test "$cf_cv_libutf8" = yes ; then
+ NCURSES_LIBUTF8=1
+ fi
+ fi
+ CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T)
+ CF_WCHAR_TYPE(wchar_t, NCURSES_WCHAR_T, NCURSES_OK_WCHAR_T)
+ CF_WCHAR_TYPE(wint_t, NCURSES_WINT_T, NCURSES_OK_WINT_T)
+
+ if test "$NCURSES_MBSTATE_T" != 0; then
+ AC_DEFINE(NEED_MBSTATE_T_DEF)
+ fi
+fi
+AC_SUBST(NCURSES_CH_T)
+AC_SUBST(NCURSES_LIBUTF8)
+
+AC_SUBST(NEED_WCHAR_H)
+AC_SUBST(NCURSES_MBSTATE_T)
+AC_SUBST(NCURSES_WCHAR_T)
+AC_SUBST(NCURSES_WINT_T)
+
+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])
+AC_MSG_RESULT($with_lp64)
+
+if test "$with_lp64" = yes ; then
+ cf_cv_enable_lp64=1
+else
+ cf_cv_enable_lp64=0
+fi
+AC_SUBST(cf_cv_enable_lp64)
+
+CF_LARGEFILE
+
+### use option --disable-tparm-varargs to make tparm() conform to X/Open
+AC_MSG_CHECKING(if you want tparm not to use X/Open fixed-parameter list)
+AC_ARG_ENABLE(tparm-varargs,
+ [ --disable-tparm-varargs compile tparm() without varargs interface],
+ [with_tparm_varargs=$enableval],
+ [with_tparm_varargs=yes])
+AC_MSG_RESULT($with_tparm_varargs)
+NCURSES_TPARM_VARARGS=0
+test "$with_tparm_varargs" = yes && NCURSES_TPARM_VARARGS=1
+AC_SUBST(NCURSES_TPARM_VARARGS)
+
### use option --with-bool to override bool's type
AC_MSG_CHECKING(for type of bool)
AC_ARG_WITH(bool,
@@ -619,6 +703,23 @@ AC_ARG_WITH(bool,
AC_MSG_RESULT($NCURSES_BOOL)
AC_SUBST(NCURSES_BOOL)
+AC_MSG_CHECKING(for alternate terminal capabilities file)
+AC_ARG_WITH(caps,
+ [ --with-caps=alt compile with alternate Caps file],
+ [TERMINFO_CAPS=Caps.$withval],
+ [TERMINFO_CAPS=Caps])
+test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps
+AC_MSG_RESULT($TERMINFO_CAPS)
+AC_SUBST(TERMINFO_CAPS)
+
+### use option --with-chtype to override chtype's type
+AC_MSG_CHECKING(for type of chtype)
+AC_ARG_WITH(chtype,
+ [ --with-chtype=TYPE override type of chtype],
+ [NCURSES_CHTYPE="$withval"],
+ [NCURSES_CHTYPE=auto])
+AC_MSG_RESULT($NCURSES_CHTYPE)
+
### use option --with-ospeed to override ospeed's type
AC_MSG_CHECKING(for type of ospeed)
AC_ARG_WITH(ospeed,
@@ -628,14 +729,13 @@ AC_ARG_WITH(ospeed,
AC_MSG_RESULT($NCURSES_OSPEED)
AC_SUBST(NCURSES_OSPEED)
-### use option --enable-bsdpad to have tputs process BSD-style prefix padding
-AC_MSG_CHECKING(if tputs should process BSD-style prefix padding)
-AC_ARG_ENABLE(bsdpad,
- [ --enable-bsdpad recognize BSD-style prefix padding],
- [with_bsdpad=$enableval],
- [with_bsdpad=no])
-AC_MSG_RESULT($with_bsdpad)
-test "$with_bsdpad" = yes && AC_DEFINE(BSD_TPUTS)
+### use option --with-mmask-t to override mmask_t's type
+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])
+AC_MSG_RESULT($NCURSES_MMASK_T)
### Enable compiling-in rcs id's
AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
@@ -664,6 +764,7 @@ if test "$with_ext_funcs" = yes ; then
AC_DEFINE(HAVE_CURSES_VERSION)
AC_DEFINE(HAVE_HAS_KEY)
AC_DEFINE(HAVE_RESIZETERM)
+ AC_DEFINE(HAVE_RESIZE_TERM)
AC_DEFINE(HAVE_USE_DEFAULT_COLORS)
AC_DEFINE(HAVE_WRESIZE)
AC_DEFINE(NCURSES_EXT_FUNCS)
@@ -687,12 +788,27 @@ AC_SUBST(NCURSES_CONST)
AC_MSG_CHECKING(if you want \$NCURSES_NO_PADDING code)
AC_ARG_ENABLE(no-padding,
- [ --enable-no-padding compile with \$NCURSES_NO_PADDING code],
+ [ --enable-no-padding compile with $NCURSES_NO_PADDING code],
[with_no_padding=$enableval],
[with_no_padding=$with_ext_funcs])
AC_MSG_RESULT($with_no_padding)
test "$with_no_padding" = yes && AC_DEFINE(NCURSES_NO_PADDING)
+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 with SIGWINCH handler],
+ [with_signed_char=$enableval],
+ [with_signed_char=no])
+AC_MSG_RESULT($with_signed_char)
+test "$with_signed_char" != yes && 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,
@@ -718,7 +834,7 @@ AC_SUBST(NCURSES_XNAMES)
CF_HELP_MESSAGE(Development Code:)
AC_MSG_CHECKING(if you want all development code)
AC_ARG_WITH(develop,
- [ --with-develop enable all development options],
+ [ --without-develop disable development options],
[with_develop=$withval],
[with_develop=no])
AC_MSG_RESULT($with_develop)
@@ -726,28 +842,18 @@ 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],
- [with_hardtabs=$enableval],
- [with_hardtabs=$with_develop])
-AC_MSG_RESULT($with_hardtabs)
-test "$with_hardtabs" = yes && AC_DEFINE(USE_HARD_TABS)
-
-AC_MSG_CHECKING(if you want to use restrict environment when running as root)
-AC_ARG_ENABLE(root-environ,
- [ --disable-root-environ limit environment when running as root],
- [with_root_environ=$enableval],
- [with_root_environ=yes])
-AC_MSG_RESULT($with_root_environ)
-test "$with_root_environ" = yes && AC_DEFINE(USE_ROOT_ENVIRON)
+ [ --enable-hard-tabs compile with hard-tabs code],,
+ [enable_hard_tabs=$with_develop])
+AC_MSG_RESULT($enable_hard_tabs)
+test "$enable_hard_tabs" = yes && AC_DEFINE(USE_HARD_TABS)
### 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 limited support for xmc],
- [with_xmc_glitch=$enableval],
- [with_xmc_glitch=$with_develop])
-AC_MSG_RESULT($with_xmc_glitch)
-test "$with_xmc_glitch" = yes && AC_DEFINE(USE_XMC_SUPPORT)
+ [ --enable-xmc-glitch compile with support for xmc (magic-cookie)],,
+ [enable_xmc_glitch=$with_develop])
+AC_MSG_RESULT($enable_xmc_glitch)
+test "$enable_xmc_glitch" = yes && AC_DEFINE(USE_XMC_SUPPORT)
###############################################################################
# These are just experimental, probably should not be in a package:
@@ -773,12 +879,46 @@ test "$with_hashmap" = yes && AC_DEFINE(USE_HASHMAP)
### 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 with \$COLORFGBG code],
+ [ --enable-colorfgbg compile with $COLORFGBG code],
[with_colorfgbg=$enableval],
[with_colorfgbg=no])
AC_MSG_RESULT($with_colorfgbg)
test "$with_colorfgbg" = yes && AC_DEFINE(USE_COLORFGBG)
+### use option --enable-ext-colors to turn on use of colors beyond 16.
+AC_MSG_CHECKING(if you want to use experimental extended colors)
+AC_ARG_ENABLE(ext-colors,
+ [ --enable-ext-colors compile for experimental 256-color support],
+ [with_ext_colors=$enableval],
+ [with_ext_colors=no])
+AC_MSG_RESULT($with_ext_colors)
+NCURSES_EXT_COLORS=0
+if test "$with_ext_colors" = yes ; then
+ if test "$with_widec" != yes ; then
+ 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
+ fi
+ NCURSES_EXT_COLORS=1
+ AC_DEFINE(NCURSES_EXT_COLORS)
+fi
+AC_SUBST(NCURSES_EXT_COLORS)
+
+### use option --enable-ext-mouse to modify coding to support 5-button mice
+AC_MSG_CHECKING(if you want to use experimental extended mouse encoding)
+AC_ARG_ENABLE(ext-mouse,
+ [ --enable-ext-mouse compile for experimental mouse-encoding],
+ [with_ext_mouse=$enableval],
+ [with_ext_mouse=no])
+AC_MSG_RESULT($with_ext_mouse)
+NCURSES_MOUSE_VERSION=1
+if test "$with_ext_mouse" = yes ; then
+ NCURSES_MOUSE_VERSION=2
+ CF_NCURSES_ABI_6
+fi
+AC_SUBST(NCURSES_MOUSE_VERSION)
+
AC_MSG_CHECKING(if you want experimental safe-sprintf code)
AC_ARG_ENABLE(safe-sprintf,
[ --enable-safe-sprintf compile with experimental safe-sprintf code],
@@ -799,46 +939,13 @@ AC_MSG_RESULT($with_scroll_hints)
test "$with_scroll_hints" = yes && AC_DEFINE(USE_SCROLL_HINTS)
fi
-### use option --enable-widec to turn on use of wide-character support
-NCURSES_CH_T=chtype
-NCURSES_LIBUTF8=0
-NCURSES_MBSTATE_T=0
-AC_MSG_CHECKING(if you want experimental wide-character code)
-AC_ARG_ENABLE(widec,
- [ --enable-widec compile with experimental wide-char/UTF-8 code],
- [with_widec=$enableval],
- [with_widec=no])
-AC_MSG_RESULT($with_widec)
-if test "$with_widec" = yes ; then
- LIB_SUFFIX="w${LIB_SUFFIX}"
- AC_DEFINE(USE_WIDEC_SUPPORT)
- CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED"
- with_overwrite=no
- NCURSES_CH_T=cchar_t
- AC_CHECK_FUNC(putwc)
-if test "$ac_cv_func_putwc" != yes ; then
- CF_LIBUTF8
- if test "$cf_cv_libutf8" = yes ; then
- NCURSES_LIBUTF8=1
- fi
-fi
- CF_MBSTATE_T
- if test $cf_cv_mbstate_t = yes ; then
- NCURSES_MBSTATE_T=1
- fi
-fi
-AC_SUBST(NCURSES_CH_T)
-AC_SUBST(NCURSES_LIBUTF8)
-AC_SUBST(NCURSES_MBSTATE_T)
-
-AC_MSG_CHECKING(for terminal capabilities file)
-AC_ARG_WITH(caps,
- [ --with-caps=alt compile with experimental alternate Caps file],
- [TERMINFO_CAPS=Caps.$withval],
- [TERMINFO_CAPS=Caps])
-test -f ${srcdir}/include/${TERMINFO_CAPS} || TERMINFO_CAPS=Caps
-AC_MSG_RESULT($TERMINFO_CAPS)
-AC_SUBST(TERMINFO_CAPS)
+AC_MSG_CHECKING(if you want experimental wgetch-events code)
+AC_ARG_ENABLE(wgetch-events,
+ [ --enable-wgetch-events compile with experimental wgetch-events code],
+ [with_wgetch_events=$enableval],
+ [with_wgetch_events=no])
+AC_MSG_RESULT($with_wgetch_events)
+test "$with_wgetch_events" = yes && AC_DEFINE(NCURSES_WGETCH_EVENTS)
###############################################################################
CF_HELP_MESSAGE(Testing/development Options:)
@@ -868,6 +975,9 @@ AC_MSG_RESULT($with_warnings)
if test -n "$with_warnings"; then
ADAFLAGS="$ADAFLAGS -gnatg"
CF_GCC_WARNINGS
+ if test "$cf_with_cxx" = yes ; then
+ CF_GXX_WARNINGS(Wno-unused)
+ fi
fi
CF_GCC_ATTRIBUTES
@@ -890,9 +1000,7 @@ then
fi
### use option --disable-leaks to suppress "permanent" leaks, for testing
-AC_ARG_ENABLE(leaks,
- [ --disable-leaks test: suppress permanent memory-leaks],
- [test "$enableval" = no && AC_DEFINE(NO_LEAKS)])
+CF_DISABLE_LEAKS
AC_DEFINE(HAVE_NC_ALLOC_H)
### use option --enable-expanded to generate certain macros as functions
@@ -905,6 +1013,33 @@ AC_ARG_ENABLE(macros,
[ --disable-macros test: use functions rather than macros],
[test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS)])
+# Normally we only add trace() to the debug-library. Allow this to be
+# extended to all models of the ncurses library:
+cf_all_traces=no
+case "$CFLAGS $CPPFLAGS" in
+*-DTRACE*)
+ cf_all_traces=yes
+ ;;
+esac
+
+AC_MSG_CHECKING(whether to add trace feature to all models)
+AC_ARG_WITH(trace,
+[ --with-trace test: add trace() function to all models of ncurses],
+[cf_with_trace=$withval],
+[cf_with_trace=$cf_all_traces])
+AC_MSG_RESULT($cf_with_trace)
+
+if test "$cf_with_trace" = yes ; then
+ LIB_TRACING=all
+ ADA_TRACE=TRUE
+ CF_ADD_CFLAGS(-DTRACE)
+else
+ LIB_TRACING=DEBUG
+ ADA_TRACE=FALSE
+fi
+
+AC_SUBST(ADA_TRACE)
+
### Checks for libraries.
AC_CHECK_FUNC(gettimeofday,
AC_DEFINE(HAVE_GETTIMEOFDAY),[
@@ -917,7 +1052,6 @@ CF_MATH_LIB(MATH_LIB,sin(x))
AC_SUBST(MATH_LIB)
### Checks for header files.
-CF_GNU_SOURCE
AC_STDC_HEADERS
AC_HEADER_DIRENT
AC_HEADER_TIME
@@ -927,7 +1061,6 @@ dnl These are some other potentially nonportable headers.
AC_CHECK_HEADERS( \
fcntl.h \
getopt.h \
-libc.h \
limits.h \
locale.h \
poll.h \
@@ -940,6 +1073,7 @@ sys/time.h \
sys/times.h \
ttyent.h \
unistd.h \
+wctype.h \
)
# check for ISC (this may also define _POSIX_SOURCE)
@@ -955,9 +1089,33 @@ CF_SYS_TIME_SELECT
AC_LANG_C
AC_C_CONST
AC_C_INLINE
-test "$ac_cv_c_inline" != no && AC_DEFINE(CC_HAS_INLINE_FUNCS)
-CF_TYPEOF_CHTYPE
+NCURSES_INLINE=
+if test "$ac_cv_c_inline" != no ; then
+ AC_DEFINE(CC_HAS_INLINE_FUNCS)
+ NCURSES_INLINE=inline
+fi
+AC_SUBST(NCURSES_INLINE)
+
+if test $NCURSES_CHTYPE = auto ; then
+ CF_TYPEOF_CHTYPE
+else
+ cf_cv_typeof_chtype=$NCURSES_CHTYPE
+fi
+AC_SUBST(cf_cv_typeof_chtype)
+
+CF_UNSIGNED_LITERALS
+cf_cv_1UL="1"
+test "$cf_cv_unsigned_literals" = yes && cf_cv_1UL="${cf_cv_1UL}U"
+test "$cf_cv_typeof_chtype" = long && cf_cv_1UL="${cf_cv_1UL}L"
+AC_SUBST(cf_cv_1UL)
+
+if test $NCURSES_MMASK_T = auto ; then
+ cf_cv_typeof_mmask_t=long
+else
+ cf_cv_typeof_mmask_t=$NCURSES_MMASK_T
+fi
+AC_SUBST(cf_cv_typeof_mmask_t)
### Checks for external-data
CF_ERRNO
@@ -970,8 +1128,6 @@ getegid \
geteuid \
getttynam \
issetugid \
-memccpy \
-nanosleep \
poll \
remove \
select \
@@ -992,17 +1148,13 @@ fi
CF_ISASCII
CF_STRUCT_SIGACTION
+CF_FUNC_NANOSLEEP
CF_FUNC_TERMIOS
CF_FUNC_VSSCANF
CF_MKSTEMP
# setup for prototype of fallback for vsscanf()
-if test "$cf_cv_func_vsscanf" = vsscanf ; then
- HAVE_VSSCANF=1
-else
- HAVE_VSSCANF=0
-fi
-AC_SUBST(HAVE_VSSCANF)
+CF_SUBST_IF(["$cf_cv_func_vsscanf" = vsscanf], HAVE_VSSCANF, 1, 0)
dnl FIXME (may need this) AC_SYS_RESTARTABLE_SYSCALLS
if test "$cross_compiling" = yes ; then
@@ -1016,17 +1168,25 @@ CF_SIZECHANGE
CF_FUNC_MEMMOVE
CF_FUNC_POLL
+if test "$with_hashed_db" != no ; then
+ AC_DEFINE(USE_HASHED_DB)
+ CF_HASHED_DB
+fi
+
dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
-if test -z "$cf_user_CFLAGS" ; then
+if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then
CF_STRIP_G_OPT(CFLAGS)
CF_STRIP_G_OPT(CXXFLAGS)
fi
-dnl Check for C++ compiler characteristics (and ensure that it's there!)
+# Just in case, check if the C compiler has a bool type.
CF_BOOL_DECL(cf_cv_cc_bool_type)
+
+# Check for C++ compiler characteristics (and ensure that it's there!)
if test -n "$CXX" ; then
AC_LANG_CPLUSPLUS
CF_STDCPP_LIBRARY
+ CF_PROG_CC_C_O(CXX)
case $GXX_VERSION in
1*|2.[0-6]*)
@@ -1046,6 +1206,7 @@ if test -n "$CXX" ; then
CF_BOOL_SIZE
CF_ETIP_DEFINES
CF_CPP_PARAM_INIT
+ CF_CPP_STATIC_CAST
CF_CPP_VSCAN_FUNC
CXX_AR='$(AR)'
@@ -1084,7 +1245,8 @@ else
# may change.
if test "$NCURSES_BOOL" != auto ; then
- cf_cv_type_of_bool=$NCURSES_AUTO
+ cf_cv_type_of_bool=$NCURSES_BOOL
+ cf_cv_header_stdbool_h=0
else
if test "$cf_cv_header_stdbool_h" = 1 ; then
CF_BOOL_SIZE
@@ -1100,10 +1262,31 @@ else
fi
AC_SUBST(CXXLIBS)
+# If the C compiler did not declare bool, and we did not determine that the C++
+# compiler does not declare bool, turn on an ifdef in curses.h that makes the
+# ncurses library use the same type as C++ bool. Note that this allows one to
+# specify the type of bool in a configure-script option and postpone
+# integration with the C++ compiler provided that the types are compatible.
+USE_CXX_BOOL=1
+if test $cf_cv_cc_bool_type = 1
+then
+ # oops: C has a bool. Unlikely, but C++ could differ.
+ USE_CXX_BOOL=0
+elif test $cf_cv_builtin_bool = 0
+then
+ # C++ has no bool
+ USE_CXX_BOOL=0
+else
+ # this is the normal case
+ USE_CXX_BOOL='defined(__cplusplus)'
+fi
+AC_SUBST(USE_CXX_BOOL)
+
CF_HELP_MESSAGE(Ada95 Binding Options:)
dnl Check for availability of GNU Ada Translator (GNAT).
dnl At the moment we support no other Ada95 compiler.
+if test -f "${srcdir}/Ada95/Makefile.in" ; then
if test "$cf_with_ada" != "no" ; then
cf_ada_make=gnatmake
AC_CHECK_PROG(gnat_exists, $cf_ada_make, yes, no)
@@ -1133,6 +1316,28 @@ fi
if test "$cf_cv_prog_gnat_correct" = yes; then
ADAFLAGS="-O3 -gnatpn $ADAFLAGS"
+ AC_MSG_CHECKING(if GNAT pragma Unreferenced works)
+ 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])
+ AC_MSG_RESULT($cf_cv_pragma_unreferenced)
+
+ # 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_ARG_WITH(ada-compiler,
[ --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)],
[cf_ada_compiler=$withval],
@@ -1146,6 +1351,7 @@ if test "$cf_cv_prog_gnat_correct" = yes; then
AC_SUBST(ADAFLAGS)
AC_SUBST(cf_compile_generics)
AC_SUBST(cf_generic_objects)
+ AC_SUBST(PRAGMA_UNREF)
CF_WITH_PATH(ada-include,
[ --with-ada-include=DIR Ada includes are in DIR],
@@ -1163,46 +1369,24 @@ if test "$cf_cv_prog_gnat_correct" = yes; then
fi
fi
-
-### It's not possible to appease gcc 2.6.3's conversion-warnings if we're
-### using a 'char' for bools. gcc 2.7.0's conversion-warnings are broken too
-### badly to consider using for development purposes, but 2.5.8 is okay.
-if test -n "$with_warnings"; then
- case $GCC_VERSION in
- 2.6.3)
- if test "$cf_cv_type_of_bool" != "char"; then
- EXTRA_CFLAGS="$EXTRA_CFLAGS -Wconversion"
- fi
- ;;
- 2.5*)
- EXTRA_CFLAGS="$EXTRA_CFLAGS -Wconversion"
- ;;
- esac
fi
### Construct the library-subsets, if any, from this set of keywords:
-### none, base, ext_funcs, termlib.
+### none, base, ext_funcs, ext_tinfo, termlib, widechar (see CF_LIB_RULES).
AC_MSG_CHECKING(for library subsets)
-if test "$with_termlib" = yes ; then
- LIB_SUBSETS="termlib "
+if test "$with_termlib" != no ; then
+ LIB_SUBSETS="termlib"
+ test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo"
+ LIB_SUBSETS="${LIB_SUBSETS} "
else
LIB_SUBSETS="termlib+"
+ test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}ext_tinfo+"
fi
LIB_SUBSETS="${LIB_SUBSETS}base"
-test "$with_widec" = yes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
+test "$with_widec" = yes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
AC_MSG_RESULT($LIB_SUBSETS)
-LIB_TRACING=DEBUG
-ADA_TRACE=FALSE
-case "$CFLAGS $CPPFLAGS" in
-*-DTRACE*)
- LIB_TRACING=all
- ADA_TRACE=TRUE
- ;;
-esac
-AC_SUBST(ADA_TRACE)
-
### Construct the list of include-directories to be generated
CF_INCLUDE_DIRS
CF_ADA_INCLUDE_DIRS
@@ -1231,40 +1415,77 @@ AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
AC_MSG_RESULT($DFT_OBJ_SUBDIR)
# libtool thinks it can make c++ shared libraries (perhaps only g++)
+if test "$cf_with_cxx" = yes ; then
AC_MSG_CHECKING(c++ library-dependency suffix)
-if test "$with_libtool" = "yes"; then
+if test "$with_libtool" != "no"; then
CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX
else
CF_LIB_SUFFIX(normal,CXX_LIB_SUFFIX)dnl we normally make a static library
fi
AC_MSG_RESULT($CXX_LIB_SUFFIX)
AC_SUBST(CXX_LIB_SUFFIX)
+fi
+### Set up low-level terminfo dependencies for makefiles.
TINFO_LIST="$SHLIB_LIST"
-test "$with_termlib" = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo${LIB_SUFFIX}"
+if test "$with_termlib" != no ; then
+
+ if test "$with_termlib" != yes ; then
+ TINFO_NAME=$with_termlib
+ TINFO_ARG_SUFFIX="${with_termlib}`echo ${DFT_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_ARG_SUFFIX="${TINFO_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}"
+ TINFO_LIB_SUFFIX="${TINFO_NAME}${LIB_SUFFIX}"
+ fi
+
+ TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
+ TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
+ if test "$DFT_LWR_MODEL" = "libtool"; then
+ TEST_ARGS="${TEST_DEPS}"
+ TEST_ARG2="${TEST_DEP2}"
+ TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
+ else
+ TEST_ARGS="-l${TINFO_ARG_SUFFIX}"
+ TEST_ARG2="-l${TINFO_ARG_SUFFIX}"
+ TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
+ SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
+ fi
+else
+ TINFO_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+fi
+AC_SUBST(TINFO_ARG_SUFFIX)
+AC_SUBST(TINFO_DEP_SUFFIX)
+AC_SUBST(TINFO_LIB_SUFFIX)
+AC_SUBST(TINFO_ARGS)
+
+# needed for Ada95
+TINFO_ARGS2=`echo "$TINFO_ARGS" | sed -e 's,-L\.\./,-L../../,'`
+AC_SUBST(TINFO_ARGS2)
AC_MSG_CHECKING(where we will install curses.h)
test "$with_overwrite" = no && \
test "x$includedir" = 'x${prefix}/include' && \
- includedir='$(prefix)/include/ncurses'${LIB_SUFFIX}
+ includedir='${prefix}/include/ncurses'${LIB_SUFFIX}
AC_MSG_RESULT($includedir)
-AC_SUBST(EXTRA_LIBS)
+### Resolve a conflict between normal and wide-curses by forcing applications
+### that will need libutf8 to add it to their configure script.
+if test "$with_overwrite" != no ; then
+if test "$NCURSES_LIBUTF8" = 1 ; then
+ NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)'
+ AC_MSG_WARN(Wide-character applications must define HAVE_LIBUTF8_H to include curses.h)
+fi
+fi
+
+AC_SUBST(WITH_OVERWRITE)
AC_SUBST(TINFO_LIST)
AC_SUBST(SHLIB_LIST)
-### Set up low-level terminfo dependencies for makefiles. Note that we
-### could override this.
-if test "$with_termlib" = yes ; then
- TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
- if test "$DFT_LWR_MODEL" = "libtool"; then
- TEST_ARGS="${TEST_DEPS}"
- else
- TEST_ARGS="-l${TINFO_NAME}${DFT_ARG_SUFFIX}"
- fi
-fi
-PROG_DEPS="$TEST_DEPS"
-PROG_ARGS="$TEST_ARGS"
+### predefined stuff for the test programs
+AC_DEFINE(HAVE_SLK_COLOR)
### Construct the list of subdirectories for which we'll customize makefiles
### with the appropriate compile-rules.
@@ -1274,48 +1495,68 @@ CF_DIRS_TO_MAKE
AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATHSEP')
+AC_DEFINE_UNQUOTED(NCURSES_VERSION_STRING, "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}")
+
### Now that we're done running tests, add the compiler-warnings, if any
-CFLAGS="$CFLAGS $EXTRA_CFLAGS"
+CF_ADD_CFLAGS($EXTRA_CFLAGS)
+
+### Define substitutions for header files to avoid name-pollution
+CF_SUBST_IF(["$cf_cv_have_tcgetattr" = yes], HAVE_TCGETATTR, 1, 0)
+CF_SUBST_IF(["$ac_cv_header_termio_h" = yes], HAVE_TERMIO_H, 1, 0)
+CF_SUBST_IF(["$ac_cv_header_termios_h" = yes], HAVE_TERMIOS_H, 1, 0)
################################################################################
+test "$use_database" = yes && SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
+SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in"
AC_OUTPUT( \
include/MKterm.h.awk \
include/curses.head:include/curses.h.in \
include/termcap.h \
include/unctrl.h \
- misc/run_tic.sh:misc/run_tic.in \
$SUB_MAKEFILES \
Makefile,[
-CF_LIB_RULES
+CF_PRG_RULES([$srcdir/test/mk-test.awk ECHO_LINK="$ECHO_LINK"], test)
+CF_LIB_RULES($SRC_SUBDIRS)
],[
### Special initialization commands, used to pass information from the
### configuration-run into config.status
AWK="$AWK"
-CF_LIST_MODELS="$cf_list_models"
+DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
DFT_LWR_MODEL="$DFT_LWR_MODEL"
+ECHO_LINK="$ECHO_LINK"
LDCONFIG="$LDCONFIG"
LIB_NAME="$LIB_NAME"
LIB_SUBSETS="$LIB_SUBSETS"
LIB_SUFFIX="$LIB_SUFFIX"
LIB_TRACING="$LIB_TRACING"
MAKE_TERMINFO="$MAKE_TERMINFO"
+NCURSES_MAJOR="$NCURSES_MAJOR"
+NCURSES_MINOR="$NCURSES_MINOR"
NCURSES_OSPEED="$NCURSES_OSPEED"
+NCURSES_PATCH="$NCURSES_PATCH"
SRC_SUBDIRS="$SRC_SUBDIRS"
TERMINFO="$TERMINFO"
+TINFO_ARG_SUFFIX="$TINFO_ARG_SUFFIX"
+TINFO_LIB_SUFFIX="$TINFO_LIB_SUFFIX"
TINFO_NAME="$TINFO_NAME"
WITH_CURSES_H="$with_curses_h"
WITH_ECHO="$with_echo"
WITH_OVERWRITE="$with_overwrite"
+cf_LIST_MODELS="$cf_list_models"
cf_cv_abi_version="$cf_cv_abi_version"
cf_cv_do_symlinks="$cf_cv_do_symlinks"
+cf_cv_enable_lp64="$cf_cv_enable_lp64"
+cf_cv_prog_CC_c_o=$cf_cv_prog_CC_c_o
+cf_cv_prog_CXX_c_o=$cf_cv_prog_CXX_c_o
cf_cv_rel_version="$cf_cv_rel_version"
cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
cf_cv_shlib_version="$cf_cv_shlib_version"
cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
cf_cv_system_name="$cf_cv_system_name"
cf_with_cxx_binding="$cf_with_cxx_binding"
+host="$host"
target="$target"
-],sort)dnl
+],cat)dnl
${MAKE-make} preinstall
diff --git a/contrib/ncurses/convert_configure.pl b/contrib/ncurses/convert_configure.pl
index dea92ca5d8cc..911bdc77bbf3 100644
--- a/contrib/ncurses/convert_configure.pl
+++ b/contrib/ncurses/convert_configure.pl
@@ -1,5 +1,34 @@
extproc perl -S -w
+# $Id: convert_configure.pl,v 1.3 2006/04/22 23:04:06 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2000,2006 Free Software 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. #
+##############################################################################
+
# The converted script is written to stdout, so run this script as
# convert_configure configure > configure.cmd
#
diff --git a/contrib/ncurses/dist.mk b/contrib/ncurses/dist.mk
index 9d7a905e901d..49d8ac4d61d2 100644
--- a/contrib/ncurses/dist.mk
+++ b/contrib/ncurses/dist.mk
@@ -1,4 +1,31 @@
-# $Id: dist.mk,v 1.306 2002/06/15 17:13:40 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2005,2006 Free Software 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: dist.mk,v 1.567 2006/12/17 19:58:35 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
@@ -9,13 +36,18 @@ SHELL = /bin/sh
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 5
-NCURSES_MINOR = 2
-NCURSES_PATCH = 20020615
+NCURSES_MINOR = 6
+NCURSES_PATCH = 20061217
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
-DUMP = lynx -dump
+# The most recent html files were generated with lynx 2.8.6, using ncurses
+# configured with
+# --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
DUMP2 = $(DUMP) -nolist
GNATHTML= `type -p gnathtml || type -p gnathtml.pl`
@@ -24,8 +56,10 @@ GNATHTML= `type -p gnathtml || type -p gnathtml.pl`
# Not all man programs agree with this assumption; some use half-spacing, which
# has the effect of lengthening the text portion of the page -- so man2html
# would remove some text. The man program on Redhat 6.1 appears to work with
-# man2html if we set the top/bottom margins to 6 (the default is 7).
-MAN2HTML= man2html -botm=6 -topm=6 -cgiurl '$$title.$$section$$subsection.html'
+# man2html if we set the top/bottom margins to 6 (the default is 7). Newer
+# versions of 'man' on Linux leave no margin (and make it harder to sync with
+# pages).
+MAN2HTML= man2html -botm=0 -topm=0 -cgiurl '$$title.$$section$$subsection.html'
ALL = ANNOUNCE doc/html/announce.html doc/ncurses-intro.doc doc/hackguide.doc manhtml adahtml
@@ -35,7 +69,7 @@ dist: $(ALL)
(cd ..; tar cvf ncurses-$(VERSION).tar `sed <ncurses-$(VERSION)/MANIFEST 's/^./ncurses-$(VERSION)/'`; gzip ncurses-$(VERSION).tar)
distclean:
- rm -f $(ALL) subst.tmp subst.sed MANIFEST.tmp
+ rm -f $(ALL) subst.tmp subst.sed
# Don't mess with announce.html.in unless you have lynx available!
doc/html/announce.html: announce.html.in
@@ -49,9 +83,17 @@ doc/ncurses-intro.doc: doc/html/ncurses-intro.html
doc/hackguide.doc: doc/html/hackguide.html
$(DUMP2) doc/html/hackguide.html > $@
-MANPROG = tbl | nroff -man
+# 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
+MANPROG = tbl | nroff -mandoc -rLL=65n -rLT=71n -Tascii
-manhtml: MANIFEST
+manhtml:
@rm -f doc/html/man/*.html
@mkdir -p doc/html/man
@rm -f subst.tmp ;
@@ -68,8 +110,10 @@ manhtml: MANIFEST
@echo 's/<\/B>/<\/STRONG>/g' >> subst.tmp
@echo 's/<I>/<EM>/g' >> subst.tmp
@echo 's/<\/I>/<\/EM>/g' >> subst.tmp
- @echo 's/<\/TITLE>/<\/TITLE><link rev=made href="mailto:bug-ncurses@gnu.org">/' >> subst.tmp
- @sort < subst.tmp | uniq > subst.sed
+ @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 '<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 \
m=`basename $$f` ;\
@@ -86,47 +130,28 @@ manhtml: MANIFEST
-e 's/>/\&gt;/g' \
>> doc/html/man/$$g ;\
echo '-->' >> doc/html/man/$$g ;\
- man/edit_man.sh editing /usr/man man $$f | $(MANPROG) | tr '\255' '-' | $(MAN2HTML) -title "$$T" | \
+ ./edit_man.sh normal editing /usr/man man $$f | $(MANPROG) | tr '\255' '-' | $(MAN2HTML) -title "$$T" | \
sed -f subst.sed |\
sed -e 's/"curses.3x.html"/"ncurses.3x.html"/g' \
>> doc/html/man/$$g ;\
done
@rm -f subst.sed
- @sed -e "\%./doc/html/man/%d" < MANIFEST > MANIFEST.tmp
- @find ./doc/html/man -type f -print >> MANIFEST.tmp
- @chmod u+w MANIFEST
- @sort -u < MANIFEST.tmp > MANIFEST
- @rm -f MANIFEST.tmp
#
# Please note that this target can only be properly built if the build of the
# Ada95 subdir has been done. The reason is, that the gnathtml tool uses the
# .ali files generated by the Ada95 compiler during the build process. These
# .ali files contain cross referencing information required by gnathtml.
-adahtml: MANIFEST
+adahtml:
if [ ! -z "$(GNATHTML)" ]; then \
(cd ./Ada95/gen ; make html) ;\
- sed -e "\%./doc/html/ada/%d" < MANIFEST > MANIFEST.tmp ;\
- find ./doc/html/ada -type f -print >> MANIFEST.tmp ;\
- sort -u < MANIFEST.tmp > MANIFEST ;\
- rm -f MANIFEST.tmp ;\
fi
-# Prepare distribution for version control
-vcprepare:
- find . -type d -exec mkdir {}/RCS \;
-
-# Write-lock almost all files not under version control.
-ADA_EXCEPTIONS=$(shell eval 'a="\\\\\|";for x in Ada95/gen/terminal*.m4; do echo -n $${a}Ada95/ada_include/`basename $${x} .m4`; done')
-EXCEPTIONS = 'announce.html$\\|ANNOUNCE\\|misc/.*\\.doc\\|man/terminfo.5\\|lib_gen.c'$(ADA_EXCEPTIONS)
-writelock:
- for x in `grep -v $(EXCEPTIONS) MANIFEST`; do if [ ! -f `dirname $$x`/RCS/`basename $$x`,v ]; then chmod a-w $${x}; fi; done
-
# This only works on a clean source tree, of course.
MANIFEST:
-rm -f $@
touch $@
- find . -type f -print |sort | fgrep -v .lsm |fgrep -v .spec >$@
+ find . -type f -print |misc/csort | fgrep -v .lsm |fgrep -v .spec >$@
TAGS:
etags */*.[ch]
diff --git a/contrib/ncurses/doc/hackguide.doc b/contrib/ncurses/doc/hackguide.doc
index e9828d2919fa..ddd75210f7ef 100644
--- a/contrib/ncurses/doc/hackguide.doc
+++ b/contrib/ncurses/doc/hackguide.doc
@@ -1,8 +1,7 @@
-
A Hacker's Guide to NCURSES
-
+
Contents
-
+
* Abstract
* Objective of the Package
+ Why System V Curses?
@@ -24,664 +23,660 @@
* Other Utilities
* Style Tips for Developers
* Porting Hints
-
+
Abstract
-
+
This document is a hacker's tour of the ncurses 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
+ 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.
-
+
Objective of the Package
-
+
The objective of the ncurses package is to provide a free software API
for character-cell terminals and terminal emulators with the following
characteristics:
- * Source-compatible with historical curses implementations
+ * Source-compatible with historical curses implementations
(including the original BSD curses and System V curses.
- * Conformant with the XSI Curses standard issued as part of XPG4 by
+ * Conformant with the XSI Curses standard issued as part of XPG4 by
X/Open.
- * High-quality -- stable and reliable code, wide portability, good
+ * High-quality -- stable and reliable code, wide portability, good
packaging, superior documentation.
- * Featureful -- should eliminate as much of the drudgery of C
+ * Featureful -- should eliminate as much of the drudgery of C
interface programming as possible, freeing programmers to think at
a higher level of design.
-
- 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
+
+ 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.
-
+
Why System V Curses?
- We used System V curses as a model, reverse-engineering their API, in
+ We used System V curses as a model, reverse-engineering their API, in
order to fulfill the first two objectives.
-
- System V curses implementations can support BSD curses programs with
+
+ 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.
-
- More importantly for the future, the XSI Curses standard issued by
- X/Open is explicitly and closely modeled on System V. So conformance
+
+ 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.
-
+
How to Design Extensions
- The third objective (standards conformance) requires that it be easy
- to condition source code using ncurses so that the absence of
+ The third objective (standards conformance) requires that it be easy
+ to condition source code using ncurses so that the absence of
nonstandard extensions does not break the code.
-
- 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 ncurses
+
+ 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 ncurses
extension.
-
- For example, there is a macro NCURSES_MOUSE_VERSION which XSI Curses
- does not define, but which is defined in the ncurses library header.
+
+ For example, there is a macro NCURSES_MOUSE_VERSION which XSI Curses
+ does not define, but which is defined in the ncurses library header.
You can use this to condition the calls to the mouse API calls.
-
+
Portability and Configuration
-
- Code written for ncurses may assume an ANSI-standard C compiler and
- POSIX-compatible OS interface. It may also assume the presence of a
+
+ Code written for ncurses may assume an ANSI-standard C compiler and
+ POSIX-compatible OS interface. It may also assume the presence of a
System-V-compatible select(2) call.
-
+
We encourage (but do not require) developers to make the code friendly
to less-capable UNIX environments wherever possible.
-
- We encourage developers to support OS-specific optimizations and
+
+ We encourage developers to support OS-specific optimizations and
methods not available under POSIX/ANSI, provided only that:
- * All such code is properly conditioned so the build process does
+ * All such code is properly conditioned so the build process does
not attempt to compile it under a plain ANSI/POSIX environment.
- * Adding such implementation methods does not introduce
+ * Adding such implementation methods does not introduce
incompatibilities in the ncurses API between platforms.
-
- We use GNU autoconf(1) as a tool to deal with portability issues. The
+
+ We use GNU autoconf(1) 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
+ specification files (configure.in and aclocal.m4) to set up a new
feature macro, which you then use to condition your code.
-
+
Documentation Conventions
-
- There are three kinds of documentation associated with this package.
+
+ There are three kinds of documentation associated with this package.
Each has a different preferred format:
* Package-internal files (README, INSTALL, TO-DO etc.)
* Manual pages.
* Everything else (i.e., narrative documentation).
-
+
Our conventions are simple:
1. Maintain package-internal files in plain text. The expected viewer
- for them more(1) or an editor window; there's no point in
+ for them more(1) or an editor window; there's no point in
elaborate mark-up.
- 2. Mark up manual pages in the man macros. These have to be viewable
+ 2. Mark up manual pages in the man macros. These have to be viewable
through traditional man(1) programs.
3. Write everything else in HTML.
-
- When in doubt, HTMLize a master and use lynx(1) to generate plain
+
+ 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
- nice-looking printed version from it. Also, of course, it make
+ 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.
-
+
How to Report Bugs
-
- The reporting address for bugs is bug-ncurses@gnu.org. This is a
- majordomo list; to join, write to bug-ncurses-request@gnu.org with a
+
+ The reporting address for bugs is bug-ncurses@gnu.org. This is a
+ majordomo list; to join, write to bug-ncurses-request@gnu.org with a
message containing the line:
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
- 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
+ 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
+ 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
+
+ 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
+ that if you don't, you'll probably end up at the tail end and have to
wait a while.
1. Develop a recipe to reproduce the bug.
- Bugs we can reproduce are likely to be fixed very quickly, often
- within days. The most effective single thing you can do to get a
- 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
+ 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.)
2. Try to reproduce the bug on a different terminal type.
- In our experience, most of the behaviors people report as library
+ 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
+ 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
+ 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.
- If you have xterm available, it is also good to collect xterm
+ 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
+ normally use an unusual xterm window size -- a surprising number
of the bugs we've 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
- TRACE_UPDATE. (See "Writing Programs with NCURSES" for details on
- trace levels.) Reproduce your bug, then look at the trace file to
+ Recompile your program with the debugging versions of the
+ libraries. Insert a trace() call with the argument set to
+ TRACE_UPDATE. (See "Writing Programs with NCURSES" for details on
+ trace levels.) Reproduce your bug, then look at the trace file to
see what the library was actually doing.
- Another frequent cause of apparent bugs is application coding
- errors that cause the wrong things to be put on the virtual
+ 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
+ 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
- information about the library's update actions and the control
- sequences it issues to perform them. The test directory of the
+ 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.
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
+ 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.
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'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
+ 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.
- 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
+ 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.
- 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
+ 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).
- If your bug produces a core-dump, please include a symbolic stack
+ 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
+ and every terminal on which you can't. Ideally, sent us terminfo
sources for all of these (yours might differ from ours).
- Include your ncurses version and your OS/machine type, of course!
+ Include your ncurses version and your OS/machine type, of course!
You can find your ncurses version in the curses.h file.
-
- 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
+
+ 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.
-
- 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
+
+ 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
+ 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
- to understand how it works better, build hashmap and read the header
- comments of hardscroll.c and hashmap.c; then try it out. You can also
+
+ If you think the vertical-scroll optimization is broken, or just want
+ to understand how it works better, build hashmap and read the header
+ comments of hardscroll.c and hashmap.c; then try it out. You can also
test the hardware-scrolling optimization separately with hardscroll.
-
- There's one other interactive tester, tctest, that exercises
- translation between termcap and terminfo formats. If you have a
- serious need to run this, you probably belong on our development team!
-
+
A Tour of the Ncurses Library
-
+
Library Overview
- 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
+ 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
-
- 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_addch.c lib_bkgd.c lib_box.c lib_chgat.c lib_clear.c
+ lib_clearok.c lib_clrbot.c lib_clreol.c lib_colorset.c lib_data.c
+ lib_delch.c lib_delwin.c lib_echo.c lib_erase.c lib_gen.c
+ lib_getstr.c lib_hline.c lib_immedok.c lib_inchstr.c lib_insch.c
+ lib_insdel.c lib_insstr.c lib_instr.c lib_isendwin.c lib_keyname.c
+ lib_leaveok.c lib_move.c lib_mvwin.c lib_overlay.c lib_pad.c
+ lib_printw.c lib_redrawln.c lib_scanw.c lib_screen.c lib_scroll.c
+ lib_scrollok.c lib_scrreg.c lib_set_term.c lib_slk.c
+ lib_slkatr_set.c lib_slkatrof.c lib_slkatron.c lib_slkatrset.c
+ lib_slkattr.c lib_slkclear.c lib_slkcolor.c lib_slkinit.c
+ lib_slklab.c lib_slkrefr.c lib_slkset.c lib_slktouch.c lib_touch.c
lib_unctrl.c lib_vline.c lib_wattroff.c lib_wattron.c lib_window.c
-
- are all in this category. They are very unlikely to need change,
+
+ are all in this category. They are very unlikely to need change,
barring bugs or some fundamental reorganization in the underlying data
structures.
-
+
These files are used only for debugging support:
-
- lib_trace.c lib_traceatr.c lib_tracebits.c lib_tracechr.c
+
+ lib_trace.c lib_traceatr.c lib_tracebits.c lib_tracechr.c
lib_tracedmp.c lib_tracemse.c trace_buf.c
-
- It is rather unlikely you will ever need to change these, unless you
+
+ It is rather unlikely you will ever need to change these, unless you
want to introduce a new debug trace level for some reasoon.
-
- There is another group of files that do direct I/O via tputs(),
- computations on the terminal capabilities, or queries to the OS
- environment, but nevertheless have only fairly low complexity. These
+
+ There is another group of files that do direct I/O via tputs(),
+ computations on the terminal capabilities, or queries to the OS
+ environment, but nevertheless have only fairly low complexity. These
include:
-
- lib_acs.c lib_beep.c lib_color.c lib_endwin.c lib_initscr.c
- lib_longname.c lib_newterm.c lib_options.c lib_termcap.c lib_ti.c
+
+ lib_acs.c lib_beep.c lib_color.c lib_endwin.c lib_initscr.c
+ lib_longname.c lib_newterm.c lib_options.c lib_termcap.c lib_ti.c
lib_tparm.c lib_tputs.c lib_vidattr.c read_entry.c.
-
+
They are likely to need revision only if ncurses is being ported to an
environment without an underlying terminfo capability representation.
-
- These files have serious hooks into the tty driver and signal
+
+ These files have serious hooks into the tty driver and signal
facilities:
-
+
lib_kernel.c lib_baudrate.c lib_raw.c lib_tstp.c lib_twait.c
-
+
If you run into porting snafus moving the package to another UNIX, the
- problem is likely to be in one of these files. The file lib_print.c
+ problem is likely to be in one of these files. The file lib_print.c
uses sleep(2) and also falls in this category.
-
+
Almost all of the real work is done in the files
-
- hardscroll.c hashmap.c lib_addch.c lib_doupdate.c lib_getch.c
+
+ hardscroll.c hashmap.c lib_addch.c lib_doupdate.c lib_getch.c
lib_mouse.c lib_mvcur.c lib_refresh.c lib_setup.c lib_vidattr.c
-
- Most of the algorithmic complexity in the library lives in these
- files. If there is a real bug in ncurses itself, it's probably here.
+
+ Most of the algorithmic complexity in the library lives in these
+ files. If there is a real bug in ncurses itself, it's probably here.
We'll tour some of these files in detail below (see The Engine Room).
-
- Finally, there is a group of files that is actually most of the
- terminfo compiler. The reason this code lives in the ncurses library
+
+ Finally, there is a group of files that is actually most of the
+ terminfo compiler. The reason this code lives in the ncurses library
is to support fallback to /etc/termcap. These files include
-
- alloc_entry.c captoinfo.c comp_captab.c comp_error.c comp_hash.c
+
+ alloc_entry.c captoinfo.c comp_captab.c comp_error.c comp_hash.c
comp_parse.c comp_scan.c parse_entry.c read_termcap.c write_entry.c
-
+
We'll discuss these in the compiler tour.
-
+
The Engine Room
Keyboard Input
-
- All ncurses input funnels through the function wgetch(), defined in
- lib_getch.c. This function is tricky; it has to poll for keyboard and
- mouse events and do a running match of incoming input against the set
+
+ All ncurses input funnels through the function wgetch(), defined in
+ lib_getch.c. 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.
-
- The central data structure in this module is a FIFO queue, used to
- match multiple-character input sequences against special-key
+
+ 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 ungetch().
-
+
The wgetch() 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
+ 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.
-
- Hackers bruised by previous encounters with variant select(2) calls
- may find the code in lib_twait.c interesting. It deals with the
+
+ 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.
-
+
Mouse Events
-
+
If the mouse interface is active, wgetch() polls for mouse events each
- call, before it goes to the keyboard for input. It is up to
+ call, before it goes to the keyboard for input. It is up to
lib_mouse.c how the polling is accomplished; it may vary for different
devices.
-
- Under xterm, however, mouse event notifications come in via the
- keyboard input stream. They are recognized by having the kmous
- 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
+
+ Under xterm, however, mouse event notifications come in via the
+ keyboard input stream. They are recognized by having the kmous
+ 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.
-
- This kluge only works because kmous isn't actually used by any
+
+ This kluge only works because kmous 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
+ 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.
-
+
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
+ 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:
- either (a) _nc_mouse_event() detects a series of incoming mouse
- reports and queues them, or (b) code in lib_getch.c detects the kmous
- prefix in the keyboard input stream and calls _nc_mouse_inline to
+ put them on the circular queue. This can happen in one of two ways:
+ either (a) _nc_mouse_event() detects a series of incoming mouse
+ reports and queues them, or (b) code in lib_getch.c detects the kmous
+ prefix in the keyboard input stream and calls _nc_mouse_inline to
queue up a series of adjacent mouse reports.
-
+
In either case, _nc_mouse_parse() 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).
-
+
Output and Screen Updating
-
+
With the single exception of character echoes during a wgetnstr() call
- (which simulates cooked-mode line editing in an ncurses window), the
+ (which simulates cooked-mode line editing in an ncurses window), the
library normally does all its output at refresh time.
-
- The main job is to go from the current state of the screen (as
- represented in the curscr window structure) to the desired new state
+
+ The main job is to go from the current state of the screen (as
+ represented in the curscr window structure) to the desired new state
(as represented in the newscr window structure), while doing as little
I/O as possible.
-
- 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
+
+ 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
+
+ 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
+ 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
+
+ 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 posible.
-
- If you want to work on screen optimizations, you should use the fact
- that (in the trace-enabled version of the library) enabling the
- TRACE_TIMES 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
+
+ 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
+ TRACE_TIMES 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.
-
- In the trace-enabled version of the library, it is also possible to
+
+ 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 _nc_optimize_enable. See the file include/curses.h.in for
+ variable _nc_optimize_enable. See the file include/curses.h.in for
mask values, near the end.
-
+
The Forms and Menu Libraries
-
- 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
+
+ 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.
-
- The configuration code prefers the POSIX regex facility, modeled on
- System V's, but will settle for BSD regexps if the former isn't
+
+ 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.
-
- 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
+
+ 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 ncurses.
-
+
A Tour of the Terminfo Compiler
-
+
The ncurses implementation of tic 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
+ 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.
-
- The implementation therefore starts with a table-driven, dual-mode
+
+ 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
- lexer does all the work of recognizing capability names and values;
- the grammar above it is trivial, just "parse entries till you run out
+ 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".
-
+
Translation of Non-use Capabilities
- Translation of most things besides use capabilities is pretty
- straightforward. The lexical analyzer's tokenizer hands each
- capability name to a hash function, which drives a table lookup. The
+ Translation of most things besides use 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.
-
- 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 include/Caps; these
- scripts actually write C initializers which are linked to the
+
+ 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 include/Caps; 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
+ 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).
-
+
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'll 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 isn't the capability
+ translation itself, it's 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
+ 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
- compilation process has to be embeddable in the ncurses library so
+
+ This won't 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
- everything it translates out to disk -- for one thing, it will
+ 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.
-
- So our tic is designed to parse an entire terminfo file into a
- doubly-linked circular list of entry structures in-core, and then do
- use resolution in-memory before writing everything out. This design
+
+ So our tic is designed to parse an entire terminfo file into a
+ doubly-linked circular list of entry structures in-core, and then do
+ 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
+ easy (so we get the latter for free), and it makes checking for name
collisions before they're 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
+
+ And this is exactly how the embedded version works. But the
+ stand-alone user-accessible version of tic partly reverts to the
historical strategy; it writes to disk (not keeping in core) any entry
with no use references.
-
- This is strictly a core-economy kluge, implemented because the
- terminfo master file is large enough that some core-poor systems swap
+
+ 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 three hours, rather than the twenty seconds or
+ of this process taking three hours, rather than the twenty seconds or
less typical on the author's development box.
-
+
So. The executable tic passes the entry-parser a hook that immediately
- 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
+ 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.
-
- Name collisions will still be detected, just not as cleanly. The
- write_entry() code complains before overwriting an entry that
- postdates the time of tic's first call to write_entry(), Thus it will
- complain about overwriting entries newly made during the tic run, but
+
+ Name collisions will still be detected, just not as cleanly. The
+ write_entry() code complains before overwriting an entry that
+ postdates the time of tic's first call to write_entry(), Thus it will
+ complain about overwriting entries newly made during the tic run, but
not about overwriting ones that predate it.
-
+
Source-Form Translation
Another use of tic 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 captoinfo(1) manual
page.
-
- The translation output code (dump_entry() in ncurses/dump_entry.c) is
- shared with the infocmp(1) utility. It takes the same internal
- representation used to generate the binary form and dumps it to
+
+ The translation output code (dump_entry() in ncurses/dump_entry.c) is
+ shared with the infocmp(1) utility. It takes the same internal
+ representation used to generate the binary form and dumps it to
standard output in a specified format.
-
- The include/Caps file has a header comment describing ways you can
- specify source translations for nonstandard capabilities just by
+
+ 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
+ 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
+
+ For circumstances where you need to do algorithmic translation, there
+ are functions in parse_entry.c called after the parse of each entry
that are specifically intended to encapsulate such translations. This,
- for example, is where the AIX box1 capability get translated to an
+ for example, is where the AIX box1 capability get translated to an
acsc string.
-
+
Other Utilities
-
- The infocmp utility is just a wrapper around the same entry-dumping
- code used by tic for source translation. Perhaps the one interesting
- aspect of the code is the use of a predicate function passed in to
- dump_entry() to control which capabilities are dumped. This is
+
+ The infocmp utility is just a wrapper around the same entry-dumping
+ code used by tic for source translation. Perhaps the one interesting
+ aspect of the code is the use of a predicate function passed in to
+ dump_entry() to control which capabilities are dumped. This is
necessary in order to handle both the ordinary De-compilation case and
entry difference reporting.
-
- The tput and clear utilities just do an entry load followed by a
+
+ The tput and clear utilities just do an entry load followed by a
tputs() of a selected capability.
-
+
Style Tips for Developers
-
- See the TO-DO file in the top-level directory of the source
+
+ See the TO-DO file in the top-level directory of the source
distribution for additions that would be particularly useful.
-
- The prefix _nc_ 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
+
+ The prefix _nc_ 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.
-
- Look for the string FIXME in source files to tag minor bugs and
+
+ 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.
+
+ Don't try to auto-detect OS features in the main body of the C code.
That's 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 --
+ 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.
-
+
Have fun!
-
+
Porting Hints
-
- The following notes are intended to be a first step towards DOS and
+
+ 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 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
+
+ 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
should not need to be modified for single-terminal ports.
-
- lib_addch.c lib_addstr.c lib_bkgd.c lib_box.c lib_clear.c
- lib_clrbot.c lib_clreol.c lib_delch.c lib_delwin.c lib_erase.c
- lib_inchstr.c lib_insch.c lib_insdel.c lib_insstr.c lib_keyname.c
- lib_move.c lib_mvwin.c lib_newwin.c lib_overlay.c lib_pad.c
- lib_printw.c lib_refresh.c lib_scanw.c lib_scroll.c lib_scrreg.c
- lib_set_term.c lib_touch.c lib_tparm.c lib_tputs.c lib_unctrl.c
+
+ lib_addch.c lib_addstr.c lib_bkgd.c lib_box.c lib_clear.c
+ lib_clrbot.c lib_clreol.c lib_delch.c lib_delwin.c lib_erase.c
+ lib_inchstr.c lib_insch.c lib_insdel.c lib_insstr.c lib_keyname.c
+ lib_move.c lib_mvwin.c lib_newwin.c lib_overlay.c lib_pad.c
+ lib_printw.c lib_refresh.c lib_scanw.c lib_scroll.c lib_scrreg.c
+ lib_set_term.c lib_touch.c lib_tparm.c lib_tputs.c lib_unctrl.c
lib_window.c panel.c
-
+
This module is pure curses, but calls outstr():
-
+
lib_getstr.c
-
- These modules are pure curses, except that they use tputs() and
+
+ These modules are pure curses, except that they use tputs() and
putp():
-
- lib_beep.c lib_color.c lib_endwin.c lib_options.c lib_slk.c
+
+ lib_beep.c lib_color.c lib_endwin.c lib_options.c lib_slk.c
lib_vidattr.c
-
+
This modules assist in POSIX emulation on non-POSIX systems:
-
+
sigaction.c
signal calls
-
- The following source files will not be needed for a
+
+ The following source files will not be needed for a
single-terminal-type port.
-
- 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
+
+ alloc_entry.c captoinfo.c clear.c comp_captab.c comp_error.c
+ comp_hash.c comp_main.c comp_parse.c comp_scan.c dump_entry.c
infocmp.c parse_entry.c read_entry.c tput.c write_entry.c
-
- The following modules will use open()/read()/write()/close()/lseek()
+
+ The following modules will use open()/read()/write()/close()/lseek()
on files, but no other OS calls.
-
+
lib_screen.c
used to read/write screen dumps
-
+
lib_trace.c
used to write trace data to the logfile
-
+
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
assumes there may be multiple terminals
-
+
lib_acs.c
assumes acs_map as a double indirection
-
+
lib_mvcur.c
assumes cursor moves have variable cost
-
+
lib_termcap.c
assumes there may be multiple terminals
-
+
lib_ti.c
assumes there may be multiple terminals
-
+
The following modules use UNIX-specific calls:
-
+
lib_doupdate.c
input checking
-
+
lib_getch.c
read()
-
+
lib_initscr.c
getenv()
-
+
lib_newterm.c
lib_baudrate.c
lib_kernel.c
various tty-manipulation and system calls
-
+
lib_raw.c
various tty-manipulation calls
-
+
lib_setup.c
various tty-manipulation calls
-
+
lib_restart.c
various tty-manipulation calls
-
+
lib_tstp.c
signal-manipulation calls
-
+
lib_twait.c
gettimeofday(), select().
_________________________________________________________________
-
-
+
+
Eric S. Raymond <esr@snark.thyrsus.com>
-
+
(Note: This is not the bug address!)
diff --git a/contrib/ncurses/doc/html/NCURSES-Programming-HOWTO.html b/contrib/ncurses/doc/html/NCURSES-Programming-HOWTO.html
new file mode 100644
index 000000000000..3a1010635ff0
--- /dev/null
+++ b/contrib/ncurses/doc/html/NCURSES-Programming-HOWTO.html
@@ -0,0 +1,6413 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta name="generator" content=
+"HTML Tidy for Linux/x86 (vers 1st December 2004), see www.w3.org">
+<title>NCURSES Programming HOWTO</title>
+<meta name="GENERATOR" content=
+"Modular DocBook HTML Stylesheet Version 1.7">
+</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">
+<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><em>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></em></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>
+<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>
+</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>
+<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>
+<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>
+<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>
+</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>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000">echo "^[[0;31;40mIn Color"</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000">echo "^[[0;37;40m"</font>
+</pre></td>
+</tr>
+</table>
+<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 <var class=
+"LITERAL">termcap</var>. 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 <var class="LITERAL">terminfo</var>.
+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><em>Compiling the package</em></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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000"> 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</font>
+</pre></td>
+</tr>
+</table>
+<p><em>Using the RPM</em></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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> rpm -i &lt;downloaded rpm&gt;</font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000">ncurses
+ |
+ |----&gt; JustForFun -- just for fun programs
+ |----&gt; basics -- basic programs
+ |----&gt; demo -- output files go into this directory after make
+ | |
+ | |----&gt; exe -- exe files of all example programs
+ |----&gt; forms -- programs related to form library
+ |----&gt; menus -- programs related to menus library
+ |----&gt; panels -- programs related to panels library
+ |----&gt; perl -- perl equivalents of the examples (contributed
+ | by Anuradha Ratnaweera)
+ |----&gt; Makefile -- the top level Makefile
+ |----&gt; README -- the top level README file. contains instructions
+ |----&gt; COPYING -- copyright notice</font>
+</pre></td>
+</tr>
+</table>
+<p>The individual directories contain the following files.</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000">Description of files in each directory
+--------------------------------------
+JustForFun
+ |
+ |----&gt; hanoi.c -- The Towers of Hanoi Solver
+ |----&gt; life.c -- The Game of Life demo
+ |----&gt; magic.c -- An Odd Order Magic Square builder
+ |----&gt; queens.c -- The famous N-Queens Solver
+ |----&gt; shuffle.c -- A fun game, if you have time to kill
+ |----&gt; tt.c -- A very trivial typing tutor
+
+ basics
+ |
+ |----&gt; acs_vars.c -- ACS_ variables example
+ |----&gt; hello_world.c -- Simple "Hello World" Program
+ |----&gt; init_func_example.c -- Initialization functions example
+ |----&gt; key_code.c -- Shows the scan code of the key pressed
+ |----&gt; mouse_menu.c -- A menu accessible by mouse
+ |----&gt; other_border.c -- Shows usage of other border functions apa
+ | -- rt from box()
+ |----&gt; printw_example.c -- A very simple printw() example
+ |----&gt; scanw_example.c -- A very simple getstr() example
+ |----&gt; simple_attr.c -- A program that can print a c file with
+ | -- comments in attribute
+ |----&gt; simple_color.c -- A simple example demonstrating colors
+ |----&gt; simple_key.c -- A menu accessible with keyboard UP, DOWN
+ | -- arrows
+ |----&gt; temp_leave.c -- Demonstrates temporarily leaving curses mode
+ |----&gt; win_border.c -- Shows Creation of windows and borders
+ |----&gt; with_chgat.c -- chgat() usage example
+
+ forms
+ |
+ |----&gt; form_attrib.c -- Usage of field attributes
+ |----&gt; form_options.c -- Usage of field options
+ |----&gt; form_simple.c -- A simple form example
+ |----&gt; form_win.c -- Demo of windows associated with forms
+
+ menus
+ |
+ |----&gt; menu_attrib.c -- Usage of menu attributes
+ |----&gt; menu_item_data.c -- Usage of item_name() etc.. functions
+ |----&gt; menu_multi_column.c -- Creates multi columnar menus
+ |----&gt; menu_scroll.c -- Demonstrates scrolling capability of menus
+ |----&gt; menu_simple.c -- A simple menu accessed by arrow keys
+ |----&gt; menu_toggle.c -- Creates multi valued menus and explains
+ | -- REQ_TOGGLE_ITEM
+ |----&gt; menu_userptr.c -- Usage of user pointer
+ |----&gt; menu_win.c -- Demo of windows associated with menus
+
+ panels
+ |
+ |----&gt; panel_browse.c -- Panel browsing through tab. Usage of user
+ | -- pointer
+ |----&gt; panel_hide.c -- Hiding and Un hiding of panels
+ |----&gt; panel_resize.c -- Moving and resizing of panels
+ |----&gt; panel_simple.c -- A simple panel example
+
+ perl
+ |----&gt; 01-10.pl -- Perl equivalents of first ten example programs</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">&#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/
+ NCURSES-HOWTO/ncurses_programs.tar.gz
+
+ Unzip ncurses_programs.tar.gz with
+ tar zxvf ncurses_programs.tar.gz
+
+ Use jade to create various formats. For example if you just want to create
+ the multiple html files, you would use
+ jade -t sgml -i html -d &lt;path to docbook html stylesheet&gt;
+ NCURSES-Programming-HOWTO.sgml
+ to get pdf, first create a single html file of the HOWTO with
+ jade -t sgml -i html -d &lt;path to docbook html stylesheet&gt; -V nochunks
+ NCURSES-Programming-HOWTO.sgml &gt; NCURSES-ONE-BIG-FILE.html
+ then use htmldoc to get pdf file with
+ htmldoc --size universal -t pdf --firstpage p1 -f &lt;output file name.pdf&gt;
+ 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</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> #include &lt;ncurses.h&gt;
+ .
+ .
+ .
+
+ compile and link: gcc &lt;program file&gt; -lncurses</font>
+</pre></td>
+</tr>
+</table>
+<div class="EXAMPLE"><a name="BHW" id="BHW"></a>
+<p><b>Example 1. The Hello World !!! Program</b></p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class=
+"LITERAL">stdscr</var>) 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 <var class="LITERAL">cbreak()</var> 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. <var class="LITERAL">noecho()</var> 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 <var class=
+"LITERAL">noecho()</var> 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 <var class="LITERAL">keypad(stdscr,
+TRUE)</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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></font>
+</pre></td>
+</tr>
+</table>
+</div>
+<p>This program is self-explanatory. But I used functions which
+aren't explained yet. The function <var class=
+"LITERAL">getch()</var> is used to get a character from user. It is
+equivalent to normal <var class="LITERAL">getchar()</var> except
+that we can disable the line buffering to avoid &lt;enter&gt; after
+input. Look for more about <var class="LITERAL">getch()</var>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 <var class="LITERAL">stdscr</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> printw("Hi There !!!");
+ refresh();</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> wprintw(win, "Hi There !!!");
+ wrefresh(win);</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000"> 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 */</font>
+</pre></td>
+</tr>
+</table>
+<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
+<var class="LITERAL">ncurses.h</var>. For example, you want to
+print a character ch(of type char) bold and underlined, you would
+call addch() as below.</p>
+<table border="0" bgcolor="#E0E0E0" width="90%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> addch(ch | A_BOLD | A_UNDERLINE);</font>
+</pre></td>
+</tr>
+</table>
+</li>
+<li>
+<p>By using functions like <var class=
+"LITERAL">attrset(),attron(),attroff()</var>. 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, <var class="LITERAL">curses</var> 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 <var class=
+"LITERAL">ncurses.h</var>. Try looking for macros beginning with
+<var class="LITERAL">ACS_</var> 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><var class="LITERAL">mvaddch()</var> is used to move the cursor
+to a given point, and then print. Thus, the calls:</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000"> move(row,col); /* moves the cursor to row<em>th</em> row and col<em>th</em> column */
+ addch(ch);</font>
+</pre></td>
+</tr>
+</table>
+can be replaced by
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> mvaddch(row,col,ch);</font>
+</pre></td>
+</tr>
+</table>
+<p><var class="LITERAL">waddch()</var> is similar to <var class=
+"LITERAL">addch()</var>, except that it adds a character into the
+given window. (Note that <var class="LITERAL">addch()</var> adds a
+character into the window <var class="LITERAL">stdscr</var>.)</p>
+<p>In a similar fashion <var class="LITERAL">mvwaddch()</var>
+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 <var class=
+"LITERAL">addch()</var>. But, if we want to print a string, it
+would be very annoying to print it character by character.
+Fortunately, <var class="LITERAL">ncurses</var> provides
+<var class="LITERAL">printf</var><em>-like</em> or <var class=
+"LITERAL">puts</var><em>-like</em> 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 <var class=
+"LITERAL">printf()</var> 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 <var class=
+"LITERAL">printf()</var>. <var class="LITERAL">mvprintw()</var> 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 <var class=
+"LITERAL">printw()</var> function, use <var class=
+"LITERAL">move()</var> first and then use <var class=
+"LITERAL">printw()</var> though I see no point why one should avoid
+using <var class="LITERAL">mvprintw()</var>, 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.
+vwprintw()</a></h4>
+<p>This function is similar to <var class=
+"LITERAL">vprintf()</var>. 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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 */
+ mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
+ /* 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();
+ getch();
+ endwin();
+
+ return 0;
+}</span></font>
+</pre></td>
+</tr>
+</table>
+</div>
+<p>Above program demonstrates how easy it is to use <var class=
+"LITERAL">printw</var>. 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 <var class=
+"LITERAL">getmaxyx()</var>, a macro defined in <var class=
+"LITERAL">ncurses.h</var>. It gives the number of columns and the
+number of rows in a given window. <var class=
+"LITERAL">getmaxyx()</var> does this by updating the variables
+given to it. Since <var class="LITERAL">getmaxyx()</var> 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><var class="LITERAL">addstr()</var> is used to put a character
+string into a given window. This function is similar to calling
+<var class="LITERAL">addch()</var> once for each character in a
+given string. This is true for all output functions. There are
+other functions from this family such as <var class=
+"LITERAL">mvaddstr(),mvwaddstr()</var> and <var class=
+"LITERAL">waddstr()</var>, 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 <var class=
+"LITERAL">scanf()</var> 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 <var class=
+"LITERAL">sscanf()</var>, where the line to be scanned is provided
+by <var class="LITERAL">wgetstr()</var> function. That is, these
+functions call to <var class="LITERAL">wgetstr()</var>
+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.
+vwscanw()</a></h4>
+<p>This function is similar to <var class="LITERAL">vscanf()</var>.
+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 <var class="LITERAL">getch()</var> until a
+newline, carriage return, or end-of-file is received. The resulting
+string of characters are pointed to by <var class=
+"LITERAL">str</var>, 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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 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 */
+ mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
+ /* print the message at the center of the screen */
+ getstr(str);
+ mvprintw(LINES - 2, 0, "You Entered: %s", str);
+ getch();
+ endwin();
+
+ return 0;
+}</span></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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[])
+{
+ int ch, prev, row, col;
+ prev = EOF;
+ FILE *fp;
+ int y, x;
+
+ if(argc != 2)
+ {
+ printf("Usage: %s &lt;a c file name&gt;\n", argv[0]);
+ exit(1);
+ }
+ fp = fopen(argv[1], "r");
+ if(fp == NULL)
+ {
+ 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 */
+ {
+ getyx(stdscr, y, x); /* get the current curser position */
+ if(y == (row - 1)) /* are we are at the end of the screen */
+ {
+ 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 */
+ }
+ 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 */
+ }
+ else
+ printw("%c", ch);
+ refresh();
+ if(prev == '*' &amp;&amp; ch == '/')
+ attroff(A_BOLD); /* Switch it off once we got *
+ * and then / */
+ prev = ch;
+ }
+ endwin(); /* End curses mode */
+ fclose(fp);
+ return 0;
+}</span></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class=
+"LITERAL">attron()</var> . When we get the pattern */ it is
+switched off by <var class="LITERAL">attroff()</var> .</p>
+<p>The above program also introduces us to two useful functions
+<var class="LITERAL">getyx()</var> and <var class=
+"LITERAL">move()</var>. 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
+<var class="LITERAL">move()</var> 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
+<var class="LITERAL">attron(), attroff(), attrset()</var> , and
+their sister functions <var class="LITERAL">attr_get()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000">
+ A_NORMAL Normal display (no highlight)
+ A_STANDOUT Best highlighting mode of the terminal.
+ A_UNDERLINE Underlining
+ A_REVERSE Reverse video
+ A_BLINK Blinking
+ A_DIM Half bright
+ A_BOLD Extra bright or bold
+ A_PROTECT Protected mode
+ A_INVIS Invisible or blank mode
+ A_ALTCHARSET Alternate character set
+ A_CHARTEXT Bit-mask to extract a character
+ COLOR_PAIR(n) Color-pair number n
+ </font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> attron(A_REVERSE | A_BLINK);</font>
+</pre></td>
+</tr>
+</table>
+</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 <var class=
+"LITERAL">standend()</var> which is equivalent to <var class=
+"LITERAL">attrset(A_NORMAL)</var> which turns off all attributes
+and brings you to normal mode.</p>
+</div>
+<div class="SECT2">
+<hr>
+<h3 class="SECT2"><a name="ATTR_GET" id="ATTR_GET">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="ATTR_FUNCS" id="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 <var class="LITERAL">attr_t</var>.</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> chgat(-1, A_REVERSE, 0, NULL);</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class=
+"LITERAL">newwin()</var>. 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
+<var class="LITERAL">box()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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 *create_newwin(int height, int width, int starty, int startx)
+{ 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 */
+
+ 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></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class="LITERAL">create_newwin()</var> function creates
+a window with <var class="LITERAL">newwin()</var> and displays a
+border around it with box. The function <var class=
+"LITERAL">destroy_win()</var> first erases the window from screen
+by painting a border with ' ' character and then calling
+<var class="LITERAL">delwin()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000"> wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');</font>
+</pre></td>
+</tr>
+</table>
+<p>it produces some thing like</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> +------------+
+ | |
+ | |
+ | |
+ | |
+ | |
+ | |
+ +------------+</font>
+</pre></td>
+</tr>
+</table>
+</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 <var class="LITERAL">getch()</var> 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 <var class="LITERAL">mvhline()</var>
+and <var class="LITERAL">mvvline()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><span class=
+"INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
+
+typedef struct _win_border_struct {
+ chtype ls, rs, ts, bs,
+ tl, tr, bl, br;
+}WIN_BORDER;
+
+typedef struct _WIN_struct {
+
+ int startx, starty;
+ int height, width;
+ WIN_BORDER border;
+}WIN;
+
+void init_win_params(WIN *p_win);
+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(&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-&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-&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-&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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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();
+}
+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();
+}
+</span></font>
+</pre></td>
+</tr>
+</table>
+</div>
+<p>As you can see, to start using color, you should first call the
+function <var class="LITERAL">start_color()</var>. 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 <var class="LITERAL">has_colors()</var> 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 <var class="LITERAL">COLOR_BLACK</var> 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
+<var class="LITERAL">init_pair()</var> 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 <var class=
+"LITERAL">COLOR_PAIR()</var>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 <var class=
+"LITERAL">curses.h</var>. You can use these as parameters for
+various color functions.</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> COLOR_BLACK 0
+ COLOR_RED 1
+ COLOR_GREEN 2
+ COLOR_YELLOW 3
+ COLOR_BLUE 4
+ COLOR_MAGENTA 5
+ COLOR_CYAN 6
+ COLOR_WHITE 7</font>
+</pre></td>
+</tr>
+</table>
+</div>
+<div class="SECT2">
+<hr>
+<h3 class="SECT2"><a name="CHANGECOLORDEFS" id=
+"CHANGECOLORDEFS">10.2. Changing Color Definitions</a></h3>
+<p>The function <var class="LITERAL">init_color()</var>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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> init_color(COLOR_RED, 700, 0, 0);
+ /* param 1 : color name
+ * param 2, 3, 4 : rgb content min = 0, max = 1000 */</font>
+</pre></td>
+</tr>
+</table>
+<p>If your terminal cannot change the color definitions, the
+function returns ERR. The function <var class=
+"LITERAL">can_change_color()</var> 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 <var class="LITERAL">color_content()</var> and
+<var class="LITERAL">pair_content()</var> 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 <var class="LITERAL">getch()</var> 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><var class="LITERAL">getch()</var> 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
+<var class="LITERAL">curses.h</var>. 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> int ch;
+
+ ch = getch();</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> if(ch == KEY_LEFT)
+ printw("Left arrow is pressed\n");</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><span class=
+"INLINEMEDIAOBJECT">#include &lt;stdio.h&gt;
+#include &lt;ncurses.h&gt;
+
+#define WIDTH 30
+#define HEIGHT 10
+
+int startx = 0;
+int starty = 0;
+
+char *choices[] = {
+ "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;
+}
+
+
+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 &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></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class="LITERAL">mousemask()</var>.</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000"> mousemask( mmask_t newmask, /* The events you want to listen to */
+ mmask_t *oldmask) /* The old events mask */</font>
+</pre></td>
+</tr>
+</table>
+<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 <var class="LITERAL">ALL_MOUSE_EVENTS</var> can
+be used to get all the events.</p>
+<p>The following are all the event masks:</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> Name Description
+ ---------------------------------------------------------------------
+ BUTTON1_PRESSED mouse button 1 down
+ BUTTON1_RELEASED mouse button 1 up
+ BUTTON1_CLICKED mouse button 1 clicked
+ BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked
+ BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked
+ BUTTON2_PRESSED mouse button 2 down
+ BUTTON2_RELEASED mouse button 2 up
+ BUTTON2_CLICKED mouse button 2 clicked
+ BUTTON2_DOUBLE_CLICKED mouse button 2 double clicked
+ BUTTON2_TRIPLE_CLICKED mouse button 2 triple clicked
+ BUTTON3_PRESSED mouse button 3 down
+ BUTTON3_RELEASED mouse button 3 up
+ BUTTON3_CLICKED mouse button 3 clicked
+ BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked
+ BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked
+ BUTTON4_PRESSED mouse button 4 down
+ BUTTON4_RELEASED mouse button 4 up
+ BUTTON4_CLICKED mouse button 4 clicked
+ BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked
+ BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked
+ BUTTON_SHIFT shift was down during button state change
+ BUTTON_CTRL control was down during button state change
+ BUTTON_ALT alt was down during button state change
+ ALL_MOUSE_EVENTS report all button state changes
+ REPORT_MOUSE_POSITION report mouse movement</font>
+</pre></td>
+</tr>
+</table>
+</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 <var class=
+"LITERAL">getmouse()</var>.</p>
+<p>The code approximately looks like this:</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> MEVENT event;
+
+ ch = getch();
+ if(ch == KEY_MOUSE)
+ if(getmouse(&amp;event) == OK)
+ . /* Do some thing with the event */
+ .
+ .</font>
+</pre></td>
+</tr>
+</table>
+<p>getmouse() returns the event into the pointer given to it. It's
+a structure which contains</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> typedef struct
+ {
+ short id; /* ID to distinguish multiple devices */
+ int x, y, z; /* event coordinates */
+ mmask_t bstate; /* button state bits */
+ } </font>
+</pre></td>
+</tr>
+</table>
+<p>The <var class="LITERAL">bstate</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> if(event.bstate &amp; BUTTON1_PRESSED)
+ printw("Left Button Pressed");</font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><span class=
+"INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
+
+#define WIDTH 30
+#define HEIGHT 10
+
+int startx = 0;
+int starty = 0;
+
+char *choices[] = { "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "Exit",
+ };
+
+int n_choices = sizeof(choices) / sizeof(char *);
+
+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(&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;
+}
+
+
+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 &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 &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></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class="LITERAL">getyx()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> getyx(win, y, x);
+ /* win: window pointer
+ * y, x: y, x co-ordinates will be put into this variables
+ */</font>
+</pre></td>
+</tr>
+</table>
+<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 <var class=
+"LITERAL">putwin()</var> and <var class="LITERAL">getwin()</var>
+can be used. <var class="LITERAL">putwin()</var> puts the present
+window state into a file, which can be later restored by
+<var class="LITERAL">getwin()</var>.</p>
+<p>The function <var class="LITERAL">copywin()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> 0 : invisible or
+ 1 : normal or
+ 2 : very visible.</font>
+</pre></td>
+</tr>
+</table>
+</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 <var class=
+"LITERAL">def_prog_mode()</var> and then call <var class=
+"LITERAL">endwin()</var> to end the curses mode. This will leave
+you in the original tty mode. To get back to curses once you are
+done, call <var class="LITERAL">reset_prog_mode()</var> . This
+function returns the tty to the state stored by <var class=
+"LITERAL">def_prog_mode()</var>. 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class=
+"LITERAL">box()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><span class=
+"INLINEMEDIAOBJECT">#include &lt;ncurses.h&gt;
+
+int main()
+{
+ initscr();
+
+ printw("Upper left corner "); addch(ACS_ULCORNER); printw("\n");
+ printw("Lower left corner "); addch(ACS_LLCORNER); printw("\n");
+ printw("Lower right corner "); addch(ACS_LRCORNER); printw("\n");
+ printw("Tee pointing right "); addch(ACS_LTEE); printw("\n");
+ printw("Tee pointing left "); addch(ACS_RTEE); printw("\n");
+ printw("Tee pointing up "); addch(ACS_BTEE); printw("\n");
+ printw("Tee pointing down "); addch(ACS_TTEE); printw("\n");
+ printw("Horizontal line "); addch(ACS_HLINE); printw("\n");
+ printw("Vertical line "); addch(ACS_VLINE); printw("\n");
+ printw("Large Plus or cross over "); addch(ACS_PLUS); printw("\n");
+ printw("Scan Line 1 "); addch(ACS_S1); printw("\n");
+ printw("Scan Line 3 "); addch(ACS_S3); printw("\n");
+ printw("Scan Line 7 "); addch(ACS_S7); printw("\n");
+ printw("Scan Line 9 "); addch(ACS_S9); printw("\n");
+ printw("Diamond "); addch(ACS_DIAMOND); printw("\n");
+ printw("Checker board (stipple) "); addch(ACS_CKBOARD); printw("\n");
+ printw("Degree Symbol "); addch(ACS_DEGREE); printw("\n");
+ printw("Plus/Minus Symbol "); addch(ACS_PLMINUS); printw("\n");
+ printw("Bullet "); addch(ACS_BULLET); printw("\n");
+ printw("Arrow Pointing Left "); addch(ACS_LARROW); printw("\n");
+ printw("Arrow Pointing Right "); addch(ACS_RARROW); printw("\n");
+ printw("Arrow Pointing Down "); addch(ACS_DARROW); printw("\n");
+ printw("Arrow Pointing Up "); addch(ACS_UARROW); printw("\n");
+ printw("Board of squares "); addch(ACS_BOARD); printw("\n");
+ printw("Lantern Symbol "); addch(ACS_LANTERN); printw("\n");
+ printw("Solid Square Block "); addch(ACS_BLOCK); printw("\n");
+ printw("Less/Equal sign "); addch(ACS_LEQUAL); printw("\n");
+ printw("Greater/Equal sign "); addch(ACS_GEQUAL); printw("\n");
+ printw("Pi "); addch(ACS_PI); printw("\n");
+ printw("Not equal "); addch(ACS_NEQUAL); printw("\n");
+ printw("UK pound sign "); addch(ACS_STERLING); printw("\n");
+
+ refresh();
+ getch();
+ endwin();
+
+ return 0;
+}</span></font>
+</pre></td>
+</tr>
+</table>
+</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><em>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.</em></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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> #include &lt;panel.h&gt;
+ .
+ .
+ .
+
+ compile and link: gcc &lt;program file&gt; -lpanel -lncurses</font>
+</pre></td>
+</tr>
+</table>
+<div class="EXAMPLE"><a name="PPASI" id="PPASI"></a>
+<p><b>Example 14. Panel basics</b></p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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 &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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><span class=
+"INLINEMEDIAOBJECT">#include &lt;panel.h&gt;
+
+#define NLINES 10
+#define NCOLS 40
+
+void init_wins(WINDOW **wins, int n);
+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;
+}
+
+/* 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 &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;
+
+ 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));
+}
+
+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></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class="LITERAL">set_panel_userptr()</var>. It can be
+accessed using the function <var class=
+"LITERAL">panel_userptr()</var> 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 <var class="LITERAL">move_panel()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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;
+}PANEL_DATA;
+
+#define NLINES 10
+#define NCOLS 40
+
+void init_wins(WINDOW **wins, int n);
+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);
+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-&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 &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 &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;
+
+ 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));
+}
+
+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></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class="LITERAL">panel_hidden()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><span class=
+"INLINEMEDIAOBJECT">#include &lt;panel.h&gt;
+
+typedef struct _PANEL_DATA {
+ int hide; /* TRUE if panel is hidden */
+}PANEL_DATA;
+
+#define NLINES 10
+#define NCOLS 40
+
+void init_wins(WINDOW **wins, int n);
+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], &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 &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;
+
+ 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));
+}
+
+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></font>
+</pre></td>
+</tr>
+</table>
+</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 <var class="LITERAL">panel_above()</var> and
+<var class="LITERAL">panel_below()</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> #include &lt;menu.h&gt;
+ .
+ .
+ .
+
+ compile and link: gcc &lt;program file&gt; -lmenu -lncurses</font>
+</pre></td>
+</tr>
+</table>
+<div class="EXAMPLE"><a name="MMESI" id="MMESI"></a>
+<p><b>Example 18. Menu Basics</b></p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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
+
+char *choices[] = {
+ "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "Exit",
+ };
+
+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 &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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">&#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.
+ REQ_SCR_ULINE Scroll up a line.
+ REQ_SCR_DLINE Scroll down a line.
+ REQ_SCR_DPAGE Scroll down a page.
+ REQ_SCR_UPAGE Scroll up a page.
+ REQ_FIRST_ITEM Move to the first item.
+ REQ_LAST_ITEM Move to the last item.
+ REQ_NEXT_ITEM Move to the next item.
+ REQ_PREV_ITEM Move to the previous item.
+ REQ_TOGGLE_ITEM Select/deselect an item.
+ 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;</font>
+</pre></td>
+</tr>
+</table>
+<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><em>REQ_LEFT_ITEM and REQ_RIGHT_ITEM</em></p>
+<p>A Menu can be displayed with multiple columns for more than one
+item. This can be done by using the <var class=
+"LITERAL">menu_format()</var>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><em>REQ_UP_ITEM and REQ_DOWN_ITEM</em></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><em>REQ_SCR_* options</em></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><em>REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_NEXT_ITEM and
+REQ_PREV_ITEM</em></p>
+<p>These requests are self explanatory.</p>
+</li>
+<li>
+<p><em>REQ_TOGGLE_ITEM</em></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><em>Pattern Requests</em></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><em>Mouse Requests</em></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>
+<table border="0" bgcolor="#E0E0E0" width="90%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000"><em> 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;
+ tion window) are handled. If you click above the display
+ region of the menu, a REQ_SCR_ULINE is generated, if you
+ doubleclick a REQ_SCR_UPAGE is generated and if you
+ tripleclick a REQ_FIRST_ITEM is generated. If you click
+ below the display region of the menu, a REQ_SCR_DLINE is
+ generated, if you doubleclick a REQ_SCR_DPAGE is generated
+ and if you tripleclick a REQ_LAST_ITEM is generated. If
+ you click at an item inside the display area of the menu,
+ the menu cursor is positioned to that item.</em></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><span class=
+"INLINEMEDIAOBJECT">#include &lt;menu.h&gt;
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD 4
+
+char *choices[] = {
+ "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "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;
+ WINDOW *my_menu_win;
+ int n_choices, i;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+
+ /* Create items */
+ n_choices = ARRAY_SIZE(choices);
+ my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
+ 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);
+
+ /* 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_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(my_menu, " * ");
+
+ /* 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();
+
+ /* 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_menu(my_menu);
+ free_menu(my_menu);
+ for(i = 0; i &lt; n_choices; ++i)
+ free_item(my_items[i]);
+ 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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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
+
+char *choices[] = {
+ "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "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;
+ WINDOW *my_menu_win;
+ int n_choices, i;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_CYAN, COLOR_BLACK);
+
+ /* Create items */
+ n_choices = ARRAY_SIZE(choices);
+ my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
+ 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);
+
+ /* 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_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_mark(my_menu, " * ");
+
+ /* 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);
+
+ /* 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;
+ }
+ wrefresh(my_menu_win);
+ }
+
+ /* Unpost and free all the memory taken up */
+ unpost_menu(my_menu);
+ free_menu(my_menu);
+ for(i = 0; i &lt; n_choices; ++i)
+ free_item(my_items[i]);
+ 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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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
+
+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",
+ "Exit",
+ (char *)NULL,
+ };
+
+int main()
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
+ WINDOW *my_menu_win;
+ int n_choices, i;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_CYAN, COLOR_BLACK);
+
+ /* Create items */
+ n_choices = ARRAY_SIZE(choices);
+ my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
+ 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);
+
+ /* Set menu option not to show the description */
+ menu_opts_off(my_menu, O_SHOWDESC);
+
+ /* 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_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, " * ");
+
+ /* 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;
+ }
+ wrefresh(my_menu_win);
+ }
+
+ /* Unpost and free all the memory taken up */
+ unpost_menu(my_menu);
+ free_menu(my_menu);
+ for(i = 0; i &lt; n_choices; ++i)
+ free_item(my_items[i]);
+ endwin();
+}</span></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> O_ONEVALUE
+ Only one item can be selected for this menu.
+
+ O_SHOWDESC
+ Display the item descriptions when the menu is
+ posted.
+
+ O_ROWMAJOR
+ Display the menu in row-major order.
+
+ O_IGNORECASE
+ Ignore the case when pattern-matching.
+
+ O_SHOWMATCH
+ Move the cursor to within the item name while pat&shy;
+ tern-matching.
+
+ O_NONCYCLIC
+ Don't wrap around next-item and previous-item,
+ requests to the other end of the menu.</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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
+
+char *choices[] = {
+ "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
+ "Exit",
+ };
+
+int main()
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
+ int n_choices, i;
+ ITEM *cur_item;
+
+ /* Initialize curses */
+ initscr();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize items */
+ 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);
+
+ /* 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();
+}
+ </span></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><span class=
+"INLINEMEDIAOBJECT">#include &lt;menu.h&gt;
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD 4
+
+char *choices[] = {
+ "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
+ "Exit",
+ };
+
+int main()
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
+ int n_choices, i;
+ 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);
+
+ /* Initialize items */
+ 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;
+ 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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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
+
+char *choices[] = {
+ "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
+ "Exit",
+ };
+void func(char *name);
+
+int main()
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
+ int n_choices, i;
+ 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);
+
+ /* Initialize items */
+ 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]);
+ /* 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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"> #include &lt;form.h&gt;
+ .
+ .
+ .
+
+ compile and link: gcc &lt;program file&gt; -lform -lncurses</font>
+</pre></td>
+</tr>
+</table>
+<div class="EXAMPLE"><a name="FFOSI" id="FFOSI"></a>
+<p><b>Example 25. Forms Basics</b></p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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></font>
+</pre></td>
+</tr>
+</table>
+</div>
+<p>Above example is pretty straight forward. It creates two fields
+with <var class="LITERAL">new_field()</var>. 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">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 */</font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">int move_field( FIELD *field, /* field to alter */
+ int top, int left); /* new upper-left corner */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000"> int set_field_just(FIELD *field, /* field to alter */
+ int justmode); /* mode to set */
+ int field_just(FIELD *field); /* fetch justify mode of field */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">&#13;int set_field_fore(FIELD *field, /* field to alter */
+ chtype attr); /* attribute to set */
+
+chtype field_fore(FIELD *field); /* field to query */
+ /* returns foreground attribute */
+
+int set_field_back(FIELD *field, /* field to alter */
+ chtype attr); /* attribute to set */
+
+chtype field_back(FIELD *field); /* field to query */
+ /* returns background attribute */
+
+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;</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">int set_field_opts(FIELD *field, /* field to alter */
+ int attr); /* attribute to set */
+
+int field_opts_on(FIELD *field, /* field to alter */
+ int attr); /* attributes to turn on */
+
+int field_opts_off(FIELD *field, /* field to alter */
+ int attr); /* attributes to turn off */
+
+int field_opts(FIELD *field); /* field to query */ </font>
+</pre></td>
+</tr>
+</table>
+<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 <var class=
+"LITERAL">REQ_PREV_CHOICE</var> and <var class=
+"LITERAL">REQ_NEXT_CHOICE</var>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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><span class=
+"INLINEMEDIAOBJECT">#include &lt;form.h&gt;
+
+#define STARTX 15
+#define STARTY 4
+#define WIDTH 25
+
+#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 &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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">int set_field_status(FIELD *field, /* field to alter */
+ int status); /* status to set */
+
+int field_status(FIELD *field); /* fetch status of field */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000">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 */</font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000"> field_opts_off(field_pointer, O_STATIC);</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">int set_max_field(FIELD *field, /* Field on which to operate */
+ int max_growth); /* maximum growth allowed for the field */</font>
+</pre></td>
+</tr>
+</table>
+<p>The field info for a dynamically growable field can be retrieved
+by</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">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 */</font>
+</pre></td>
+</tr>
+</table>
+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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000"><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, &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_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 */
+ 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;
+}
+
+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></font>
+</pre></td>
+</tr>
+</table>
+</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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">int set_field_type(FIELD *field, /* field to alter */
+ FIELDTYPE *ftype, /* type to associate */
+ ...); /* additional arguments*/</font>
+</pre></td>
+</tr>
+</table>
+Once set, the validation type for a field can be queried with
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">FIELDTYPE *field_type(FIELD *field); /* field to query */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">int set_field_type(FIELD *field, /* field to alter */
+ TYPE_ALPHA, /* type to associate */
+ int width); /* maximum width of field */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">int set_field_type(FIELD *field, /* field to alter */
+ TYPE_ALNUM, /* type to associate */
+ int width); /* maximum width of field */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">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? */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">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 */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">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 */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">int set_field_type(FIELD *field, /* field to alter */
+ TYPE_REGEXP, /* type to associate */
+ char *regexp); /* expression to match */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">int form_driver(FORM *form, /* form on which to operate */
+ int request) /* form request code */</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">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 */</font>
+</pre></td>
+</tr>
+</table>
+<p>The following requests allow you to move to different pages</p>
+<ul>
+<li>
+<p><em>REQ_NEXT_PAGE</em> Move to the next form page.</p>
+</li>
+<li>
+<p><em>REQ_PREV_PAGE</em> Move to the previous form page.</p>
+</li>
+<li>
+<p><em>REQ_FIRST_PAGE</em> Move to the first form page.</p>
+</li>
+<li>
+<p><em>REQ_LAST_PAGE</em> 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><em>REQ_NEXT_FIELD</em> Move to next field.</p>
+</li>
+<li>
+<p><em>REQ_PREV_FIELD</em> Move to previous field.</p>
+</li>
+<li>
+<p><em>REQ_FIRST_FIELD</em> Move to the first field.</p>
+</li>
+<li>
+<p><em>REQ_LAST_FIELD</em> Move to the last field.</p>
+</li>
+<li>
+<p><em>REQ_SNEXT_FIELD</em> Move to sorted next field.</p>
+</li>
+<li>
+<p><em>REQ_SPREV_FIELD</em> Move to sorted previous field.</p>
+</li>
+<li>
+<p><em>REQ_SFIRST_FIELD</em> Move to the sorted first field.</p>
+</li>
+<li>
+<p><em>REQ_SLAST_FIELD</em> Move to the sorted last field.</p>
+</li>
+<li>
+<p><em>REQ_LEFT_FIELD</em> Move left to field.</p>
+</li>
+<li>
+<p><em>REQ_RIGHT_FIELD</em> Move right to field.</p>
+</li>
+<li>
+<p><em>REQ_UP_FIELD</em> Move up to field.</p>
+</li>
+<li>
+<p><em>REQ_DOWN_FIELD</em> 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><em>REQ_NEXT_CHAR</em> Move to next character.</p>
+</li>
+<li>
+<p><em>REQ_PREV_CHAR</em> Move to previous character.</p>
+</li>
+<li>
+<p><em>REQ_NEXT_LINE</em> Move to next line.</p>
+</li>
+<li>
+<p><em>REQ_PREV_LINE</em> Move to previous line.</p>
+</li>
+<li>
+<p><em>REQ_NEXT_WORD</em> Move to next word.</p>
+</li>
+<li>
+<p><em>REQ_PREV_WORD</em> Move to previous word.</p>
+</li>
+<li>
+<p><em>REQ_BEG_FIELD</em> Move to beginning of field.</p>
+</li>
+<li>
+<p><em>REQ_END_FIELD</em> Move to end of field.</p>
+</li>
+<li>
+<p><em>REQ_BEG_LINE</em> Move to beginning of line.</p>
+</li>
+<li>
+<p><em>REQ_END_LINE</em> Move to end of line.</p>
+</li>
+<li>
+<p><em>REQ_LEFT_CHAR</em> Move left in field.</p>
+</li>
+<li>
+<p><em>REQ_RIGHT_CHAR</em> Move right in field.</p>
+</li>
+<li>
+<p><em>REQ_UP_CHAR</em> Move up in field.</p>
+</li>
+<li>
+<p><em>REQ_DOWN_CHAR</em> 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><em>REQ_SCR_FLINE</em> Scroll vertically forward a line.</p>
+</li>
+<li>
+<p><em>REQ_SCR_BLINE</em> Scroll vertically backward a line.</p>
+</li>
+<li>
+<p><em>REQ_SCR_FPAGE</em> Scroll vertically forward a page.</p>
+</li>
+<li>
+<p><em>REQ_SCR_BPAGE</em> Scroll vertically backward a page.</p>
+</li>
+<li>
+<p><em>REQ_SCR_FHPAGE</em> Scroll vertically forward half a
+page.</p>
+</li>
+<li>
+<p><em>REQ_SCR_BHPAGE</em> Scroll vertically backward half a
+page.</p>
+</li>
+<li>
+<p><em>REQ_SCR_FCHAR</em> Scroll horizontally forward a
+character.</p>
+</li>
+<li>
+<p><em>REQ_SCR_BCHAR</em> Scroll horizontally backward a
+character.</p>
+</li>
+<li>
+<p><em>REQ_SCR_HFLINE</em> Scroll horizontally one field width
+forward.</p>
+</li>
+<li>
+<p><em>REQ_SCR_HBLINE</em> Scroll horizontally one field width
+backward.</p>
+</li>
+<li>
+<p><em>REQ_SCR_HFHALF</em> Scroll horizontally one half field width
+forward.</p>
+</li>
+<li>
+<p><em>REQ_SCR_HBHALF</em> 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><em>REQ_INS_MODE</em> Set insertion mode.</p>
+</li>
+<li>
+<p><em>REQ_OVL_MODE</em> Set overlay mode.</p>
+</li>
+<li>
+<p><em>REQ_NEW_LINE</em> New line request (see below for
+explanation).</p>
+</li>
+<li>
+<p><em>REQ_INS_CHAR</em> Insert space at character location.</p>
+</li>
+<li>
+<p><em>REQ_INS_LINE</em> Insert blank line at character
+location.</p>
+</li>
+<li>
+<p><em>REQ_DEL_CHAR</em> Delete character at cursor.</p>
+</li>
+<li>
+<p><em>REQ_DEL_PREV</em> Delete previous word at cursor.</p>
+</li>
+<li>
+<p><em>REQ_DEL_LINE</em> Delete line at cursor.</p>
+</li>
+<li>
+<p><em>REQ_DEL_WORD</em> Delete word at cursor.</p>
+</li>
+<li>
+<p><em>REQ_CLR_EOL</em> Clear to end of line.</p>
+</li>
+<li>
+<p><em>REQ_CLR_EOF</em> Clear to end of field.</p>
+</li>
+<li>
+<p><em>REQ_CLR_FIELD</em> 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><em>REQ_NEXT_CHOICE</em> Place the successor value of the
+current value in the buffer.</p>
+</li>
+<li>
+<p><em>REQ_PREV_CHOICE</em> 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><em>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.</em></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" id="WIDGETLIST">19.1.1.
+Widget List</a></h4>
+<p>The following is the list of widgets provided with cdk and their
+description.</p>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color="#000000">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
+ few characters of the desired word.
+Buttonbox This creates a multiple button widget.
+Calendar Creates a little simple calendar widget.
+Dialog Prompts the user with a message, and the user
+ can pick an answer from the buttons provided.
+Entry Allows the user to enter various types of information.
+File Selector A file selector built from Cdk base widgets. This
+ example shows how to create more complicated widgets
+ using the Cdk widget library.
+Graph Draws a graph.
+Histogram Draws a histogram.
+Item List Creates a pop up field which allows the user to select
+ one of several choices in a small field. Very useful
+ for things like days of the week or month names.
+Label Displays messages in a pop up box, or the label can be
+ considered part of the screen.
+Marquee Displays a message in a scrolling marquee.
+Matrix Creates a complex matrix with lots of options.
+Menu Creates a pull-down menu interface.
+Multiple Line Entry A multiple line entry field. Very useful
+ for long fields. (like a description
+ field)
+Radio List Creates a radio button list.
+Scale Creates a numeric scale. Used for allowing a user to
+ pick a numeric value and restrict them to a range of
+ values.
+Scrolling List Creates a scrolling list/menu list.
+Scrolling Window Creates a scrolling log file viewer. Can add
+ information into the window while its running.
+ A good widget for displaying the progress of
+ something. (akin to a console window)
+Selection List Creates a multiple option selection list.
+Slider Akin to the scale widget, this widget provides a
+ visual slide bar to represent the numeric value.
+Template Creates a entry field with character sensitive
+ positions. Used for pre-formatted fields like
+ dates and phone numbers.
+Viewer This is a file/information viewer. Very useful
+ when you need to display loads of information.
+===========================================================================</font>
+</pre></td>
+</tr>
+</table>
+<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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000">"&lt;/B/1&gt;This line should have a yellow foreground and a blue
+background.&lt;!1&gt;"</font>
+</pre></td>
+</tr>
+</table>
+<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><em>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</em></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" 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 <var class=
+"LITERAL">perl</var> 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>
+<table border="0" bgcolor="#E0E0E0" width="100%">
+<tr>
+<td>
+<pre class="PROGRAMLISTING">
+<font color=
+"#000000"><em>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.</em></font>
+</pre></td>
+</tr>
+</table>
+<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><em>File Path: JustForFun/life.c</em></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><em>File Path: JustForFun/magic.c</em></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><em>File Path: JustForFun/hanoi.c</em></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><em>File Path: JustForFun/queens.c</em></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><em>File Path: JustForFun/shuffle.c</em></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><em>File Path: JustForFun/tt.c</em></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=
+"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>
diff --git a/contrib/ncurses/doc/html/announce.html b/contrib/ncurses/doc/html/announce.html
index 3005e49d5889..f9dae07e5d9a 100644
--- a/contrib/ncurses/doc/html/announce.html
+++ b/contrib/ncurses/doc/html/announce.html
@@ -1,15 +1,43 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<!--
- $Id: announce.html,v 1.39 2000/10/20 10:47:16 tom Exp $
+ $Id: announce.html,v 1.51 2006/12/17 23:32:42 tom Exp $
+ ****************************************************************************
+ * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************
-->
<HTML>
<HEAD>
-<TITLE>Announcing ncurses 5.2</TITLE>
+<TITLE>Announcing ncurses 5.6</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>Announcing ncurses 5.2</H1>
+<H1>Announcing ncurses 5.6</H1>
The ncurses (new curses) library is a free software emulation of
curses in System V Release 4.0, and more. It uses terminfo format,
@@ -18,12 +46,15 @@ and multiple highlights and forms characters and function-key mapping,
and has all the other SYSV-curses enhancements over BSD curses.<P>
In mid-June 1995, the maintainer of 4.4BSD curses declared that he
-considered 4.4BSD curses obsolete, and is encouraging the keepers of
-Unix releases such as BSD/OS, freeBSD and netBSD to switch over to
+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>
-The ncurses code was developed under GNU/Linux. It should port easily to
-any ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp!<P>
+The 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>
The distribution includes the library and support utilities, including a
terminfo compiler tic(1), a decompiler infocmp(1), clear(1), tput(1), tset(1),
@@ -32,333 +63,305 @@ the library and tools.<P>
The ncurses distribution is available via anonymous FTP at
the GNU distribution site
-<A HREF="ftp://ftp.gnu.org/pub/gnu/ncurses">ftp://ftp.gnu.org/pub/gnu/ncurses</A>.
+<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://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
+<A HREF="ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</A>&nbsp;.
<H1>Release Notes</H1>
-This release is designed to be upward compatible from ncurses 5.0 and 5.1;
+This release is designed to be upward compatible from ncurses 5.0 through 5.5;
very few applications will require recompilation, depending on the platform.
-These are the highlights from the change-log since ncurses 5.1 release.
+These are the highlights from the change-log since ncurses 5.5 release.
<p>
Interface changes:
<ul>
- <li>change type of <code>ospeed</code> variable back to
- <code>short</code> to match its use in legacy applications. It was
- altered after ncurses 4.2 to <code>speed_t</code> to repair a type
- mismatch which was introduced after 1.9.4 in 1995. The principal
- users of termcap continued to use <code>short</code>, which is
- not the same size.
- <p>
- <em>NOTE</em>: A few applications will have to be recompiled
- (about 1% of the programs in a typical Linux distribution,
- 10% of the programs that use ncurses). These are easy to
- identify with <code>nm</code> or <code>strings</code>.
-
- <li>remove a private function <code>_nc_can_clear_with()</code>, which
- was built with the configure --enable-expanded option but not used.
-
- <li>add several private functions (prefixed with "_nc_") for tracing
- <code>chtype</code> values in the debug library, and for better
- access and buffer limit checking.
+ <li>generate linkable stubs for some macros:
+ <br>
+ getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx,
+ getpary, getpary,
+ <br>
+ and (for libncursesw)
+ <br>
+ wgetbkgrnd
+
</ul>
New features and improvements:
<ul>
- <li>rewrote <code>tgoto()</code> to make it better support existing
- termcap applications which use hardcoded strings rather than obtain
- all of their information from the termcap file. If the string does
- not appear to be a terminfo string (i.e., does not refer to a "%p"
- parameter, or terminfo-style padding), and termcap support is configured, <code>tgoto()</code>
- will interpret it as termcap. Otherwise, as before, it will use
- <code>tparm()</code>.
-
- <li>to ensure that the <code>tgoto()</code> changes work properly,
- added checks to <code>tic</code> which report capabilities that do
- not reference the expected number of parameters.
-
- <li>new configure script options:
+ <li>library
<ul>
- <li>option <code>--disable-root-environ</code> adds runtime checks
- which tell ncurses to disregard $TERMINFO and similar environment
- variables if the current user is root, or running setuid/setgid.
-
- <li>option <code>--disable-assumed-color</code> allows you to use the
- pre-5.1 convention of default colors used for color-pair 0 to be
- configured (see assume_default_colors()).
+ <li>support hashed databases for the terminal descriptions.
+ This uses the Berkeley database, has been tested for
+ several versions on different platforms.
+
+ <li>add <code>use_legacy_coding()</code> function to support
+ lynx's font-switching feature.
+
+ <li>add extension <code>nofilter()</code>, to cancel a prior
+ <code>filter()</code> call.
+
+ <li>add/install a package config script, e.g.,
+ <code>ncurses5-config</code> or
+ <code>ncursesw5-config</code>, according to
+ configuration options.
+
+ <li>provide ifdef for <code>NCURSES_NOMACROS</code> which
+ suppresses most macro definitions from curses.h, i.e.,
+ where a macro is defined to override a function to improve
+ performance.
+
+ <li>make ifdef's consistent in <code>curses.h</code> for the
+ extended colors so the header file can be used for the
+ normal curses library. The header file installed for
+ extended colors is a variation of the wide-character
+ configuration.
+
+ <li>improve <code>tgetstr()</code> by making the return value
+ point into the user's buffer, if provided.
+
+ <li>add ifdef's allowing ncurses to be built with
+ <code>tparm()</code> using either varargs (the existing
+ status), or using a fixed-parameter list (to match X/Open).
+
+ <li>widen the test for xterm <code>kmous</code> a little to
+ <code>allow</code> for other
+ strings than "\E[M", e.g., for <code>xterm-sco</code>
+ functionality in xterm.
+
+ <li>modify <code>wgetnstr()</code> to return
+ <code>KEY_RESIZE</code> if a sigwinch occurs.
+
+ <li>move prototypes for wide-character trace functions from
+ curses.tail to curses.wide to avoid accidental reference to
+ those if <code>_XOPEN_SOURCE_EXTENDED</code> is defined
+ without ensuring that &lt;wchar.h&gt; is included.
+
+ <li>change the way shared libraries (other than libtool) are
+ installed. Rather than copying the build-tree's libraries,
+ link the shared objects into the install directory. This
+ makes the <code>--with-rpath</code> option work except with
+ <code>$(DESTDIR)</code>.
+
+ <li>several improvements for rendering in hpterm. These are
+ only available if the library is configured using
+ <code>--enable-xmc-glitch</code>.
+
+ <li>Add <code>NCURSES_NO_HARD_TABS</code> and
+ <code>NCURSES_NO_MAGIC_COOKIE</code> environment variables
+ to allow runtime suppression of the related hard-tabs and
+ xmc-glitch features.
+ </ul>
- <li>implement configure script options that transform installed
- program names, e.g., <code>--program-prefix</code>, including the
- manpage names and cross references.
+ <li>programs:
+ <ul>
+ <li>add new test programs: chgat.c, demo_altkeys.c,
+ echochar.c, foldkeys.c, movewindow.c, redraw.c, (noting
+ that existing test programs also were modified to test
+ additional features).
- <li>option <code>--with-database</code> allows you to specify a
- different terminfo source-file to install. On OS/2 EMX, the
- default is misc/emx.src, otherwise misc/terminfo.src
+ <li>modify tack to test extended capability function-key
+ strings.
- <li>option <code>--with-default-terminfo-dir</code> allows you to
- specify the default terminfo database directory.
+ <li>modify toe to access termcap data, e.g., via <code>cgetent()</code>
+ functions, or as a text file if those are not available.
- <li>option <code>--with-libtool</code> allows you to build with
- <code>libtool</code>. <p> <em>NOTE</em>: <code>libtool</code>
- uses a different notation for numbering shared library versions
- from the existing ncurses configuration.
+ <li>improve infocmp/tic <code>-f</code> option formatting.
- <li>option <code>--with-manpage-tbl</code> causes the manpages to be
- preprocessed by tbl(1) prior to installation,
+ <li>add <code>toe -a</code> option, to show all databases.
+ This uses new private interfaces in the ncurses library for
+ iterating through the list of databases.
- <li>option <code>--without-curses-h</code> causes the installation
- process to install curses.h as ncurses.h and make appropriate
- changes to headers and manpages.
+ <li>modify <code>MKfallback.sh</code> to use
+ <code>tic&nbsp;-x</code> when constructing fallback tables to
+ allow extended capabilities to be retrieved from a fallback entry.
</ul>
- <li>modified configure script options:
+ <li>terminal database
<ul>
- <li>change symbol used by the <code>--install-prefix</code> configure
- option from <code>INSTALL_PREFIX</code> to <code>DESTDIR</code>
- (the latter has become common usage although the name is
- misleading).
-
- <li>modify <code>ld -rpath</code> options (e.g., Linux, and Solaris)
- to use an absolute pathname for the build tree's lib directory,
- avoiding confusion with directories relative to the current one
- with the installed programs.
-
- <li>modified <code>misc/run_tic.in</code> to use
- <code>tic&nbsp;-o</code>, to eliminate dependency on
- <code>$TERMINFO</code> variable for installs.
+ <li>add terminfo entries for xfce terminal (xfce) and multi gnome terminal (mgt)
+ <li>add nsterm-16color entry
+ <li>updated mlterm terminfo entry
+ <li>add kon, kon2 and jfbterm terminfo entry
+ <li>remove invis capability from klone+sgr, mainly used by linux entry, since it does not really do this
+ <li>add ka2, kb1, kb3, kc2 to vt220-keypad as an extension
+ <li>add shifted up/down arrow codes to xterm-new as kind/kri strings
+ <li>add hpterm-color terminfo entry
+ <li>add 256color variants of terminfo entries for programs which are reported to implement this feature
+ <li>correct order of use-clauses in rxvt-basic entry which made codes for f1-f4 vt100-style rather than vt220-style.
</ul>
+</ul>
+Major bug fixes:
+<ul>
+ <li>correct a typo in configure <code>--with-bool</code> option for the
+ case where <code>--without-cxx</code> is used.
- <li>terminfo database:
- <ul>
- <li>updated xterm terminfo entries to match XFree86 xterm patch #146.
+ <li>move assignment from environment variable <code>ESCDELAY</code>
+ from <code>initscr()</code> down to <code>newterm()</code> so the
+ environment variable affects timeouts for terminals opened with
+ newterm() as well.
- <li>added amiga-vnc,
- Matrix Orbital, and
- QNX qansi to misc/terminfo.src.
+ <li>modify <code>werase</code> to clear multicolumn characters that
+ extend into a derived window.
- <li>added os2 entry to misc/emx.src.
+ <li>modify <code>wchgat()</code> to mark updated cells as changed so a
+ refresh will repaint those cells.
- <li>add S0 and E0 extensions to <code>screen</code>'s terminfo entry
- since otherwise the FreeBSD port makes it pass termcap equivalents
- to <code>tgoto</code>, which would be misinterpreted by older
- versions of ncurses.
- </ul>
+ <li>correct logic in <code>wadd_wch()</code> and
+ <code>wecho_wch()</code>, which did not guard against passing the
+ multi-column attribute into a call on <code>waddch()</code>, e.g.,
+ using data returned by <code>win_wch()</code>
- <li>improvements to program usability:
- <ul>
- <li>modify programs to use <code>curses_version()</code> string to
- report the version of ncurses with which they are compiled rather
- than the NCURSES_VERSION string. The function returns the patch
- level in addition to the major and minor version numbers.
+ <li>fix redrawing of windows other than <code>stdscr</code> using
+ <code>wredrawln()</code> by touching the corresponding rows in
+ <code>curscr</code>.
- <li>modify <code>tput</code> program so it can be renamed or invoked via a link as
- 'reset' or 'init', producing the same effect as <code>tput&nbsp;reset</code> or <code>tput&nbsp;init</code>.
+ <li>reduce memory leaks in repeated calls to <code>tgetent()</code> by
+ remembering the last <code>TERMINAL*</code> value allocated to hold
+ the corresponding data and freeing that if the
+ <code>tgetent()</code> result buffer is the same as the previous
+ call.
- <li>add error checking to infocmp's -v and -m options to ensure that
- the option value is indeed a number.
- </ul>
+ <li>modify <code>read_termtype()</code> so the <code>term_names</code>
+ data is always allocated as part of the <code>str_table</code>, a
+ better fix for a memory leak.
- <li>improved performance:
- <ul>
- <li>replace a lookup table in lib_vidattr.c used to decode
- <code>no_color_video</code> with a logic expression which is faster.
- </ul>
+ <li>fix <code>wins_nwstr(),</code> which did not handle single-column
+ non-8bit codes.
+
+ <li>modify <code>wbkgrnd()</code> to avoid clearing the
+ <code>A_CHARTEXT</code> attribute bits since those record the state
+ of multicolumn characters.
+
+ <li>improve <code>SIGWINCH</code> handling by postponing its effect
+ during <code>newterm()</code>, etc., when allocating screens.
+
+ <li>remove 970913 feature for copying subwindows as they are moved in
+ <code>mvwin()</code>.
+ <li>add checks in <code>waddchnstr()</code> and
+ <code>wadd_wchnstr()</code> to stop copying when a null character
+ is found.
+
+ <li>add some checks to ensure current position is within scrolling
+ region before scrolling on a new line.
+
+ <li>add a workaround to ACS mapping to allow applications such as
+ test/blue.c to use the "PC ROM" characters by masking them with
+ A_ALTCHARSET. This worked up til 5.5, but was lost in the revision
+ of legacy coding.
</ul>
-Major bug fixes:
+
+Portability:
<ul>
- <li>correct <code>manlinks.sed</code> script introduced in ncurses 5.1
- to avoid using ERE "\+", which is not understood by standard versions
- of <code>sed</code>. This happens to work with GNU <code>sed</code>,
- but is not portable, and was the initial motivation for this release.
-
- <li>remove "hpux10.*" case from CF_SHARED_OPTS configure script macro.
- This differed from the "hpux*" case by using reversed symbolic
- links, which made the 5.1 version not match the configuration of
- 5.0 shared libraries.
-
- <li>guard against corrupt terminfo data:
- <ul>
- <li>modify <code>tparm()</code> to disallow arithmetic on strings,
- analyze the varargs list to read strings as strings and numbers as
- numbers.
-
- <li>modify <code>tparm()</code>'s internal function
- <code>spop()</code> to treat a null pointer as an empty string.
-
- <li>modify <code>parse_format()</code> in lib_tparm.c to ignore
- precision if it is longer than 10000.
-
- <li>rewrote limit checks in lib_mvcur.c using new functions
- <code>_nc_safe_strcat()</code>, etc. Made other related changes to
- check lengths used for <code>strcat()</code> and
- <code>strcpy()</code>.
- </ul>
-
- <li>corrections to screen optimization:
- <ul>
- <li>added special case in lib_vidattr.c to reset underline and
- standout for devices that have no sgr0 defined.
-
- <li>change handling of <code>non_dest_scroll_region</code> in
- tty_update.c to clear text after it is shifted in rather than before
- shifting out. Also correct row computation.
-
- <li>modify <code>rs2</code> capability in xterm-r6 and similar entries
- where cursor save/restore bracketed the sequence for resetting video
- attributes. The cursor restore would undo that.
- </ul>
-
- <li>UTF-8 support:
- <ul>
- <li>when checking LC_ALL, LC_CTYPE, and LANG environment variables
- for UTF-8 locale, ignore those which are set to an empty value, as
- per SUSV2.
+ <li>configure script:
+ <ul>
+ <li>new options:
+ <dl>
- <li>encode 0xFFFD in UTF-8 with 3 bytes, not 2.
+ <dt>--with-hashed-db
+ <dd>Use Berkeley hashed database for storing terminfo data rather than storing
+ each compiled entry in a separate binary file within a directory
+ tree.
- <li>modify <code>_nc_utf8_outch()</code> to avoid sign-extension when
- checking for out-of-range value.
- </ul>
+ <dt>--without-dlsym
+ <dd>Do not use <code>dlsym()</code> to load GPM dynamically.
- <li>other library fixes:
- <ul>
- <li>added checks for an empty <code>$HOME</code> environment
- variable, to avoid retrieving terminfo descriptions from
- <code>./.terminfo</code> .
+ <dt>--with-valgrind
+ <dd>Simplify building for testing with valgrind.
- <li>change functions <code>_nc_parse_entry()</code> and
- <code>postprocess_termcap()</code> to avoid using
- <code>strtok()</code>, because it is non-reentrant.
+ <dt>--enable-wgetch-events
+ <dd>Compile with experimental wgetch-events code.
- <li>initialize <code>fds[]</code> array to 0's in
- <code>_nc_timed_wait()</code>; apparently <code>poll()</code> only
- sets the <code>revents</code> members of that array when there is
- activity corresponding to the related file.
+ <dt>--enable-signed-char
+ <dd>Store booleans in "signed char" rather than "char".
- <li>add a check for null pointer in <code>Make_Enum_Type()</code>.
+ </dl>
- <li>fix a heap problem with the c++ binding.
+ <li>improved options:
+ <dl>
- <li>correct missing includes for &lt;string.h&gt; in several places,
- including the C++ binding. This is not noted by gcc unless we use
- the <code>-fno-builtin</code> option.
- </ul>
+ <dt>--disable-largefile
+ <dd>make the option work both ways.
- <li>several fixes for tic:
- <ul>
- <li>add a check for empty buffers returned by <code>fgets()</code> in
- comp_scan.c <code>next_char()</code> function, in case
- <code>tic</code> is run on a non-text file (fixes a core dump).
-
- <li>modify <code>tic</code> to verify that its inputs are really files,
- in case someone tries to read a directory (or
- <code>/dev/zero</code>).
-
- <li>correct an uninitialized parameter to <code>open_tempfile()</code>
- in tic.c which made "tic -I" give an ambiguous error message about
- <code>tmpnam</code>.
-
- <li>correct logic in <code>adjust_cancels()</code>, which did not check
- both alternatives when reclassifying an extended name between
- boolean, number and string, causing an infinite loop in
- <code>tic</code>.
- </ul>
-
- <li>using new checks in <code>tic</code> for parameter counts in
- capability strings, found/fixed several errors both in the
- terminfo database and in the include/Caps file.
- <ul>
- <li>modified several terminfo capability strings, including the
- definitions for setaf, setab, in include/Caps to indicate that the
- entries are parameterized. This information is used to tell which
- strings are translated when converting to termcap. This fixes a
- problem where the generated termcap would contain a spurious "%p1"
- for the terminfo "%p1%d".
-
- <li>correct parameter counts in include/Caps for dclk as well as some
- printer-specific capabilities: csnm, defc, scs, scsd, smgtp, smglp.
- </ul>
-
- <li>various fixes for install scripts used to support configure
- <code>--srcdir</code> and <code>--with-install-prefix</code>.
-
- <li>correct several mismatches between manpage filename and ".TH"
- directives, renaming dft_fgbg.3x to default_colors.3x and
- menu_attribs.3x to menu_attributes.3x.
-</ul>
+ <dt>--with-gpm
+ <dd>The option now accepts a parameter,
+ i.e., the name of the dynamic GPM library to load via
+ <code>dlopen()</code>
-Portability:
-<ul>
- <li>configure script:
- <ul>
- <li>newer config.guess, config.sub, including changes to support OS/2
- EMX. The configure script for OS/2 EMX still relies on a patch
- since there is no (working) support for that platform in the main
- autoconf distribution.
+ <dt>--disable-symlinks
+ <dd>The option now allows one to
+ disable <code>symlink()</code> in <code>tic</code> even when
+ <code>link()</code> does not work.
+
+ </dl>
+
+ </ul>
+
+ <li>other configure/build issues: <ul> <li>remove special case for
+ Darwin in <code>CF_XOPEN_SOURCE</code> configure macro.
- <li>make configure script checks on variables <code>$GCC</code> and
- <code>$GXX</code> consistently compare against 'yes' rather than
- test if they are nonnull, since either may be set to the
- corresponding name of the C or C++ compiler.
+ <li>add configure check to ensure that <code>SIGWINCH</code> is
+ defined on platforms such as OS X which exclude that when
+ <code>_XOPEN_SOURCE,</code> etc., are defined
- <li>change configure script to use AC_CANONICAL_SYSTEM rather than
- AC_CANONICAL_HOST, which means that <code>configure --target</code>
- will set a default program-prefix.
+ <li>use ld's <code>-search_paths_first</code> option on Darwin
+ to work around odd search rules on that platform.
- <li>modify the check for big-core to force a couple of memory
- accesses, which may work as needed for older/less-capable machines
- (if not, there's still the explicit configure option).
+ <li>improve ifdef's for <code>_POSIX_VDISABLE</code> in tset to
+ work with Mac OS X.
- <li>modify configure test for <code>tcgetattr()</code> to allow for
- old implementations, e.g., on BeOS, which only defined it as a
- macro.
+ <li>modify configure script to ensure that if the C compiler is
+ used rather than the loader in making shared libraries, the
+ <code>$(CFLAGS)</code> variable is also used.
- <li>add configure check for filesystems (such as OS/2 EMX) which do
- not distinguish between upper/lowercase filenames, use this to fix
- tags rules in makefiles.
+ <li>use <code>${CC}</code> rather than <code>${LD}</code> in
+ shared library rules for IRIX64, Solaris to help ensure
+ that initialization sections are provided for extra linkage
+ requirements, e.g., of C++ applications.
- <li>add MKncurses_def.sh to generate fallback definitions for
- ncurses_cfg.h, to quiet gcc -Wundef warnings, modified ifdef's in
- code to consistently use "#if" rather than "#ifdef".
+ <li>improve some shared-library configure scripting for Linux,
+ FreeBSD and NetBSD to make
+ <code>--with-shlib-version</code> work.
- <li>change most remaining unquoted parameters of <code>test</code> in
- configure script to use quotes, for instance fixing a problem in the
- <code>--disable-database</code> option.
+ <li>split up dependency of <code>names.c</code> and
+ <code>codes.c</code> in <code>ncurses/Makefile</code> to
+ work with parallel make.
- <li>modify scripts so that "make install.data" works on OS/2 EMX.
+ <li>modify <code>MKlib_gen.sh</code> to change
+ preprocessor-expanded <code>_Bool</code> back to <code>bool</code>.
- <li>modify scripts and makefiles so the Ada95 directory builds on
- OS/2 EMX.
+ <li>modify <code>progs/Makefile.in</code> to make
+ <code>tput&nbsp;init</code> work properly with cygwin,
+ i.e., do not pass a <code>.exe</code> in the reference
+ string used in check_aliases.
</ul>
<li>library:
<ul>
- <li>replaced case-statement in <code>_nc_tracebits()</code> for CSIZE
- with a table to simplify working around implementations that define
- random combinations of the related macros to zero.
+ <li>ignore wide-acs line-drawing characters that
+ <code>wcwidth()</code> claims are not one-column. This is
+ a workaround for Solaris' broken locale support.
- <li>improved OS/2 mouse support by retrying as a 2-button mouse if code
- fails to set up a 3-button mouse.
+ <li>reduce name-pollution in <code>term.h</code> by removing
+ <code>#define</code>'s for HAVE_xxx symbols.
- <li>added private entrypoint <code>_nc_basename()</code>, used to
- consolidate related code in progs, as well as accommodating OS/2 EMX
- pathnames.
+ <li>fix <code>#ifdef</code> in <code>c++/internal.h</code> for
+ QNX 6.1
+ </ul>
- <li>alter definition of NCURSES_CONST to make it non-empty.
+ <li>test programs: <ul> <li>modify <code>test/configure</code> script
+ to allow building test programs with PDCurses/X11.
- <li>redefine 'TEXT' in menu.h for AMIGA, since it is reported to have
- an (unspecified) symbol conflict.
- </ul>
+ <li>modified test programs to allow some to work with NetBSD
+ curses. Several do not because NetBSD curses implements a
+ subset of X/Open curses, and also lacks much of SVr4
+ additions. But it is enough for comparison.
- <li>programs:
- <ul>
- <li>modified progs/tset.c and tack/sysdep.c to build with sgttyb
- interface if neither termio or termios is available. Tested this
- with FreeBSD 2.1.5 (which does have termios - but the sgttyb does
- work).
- </ul>
+ <li>improved <code>test/configure</code> to build test/ncurses
+ on HPUX 11 using the vendor curses.
+ <li>change configure script to produce
+ <code>test/Makefile</code> from data file.
+ </ul>
</ul>
<H1>Features of Ncurses</H1>
@@ -387,14 +390,15 @@ 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,
-but not all EXTENDED features). Most EXTENDED-level features not directly
-concerned with wide-character support are implemented, including many
-function calls not supported under SVr4 curses (but portability of all
+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>Unlike SVr3 curses, ncurses can write to the rightmost-bottommost corner
of the screen if your terminal has an insert-character capability.
<LI>Ada95 and C++ bindings.
-<LI>Support for mouse event reporting with X Window xterm and OS/2 console windows.
+<LI>Support for mouse event reporting with X Window xterm
+and FreeBSD and OS/2 console windows.
<LI>Extended mouse support via Alessandro Rubini's gpm package.
<LI>The function <CODE>wresize()</CODE> allows you to resize windows, preserving
their data.
@@ -406,7 +410,7 @@ 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>Support for 16-color terminals, such as aixterm and XFree86 xterm.
+<LI>Support for 16-color terminals, such as aixterm and modern xterm.
<LI>Better cursor-movement optimization. The package now features a
cursor-local-movement computation more efficient than either BSD's
or System V's.
@@ -474,61 +478,61 @@ including (versions starting with those noted):
<DT> cdk
<DD> Curses Development Kit
<br>
-<A HREF="http://www.vexus.ca/CDK.html">http://www.vexus.ca/CDK.html</a>
+<A HREF="http://invisible-island.net/cdk/">http://invisible-island.net/cdk/</A>
<br>
-<A HREF="http://dickey.his.com/cdk/cdk.html">http://dickey.his.com/cdk</A>.
+<A HREF="http://www.vexus.ca/products/CDK/">http://www.vexus.ca/products/CDK/</a>
<DT> ded
<DD> directory-editor
<br>
-<A HREF="http://dickey.his.com/ded/ded.html">http://dickey.his.com/ded</A>.
+<A HREF="http://invisible-island.net/ded/">http://invisible-island.net/ded/</A>
<DT> dialog
<DD> the underlying application used in Slackware's setup, and the basis
for similar applications on GNU/Linux.
<br>
-<A HREF="http://dickey.his.com/dialog/dialog.html">http://dickey.his.com/dialog</A>.
+<A HREF="http://invisible-island.net/dialog/">http://invisible-island.net/dialog/</A>
<DT> lynx
<DD> the character-screen WWW browser
<br>
-<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release</A>.
-<DT> Midnight Commander 4.1
+<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release/</A>
+<DT> Midnight Commander
<DD> file manager
<br>
-<A HREF="www.gnome.org/mc/">www.gnome.org/mc/</A>.
+<A HREF="http://www.ibiblio.org/mc/">http://www.ibiblio.org/mc/</A>
<DT> mutt
<DD> mail utility
<br>
-<A HREF="http://www.mutt.org">http://www.mutt.org</A>.
+<A HREF="http://www.mutt.org/">http://www.mutt.org/</A>
<DT> ncftp
<DD> file-transfer utility
<br>
-<A HREF="http://www.ncftp.com">http://www.ncftp.com</A>.
+<A HREF="http://www.ncftp.com/">http://www.ncftp.com/</A>
<DT> nvi
<DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
<br>
-<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>.
+<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>
+<br>
+<DT> pinfo
+<DD> Lynx-like info browser.
+<A HREF="http://dione.ids.pl/~pborys/software/pinfo/">http://dione.ids.pl/~pborys/software/pinfo/</A>
<DT> tin
<DD> newsreader, supporting color, MIME
-<br>
-<A HREF="http://www.tin.org">http://www.tin.org</A>.
-<DT> taper
-<DD> tape archive utility
-<br>
-<A HREF="http://members.iinet.net.au/~yusuf/taper/">http://members.iinet.net.au/~yusuf/taper/</A>.
+<A HREF="http://www.tin.org/">http://www.tin.org/</A>
<DT> vh-1.6
<DD> Volks-Hypertext browser for the Jargon File
<br>
-<A HREF="http://www.bg.debian.org/Packages/unstable/text/vh.html">http://www.bg.debian.org/Packages/unstable/text/vh.html</A>.
+<A HREF="http://www.debian.org/Packages/unstable/text/vh.html">http://www.debian.org/Packages/unstable/text/vh.html</A>
</DL>
as well as some that use ncurses for the terminfo support alone:
<DL>
<DT> minicom
<DD> terminal emulator
<br>
-<A HREF="http://www.pp.clinet.fi/~walker/minicom.html">http://www.pp.clinet.fi/~walker/minicom.html</A>.
+<A HREF="http://alioth.debian.org/projects/minicom/">
+http://alioth.debian.org/projects/minicom/</A>
<DT> vile
<DD> vi-like-emacs
<br>
-<A HREF="http://dickey.his.com/vile/vile.html">http://dickey.his.com/vile</A>.
+<A HREF="http://invisible-island.net/vile/">http://invisible-island.net/vile/</A>
</DL>
<P>
@@ -537,16 +541,16 @@ a few games).
<H2>Who's Who and What's What</H2>
-The original developers of ncurses are <A
-HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A> and
-<A HREF="http://www.ccil.org/~esr/home.html">Eric S. Raymond</A>.
+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@herndon4.his.com">Thomas Dickey</A>
-and
-<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
-<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
-acts as the maintainer for the Free Software Foundation, which holds the
-copyright on ncurses.
+<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>
@@ -561,7 +565,7 @@ This list is open to anyone interested in helping with the development and
testing of this package.<P>
Beta versions of ncurses and patches to the current release are made available at
-<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
+<A HREF="ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</A>&nbsp;.
<H2>Future Plans</H2>
<UL>
@@ -573,14 +577,17 @@ on them, please join the ncurses list.
<H2>Other Related Resources</H2>
-The distribution includes and uses a version of the terminfo-format
-terminal description file maintained by Eric Raymond.
-<A HREF="http://earthspace.net/~esr/terminfo">http://earthspace.net/~esr/terminfo</A>.<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>
You can find lots of information on terminal-related topics
not covered in the terminfo file at
<A HREF="http://www.cs.utk.edu/~shuford/terminal_index.html">Richard Shuford's
-archive</A>.
+archive</A>&nbsp;.
</BODY>
</HTML>
<!--
diff --git a/contrib/ncurses/doc/html/hackguide.html b/contrib/ncurses/doc/html/hackguide.html
index ce033a1cdb5b..97d1369170c1 100644
--- a/contrib/ncurses/doc/html/hackguide.html
+++ b/contrib/ncurses/doc/html/hackguide.html
@@ -1,11 +1,39 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<!--
- $Id: hackguide.html,v 1.25 2000/03/25 18:45:21 tom Exp $
+ $Id: hackguide.html,v 1.27 2005/12/24 15:37:13 tom Exp $
+ ****************************************************************************
+ * Copyright (c) 1998-2003,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 *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************
-->
<HTML>
<HEAD>
<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">
<!--
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
@@ -286,10 +314,6 @@ header comments of <CODE>hardscroll.c</CODE> and <CODE>hashmap.c</CODE>; then tr
it out. You can also test the hardware-scrolling optimization separately
with <CODE>hardscroll</CODE>. <P>
-There's one other interactive tester, <CODE>tctest</CODE>, that exercises
-translation between termcap and terminfo formats. If you have a serious
-need to run this, you probably belong on our development team!
-
<H1><A NAME="ncurslib">A Tour of the Ncurses Library</A></H1>
<H2><A NAME="loverview">Library Overview</A></H2>
@@ -377,7 +401,7 @@ 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 reasoon.<P>
+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
@@ -558,7 +582,7 @@ 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 posible. <P>
+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
diff --git a/contrib/ncurses/doc/html/ncurses-intro.html b/contrib/ncurses/doc/html/ncurses-intro.html
index bdc5fa0fd09f..e62ead7ac07a 100644
--- a/contrib/ncurses/doc/html/ncurses-intro.html
+++ b/contrib/ncurses/doc/html/ncurses-intro.html
@@ -1,11 +1,39 @@
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<!--
- $Id: ncurses-intro.html,v 1.35 2001/09/02 00:23:11 tom Exp $
+ $Id: ncurses-intro.html,v 1.41 2005/12/24 15:47:05 tom Exp $
+ ****************************************************************************
+ * Copyright (c) 1998-2004,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 *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************
-->
<HTML>
<HEAD>
<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>
@@ -221,16 +249,11 @@ maintainer of this package is
&lt;esr@snark.thyrsus.com&gt;
wrote many of the new features in versions after 1.8.1
and wrote most of this introduction.
-<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>
+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@herndon4.his.com">Thomas Dickey</A>
-and
-<A HREF="mailto:juergen.pfeifer@gmx.net">J&uuml;rgen Pfeifer</A>.
-<A HREF="mailto:florian@gnu.org">Florian La Roche</A>
-acts as the maintainer for the Free Software Foundation, which holds the
-copyright on ncurses.
+<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>
@@ -613,6 +636,7 @@ Presently, mouse event reporting works in the following environments:
<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>
@@ -690,7 +714,7 @@ 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>ripofflines()</CODE>, <CODE>use_env()</CODE>, and, if you are using multiple
+<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
@@ -732,7 +756,7 @@ 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
+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>
@@ -982,7 +1006,7 @@ on and refresh them, the changes made to the overlapping region under historic
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 to 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
@@ -1020,7 +1044,7 @@ 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>wnoutrfresh()</CODE> calls for whatever panel
+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.
@@ -1222,10 +1246,10 @@ The general flow of control of a menu program looks like this:
<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>menu_post()</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>menu_unpost()</CODE>.
+<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>.
@@ -1308,8 +1332,8 @@ refreshed or erased at post/unpost time. The inner window or
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>menu_post()</CODE>, you write the menu to its
-subwindow. When you call <CODE>menu_unpost()</CODE>, you erase the
+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.
@@ -1441,10 +1465,10 @@ The general flow of control of a form program looks like this:
<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>form_post()</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>form_unpost()</CODE>.
+<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>.
@@ -1480,7 +1504,7 @@ 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_window()</CODE> call. <P>
+<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
@@ -2519,13 +2543,13 @@ By default, all options are on. Here are the available option bits:
<DL>
<DT> O_NL_OVERLOAD
<DD> Enable overloading of <CODE>REQ_NEW_LINE</CODE> as described in <A
-NAME="fedit">Editing Requests</A>. The value of this option is
+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 NAME="fedit">Editing Requests</A>.
+<A href="#fedit">Editing Requests</A>.
</DL>
The option values are bit-masks and can be composed with logical-or in
diff --git a/contrib/ncurses/doc/ncurses-intro.doc b/contrib/ncurses/doc/ncurses-intro.doc
index 669b0b391705..3e607e658401 100644
--- a/contrib/ncurses/doc/ncurses-intro.doc
+++ b/contrib/ncurses/doc/ncurses-intro.doc
@@ -1,11 +1,10 @@
-
Writing Programs with NCURSES
-
+
by Eric S. Raymond and Zeyd M. Ben-Halim
updates since release 1.9.9e by Thomas Dickey
-
+
Contents
-
+
* Introduction
+ A Brief History of Curses
+ Scope of This Document
@@ -96,192 +95,190 @@
o Order Functions For Custom Types
o Avoiding Problems
_________________________________________________________________
-
+
Introduction
-
+
This document is an introduction to programming with curses. It is not
- an exhaustive reference for the curses Application Programming
- Interface (API); that role is filled by the curses manual pages.
- Rather, it is intended to help C programmers ease into using the
+ an exhaustive reference for the curses Application Programming
+ Interface (API); that role is filled by the curses manual pages.
+ Rather, it is intended to help C programmers ease into using the
package.
-
- This document is aimed at C applications programmers not yet
- specifically familiar with ncurses. If you are already an experienced
- curses programmer, you should nevertheless read the sections on Mouse
- Interfacing, Debugging, Compatibility with Older Versions, and Hints,
- Tips, and Tricks. These will bring you up to speed on the special
- features and quirks of the ncurses implementation. If you are not so
+
+ This document is aimed at C applications programmers not yet
+ specifically familiar with ncurses. If you are already an experienced
+ curses programmer, you should nevertheless read the sections on Mouse
+ Interfacing, Debugging, Compatibility with Older Versions, and Hints,
+ Tips, and Tricks. These will bring you up to speed on the special
+ features and quirks of the ncurses implementation. If you are not so
experienced, keep reading.
-
- The curses 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. Curses uses terminfo, which is a database
- format that can describe the capabilities of thousands of different
+
+ The curses 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. Curses uses terminfo, which is a database
+ format that can describe the capabilities of thousands of different
terminals.
-
- The curses 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 xterm(1); the curses API has
+
+ The curses 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 xterm(1); the curses 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 curses
- will typically be a great deal simpler and less expensive than one
+ (b) simplicity. For an application that does not require bit-mapped
+ graphics and multiple fonts, an interface implementation using curses
+ will typically be a great deal simpler and less expensive than one
using an X toolkit.
-
+
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 game rogue; these used the
+ already-existing termcap database facility 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
+
+ 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.
-
+
Scope of This Document
This document describes ncurses, a free implementation of the System V
- curses API with some clearly marked extensions. It includes the
+ curses API with some clearly marked extensions. It includes the
following System V curses features:
- * Support for multiple screen highlights (BSD curses could only
+ * Support for multiple screen highlights (BSD curses could only
handle one `standout' highlight, usually reverse-video).
* Support for line- and box-drawing using forms characters.
* Recognition of function keys on input.
* Color support.
- * Support for pads (windows of larger than screen size on which the
+ * Support for pads (windows of larger than screen size on which the
screen or a subwindow defines a viewport).
-
- 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
+
+ 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.
-
- The ncurses package can also capture and use event reports from a
+
+ The ncurses 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.
-
- The ncurses package was originated by Pavel Curtis. The original
- maintainer of this package is Zeyd Ben-Halim <zmbenhal@netcom.com>.
+
+ The ncurses package was originated by Pavel Curtis. The original
+ maintainer of this package is Zeyd Ben-Halim <zmbenhal@netcom.com>.
Eric S. Raymond <esr@snark.thyrsus.com> wrote many of the new features
- in versions after 1.8.1 and wrote most of this introduction. Jürgen
- Pfeifer wrote all of the menu and forms code as well as the Ada95
- binding. Ongoing work is being done by Thomas Dickey and Jürgen
- Pfeifer. Florian La Roche acts as the maintainer for the Free Software
- Foundation, which holds the copyright on ncurses. Contact the current
- maintainers at bug-ncurses@gnu.org.
-
- This document also describes the panels 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
+ in versions after 1.8.1 and wrote most of this introduction. Jürgen
+ Pfeifer wrote all of the menu and forms code as well as the Ada95
+ binding. Ongoing work is being done by Thomas Dickey (maintainer).
+ Contact the current maintainers at bug-ncurses@gnu.org.
+
+ This document also describes the panels 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).
-
- Finally, this document describes in detail the menus and forms
- extension libraries, also cloned from System V, which support easy
+
+ Finally, this document describes in detail the menus and forms
+ extension libraries, also cloned from System V, which support easy
construction and sequences of menus and fill-in forms.
-
+
Terminology
- In this document, the following terminology is used with reasonable
+ In this document, the following terminology is used with reasonable
consistency:
-
+
window
- 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
+ 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.
-
+
screens
- 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, stdscr, is
+ 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, stdscr, is
automatically provided for the programmer.
-
+
terminal screen
The package's idea of what the terminal display currently looks
like, i.e., what the user sees now. This is a special screen.
-
+
The Curses Library
-
+
An Overview of Curses
Compiling Programs using Curses
-
+
In order to use the library, it is necessary to have certain types and
variables defined. Therefore, the programmer must have a line:
#include <curses.h>
at the top of the program source. The screen package uses the Standard
- I/O library, so <curses.h> includes <stdio.h>. <curses.h> also
- includes <termios.h>, <termio.h>, or <sgtty.h> depending on your
- system. It is redundant (but harmless) for the programmer to do these
- includes, too. In linking with curses you need to have -lncurses in
- your LDFLAGS or on the command line. There is no need for any other
+ I/O library, so <curses.h> includes <stdio.h>. <curses.h> also
+ includes <termios.h>, <termio.h>, or <sgtty.h> depending on your
+ system. It is redundant (but harmless) for the programmer to do these
+ includes, too. In linking with curses you need to have -lncurses in
+ your LDFLAGS or on the command line. There is no need for any other
libraries.
-
+
Updating the Screen
-
- 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 curscr, for current screen) is a screen image of what
- the terminal currently looks like. Another screen (called stdscr, for
+
+ 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 curscr, for current screen) is a screen image of what
+ the terminal currently looks like. Another screen (called stdscr, for
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
+
+ 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.
-
- To make the section of physical screen corresponding to a window
- reflect the contents of the window structure, the routine refresh()
+
+ To make the section of physical screen corresponding to a window
+ reflect the contents of the window structure, the routine refresh()
(or wrefresh() if the window is not stdscr) is called.
-
- 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
+
+ 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.
-
+
Standard Windows and Function Naming Conventions
-
- As hinted above, the routines can use several windows, but two are
+
+ As hinted above, the routines can use several windows, but two are
automatically given: curscr, which knows what the terminal looks like,
- and stdscr, which is what the programmer wants the terminal to look
- like next. The user should never actually access curscr directly.
- Changes should be made to through the API, and then the routine
+ and stdscr, which is what the programmer wants the terminal to look
+ like next. The user should never actually access curscr directly.
+ Changes should be made to through the API, and then the routine
refresh() (or wrefresh()) called.
-
- Many functions are defined to use stdscr as a default screen. For
- example, to add a character to stdscr, one calls addch() with the
+
+ 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
+ routine waddch() (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
+ applied to specific windows is consistent. The only routines which do
not follow it are those for which a window must always be specified.
-
- In order to move the current (y, x) coordinates from one point to
- 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
+
+ In order to move the current (y, x) coordinates from one point to
+ 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
arguments to the function. For example, the calls
move(y, x);
addch(ch);
@@ -296,44 +293,44 @@ An Overview of Curses
can be replaced by
mvwaddch(win, y, x, ch);
- Note that the window description pointer (win) comes before the added
- (y, x) coordinates. If a function requires a window pointer, it is
+ 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.
-
+
Variables
-
- The curses library sets some variables describing the terminal
+
+ The curses library sets some variables describing the terminal
capabilities.
type name description
------------------------------------------------------------------
int LINES number of lines on the terminal
int COLS number of columns on the terminal
- The curses.h also introduces some #define constants and types of
+ The curses.h also introduces some #define constants and types of
general usefulness:
-
+
bool
boolean type, actually a `char' (e.g., bool doneit;)
-
+
TRUE
boolean `true' flag (1).
-
+
FALSE
boolean `false' flag (0).
-
+
ERR
error flag returned by routines on a failure (-1).
-
+
OK
error flag returned by routines when things go right.
-
+
Using the Library
- Now we describe how to actually use the screen package. In it, we
- assume all updating, reading, etc. is applied to stdscr. These
- instructions will work on any window, providing you change the
+ Now we describe how to actually use the screen package. In it, we
+ assume all updating, reading, etc. is applied to stdscr. These
+ instructions will work on any window, providing you change the
function names and parameters as mentioned above.
-
+
Here is a sample program to motivate the discussion:
#include <curses.h>
#include <signal.h>
@@ -396,397 +393,400 @@ static void finish(int sig)
}
Starting up
-
- In order to use the screen package, the routines must know about
- terminal characteristics, and the space for curscr and stdscr must be
- allocated. These function initscr() 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, initscr()
- will terminate the program with an error message. initscr() 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
- curscr or stdscr 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
+
+ In order to use the screen package, the routines must know about
+ terminal characteristics, and the space for curscr and stdscr must be
+ allocated. These function initscr() 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, initscr()
+ will terminate the program with an error message. initscr() 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
+ curscr or stdscr 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
nl() and cbreak() should be called after initscr().
-
- 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
+
+ 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
cursor to the window's current (y, x) coordinates after updating it.
-
- You can create new windows of your own using the functions newwin(),
+
+ You can create new windows of your own using the functions newwin(),
derwin(), and subwin(). The routine delwin() will allow you to get rid
- of old windows. All the options described above can be applied to any
+ of old windows. All the options described above can be applied to any
window.
-
+
Output
-
- 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
+
+ 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 addch() and move(). addch() adds a character at the current (y, x)
coordinates. move() changes the current (y, x) coordinates to whatever
you want them to be. It returns ERR if you try to move off the window.
- As mentioned above, you can combine the two into mvaddch() to do both
+ As mentioned above, you can combine the two into mvaddch() to do both
things at once.
-
- The other output functions, such as addstr() and printw(), all call
+
+ The other output functions, such as addstr() and printw(), all call
addch() to add characters to the window.
-
- 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 refresh(). In order to optimize finding
- changes, refresh() assumes that any part of the window not changed
- since the last refresh() 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
+
+ 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 refresh(). In order to optimize finding
+ changes, refresh() assumes that any part of the window not changed
+ since the last refresh() 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
touchwin() is provided to make it look like the entire window has been
- changed, thus making refresh() check the whole subsection of the
+ changed, thus making refresh() check the whole subsection of the
terminal for changes.
-
- If you call wrefresh() with curscr as its argument, it will make the
- screen look like curscr thinks it looks like. This is useful for
- implementing a command which would redraw the screen in case it get
+
+ If you call wrefresh() with curscr as its argument, it will make the
+ screen look like curscr thinks it looks like. This is useful for
+ implementing a command which would redraw the screen in case it get
messed up.
-
+
Input
-
- The complementary function to addch() is getch() which, if echo is
+
+ The complementary function to addch() is getch() which, if echo is
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,
+ 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
program's output will be unpredictable.
-
+
When you need to accept line-oriented input in a window, the functions
wgetstr() and friends are available. There is even a wscanw() function
- that can do scanf()(3)-style multi-field parsing on window input.
- These pseudo-line-oriented functions turn on echoing while they
+ that can do scanf()(3)-style multi-field parsing on window input.
+ These pseudo-line-oriented functions turn on echoing while they
execute.
-
- The example code above uses the call keypad(stdscr, TRUE) to enable
- support for function-key mapping. With this feature, the getch() code
- watches the input stream for character sequences that correspond to
- arrow and function keys. These sequences are returned as
+
+ The example code above uses the call keypad(stdscr, TRUE) to enable
+ support for function-key mapping. With this feature, the getch() code
+ watches the input stream for character sequences that correspond to
+ arrow and function keys. These sequences are returned as
pseudo-character values. The #define values returned are listed in the
curses.h The mapping from sequences to #define values is determined by
key_ capabilities in the terminal's terminfo entry.
-
+
Using Forms Characters
-
- The addch() function (and some others, including box() and border())
+
+ The addch() function (and some others, including box() and border())
can accept some pseudo-character arguments which are specially defined
- by ncurses. These are #define values set up in the curses.h header;
+ by ncurses. These are #define values set up in the curses.h header;
see there for a complete list (look for the prefix ACS_).
-
- 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, curses.h will map them to
+
+ 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, curses.h will map them to
a recognizable (though ugly) set of ASCII defaults.
-
+
Character Attributes and Color
-
- The ncurses package supports screen highlights including standout,
- reverse-video, underline, and blink. It also supports color, which is
+
+ The ncurses package supports screen highlights including standout,
+ reverse-video, underline, and blink. It also supports color, which is
treated as another kind of highlight.
-
- Highlights are encoded, internally, as high bits of the
- pseudo-character type (chtype) that curses.h uses to represent the
+
+ Highlights are encoded, internally, as high bits of the
+ pseudo-character type (chtype) that curses.h uses to represent the
contents of a screen cell. See the curses.h header file for a complete
list of highlight mask values (look for the prefix A_).
-
- 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 addch()
+
+ 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 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
- with any highlight you specify the first way. You do this with the
+ 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
- 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
+ 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 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
- combination. Note that COLOR_PAIR(N), for constant N, is itself a
+ 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.
-
+
Mouse Interfacing
-
+
The ncurses library also provides a mouse interface.
-
- NOTE: this facility is specific to ncurses, it is not part of
- either the XSI Curses standard, nor of System V Release 4, nor BSD
- curses. System V Release 4 curses contains code with similar
- interface definitions, however it is not documented. Other than by
- disassembling the library, we have no way to determine exactly how
- that mouse code works. Thus, we recommend that you wrap
- mouse-related code in an #ifdef using the feature macro
- NCURSES_MOUSE_VERSION so it will not be compiled and linked on
+
+ NOTE: this facility is specific to ncurses, it is not part of
+ either the XSI Curses standard, nor of System V Release 4, nor BSD
+ curses. System V Release 4 curses contains code with similar
+ interface definitions, however it is not documented. Other than by
+ disassembling the library, we have no way to determine exactly how
+ that mouse code works. Thus, we recommend that you wrap
+ mouse-related code in an #ifdef using the feature macro
+ NCURSES_MOUSE_VERSION so it will not be compiled and linked on
non-ncurses systems.
-
+
Presently, mouse event reporting works in the following environments:
* xterm and similar programs such as rxvt.
- * Linux console, when configured with gpm(1), Alessandro Rubini's
+ * Linux console, when configured with gpm(1), Alessandro Rubini's
mouse server.
+ * FreeBSD sysmouse (console)
* OS/2 EMX
-
- The mouse interface is very simple. To activate it, you use the
- function mousemask(), passing it as first argument a bit-mask that
- specifies what kinds of events you want your program to be able to
- see. It will return the bit-mask of events that actually become
+
+ The mouse interface is very simple. To activate it, you use the
+ function mousemask(), passing it as first argument a bit-mask that
+ specifies what kinds of events you want your program to be able to
+ 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.
-
+
Once the mouse is active, your application's command loop should watch
- for a return value of KEY_MOUSE from wgetch(). When you see this, a
- mouse event report has been queued. To pick it off the queue, use the
- function getmouse() (you must do this before the next wgetch(),
- otherwise another mouse event might come in and make the first one
+ for a return value of KEY_MOUSE from wgetch(). When you see this, a
+ mouse event report has been queued. To pick it off the queue, use the
+ function getmouse() (you must do this before the next wgetch(),
+ 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,
+ 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
- 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
+
+ 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.
-
- 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
- will be reported as press-release pairs. In some environments, the
- event mask may include bits reporting the state of shift, alt, and
+
+ 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
+ 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.
-
- 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
+
+ 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.
-
- Because mouse event reporting will not be available in all
- environments, it would be unwise to build ncurses applications that
- require 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 ncurses
- distribution (bs and knight) contain code that illustrates how this
+
+ Because mouse event reporting will not be available in all
+ environments, it would be unwise to build ncurses applications that
+ require 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 ncurses
+ distribution (bs and knight) contain code that illustrates how this
can be done.
-
- See the manual page curs_mouse(3X) for full details of the
+
+ See the manual page curs_mouse(3X) for full details of the
mouse-interface functions.
-
+
Finishing Up
-
- In order to clean up after the ncurses routines, the routine endwin()
- is provided. It restores tty modes to what they were when initscr()
- was first called, and moves the cursor down to the lower-left corner.
- Thus, anytime after the call to initscr, endwin() should be called
+
+ In order to clean up after the ncurses routines, the routine endwin()
+ is provided. It restores tty modes to what they were when initscr()
+ was first called, and moves the cursor down to the lower-left corner.
+ Thus, anytime after the call to initscr, endwin() should be called
before exiting.
-
+
Function Descriptions
- We describe the detailed behavior of some important curses functions
+ We describe the detailed behavior of some important curses functions
here, as a supplement to the manual page descriptions.
-
+
Initialization and Wrapup
-
+
initscr()
- The first function called should almost always be initscr().
- This will determine the terminal type and initialize curses
+ The first function called should almost always be initscr().
+ This will determine the terminal type and initialize curses
data structures. initscr() also arranges that the first call to
- refresh() 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 (slk_init(), filter(), ripofflines(), use_env(),
+ refresh() 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 (slk_init(), filter(), ripoffline(), use_env(),
and, if you are using multiple terminals, newterm().)
-
+
endwin()
- Your program should always call endwin() 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
- refresh() or doupdate() after a temporary escape from the
+ Your program should always call endwin() 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
+ refresh() or doupdate() after a temporary escape from the
program will restore the ncurses screen from before the escape.
-
+
newterm(type, ofp, ifp)
- A program which outputs to more than one terminal should use
+ A program which outputs to more than one terminal should use
newterm() instead of initscr(). newterm() should be called once
for each terminal. It returns a variable of type SCREEN * which
- should be saved as a reference to that terminal. The arguments
- are the type of the terminal (a string) and FILE pointers for
- the output and input of the terminal. If type is NULL then the
- environment variable $TERM is used. endwin() should called once
- at wrapup time for each terminal opened using this function.
-
+ should be saved as a reference to that terminal. (NOTE: a
+ SCREEN variable is not a screen 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 FILE pointers for the output and
+ input of the terminal. If type is NULL then the environment
+ variable $TERM is used. endwin() should called once at wrapup
+ time for each terminal opened using this function.
+
set_term(new)
- This function is used to switch to a different terminal
- previously opened by newterm(). 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
+ This function is used to switch to a different terminal
+ previously opened by newterm(). 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.
-
+
delscreen(sp)
- The inverse of newterm(); deallocates the data structures
+ The inverse of newterm(); deallocates the data structures
associated with a given SCREEN reference.
-
+
Causing Output to the Terminal
-
+
refresh() and wrefresh(win)
- These functions must be called to actually get any output on
- the terminal, as other routines merely manipulate data
- structures. wrefresh() copies the named window to the physical
- terminal screen, taking into account what is already there in
- order to do optimizations. refresh() does a refresh of
- stdscr(). Unless leaveok() has been enabled, the physical
- cursor of the terminal is left at the location of the window's
- cursor.
-
+ These functions must be called to actually get any output on
+ the terminal, as other routines merely manipulate data
+ structures. wrefresh() copies the named window to the physical
+ terminal screen, taking into account what is already there in
+ order to do optimizations. refresh() does a refresh of stdscr.
+ Unless leaveok() has been enabled, the physical cursor of the
+ terminal is left at the location of the window's cursor.
+
doupdate() and wnoutrefresh(win)
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
+ 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
+ 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 (wnoutrefresh()), and then calling the
- routine to update the screen (doupdate()). If the programmer
- wishes to output several windows at once, a series of calls to
+ to the virtual screen (wnoutrefresh()), and then calling the
+ routine to update the screen (doupdate()). If the programmer
+ wishes to output several windows at once, a series of calls to
wrefresh will result in alternating calls to wnoutrefresh() and
- doupdate(), causing several bursts of output to the screen. By
- calling wnoutrefresh() for each window, it is then possible to
- call doupdate() once, resulting in only one burst of output,
- with fewer total characters transmitted (this also avoids a
+ doupdate(), causing several bursts of output to the screen. By
+ calling wnoutrefresh() for each window, it is then possible to
+ call doupdate() once, resulting in only one burst of output,
+ with fewer total characters transmitted (this also avoids a
visually annoying flicker at each update).
-
+
Low-Level Capability Access
-
+
setupterm(term, filenum, errret)
- This routine is called to initialize a terminal's description,
+ This routine is called to initialize a terminal's description,
without setting up the curses screen structures or changing the
tty-driver mode bits. term is the character string representing
- the name of the terminal being used. filenum is the UNIX file
- descriptor of the terminal to be used for output. errret is a
+ the name of the terminal being used. filenum is the UNIX file
+ descriptor of the terminal to be used for output. errret 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
+ is returned. The values returned can be 1 (all is well), 0 (no
+ such terminal), or -1 (some problem locating the terminfo
database).
-
- The value of term can be given as NULL, which will cause the
+
+ The value of term can be given as NULL, which will cause the
value of TERM in the environment to be used. The errret pointer
- can also be given as NULL, meaning no error code is wanted. If
+ can also be given as NULL, meaning no error code is wanted. If
errret is defaulted, and something goes wrong, setupterm() will
- print an appropriate error message and exit, rather than
- returning. Thus, a simple program can call setupterm(0, 1, 0)
+ 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.
-
- After the call to setupterm(), the global variable cur_term is
+
+ After the call to setupterm(), the global variable cur_term is
set to point to the current structure of terminal capabilities.
- By calling setupterm() for each terminal, and saving and
- restoring cur_term, it is possible for a program to use two or
- more terminals at once. Setupterm() also stores the names
- section of the terminal description in the global character
+ By calling setupterm() for each terminal, and saving and
+ restoring cur_term, it is possible for a program to use two or
+ 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.
-
+
Debugging
-
+
NOTE: These functions are not part of the standard curses API!
-
+
trace()
- This function can be used to explicitly set a trace level. If
- the trace level is nonzero, execution of your program will
+ 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 TRACE_ defines in the curses.h file for
+ 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
details. (It is also possible to set a trace level by assigning
a trace level value to the environment variable NCURSES_TRACE).
-
+
_tracef()
- 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 printf(), only it
- outputs a newline after the end of arguments. The output goes
+ 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 printf(), only it
+ outputs a newline after the end of arguments. The output goes
to a file called trace in the current directory.
-
- Trace logs can be difficult to interpret due to the sheer volume of
+
+ Trace logs can be difficult to interpret due to the sheer volume of
data dumped in them. There is a script called tracemunch included with
- the ncurses 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
+ the ncurses 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.
-
+
Hints, Tips, and Tricks
The ncurses 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.
-
+
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
- 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
- application. Also, they have always been poorly documented, and are
- likely to hurt your application's usability with other curses
+
+ If you find yourself thinking you need to use noraw() or nocbreak(),
+ think again and move carefully. It's 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
+ application. Also, they have always been poorly documented, and are
+ likely to hurt your application's usability with other curses
libraries.
-
- Bear in mind that refresh() is a synonym for wrefresh(stdscr). Don't
- try to mix use of stdscr with use of windows declared by newwin(); a
- refresh() call will blow them off the screen. The right way to handle
- this is to use subwin(), or not touch stdscr at all and tile your
- screen with declared windows which you then wnoutrefresh() somewhere
- in your program event loop, with a single doupdate() call to trigger
+
+ Bear in mind that refresh() is a synonym for wrefresh(stdscr). Don't
+ try to mix use of stdscr with use of windows declared by newwin(); a
+ refresh() call will blow them off the screen. The right way to handle
+ this is to use subwin(), or not touch stdscr at all and tile your
+ screen with declared windows which you then wnoutrefresh() somewhere
+ in your program event loop, with a single doupdate() call to trigger
actual repainting.
-
- You are much less likely to run into problems if you design your
- screen layouts to use tiled rather than overlapping windows.
- Historically, curses support for overlapping windows has been weak,
- fragile, and poorly documented. The ncurses library is not yet an
+
+ 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 ncurses library is not yet an
exception to this rule.
-
- There is a panels library included in the ncurses distribution that
- does a pretty good job of strengthening the overlapping-windows
+
+ There is a panels library included in the ncurses distribution that
+ does a pretty good job of strengthening the overlapping-windows
facilities.
-
+
Try to avoid using the global variables LINES and COLS. Use getmaxyx()
- on the stdscr context instead. Reason: your code may be ported to run
- in an environment with window resizes, in which case several screens
+ on the stdscr context instead. Reason: your code may be ported to run
+ in an environment with window resizes, in which case several screens
could be open with different sizes.
-
+
Temporarily Leaving NCURSES Mode
-
- 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
+
+ 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 ncurses.
-
- To leave ncurses mode, call endwin() 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
- ncurses mode, simply call refresh() or doupdate(). This will repaint
+
+ To leave ncurses mode, call endwin() 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
+ ncurses mode, simply call refresh() or doupdate(). This will repaint
the screen.
-
- There is a boolean function, isendwin(), which code can use to test
+
+ There is a boolean function, isendwin(), which code can use to test
whether ncurses screen mode is active. It returns TRUE in the interval
between an endwin() call and the following refresh(), FALSE otherwise.
-
+
Here is some sample code for shellout:
addstr("Shelling out...");
def_prog_mode(); /* save current tty modes */
@@ -796,541 +796,541 @@ Hints, Tips, and Tricks
refresh(); /* restore save modes, repaint screen */
Using NCURSES under XTERM
-
- A resize operation in X sends SIGWINCH to the application running
- under xterm. The ncurses library provides an experimental signal
- handler, but in general does not catch this signal, because it cannot
- know how you want the screen re-painted. You will usually have to
+
+ A resize operation in X sends SIGWINCH to the application running
+ under xterm. The ncurses library provides an experimental signal
+ handler, but in general does not catch this signal, because it cannot
+ know how you want the screen re-painted. You will usually have to
write the SIGWINCH handler yourself. Ncurses can give you some help.
-
- The easiest way to code your SIGWINCH handler is to have it do an
+
+ The easiest way to code your SIGWINCH handler is to have it do an
endwin, followed by an refresh and a screen repaint you code yourself.
- The refresh will pick up the new screen size from the xterm's
+ The refresh will pick up the new screen size from the xterm's
environment.
-
- That is the standard way, of course (it even works with some vendor's
- curses implementations). Its drawback is that it clears the screen to
+
+ That is the standard way, of course (it even works with some vendor's
+ curses implementations). Its drawback is that it clears the screen to
reinitialize the display, and does not resize subwindows which must be
- shrunk. Ncurses provides an extension which works better, the
- resizeterm function. That function ensures that all windows are
- limited to the new screen dimensions, and pads stdscr with blanks if
+ shrunk. Ncurses provides an extension which works better, the
+ resizeterm function. That function ensures that all windows are
+ limited to the new screen dimensions, and pads stdscr with blanks if
the screen is larger.
-
- Finally, ncurses can be configured to provide its own SIGWINCH
+
+ Finally, ncurses can be configured to provide its own SIGWINCH
handler, based on resizeterm.
-
+
Handling Multiple Terminal Screens
-
+
The initscr() function actually calls a function named newterm() to do
- most of its work. If you are writing a program that opens multiple
+ most of its work. If you are writing a program that opens multiple
terminals, use newterm() directly.
-
- 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 stdscr
+
+ 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 stdscr
will be set to the last one allocated. You will switch between screens
- with the set_term call. Note that you will also have to call
+ with the set_term call. Note that you will also have to call
def_shell_mode and def_prog_mode on each tty yourself.
-
+
Testing for Terminal Capabilities
-
+
Sometimes you may want to write programs that test for the presence of
- various capabilities before deciding whether to go into ncurses mode.
- An easy way to do this is to call setupterm(), then use the functions
+ various capabilities before deciding whether to go into ncurses mode.
+ An easy way to do this is to call setupterm(), then use the functions
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'
+
+ 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 tigetstr("cup") is non-NULL. Alternatively, you
- can include the term.h file and test the value of the macro
+ can include the term.h file and test the value of the macro
cursor_address.
-
+
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
+
+ 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
the immedok() option!
-
+
Special Features of NCURSES
-
- The wresize() function allows you to resize a window in place. The
- associated resizeterm() function simplifies the construction of
+
+ The wresize() function allows you to resize a window in place. The
+ associated resizeterm() function simplifies the construction of
SIGWINCH handlers, for resizing all windows.
-
+
The define_key() function allows you to define at runtime function-key
- control sequences which are not in the terminal description. The
- keyok() function allows you to temporarily enable or disable
+ control sequences which are not in the terminal description. The
+ keyok() function allows you to temporarily enable or disable
interpretation of any function-key control sequence.
-
+
The use_default_colors() function allows you to construct applications
- which can use the terminal's default foreground and background colors
- as an additional "default" color. Several terminal emulators support
+ 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.
-
- Ncurses supports up 16 colors, unlike SVr4 curses which defines only
+
+ Ncurses supports up 16 colors, unlike SVr4 curses which defines only
8. While most terminals which provide color allow only 8 colors, about
a quarter (including XFree86 xterm) support 16 colors.
-
+
Compatibility with Older Versions
- Despite our best efforts, there are some differences between ncurses
- and the (undocumented!) behavior of older curses implementations.
- These arise from ambiguities or omissions in the documentation of the
+ Despite our best efforts, there are some differences between ncurses
+ and the (undocumented!) behavior of older curses implementations.
+ These arise from ambiguities or omissions in the documentation of the
API.
-
+
Refresh of Overlapping Windows
-
- 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 curses versions were often not documented
+
+ 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 curses versions were often not documented
precisely.
-
- To understand why this is a problem, remember that screen updates are
- calculated between two representations of the entire display. The
- documentation says that when you refresh a window, it is first copied
- to 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
+
+ To understand why this is a problem, remember that screen updates are
+ calculated between two representations of the entire 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.
-
- What happens to the overlapping region depends on what wnoutrefresh()
- 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 wtouchln() and friends). Some implementations do
- "entire copy", copying all window locations to the virtual screen
+
+ What happens to the overlapping region depends on what wnoutrefresh()
+ 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 wtouchln() and friends). Some implementations do
+ "entire copy", copying all window locations to the virtual screen
whether or not they have changed.
-
- The ncurses 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
+
+ The ncurses 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.
-
- For most commercial curses implementations, it is not documented and
- not known for sure (at least not to the ncurses 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
+
+ For most commercial curses implementations, it is not documented and
+ not known for sure (at least not to the ncurses 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.
-
- 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 touchwin() before the wnoutrefresh()
+
+ 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 touchwin() before the wnoutrefresh()
call to guarantee an entire-contents copy anywhere.
-
- The really clean way to handle this is to use the panels library. If,
- when you want a screen update, you do update_panels(), it will do all
- the necessary wnoutrfresh() calls for whatever panel stacking order
- you have defined. Then you can do one doupdate() and there will be a
+
+ The really clean way to handle this is to use the panels library. If,
+ when you want a screen update, you do update_panels(), it will do all
+ the necessary wnoutrefresh() calls for whatever panel stacking order
+ you have defined. Then you can do one doupdate() and there will be a
single burst of physical I/O that will do all your updates.
-
+
Background Erase
-
+
If you have been using a very old versions of ncurses (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 wattrset(), wattron(),
+ 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 wattrset(), wattron(),
wattroff() and friends).
-
- In newer versions, this is not so. Instead, the attribute of erased
- blanks is normal unless and until it is modified by the functions
+
+ In newer versions, this is not so. Instead, the attribute of erased
+ blanks is normal unless and until it is modified by the functions
bkgdset() or wbkgdset().
-
+
This change in behavior conforms ncurses to System V Release 4 and the
XSI Curses standard.
-
+
XSI Curses Conformance
- The ncurses 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
+ The ncurses 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.
-
- One effect of XSI conformance is the change in behavior described
+
+ One effect of XSI conformance is the change in behavior described
under "Background Erase -- Compatibility with Old Versions".
-
- Also, ncurses meets the XSI requirement that every macro entry point
- have a corresponding function which may be linked (and will be
+
+ Also, ncurses 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.
-
+
The Panels Library
-
- The ncurses library by itself provides good support for screen
+
+ The ncurses 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
- wnoutrefresh() calls followed by a doupdate(), and be careful about
+ general case that windows may overlap, you have to use a series of
+ wnoutrefresh() calls followed by a doupdate(), 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.
-
- 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
+
+ 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.
-
- The panel library first appeared in AT&T System V. The version
+
+ The panel library first appeared in AT&T System V. The version
documented here is the panel code distributed with ncurses.
-
+
Compiling With the Panels Library
- Your panels-using modules must import the panels library declarations
+ Your panels-using modules must import the panels library declarations
with
#include <panel.h>
and must be linked explicitly with the panels library using an -lpanel
- argument. Note that they must also link the ncurses library with
+ argument. Note that they must also link the ncurses library with
-lncurses. Many linkers are two-pass and will accept either order, but
it is still good practice to put -lpanel first and -lncurses second.
-
+
Overview of Panels
- A panel object is a window that is implicitly treated as part of a
- deck including all other panel objects. The deck has an implicit
- bottom-to-top visibility order. The panels library includes an update
+ A panel object is a window that is implicitly treated as part of a
+ deck including all other panel objects. The deck has an implicit
+ bottom-to-top visibility order. The panels library includes an update
function (analogous to refresh()) that displays all panels in the deck
- in the proper order to resolve overlaps. The standard window, stdscr,
+ 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
+
+ Details on the panels functions are available in the man pages. We'll
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
+
+ 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
available as the value of panel_window() called with the panel pointer
as argument.
-
- You can delete a panel (removing it from the deck) with del_panel.
- 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
+
+ You can delete a panel (removing it from the deck) with del_panel.
+ 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.
-
- 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
- panels library's representation of where the windows are. This
+
+ 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
+ panels library's representation of where the windows are. This
operation leaves the panel's depth, contents, and size unchanged.
-
- Two functions (top_panel(), bottom_panel()) are provided for
+
+ Two functions (top_panel(), bottom_panel()) 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 deck; the second sends it to the bottom. Either operation leaves
the panel's screen location, contents, and size unchanged.
-
- The function update_panels() does all the wnoutrefresh() calls needed
+
+ The function update_panels() does all the wnoutrefresh() calls needed
to prepare for doupdate() (which you must call yourself, afterwards).
-
- Typically, you will want to call update_panels() and doupdate() just
+
+ 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
+ the user. If you call update_panels() after each and every panel
+ write, you'll 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
- code; this will work only if the argument window is either in the top
+ You shouldn't 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.
-
- The stsdcr window is a special case. It is considered below all
+
+ The stsdcr window is a special case. It is considered below all
panels. Because changes to panels may obscure parts of stdscr, though,
- you should call update_panels() before doupdate() even when you only
+ you should call update_panels() before doupdate() even when you only
change stdscr.
-
- Note that wgetch automatically calls wrefresh. Therefore, before
- requesting input from a panel window, you need to be sure that the
+
+ Note that wgetch automatically calls wrefresh. Therefore, before
+ requesting input from a panel window, you need to be sure that the
panel is totally unobscured.
-
- There is presently no way to display changes to one obscured panel
+
+ There is presently no way to display changes to one obscured panel
without repainting all panels.
-
+
Hiding Panels
- It's 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
+ It's 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.
-
+
The panel_update code ignores hidden panels. You cannot do top_panel()
- or bottom_panel on a hidden panel(). Other panels operations are
+ or bottom_panel on a hidden panel(). Other panels operations are
applicable.
-
+
Miscellaneous Other Facilities
- It's 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
+ It's 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.
-
- Every panel has an associated user pointer, not used by the panel
- code, to which you can attach application data. See the man page
+
+ 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 set_panel_userptr() and panel_userptr for details.
-
+
The Menu Library
-
+
A menu is a screen display that assists the user to choose some subset
- of a given set of items. The menu library is a curses extension that
- supports easy programming of menu hierarchies with a uniform but
+ of a given set of items. The menu library is a curses extension that
+ supports easy programming of menu hierarchies with a uniform but
flexible interface.
-
- The menu library first appeared in AT&T System V. The version
+
+ The menu library first appeared in AT&T System V. The version
documented here is the menu code distributed with ncurses.
-
+
Compiling With the menu Library
Your menu-using modules must import the menu library declarations with
#include <menu.h>
- and must be linked explicitly with the menus library using an -lmenu
- argument. Note that they must also link the ncurses library with
+ and must be linked explicitly with the menus library using an -lmenu
+ argument. Note that they must also link the ncurses library with
-lncurses. Many linkers are two-pass and will accept either order, but
it is still good practice to put -lmenu first and -lncurses second.
-
+
Overview of Menus
- The menus created by this library consist of collections of items
- including a name string part and a description string part. To make
- menus, you create groups of these items and connect them with menu
+ The menus created by this library consist of collections of items
+ 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.
-
- The menu can then by posted, that is written to an associated window.
+
+ The menu can then by posted, 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
+ 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
+ small to display all the items, it will be a scrollable viewport on
the collection of items.
-
- A menu may also be unposted (that is, undisplayed), and finally freed
- to make the storage associated with it and its items available for
+
+ A menu may also be unposted (that is, undisplayed), and finally freed
+ to make the storage associated with it and its items available for
re-use.
-
+
The general flow of control of a menu program looks like this:
1. Initialize curses.
2. Create the menu items, using new_item().
3. Create the menu using new_menu().
- 4. Post the menu using menu_post().
+ 4. Post the menu using post_menu().
5. Refresh the screen.
6. Process user requests via an input loop.
- 7. Unpost the menu using menu_unpost().
+ 7. Unpost the menu using unpost_menu().
8. Free the menu, using free_menu().
9. Free the items using free_item().
10. Terminate curses.
-
+
Selecting items
- Menus may be multi-valued or (the default) single-valued (see the
- manual page menu_opts(3x) to see how to change the default). Both
+ Menus may be multi-valued or (the default) single-valued (see the
+ manual page menu_opts(3x) to see how to change the default). Both
types always have a current item.
-
- 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 item_value()
- predicate function. Your menu-processing code can use the function
+
+ 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 item_value()
+ predicate function. Your menu-processing code can use the function
set_item_value() to flag the items in the select set.
-
- Menu items can be made unselectable using set_item_opts() or
- item_opts_off() with the O_SELECTABLE argument. This is the only
- option so far defined for menus, but it is good practice to code as
+
+ Menu items can be made unselectable using set_item_opts() or
+ item_opts_off() with the O_SELECTABLE 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.
-
+
Menu Display
- The menu library calculates a minimum display size for your window,
+ The menu library calculates a minimum display size for your window,
based on the following variables:
* The number and maximum length of the menu items
* Whether the O_ROWMAJOR option is enabled
* Whether display of descriptions is enabled
* Whatever menu format may have been set by the programmer
- * The length of the menu mark string used for highlighting selected
+ * The length of the menu mark string used for highlighting selected
items
-
- The function set_menu_format() allows you to set the maximum size of
+
+ The function set_menu_format() allows you to set the maximum size of
the viewport or menu page that will be used to display menu items. You
can retrieve any format associated with a menu with menu_format(). The
default format is rows=16, columns=1.
-
+
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 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
+ 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.
-
- 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
+
+ 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.
-
- You can scroll it with requests to the menu driver, which will be
+
+ You can scroll it with requests to the menu driver, which will be
described in the section on menu input handling.
-
- Each menu has a mark string used to visually tag selected items; see
+
+ Each menu has a mark string used to visually tag selected items; see
the menu_mark(3x) manual page for details. The mark string length also
influences the menu page size.
-
- The function scale_menu() 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
+
+ The function scale_menu() 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
+ have reasonable defaults which the library allows you to change (see
the menu_attribs(3x) manual page.
-
+
Menu Windows
- Each menu has, as mentioned previously, a pair of associated windows.
+ 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.
-
- The outer or frame window is not otherwise touched by the menu
+
+ 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
+ or perhaps help text with the menu and have it properly refreshed or
erased at post/unpost time. The inner window or subwindow is where the
current menu page is displayed.
-
- By default, both windows are stdscr. You can set them with the
+
+ By default, both windows are stdscr. You can set them with the
functions in menu_win(3x).
-
- When you call menu_post(), you write the menu to its subwindow. When
- you call menu_unpost(), you erase the subwindow, However, neither of
- these actually modifies the screen. To do that, call wrefresh() or
+
+ When you call post_menu(), you write the menu to its subwindow. When
+ you call unpost_menu(), you erase the subwindow, However, neither of
+ these actually modifies the screen. To do that, call wrefresh() or
some equivalent.
-
+
Processing Menu Input
- The main loop of your menu-processing code should call menu_driver()
- repeatedly. The first argument of this routine is a menu pointer; the
- second is a menu command code. You should write an input-fetching
+ The main loop of your menu-processing code should call menu_driver()
+ 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 menu_driver(). The menu command codes are fully documented
+ output to menu_driver(). The menu command codes are fully documented
in menu_driver(3x).
-
- The simplest group of command codes is REQ_NEXT_ITEM, REQ_PREV_ITEM,
- REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_UP_ITEM, REQ_DOWN_ITEM,
- REQ_LEFT_ITEM, REQ_RIGHT_ITEM. These change the currently selected
- item. These requests may cause scrolling of the menu page if it only
+
+ The simplest group of command codes is REQ_NEXT_ITEM, REQ_PREV_ITEM,
+ REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_UP_ITEM, REQ_DOWN_ITEM,
+ REQ_LEFT_ITEM, REQ_RIGHT_ITEM. These change the currently selected
+ item. These requests may cause scrolling of the menu page if it only
partially displayed.
-
- 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 REQ_SCR_DLINE, REQ_SCR_ULINE,
+
+ 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 REQ_SCR_DLINE, REQ_SCR_ULINE,
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
+
+ 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
get an error return (E_REQUEST_DENIED).
-
- Each menu has an associated pattern buffer. The menu_driver() 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
+
+ Each menu has an associated pattern buffer. The menu_driver() 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
menu_driver() returns E_NO_MATCH.
-
- Some requests change the pattern buffer directly: REQ_CLEAR_PATTERN,
- REQ_BACK_PATTERN, REQ_NEXT_MATCH, REQ_PREV_MATCH. The latter two are
- useful when pattern buffer input matches more than one item in a
+
+ Some requests change the pattern buffer directly: REQ_CLEAR_PATTERN,
+ REQ_BACK_PATTERN, REQ_NEXT_MATCH, REQ_PREV_MATCH. The latter two are
+ useful when pattern buffer input matches more than one item in a
multi-valued menu.
-
- Each successful scroll or item navigation request clears the pattern
- buffer. It is also possible to set the pattern buffer explicitly with
+
+ Each successful scroll or item navigation request clears the pattern
+ buffer. It is also possible to set the pattern buffer explicitly with
set_menu_pattern().
-
- Finally, menu driver requests above the constant MAX_COMMAND are
- considered application-specific commands. The menu_driver() code
+
+ Finally, menu driver requests above the constant MAX_COMMAND are
+ considered application-specific commands. The menu_driver() code
ignores them and returns E_UNKNOWN_COMMAND.
-
+
Miscellaneous Other Features
- Various menu options can affect the processing and visual appearance
+ Various menu options can affect the processing and visual appearance
and input processing of menus. See menu_opts(3x) for details.
-
- 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
- mitem_current(3x). If your application needs to change the menu
- subwindow cursor for any reason, pos_menu_cursor() will restore it to
+
+ 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
+ mitem_current(3x). If your application needs to change the menu
+ subwindow cursor for any reason, pos_menu_cursor() will restore it to
the correct location for continuing menu driver processing.
-
- It is possible to set hooks to be called at menu initialization and
- wrapup time, and whenever the selected item changes. See
+
+ It is possible to set hooks to be called at menu initialization and
+ wrapup time, and whenever the selected item changes. See
menu_hook(3x).
-
- Each item, and each menu, has an associated user pointer on which you
+
+ Each item, and each menu, has an associated user pointer on which you
can hang application data. See mitem_userptr(3x) and menu_userptr(3x).
-
+
The Forms Library
-
- The form library is a curses extension that supports easy programming
+
+ The form library is a curses extension that supports easy programming
of on-screen forms for data entry and program control.
-
- The form library first appeared in AT&T System V. The version
+
+ The form library first appeared in AT&T System V. The version
documented here is the form code distributed with ncurses.
-
+
Compiling With the form Library
Your form-using modules must import the form library declarations with
#include <form.h>
- and must be linked explicitly with the forms library using an -lform
- argument. Note that they must also link the ncurses library with
+ and must be linked explicitly with the forms library using an -lform
+ argument. Note that they must also link the ncurses library with
-lncurses. Many linkers are two-pass and will accept either order, but
it is still good practice to put -lform first and -lncurses second.
-
+
Overview of Forms
- 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
+ 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.
-
- To make forms, you create groups of fields and connect them with form
+
+ To make forms, you create groups of fields and connect them with form
frame objects; the form library makes this relatively simple.
-
- Once defined, a form can be posted, 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
+
+ Once defined, a form can be posted, 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.
-
- 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 curses 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
+
+ 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 curses 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.
-
+
Once its transaction is completed (or aborted), a form may be unposted
- (that is, undisplayed), and finally freed to make the storage
+ (that is, undisplayed), and finally freed to make the storage
associated with it and its items available for re-use.
-
+
The general flow of control of a form program looks like this:
1. Initialize curses.
2. Create the form fields, using new_field().
3. Create the form using new_form().
- 4. Post the form using form_post().
+ 4. Post the form using post_form().
5. Refresh the screen.
6. Process user requests via an input loop.
- 7. Unpost the form using form_unpost().
+ 7. Unpost the form using unpost_form().
8. Free the form, using free_form().
9. Free the fields using free_field().
10. Terminate curses.
-
- 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 menu library wherever
+
+ 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 menu library wherever
possible.
-
- In forms programs, however, the `process user requests' is somewhat
- more complicated than for menus. Besides menu-like navigation
+
+ 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.
-
+
Creating and Freeing Fields and Forms
The basic function for creating fields is new_field():
@@ -1339,91 +1339,91 @@ FIELD *new_field(int height, int width, /* new field size */
int offscreen, /* number of offscreen rows */
int nbuf); /* number of working buffers */
- Menu items always occupy a single row, but forms fields may have
- multiple rows. So new_field() requires you to specify a width and
- height (the first two arguments, which mist both be greater than
+ Menu items always occupy a single row, but forms fields may have
+ multiple rows. So new_field() requires you to specify a width and
+ height (the first two arguments, which mist both be greater than
zero).
-
+
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 stdscr by default but need not be
- stdscr if you've done an explicit set_form_window() 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
- 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 offscreen argument was
+ 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.
+
+ 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 offscreen argument was
initially zero.
-
- The forms library allocates one working buffer per field; the size of
+
+ The forms library allocates one working buffer per field; the size of
each buffer is ((height + offscreen)*width + 1, 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
+ number of additional data buffers to allocate for the field; your
application can use them for its own purposes.
FIELD *dup_field(FIELD *field, /* field to copy */
int top, int left); /* location of new copy */
- The function dup_field() duplicates an existing field at a new
- location. Size and buffering information are copied; some attribute
- flags and status bits are not (see the form_field_new(3X) for
+ The function dup_field() duplicates an existing field at a new
+ location. Size and buffering information are copied; some attribute
+ flags and status bits are not (see the form_field_new(3X) for
details).
FIELD *link_field(FIELD *field, /* field to copy */
int top, int left); /* location of new copy */
- The function link_field() also duplicates an existing field at a new
- location. The difference from dup_field() is that it arranges for the
+ The function link_field() also duplicates an existing field at a new
+ location. The difference from dup_field() is that it arranges for the
new field's buffer to be shared with the old one.
-
- Besides the obvious use in making a field editable from two different
+
+ 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
+ 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.
-
- As with duplicated fields, linked fields have attribute bits separate
+
+ As with duplicated fields, linked fields have attribute bits separate
from the original.
-
- As you might guess, all these field-allocations return NULL if the
- field allocation is not possible due to an out-of-memory error or
+
+ As you might guess, all these field-allocations return NULL if the
+ field allocation is not possible due to an out-of-memory error or
out-of-bounds arguments.
-
+
To connect fields to a form, use
FORM *new_form(FIELD **fields);
- This function expects to see a NULL-terminated array of field
- pointers. Said fields are connected to a newly-allocated form object;
+ 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).
-
- Note that new_field() does not 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
+
+ Note that new_field() does not 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.
-
- The functions free_field() and free_form are available to free field
- and form objects. It is an error to attempt to free a field connected
+
+ The functions free_field() and free_form 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.
-
+
Fetching and Changing Field Attributes
- Each form field has a number of location and size attributes
- associated with it. There are other field attributes used to control
+ 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 O_STATIC bit)
- involve sufficient complications to be covered in sections of their
+ 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.
-
+
When a field is created, the attributes not specified by the new_field
- function are copied from an invisible system default field. In
- attribute-setting and -fetching functions, the argument NULL is taken
+ 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.
-
+
Fetching Size and Location Data
-
+
You can retrieve field sizes and locations through:
int field_info(FIELD *field, /* field from which to fetch */
int *height, *int width, /* field size */
@@ -1431,40 +1431,40 @@ int field_info(FIELD *field, /* field from which to fetch */
int *offscreen, /* number of offscreen rows */
int *nbuf); /* number of working buffers */
- This function is a sort of inverse of new_field(); instead of setting
- size and location attributes of a new field, it fetches them from an
+ This function is a sort of inverse of new_field(); instead of setting
+ size and location attributes of a new field, it fetches them from an
existing one.
-
+
Changing the Field Location
-
+
It is possible to move a field's location on the screen:
int move_field(FIELD *field, /* field to alter */
int top, int left); /* new upper-left corner */
You can, of course. query the current location through field_info().
-
+
The Justification Attribute
-
- One-line fields may be unjustified, justified right, justified left,
+
+ One-line fields may be unjustified, justified right, justified left,
or centered. Here is how you manipulate this attribute:
int set_field_just(FIELD *field, /* field to alter */
int justmode); /* mode to set */
int field_just(FIELD *field); /* fetch mode of field */
- The mode values accepted and returned by this functions are
- preprocessor macros NO_JUSTIFICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or
+ The mode values accepted and returned by this functions are
+ preprocessor macros NO_JUSTIFICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or
JUSTIFY_CENTER.
-
+
Field Display Attributes
-
- 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
+
+ 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.
-
- 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
+
+ This group of four field attributes controls the visual appearance of
+ the field on the screen, without affecting in any way the data in the
field buffer.
int set_field_fore(FIELD *field, /* field to alter */
chtype attr); /* attribute to set */
@@ -1487,14 +1487,14 @@ int set_new_page(FIELD *field, /* field to alter */
chtype new_page(FIELD *field); /* field to query */
The attributes set and returned by the first four functions are normal
- curses(3x) display attribute values (A_STANDOUT, A_BOLD, A_REVERSE
- etc). The page bit of a field controls whether it is displayed at the
+ curses(3x) display attribute values (A_STANDOUT, A_BOLD, A_REVERSE
+ etc). The page bit of a field controls whether it is displayed at the
start of a new form screen.
-
+
Field Option Bits
-
- There is also a large collection of field option bits you can set to
- control various aspects of forms processing. You can manipulate them
+
+ 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:
int set_field_opts(FIELD *field, /* field to alter */
int attr); /* attribute to set */
@@ -1508,171 +1508,171 @@ int field_opts_off(FIELD *field, /* field to alter */
int field_opts(FIELD *field); /* field to query */
By default, all options are on. Here are the available option bits:
-
+
O_VISIBLE
- Controls whether the field is visible on the screen. Can be
- used during form processing to hide or pop up fields depending
+ 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.
-
+
O_ACTIVE
- 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
+ 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.
-
+
O_PUBLIC
- 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
+ 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.
-
+
O_EDIT
- Controls whether the field's data can be modified. When this
- option is off, all editing requests except REQ_PREV_CHOICE and
- REQ_NEXT_CHOICE will fail. Such read-only fields may be useful
+ Controls whether the field's data can be modified. When this
+ option is off, all editing requests except REQ_PREV_CHOICE and
+ REQ_NEXT_CHOICE will fail. Such read-only fields may be useful
for help messages.
-
+
O_WRAP
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
+ 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.
-
+
O_BLANK
- Controls field blanking. When this option is on, entering a
- character at the first field position erases the entire field
+ 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).
-
+
O_AUTOSKIP
- 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.
+ 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
+ of the field. This option is ignored in dynamic fields that
have not reached their size limit.
-
+
O_NULLOK
- 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
+ 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.
-
+
O_PASSOK
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
+ 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.
-
+
O_STATIC
- Controls whether the field is fixed to its initial dimensions.
- If you turn this off, the field becomes dynamic and will
+ 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.
-
- A field's options cannot be changed while the field is currently
- selected. However, options may be changed on posted fields that are
+
+ 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.
-
+
The option values are bit-masks and can be composed with logical-or in
the obvious way.
-
+
Field Status
Every field has a status flag, which is set to FALSE when the field is
- created and TRUE when the value in field buffer 0 changes. This flag
+ created and TRUE when the value in field buffer 0 changes. This flag
can be queried and set directly:
int set_field_status(FIELD *field, /* field to alter */
int status); /* mode to set */
int field_status(FIELD *field); /* fetch mode of field */
- Setting this flag under program control can be useful if you use the
+ Setting this flag under program control can be useful if you use the
same form repeatedly, looking for modified fields each time.
-
- Calling field_status() on a field not currently selected for input
+
+ 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
- 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
- initialization or termination hooks, or (3) just after a
+ 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. 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
+ initialization or termination hooks, or (3) just after a
REQ_VALIDATION request has been processed by the forms driver.
-
+
Field User Pointer
- Each field structure contains one character pointer slot that is not
- used by the forms library. It is intended to be used by applications
+ 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:
int set_field_userptr(FIELD *field, /* field to alter */
char *userptr); /* mode to set */
char *field_userptr(FIELD *field); /* fetch mode of field */
- (Properly, this user pointer field ought to have (void *) type. The
+ (Properly, this user pointer field ought to have (void *) type. The
(char *) type is retained for System V compatibility.)
-
- It is valid to set the user pointer of the default field (with a
- set_field_userptr() call passed a NULL field pointer.) When a new
- field is created, the default-field user pointer is copied to
+
+ It is valid to set the user pointer of the default field (with a
+ set_field_userptr() 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.
-
+
Variable-Sized Fields
- 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 dynamic
- and will automatically resize itself to accommodate data as it is
- entered. If the field has extra buffers associated with it, they will
+ 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 dynamic
+ 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.
-
- A one-line dynamic field will have a fixed height (1) but variable
+
+ 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
+ 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.
-
- 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
+
+ Normally, a dynamic field is allowed to grow without limit. But it is
+ possible to set an upper limit on the size of a dynamic field. You do
it with this function:
int set_max_field(FIELD *field, /* field to alter (may not be NULL) */
int max_size); /* upper limit on field size */
If the field is one-line, max_size 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
+ 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.
-
+
The following properties of a field change when it becomes dynamic:
- * If there is no growth limit, there is no final position of the
+ * If there is no growth limit, there is no final position of the
field; therefore O_AUTOSKIP and O_NL_OVERLOAD are ignored.
* Field justification will be ignored (though whatever justification
is set up will be retained internally and can be queried).
- * The dup_field() and link_field() calls copy dynamic-buffer sizes.
- If the O_STATIC option is set on one of a collection of links,
- buffer resizing will occur only when the field is edited through
+ * The dup_field() and link_field() calls copy dynamic-buffer sizes.
+ If the O_STATIC option is set on one of a collection of links,
+ buffer resizing will occur only when the field is edited through
that link.
- * The call field_info() will retrieve the original static size of
- the field; use dynamic_field_info() to get the actual dynamic
+ * The call field_info() will retrieve the original static size of
+ the field; use dynamic_field_info() to get the actual dynamic
size.
-
+
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
- validation types also have a character-validity check for each time a
+ 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.
-
- A field's validation check (if any) is not called when
- set_field_buffer() modifies the input buffer, nor when that buffer is
+
+ A field's validation check (if any) is not called when
+ set_field_buffer() modifies the input buffer, nor when that buffer is
changed through a linked field.
-
- The form 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
+
+ The form 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:
int set_field_type(FIELD *field, /* field to alter */
FIELDTYPE *ftype, /* type to associate */
@@ -1680,45 +1680,45 @@ int set_field_type(FIELD *field, /* field to alter */
FIELDTYPE *field_type(FIELD *field); /* field to query */
- The validation type of a field is considered an attribute of the
- field. As with other field attributes, Also, doing set_field_type()
- with a NULL field default will change the system default for
+ The validation type of a field is considered an attribute of the
+ field. As with other field attributes, Also, doing set_field_type()
+ with a NULL field default will change the system default for
validation of newly-created fields.
-
+
Here are the pre-defined validation types:
-
+
TYPE_ALPHA
-
- This field type accepts alphabetic data; no blanks, no digits, no
- special characters (this is checked at character-entry time). It is
+
+ This field type accepts alphabetic data; no blanks, no digits, no
+ special characters (this is checked at character-entry time). It is
set up with:
int set_field_type(FIELD *field, /* field to alter */
TYPE_ALPHA, /* type to associate */
int width); /* maximum width of field */
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
+ 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.
-
+
TYPE_ALNUM
-
- This field type accepts alphabetic data and digits; no blanks, no
- special characters (this is checked at character-entry time). It is
+
+ This field type accepts alphabetic data and digits; no blanks, no
+ special characters (this is checked at character-entry time). It is
set up with:
int set_field_type(FIELD *field, /* field to alter */
TYPE_ALNUM, /* type to associate */
int width); /* maximum width of field */
- 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
+ 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.
-
+
TYPE_ENUM
-
- 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
+
+ This type allows you to restrict a field's values to be among a
+ specified set of string values (for example, the two-letter postal
codes for U.S. states). It is set up with:
int set_field_type(FIELD *field, /* field to alter */
TYPE_ENUM, /* type to associate */
@@ -1726,110 +1726,110 @@ int set_field_type(FIELD *field, /* field to alter */
int checkcase; /* case-sensitive? */
int checkunique); /* must specify uniquely? */
- The valuelist parameter must point at a NULL-terminated list of valid
- strings. The checkcase argument, if true, makes comparison with the
+ 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.
-
- 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
+
+ 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.
-
- 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
+
+ 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.
-
- The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests can be
+
+ The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests can be
particularly useful with these fields.
-
+
TYPE_INTEGER
-
+
This field type accepts an integer. It is set up as follows:
int set_field_type(FIELD *field, /* field to alter */
TYPE_INTEGER, /* type to associate */
int padding, /* # places to zero-pad to */
int vmin, int vmax); /* valid range */
- Valid characters consist of an optional leading minus and digits. The
+ 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.
-
+
If the value passes its range check, it is padded with as many leading
zero digits as necessary to meet the padding argument.
-
+
A TYPE_INTEGER value buffer can conveniently be interpreted with the C
library function atoi(3).
-
+
TYPE_NUMERIC
-
+
This field type accepts a decimal number. It is set up as follows:
int set_field_type(FIELD *field, /* field to alter */
TYPE_NUMERIC, /* type to associate */
int padding, /* # places of precision */
double vmin, double vmax); /* valid range */
- 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
+ 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.
-
- If the value passes its range check, it is padded with as many
+
+ If the value passes its range check, it is padded with as many
trailing zero digits as necessary to meet the padding argument.
-
+
A TYPE_NUMERIC value buffer can conveniently be interpreted with the C
library function atof(3).
-
+
TYPE_REGEXP
-
- This field type accepts data matching a regular expression. It is set
+
+ This field type accepts data matching a regular expression. It is set
up as follows:
int set_field_type(FIELD *field, /* field to alter */
TYPE_REGEXP, /* type to associate */
char *regexp); /* expression to match */
- The syntax for regular expressions is that of regcomp(3). The check
+ The syntax for regular expressions is that of regcomp(3). The check
for regular-expression match is performed on exit.
-
+
Direct Field Buffer Manipulation
The chief attribute of a field is its buffer contents. When a form has
- been completed, your application usually needs to know the state of
+ been completed, your application usually needs to know the state of
each field buffer. You can find this out with:
char *field_buffer(FIELD *field, /* field to query */
int bufindex); /* number of buffer to query */
- 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
+ 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:
int set_field_buffer(FIELD *field, /* field to alter */
int bufindex, /* number of buffer to alter */
char *value); /* string value to set */
- If the field is not large enough and cannot be resized to a
+ 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.
-
- Calling field_buffer() with a null field pointer will raise an error.
- Calling field_buffer() on a field not currently selected for input
+
+ Calling field_buffer() with a null field pointer will raise an error.
+ 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
- zero before the exit validation check. To guarantee that the returned
- buffer value reflects on-screen reality, call field_buffer() either
+ 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 field_buffer() 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
+ or form's initialization or termination hooks, or (3) just after a
REQ_VALIDATION request has been processed by the forms driver.
-
+
Attributes of Forms
- As with field attributes, form attributes inherit a default from a
+ 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 NULL.
-
+
The principal attribute of a form is its field list. You can query and
change this list with:
int set_form_fields(FORM *form, /* form to alter */
@@ -1839,53 +1839,53 @@ char *form_fields(FORM *form); /* fetch fields of form */
int field_count(FORM *form); /* count connect fields */
- The second argument of set_form_fields() may be a NULL-terminated
+ The second argument of set_form_fields() may be a NULL-terminated
field pointer array like the one required by new_form(). 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
+ 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.
-
- It may also be null, in which case the old fields are disconnected
+
+ It may also be null, in which case the old fields are disconnected
(and not freed) but no new ones are connected.
-
- The field_count() function simply counts the number of fields
- connected to a given from. It returns -1 if the form-pointer argument
+
+ The field_count() function simply counts the number of fields
+ connected to a given from. It returns -1 if the form-pointer argument
is NULL.
-
+
Control of Form Display
- 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
+ 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 stdscr.
-
+
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
+ 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 panels.
-
- The two windows associated with each form have the same functions as
- their analogues in the menu library. Both these windows are painted
+
+ The two windows associated with each form have the same functions as
+ their analogues in the menu library. Both these windows are painted
when the form is posted and erased when the form is unposted.
-
- The outer or frame window is not otherwise touched by the form
+
+ 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
+ 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.
-
- 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
+
+ In order to declare your own frame window for a form, you'll need to
+ know the size of the form's bounding rectangle. You can get this
information with:
int scale_form(FORM *form, /* form to query */
int *rows, /* form rows */
int *cols); /* form cols */
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
+ arguments. Once you have this information, you can use it to declare
of windows, then use one of these functions:
int set_form_win(FORM *form, /* form to alter */
WINDOW *win); /* frame window to connect */
@@ -1897,31 +1897,31 @@ int set_form_sub(FORM *form, /* form to alter */
WINDOW *form_sub(FORM *form); /* fetch form subwindow of form */
- Note that curses operations, including refresh(), on the form, should
+ Note that curses operations, including refresh(), on the form, should
be done on the frame window, not the form subwindow.
-
- It is possible to check from your application whether all of a
- scrollable field is actually displayed within the menu subwindow. Use
+
+ It is possible to check from your application whether all of a
+ scrollable field is actually displayed within the menu subwindow. Use
these functions:
int data_ahead(FORM *form); /* form to be queried */
int data_behind(FORM *form); /* form to be queried */
- The function data_ahead() returns TRUE if (a) the current field is
- one-line and has undisplayed data off to the right, (b) the current
+ The function data_ahead() 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.
-
+
The function data_behind() returns TRUE if the first (upper left hand)
character position is off-screen (not being displayed).
-
- Finally, there is a function to restore the form window's cursor to
+
+ Finally, there is a function to restore the form window's cursor to
the value expected by the forms driver:
int pos_form_cursor(FORM *) /* form to be queried */
If your application changes the form window cursor, call this function
- before handing control back to the forms driver in order to
+ before handing control back to the forms driver in order to
re-synchronize it.
-
+
Input Processing in the Forms Driver
The function form_driver() handles virtualized input requests for form
@@ -1930,311 +1930,311 @@ Input Processing in the Forms Driver
int form_driver(FORM *form, /* form to pass input to */
int request); /* form request code */
- 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
+ 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.
-
- The forms driver provides hooks (through input-validation and
- field-termination functions) with which your application code can
+
+ 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.
-
+
Page Navigation Requests
-
- These requests cause page-level moves through the form, triggering
+
+ These requests cause page-level moves through the form, triggering
display of a new form screen.
-
+
REQ_NEXT_PAGE
Move to the next form page.
-
+
REQ_PREV_PAGE
Move to the previous form page.
-
+
REQ_FIRST_PAGE
Move to the first form page.
-
+
REQ_LAST_PAGE
Move to the last form page.
-
- These requests treat the list as cyclic; that is, REQ_NEXT_PAGE from
+
+ 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.
-
+
Inter-Field Navigation Requests
-
+
These requests handle navigation between fields on the same page.
-
+
REQ_NEXT_FIELD
Move to next field.
-
+
REQ_PREV_FIELD
Move to previous field.
-
+
REQ_FIRST_FIELD
Move to the first field.
-
+
REQ_LAST_FIELD
Move to the last field.
-
+
REQ_SNEXT_FIELD
Move to sorted next field.
-
+
REQ_SPREV_FIELD
Move to 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 field.
-
+
REQ_RIGHT_FIELD
Move right to field.
-
+
REQ_UP_FIELD
Move up to field.
-
+
REQ_DOWN_FIELD
Move down to field.
-
- 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
+
+ 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()
-
- 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
+
+ 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.
-
+
Finally, it is possible to move between fields using visual directions
- up, down, right, and left. To accomplish this, use the third group of
+ 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.
-
- For example, suppose you have a multi-line field B, and two
+
+ 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
+ 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.
-
+
Intra-Field Navigation Requests
-
- These requests drive movement of the edit cursor within the currently
+
+ These requests drive movement of the edit cursor within the currently
selected field.
-
+
REQ_NEXT_CHAR
Move to next character.
-
+
REQ_PREV_CHAR
Move to previous character.
-
+
REQ_NEXT_LINE
Move to next line.
-
+
REQ_PREV_LINE
Move to previous line.
-
+
REQ_NEXT_WORD
Move to next word.
-
+
REQ_PREV_WORD
Move to previous word.
-
+
REQ_BEG_FIELD
Move to beginning of field.
-
+
REQ_END_FIELD
Move to end of field.
-
+
REQ_BEG_LINE
Move to beginning of line.
-
+
REQ_END_LINE
Move to end of line.
-
+
REQ_LEFT_CHAR
Move left in field.
-
+
REQ_RIGHT_CHAR
Move right in field.
-
+
REQ_UP_CHAR
Move up in field.
-
+
REQ_DOWN_CHAR
Move down in field.
-
- Each word is separated from the previous and next characters by
+
+ 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.
-
+
Scrolling Requests
-
- 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
+
+ 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
+ field to keep the cursor visible). It is possible to explicitly
request scrolling with the following requests:
-
+
REQ_SCR_FLINE
Scroll vertically forward a line.
-
+
REQ_SCR_BLINE
Scroll vertically backward a line.
-
+
REQ_SCR_FPAGE
Scroll vertically forward a page.
-
+
REQ_SCR_BPAGE
Scroll vertically backward a page.
-
+
REQ_SCR_FHPAGE
Scroll vertically forward half a page.
-
+
REQ_SCR_BHPAGE
Scroll vertically backward half a page.
-
+
REQ_SCR_FCHAR
Scroll horizontally forward a character.
-
+
REQ_SCR_BCHAR
Scroll horizontally backward a character.
-
+
REQ_SCR_HFLINE
Scroll horizontally one field width forward.
-
+
REQ_SCR_HBLINE
Scroll horizontally one field width backward.
-
+
REQ_SCR_HFHALF
Scroll horizontally one half field width forward.
-
+
REQ_SCR_HBHALF
Scroll horizontally one half field width backward.
-
+
For scrolling purposes, a page of a field is the height of its visible
part.
-
+
Editing Requests
-
- 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
+
+ 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.
-
+
The following requests support editing the field and changing the edit
mode:
-
+
REQ_INS_MODE
Set insertion mode.
-
+
REQ_OVL_MODE
Set overlay mode.
-
+
REQ_NEW_LINE
New line request (see below for explanation).
-
+
REQ_INS_CHAR
Insert space at character location.
-
+
REQ_INS_LINE
Insert blank line at character location.
-
+
REQ_DEL_CHAR
Delete character at cursor.
-
+
REQ_DEL_PREV
Delete previous word at cursor.
-
+
REQ_DEL_LINE
Delete line at cursor.
-
+
REQ_DEL_WORD
Delete word at cursor.
-
+
REQ_CLR_EOL
Clear to end of line.
-
+
REQ_CLR_EOF
Clear to end of field.
-
+
REQ_CLEAR_FIELD
Clear entire field.
-
- 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
+
+ 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.
-
+
First, we consider REQ_NEW_LINE:
-
- The normal behavior of REQ_NEW_LINE in insert mode is to break the
+
+ 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
+ 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).
-
- 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
+
+ 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.
-
+
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
+ of a field, instead does a REQ_NEXT_FIELD. O_NL_OVERLOAD option is
off, this special action is disabled.
-
+
Now, let us consider REQ_DEL_PREV:
-
- 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
+
+ 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).
-
- However, REQ_DEL_PREV at the beginning of a field is instead treated
+
+ However, REQ_DEL_PREV at the beginning of a field is instead treated
as a REQ_PREV_FIELD.
-
- If the O_BS_OVERLOAD option is off, this special action is disabled
+
+ If the O_BS_OVERLOAD option is off, this special action is disabled
and the forms driver just returns E_REQUEST_DENIED.
-
- See Form Options for discussion of how to set and clear the overload
+
+ See Form Options for discussion of how to set and clear the overload
options.
-
+
Order Requests
-
+
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,
+ 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:
-
+
REQ_NEXT_CHOICE
Place the successor value of the current value in the buffer.
-
+
REQ_PREV_CHOICE
Place the predecessor value of the current value in the buffer.
-
+
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
+ predecessor functions. When you define a field type of your own (see
+ Custom Validation Types), you can associate our own ordering
functions.
-
+
Application Commands
-
- Form requests are represented as integers above the curses value
- greater than KEY_MAX and less than or equal to the constant
- MAX_COMMAND. If your input-virtualization routine returns a value
+
+ Form requests are represented as integers above the curses value
+ greater than KEY_MAX and less than or equal to the constant
+ MAX_COMMAND. If your input-virtualization routine returns a value
above MAX_COMMAND, the forms driver will ignore it.
-
+
Field Change Hooks
- It is possible to set function hooks to be executed whenever the
- current field or form changes. Here are the functions that support
+ It is possible to set function hooks to be executed whenever the
+ current field or form changes. Here are the functions that support
this:
typedef void (*HOOK)(); /* pointer to function returning void */
@@ -2259,46 +2259,46 @@ int set_field_term(FORM *form, /* form to alter */
HOOK field_term(FORM *form); /* form to query */
These functions allow you to either set or query four different hooks.
- In each of the set functions, the second argument should be the
- address of a hook function. These functions differ only in the timing
+ 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.
-
+
form_init
- This hook is called when the form is posted; also, just after
+ This hook is called when the form is posted; also, just after
each page change operation.
-
+
field_init
- This hook is called when the form is posted; also, just after
+ This hook is called when the form is posted; also, just after
each field change
-
+
field_term
- This hook is called just after field validation; that is, just
+ 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.
-
+
form_term
- This hook is called when the form is unposted; also, just
+ This hook is called when the form is unposted; also, just
before each page change operation.
-
+
Calls to these hooks may be triggered
1. When user editing requests are processed by the forms driver
2. When the current page is changed by set_current_field() call
3. When the current field is changed by a set_form_page() call
-
+
See Field Change Commands for discussion of the latter two cases.
-
- You can set a default hook for all fields by passing one of the set
+
+ You can set a default hook for all fields by passing one of the set
functions a NULL first argument.
-
- You can disable any of these hooks by (re)setting them to NULL, the
+
+ You can disable any of these hooks by (re)setting them to NULL, the
default value.
-
+
Field Change Commands
- 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
+ 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:
int set_current_field(FORM *form, /* form to alter */
FIELD *field); /* field to shift to */
@@ -2309,24 +2309,24 @@ int field_index(FORM *form, /* form to query */
FIELD *field); /* field to get index of */
The function field_index() returns the index of the given field in the
- given form's field array (the array passed to new_form() or
+ given form's field array (the array passed to new_form() or
set_form_fields()).
-
- The initial current field of a form is the first active field on the
+
+ The initial current field of a form is the first active field on the
first page. The function set_form_fields() resets this.
-
+
It is also possible to move around by pages.
int set_form_page(FORM *form, /* form to alter */
int page); /* page to go to (0-origin) */
int form_page(FORM *form); /* return form's current page */
- The initial page of a newly-created form is 0. The function
+ The initial page of a newly-created form is 0. The function
set_form_fields() resets this.
-
+
Form Options
- Like fields, forms may have control option bits. They can be changed
+ Like fields, forms may have control option bits. They can be changed
or queried with these functions:
int set_form_opts(FORM *form, /* form to alter */
int attr); /* attribute to set */
@@ -2340,55 +2340,55 @@ int form_opts_off(FORM *form, /* form to alter */
int form_opts(FORM *form); /* form to query */
By default, all options are on. Here are the available option bits:
-
+
O_NL_OVERLOAD
- Enable overloading of REQ_NEW_LINE as described in Editing
+ Enable overloading of REQ_NEW_LINE as described in Editing
Requests. 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 REQ_NEXT_FIELD
+ that have not reached their size limit; these have no last
+ line, so the circumstances for triggering a REQ_NEXT_FIELD
never arise.
-
+
O_BS_OVERLOAD
- Enable overloading of REQ_DEL_PREV as described in Editing
+ Enable overloading of REQ_DEL_PREV as described in Editing
Requests.
-
+
The option values are bit-masks and can be composed with logical-or in
the obvious way.
-
+
Custom Validation Types
- The form library gives you the capability to define custom validation
- types of your own. Further, the optional additional arguments of
+ The form library gives you the capability to define custom validation
+ types of your own. Further, the optional additional arguments of
set_field_type effectively allow you to parameterize validation types.
- Most of the complications in the validation-type interface have to do
+ Most of the complications in the validation-type interface have to do
with the handling of the additional arguments within custom validation
functions.
-
+
Union Types
-
- The simplest way to create a custom data type is to compose it from
+
+ The simplest way to create a custom data type is to compose it from
two preexisting ones:
FIELD *link_fieldtype(FIELDTYPE *type1,
FIELDTYPE *type2);
- 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 set_field_type() call later
- requires arguments, the new composite type expects all arguments for
- the first type, than all arguments for the second. Order functions
- (see Order Requests) 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
+ 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 set_field_type() call later
+ requires arguments, the new composite type expects all arguments for
+ the first type, than all arguments for the second. Order functions
+ (see Order Requests) 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.
-
+
New Field Types
-
- To create a field type from scratch, you need to specify one or both
+
+ To create a field type from scratch, you need to specify one or both
of the following things:
- * A character-validation function, to check each character as it is
+ * A character-validation function, to check each character as it is
entered.
* A field-validation function to be applied on exit from the field.
-
+
Here's how you do that:
typedef int (*HOOK)(); /* pointer to function returning int */
@@ -2399,37 +2399,37 @@ FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */
int free_fieldtype(FIELDTYPE *ftype); /* type to free */
At least one of the arguments of new_fieldtype() must be non-NULL. The
- forms driver will automatically call the new type's validation
+ forms driver will automatically call the new type's validation
functions at appropriate points in processing a field of the new type.
-
- The function free_fieldtype() deallocates the argument fieldtype,
+
+ The function free_fieldtype() deallocates the argument fieldtype,
freeing all storage associated with it.
-
- 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
+
+ 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.
-
- A character validator gets the character passed in as a first
- argument. It too should return TRUE if the character is valid, FALSE
+
+ A character validator gets the character passed in as a first
+ argument. It too should return TRUE if the character is valid, FALSE
otherwise.
-
+
Validation Function Arguments
-
- 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
- field-type-specific arguments passed to set_field_type(). If no such
- arguments are defined for the field type, this pile pointer argument
+
+ 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
+ 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.
-
+
In order to arrange for such arguments to be passed to your validation
- functions, you must associate a small set of storage-management
+ 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 set_field_type() argument,
+ a pile from the trailing arguments of each set_field_type() argument,
and a pointer to the pile will be passed to the validation functions.
-
+
Here is how you make the association:
typedef char *(*PTRHOOK)(); /* pointer to function returning (char *) */
typedef void (*VOIDHOOK)(); /* pointer to function returning void */
@@ -2440,34 +2440,34 @@ int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */
VOIDHOOK free_str); /* free structure storage */
Here is how the storage-management hooks are used:
-
+
make_str
- This function is called by set_field_type(). It gets one
- argument, a va_list of the type-specific arguments passed to
- set_field_type(). It is expected to return a pile pointer to a
+ This function is called by set_field_type(). It gets one
+ argument, a va_list of the type-specific arguments passed to
+ set_field_type(). It is expected to return a pile pointer to a
data structure that encapsulates those arguments.
-
+
copy_str
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
+ 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.
-
+
free_str
- This function is called by field- and type-deallocation
- routines in the library. It takes a pile pointer argument, and
+ 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.
-
- The make_str and copy_str 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
+
+ The make_str and copy_str 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.
-
+
Order Functions For Custom Types
-
- 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
+
+ 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:
typedef int (*INTHOOK)(); /* pointer to function returning int */
@@ -2476,27 +2476,27 @@ int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */
INTHOOK succ, /* get successor value */
INTHOOK pred); /* get predecessor value */
- 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 field_buffer() to
- read the current value, and set_field_buffer() 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
+ 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 field_buffer() to
+ read the current value, and set_field_buffer() 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.
-
+
Avoiding Problems
-
- 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 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.
-
- 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
- ncurses library has been specifically exempted from the package
+
+ 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
+ ncurses library has been specifically exempted from the package
copyright to support this.
-
- 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
+
+ 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.
diff --git a/contrib/ncurses/form/Makefile.in b/contrib/ncurses/form/Makefile.in
index e55afcb55e4e..682f0a4afc76 100644
--- a/contrib/ncurses/form/Makefile.in
+++ b/contrib/ncurses/form/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.36 2002/01/20 01:49:17 tom Exp $
+# $Id: Makefile.in,v 1.42 2006/10/14 20:40:36 tom Exp $
##############################################################################
-# Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2004,2006 Free Software 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,6 +45,9 @@
SHELL = /bin/sh
THIS = Makefile
+x = @EXEEXT@
+o = .@OBJEXT@
+
MODEL = @DFT_LWR_MODEL@
DESTDIR = @DESTDIR@
srcdir = @srcdir@
@@ -55,10 +58,15 @@ libdir = @libdir@
includedir = @includedir@
LIBTOOL = @LIBTOOL@
+LIBTOOL_CLEAN = @LIB_CLEAN@
+LIBTOOL_COMPILE = @LIB_COMPILE@
+LIBTOOL_LINK = @LIB_LINK@
+LIBTOOL_INSTALL = @LIB_INSTALL@
+LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
-INSTALL_PROG = @INSTALL_PROG@
+INSTALL_PROG = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
AR = @AR@
@@ -71,8 +79,7 @@ CC = @CC@
CPP = @CPP@
CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@ \
- -DHAVE_CONFIG_H
+CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
@@ -84,7 +91,7 @@ CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
-LINK = $(LIBTOOL) $(CC)
+LINK = $(LIBTOOL_LINK) $(CC)
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
@@ -97,7 +104,7 @@ NCURSES_MINOR = @NCURSES_MINOR@
REL_VERSION = @cf_cv_rel_version@
ABI_VERSION = @cf_cv_abi_version@
-RANLIB = @RANLIB@
+RANLIB = @LIB_PREP@
IMPORT_LIB = @IMPORT_LIB@
SHARED_LIB = @SHARED_LIB@
@@ -108,7 +115,7 @@ LINT_OPTS = @LINT_OPTS@
LINT_LIBS = -lform -lncurses @LIBS@
AUTO_SRC = \
- ../include/form.h
+ ../include/form.h
################################################################################
all \
diff --git a/contrib/ncurses/form/READ.ME b/contrib/ncurses/form/READ.ME
index dd91693f6b36..da86bf69275d 100644
--- a/contrib/ncurses/form/READ.ME
+++ b/contrib/ncurses/form/READ.ME
@@ -1,3 +1,33 @@
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998-2003,2006 Free Software 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: READ.ME,v 0.7 2006/04/22 23:13:05 tom Exp $
+-------------------------------------------------------------------------------
+
This is a clone of the form library that is available with typical
System V curses implementations (ETI).
@@ -10,6 +40,3 @@ For things that still need doing, see the TO-DO file in the top-level
directory.
Juergen Pfeifer
-
-eMail: juergen.pfeifer@gmx.net
-
diff --git a/contrib/ncurses/form/f_trace.c b/contrib/ncurses/form/f_trace.c
new file mode 100644
index 000000000000..3bb4ccd9d772
--- /dev/null
+++ b/contrib/ncurses/form/f_trace.c
@@ -0,0 +1,70 @@
+/****************************************************************************
+ * Copyright (c) 2004 Free Software 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 "form.priv.h"
+
+MODULE_ID("$Id: f_trace.c,v 1.1 2004/12/25 23:28:49 tom Exp $")
+
+NCURSES_EXPORT(FIELD **)
+_nc_retrace_field_ptr(FIELD **code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
+NCURSES_EXPORT(FIELD *)
+_nc_retrace_field(FIELD *code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
+NCURSES_EXPORT(FIELDTYPE *)
+_nc_retrace_field_type(FIELDTYPE *code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
+NCURSES_EXPORT(FORM *)
+_nc_retrace_form(FORM *code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
+NCURSES_EXPORT(Form_Hook)
+_nc_retrace_form_hook(Form_Hook code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
diff --git a/contrib/ncurses/form/fld_arg.c b/contrib/ncurses/form/fld_arg.c
index dcbae596035e..f79a157aa5fc 100644
--- a/contrib/ncurses/form/fld_arg.c
+++ b/contrib/ncurses/form/fld_arg.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,21 +27,21 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_arg.c,v 1.5 2000/12/10 02:09:37 tom Exp $")
+MODULE_ID("$Id: fld_arg.c,v 1.11 2004/12/25 22:20:18 tom Exp $")
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int set_fieldtype_arg(
| FIELDTYPE *typ,
| void * (* const make_arg)(va_list *),
| void * (* const copy_arg)(const void *),
| void (* const free_arg)(void *) )
-|
+|
| Description : Connects to the type additional arguments necessary
| for a set_field_type call. The various function pointer
| arguments are:
@@ -61,34 +61,38 @@ MODULE_ID("$Id: fld_arg.c,v 1.5 2000/12/10 02:09:37 tom Exp $")
| E_BAD_ARGUMENT - invalid argument
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_fieldtype_arg
- (FIELDTYPE * typ,
- void * (* const make_arg)(va_list *),
- void * (* const copy_arg)(const void *),
- void (* const free_arg)(void *))
+set_fieldtype_arg(FIELDTYPE *typ,
+ void *(*const make_arg)(va_list *),
+ void *(*const copy_arg)(const void *),
+ void (*const free_arg) (void *))
{
- if ( !typ || !make_arg )
- RETURN(E_BAD_ARGUMENT);
+ T((T_CALLED("set_fieldtype_arg(%p,%p,%p,%p)"),
+ typ, make_arg, copy_arg, free_arg));
- typ->status |= _HAS_ARGS;
- typ->makearg = make_arg;
- typ->copyarg = copy_arg;
- typ->freearg = free_arg;
- RETURN(E_OK);
+ if (typ != 0 && make_arg != (void *)0)
+ {
+ typ->status |= _HAS_ARGS;
+ typ->makearg = make_arg;
+ typ->copyarg = copy_arg;
+ typ->freearg = free_arg;
+ RETURN(E_OK);
+ }
+ RETURN(E_BAD_ARGUMENT);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : void *field_arg(const FIELD *field)
-|
+|
| Description : Retrieve pointer to the fields argument structure.
|
| Return Values : Pointer to structure or NULL if none is defined.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void *)
-field_arg (const FIELD * field)
+field_arg(const FIELD *field)
{
- return Normalize_Field(field)->arg;
+ T((T_CALLED("field_arg(%p)"), field));
+ returnVoidPtr(Normalize_Field(field)->arg);
}
/* fld_arg.c ends here */
diff --git a/contrib/ncurses/form/fld_attr.c b/contrib/ncurses/form/fld_attr.c
index cd584d048427..c9c08384bc7f 100644
--- a/contrib/ncurses/form/fld_attr.c
+++ b/contrib/ncurses/form/fld_attr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+
#include "form.priv.h"
-MODULE_ID("$Id: fld_attr.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_attr.c,v 1.10 2004/12/11 21:33:15 tom Exp $")
/*----------------------------------------------------------------------------
Field-Attribute manipulation routines
@@ -41,16 +42,22 @@ MODULE_ID("$Id: fld_attr.c,v 1.5 2000/12/10 02:09:38 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)));\
if ( attr==A_NORMAL || ((attr & A_ATTRIBUTES)==attr) )\
{\
Normalize_Field( field );\
- if ((field -> name) != attr)\
- {\
- field -> name = attr;\
- res = _nc_Synchronize_Attributes( field );\
- }\
- else\
- res = E_OK;\
+ if (field != 0) \
+ { \
+ if ((field -> name) != attr)\
+ {\
+ field -> name = attr;\
+ res = _nc_Synchronize_Attributes( field );\
+ }\
+ else\
+ {\
+ res = E_OK;\
+ }\
+ }\
}\
RETURN(res);\
}
@@ -59,13 +66,14 @@ NCURSES_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\
#define GEN_FIELD_ATTR_GET_FCT( name ) \
NCURSES_IMPEXP chtype NCURSES_API field_ ## name (const FIELD * field)\
{\
- return ( A_ATTRIBUTES & (Normalize_Field( field ) -> name) );\
+ T((T_CALLED("field_" #name "(%p)"), field));\
+ returnAttr( A_ATTRIBUTES & (Normalize_Field( field ) -> name) );\
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int set_field_fore(FIELD *field, chtype attr)
-|
+|
| Description : Sets the foreground of the field used to display the
| field contents.
|
@@ -73,22 +81,22 @@ NCURSES_IMPEXP chtype NCURSES_API field_ ## name (const FIELD * field)\
| E_BAD_ARGUMENT - invalid attributes
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
-GEN_FIELD_ATTR_SET_FCT( fore )
+GEN_FIELD_ATTR_SET_FCT(fore)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : chtype field_fore(const FIELD *)
-|
+|
| Description : Retrieve fields foreground attribute
|
| Return Values : The foreground attribute
+--------------------------------------------------------------------------*/
-GEN_FIELD_ATTR_GET_FCT( fore )
+GEN_FIELD_ATTR_GET_FCT(fore)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int set_field_back(FIELD *field, chtype attr)
-|
+|
| Description : Sets the background of the field used to display the
| fields extend.
|
@@ -96,16 +104,16 @@ GEN_FIELD_ATTR_GET_FCT( fore )
| E_BAD_ARGUMENT - invalid attributes
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
-GEN_FIELD_ATTR_SET_FCT( back )
+GEN_FIELD_ATTR_SET_FCT(back)
/*---------------------------------------------------------------------------
| Facility : libnform
-| Function : chtype field_back(const
-|
+| Function : chtype field_back(const
+|
| Description : Retrieve fields background attribute
|
| Return Values : The background attribute
+--------------------------------------------------------------------------*/
-GEN_FIELD_ATTR_GET_FCT( back )
+GEN_FIELD_ATTR_GET_FCT(back)
/* fld_attr.c ends here */
diff --git a/contrib/ncurses/form/fld_current.c b/contrib/ncurses/form/fld_current.c
index b23d21ca1dc1..7c3a90af511d 100644
--- a/contrib/ncurses/form/fld_current.c
+++ b/contrib/ncurses/form/fld_current.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,16 +27,17 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+
#include "form.priv.h"
-MODULE_ID("$Id: fld_current.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_current.c,v 1.11 2004/12/25 22:40:13 tom Exp $")
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int set_current_field(FORM * form,FIELD * field)
-|
+|
| Description : Set the current field of the form to the specified one.
|
| Return Values : E_OK - success
@@ -47,46 +48,53 @@ MODULE_ID("$Id: fld_current.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_current_field (FORM * form, FIELD * field)
+set_current_field(FORM *form, FIELD *field)
{
int err = E_OK;
- if ( !form || !field )
- RETURN(E_BAD_ARGUMENT);
-
- if ( (form != field->form) || Field_Is_Not_Selectable(field) )
- RETURN(E_REQUEST_DENIED);
-
- if (!(form->status & _POSTED))
+ T((T_CALLED("set_current_field(%p,%p)"), form, field));
+ if (form == 0 || field == 0)
+ {
+ RETURN(E_BAD_ARGUMENT);
+ }
+ else if ((form != field->form) || Field_Is_Not_Selectable(field))
+ {
+ RETURN(E_REQUEST_DENIED);
+ }
+ else if ((form->status & _POSTED) == 0)
{
form->current = field;
form->curpage = field->page;
- }
+ }
else
{
- if (form->status & _IN_DRIVER)
- err = E_BAD_STATE;
+ if ((form->status & _IN_DRIVER) != 0)
+ {
+ err = E_BAD_STATE;
+ }
else
{
if (form->current != field)
{
- if (!_nc_Internal_Validation(form))
- err = E_INVALID_FIELD;
+ if (!_nc_Internal_Validation(form))
+ {
+ err = E_INVALID_FIELD;
+ }
else
{
- Call_Hook(form,fieldterm);
+ Call_Hook(form, fieldterm);
if (field->page != form->curpage)
{
- Call_Hook(form,formterm);
- err = _nc_Set_Form_Page(form,field->page,field);
- Call_Hook(form,forminit);
- }
- else
+ Call_Hook(form, formterm);
+ err = _nc_Set_Form_Page(form, (int)field->page, field);
+ Call_Hook(form, forminit);
+ }
+ else
{
- err = _nc_Set_Current_Field(form,field);
+ err = _nc_Set_Current_Field(form, field);
}
- Call_Hook(form,fieldinit);
- _nc_Refresh_Current_Field(form);
+ Call_Hook(form, fieldinit);
+ (void)_nc_Refresh_Current_Field(form);
}
}
}
@@ -95,23 +103,24 @@ set_current_field (FORM * form, FIELD * field)
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : FIELD *current_field(const FORM * form)
-|
+|
| Description : Return the current field.
|
| Return Values : Pointer to the current field.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FIELD *)
-current_field (const FORM * form)
+current_field(const FORM *form)
{
- return Normalize_Form(form)->current;
+ T((T_CALLED("current_field(%p)"), form));
+ returnField(Normalize_Form(form)->current);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int field_index(const FIELD * field)
-|
+|
| Description : Return the index of the field in the field-array of
| the form.
|
@@ -119,9 +128,10 @@ current_field (const FORM * form)
| -1 : fieldpointer invalid or field not connected
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-field_index (const FIELD * field)
+field_index(const FIELD *field)
{
- return ( (field && field->form) ? field->index : -1 );
+ T((T_CALLED("field_index(%p)"), field));
+ returnCode((field != 0 && field->form != 0) ? (int)field->index : -1);
}
/* fld_current.c ends here */
diff --git a/contrib/ncurses/form/fld_def.c b/contrib/ncurses/form/fld_def.c
index e12179e35d55..dc023795ac90 100644
--- a/contrib/ncurses/form/fld_def.c
+++ b/contrib/ncurses/form/fld_def.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,296 +27,324 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_def.c,v 1.13 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_def.c,v 1.33 2005/04/16 17:31:17 tom Exp $")
/* this can't be readonly */
-static FIELD default_field = {
- 0, /* status */
- 0, /* rows */
- 0, /* cols */
- 0, /* frow */
- 0, /* fcol */
- 0, /* drows */
- 0, /* dcols */
- 0, /* maxgrow*/
- 0, /* nrow */
- 0, /* nbuf */
- NO_JUSTIFICATION, /* just */
- 0, /* page */
- 0, /* index */
- (int)' ', /* pad */
- A_NORMAL, /* fore */
- A_NORMAL, /* back */
- ALL_FIELD_OPTS, /* opts */
- (FIELD *)0, /* snext */
- (FIELD *)0, /* sprev */
- (FIELD *)0, /* link */
- (FORM *)0, /* form */
- (FIELDTYPE *)0, /* type */
- (char *)0, /* arg */
- (char *)0, /* buf */
- (char *)0 /* usrptr */
+static FIELD default_field =
+{
+ 0, /* status */
+ 0, /* rows */
+ 0, /* cols */
+ 0, /* frow */
+ 0, /* fcol */
+ 0, /* drows */
+ 0, /* dcols */
+ 0, /* maxgrow */
+ 0, /* nrow */
+ 0, /* nbuf */
+ NO_JUSTIFICATION, /* just */
+ 0, /* page */
+ 0, /* index */
+ (int)' ', /* pad */
+ A_NORMAL, /* fore */
+ A_NORMAL, /* back */
+ ALL_FIELD_OPTS, /* opts */
+ (FIELD *)0, /* snext */
+ (FIELD *)0, /* sprev */
+ (FIELD *)0, /* link */
+ (FORM *)0, /* form */
+ (FIELDTYPE *)0, /* type */
+ (char *)0, /* arg */
+ (FIELD_CELL *)0, /* buf */
+ (char *)0 /* usrptr */
+ NCURSES_FIELD_EXTENSION
};
-NCURSES_EXPORT_VAR(FIELD *) _nc_Default_Field = &default_field;
-
+NCURSES_EXPORT_VAR(FIELD *)
+_nc_Default_Field = &default_field;
+
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : TypeArgument *_nc_Make_Argument(
| const FIELDTYPE *typ,
| va_list *ap,
| int *err )
-|
+|
| Description : Create an argument structure for the specified type.
-| Use the type-dependant argument list to construct
+| Use the type-dependent argument list to construct
| it.
|
| Return Values : Pointer to argument structure. Maybe NULL.
-| In case of an error in *err an errorcounter is increased.
+| In case of an error in *err an error counter is increased.
+--------------------------------------------------------------------------*/
-NCURSES_EXPORT(TypeArgument*)
-_nc_Make_Argument
-(const FIELDTYPE *typ, va_list *ap, int *err)
+NCURSES_EXPORT(TypeArgument *)
+_nc_Make_Argument(const FIELDTYPE *typ, va_list *ap, int *err)
{
- TypeArgument *res = (TypeArgument *)0;
+ TypeArgument *res = (TypeArgument *)0;
TypeArgument *p;
- if (typ && (typ->status & _HAS_ARGS))
+ if (typ != 0 && (typ->status & _HAS_ARGS) != 0)
{
- assert(err && ap);
- if (typ->status & _LINKED_TYPE)
+ assert(err != 0 && ap != (va_list *)0);
+ if ((typ->status & _LINKED_TYPE) != 0)
{
p = (TypeArgument *)malloc(sizeof(TypeArgument));
- if (p)
+
+ if (p != 0)
{
- p->left = _nc_Make_Argument(typ->left ,ap,err);
- p->right = _nc_Make_Argument(typ->right,ap,err);
+ p->left = _nc_Make_Argument(typ->left, ap, err);
+ p->right = _nc_Make_Argument(typ->right, ap, err);
return p;
}
else
- *err += 1;
- } else
+ {
+ *err += 1;
+ }
+ }
+ else
{
- assert(typ->makearg);
- if ( !(res=(TypeArgument *)typ->makearg(ap)) )
- *err += 1;
+ assert(typ->makearg != (void *)0);
+ if (!(res = (TypeArgument *)typ->makearg(ap)))
+ {
+ *err += 1;
+ }
}
}
return res;
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : TypeArgument *_nc_Copy_Argument(const FIELDTYPE *typ,
| const TypeArgument *argp,
| int *err )
-|
-| Description : Create a copy of an argument structure for the specified
+|
+| Description : Create a copy of an argument structure for the specified
| type.
|
| Return Values : Pointer to argument structure. Maybe NULL.
-| In case of an error in *err an errorcounter is increased.
+| In case of an error in *err an error counter is increased.
+--------------------------------------------------------------------------*/
-NCURSES_EXPORT(TypeArgument*)
-_nc_Copy_Argument
- (const FIELDTYPE *typ,
- const TypeArgument *argp, int *err)
+NCURSES_EXPORT(TypeArgument *)
+_nc_Copy_Argument(const FIELDTYPE *typ, const TypeArgument *argp, int *err)
{
TypeArgument *res = (TypeArgument *)0;
TypeArgument *p;
- if ( typ && (typ->status & _HAS_ARGS) )
+ if (typ != 0 && (typ->status & _HAS_ARGS) != 0)
{
- assert(err && argp);
- if (typ->status & _LINKED_TYPE)
+ assert(err != 0 && argp != 0);
+ if ((typ->status & _LINKED_TYPE) != 0)
{
p = (TypeArgument *)malloc(sizeof(TypeArgument));
- if (p)
+
+ if (p != 0)
{
- p->left = _nc_Copy_Argument(typ,argp->left ,err);
- p->right = _nc_Copy_Argument(typ,argp->right,err);
+ p->left = _nc_Copy_Argument(typ, argp->left, err);
+ p->right = _nc_Copy_Argument(typ, argp->right, err);
return p;
}
*err += 1;
- }
- else
+ }
+ else
{
- if (typ->copyarg)
+ if (typ->copyarg != (void *)0)
{
- if (!(res = (TypeArgument *)(typ->copyarg((const void *)argp))))
- *err += 1;
+ if (!(res = (TypeArgument *)(typ->copyarg((const void *)argp))))
+ {
+ *err += 1;
+ }
}
else
- res = (TypeArgument *)argp;
+ {
+ res = (TypeArgument *)argp;
+ }
}
}
return res;
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : void _nc_Free_Argument(const FIELDTYPE *typ,
| TypeArgument * argp )
-|
+|
| Description : Release memory associated with the argument structure
| for the given fieldtype.
|
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-_nc_Free_Argument
-(const FIELDTYPE * typ, TypeArgument * argp)
+_nc_Free_Argument(const FIELDTYPE *typ, TypeArgument *argp)
{
- if (!typ || !(typ->status & _HAS_ARGS))
- return;
-
- if (typ->status & _LINKED_TYPE)
- {
- assert(argp);
- _nc_Free_Argument(typ->left ,argp->left );
- _nc_Free_Argument(typ->right,argp->right);
- free(argp);
- }
- else
+ if (typ != 0 && (typ->status & _HAS_ARGS) != 0)
{
- if (typ->freearg)
- typ->freearg((void *)argp);
+ if ((typ->status & _LINKED_TYPE) != 0)
+ {
+ assert(argp != 0);
+ _nc_Free_Argument(typ->left, argp->left);
+ _nc_Free_Argument(typ->right, argp->right);
+ free(argp);
+ }
+ else
+ {
+ if (typ->freearg != (void *)0)
+ {
+ typ->freearg((void *)argp);
+ }
+ }
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : bool _nc_Copy_Type( FIELD *dst, FIELD const *src )
-|
+|
| Description : Copy argument structure of field src to field dst
|
| Return Values : TRUE - copy worked
-| FALSE - error occured
+| FALSE - error occurred
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(bool)
-_nc_Copy_Type
-(FIELD *dst, FIELD const *src)
+_nc_Copy_Type(FIELD *dst, FIELD const *src)
{
int err = 0;
- assert(dst && src);
+ assert(dst != 0 && src != 0);
dst->type = src->type;
- dst->arg = (void *)_nc_Copy_Argument(src->type,(TypeArgument *)(src->arg),&err);
+ dst->arg = (void *)_nc_Copy_Argument(src->type, (TypeArgument *)(src->arg), &err);
- if (err)
+ if (err != 0)
{
- _nc_Free_Argument(dst->type,(TypeArgument *)(dst->arg));
+ _nc_Free_Argument(dst->type, (TypeArgument *)(dst->arg));
dst->type = (FIELDTYPE *)0;
- dst->arg = (void *)0;
+ dst->arg = (void *)0;
return FALSE;
}
else
{
- if (dst->type)
- dst->type->ref++;
+ if (dst->type != 0)
+ {
+ dst->type->ref++;
+ }
return TRUE;
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : void _nc_Free_Type( FIELD *field )
-|
+|
| Description : Release Argument structure for this field
|
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-_nc_Free_Type (FIELD *field)
+_nc_Free_Type(FIELD *field)
{
- assert(field);
- if (field->type)
- field->type->ref--;
- _nc_Free_Argument(field->type,(TypeArgument *)(field->arg));
+ assert(field != 0);
+ if (field->type != 0)
+ {
+ field->type->ref--;
+ }
+ _nc_Free_Argument(field->type, (TypeArgument *)(field->arg));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : FIELD *new_field( int rows, int cols,
+| Facility : libnform
+| Function : FIELD *new_field( int rows, int cols,
| int frow, int fcol,
| int nrow, int nbuf )
-|
+|
| Description : Create a new field with this many 'rows' and 'cols',
| starting at 'frow/fcol' in the subwindow of the form.
| Allocate 'nrow' off-screen rows and 'nbuf' additional
| buffers. If an error occurs, errno is set to
-|
+|
| E_BAD_ARGUMENT - invalid argument
| E_SYSTEM_ERROR - system error
|
| Return Values : Pointer to the new field or NULL if failure.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FIELD *)
-new_field
-(int rows, int cols, int frow, int fcol, int nrow, int nbuf)
+new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf)
{
+ static const FIELD_CELL blank = BLANK;
+ static const FIELD_CELL zeros = ZEROS;
+
FIELD *New_Field = (FIELD *)0;
int err = E_BAD_ARGUMENT;
- if (rows>0 &&
- cols>0 &&
- frow>=0 &&
- fcol>=0 &&
- nrow>=0 &&
- nbuf>=0 &&
- ((err = E_SYSTEM_ERROR) != 0) && /* trick: this resets the default error */
- (New_Field=(FIELD *)malloc(sizeof(FIELD))) )
+ T((T_CALLED("new_field(%d,%d,%d,%d,%d,%d)"), rows, cols, frow, fcol, nrow, nbuf));
+ if (rows > 0 &&
+ cols > 0 &&
+ frow >= 0 &&
+ fcol >= 0 &&
+ nrow >= 0 &&
+ nbuf >= 0 &&
+ ((err = E_SYSTEM_ERROR) != 0) && /* trick: this resets the default error */
+ (New_Field = (FIELD *)malloc(sizeof(FIELD))) != 0)
{
- *New_Field = default_field;
- New_Field->rows = rows;
- New_Field->cols = cols;
+ *New_Field = default_field;
+ New_Field->rows = rows;
+ New_Field->cols = cols;
New_Field->drows = rows + nrow;
New_Field->dcols = cols;
- New_Field->frow = frow;
- New_Field->fcol = fcol;
- New_Field->nrow = nrow;
- New_Field->nbuf = nbuf;
- New_Field->link = New_Field;
+ New_Field->frow = frow;
+ New_Field->fcol = fcol;
+ New_Field->nrow = nrow;
+ New_Field->nbuf = nbuf;
+ New_Field->link = New_Field;
+
+#if USE_WIDEC_SUPPORT
+ New_Field->working = newpad(1, Buffer_Length(New_Field) + 1);
+ New_Field->expanded = (char **)calloc(1 + (unsigned)rows, sizeof(char *));
+#endif
- if (_nc_Copy_Type(New_Field,&default_field))
+ if (_nc_Copy_Type(New_Field, &default_field))
{
size_t len;
len = Total_Buffer_Size(New_Field);
- if ((New_Field->buf = (char *)malloc(len)))
+ if ((New_Field->buf = (FIELD_CELL *)malloc(len)))
{
/* Prefill buffers with blanks and insert terminating zeroes
- between buffers */
- int i;
+ between buffers */
+ int i, j;
+ int cells = Buffer_Length(New_Field);
- memset(New_Field->buf,' ',len);
- for(i=0;i<=New_Field->nbuf;i++)
+ for (i = 0; i <= New_Field->nbuf; i++)
{
- New_Field->buf[(New_Field->drows*New_Field->cols+1)*(i+1)-1]
- = '\0';
+ FIELD_CELL *buffer = &(New_Field->buf[(cells + 1) * i]);
+
+ for (j = 0; j < cells; ++j)
+ {
+ buffer[j] = blank;
+ }
+ buffer[j] = zeros;
}
- return New_Field;
+ returnField(New_Field);
}
}
}
- if (New_Field)
+ if (New_Field)
free_field(New_Field);
-
- SET_ERROR( err );
- return (FIELD *)0;
+
+ SET_ERROR(err);
+ returnField((FIELD *)0);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int free_field( FIELD *field )
-|
+|
| Description : Frees the storage allocated for the field.
|
| Return Values : E_OK - success
@@ -324,28 +352,45 @@ new_field
| E_CONNECTED - field is connected
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-free_field (FIELD * field)
+free_field(FIELD *field)
{
- if (!field)
- RETURN(E_BAD_ARGUMENT);
-
- if (field->form)
- RETURN(E_CONNECTED);
-
- if (field == field->link)
+ T((T_CALLED("free_field(%p)"), field));
+ if (!field)
{
- if (field->buf)
+ RETURN(E_BAD_ARGUMENT);
+ }
+ else if (field->form != 0)
+ {
+ RETURN(E_CONNECTED);
+ }
+ else if (field == field->link)
+ {
+ if (field->buf != 0)
free(field->buf);
}
- else
+ else
{
FIELD *f;
- for(f=field;f->link != field;f = f->link)
- {}
+ for (f = field; f->link != field; f = f->link)
+ {
+ }
f->link = field->link;
}
_nc_Free_Type(field);
+#if USE_WIDEC_SUPPORT
+ if (field->expanded != 0)
+ {
+ int n;
+
+ for (n = 0; n <= field->nbuf; ++n)
+ {
+ FreeIfNeeded(field->expanded[n]);
+ }
+ free(field->expanded);
+ (void)delwin(field->working);
+ }
+#endif
free(field);
RETURN(E_OK);
}
diff --git a/contrib/ncurses/form/fld_dup.c b/contrib/ncurses/form/fld_dup.c
index 4aed77292d64..2ffcd3670581 100644
--- a/contrib/ncurses/form/fld_dup.c
+++ b/contrib/ncurses/form/fld_dup.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,72 +27,74 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_dup.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_dup.c,v 1.10 2004/12/25 22:24:10 tom Exp $")
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : FIELD *dup_field(FIELD *field, int frow, int fcol)
-|
+|
| Description : Duplicates the field at the specified position. All
| field attributes and the buffers are copied.
| If an error occurs, errno is set to
-|
+|
| E_BAD_ARGUMENT - invalid argument
| E_SYSTEM_ERROR - system error
|
| Return Values : Pointer to the new field or NULL if failure
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FIELD *)
-dup_field (FIELD * field, int frow, int fcol)
+dup_field(FIELD *field, int frow, int fcol)
{
FIELD *New_Field = (FIELD *)0;
int err = E_BAD_ARGUMENT;
- if (field && (frow>=0) && (fcol>=0) &&
- ((err=E_SYSTEM_ERROR) != 0) && /* trick : this resets the default error */
- (New_Field=(FIELD *)malloc(sizeof(FIELD))) )
+ T((T_CALLED("dup_field(%p,%d,%d)"), field, frow, fcol));
+ if (field && (frow >= 0) && (fcol >= 0) &&
+ ((err = E_SYSTEM_ERROR) != 0) && /* trick : this resets the default error */
+ (New_Field = (FIELD *)malloc(sizeof(FIELD))))
{
- *New_Field = *_nc_Default_Field;
- New_Field->frow = frow;
- New_Field->fcol = fcol;
- New_Field->link = New_Field;
- New_Field->rows = field->rows;
- New_Field->cols = field->cols;
- New_Field->nrow = field->nrow;
- New_Field->drows = field->drows;
- New_Field->dcols = field->dcols;
+ *New_Field = *_nc_Default_Field;
+ New_Field->frow = frow;
+ New_Field->fcol = fcol;
+ New_Field->link = New_Field;
+ New_Field->rows = field->rows;
+ New_Field->cols = field->cols;
+ New_Field->nrow = field->nrow;
+ New_Field->drows = field->drows;
+ New_Field->dcols = field->dcols;
New_Field->maxgrow = field->maxgrow;
- New_Field->nbuf = field->nbuf;
- New_Field->just = field->just;
- New_Field->fore = field->fore;
- New_Field->back = field->back;
- New_Field->pad = field->pad;
- New_Field->opts = field->opts;
- New_Field->usrptr = field->usrptr;
+ New_Field->nbuf = field->nbuf;
+ New_Field->just = field->just;
+ New_Field->fore = field->fore;
+ New_Field->back = field->back;
+ New_Field->pad = field->pad;
+ New_Field->opts = field->opts;
+ New_Field->usrptr = field->usrptr;
- if (_nc_Copy_Type(New_Field,field))
+ if (_nc_Copy_Type(New_Field, field))
{
- size_t len;
+ size_t i, len;
len = Total_Buffer_Size(New_Field);
- if ( (New_Field->buf=(char *)malloc(len)) )
+ if ((New_Field->buf = (FIELD_CELL *)malloc(len)))
{
- memcpy(New_Field->buf,field->buf,len);
- return New_Field;
+ for (i = 0; i < len; ++i)
+ New_Field->buf[i] = field->buf[i];
+ returnField(New_Field);
}
}
}
- if (New_Field)
+ if (New_Field)
free_field(New_Field);
SET_ERROR(err);
- return (FIELD *)0;
+ returnField((FIELD *)0);
}
/* fld_dup.c ends here */
diff --git a/contrib/ncurses/form/fld_ftchoice.c b/contrib/ncurses/form/fld_ftchoice.c
index 377f9abdb923..9237f96d1d0c 100644
--- a/contrib/ncurses/form/fld_ftchoice.c
+++ b/contrib/ncurses/form/fld_ftchoice.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_ftchoice.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_ftchoice.c,v 1.9 2004/12/11 21:44:57 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -47,12 +47,13 @@ MODULE_ID("$Id: fld_ftchoice.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| E_BAD_ARGUMENT - invalid arguments
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_fieldtype_choice
- (FIELDTYPE * typ,
- bool (* const next_choice) (FIELD *,const void *),
- bool (* const prev_choice) (FIELD *,const void *))
+set_fieldtype_choice(FIELDTYPE *typ,
+ bool (*const next_choice) (FIELD *, const void *),
+ bool (*const prev_choice) (FIELD *, const void *))
{
- if ( !typ || !next_choice || !prev_choice )
+ T((T_CALLED("set_fieldtype_choice(%p,%p,%p)"), typ, next_choice, prev_choice));
+
+ if (!typ || !next_choice || !prev_choice)
RETURN(E_BAD_ARGUMENT);
typ->status |= _HAS_CHOICE;
diff --git a/contrib/ncurses/form/fld_ftlink.c b/contrib/ncurses/form/fld_ftlink.c
index 87aa661a8069..ce6014dbb81a 100644
--- a/contrib/ncurses/form/fld_ftlink.c
+++ b/contrib/ncurses/form/fld_ftlink.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_ftlink.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_ftlink.c,v 1.11 2004/12/25 22:24:10 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -46,40 +46,41 @@ MODULE_ID("$Id: fld_ftlink.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| E_BAD_ARGUMENT - invalid arguments
| E_SYSTEM_ERROR - system error (no memory)
|
-| Return Values : Fieldtype pointer or NULL if error occured.
+| Return Values : Fieldtype pointer or NULL if error occurred.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FIELDTYPE *)
-link_fieldtype
-(FIELDTYPE * type1, FIELDTYPE * type2)
+link_fieldtype(FIELDTYPE *type1, FIELDTYPE *type2)
{
FIELDTYPE *nftyp = (FIELDTYPE *)0;
- if ( type1 && type2 )
+ T((T_CALLED("link_fieldtype(%p,%p)"), type1, type2));
+ if (type1 && type2)
{
nftyp = (FIELDTYPE *)malloc(sizeof(FIELDTYPE));
+
if (nftyp)
{
*nftyp = *_nc_Default_FieldType;
nftyp->status |= _LINKED_TYPE;
- if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS) )
+ if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS))
nftyp->status |= _HAS_ARGS;
- if ((type1->status & _HAS_CHOICE) || (type2->status & _HAS_CHOICE) )
+ if ((type1->status & _HAS_CHOICE) || (type2->status & _HAS_CHOICE))
nftyp->status |= _HAS_CHOICE;
- nftyp->left = type1;
- nftyp->right = type2;
+ nftyp->left = type1;
+ nftyp->right = type2;
type1->ref++;
type2->ref++;
}
else
{
- SET_ERROR( E_SYSTEM_ERROR );
+ SET_ERROR(E_SYSTEM_ERROR);
}
}
else
{
- SET_ERROR( E_BAD_ARGUMENT );
+ SET_ERROR(E_BAD_ARGUMENT);
}
- return nftyp;
+ returnFieldType(nftyp);
}
/* fld_ftlink.c ends here */
diff --git a/contrib/ncurses/form/fld_info.c b/contrib/ncurses/form/fld_info.c
index be4fd0645973..324198c42bae 100644
--- a/contrib/ncurses/form/fld_info.c
+++ b/contrib/ncurses/form/fld_info.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_info.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_info.c,v 1.10 2004/12/11 22:24:57 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -47,24 +47,35 @@ MODULE_ID("$Id: fld_info.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| E_BAD_ARGUMENT - invalid field pointer
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-field_info
- (const FIELD *field,
- int *rows, int *cols,
- int *frow, int *fcol,
- int *nrow, int *nbuf)
+field_info(const FIELD *field,
+ int *rows, int *cols,
+ int *frow, int *fcol,
+ int *nrow, int *nbuf)
{
- if (!field)
+ T((T_CALLED("field_info(%p,%p,%p,%p,%p,%p,%p)"),
+ field,
+ rows, cols,
+ frow, fcol,
+ nrow, nbuf));
+
+ if (!field)
RETURN(E_BAD_ARGUMENT);
- if (rows) *rows = field->rows;
- if (cols) *cols = field->cols;
- if (frow) *frow = field->frow;
- if (fcol) *fcol = field->fcol;
- if (nrow) *nrow = field->nrow;
- if (nbuf) *nbuf = field->nbuf;
+ if (rows)
+ *rows = field->rows;
+ if (cols)
+ *cols = field->cols;
+ if (frow)
+ *frow = field->frow;
+ if (fcol)
+ *fcol = field->fcol;
+ if (nrow)
+ *nrow = field->nrow;
+ if (nbuf)
+ *nbuf = field->nbuf;
RETURN(E_OK);
}
-
+
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : int dynamic_field_info(const FIELD *field,
@@ -78,15 +89,19 @@ field_info
| E_BAD_ARGUMENT - invalid argument
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-dynamic_field_info
-(const FIELD *field, int *drows, int *dcols, int *maxgrow)
+dynamic_field_info(const FIELD *field, int *drows, int *dcols, int *maxgrow)
{
+ T((T_CALLED("dynamic_field_info(%p,%p,%p,%p)"), field, drows, dcols, maxgrow));
+
if (!field)
RETURN(E_BAD_ARGUMENT);
- if (drows) *drows = field->drows;
- if (dcols) *dcols = field->dcols;
- if (maxgrow) *maxgrow = field->maxgrow;
+ if (drows)
+ *drows = field->drows;
+ if (dcols)
+ *dcols = field->dcols;
+ if (maxgrow)
+ *maxgrow = field->maxgrow;
RETURN(E_OK);
}
diff --git a/contrib/ncurses/form/fld_just.c b/contrib/ncurses/form/fld_just.c
index a30f2f9d0c02..e021fb1cfb92 100644
--- a/contrib/ncurses/form/fld_just.c
+++ b/contrib/ncurses/form/fld_just.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_just.c,v 1.6 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_just.c,v 1.11 2004/12/11 22:55:48 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -45,20 +45,22 @@ MODULE_ID("$Id: fld_just.c,v 1.6 2000/12/10 02:09:38 tom Exp $")
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_field_just (FIELD * field, int just)
+set_field_just(FIELD *field, int just)
{
int res = E_BAD_ARGUMENT;
- if ((just==NO_JUSTIFICATION) ||
- (just==JUSTIFY_LEFT) ||
- (just==JUSTIFY_CENTER) ||
- (just==JUSTIFY_RIGHT) )
+ T((T_CALLED("set_field_just(%p,%d)"), field, just));
+
+ if ((just == NO_JUSTIFICATION) ||
+ (just == JUSTIFY_LEFT) ||
+ (just == JUSTIFY_CENTER) ||
+ (just == JUSTIFY_RIGHT))
{
- Normalize_Field( field );
+ Normalize_Field(field);
if (field->just != just)
{
field->just = just;
- res = _nc_Synchronize_Attributes( field );
+ res = _nc_Synchronize_Attributes(field);
}
else
res = E_OK;
@@ -75,9 +77,10 @@ set_field_just (FIELD * field, int just)
| Return Values : The justification type.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-field_just (const FIELD * field)
+field_just(const FIELD *field)
{
- return Normalize_Field( field )->just;
+ T((T_CALLED("field_just(%p)"), field));
+ returnCode(Normalize_Field(field)->just);
}
/* fld_just.c ends here */
diff --git a/contrib/ncurses/form/fld_link.c b/contrib/ncurses/form/fld_link.c
index 0b0a033068f2..f15166401f9a 100644
--- a/contrib/ncurses/form/fld_link.c
+++ b/contrib/ncurses/form/fld_link.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_link.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_link.c,v 1.9 2004/12/25 22:24:10 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -49,43 +49,47 @@ MODULE_ID("$Id: fld_link.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| Return Values : Pointer to the new field or NULL if failure
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FIELD *)
-link_field (FIELD * field, int frow, int fcol)
+link_field(FIELD *field, int frow, int fcol)
{
FIELD *New_Field = (FIELD *)0;
int err = E_BAD_ARGUMENT;
- if (field && (frow>=0) && (fcol>=0) &&
- ((err=E_SYSTEM_ERROR) != 0) && /* trick: this resets the default error */
- (New_Field = (FIELD *)malloc(sizeof(FIELD))) )
+ T((T_CALLED("link_field(%p,%d,%d)"), field, frow, fcol));
+ if (field && (frow >= 0) && (fcol >= 0) &&
+ ((err = E_SYSTEM_ERROR) != 0) && /* trick: this resets the default error */
+ (New_Field = (FIELD *)malloc(sizeof(FIELD))))
{
- *New_Field = *_nc_Default_Field;
- New_Field->frow = frow;
- New_Field->fcol = fcol;
- New_Field->link = field->link;
- field->link = New_Field;
- New_Field->buf = field->buf;
- New_Field->rows = field->rows;
- New_Field->cols = field->cols;
- New_Field->nrow = field->nrow;
- New_Field->nbuf = field->nbuf;
- New_Field->drows = field->drows;
- New_Field->dcols = field->dcols;
- New_Field->maxgrow= field->maxgrow;
- New_Field->just = field->just;
- New_Field->fore = field->fore;
- New_Field->back = field->back;
- New_Field->pad = field->pad;
- New_Field->opts = field->opts;
+ *New_Field = *_nc_Default_Field;
+ New_Field->frow = frow;
+ New_Field->fcol = fcol;
+
+ New_Field->link = field->link;
+ field->link = New_Field;
+
+ New_Field->buf = field->buf;
+ New_Field->rows = field->rows;
+ New_Field->cols = field->cols;
+ New_Field->nrow = field->nrow;
+ New_Field->nbuf = field->nbuf;
+ New_Field->drows = field->drows;
+ New_Field->dcols = field->dcols;
+ New_Field->maxgrow = field->maxgrow;
+ New_Field->just = field->just;
+ New_Field->fore = field->fore;
+ New_Field->back = field->back;
+ New_Field->pad = field->pad;
+ New_Field->opts = field->opts;
New_Field->usrptr = field->usrptr;
- if (_nc_Copy_Type(New_Field,field))
- return New_Field;
+
+ if (_nc_Copy_Type(New_Field, field))
+ returnField(New_Field);
}
- if (New_Field)
+ if (New_Field)
free_field(New_Field);
- SET_ERROR( err );
- return (FIELD *)0;
+ SET_ERROR(err);
+ returnField((FIELD *)0);
}
/* fld_link.c ends here */
diff --git a/contrib/ncurses/form/fld_max.c b/contrib/ncurses/form/fld_max.c
index 2e5e2389b32b..7f5352e00d6e 100644
--- a/contrib/ncurses/form/fld_max.c
+++ b/contrib/ncurses/form/fld_max.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_max.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_max.c,v 1.9 2004/12/11 21:51:54 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -45,17 +45,19 @@ MODULE_ID("$Id: fld_max.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| E_BAD_ARGUMENT - invalid argument
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_max_field (FIELD *field, int maxgrow)
+set_max_field(FIELD *field, int maxgrow)
{
- if (!field || (maxgrow<0))
+ T((T_CALLED("set_max_field(%p,%d)"), field, maxgrow));
+
+ if (!field || (maxgrow < 0))
RETURN(E_BAD_ARGUMENT);
else
{
bool single_line_field = Single_Line_Field(field);
- if (maxgrow>0)
+ if (maxgrow > 0)
{
- if (( single_line_field && (maxgrow < field->dcols)) ||
+ if ((single_line_field && (maxgrow < field->dcols)) ||
(!single_line_field && (maxgrow < field->drows)))
RETURN(E_BAD_ARGUMENT);
}
@@ -63,13 +65,13 @@ set_max_field (FIELD *field, int maxgrow)
field->status &= ~_MAY_GROW;
if (!(field->opts & O_STATIC))
{
- if ((maxgrow==0) ||
- ( single_line_field && (field->dcols < maxgrow)) ||
+ if ((maxgrow == 0) ||
+ (single_line_field && (field->dcols < maxgrow)) ||
(!single_line_field && (field->drows < maxgrow)))
field->status |= _MAY_GROW;
}
}
RETURN(E_OK);
}
-
+
/* fld_max.c ends here */
diff --git a/contrib/ncurses/form/fld_move.c b/contrib/ncurses/form/fld_move.c
index fc3715685cad..d9ceaaec2c9c 100644
--- a/contrib/ncurses/form/fld_move.c
+++ b/contrib/ncurses/form/fld_move.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_move.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_move.c,v 1.9 2004/12/11 21:52:44 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -46,12 +46,14 @@ MODULE_ID("$Id: fld_move.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| E_CONNECTED - field is connected
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-move_field (FIELD *field, int frow, int fcol)
+move_field(FIELD *field, int frow, int fcol)
{
- if ( !field || (frow<0) || (fcol<0) )
+ T((T_CALLED("move_field(%p,%d,%d)"), field, frow, fcol));
+
+ if (!field || (frow < 0) || (fcol < 0))
RETURN(E_BAD_ARGUMENT);
- if (field->form)
+ if (field->form)
RETURN(E_CONNECTED);
field->frow = frow;
@@ -60,4 +62,3 @@ move_field (FIELD *field, int frow, int fcol)
}
/* fld_move.c ends here */
-
diff --git a/contrib/ncurses/form/fld_newftyp.c b/contrib/ncurses/form/fld_newftyp.c
index e0c8b33114c3..235cd5f5e432 100644
--- a/contrib/ncurses/form/fld_newftyp.c
+++ b/contrib/ncurses/form/fld_newftyp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,54 +27,57 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_newftyp.c,v 1.6 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_newftyp.c,v 1.13 2004/12/25 22:24:10 tom Exp $")
-static FIELDTYPE const default_fieldtype = {
- 0, /* status */
- 0L, /* reference count */
- (FIELDTYPE *)0, /* pointer to left operand */
- (FIELDTYPE *)0, /* pointer to right operand */
- NULL, /* makearg function */
- NULL, /* copyarg function */
- NULL, /* freearg function */
- NULL, /* field validation function */
- NULL, /* Character check function */
- NULL, /* enumerate next function */
- NULL /* enumerate previous function */
+static FIELDTYPE const default_fieldtype =
+{
+ 0, /* status */
+ 0L, /* reference count */
+ (FIELDTYPE *)0, /* pointer to left operand */
+ (FIELDTYPE *)0, /* pointer to right operand */
+ NULL, /* makearg function */
+ NULL, /* copyarg function */
+ NULL, /* freearg function */
+ NULL, /* field validation function */
+ NULL, /* Character check function */
+ NULL, /* enumerate next function */
+ NULL /* enumerate previous function */
};
-NCURSES_EXPORT_VAR(const FIELDTYPE*) _nc_Default_FieldType = &default_fieldtype;
-
+NCURSES_EXPORT_VAR(const FIELDTYPE *)
+_nc_Default_FieldType = &default_fieldtype;
+
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : FIELDTYPE *new_fieldtype(
| bool (* const field_check)(FIELD *,const void *),
-| bool (* const char_check) (int, const void *) )
-|
+| bool (* const char_check) (int, const void *) )
+|
| Description : Create a new fieldtype. The application programmer must
| write a field_check and a char_check function and give
| them as input to this call.
-| If an error occurs, errno is set to
+| If an error occurs, errno is set to
| E_BAD_ARGUMENT - invalid arguments
| E_SYSTEM_ERROR - system error (no memory)
|
-| Return Values : Fieldtype pointer or NULL if error occured
+| Return Values : Fieldtype pointer or NULL if error occurred
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FIELDTYPE *)
-new_fieldtype (
- bool (* const field_check)(FIELD *,const void *),
- bool (* const char_check) (int,const void *) )
+new_fieldtype(bool (*const field_check) (FIELD *, const void *),
+ bool (*const char_check) (int, const void *))
{
FIELDTYPE *nftyp = (FIELDTYPE *)0;
-
- if ( (field_check) || (char_check) )
+
+ T((T_CALLED("new_fieldtype(%p,%p)"), field_check, char_check));
+ if ((field_check) || (char_check))
{
nftyp = (FIELDTYPE *)malloc(sizeof(FIELDTYPE));
+
if (nftyp)
{
*nftyp = default_fieldtype;
@@ -83,20 +86,20 @@ new_fieldtype (
}
else
{
- SET_ERROR( E_SYSTEM_ERROR );
+ SET_ERROR(E_SYSTEM_ERROR);
}
}
else
{
- SET_ERROR( E_BAD_ARGUMENT );
+ SET_ERROR(E_BAD_ARGUMENT);
}
- return nftyp;
+ returnFieldType(nftyp);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int free_fieldtype(FIELDTYPE *typ)
-|
+|
| Description : Release the memory associated with this fieldtype.
|
| Return Values : E_OK - success
@@ -104,12 +107,14 @@ new_fieldtype (
| E_BAD_ARGUMENT - invalid fieldtype pointer
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-free_fieldtype (FIELDTYPE *typ)
+free_fieldtype(FIELDTYPE *typ)
{
+ T((T_CALLED("free_fieldtype(%p)"), typ));
+
if (!typ)
RETURN(E_BAD_ARGUMENT);
- if (typ->ref!=0)
+ if (typ->ref != 0)
RETURN(E_CONNECTED);
if (typ->status & _RESIDENT)
@@ -117,8 +122,10 @@ free_fieldtype (FIELDTYPE *typ)
if (typ->status & _LINKED_TYPE)
{
- if (typ->left ) typ->left->ref--;
- if (typ->right) typ->right->ref--;
+ if (typ->left)
+ typ->left->ref--;
+ if (typ->right)
+ typ->right->ref--;
}
free(typ);
RETURN(E_OK);
diff --git a/contrib/ncurses/form/fld_opts.c b/contrib/ncurses/form/fld_opts.c
index 19b3642af6d4..3c881acf081a 100644
--- a/contrib/ncurses/form/fld_opts.c
+++ b/contrib/ncurses/form/fld_opts.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+
#include "form.priv.h"
-MODULE_ID("$Id: fld_opts.c,v 1.7 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_opts.c,v 1.11 2004/12/11 21:55:46 tom Exp $")
/*----------------------------------------------------------------------------
Field-Options manipulation routines
@@ -50,12 +51,15 @@ MODULE_ID("$Id: fld_opts.c,v 1.7 2000/12/10 02:09:38 tom Exp $")
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_field_opts (FIELD * field, Field_Options opts)
+set_field_opts(FIELD *field, Field_Options opts)
{
int res = E_BAD_ARGUMENT;
+
+ T((T_CALLED("set_field_opts(%p,%d)"), field, opts));
+
opts &= ALL_FIELD_OPTS;
if (!(opts & ~ALL_FIELD_OPTS))
- res = _nc_Synchronize_Options( Normalize_Field(field), opts );
+ res = _nc_Synchronize_Options(Normalize_Field(field), opts);
RETURN(res);
}
@@ -68,9 +72,11 @@ set_field_opts (FIELD * field, Field_Options opts)
| Return Values : The options.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(Field_Options)
-field_opts (const FIELD * field)
+field_opts(const FIELD *field)
{
- return ALL_FIELD_OPTS & Normalize_Field( field )->opts;
+ T((T_CALLED("field_opts(%p)"), field));
+
+ returnCode(ALL_FIELD_OPTS & Normalize_Field(field)->opts);
}
/*---------------------------------------------------------------------------
@@ -86,15 +92,17 @@ field_opts (const FIELD * field)
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-field_opts_on (FIELD * field, Field_Options opts)
+field_opts_on(FIELD *field, Field_Options opts)
{
int res = E_BAD_ARGUMENT;
+ T((T_CALLED("field_opts_on(%p,%d)"), field, opts));
+
opts &= ALL_FIELD_OPTS;
if (!(opts & ~ALL_FIELD_OPTS))
{
- Normalize_Field( field );
- res = _nc_Synchronize_Options( field, field->opts | opts );
+ Normalize_Field(field);
+ res = _nc_Synchronize_Options(field, field->opts | opts);
}
RETURN(res);
}
@@ -112,17 +120,19 @@ field_opts_on (FIELD * field, Field_Options opts)
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-field_opts_off (FIELD * field, Field_Options opts)
+field_opts_off(FIELD *field, Field_Options opts)
{
int res = E_BAD_ARGUMENT;
+ T((T_CALLED("field_opts_off(%p,%d)"), field, opts));
+
opts &= ALL_FIELD_OPTS;
if (!(opts & ~ALL_FIELD_OPTS))
{
- Normalize_Field( field );
- res = _nc_Synchronize_Options( field, field->opts & ~opts );
+ Normalize_Field(field);
+ res = _nc_Synchronize_Options(field, field->opts & ~opts);
}
RETURN(res);
-}
+}
/* fld_opts.c ends here */
diff --git a/contrib/ncurses/form/fld_pad.c b/contrib/ncurses/form/fld_pad.c
index f4556b2a7130..63d8ad1cdbfa 100644
--- a/contrib/ncurses/form/fld_pad.c
+++ b/contrib/ncurses/form/fld_pad.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+
#include "form.priv.h"
-MODULE_ID("$Id: fld_pad.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_pad.c,v 1.9 2004/12/11 21:56:49 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -45,17 +46,19 @@ MODULE_ID("$Id: fld_pad.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_field_pad (FIELD * field, int ch)
+set_field_pad(FIELD *field, int ch)
{
int res = E_BAD_ARGUMENT;
- Normalize_Field( field );
- if (isprint((unsigned char)ch))
+ T((T_CALLED("set_field_pad(%p,%d)"), field, ch));
+
+ Normalize_Field(field);
+ if (isprint(UChar(ch)))
{
if (field->pad != ch)
{
field->pad = ch;
- res = _nc_Synchronize_Attributes( field );
+ res = _nc_Synchronize_Attributes(field);
}
else
res = E_OK;
@@ -72,9 +75,11 @@ set_field_pad (FIELD * field, int ch)
| Return Values : The pad character.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-field_pad (const FIELD * field)
+field_pad(const FIELD *field)
{
- return Normalize_Field( field )->pad;
+ T((T_CALLED("field_pad(%p)"), field));
+
+ returnCode(Normalize_Field(field)->pad);
}
/* fld_pad.c ends here */
diff --git a/contrib/ncurses/form/fld_page.c b/contrib/ncurses/form/fld_page.c
index b6ddbc7b73f2..e1af4962b148 100644
--- a/contrib/ncurses/form/fld_page.c
+++ b/contrib/ncurses/form/fld_page.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_page.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_page.c,v 1.9 2004/12/11 21:58:19 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -45,13 +45,15 @@ MODULE_ID("$Id: fld_page.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| E_CONNECTED - field is connected
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_new_page (FIELD * field, bool new_page_flag)
+set_new_page(FIELD *field, bool new_page_flag)
{
+ T((T_CALLED("set_new_page(%p,%d)"), field, new_page_flag));
+
Normalize_Field(field);
- if (field->form)
+ if (field->form)
RETURN(E_CONNECTED);
- if (new_page_flag)
+ if (new_page_flag)
field->status |= _NEWPAGE;
else
field->status &= ~_NEWPAGE;
@@ -70,9 +72,11 @@ set_new_page (FIELD * field, bool new_page_flag)
| FALSE - field doesn't start a new page
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(bool)
-new_page (const FIELD * field)
+new_page(const FIELD *field)
{
- return (Normalize_Field(field)->status & _NEWPAGE) ? TRUE : FALSE;
+ T((T_CALLED("new_page(%p)"), field));
+
+ returnBool((Normalize_Field(field)->status & _NEWPAGE) ? TRUE : FALSE);
}
/* fld_page.c ends here */
diff --git a/contrib/ncurses/form/fld_stat.c b/contrib/ncurses/form/fld_stat.c
index df5181be008d..b85b4d55f244 100644
--- a/contrib/ncurses/form/fld_stat.c
+++ b/contrib/ncurses/form/fld_stat.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_stat.c,v 1.7 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_stat.c,v 1.11 2004/12/11 22:28:00 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -44,16 +44,18 @@ MODULE_ID("$Id: fld_stat.c,v 1.7 2000/12/10 02:09:38 tom Exp $")
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_field_status (FIELD * field, bool status)
+set_field_status(FIELD *field, bool status)
{
- Normalize_Field( field );
+ T((T_CALLED("set_field_status(%p,%d)"), field, status));
+
+ Normalize_Field(field);
if (status)
field->status |= _CHANGED;
else
field->status &= ~_CHANGED;
- return(E_OK);
+ RETURN(E_OK);
}
/*---------------------------------------------------------------------------
@@ -67,9 +69,11 @@ set_field_status (FIELD * field, bool status)
| FALSE - buffer has not been changed
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(bool)
-field_status (const FIELD * field)
+field_status(const FIELD *field)
{
- return ((Normalize_Field(field)->status & _CHANGED) ? TRUE : FALSE);
+ T((T_CALLED("field_status(%p)"), field));
+
+ returnBool((Normalize_Field(field)->status & _CHANGED) ? TRUE : FALSE);
}
/* fld_stat.c ends here */
diff --git a/contrib/ncurses/form/fld_type.c b/contrib/ncurses/form/fld_type.c
index 831c7852c3e1..c9a3fbe5c804 100644
--- a/contrib/ncurses/form/fld_type.c
+++ b/contrib/ncurses/form/fld_type.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_type.c,v 1.10 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_type.c,v 1.15 2004/12/25 22:24:10 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -46,30 +46,32 @@ MODULE_ID("$Id: fld_type.c,v 1.10 2000/12/10 02:09:38 tom Exp $")
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_field_type (FIELD *field,FIELDTYPE *type, ...)
+set_field_type(FIELD *field, FIELDTYPE *type,...)
{
va_list ap;
int res = E_SYSTEM_ERROR;
int err = 0;
- va_start(ap,type);
+ T((T_CALLED("set_field_type(%p,%p)"), field, type));
+
+ va_start(ap, type);
Normalize_Field(field);
_nc_Free_Type(field);
field->type = type;
- field->arg = (void *)_nc_Make_Argument(field->type,&ap,&err);
+ field->arg = (void *)_nc_Make_Argument(field->type, &ap, &err);
if (err)
{
- _nc_Free_Argument(field->type,(TypeArgument *)(field->arg));
+ _nc_Free_Argument(field->type, (TypeArgument *)(field->arg));
field->type = (FIELDTYPE *)0;
- field->arg = (void *)0;
+ field->arg = (void *)0;
}
else
{
res = E_OK;
- if (field->type)
+ if (field->type)
field->type->ref++;
}
@@ -86,9 +88,10 @@ set_field_type (FIELD *field,FIELDTYPE *type, ...)
| Return Values : Pointer to fieldtype of NULL if none is defined.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FIELDTYPE *)
-field_type (const FIELD * field)
+field_type(const FIELD *field)
{
- return Normalize_Field(field)->type;
+ T((T_CALLED("field_type(%p)"), field));
+ returnFieldType(Normalize_Field(field)->type);
}
/* fld_type.c ends here */
diff --git a/contrib/ncurses/form/fld_user.c b/contrib/ncurses/form/fld_user.c
index 5e668b4e556b..323622c7b379 100644
--- a/contrib/ncurses/form/fld_user.c
+++ b/contrib/ncurses/form/fld_user.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fld_user.c,v 1.9 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: fld_user.c,v 1.15 2004/12/25 22:24:50 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -44,9 +44,11 @@ MODULE_ID("$Id: fld_user.c,v 1.9 2000/12/10 02:09:38 tom Exp $")
| Return Values : E_OK - on success
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_field_userptr (FIELD * field, void *usrptr)
+set_field_userptr(FIELD *field, void *usrptr)
{
- Normalize_Field( field )->usrptr = usrptr;
+ T((T_CALLED("set_field_userptr(%p,%p)"), field, usrptr));
+
+ Normalize_Field(field)->usrptr = usrptr;
RETURN(E_OK);
}
@@ -61,9 +63,10 @@ set_field_userptr (FIELD * field, void *usrptr)
| NULL is returned
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void *)
-field_userptr (const FIELD *field)
+field_userptr(const FIELD *field)
{
- return Normalize_Field( field )->usrptr;
+ T((T_CALLED("field_userptr(%p)"), field));
+ returnVoidPtr(Normalize_Field(field)->usrptr);
}
/* fld_user.c ends here */
diff --git a/contrib/ncurses/form/form.h b/contrib/ncurses/form/form.h
index 140b25f0ab38..a4691a86e8e7 100644
--- a/contrib/ncurses/form/form.h
+++ b/contrib/ncurses/form/form.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,11 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+/* $Id: form.h,v 0.20 2004/12/04 22:22:10 tom Exp $ */
+
#ifndef FORM_H
#define FORM_H
@@ -40,6 +42,14 @@
extern "C" {
#endif
+#ifndef FORM_PRIV_H
+typedef void *FIELD_CELL;
+#endif
+
+#ifndef NCURSES_FIELD_INTERNALS
+#define NCURSES_FIELD_INTERNALS /* nothing */
+#endif
+
typedef int Form_Options;
typedef int Field_Options;
@@ -48,10 +58,10 @@ typedef int Field_Options;
**********/
typedef struct {
- 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 */
+ 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;
/**********
@@ -59,31 +69,40 @@ typedef struct {
**********/
typedef struct fieldnode {
- unsigned short status; /* flags */
- short rows; /* size in rows */
- short cols; /* size in cols */
- short frow; /* first row */
- short fcol; /* first col */
- int drows; /* dynamic rows */
- int dcols; /* dynamic cols */
- int maxgrow; /* maximum field growth */
- int nrow; /* offscreen rows */
- short nbuf; /* additional buffers */
- short just; /* justification */
- short page; /* page on form */
- short index; /* into form -> field */
- int pad; /* pad character */
- chtype fore; /* foreground attribute */
- chtype back; /* background attribute */
- Field_Options opts; /* options */
- struct fieldnode * snext; /* sorted order pointer */
- struct fieldnode * sprev; /* sorted order pointer */
- struct fieldnode * link; /* linked field chain */
- struct formnode * form; /* containing form */
- struct typenode * type; /* field type */
- void * arg; /* argument for type */
- char * buf; /* field buffers */
- void * usrptr; /* user pointer */
+ unsigned short status; /* flags */
+ short rows; /* size in rows */
+ short cols; /* size in cols */
+ short frow; /* first row */
+ short fcol; /* first col */
+ int drows; /* dynamic rows */
+ int dcols; /* dynamic cols */
+ int maxgrow; /* maximum field growth */
+ int nrow; /* off-screen rows */
+ short nbuf; /* additional buffers */
+ short just; /* justification */
+ short page; /* page on form */
+ short index; /* into form -> field */
+ int pad; /* pad character */
+ chtype fore; /* foreground attribute */
+ chtype back; /* background attribute */
+ Field_Options opts; /* options */
+ struct fieldnode * snext; /* sorted order pointer */
+ struct fieldnode * sprev; /* sorted order pointer */
+ struct fieldnode * link; /* linked field chain */
+ struct formnode * form; /* containing form */
+ struct typenode * type; /* field type */
+ void * arg; /* argument for type */
+ FIELD_CELL * buf; /* field buffers */
+ void * usrptr; /* user pointer */
+ /*
+ * 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.
+ */
+ NCURSES_FIELD_INTERNALS
} FIELD;
/**************
@@ -91,20 +110,20 @@ typedef struct fieldnode {
**************/
typedef struct typenode {
- unsigned short status; /* flags */
- long ref; /* reference count */
- struct typenode * left; /* ptr to operand for | */
- struct typenode * right; /* ptr to operand for | */
+ unsigned short status; /* flags */
+ long ref; /* reference count */
+ struct typenode * left; /* ptr to operand for | */
+ struct typenode * right; /* ptr to operand for | */
- void* (*makearg)(va_list *); /* make fieldtype arg */
- void* (*copyarg)(const void *); /* copy fieldtype arg */
- void (*freearg)(void *); /* free fieldtype arg */
+ void* (*makearg)(va_list *); /* make fieldtype arg */
+ void* (*copyarg)(const void *); /* copy fieldtype arg */
+ void (*freearg)(void *); /* free fieldtype arg */
- bool (*fcheck)(FIELD *,const void *); /* field validation */
- bool (*ccheck)(int,const void *); /* character validation */
+ bool (*fcheck)(FIELD *,const void *); /* field validation */
+ bool (*ccheck)(int,const void *); /* character validation */
- bool (*next)(FIELD *,const void *); /* enumerate next value */
- bool (*prev)(FIELD *,const void *); /* enumerate prev value */
+ bool (*next)(FIELD *,const void *); /* enumerate next value */
+ bool (*prev)(FIELD *,const void *); /* enumerate prev value */
} FIELDTYPE;
@@ -113,29 +132,29 @@ typedef struct typenode {
*********/
typedef struct formnode {
- unsigned short status; /* flags */
- short rows; /* size in rows */
- short cols; /* size in cols */
- int currow; /* current row in field window*/
- int curcol; /* current col in field window*/
- int toprow; /* in scrollable field window */
- int begincol; /* in horiz. scrollable field */
- short maxfield; /* number of fields */
- short maxpage; /* number of pages */
- short curpage; /* index into page */
- Form_Options opts; /* options */
- WINDOW * win; /* window */
- WINDOW * sub; /* subwindow */
- WINDOW * w; /* window for current field */
- FIELD ** field; /* field [maxfield] */
- FIELD * current; /* current field */
- _PAGE * page; /* page [maxpage] */
- void * usrptr; /* user pointer */
-
- void (*forminit)(struct formnode *);
- void (*formterm)(struct formnode *);
- void (*fieldinit)(struct formnode *);
- void (*fieldterm)(struct formnode *);
+ unsigned short status; /* flags */
+ short rows; /* size in rows */
+ short cols; /* size in cols */
+ int currow; /* current row in field window */
+ int curcol; /* current col in field window */
+ int toprow; /* in scrollable field window */
+ int begincol; /* in horiz. scrollable field */
+ short maxfield; /* number of fields */
+ short maxpage; /* number of pages */
+ short curpage; /* index into page */
+ Form_Options opts; /* options */
+ WINDOW * win; /* window */
+ WINDOW * sub; /* subwindow */
+ WINDOW * w; /* window for current field */
+ FIELD ** field; /* field [maxfield] */
+ FIELD * current; /* current field */
+ _PAGE * page; /* page [maxpage] */
+ void * usrptr; /* user pointer */
+
+ void (*forminit)(struct formnode *);
+ void (*formterm)(struct formnode *);
+ void (*fieldinit)(struct formnode *);
+ void (*fieldterm)(struct formnode *);
} FORM;
@@ -152,20 +171,20 @@ typedef void (*Form_Hook)(FORM *);
#define JUSTIFY_RIGHT (3)
/* field options */
-#define O_VISIBLE (0x0001)
-#define O_ACTIVE (0x0002)
-#define O_PUBLIC (0x0004)
-#define O_EDIT (0x0008)
-#define O_WRAP (0x0010)
-#define O_BLANK (0x0020)
-#define O_AUTOSKIP (0x0040)
-#define O_NULLOK (0x0080)
-#define O_PASSOK (0x0100)
-#define O_STATIC (0x0200)
+#define O_VISIBLE (0x0001U)
+#define O_ACTIVE (0x0002U)
+#define O_PUBLIC (0x0004U)
+#define O_EDIT (0x0008U)
+#define O_WRAP (0x0010U)
+#define O_BLANK (0x0020U)
+#define O_AUTOSKIP (0x0040U)
+#define O_NULLOK (0x0080U)
+#define O_PASSOK (0x0100U)
+#define O_STATIC (0x0200U)
/* form options */
-#define O_NL_OVERLOAD (0x0001)
-#define O_BS_OVERLOAD (0x0002)
+#define O_NL_OVERLOAD (0x0001U)
+#define O_BS_OVERLOAD (0x0002U)
/* form driver commands */
#define REQ_NEXT_PAGE (KEY_MAX + 1) /* move to next page */
@@ -207,7 +226,7 @@ typedef void (*Form_Hook)(FORM *);
#define REQ_DEL_CHAR (KEY_MAX + 34) /* delete char at cursor */
#define REQ_DEL_PREV (KEY_MAX + 35) /* delete char before cursor */
#define REQ_DEL_LINE (KEY_MAX + 36) /* delete line at cursor */
-#define REQ_DEL_WORD (KEY_MAX + 37) /* delete line at cursor */
+#define REQ_DEL_WORD (KEY_MAX + 37) /* delete word at cursor */
#define REQ_CLR_EOL (KEY_MAX + 38) /* clear to end of line */
#define REQ_CLR_EOF (KEY_MAX + 39) /* clear to end of field */
#define REQ_CLR_FIELD (KEY_MAX + 40) /* clear entire field */
@@ -217,14 +236,14 @@ typedef void (*Form_Hook)(FORM *);
#define REQ_SCR_BLINE (KEY_MAX + 44) /* scroll field backward a line */
#define REQ_SCR_FPAGE (KEY_MAX + 45) /* scroll field forward a page */
#define REQ_SCR_BPAGE (KEY_MAX + 46) /* scroll field backward a page */
-#define REQ_SCR_FHPAGE (KEY_MAX + 47) /* scroll field forward half page */
-#define REQ_SCR_BHPAGE (KEY_MAX + 48) /* scroll field backward half page */
-#define REQ_SCR_FCHAR (KEY_MAX + 49) /* horizontal scroll char */
-#define REQ_SCR_BCHAR (KEY_MAX + 50) /* horizontal scroll char */
-#define REQ_SCR_HFLINE (KEY_MAX + 51) /* horizontal scroll line */
-#define REQ_SCR_HBLINE (KEY_MAX + 52) /* horizontal scroll line */
-#define REQ_SCR_HFHALF (KEY_MAX + 53) /* horizontal scroll half line */
-#define REQ_SCR_HBHALF (KEY_MAX + 54) /* horizontal scroll half line */
+#define REQ_SCR_FHPAGE (KEY_MAX + 47) /* scroll field forward half page */
+#define REQ_SCR_BHPAGE (KEY_MAX + 48) /* scroll field backward half page */
+#define REQ_SCR_FCHAR (KEY_MAX + 49) /* horizontal scroll char */
+#define REQ_SCR_BCHAR (KEY_MAX + 50) /* horizontal scroll char */
+#define REQ_SCR_HFLINE (KEY_MAX + 51) /* horizontal scroll line */
+#define REQ_SCR_HBLINE (KEY_MAX + 52) /* horizontal scroll line */
+#define REQ_SCR_HFHALF (KEY_MAX + 53) /* horizontal scroll half line */
+#define REQ_SCR_HBHALF (KEY_MAX + 54) /* horizontal scroll half line */
#define REQ_VALIDATION (KEY_MAX + 55) /* validate field */
#define REQ_NEXT_CHOICE (KEY_MAX + 56) /* display next field choice */
@@ -253,15 +272,15 @@ extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER;
extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC;
extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP;
- /************************************
+ /************************************
* built-in additional field types *
- * They are not defined in SVr4 *
+ * They are not defined in SVr4 *
************************************/
extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4; /* Internet IP Version 4 address */
- /***********************
- * Default objects *
- ***********************/
+ /***********************
+ * Default objects *
+ ***********************/
extern NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form;
extern NCURSES_EXPORT_VAR(FIELD *) _nc_Default_Field;
@@ -271,8 +290,9 @@ extern NCURSES_EXPORT_VAR(FIELD *) _nc_Default_Field;
***********************/
extern NCURSES_EXPORT(FIELDTYPE *) new_fieldtype (
bool (* const field_check)(FIELD *,const void *),
- bool (* const char_check)(int,const void *)),
- *link_fieldtype(FIELDTYPE *,FIELDTYPE *);
+ bool (* const char_check)(int,const void *));
+extern NCURSES_EXPORT(FIELDTYPE *) link_fieldtype(
+ FIELDTYPE *, FIELDTYPE *);
extern NCURSES_EXPORT(int) free_fieldtype (FIELDTYPE *);
extern NCURSES_EXPORT(int) set_fieldtype_arg (FIELDTYPE *,
@@ -324,7 +344,7 @@ extern NCURSES_EXPORT(FIELDTYPE *) field_type (const FIELD *);
extern NCURSES_EXPORT(char *) field_buffer (const FIELD *,int);
-extern NCURSES_EXPORT(Field_Options) field_opts (const FIELD *);
+extern NCURSES_EXPORT(Field_Options) field_opts (const FIELD *);
/******************
* FORM routines *
diff --git a/contrib/ncurses/form/form.priv.h b/contrib/ncurses/form/form.priv.h
index 73c5e9a052e5..e8617f1d5747 100644
--- a/contrib/ncurses/form/form.priv.h
+++ b/contrib/ncurses/form/form.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,38 +27,71 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+/* $Id: form.priv.h,v 0.26 2006/12/17 19:47:09 tom Exp $ */
+
+#ifndef FORM_PRIV_H
+#define FORM_PRIV_H 1
+
+#include "curses.priv.h"
#include "mf_common.h"
+
+#if USE_WIDEC_SUPPORT
+#include <wchar.h>
+
+#if HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
+
+#ifndef MB_LEN_MAX
+#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */
+#endif
+
+#define FIELD_CELL NCURSES_CH_T
+
+#define NCURSES_FIELD_INTERNALS char** expanded; WINDOW *working;
+#define NCURSES_FIELD_EXTENSION , (char **)0, (WINDOW *)0
+
+#else
+
+#define FIELD_CELL char
+
+#define NCURSES_FIELD_EXTENSION /* nothing */
+
+#endif
+
#include "form.h"
/* form status values */
-#define _OVLMODE (0x04) /* Form is in overlay mode */
-#define _WINDOW_MODIFIED (0x10) /* Current field window has been modified */
-#define _FCHECK_REQUIRED (0x20) /* Current field needs validation */
+#define _OVLMODE (0x04U) /* Form is in overlay mode */
+#define _WINDOW_MODIFIED (0x10U) /* Current field window has been modified */
+#define _FCHECK_REQUIRED (0x20U) /* Current field needs validation */
/* field status values */
-#define _CHANGED (0x01) /* Field has been changed */
-#define _NEWTOP (0x02) /* Vertical scrolling occured */
-#define _NEWPAGE (0x04) /* field begins new page of form */
-#define _MAY_GROW (0x08) /* dynamic field may still grow */
+#define _CHANGED (0x01U) /* Field has been changed */
+#define _NEWTOP (0x02U) /* Vertical scrolling occurred */
+#define _NEWPAGE (0x04U) /* field begins new page of form */
+#define _MAY_GROW (0x08U) /* dynamic field may still grow */
/* fieldtype status values */
-#define _LINKED_TYPE (0x01) /* Type is a linked type */
-#define _HAS_ARGS (0x02) /* Type has arguments */
-#define _HAS_CHOICE (0x04) /* Type has choice methods */
-#define _RESIDENT (0x08) /* Type is builtin */
+#define _LINKED_TYPE (0x01U) /* Type is a linked type */
+#define _HAS_ARGS (0x02U) /* Type has arguments */
+#define _HAS_CHOICE (0x04U) /* Type has choice methods */
+#define _RESIDENT (0x08U) /* Type is built-in */
/* This are the field options required to be a selectable field in field
navigation requests */
#define O_SELECTABLE (O_ACTIVE | O_VISIBLE)
/* If form is NULL replace form argument by default-form */
-#define Normalize_Form(form) ((form)=(form)?(form):_nc_Default_Form)
+#define Normalize_Form(form) \
+ ((form) = (form != 0) ? (form) : _nc_Default_Form)
/* If field is NULL replace field argument by default-field */
-#define Normalize_Field(field) ((field)=(field)?(field):_nc_Default_Field)
+#define Normalize_Field(field) \
+ ((field) = (field != 0) ? (field) : _nc_Default_Field)
/* Retrieve forms window */
#define Get_Form_Window(form) \
@@ -69,20 +102,22 @@
/* Calculate the total size of all buffers for this field */
#define Total_Buffer_Size(field) \
- ( (Buffer_Length(field) + 1) * (1+(field)->nbuf) )
+ ( (Buffer_Length(field) + 1) * (1+(field)->nbuf) * sizeof(FIELD_CELL) )
/* Logic to determine whether or not a field is single lined */
#define Single_Line_Field(field) \
(((field)->rows + (field)->nrow) == 1)
/* Logic to determine whether or not a field is selectable */
-#define Field_Is_Selectable(f) (((f)->opts & O_SELECTABLE)==O_SELECTABLE)
-#define Field_Is_Not_Selectable(f) (((f)->opts & O_SELECTABLE)!=O_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)
-typedef struct typearg {
- struct typearg *left;
- struct typearg *right;
-} TypeArgument;
+typedef struct typearg
+ {
+ struct typearg *left;
+ struct typearg *right;
+ }
+TypeArgument;
/* This is a dummy request code (normally invalid) to be used internally
with the form_driver() routine to position to the first active field
@@ -94,7 +129,7 @@ typedef struct typearg {
O_NL_OVERLOAD |\
O_BS_OVERLOAD )
-#define ALL_FIELD_OPTS ( \
+#define ALL_FIELD_OPTS (Field_Options)( \
O_VISIBLE |\
O_ACTIVE |\
O_PUBLIC |\
@@ -106,23 +141,112 @@ typedef struct typearg {
O_PASSOK |\
O_STATIC )
-
#define C_BLANK ' '
#define is_blank(c) ((c)==C_BLANK)
+#define C_ZEROS '\0'
+
extern NCURSES_EXPORT_VAR(const FIELDTYPE *) _nc_Default_FieldType;
-extern NCURSES_EXPORT(TypeArgument *) _nc_Make_Argument (const FIELDTYPE*,va_list*,int*);
-extern NCURSES_EXPORT(TypeArgument *) _nc_Copy_Argument (const FIELDTYPE*,const TypeArgument*, int*);
-extern NCURSES_EXPORT(void) _nc_Free_Argument (const FIELDTYPE*,TypeArgument*);
+extern NCURSES_EXPORT(TypeArgument *) _nc_Make_Argument (const FIELDTYPE*, va_list*, int*);
+extern NCURSES_EXPORT(TypeArgument *) _nc_Copy_Argument (const FIELDTYPE*, const TypeArgument*, int*);
+extern NCURSES_EXPORT(void) _nc_Free_Argument (const FIELDTYPE*, TypeArgument*);
extern NCURSES_EXPORT(bool) _nc_Copy_Type (FIELD*, FIELD const *);
extern NCURSES_EXPORT(void) _nc_Free_Type (FIELD *);
extern NCURSES_EXPORT(int) _nc_Synchronize_Attributes (FIELD*);
-extern NCURSES_EXPORT(int) _nc_Synchronize_Options (FIELD*,Field_Options);
-extern NCURSES_EXPORT(int) _nc_Set_Form_Page (FORM*,int,FIELD*);
+extern NCURSES_EXPORT(int) _nc_Synchronize_Options (FIELD*, Field_Options);
+extern NCURSES_EXPORT(int) _nc_Set_Form_Page (FORM*, int, FIELD*);
extern NCURSES_EXPORT(int) _nc_Refresh_Current_Field (FORM*);
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_Set_Current_Field (FORM*, FIELD*);
extern NCURSES_EXPORT(int) _nc_Position_Form_Cursor (FORM*);
+
+#if USE_WIDEC_SUPPORT
+extern NCURSES_EXPORT(wchar_t *) _nc_Widen_String(char *, int *);
+#endif
+
+#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)
+
+extern NCURSES_EXPORT(FIELD **) _nc_retrace_field_ptr (FIELD **);
+extern NCURSES_EXPORT(FIELD *) _nc_retrace_field (FIELD *);
+extern NCURSES_EXPORT(FIELDTYPE *) _nc_retrace_field_type (FIELDTYPE *);
+extern NCURSES_EXPORT(FORM *) _nc_retrace_form (FORM *);
+extern NCURSES_EXPORT(Form_Hook) _nc_retrace_form_hook (Form_Hook);
+
+#else /* !TRACE */
+
+#define returnFieldPtr(code) return code
+#define returnFieldType(code) return code
+#define returnField(code) return code
+#define returnForm(code) return code
+#define returnFormHook(code) return code
+
+#endif /* TRACE/!TRACE */
+
+/*
+ * Use Check_CTYPE_Field() to simplify FIELDTYPE's that use only the ccheck()
+ * function.
+ */
+#if USE_WIDEC_SUPPORT
+#define Check_CTYPE_Field(result, buffer, width, ccheck) \
+ while (*buffer && *buffer == ' ') \
+ buffer++; \
+ if (*buffer) \
+ { \
+ bool blank = FALSE; \
+ int len; \
+ int n; \
+ wchar_t *list = _nc_Widen_String((char *)buffer, &len); \
+ if (list != 0) \
+ { \
+ result = TRUE; \
+ for (n = 0; n < len; ++n) \
+ { \
+ if (blank) \
+ { \
+ if (list[n] != ' ') \
+ { \
+ result = FALSE; \
+ break; \
+ } \
+ } \
+ else if (list[n] == ' ') \
+ { \
+ blank = TRUE; \
+ result = (n + 1 >= width); \
+ } \
+ else if (!ccheck(list[n], NULL)) \
+ { \
+ result = FALSE; \
+ break; \
+ } \
+ } \
+ free(list); \
+ } \
+ }
+#else
+#define Check_CTYPE_Field(result, buffer, width, ccheck) \
+ while (*buffer && *buffer == ' ') \
+ buffer++; \
+ if (*buffer) \
+ { \
+ unsigned char *s = buffer; \
+ int l = -1; \
+ while (*buffer && ccheck(*buffer, NULL)) \
+ buffer++; \
+ l = (int)(buffer - s); \
+ while (*buffer && *buffer == ' ') \
+ buffer++; \
+ result = ((*buffer || (l < width)) ? FALSE : TRUE); \
+ }
+#endif
+
+#endif /* FORM_PRIV_H */
diff --git a/contrib/ncurses/form/frm_cursor.c b/contrib/ncurses/form/frm_cursor.c
index 930908f7fdd7..18dabab20889 100644
--- a/contrib/ncurses/form/frm_cursor.c
+++ b/contrib/ncurses/form/frm_cursor.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+
#include "form.priv.h"
-MODULE_ID("$Id: frm_cursor.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: frm_cursor.c,v 1.9 2004/12/11 22:01:03 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -48,16 +49,18 @@ MODULE_ID("$Id: frm_cursor.c,v 1.5 2000/12/10 02:09:38 tom Exp $")
| E_NOT_POSTED - Form is not posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-pos_form_cursor (FORM * form)
+pos_form_cursor(FORM *form)
{
int res;
+ T((T_CALLED("pos_form_cursor(%p)"), form));
+
if (!form)
- res = E_BAD_ARGUMENT;
+ res = E_BAD_ARGUMENT;
else
{
if (!(form->status & _POSTED))
- res = E_NOT_POSTED;
+ res = E_NOT_POSTED;
else
res = _nc_Position_Form_Cursor(form);
}
diff --git a/contrib/ncurses/form/frm_data.c b/contrib/ncurses/form/frm_data.c
index 8d87353e5a7c..787a17919f04 100644
--- a/contrib/ncurses/form/frm_data.c
+++ b/contrib/ncurses/form/frm_data.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,28 +27,30 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: frm_data.c,v 1.7 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: frm_data.c,v 1.14 2005/11/26 15:34:01 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : bool data_behind(const FORM *form)
|
| Description : Check for off-screen data behind. This is nearly trivial
-| becose the begin of a field is fixed.
+| because the beginning of a field is fixed.
|
| Return Values : TRUE - there are off-screen data behind
| FALSE - there are no off-screen data behind
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(bool)
-data_behind (const FORM *form)
+data_behind(const FORM *form)
{
bool result = FALSE;
+ T((T_CALLED("data_behind(%p)"), form));
+
if (form && (form->status & _POSTED) && form->current)
{
FIELD *field;
@@ -56,42 +58,69 @@ data_behind (const FORM *form)
field = form->current;
if (!Single_Line_Field(field))
{
- result = (form->toprow==0) ? FALSE : TRUE;
+ result = (form->toprow == 0) ? FALSE : TRUE;
}
else
{
- result = (form->begincol==0) ? FALSE : TRUE;
+ result = (form->begincol == 0) ? FALSE : TRUE;
}
}
- return(result);
+ returnBool(result);
}
/*---------------------------------------------------------------------------
| Facility : libnform
-| Function : static char * After_Last_Non_Pad_Position(
-| char *buffer,
+| Function : static char * Only_Padding(
+| WINDOW *w,
| int len,
| int pad)
|
-| Description : Find the last position in the buffer that doesn't
+| Description : Test if 'length' cells starting at the current position
| contain a padding character.
|
-| Return Values : The pointer to this position
+| Return Values : true if only padding cells are found
+--------------------------------------------------------------------------*/
-INLINE
-static char * After_Last_Non_Pad_Position(char *buffer, int len, int pad)
+NCURSES_INLINE static bool
+Only_Padding(WINDOW *w, int len, int pad)
{
- char *end = buffer + len;
-
- assert(buffer && len>=0);
- while ( (buffer < end) && (*(end-1)==pad) )
- end--;
+ bool result = TRUE;
+ int y, x, j;
+ FIELD_CELL cell;
- return end;
+ getyx(w, y, x);
+ for (j = 0; j < len; ++j)
+ {
+ if (wmove(w, y, x + j) != ERR)
+ {
+#if USE_WIDEC_SUPPORT
+ if (win_wch(w, &cell) != ERR)
+ {
+ if ((chtype)CharOf(cell) != ChCharOf(pad)
+ || cell.chars[1] != 0)
+ {
+ result = FALSE;
+ break;
+ }
+ }
+#else
+ cell = winch(w);
+ if (ChCharOf(cell) != ChCharOf(pad))
+ {
+ result = FALSE;
+ break;
+ }
+#endif
+ }
+ else
+ {
+ /* if an error, return true: no non-padding text found */
+ break;
+ }
+ }
+ /* no need to reset the cursor position; caller does this */
+ return result;
}
-#define SMALL_BUFFER_SIZE (80)
-
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : bool data_ahead(const FORM *form)
@@ -103,31 +132,21 @@ static char * After_Last_Non_Pad_Position(char *buffer, int len, int pad)
| FALSE - there are no off-screen data ahead
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(bool)
-data_ahead (const FORM *form)
+data_ahead(const FORM *form)
{
bool result = FALSE;
+ T((T_CALLED("data_ahead(%p)"), form));
+
if (form && (form->status & _POSTED) && form->current)
{
- static char buffer[SMALL_BUFFER_SIZE + 1];
FIELD *field;
- bool large_buffer;
bool cursor_moved = FALSE;
- char *bp;
- char *found_content;
int pos;
field = form->current;
assert(form->w);
- large_buffer = (field->cols > SMALL_BUFFER_SIZE);
- if (large_buffer)
- bp = (char *)malloc((size_t)(field->cols) + 1);
- else
- bp = buffer;
-
- assert(bp);
-
if (Single_Line_Field(field))
{
int check_len;
@@ -136,15 +155,12 @@ data_ahead (const FORM *form)
while (pos < field->dcols)
{
check_len = field->dcols - pos;
- if ( check_len >= field->cols )
+ if (check_len >= field->cols)
check_len = field->cols;
cursor_moved = TRUE;
- wmove(form->w,0,pos);
- winnstr(form->w,bp,check_len);
- found_content =
- After_Last_Non_Pad_Position(bp,check_len,field->pad);
- if (found_content==bp)
- pos += field->cols;
+ wmove(form->w, 0, pos);
+ if (Only_Padding(form->w, check_len, field->pad))
+ pos += field->cols;
else
{
result = TRUE;
@@ -158,12 +174,9 @@ data_ahead (const FORM *form)
while (pos < field->drows)
{
cursor_moved = TRUE;
- wmove(form->w,pos,0);
+ wmove(form->w, pos, 0);
pos++;
- winnstr(form->w,bp,field->cols);
- found_content =
- After_Last_Non_Pad_Position(bp,field->cols,field->pad);
- if (found_content!=bp)
+ if (!Only_Padding(form->w, field->cols, field->pad))
{
result = TRUE;
break;
@@ -171,13 +184,10 @@ data_ahead (const FORM *form)
}
}
- if (large_buffer)
- free(bp);
-
if (cursor_moved)
- wmove(form->w,form->currow,form->curcol);
+ wmove(form->w, form->currow, form->curcol);
}
- return(result);
+ returnBool(result);
}
/* frm_data.c ends here */
diff --git a/contrib/ncurses/form/frm_def.c b/contrib/ncurses/form/frm_def.c
index 0802e49a4114..d15237e911e2 100644
--- a/contrib/ncurses/form/frm_def.c
+++ b/contrib/ncurses/form/frm_def.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,37 +27,38 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: frm_def.c,v 1.10 2000/12/10 02:09:38 tom Exp $")
+MODULE_ID("$Id: frm_def.c,v 1.20 2006/11/04 16:57:15 tom Exp $")
/* this can't be readonly */
-static FORM default_form = {
- 0, /* status */
- 0, /* rows */
- 0, /* cols */
- 0, /* currow */
- 0, /* curcol */
- 0, /* toprow */
- 0, /* begincol */
- -1, /* maxfield */
- -1, /* maxpage */
- -1, /* curpage */
- ALL_FORM_OPTS, /* opts */
- (WINDOW *)0, /* win */
- (WINDOW *)0, /* sub */
- (WINDOW *)0, /* w */
- (FIELD **)0, /* field */
- (FIELD *)0, /* current */
- (_PAGE *)0, /* page */
- (char *)0, /* usrptr */
- NULL, /* forminit */
- NULL, /* formterm */
- NULL, /* fieldinit */
- NULL /* fieldterm */
+static FORM default_form =
+{
+ 0, /* status */
+ 0, /* rows */
+ 0, /* cols */
+ 0, /* currow */
+ 0, /* curcol */
+ 0, /* toprow */
+ 0, /* begincol */
+ -1, /* maxfield */
+ -1, /* maxpage */
+ -1, /* curpage */
+ ALL_FORM_OPTS, /* opts */
+ (WINDOW *)0, /* win */
+ (WINDOW *)0, /* sub */
+ (WINDOW *)0, /* w */
+ (FIELD **)0, /* field */
+ (FIELD *)0, /* current */
+ (_PAGE *) 0, /* page */
+ (char *)0, /* usrptr */
+ NULL, /* forminit */
+ NULL, /* formterm */
+ NULL, /* fieldinit */
+ NULL /* fieldterm */
};
NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form = &default_form;
@@ -74,39 +75,40 @@ NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form = &default_form;
|
| Return Values : New head of sorted fieldlist
+--------------------------------------------------------------------------*/
-static FIELD *Insert_Field_By_Position(FIELD *newfield, FIELD *head)
+static FIELD *
+Insert_Field_By_Position(FIELD *newfield, FIELD *head)
{
FIELD *current, *newhead;
-
+
assert(newfield);
if (!head)
- { /* empty list is trivial */
+ { /* empty list is trivial */
newhead = newfield->snext = newfield->sprev = newfield;
}
else
{
newhead = current = head;
- while((current->frow < newfield->frow) ||
- ((current->frow==newfield->frow) &&
- (current->fcol < newfield->fcol)) )
+ while ((current->frow < newfield->frow) ||
+ ((current->frow == newfield->frow) &&
+ (current->fcol < newfield->fcol)))
{
current = current->snext;
- if (current==head)
- { /* We cycled through. Reset head to indicate that */
+ if (current == head)
+ { /* We cycled through. Reset head to indicate that */
head = (FIELD *)0;
break;
}
}
- /* we leave the loop with current pointing to the field after newfield*/
- newfield->snext = current;
- newfield->sprev = current->sprev;
+ /* we leave the loop with current pointing to the field after newfield */
+ newfield->snext = current;
+ newfield->sprev = current->sprev;
newfield->snext->sprev = newfield;
newfield->sprev->snext = newfield;
- if (current==head)
+ if (current == head)
newhead = newfield;
}
- return(newhead);
+ return (newhead);
}
/*---------------------------------------------------------------------------
@@ -117,25 +119,26 @@ static FIELD *Insert_Field_By_Position(FIELD *newfield, FIELD *head)
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Disconnect_Fields( FORM * form )
+static void
+Disconnect_Fields(FORM *form)
{
if (form->field)
{
FIELD **fields;
- for(fields=form->field;*fields;fields++)
+ for (fields = form->field; *fields; fields++)
{
- if (form == (*fields)->form)
+ if (form == (*fields)->form)
(*fields)->form = (FORM *)0;
}
-
+
form->rows = form->cols = 0;
form->maxfield = form->maxpage = -1;
form->field = (FIELD **)0;
- if (form->page)
+ if (form->page)
free(form->page);
- form->page = (_PAGE *)0;
- }
+ form->page = (_PAGE *) 0;
+ }
}
/*---------------------------------------------------------------------------
@@ -149,82 +152,86 @@ static void Disconnect_Fields( FORM * form )
| E_BAD_ARGUMENT - Invalid form pointer or field array
| E_SYSTEM_ERROR - not enough memory
+--------------------------------------------------------------------------*/
-static int Connect_Fields(FORM * form, FIELD ** fields)
+static int
+Connect_Fields(FORM *form, FIELD **fields)
{
int field_cnt, j;
int page_nr;
int maximum_row_in_field, maximum_col_in_field;
_PAGE *pg;
-
+
+ T((T_CALLED("Connect_Fields(%p,%p)"), form, fields));
+
assert(form);
- form->field = fields;
+ form->field = fields;
form->maxfield = 0;
- form->maxpage = 0;
+ form->maxpage = 0;
if (!fields)
RETURN(E_OK);
-
+
page_nr = 0;
/* store formpointer in fields and count pages */
- for(field_cnt=0;fields[field_cnt];field_cnt++)
+ for (field_cnt = 0; fields[field_cnt]; field_cnt++)
{
- if (fields[field_cnt]->form)
+ if (fields[field_cnt]->form)
RETURN(E_CONNECTED);
- if ( field_cnt==0 ||
- (fields[field_cnt]->status & _NEWPAGE))
+ if (field_cnt == 0 ||
+ (fields[field_cnt]->status & _NEWPAGE))
page_nr++;
fields[field_cnt]->form = form;
- }
- if (field_cnt==0)
+ }
+ if (field_cnt == 0 || (short)field_cnt < 0)
RETURN(E_BAD_ARGUMENT);
-
+
/* allocate page structures */
- if ( (pg = (_PAGE *)malloc(page_nr * sizeof(_PAGE))) != (_PAGE *)0 )
+ if ((pg = (_PAGE *) malloc(page_nr * sizeof(_PAGE))) != (_PAGE *) 0)
{
form->page = pg;
}
else
RETURN(E_SYSTEM_ERROR);
-
+
/* Cycle through fields and calculate page boundaries as well as
size of the form */
- for(j=0;j<field_cnt;j++)
+ for (j = 0; j < field_cnt; j++)
{
- if (j==0)
+ if (j == 0)
pg->pmin = j;
else
{
if (fields[j]->status & _NEWPAGE)
{
- pg->pmax = j-1;
+ pg->pmax = j - 1;
pg++;
pg->pmin = j;
}
}
-
+
maximum_row_in_field = fields[j]->frow + fields[j]->rows;
maximum_col_in_field = fields[j]->fcol + fields[j]->cols;
-
- if (form->rows < maximum_row_in_field)
+
+ if (form->rows < maximum_row_in_field)
form->rows = maximum_row_in_field;
- if (form->cols < maximum_col_in_field)
+ if (form->cols < maximum_col_in_field)
form->cols = maximum_col_in_field;
}
-
- pg->pmax = field_cnt-1;
+
+ pg->pmax = field_cnt - 1;
form->maxfield = field_cnt;
- form->maxpage = page_nr;
-
+ form->maxpage = page_nr;
+
/* Sort fields on form pages */
- for(page_nr = 0;page_nr < form->maxpage; page_nr++)
+ for (page_nr = 0; page_nr < form->maxpage; page_nr++)
{
FIELD *fld = (FIELD *)0;
- for(j = form->page[page_nr].pmin;j <= form->page[page_nr].pmax;j++)
+
+ for (j = form->page[page_nr].pmin; j <= form->page[page_nr].pmax; j++)
{
fields[j]->index = j;
- fields[j]->page = page_nr;
- fld = Insert_Field_By_Position(fields[j],fld);
+ fields[j]->page = page_nr;
+ fld = Insert_Field_By_Position(fields[j], fld);
}
form->page[page_nr].smin = fld->index;
form->page[page_nr].smax = fld->sprev->index;
@@ -240,46 +247,56 @@ static int Connect_Fields(FORM * form, FIELD ** fields)
| If there are fields, position to first active field.
|
| Return Values : E_OK - success
-| any other - error occured
+| E_BAD_ARGUMENT - Invalid form pointer or field array
+| E_CONNECTED - a field is already connected
+| E_SYSTEM_ERROR - not enough memory
+--------------------------------------------------------------------------*/
-INLINE static int Associate_Fields(FORM *form, FIELD **fields)
+NCURSES_INLINE static int
+Associate_Fields(FORM *form, FIELD **fields)
{
- int res = Connect_Fields(form,fields);
+ int res = Connect_Fields(form, fields);
+
if (res == E_OK)
{
- if (form->maxpage>0)
+ if (form->maxpage > 0)
{
form->curpage = 0;
- form_driver(form,FIRST_ACTIVE_MAGIC);
+ form_driver(form, FIRST_ACTIVE_MAGIC);
}
else
{
form->curpage = -1;
form->current = (FIELD *)0;
- }
+ }
}
- return(res);
+ return (res);
}
-
+
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : FORM *new_form( FIELD **fields )
|
| Description : Create new form with given array of fields.
|
-| Return Values : Pointer to form. NULL if error occured.
+| Return Values : Pointer to form. NULL if error occurred.
+! Set errno:
+| E_OK - success
+| E_BAD_ARGUMENT - Invalid form pointer or field array
+| E_CONNECTED - a field is already connected
+| E_SYSTEM_ERROR - not enough memory
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FORM *)
-new_form (FIELD ** fields)
-{
+new_form(FIELD **fields)
+{
int err = E_SYSTEM_ERROR;
FORM *form = (FORM *)malloc(sizeof(FORM));
-
+
+ T((T_CALLED("new_form(%p)"), fields));
if (form)
{
*form = *_nc_Default_Form;
- if ((err=Associate_Fields(form,fields))!=E_OK)
+ if ((err = Associate_Fields(form, fields)) != E_OK)
{
free_form(form);
form = (FORM *)0;
@@ -288,8 +305,8 @@ new_form (FIELD ** fields)
if (!form)
SET_ERROR(err);
-
- return(form);
+
+ returnForm(form);
}
/*---------------------------------------------------------------------------
@@ -303,19 +320,21 @@ new_form (FIELD ** fields)
| E_POSTED - form is posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-free_form (FORM * form)
+free_form(FORM *form)
{
- if ( !form )
+ T((T_CALLED("free_form(%p)"), form));
+
+ if (!form)
RETURN(E_BAD_ARGUMENT);
- if ( form->status & _POSTED)
+ if (form->status & _POSTED)
RETURN(E_POSTED);
-
- Disconnect_Fields( form );
- if (form->page)
+
+ Disconnect_Fields(form);
+ if (form->page)
free(form->page);
free(form);
-
+
RETURN(E_OK);
}
@@ -325,31 +344,35 @@ free_form (FORM * form)
|
| Description : Set a new association of an array of fields to a form
|
-| Return Values : E_OK - no error
-| E_BAD_ARGUMENT - invalid form pointer
-| E_POSTED - form is posted
+| Return Values : E_OK - no error
+| E_BAD_ARGUMENT - Invalid form pointer or field array
+| E_CONNECTED - a field is already connected
+| E_POSTED - form is posted
+| E_SYSTEM_ERROR - not enough memory
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_form_fields (FORM * form, FIELD ** fields)
+set_form_fields(FORM *form, FIELD **fields)
{
FIELD **old;
int res;
-
- if ( !form )
+
+ T((T_CALLED("set_form_fields(%p,%p)"), form, fields));
+
+ if (!form)
RETURN(E_BAD_ARGUMENT);
- if ( form->status & _POSTED )
+ if (form->status & _POSTED)
RETURN(E_POSTED);
-
+
old = form->field;
- Disconnect_Fields( form );
-
- if( (res = Associate_Fields( form, fields )) != E_OK )
- Connect_Fields( form, old );
-
+ Disconnect_Fields(form);
+
+ if ((res = Associate_Fields(form, fields)) != E_OK)
+ Connect_Fields(form, old);
+
RETURN(res);
}
-
+
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : FIELD **form_fields( const FORM *form )
@@ -359,9 +382,10 @@ set_form_fields (FORM * form, FIELD ** fields)
| Return Values : Pointer to field array
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(FIELD **)
-form_fields (const FORM * form)
+form_fields(const FORM *form)
{
- return (Normalize_Form( form )->field);
+ T((T_CALLED("form_field(%p)"), form));
+ returnFieldPtr(Normalize_Form(form)->field);
}
/*---------------------------------------------------------------------------
@@ -373,9 +397,11 @@ form_fields (const FORM * form)
| Return Values : Number of fields, -1 if none are defined
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-field_count (const FORM * form)
+field_count(const FORM *form)
{
- return (Normalize_Form( form )->maxfield);
+ T((T_CALLED("field_count(%p)"), form));
+
+ returnCode(Normalize_Form(form)->maxfield);
}
/* frm_def.c ends here */
diff --git a/contrib/ncurses/form/frm_driver.c b/contrib/ncurses/form/frm_driver.c
index 3a02a5daafbb..354bace8b4f3 100644
--- a/contrib/ncurses/form/frm_driver.c
+++ b/contrib/ncurses/form/frm_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,21 +27,22 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+
#include "form.priv.h"
-MODULE_ID("$Id: frm_driver.c,v 1.38 2001/03/25 02:07:50 juergen Exp $")
+MODULE_ID("$Id: frm_driver.c,v 1.76 2006/11/04 18:45:35 tom Exp $")
/*----------------------------------------------------------------------------
This is the core module of the form library. It contains the majority
- of the driver routines as well as the form_driver function.
+ of the driver routines as well as the form_driver function.
Essentially this module is nearly the whole library. This is because
all the functions in this module depends on some others in the module,
so it makes no sense to split them into separate files because they
will always be linked together. The only acceptable concern is turnaround
- time for this module, but now we have all Pentiums or Riscs, so what!
+ time for this module, but now we have all Pentiums or RISCs, so what!
The driver routines are grouped into nine generic categories:
@@ -52,12 +53,12 @@ MODULE_ID("$Id: frm_driver.c,v 1.38 2001/03/25 02:07:50 juergen Exp $")
The current field of the form is left and some new field is
entered.
c) Intra-Field Navigation ( all functions prefixed by IFN_ )
- The current position in the current field is changed.
+ The current position in the current field is changed.
d) Vertical Scrolling ( all functions prefixed by VSC_ )
- Esseantially this is a specialization of Intra-Field navigation.
+ Essentially this is a specialization of Intra-Field navigation.
It has to check for a multi-line field.
e) Horizontal Scrolling ( all functions prefixed by HSC_ )
- Esseantially this is a specialization of Intra-Field navigation.
+ Essentially this is a specialization of Intra-Field navigation.
It has to check for a single-line field.
f) Field Editing ( all functions prefixed by FE_ )
The content of the current field is changed
@@ -78,34 +79,46 @@ MODULE_ID("$Id: frm_driver.c,v 1.38 2001/03/25 02:07:50 juergen Exp $")
/*
Some options that may effect compatibility in behavior to SVr4 forms,
-but they are here to allow a more intuitive and user friendly behaviour of
+but they are here to allow a more intuitive and user friendly behavior of
our form implementation. This doesn't affect the API, so we feel it is
uncritical.
-The initial implementation tries to stay very close with the behaviour
+The initial implementation tries to stay very close with the behavior
of the original SVr4 implementation, although in some areas it is quite
clear that this isn't the most appropriate way. As far as possible this
sources will allow you to build a forms lib that behaves quite similar
-to SVr4, but now and in the future we will give you better options.
+to SVr4, but now and in the future we will give you better options.
Perhaps at some time we will make this configurable at runtime.
*/
-/* Implement a more user-friendly previous/next word behaviour */
+/* Implement a more user-friendly previous/next word behavior */
#define FRIENDLY_PREV_NEXT_WORD (1)
-/* Fix the wrong behaviour for forms with all fields inactive */
+/* Fix the wrong behavior for forms with all fields inactive */
#define FIX_FORM_INACTIVE_BUG (1)
/* Allow dynamic field growth also when navigating past the end */
#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 myWCWIDTH(w, y, x) cell_width(w, y, x)
+#else
+#define myADDNSTR(w, s, n) waddnstr(w, s, n)
+#define myINSNSTR(w, s, n) winsnstr(w, s, n)
+#define myINNSTR(w, s, n) winnstr(w, s, n)
+#define myWCWIDTH(w, y, x) 1
+#endif
+
/*----------------------------------------------------------------------------
Forward references to some internally used static functions
--------------------------------------------------------------------------*/
-static int Inter_Field_Navigation ( int (* const fct) (FORM *), FORM * form );
-static int FN_Next_Field (FORM * form);
-static int FN_Previous_Field (FORM * form);
+static int Inter_Field_Navigation(int (*const fct) (FORM *), FORM *form);
+static int FN_Next_Field(FORM *form);
+static int FN_Previous_Field(FORM *form);
static int FE_New_Line(FORM *);
static int FE_Delete_Previous(FORM *);
-
+
/*----------------------------------------------------------------------------
Macro Definitions.
@@ -149,7 +162,7 @@ static int FE_Delete_Previous(FORM *);
#define Address_Of_Current_Position_In_Buffer(form) \
Address_Of_Current_Position_In_Nth_Buffer(form,0)
-/* Logic to decide wether or not a field is actually a field with
+/* Logic to decide whether or not a field is actually a field with
vertical or horizontal scrolling */
#define Is_Scroll_Field(field) \
(((field)->drows > (field)->rows) || \
@@ -189,168 +202,308 @@ static int FE_Delete_Previous(FORM *);
#define First_Position_In_Current_Field(form) \
(((form)->currow==0) && ((form)->curcol==0))
-
#define Minimum(a,b) (((a)<=(b)) ? (a) : (b))
#define Maximum(a,b) (((a)>=(b)) ? (a) : (b))
-
+
+/*----------------------------------------------------------------------------
+ Useful constants
+ --------------------------------------------------------------------------*/
+static FIELD_CELL myBLANK = BLANK;
+static FIELD_CELL myZEROS;
+
+#ifdef TRACE
+static void
+check_pos(FORM *form, int lineno)
+{
+ int y, x;
+
+ if (form && form->w)
+ {
+ getyx(form->w, y, x);
+ if (y != form->currow || x != form->curcol)
+ {
+ T(("CHECKPOS %s@%d have position %d,%d vs want %d,%d",
+ __FILE__, lineno,
+ y, x,
+ form->currow, form->curcol));
+ }
+ }
+}
+#define CHECKPOS(form) check_pos(form, __LINE__)
+#else
+#define CHECKPOS(form) /* nothing */
+#endif
+
+/*----------------------------------------------------------------------------
+ Wide-character special functions
+ --------------------------------------------------------------------------*/
+#if USE_WIDEC_SUPPORT
+/* like winsnstr */
+static int
+wins_wchnstr(WINDOW *w, cchar_t *s, int n)
+{
+ int code = ERR;
+ int y, x;
+
+ while (n-- > 0)
+ {
+ getyx(w, y, x);
+ if ((code = wins_wch(w, s++)) != OK)
+ break;
+ if ((code = wmove(w, y, x + 1)) != OK)
+ break;
+ }
+ return code;
+}
+
+/* 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)
+{
+ win_wchnstr(w, s, n);
+ return n;
+}
+
+/*
+ * Returns the column of the base of the given cell.
+ */
+static int
+cell_base(WINDOW *win, int y, int x)
+{
+ int result = x;
+
+ while (LEGALYX(win, y, x))
+ {
+ cchar_t *data = &(win->_line[y].text[x]);
+
+ if (isWidecBase(CHDEREF(data)) || !isWidecExt(CHDEREF(data)))
+ {
+ result = x;
+ break;
+ }
+ --x;
+ }
+ return result;
+}
+
+/*
+ * Returns the number of columns needed for the given cell in a window.
+ */
+static int
+cell_width(WINDOW *win, int y, int x)
+{
+ int result = 1;
+
+ if (LEGALYX(win, y, x))
+ {
+ cchar_t *data = &(win->_line[y].text[x]);
+
+ if (isWidecExt(CHDEREF(data)))
+ {
+ /* recur, providing the number of columns to the next character */
+ result = cell_width(win, y, x - 1);
+ }
+ else
+ {
+ result = wcwidth(CharOf(CHDEREF(data)));
+ }
+ }
+ return result;
+}
+
+/*
+ * There is no wide-character function such as wdel_wch(), so we must find
+ * all of the cells that comprise a multi-column character and delete them
+ * one-by-one.
+ */
+static void
+delete_char(FORM *form)
+{
+ int cells = cell_width(form->w, form->currow, form->curcol);
+
+ form->curcol = cell_base(form->w, form->currow, form->curcol);
+ wmove(form->w, form->currow, form->curcol);
+ while (cells-- > 0)
+ {
+ wdelch(form->w);
+ }
+}
+#define DeleteChar(form) delete_char(form)
+#else
+#define DeleteChar(form) \
+ wmove((form)->w, (form)->currow, (form)->curcol), \
+ wdelch((form)->w)
+#endif
+
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static char *Get_Start_Of_Data(char * buf, int blen)
-|
+|
| Description : Return pointer to first non-blank position in buffer.
| If buffer is empty return pointer to buffer itself.
|
| Return Values : Pointer to first non-blank position in buffer
+--------------------------------------------------------------------------*/
-INLINE static char *Get_Start_Of_Data(char * buf, int blen)
+NCURSES_INLINE static FIELD_CELL *
+Get_Start_Of_Data(FIELD_CELL *buf, int blen)
{
- char *p = buf;
- char *end = &buf[blen];
+ FIELD_CELL *p = buf;
+ FIELD_CELL *end = &buf[blen];
- assert(buf && blen>=0);
- while( (p < end) && is_blank(*p) )
+ assert(buf && blen >= 0);
+ while ((p < end) && ISBLANK(*p))
p++;
- return( (p==end) ? buf : p );
+ return ((p == end) ? buf : p);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static char *After_End_Of_Data(char * buf, int blen)
-|
+|
| Description : Return pointer after last non-blank position in buffer.
| If buffer is empty, return pointer to buffer itself.
|
-| Return Values : Pointer to position after last non-blank position in
+| Return Values : Pointer to position after last non-blank position in
| buffer.
+--------------------------------------------------------------------------*/
-INLINE static char *After_End_Of_Data(char * buf,int blen)
+NCURSES_INLINE static FIELD_CELL *
+After_End_Of_Data(FIELD_CELL *buf, int blen)
{
- char *p = &buf[blen];
-
- assert(buf && blen>=0);
- while( (p>buf) && is_blank(p[-1]) )
+ FIELD_CELL *p = &buf[blen];
+
+ assert(buf && blen >= 0);
+ while ((p > buf) && ISBLANK(p[-1]))
p--;
- return( p );
+ return (p);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static char *Get_First_Whitespace_Character(
| char * buf, int blen)
-|
+|
| Description : Position to the first whitespace character.
|
| Return Values : Pointer to first whitespace character in buffer.
+--------------------------------------------------------------------------*/
-INLINE static char *Get_First_Whitespace_Character(char * buf, int blen)
+NCURSES_INLINE static FIELD_CELL *
+Get_First_Whitespace_Character(FIELD_CELL *buf, int blen)
{
- char *p = buf;
- char *end = &p[blen];
-
- assert(buf && blen>=0);
- while( (p < end) && !is_blank(*p))
+ FIELD_CELL *p = buf;
+ FIELD_CELL *end = &p[blen];
+
+ assert(buf && blen >= 0);
+ while ((p < end) && !ISBLANK(*p))
p++;
- return( (p==end) ? buf : p );
+ return ((p == end) ? buf : p);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static char *After_Last_Whitespace_Character(
| char * buf, int blen)
-|
+|
| Description : Get the position after the last whitespace character.
|
-| Return Values : Pointer to position after last whitespace character in
+| Return Values : Pointer to position after last whitespace character in
| buffer.
+--------------------------------------------------------------------------*/
-INLINE static char *After_Last_Whitespace_Character(char * buf, int blen)
+NCURSES_INLINE static FIELD_CELL *
+After_Last_Whitespace_Character(FIELD_CELL *buf, int blen)
{
- char *p = &buf[blen];
-
- assert(buf && blen>=0);
- while( (p>buf) && !is_blank(p[-1]) )
+ FIELD_CELL *p = &buf[blen];
+
+ assert(buf && blen >= 0);
+ while ((p > buf) && !ISBLANK(p[-1]))
p--;
- return( p );
+ return (p);
}
/* Set this to 1 to use the div_t version. This is a good idea if your
compiler has an intrinsic div() support. Unfortunately GNU-C has it
- not yet.
+ not yet.
N.B.: This only works if form->curcol follows immediately form->currow
- and both are of type int.
+ and both are of type int.
*/
#define USE_DIV_T (0)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static void Adjust_Cursor_Position(
| FORM * form, const char * pos)
-|
-| Description : Set current row and column of the form to values
+|
+| Description : Set current row and column of the form to values
| corresponding to the buffer position.
|
| Return Values : -
+--------------------------------------------------------------------------*/
-INLINE static void Adjust_Cursor_Position(FORM * form, const char * pos)
+NCURSES_INLINE static void
+Adjust_Cursor_Position(FORM *form, const FIELD_CELL *pos)
{
FIELD *field;
int idx;
field = form->current;
- assert( pos >= field->buf && field->dcols > 0);
- idx = (int)( pos - field->buf );
+ assert(pos >= field->buf && field->dcols > 0);
+ idx = (int)(pos - field->buf);
#if USE_DIV_T
- *((div_t *)&(form->currow)) = div(idx,field->dcols);
+ *((div_t *) & (form->currow)) = div(idx, field->dcols);
#else
form->currow = idx / field->dcols;
form->curcol = idx - field->cols * form->currow;
-#endif
- if ( field->drows < form->currow )
+#endif
+ if (field->drows < form->currow)
form->currow = 0;
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static void Buffer_To_Window(
| const FIELD * field,
| WINDOW * win)
-|
-| Description : Copy the buffer to the window. If its a multiline
+|
+| Description : Copy the buffer to the window. If it is a multi-line
| field, the buffer is split to the lines of the
| window without any editing.
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Buffer_To_Window(const FIELD * field, WINDOW * win)
+static void
+Buffer_To_Window(const FIELD *field, WINDOW *win)
{
int width, height;
+ int y, x;
int len;
int row;
- char *pBuffer;
+ FIELD_CELL *pBuffer;
assert(win && field);
- width = getmaxx(win);
+ getyx(win, y, x);
+ width = getmaxx(win);
height = getmaxy(win);
- for(row=0, pBuffer=field->buf;
- row < height;
- row++, pBuffer += width )
+ for (row = 0, pBuffer = field->buf;
+ row < height;
+ row++, pBuffer += width)
{
- if ((len = (int)( After_End_Of_Data( pBuffer, width ) - pBuffer )) > 0)
+ if ((len = (int)(After_End_Of_Data(pBuffer, width) - pBuffer)) > 0)
{
- wmove( win, row, 0 );
- waddnstr( win, pBuffer, len );
+ wmove(win, row, 0);
+ myADDNSTR(win, pBuffer, len);
}
- }
+ }
+ wmove(win, y, x);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static void Window_To_Buffer(
| WINDOW * win,
| FIELD * field)
-|
+|
| Description : Copy the content of the window into the buffer.
| The multiple lines of a window are simply
| concatenated into the buffer. Pad characters in
@@ -358,42 +511,48 @@ static void Buffer_To_Window(const FIELD * field, WINDOW * win)
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Window_To_Buffer(WINDOW * win, FIELD * field)
+static void
+Window_To_Buffer(WINDOW *win, FIELD *field)
{
int pad;
int len = 0;
- char *p;
+ FIELD_CELL *p;
int row, height;
-
- assert(win && field && field->buf );
+
+ assert(win && field && field->buf);
pad = field->pad;
p = field->buf;
height = getmaxy(win);
- for(row=0; (row < height) && (row < field->drows); row++ )
+ for (row = 0; (row < height) && (row < field->drows); row++)
{
- wmove( win, row, 0 );
- len += winnstr( win, p+len, field->dcols );
+ wmove(win, row, 0);
+ len += myINNSTR(win, p + len, field->dcols);
}
- p[len] = '\0';
+ p[len] = myZEROS;
/* replace visual padding character by blanks in buffer */
if (pad != C_BLANK)
{
int i;
- for(i=0; i<len; i++, p++)
+
+ for (i = 0; i < len; i++, p++)
{
- if (*p==pad)
- *p = C_BLANK;
+ if ((unsigned long)CharOf(*p) == ChCharOf(pad)
+#if USE_WIDEC_SUPPORT
+ && p->chars[1] == 0
+#endif
+ )
+ *p = myBLANK;
}
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static void Synchronize_Buffer(FORM * form)
-|
+|
| Description : If there was a change, copy the content of the
| window into the buffer, so the buffer is synchronized
| with the windows content. We have to indicate that the
@@ -401,21 +560,22 @@ static void Window_To_Buffer(WINDOW * win, FIELD * field)
|
| Return Values : -
+--------------------------------------------------------------------------*/
-INLINE static void Synchronize_Buffer(FORM * form)
+NCURSES_INLINE static void
+Synchronize_Buffer(FORM *form)
{
if (form->status & _WINDOW_MODIFIED)
{
form->status &= ~_WINDOW_MODIFIED;
- form->status |= _FCHECK_REQUIRED;
- Window_To_Buffer(form->w,form->current);
- wmove(form->w,form->currow,form->curcol);
+ form->status |= _FCHECK_REQUIRED;
+ Window_To_Buffer(form->w, form->current);
+ wmove(form->w, form->currow, form->curcol);
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static bool Field_Grown( FIELD *field, int amount)
-|
+|
| Description : This function is called for growable dynamic fields
| only. It has to increase the buffers and to allocate
| a new window for this field.
@@ -426,7 +586,8 @@ INLINE static void Synchronize_Buffer(FORM * form)
| Return Values : TRUE - field successfully increased
| FALSE - there was some error
+--------------------------------------------------------------------------*/
-static bool Field_Grown(FIELD * field, int amount)
+static bool
+Field_Grown(FIELD *field, int amount)
{
bool result = FALSE;
@@ -437,23 +598,23 @@ static bool Field_Grown(FIELD * field, int amount)
int new_buflen;
int old_dcols = field->dcols;
int old_drows = field->drows;
- char *oldbuf = field->buf;
- char *newbuf;
+ FIELD_CELL *oldbuf = field->buf;
+ FIELD_CELL *newbuf;
int growth;
FORM *form = field->form;
- bool need_visual_update = ((form != (FORM *)0) &&
+ bool need_visual_update = ((form != (FORM *)0) &&
(form->status & _POSTED) &&
- (form->current==field));
-
+ (form->current == field));
+
if (need_visual_update)
Synchronize_Buffer(form);
-
+
if (single_line_field)
{
growth = field->cols * amount;
if (field->maxgrow)
- growth = Minimum(field->maxgrow - field->dcols,growth);
+ growth = Minimum(field->maxgrow - field->dcols, growth);
field->dcols += growth;
if (field->dcols == field->maxgrow)
field->status &= ~_MAY_GROW;
@@ -462,96 +623,113 @@ static bool Field_Grown(FIELD * field, int amount)
{
growth = (field->rows + field->nrow) * amount;
if (field->maxgrow)
- growth = Minimum(field->maxgrow - field->drows,growth);
+ growth = Minimum(field->maxgrow - field->drows, growth);
field->drows += growth;
if (field->drows == field->maxgrow)
field->status &= ~_MAY_GROW;
}
/* drows, dcols changed, so we get really the new buffer length */
new_buflen = Buffer_Length(field);
- newbuf=(char *)malloc((size_t)Total_Buffer_Size(field));
+ newbuf = (FIELD_CELL *)malloc(Total_Buffer_Size(field));
if (!newbuf)
- { /* restore to previous state */
+ {
+ /* restore to previous state */
field->dcols = old_dcols;
field->drows = old_drows;
- if (( single_line_field && (field->dcols!=field->maxgrow)) ||
- (!single_line_field && (field->drows!=field->maxgrow)))
+ if ((single_line_field && (field->dcols != field->maxgrow)) ||
+ (!single_line_field && (field->drows != field->maxgrow)))
field->status |= _MAY_GROW;
- return FALSE;
}
else
- { /* Copy all the buffers. This is the reason why we can't
- just use realloc().
- */
- int i;
- char *old_bp;
- char *new_bp;
-
+ {
+ /* Copy all the buffers. This is the reason why we can't just use
+ * realloc().
+ */
+ int i, j;
+ FIELD_CELL *old_bp;
+ FIELD_CELL *new_bp;
+
+ result = TRUE; /* allow sharing of recovery on failure */
+
field->buf = newbuf;
- for(i=0;i<=field->nbuf;i++)
+ for (i = 0; i <= field->nbuf; i++)
{
- new_bp = Address_Of_Nth_Buffer(field,i);
- old_bp = oldbuf + i*(1+old_buflen);
- memcpy(new_bp,old_bp,(size_t)old_buflen);
- if (new_buflen > old_buflen)
- memset(new_bp + old_buflen,C_BLANK,
- (size_t)(new_buflen - old_buflen));
- *(new_bp + new_buflen) = '\0';
+ new_bp = Address_Of_Nth_Buffer(field, i);
+ old_bp = oldbuf + i * (1 + old_buflen);
+ for (j = 0; j < old_buflen; ++j)
+ new_bp[j] = old_bp[j];
+ while (j < new_buflen)
+ new_bp[j++] = myBLANK;
+ new_bp[new_buflen] = myZEROS;
}
- if (need_visual_update)
- {
- WINDOW *new_window = newpad(field->drows,field->dcols);
- if (!new_window)
- { /* restore old state */
- field->dcols = old_dcols;
- field->drows = old_drows;
- field->buf = oldbuf;
- if (( single_line_field &&
- (field->dcols!=field->maxgrow)) ||
- (!single_line_field &&
- (field->drows!=field->maxgrow)))
- field->status |= _MAY_GROW;
- free( newbuf );
- return FALSE;
+#if USE_WIDEC_SUPPORT
+ if (wresize(field->working, 1, Buffer_Length(field) + 1) == ERR)
+ result = FALSE;
+#endif
+
+ if (need_visual_update && result)
+ {
+ WINDOW *new_window = newpad(field->drows, field->dcols);
+
+ if (new_window != 0)
+ {
+ assert(form != (FORM *)0);
+ if (form->w)
+ delwin(form->w);
+ form->w = new_window;
+ Set_Field_Window_Attributes(field, form->w);
+ werase(form->w);
+ Buffer_To_Window(field, form->w);
+ untouchwin(form->w);
+ wmove(form->w, form->currow, form->curcol);
}
- assert(form!=(FORM *)0);
- if (form->w)
- delwin(form->w);
- form->w = new_window;
- Set_Field_Window_Attributes(field,form->w);
- werase(form->w);
- Buffer_To_Window(field,form->w);
- untouchwin(form->w);
- wmove(form->w,form->currow,form->curcol);
+ else
+ result = FALSE;
}
- free(oldbuf);
- /* reflect changes in linked fields */
- if (field != field->link)
+ if (result)
{
- FIELD *linked_field;
- for(linked_field = field->link;
- linked_field!= field;
- linked_field = linked_field->link)
+ free(oldbuf);
+ /* reflect changes in linked fields */
+ if (field != field->link)
{
- linked_field->buf = field->buf;
- linked_field->drows = field->drows;
- linked_field->dcols = field->dcols;
+ FIELD *linked_field;
+
+ for (linked_field = field->link;
+ linked_field != field;
+ linked_field = linked_field->link)
+ {
+ linked_field->buf = field->buf;
+ linked_field->drows = field->drows;
+ linked_field->dcols = field->dcols;
+ }
}
}
- result = TRUE;
- }
+ else
+ {
+ /* restore old state */
+ field->dcols = old_dcols;
+ field->drows = old_drows;
+ field->buf = oldbuf;
+ if ((single_line_field &&
+ (field->dcols != field->maxgrow)) ||
+ (!single_line_field &&
+ (field->drows != field->maxgrow)))
+ field->status |= _MAY_GROW;
+ free(newbuf);
+ }
+ }
}
- return(result);
+ return (result);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int _nc_Position_Form_Cursor(FORM * form)
-|
+|
| Description : Position the cursor in the window for the current
-| field to be in sync. with the currow and curcol
+| field to be in sync. with the currow and curcol
| values.
|
| Return Values : E_OK - success
@@ -560,39 +738,39 @@ static bool Field_Grown(FIELD * field, int amount)
| field-window
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-_nc_Position_Form_Cursor (FORM * form)
+_nc_Position_Form_Cursor(FORM *form)
{
- FIELD *field;
+ FIELD *field;
WINDOW *formwin;
-
+
if (!form)
- return(E_BAD_ARGUMENT);
+ return (E_BAD_ARGUMENT);
- if (!form->w || !form->current)
- return(E_SYSTEM_ERROR);
+ if (!form->w || !form->current)
+ return (E_SYSTEM_ERROR);
- field = form->current;
- formwin = Get_Form_Window(form);
+ field = form->current;
+ formwin = Get_Form_Window(form);
- wmove( form->w, form->currow, form->curcol );
- if ( Has_Invisible_Parts(field) )
+ wmove(form->w, form->currow, form->curcol);
+ if (Has_Invisible_Parts(field))
{
/* in this case fieldwin isn't derived from formwin, so we have
- to move the cursor in formwin by hand... */
+ to move the cursor in formwin by hand... */
wmove(formwin,
field->frow + form->currow - form->toprow,
field->fcol + form->curcol - form->begincol);
wcursyncup(formwin);
}
- else
+ else
wcursyncup(form->w);
- return(E_OK);
+ return (E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int _nc_Refresh_Current_Field(FORM * form)
-|
+|
| Description : Propagate the changes in the fields window to the
| window of the form.
|
@@ -601,19 +779,21 @@ _nc_Position_Form_Cursor (FORM * form)
| E_SYSTEM_ERROR - general error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-_nc_Refresh_Current_Field (FORM * form)
+_nc_Refresh_Current_Field(FORM *form)
{
WINDOW *formwin;
- FIELD *field;
+ FIELD *field;
+
+ T((T_CALLED("_nc_Refresh_Current_Field(%p)"), form));
if (!form)
RETURN(E_BAD_ARGUMENT);
- if (!form->w || !form->current)
+ if (!form->w || !form->current)
RETURN(E_SYSTEM_ERROR);
- field = form->current;
- formwin = Get_Form_Window(form);
+ field = form->current;
+ formwin = Get_Form_Window(form);
if (field->opts & O_PUBLIC)
{
@@ -622,13 +802,14 @@ _nc_Refresh_Current_Field (FORM * form)
/* 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 */
+ {
+ /* horizontal scrolling */
if (form->curcol < form->begincol)
- form->begincol = form->curcol;
+ form->begincol = form->curcol;
else
{
if (form->curcol >= (form->begincol + field->cols))
- form->begincol = form->curcol - field->cols + 1;
+ form->begincol = form->curcol - field->cols + 1;
}
copywin(form->w,
formwin,
@@ -641,8 +822,9 @@ _nc_Refresh_Current_Field (FORM * form)
0);
}
else
- { /* A multiline, i.e. vertical scrolling field */
- int row_after_bottom,first_modified_row,first_unmodified_row;
+ {
+ /* A multi-line, i.e. vertical scrolling field */
+ int row_after_bottom, first_modified_row, first_unmodified_row;
if (field->drows > field->rows)
{
@@ -658,25 +840,27 @@ _nc_Refresh_Current_Field (FORM * form)
field->status |= _NEWTOP;
}
if (field->status & _NEWTOP)
- { /* means we have to copy whole range */
+ {
+ /* means we have to copy whole range */
first_modified_row = form->toprow;
first_unmodified_row = first_modified_row + field->rows;
field->status &= ~_NEWTOP;
}
- else
- { /* we try to optimize : finding the range of touched
- lines */
+ else
+ {
+ /* we try to optimize : finding the range of touched
+ lines */
first_modified_row = form->toprow;
- while(first_modified_row < row_after_bottom)
+ while (first_modified_row < row_after_bottom)
{
- if (is_linetouched(form->w,first_modified_row))
+ 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)
+ while (first_unmodified_row < row_after_bottom)
{
- if (!is_linetouched(form->w,first_unmodified_row))
+ if (!is_linetouched(form->w, first_unmodified_row))
break;
first_unmodified_row++;
}
@@ -684,7 +868,7 @@ _nc_Refresh_Current_Field (FORM * form)
}
else
{
- first_modified_row = form->toprow;
+ first_modified_row = form->toprow;
first_unmodified_row = first_modified_row + field->rows;
}
if (first_unmodified_row != first_modified_row)
@@ -701,45 +885,47 @@ _nc_Refresh_Current_Field (FORM * form)
wsyncup(formwin);
}
else
- { /* if the field-window is simply a derived window, i.e. contains
- no invisible parts, the whole thing is trivial
- */
+ {
+ /* if the field-window is simply a derived window, i.e. contains no
+ * invisible parts, the whole thing is trivial
+ */
wsyncup(form->w);
}
}
untouchwin(form->w);
- return _nc_Position_Form_Cursor(form);
+ returnCode(_nc_Position_Form_Cursor(form));
}
-
+
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static void Perform_Justification(
| FIELD * field,
| WINDOW * win)
-|
-| Description : Output field with requested justification
+|
+| Description : Output field with requested justification
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Perform_Justification(FIELD * field, WINDOW * win)
+static void
+Perform_Justification(FIELD *field, WINDOW *win)
{
- char *bp;
+ FIELD_CELL *bp;
int len;
- int col = 0;
+ int col = 0;
- bp = Get_Start_Of_Data(field->buf,Buffer_Length(field));
- len = (int)(After_End_Of_Data(field->buf,Buffer_Length(field)) - bp);
+ bp = Get_Start_Of_Data(field->buf, Buffer_Length(field));
+ len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp);
- if (len>0)
+ if (len > 0)
{
assert(win && (field->drows == 1) && (field->dcols == field->cols));
- switch(field->just)
+ switch (field->just)
{
case JUSTIFY_LEFT:
break;
case JUSTIFY_CENTER:
- col = (field->cols - len)/2;
+ col = (field->cols - len) / 2;
break;
case JUSTIFY_RIGHT:
col = field->cols - len;
@@ -748,77 +934,79 @@ static void Perform_Justification(FIELD * field, WINDOW * win)
break;
}
- wmove(win,0,col);
- waddnstr(win,bp,len);
+ wmove(win, 0, col);
+ myADDNSTR(win, bp, len);
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static void Undo_Justification(
| FIELD * field,
| WINDOW * win)
-|
+|
| Description : Display field without any justification, i.e.
| left justified
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Undo_Justification(FIELD * field, WINDOW * win)
+static void
+Undo_Justification(FIELD *field, WINDOW *win)
{
- char *bp;
+ FIELD_CELL *bp;
int len;
- bp = Get_Start_Of_Data(field->buf,Buffer_Length(field));
- len = (int)(After_End_Of_Data(field->buf,Buffer_Length(field))-bp);
+ bp = Get_Start_Of_Data(field->buf, Buffer_Length(field));
+ len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp);
- if (len>0)
+ if (len > 0)
{
assert(win);
- wmove(win,0,0);
- waddnstr(win,bp,len);
+ wmove(win, 0, 0);
+ myADDNSTR(win, bp, len);
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static bool Check_Char(
| FIELDTYPE * typ,
| int ch,
| TypeArgument *argp)
-|
+|
| Description : Perform a single character check for character ch
-| according to the fieldtype instance.
+| according to the fieldtype instance.
|
| Return Values : TRUE - Character is valid
| FALSE - Character is invalid
+--------------------------------------------------------------------------*/
-static bool Check_Char(FIELDTYPE * typ, int ch, TypeArgument *argp)
+static bool
+Check_Char(FIELDTYPE *typ, int ch, TypeArgument *argp)
{
- if (typ)
+ if (typ)
{
if (typ->status & _LINKED_TYPE)
{
assert(argp);
- return(
- Check_Char(typ->left ,ch,argp->left ) ||
- Check_Char(typ->right,ch,argp->right) );
- }
- else
+ return (
+ Check_Char(typ->left, ch, argp->left) ||
+ Check_Char(typ->right, ch, argp->right));
+ }
+ else
{
if (typ->ccheck)
- return typ->ccheck(ch,(void *)argp);
+ return typ->ccheck(ch, (void *)argp);
}
}
- return (isprint((unsigned char)ch) ? TRUE : FALSE);
+ return (!iscntrl(UChar(ch)) ? TRUE : FALSE);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Display_Or_Erase_Field(
| FIELD * field,
| bool bEraseFlag)
-|
+|
| Description : Create a subwindow for the field and display the
| buffer contents (apply justification if required)
| or simply erase the field.
@@ -826,7 +1014,8 @@ static bool Check_Char(FIELDTYPE * typ, int ch, TypeArgument *argp)
| Return Values : E_OK - on success
| E_SYSTEM_ERROR - some error (typical no memory)
+--------------------------------------------------------------------------*/
-static int Display_Or_Erase_Field(FIELD * field, bool bEraseFlag)
+static int
+Display_Or_Erase_Field(FIELD *field, bool bEraseFlag)
{
WINDOW *win;
WINDOW *fwin;
@@ -835,17 +1024,17 @@ static int Display_Or_Erase_Field(FIELD * field, bool bEraseFlag)
return E_SYSTEM_ERROR;
fwin = Get_Form_Window(field->form);
- win = derwin(fwin,
- field->rows,field->cols,field->frow,field->fcol);
+ win = derwin(fwin,
+ field->rows, field->cols, field->frow, field->fcol);
- if (!win)
+ if (!win)
return E_SYSTEM_ERROR;
else
{
if (field->opts & O_VISIBLE)
- Set_Field_Window_Attributes(field,win);
+ Set_Field_Window_Attributes(field, win);
else
- wattrset(win,getattrs(fwin));
+ wattrset(win, WINDOW_ATTRS(fwin));
werase(win);
}
@@ -854,9 +1043,9 @@ static int Display_Or_Erase_Field(FIELD * field, bool bEraseFlag)
if (field->opts & O_PUBLIC)
{
if (Justification_Allowed(field))
- Perform_Justification(field,win);
+ Perform_Justification(field, win);
else
- Buffer_To_Window(field,win);
+ Buffer_To_Window(field, win);
}
field->status &= ~_NEWTOP;
}
@@ -870,176 +1059,186 @@ static int Display_Or_Erase_Field(FIELD * field, bool bEraseFlag)
#define Erase_Field(field) Display_Or_Erase_Field(field,TRUE)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Synchronize_Field(FIELD * field)
-|
+|
| Description : Synchronize the windows content with the value in
| the buffer.
|
| Return Values : E_OK - success
-| E_BAD_ARGUMENT - invalid field pointer
+| E_BAD_ARGUMENT - invalid field pointer
| E_SYSTEM_ERROR - some severe basic error
+--------------------------------------------------------------------------*/
-static int Synchronize_Field(FIELD * field)
+static int
+Synchronize_Field(FIELD *field)
{
FORM *form;
int res = E_OK;
if (!field)
- return(E_BAD_ARGUMENT);
+ return (E_BAD_ARGUMENT);
- if (((form=field->form) != (FORM *)0)
+ if (((form = field->form) != (FORM *)0)
&& Field_Really_Appears(field))
{
if (field == form->current)
- {
- form->currow = form->curcol = form->toprow = form->begincol = 0;
+ {
+ form->currow = form->curcol = form->toprow = form->begincol = 0;
werase(form->w);
-
- if ( (field->opts & O_PUBLIC) && Justification_Allowed(field) )
- Undo_Justification( field, form->w );
+
+ if ((field->opts & O_PUBLIC) && Justification_Allowed(field))
+ Undo_Justification(field, form->w);
else
- Buffer_To_Window( field, form->w );
-
+ Buffer_To_Window(field, form->w);
+
field->status |= _NEWTOP;
- res = _nc_Refresh_Current_Field( form );
+ res = _nc_Refresh_Current_Field(form);
}
else
- res = Display_Field( field );
+ res = Display_Field(field);
}
field->status |= _CHANGED;
- return(res);
+ return (res);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Synchronize_Linked_Fields(FIELD * field)
-|
+|
| Description : Propagate the Synchronize_Field function to all linked
| fields. The first error that occurs in the sequence
-| of updates is the returnvalue.
+| of updates is the return value.
|
| Return Values : E_OK - success
-| E_BAD_ARGUMENT - invalid field pointer
+| E_BAD_ARGUMENT - invalid field pointer
| E_SYSTEM_ERROR - some severe basic error
+--------------------------------------------------------------------------*/
-static int Synchronize_Linked_Fields(FIELD * field)
+static int
+Synchronize_Linked_Fields(FIELD *field)
{
FIELD *linked_field;
int res = E_OK;
int syncres;
if (!field)
- return(E_BAD_ARGUMENT);
+ return (E_BAD_ARGUMENT);
if (!field->link)
- return(E_SYSTEM_ERROR);
+ return (E_SYSTEM_ERROR);
- for(linked_field = field->link;
- linked_field!= field;
- linked_field = linked_field->link )
+ for (linked_field = field->link;
+ linked_field != field;
+ linked_field = linked_field->link)
{
- if (((syncres=Synchronize_Field(linked_field)) != E_OK) &&
- (res==E_OK))
+ if (((syncres = Synchronize_Field(linked_field)) != E_OK) &&
+ (res == E_OK))
res = syncres;
}
- return(res);
+ return (res);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int _nc_Synchronize_Attributes(FIELD * field)
-|
+|
| Description : If a fields visual attributes have changed, this
| routine is called to propagate those changes to the
-| screen.
+| screen.
|
| Return Values : E_OK - success
| E_BAD_ARGUMENT - invalid field pointer
| E_SYSTEM_ERROR - some severe basic error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-_nc_Synchronize_Attributes (FIELD * field)
+_nc_Synchronize_Attributes(FIELD *field)
{
FORM *form;
int res = E_OK;
WINDOW *formwin;
+ T((T_CALLED("_nc_Synchronize_Attributes(%p)"), field));
+
if (!field)
- return(E_BAD_ARGUMENT);
+ returnCode(E_BAD_ARGUMENT);
- if (((form=field->form) != (FORM *)0)
+ CHECKPOS(field->form);
+ if (((form = field->form) != (FORM *)0)
&& Field_Really_Appears(field))
- {
- if (form->current==field)
+ {
+ if (form->current == field)
{
Synchronize_Buffer(form);
- Set_Field_Window_Attributes(field,form->w);
+ Set_Field_Window_Attributes(field, form->w);
werase(form->w);
+ wmove(form->w, form->currow, form->curcol);
+
if (field->opts & O_PUBLIC)
{
if (Justification_Allowed(field))
- Undo_Justification(field,form->w);
- else
- Buffer_To_Window(field,form->w);
+ Undo_Justification(field, form->w);
+ else
+ Buffer_To_Window(field, form->w);
}
- else
+ else
{
- formwin = Get_Form_Window(form);
- copywin(form->w,formwin,
- 0,0,
- field->frow,field->fcol,
- field->rows-1,field->cols-1,0);
+ formwin = Get_Form_Window(form);
+ copywin(form->w, formwin,
+ 0, 0,
+ field->frow, field->fcol,
+ field->rows - 1, field->cols - 1, 0);
wsyncup(formwin);
- Buffer_To_Window(field,form->w);
- field->status |= _NEWTOP; /* fake refresh to paint all */
+ Buffer_To_Window(field, form->w);
+ field->status |= _NEWTOP; /* fake refresh to paint all */
_nc_Refresh_Current_Field(form);
}
}
- else
+ else
{
res = Display_Field(field);
}
}
- return(res);
+ CHECKPOS(form);
+ returnCode(res);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int _nc_Synchronize_Options(FIELD * field,
| Field_Options newopts)
-|
+|
| Description : If a fields options have changed, this routine is
| called to propagate these changes to the screen and
-| to really change the behaviour of the field.
+| to really change the behavior of the field.
|
| Return Values : E_OK - success
-| E_BAD_ARGUMENT - invalid field pointer
+| E_BAD_ARGUMENT - invalid field pointer
+| E_CURRENT - field is the current one
| E_SYSTEM_ERROR - some severe basic error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-_nc_Synchronize_Options
-(FIELD *field, Field_Options newopts)
+_nc_Synchronize_Options(FIELD *field, Field_Options newopts)
{
Field_Options oldopts;
Field_Options changed_opts;
FORM *form;
int res = E_OK;
+ T((T_CALLED("_nc_Synchronize_Options(%p,%#x)"), field, newopts));
+
if (!field)
- return(E_BAD_ARGUMENT);
+ returnCode(E_BAD_ARGUMENT);
- oldopts = field->opts;
+ oldopts = field->opts;
changed_opts = oldopts ^ newopts;
- field->opts = newopts;
- form = field->form;
+ field->opts = newopts;
+ form = field->form;
if (form)
{
if (form->current == field)
{
field->opts = oldopts;
- return(E_CURRENT);
+ returnCode(E_CURRENT);
}
if (form->status & _POSTED)
@@ -1069,12 +1268,13 @@ _nc_Synchronize_Options
int res2 = E_OK;
if (newopts & O_STATIC)
- { /* the field becomes now static */
+ {
+ /* the field becomes now static */
field->status &= ~_MAY_GROW;
/* if actually we have no hidden columns, justification may
occur again */
- if (single_line_field &&
- (field->cols == field->dcols) &&
+ if (single_line_field &&
+ (field->cols == field->dcols) &&
(field->just != NO_JUSTIFICATION) &&
Field_Really_Appears(field))
{
@@ -1082,62 +1282,65 @@ _nc_Synchronize_Options
}
}
else
- { /* field is no longer static */
- if ((field->maxgrow==0) ||
- ( single_line_field && (field->dcols < field->maxgrow)) ||
+ {
+ /* field is no longer static */
+ if ((field->maxgrow == 0) ||
+ (single_line_field && (field->dcols < field->maxgrow)) ||
(!single_line_field && (field->drows < field->maxgrow)))
{
field->status |= _MAY_GROW;
- /* a field with justification now changes its behaviour,
- so we must redisplay it */
- if (single_line_field &&
+ /* a field with justification now changes its behavior,
+ so we must redisplay it */
+ if (single_line_field &&
(field->just != NO_JUSTIFICATION) &&
Field_Really_Appears(field))
{
res2 = Display_Field(field);
- }
- }
+ }
+ }
}
if (res2 != E_OK)
res = res2;
}
- return(res);
+ returnCode(res);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int _nc_Set_Current_Field(FORM * form,
| FIELD * newfield)
-|
+|
| Description : Make the newfield the new current field.
|
-| Return Values : E_OK - success
-| E_BAD_ARGUMENT - invalid form or field pointer
-| E_SYSTEM_ERROR - some severe basic error
+| Return Values : E_OK - success
+| E_BAD_ARGUMENT - invalid form or field pointer
+| E_SYSTEM_ERROR - some severe basic error
+| E_NOT_CONNECTED - no fields are connected to the form
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-_nc_Set_Current_Field
-(FORM *form, FIELD *newfield)
+_nc_Set_Current_Field(FORM *form, FIELD *newfield)
{
- FIELD *field;
+ FIELD *field;
WINDOW *new_window;
- if (!form || !newfield || !form->current || (newfield->form!=form))
- return(E_BAD_ARGUMENT);
+ T((T_CALLED("_nc_Set_Current_Field(%p,%p)"), form, newfield));
+
+ if (!form || !newfield || !form->current || (newfield->form != form))
+ returnCode(E_BAD_ARGUMENT);
- if ( (form->status & _IN_DRIVER) )
- return(E_BAD_STATE);
+ if ((form->status & _IN_DRIVER))
+ returnCode(E_BAD_STATE);
if (!(form->field))
- return(E_NOT_CONNECTED);
+ returnCode(E_NOT_CONNECTED);
field = form->current;
-
- if ((field!=newfield) ||
+
+ if ((field != newfield) ||
!(form->status & _POSTED))
{
- if ((form->w) &&
+ if ((form->w) &&
(field->opts & O_VISIBLE) &&
(field->form->curpage == field->page))
{
@@ -1146,18 +1349,18 @@ _nc_Set_Current_Field
{
if (field->drows > field->rows)
{
- if (form->toprow==0)
+ if (form->toprow == 0)
field->status &= ~_NEWTOP;
- else
+ else
field->status |= _NEWTOP;
- }
- else
+ }
+ else
{
if (Justification_Allowed(field))
{
- Window_To_Buffer(form->w,field);
+ Window_To_Buffer(form->w, field);
werase(form->w);
- Perform_Justification(field,form->w);
+ Perform_Justification(field, form->w);
wsyncup(form->w);
}
}
@@ -1165,38 +1368,38 @@ _nc_Set_Current_Field
delwin(form->w);
form->w = (WINDOW *)0;
}
-
+
field = newfield;
if (Has_Invisible_Parts(field))
- new_window = newpad(field->drows,field->dcols);
- else
+ new_window = newpad(field->drows, field->dcols);
+ else
new_window = derwin(Get_Form_Window(form),
- field->rows,field->cols,field->frow,field->fcol);
+ field->rows, field->cols, field->frow, field->fcol);
- if (!new_window)
- return(E_SYSTEM_ERROR);
+ if (!new_window)
+ returnCode(E_SYSTEM_ERROR);
form->current = field;
if (form->w)
delwin(form->w);
- form->w = new_window;
+ form->w = new_window;
form->status &= ~_WINDOW_MODIFIED;
- Set_Field_Window_Attributes(field,form->w);
+ Set_Field_Window_Attributes(field, form->w);
if (Has_Invisible_Parts(field))
{
werase(form->w);
- Buffer_To_Window(field,form->w);
- }
- else
+ Buffer_To_Window(field, form->w);
+ }
+ else
{
if (Justification_Allowed(field))
{
werase(form->w);
- Undo_Justification(field,form->w);
+ Undo_Justification(field, form->w);
wsyncup(form->w);
}
}
@@ -1205,417 +1408,461 @@ _nc_Set_Current_Field
}
form->currow = form->curcol = form->toprow = form->begincol = 0;
- return(E_OK);
+ returnCode(E_OK);
}
-
+
/*----------------------------------------------------------------------------
Intra-Field Navigation routines
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Next_Character(FORM * form)
-|
-| Description : Move to the next character in the field. In a multiline
+|
+| Description : Move to the next character in the field. In a multi-line
| field this wraps at the end of the line.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - at the rightmost position
+--------------------------------------------------------------------------*/
-static int IFN_Next_Character(FORM * form)
+static int
+IFN_Next_Character(FORM *form)
{
FIELD *field = form->current;
-
- if ((++(form->curcol))==field->dcols)
+ int step = myWCWIDTH(form->w, form->currow, form->curcol);
+
+ T((T_CALLED("IFN_Next_Character(%p)"), form));
+ if ((form->curcol += step) == field->dcols)
{
- if ((++(form->currow))==field->drows)
+ if ((++(form->currow)) == field->drows)
{
#if GROW_IF_NAVIGATE
- if (!Single_Line_Field(field) && Field_Grown(field,1)) {
- form->curcol = 0;
- return(E_OK);
- }
+ if (!Single_Line_Field(field) && Field_Grown(field, 1))
+ {
+ form->curcol = 0;
+ returnCode(E_OK);
+ }
#endif
form->currow--;
#if GROW_IF_NAVIGATE
- if (Single_Line_Field(field) && Field_Grown(field,1))
- return(E_OK);
+ if (Single_Line_Field(field) && Field_Grown(field, 1))
+ returnCode(E_OK);
#endif
- form->curcol--;
- return(E_REQUEST_DENIED);
+ form->curcol -= step;
+ returnCode(E_REQUEST_DENIED);
}
form->curcol = 0;
}
- return(E_OK);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Previous_Character(FORM * form)
-|
-| Description : Move to the previous character in the field. In a
-| multiline field this wraps and the beginning of the
+|
+| Description : Move to the previous character in the field. In a
+| multi-line field this wraps and the beginning of the
| line.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - at the leftmost position
+--------------------------------------------------------------------------*/
-static int IFN_Previous_Character(FORM * form)
+static int
+IFN_Previous_Character(FORM *form)
{
- if ((--(form->curcol))<0)
+ int amount = myWCWIDTH(form->w, form->currow, form->curcol - 1);
+ int oldcol = form->curcol;
+
+ T((T_CALLED("IFN_Previous_Character(%p)"), form));
+ if ((form->curcol -= amount) < 0)
{
- if ((--(form->currow))<0)
+ if ((--(form->currow)) < 0)
{
form->currow++;
- form->curcol++;
- return(E_REQUEST_DENIED);
+ form->curcol = oldcol;
+ returnCode(E_REQUEST_DENIED);
}
form->curcol = form->current->dcols - 1;
}
- return(E_OK);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Next_Line(FORM * form)
-|
+|
| Description : Move to the beginning of the next line in the field
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - at the last line
+--------------------------------------------------------------------------*/
-static int IFN_Next_Line(FORM * form)
+static int
+IFN_Next_Line(FORM *form)
{
FIELD *field = form->current;
- if ((++(form->currow))==field->drows)
+ T((T_CALLED("IFN_Next_Line(%p)"), form));
+ if ((++(form->currow)) == field->drows)
{
#if GROW_IF_NAVIGATE
- if (!Single_Line_Field(field) && Field_Grown(field,1))
- return(E_OK);
+ if (!Single_Line_Field(field) && Field_Grown(field, 1))
+ returnCode(E_OK);
#endif
form->currow--;
- return(E_REQUEST_DENIED);
+ returnCode(E_REQUEST_DENIED);
}
form->curcol = 0;
- return(E_OK);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Previous_Line(FORM * form)
-|
+|
| Description : Move to the beginning of the previous line in the field
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - at the first line
+--------------------------------------------------------------------------*/
-static int IFN_Previous_Line(FORM * form)
+static int
+IFN_Previous_Line(FORM *form)
{
- if ( (--(form->currow)) < 0 )
+ T((T_CALLED("IFN_Previous_Line(%p)"), form));
+ if ((--(form->currow)) < 0)
{
form->currow++;
- return(E_REQUEST_DENIED);
+ returnCode(E_REQUEST_DENIED);
}
form->curcol = 0;
- return(E_OK);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Next_Word(FORM * form)
-|
+|
| Description : Move to the beginning of the next word in the field.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - there is no next word
+--------------------------------------------------------------------------*/
-static int IFN_Next_Word(FORM * form)
+static int
+IFN_Next_Word(FORM *form)
{
FIELD *field = form->current;
- char *bp = Address_Of_Current_Position_In_Buffer(form);
- char *s;
- char *t;
+ FIELD_CELL *bp = Address_Of_Current_Position_In_Buffer(form);
+ FIELD_CELL *s;
+ FIELD_CELL *t;
+
+ T((T_CALLED("IFN_Next_Word(%p)"), form));
/* We really need access to the data, so we have to synchronize */
Synchronize_Buffer(form);
/* Go to the first whitespace after the current position (including
- current position). This is then the startpoint to look for the
- next non-blank data */
- s = Get_First_Whitespace_Character(bp,Buffer_Length(field) -
+ current position). This is then the starting point to look for the
+ next non-blank data */
+ s = Get_First_Whitespace_Character(bp, Buffer_Length(field) -
(int)(bp - field->buf));
/* Find the start of the next word */
- t = Get_Start_Of_Data(s,Buffer_Length(field) -
+ t = Get_Start_Of_Data(s, Buffer_Length(field) -
(int)(s - field->buf));
#if !FRIENDLY_PREV_NEXT_WORD
- if (s==t)
- return(E_REQUEST_DENIED);
+ if (s == t)
+ returnCode(E_REQUEST_DENIED);
else
#endif
{
- Adjust_Cursor_Position(form,t);
- return(E_OK);
+ Adjust_Cursor_Position(form, t);
+ returnCode(E_OK);
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Previous_Word(FORM * form)
-|
+|
| Description : Move to the beginning of the previous word in the field.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - there is no previous word
+--------------------------------------------------------------------------*/
-static int IFN_Previous_Word(FORM * form)
+static int
+IFN_Previous_Word(FORM *form)
{
FIELD *field = form->current;
- char *bp = Address_Of_Current_Position_In_Buffer(form);
- char *s;
- char *t;
- bool again = FALSE;
+ FIELD_CELL *bp = Address_Of_Current_Position_In_Buffer(form);
+ FIELD_CELL *s;
+ FIELD_CELL *t;
+ bool again = FALSE;
+
+ T((T_CALLED("IFN_Previous_Word(%p)"), form));
/* We really need access to the data, so we have to synchronize */
Synchronize_Buffer(form);
- s = After_End_Of_Data(field->buf,(int)(bp-field->buf));
+ s = After_End_Of_Data(field->buf, (int)(bp - field->buf));
/* s points now right after the last non-blank in the buffer before bp.
If bp was in a word, s equals bp. In this case we must find the last
whitespace in the buffer before bp and repeat the game to really find
the previous word! */
- if (s==bp)
+ if (s == bp)
again = TRUE;
-
+
/* And next call now goes backward to look for the last whitespace
before that, pointing right after this, so it points to the begin
- of the previous word.
- */
- t = After_Last_Whitespace_Character(field->buf,(int)(s - field->buf));
+ of the previous word.
+ */
+ t = After_Last_Whitespace_Character(field->buf, (int)(s - field->buf));
#if !FRIENDLY_PREV_NEXT_WORD
- if (s==t)
- return(E_REQUEST_DENIED);
+ if (s == t)
+ returnCode(E_REQUEST_DENIED);
#endif
if (again)
- { /* and do it again, replacing bp by t */
- s = After_End_Of_Data(field->buf,(int)(t - field->buf));
- t = After_Last_Whitespace_Character(field->buf,(int)(s - field->buf));
+ {
+ /* and do it again, replacing bp by t */
+ s = After_End_Of_Data(field->buf, (int)(t - field->buf));
+ t = After_Last_Whitespace_Character(field->buf, (int)(s - field->buf));
#if !FRIENDLY_PREV_NEXT_WORD
- if (s==t)
- return(E_REQUEST_DENIED);
+ if (s == t)
+ returnCode(E_REQUEST_DENIED);
#endif
}
- Adjust_Cursor_Position(form,t);
- return(E_OK);
+ Adjust_Cursor_Position(form, t);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Beginning_Of_Field(FORM * form)
-|
+|
| Description : Place the cursor at the first non-pad character in
-| the field.
+| the field.
|
-| Return Values : E_OK - success
+| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int IFN_Beginning_Of_Field(FORM * form)
+static int
+IFN_Beginning_Of_Field(FORM *form)
{
FIELD *field = form->current;
+ T((T_CALLED("IFN_Beginning_Of_Field(%p)"), form));
Synchronize_Buffer(form);
Adjust_Cursor_Position(form,
- Get_Start_Of_Data(field->buf,Buffer_Length(field)));
- return(E_OK);
+ Get_Start_Of_Data(field->buf, Buffer_Length(field)));
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_End_Of_Field(FORM * form)
-|
+|
| Description : Place the cursor after the last non-pad character in
| the field. If the field occupies the last position in
-| the buffer, the cursos is positioned on the last
+| the buffer, the cursor is positioned on the last
| character.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int IFN_End_Of_Field(FORM * form)
+static int
+IFN_End_Of_Field(FORM *form)
{
FIELD *field = form->current;
- char *pos;
+ FIELD_CELL *pos;
+ T((T_CALLED("IFN_End_Of_Field(%p)"), form));
Synchronize_Buffer(form);
- pos = After_End_Of_Data(field->buf,Buffer_Length(field));
- if (pos==(field->buf + Buffer_Length(field)))
+ pos = After_End_Of_Data(field->buf, Buffer_Length(field));
+ if (pos == (field->buf + Buffer_Length(field)))
pos--;
- Adjust_Cursor_Position(form,pos);
- return(E_OK);
+ Adjust_Cursor_Position(form, pos);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Beginning_Of_Line(FORM * form)
-|
+|
| Description : Place the cursor on the first non-pad character in
| the current line of the field.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int IFN_Beginning_Of_Line(FORM * form)
+static int
+IFN_Beginning_Of_Line(FORM *form)
{
FIELD *field = form->current;
+ T((T_CALLED("IFN_Beginning_Of_Line(%p)"), form));
Synchronize_Buffer(form);
Adjust_Cursor_Position(form,
- Get_Start_Of_Data(Address_Of_Current_Row_In_Buffer(form),
- field->dcols));
- return(E_OK);
+ Get_Start_Of_Data(Address_Of_Current_Row_In_Buffer(form),
+ field->dcols));
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_End_Of_Line(FORM * form)
-|
+|
| Description : Place the cursor after the last non-pad character in the
-| current line of the field. If the field occupies the
+| current line of the field. If the field occupies the
| last column in the line, the cursor is positioned on the
| last character of the line.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int IFN_End_Of_Line(FORM * form)
+static int
+IFN_End_Of_Line(FORM *form)
{
FIELD *field = form->current;
- char *pos;
- char *bp;
+ FIELD_CELL *pos;
+ FIELD_CELL *bp;
+ T((T_CALLED("IFN_End_Of_Line(%p)"), form));
Synchronize_Buffer(form);
- bp = Address_Of_Current_Row_In_Buffer(form);
- pos = After_End_Of_Data(bp,field->dcols);
+ bp = Address_Of_Current_Row_In_Buffer(form);
+ pos = After_End_Of_Data(bp, field->dcols);
if (pos == (bp + field->dcols))
pos--;
- Adjust_Cursor_Position(form,pos);
- return(E_OK);
+ Adjust_Cursor_Position(form, pos);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Left_Character(FORM * form)
-|
+|
| Description : Move one character to the left in the current line.
-| This doesn't cycle.
+| This doesn't cycle.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - already in first column
+--------------------------------------------------------------------------*/
-static int IFN_Left_Character(FORM * form)
+static int
+IFN_Left_Character(FORM *form)
{
- if ( (--(form->curcol)) < 0 )
+ int amount = myWCWIDTH(form->w, form->currow, form->curcol - 1);
+ int oldcol = form->curcol;
+
+ T((T_CALLED("IFN_Left_Character(%p)"), form));
+ if ((form->curcol -= amount) < 0)
{
- form->curcol++;
- return(E_REQUEST_DENIED);
+ form->curcol = oldcol;
+ returnCode(E_REQUEST_DENIED);
}
- return(E_OK);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Right_Character(FORM * form)
-|
+|
| Description : Move one character to the right in the current line.
| This doesn't cycle.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - already in last column
+--------------------------------------------------------------------------*/
-static int IFN_Right_Character(FORM * form)
+static int
+IFN_Right_Character(FORM *form)
{
- if ( (++(form->curcol)) == form->current->dcols )
+ int amount = myWCWIDTH(form->w, form->currow, form->curcol);
+ int oldcol = form->curcol;
+
+ T((T_CALLED("IFN_Right_Character(%p)"), form));
+ if ((form->curcol += amount) >= form->current->dcols)
{
#if GROW_IF_NAVIGATE
FIELD *field = form->current;
- if (Single_Line_Field(field) && Field_Grown(field,1))
- return(E_OK);
+
+ if (Single_Line_Field(field) && Field_Grown(field, 1))
+ returnCode(E_OK);
#endif
- --(form->curcol);
- return(E_REQUEST_DENIED);
+ form->curcol = oldcol;
+ returnCode(E_REQUEST_DENIED);
}
- return(E_OK);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Up_Character(FORM * form)
-|
+|
| Description : Move one line up. This doesn't cycle through the lines
| of the field.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - already in last column
+--------------------------------------------------------------------------*/
-static int IFN_Up_Character(FORM * form)
+static int
+IFN_Up_Character(FORM *form)
{
- if ( (--(form->currow)) < 0 )
+ T((T_CALLED("IFN_Up_Character(%p)"), form));
+ if ((--(form->currow)) < 0)
{
form->currow++;
- return(E_REQUEST_DENIED);
+ returnCode(E_REQUEST_DENIED);
}
- return(E_OK);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int IFN_Down_Character(FORM * form)
-|
+|
| Description : Move one line down. This doesn't cycle through the
| lines of the field.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - already in last column
+--------------------------------------------------------------------------*/
-static int IFN_Down_Character(FORM * form)
+static int
+IFN_Down_Character(FORM *form)
{
FIELD *field = form->current;
- if ( (++(form->currow)) == field->drows )
+ T((T_CALLED("IFN_Down_Character(%p)"), form));
+ if ((++(form->currow)) == field->drows)
{
#if GROW_IF_NAVIGATE
- if (!Single_Line_Field(field) && Field_Grown(field,1))
- return(E_OK);
+ if (!Single_Line_Field(field) && Field_Grown(field, 1))
+ returnCode(E_OK);
#endif
--(form->currow);
- return(E_REQUEST_DENIED);
+ returnCode(E_REQUEST_DENIED);
}
- return(E_OK);
+ returnCode(E_OK);
}
/*----------------------------------------------------------------------------
- END of Intra-Field Navigation routines
+ END of Intra-Field Navigation routines
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Vertical scrolling helper routines
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static int VSC_Generic(FORM *form, int lines)
+| Facility : libnform
+| Function : static int VSC_Generic(FORM *form, int nlines)
|
-| Description : Scroll multi-line field forward (lines>0) or
-| backward (lines<0) this many lines.
+| Description : Scroll multi-line field forward (nlines>0) or
+| backward (nlines<0) this many lines.
|
-| Return Values : E_OK - success
+| Return Values : E_OK - success
| E_REQUEST_DENIED - can't scroll
+--------------------------------------------------------------------------*/
-static int VSC_Generic(FORM *form, int lines)
+static int
+VSC_Generic(FORM *form, int nlines)
{
FIELD *field = form->current;
int res = E_REQUEST_DENIED;
- int rows_to_go = (lines > 0 ? lines : -lines);
+ int rows_to_go = (nlines > 0 ? nlines : -nlines);
- if (lines > 0)
+ if (nlines > 0)
{
- if ( (rows_to_go + form->toprow) > (field->drows - field->rows) )
+ if ((rows_to_go + form->toprow) > (field->drows - field->rows))
rows_to_go = (field->drows - field->rows - form->toprow);
if (rows_to_go > 0)
@@ -1629,7 +1876,7 @@ static int VSC_Generic(FORM *form, int lines)
{
if (rows_to_go > form->toprow)
rows_to_go = form->toprow;
-
+
if (rows_to_go > 0)
{
form->currow -= rows_to_go;
@@ -1637,29 +1884,30 @@ static int VSC_Generic(FORM *form, int lines)
res = E_OK;
}
}
- return(res);
+ return (res);
}
/*----------------------------------------------------------------------------
End of Vertical scrolling helper routines
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Vertical scrolling routines
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Vertical_Scrolling(
| int (* const fct) (FORM *),
| FORM * form)
-|
-| Description : Performs the generic vertical scrolling routines.
+|
+| Description : Performs the generic vertical scrolling routines.
| This has to check for a multi-line field and to set
-| the _NEWTOP flag if scrolling really occured.
+| the _NEWTOP flag if scrolling really occurred.
|
| Return Values : Propagated error code from low-level driver calls
+--------------------------------------------------------------------------*/
-static int Vertical_Scrolling(int (* const fct) (FORM *), FORM * form)
+static int
+Vertical_Scrolling(int (*const fct) (FORM *), FORM *form)
{
int res = E_REQUEST_DENIED;
@@ -1669,299 +1917,327 @@ static int Vertical_Scrolling(int (* const fct) (FORM *), FORM * form)
if (res == E_OK)
form->current->status |= _NEWTOP;
}
- return(res);
+ return (res);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int VSC_Scroll_Line_Forward(FORM * form)
-|
+|
| Description : Scroll multi-line field forward a line
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data ahead
+--------------------------------------------------------------------------*/
-static int VSC_Scroll_Line_Forward(FORM * form)
+static int
+VSC_Scroll_Line_Forward(FORM *form)
{
- return VSC_Generic(form,1);
+ T((T_CALLED("VSC_Scroll_Line_Forward(%p)"), form));
+ returnCode(VSC_Generic(form, 1));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int VSC_Scroll_Line_Backward(FORM * form)
-|
+|
| Description : Scroll multi-line field backward a line
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data behind
+--------------------------------------------------------------------------*/
-static int VSC_Scroll_Line_Backward(FORM * form)
+static int
+VSC_Scroll_Line_Backward(FORM *form)
{
- return VSC_Generic(form,-1);
+ T((T_CALLED("VSC_Scroll_Line_Backward(%p)"), form));
+ returnCode(VSC_Generic(form, -1));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int VSC_Scroll_Page_Forward(FORM * form)
-|
+|
| Description : Scroll a multi-line field forward a page
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data ahead
+--------------------------------------------------------------------------*/
-static int VSC_Scroll_Page_Forward(FORM * form)
+static int
+VSC_Scroll_Page_Forward(FORM *form)
{
- return VSC_Generic(form,form->current->rows);
+ T((T_CALLED("VSC_Scroll_Page_Forward(%p)"), form));
+ returnCode(VSC_Generic(form, form->current->rows));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int VSC_Scroll_Half_Page_Forward(FORM * form)
-|
+|
| Description : Scroll a multi-line field forward half a page
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data ahead
+--------------------------------------------------------------------------*/
-static int VSC_Scroll_Half_Page_Forward(FORM * form)
+static int
+VSC_Scroll_Half_Page_Forward(FORM *form)
{
- return VSC_Generic(form,(form->current->rows + 1)/2);
+ T((T_CALLED("VSC_Scroll_Half_Page_Forward(%p)"), form));
+ returnCode(VSC_Generic(form, (form->current->rows + 1) / 2));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int VSC_Scroll_Page_Backward(FORM * form)
-|
+|
| Description : Scroll a multi-line field backward a page
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data behind
+--------------------------------------------------------------------------*/
-static int VSC_Scroll_Page_Backward(FORM * form)
+static int
+VSC_Scroll_Page_Backward(FORM *form)
{
- return VSC_Generic(form, -(form->current->rows));
+ T((T_CALLED("VSC_Scroll_Page_Backward(%p)"), form));
+ returnCode(VSC_Generic(form, -(form->current->rows)));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int VSC_Scroll_Half_Page_Backward(FORM * form)
-|
+|
| Description : Scroll a multi-line field backward half a page
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data behind
+--------------------------------------------------------------------------*/
-static int VSC_Scroll_Half_Page_Backward(FORM * form)
+static int
+VSC_Scroll_Half_Page_Backward(FORM *form)
{
- return VSC_Generic(form, -((form->current->rows + 1)/2));
+ T((T_CALLED("VSC_Scroll_Half_Page_Backward(%p)"), form));
+ returnCode(VSC_Generic(form, -((form->current->rows + 1) / 2)));
}
/*----------------------------------------------------------------------------
End of Vertical scrolling routines
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Horizontal scrolling helper routines
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static int HSC_Generic(FORM *form, int columns)
+| Facility : libnform
+| Function : static int HSC_Generic(FORM *form, int ncolumns)
|
-| Description : Scroll single-line field forward (columns>0) or
-| backward (columns<0) this many columns.
+| Description : Scroll single-line field forward (ncolumns>0) or
+| backward (ncolumns<0) this many columns.
|
-| Return Values : E_OK - success
+| Return Values : E_OK - success
| E_REQUEST_DENIED - can't scroll
+--------------------------------------------------------------------------*/
-static int HSC_Generic(FORM *form, int columns)
+static int
+HSC_Generic(FORM *form, int ncolumns)
{
FIELD *field = form->current;
int res = E_REQUEST_DENIED;
- int cols_to_go = (columns > 0 ? columns : -columns);
+ int cols_to_go = (ncolumns > 0 ? ncolumns : -ncolumns);
- if (columns > 0)
+ if (ncolumns > 0)
{
if ((cols_to_go + form->begincol) > (field->dcols - field->cols))
cols_to_go = field->dcols - field->cols - form->begincol;
-
+
if (cols_to_go > 0)
{
- form->curcol += cols_to_go;
+ form->curcol += cols_to_go;
form->begincol += cols_to_go;
res = E_OK;
}
}
else
{
- if ( cols_to_go > form->begincol )
+ if (cols_to_go > form->begincol)
cols_to_go = form->begincol;
if (cols_to_go > 0)
{
- form->curcol -= cols_to_go;
+ form->curcol -= cols_to_go;
form->begincol -= cols_to_go;
res = E_OK;
}
}
- return(res);
+ return (res);
}
/*----------------------------------------------------------------------------
End of Horizontal scrolling helper routines
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Horizontal scrolling routines
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Horizontal_Scrolling(
| int (* const fct) (FORM *),
| FORM * form)
-|
-| Description : Performs the generic horizontal scrolling routines.
+|
+| Description : Performs the generic horizontal scrolling routines.
| This has to check for a single-line field.
|
| Return Values : Propagated error code from low-level driver calls
+--------------------------------------------------------------------------*/
-static int Horizontal_Scrolling(int (* const fct) (FORM *), FORM * form)
+static int
+Horizontal_Scrolling(int (*const fct) (FORM *), FORM *form)
{
if (Single_Line_Field(form->current))
return fct(form);
else
- return(E_REQUEST_DENIED);
+ return (E_REQUEST_DENIED);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int HSC_Scroll_Char_Forward(FORM * form)
-|
+|
| Description : Scroll single-line field forward a character
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data ahead
+--------------------------------------------------------------------------*/
-static int HSC_Scroll_Char_Forward(FORM *form)
+static int
+HSC_Scroll_Char_Forward(FORM *form)
{
- return HSC_Generic(form,1);
+ T((T_CALLED("HSC_Scroll_Char_Forward(%p)"), form));
+ returnCode(HSC_Generic(form, 1));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int HSC_Scroll_Char_Backward(FORM * form)
-|
+|
| Description : Scroll single-line field backward a character
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data behind
+--------------------------------------------------------------------------*/
-static int HSC_Scroll_Char_Backward(FORM *form)
+static int
+HSC_Scroll_Char_Backward(FORM *form)
{
- return HSC_Generic(form,-1);
+ T((T_CALLED("HSC_Scroll_Char_Backward(%p)"), form));
+ returnCode(HSC_Generic(form, -1));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int HSC_Horizontal_Line_Forward(FORM* form)
-|
+|
| Description : Scroll single-line field forward a line
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data ahead
+--------------------------------------------------------------------------*/
-static int HSC_Horizontal_Line_Forward(FORM * form)
+static int
+HSC_Horizontal_Line_Forward(FORM *form)
{
- return HSC_Generic(form,form->current->cols);
+ T((T_CALLED("HSC_Horizontal_Line_Forward(%p)"), form));
+ returnCode(HSC_Generic(form, form->current->cols));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int HSC_Horizontal_Half_Line_Forward(FORM* form)
-|
+|
| Description : Scroll single-line field forward half a line
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data ahead
+--------------------------------------------------------------------------*/
-static int HSC_Horizontal_Half_Line_Forward(FORM * form)
+static int
+HSC_Horizontal_Half_Line_Forward(FORM *form)
{
- return HSC_Generic(form,(form->current->cols + 1)/2);
+ T((T_CALLED("HSC_Horizontal_Half_Line_Forward(%p)"), form));
+ returnCode(HSC_Generic(form, (form->current->cols + 1) / 2));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int HSC_Horizontal_Line_Backward(FORM* form)
-|
+|
| Description : Scroll single-line field backward a line
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data behind
+--------------------------------------------------------------------------*/
-static int HSC_Horizontal_Line_Backward(FORM * form)
+static int
+HSC_Horizontal_Line_Backward(FORM *form)
{
- return HSC_Generic(form,-(form->current->cols));
+ T((T_CALLED("HSC_Horizontal_Line_Backward(%p)"), form));
+ returnCode(HSC_Generic(form, -(form->current->cols)));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int HSC_Horizontal_Half_Line_Backward(FORM* form)
-|
+|
| Description : Scroll single-line field backward half a line
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - no data behind
+--------------------------------------------------------------------------*/
-static int HSC_Horizontal_Half_Line_Backward(FORM * form)
+static int
+HSC_Horizontal_Half_Line_Backward(FORM *form)
{
- return HSC_Generic(form,-((form->current->cols + 1)/2));
+ T((T_CALLED("HSC_Horizontal_Half_Line_Backward(%p)"), form));
+ returnCode(HSC_Generic(form, -((form->current->cols + 1) / 2)));
}
/*----------------------------------------------------------------------------
End of Horizontal scrolling routines
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Helper routines for Field Editing
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static bool Is_There_Room_For_A_Line(FORM * form)
-|
+|
| Description : Check whether or not there is enough room in the
| buffer to enter a whole line.
|
| Return Values : TRUE - there is enough space
| FALSE - there is not enough space
+--------------------------------------------------------------------------*/
-INLINE static bool Is_There_Room_For_A_Line(FORM * form)
+NCURSES_INLINE static bool
+Is_There_Room_For_A_Line(FORM *form)
{
FIELD *field = form->current;
- char *begin_of_last_line, *s;
-
+ FIELD_CELL *begin_of_last_line, *s;
+
Synchronize_Buffer(form);
- begin_of_last_line = Address_Of_Row_In_Buffer(field,(field->drows-1));
- s = After_End_Of_Data(begin_of_last_line,field->dcols);
- return ((s==begin_of_last_line) ? TRUE : FALSE);
+ begin_of_last_line = Address_Of_Row_In_Buffer(field, (field->drows - 1));
+ s = After_End_Of_Data(begin_of_last_line, field->dcols);
+ return ((s == begin_of_last_line) ? TRUE : FALSE);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static bool Is_There_Room_For_A_Char_In_Line(FORM * form)
-|
+|
| Description : Checks whether or not there is room for a new character
| in the current line.
|
| Return Values : TRUE - there is room
| FALSE - there is not enough room (line full)
+--------------------------------------------------------------------------*/
-INLINE static bool Is_There_Room_For_A_Char_In_Line(FORM * form)
+NCURSES_INLINE static bool
+Is_There_Room_For_A_Char_In_Line(FORM *form)
{
int last_char_in_line;
- wmove(form->w,form->currow,form->current->dcols-1);
- last_char_in_line = (int)(winch(form->w) & A_CHARTEXT);
- wmove(form->w,form->currow,form->curcol);
+ wmove(form->w, form->currow, form->current->dcols - 1);
+ last_char_in_line = (int)(winch(form->w) & A_CHARTEXT);
+ wmove(form->w, form->currow, form->curcol);
return (((last_char_in_line == form->current->pad) ||
is_blank(last_char_in_line)) ? TRUE : FALSE);
}
@@ -1970,129 +2246,137 @@ INLINE static bool Is_There_Room_For_A_Char_In_Line(FORM * form)
!Is_There_Room_For_A_Char_In_Line(f)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Insert_String(
| FORM * form,
| int row,
| char *txt,
| int len )
-|
+|
| Description : Insert the 'len' characters beginning at pointer 'txt'
| into the 'row' of the 'form'. The insertion occurs
| on the beginning of the row, all other characters are
-| moved to the right. After the text a pad character will
+| moved to the right. After the text a pad character will
| be inserted to separate the text from the rest. If
| necessary the insertion moves characters on the next
| line to make place for the requested insertion string.
|
-| Return Values : E_OK - success
+| Return Values : E_OK - success
| E_REQUEST_DENIED -
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
-static int Insert_String(FORM *form, int row, char *txt, int len)
-{
- FIELD *field = form->current;
- char *bp = Address_Of_Row_In_Buffer(field,row);
- int datalen = (int)(After_End_Of_Data(bp,field->dcols) - bp);
- int freelen = field->dcols - datalen;
- int requiredlen = len+1;
- char *split;
+static int
+Insert_String(FORM *form, int row, FIELD_CELL *txt, int len)
+{
+ FIELD *field = form->current;
+ FIELD_CELL *bp = Address_Of_Row_In_Buffer(field, row);
+ int datalen = (int)(After_End_Of_Data(bp, field->dcols) - bp);
+ int freelen = field->dcols - datalen;
+ int requiredlen = len + 1;
+ FIELD_CELL *split;
int result = E_REQUEST_DENIED;
- const char *Space = " ";
if (freelen >= requiredlen)
{
- wmove(form->w,row,0);
- winsnstr(form->w,txt,len);
- wmove(form->w,row,len);
- winsnstr(form->w,Space,1);
+ wmove(form->w, row, 0);
+ myINSNSTR(form->w, txt, len);
+ wmove(form->w, row, len);
+ myINSNSTR(form->w, &myBLANK, 1);
return E_OK;
}
else
- { /* we have to move characters on the next line. If we are on the
- last line this may work, if the field is growable */
+ {
+ /* we have to move characters on the next line. If we are on the
+ last line this may work, if the field is growable */
if ((row == (field->drows - 1)) && Growable(field))
{
- if (!Field_Grown(field,1))
- return(E_SYSTEM_ERROR);
+ if (!Field_Grown(field, 1))
+ return (E_SYSTEM_ERROR);
/* !!!Side-Effect : might be changed due to growth!!! */
- bp = Address_Of_Row_In_Buffer(field,row);
+ bp = Address_Of_Row_In_Buffer(field, row);
}
- if (row < (field->drows - 1))
- {
- split = After_Last_Whitespace_Character(bp,
- (int)(Get_Start_Of_Data(bp + field->dcols - requiredlen ,
- requiredlen) - bp));
+ if (row < (field->drows - 1))
+ {
+ split =
+ After_Last_Whitespace_Character(bp,
+ (int)(Get_Start_Of_Data(bp
+ + field->dcols
+ - requiredlen,
+ requiredlen)
+ - bp));
/* split points now to the first character of the portion of the
line that must be moved to the next line */
- datalen = (int)(split-bp); /* + freelen has to stay on this line */
- freelen = field->dcols - (datalen + freelen); /* for the next line */
+ datalen = (int)(split - bp); /* + freelen has to stay on this line */
+ freelen = field->dcols - (datalen + freelen); /* for the next line */
- if ((result=Insert_String(form,row+1,split,freelen))==E_OK)
+ if ((result = Insert_String(form, row + 1, split, freelen)) == E_OK)
{
- wmove(form->w,row,datalen);
+ wmove(form->w, row, datalen);
wclrtoeol(form->w);
- wmove(form->w,row,0);
- winsnstr(form->w,txt,len);
- wmove(form->w,row,len);
- winsnstr(form->w,Space,1);
+ wmove(form->w, row, 0);
+ myINSNSTR(form->w, txt, len);
+ wmove(form->w, row, len);
+ myINSNSTR(form->w, &myBLANK, 1);
return E_OK;
}
}
- return(result);
+ return (result);
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Wrapping_Not_Necessary_Or_Wrapping_Ok(
| FORM * form)
-|
+|
| Description : If a character has been entered into a field, it may
| be that wrapping has to occur. This routine checks
| whether or not wrapping is required and if so, performs
| the wrapping.
|
| Return Values : E_OK - no wrapping required or wrapping
-| was successfull
+| was successful
| E_REQUEST_DENIED -
| E_SYSTEM_ERROR - some system error
+--------------------------------------------------------------------------*/
-static int Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM * form)
+static int
+Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM *form)
{
- FIELD *field = form->current;
+ FIELD *field = form->current;
int result = E_REQUEST_DENIED;
bool Last_Row = ((field->drows - 1) == form->currow);
- if ( (field->opts & 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*/
+ if ((field->opts & 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 */
{
- char *bp;
- char *split;
+ FIELD_CELL *bp;
+ FIELD_CELL *split;
int chars_to_be_wrapped;
int chars_to_remain_on_line;
+
if (Last_Row)
- { /* the above logic already ensures, that in this case the field
+ {
+ /* the above logic already ensures, that in this case the field
is growable */
- if (!Field_Grown(field,1))
+ if (!Field_Grown(field, 1))
return E_SYSTEM_ERROR;
}
bp = Address_Of_Current_Row_In_Buffer(form);
- Window_To_Buffer(form->w,field);
- split = After_Last_Whitespace_Character(bp,field->dcols);
+ Window_To_Buffer(form->w, field);
+ split = After_Last_Whitespace_Character(bp, field->dcols);
/* split points to the first character of the sequence to be brought
on the next line */
chars_to_remain_on_line = (int)(split - bp);
- chars_to_be_wrapped = field->dcols - chars_to_remain_on_line;
+ chars_to_be_wrapped = field->dcols - chars_to_remain_on_line;
if (chars_to_remain_on_line > 0)
{
- if ((result=Insert_String(form,form->currow+1,split,
- chars_to_be_wrapped)) == E_OK)
+ if ((result = Insert_String(form, form->currow + 1, split,
+ chars_to_be_wrapped)) == E_OK)
{
- wmove(form->w,form->currow,chars_to_remain_on_line);
+ wmove(form->w, form->currow, chars_to_remain_on_line);
wclrtoeol(form->w);
if (form->curcol >= chars_to_remain_on_line)
{
@@ -2104,61 +2388,61 @@ static int Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM * form)
}
else
return E_OK;
- if (result!=E_OK)
+ if (result != E_OK)
{
- wmove(form->w,form->currow,form->curcol);
- wdelch(form->w);
- Window_To_Buffer(form->w,field);
+ DeleteChar(form);
+ Window_To_Buffer(form->w, field);
result = E_REQUEST_DENIED;
}
}
else
- result = E_OK; /* wrapping was not necessary */
- return(result);
+ result = E_OK; /* wrapping was not necessary */
+ return (result);
}
-
+
/*----------------------------------------------------------------------------
Field Editing routines
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Field_Editing(
| int (* const fct) (FORM *),
| FORM * form)
-|
+|
| Description : Generic routine for field editing requests. The driver
| routines are only called for editable fields, the
-| _WINDOW_MODIFIED flag is set if editing occured.
+| _WINDOW_MODIFIED flag is set if editing occurred.
| This is somewhat special due to the overload semantics
| of the NEW_LINE and DEL_PREV requests.
|
| Return Values : Error code from low level drivers.
+--------------------------------------------------------------------------*/
-static int Field_Editing(int (* const fct) (FORM *), FORM * form)
+static int
+Field_Editing(int (*const fct) (FORM *), FORM *form)
{
int res = E_REQUEST_DENIED;
- /* We have to deal here with the specific case of the overloaded
- behaviour of New_Line and Delete_Previous requests.
+ /* We have to deal here with the specific case of the overloaded
+ behavior of New_Line and Delete_Previous requests.
They may end up in navigational requests if we are on the first
character in a field. But navigation is also allowed on non-
editable fields.
- */
- if ((fct==FE_Delete_Previous) &&
- (form->opts & O_BS_OVERLOAD) &&
- First_Position_In_Current_Field(form) )
+ */
+ if ((fct == FE_Delete_Previous) &&
+ (form->opts & O_BS_OVERLOAD) &&
+ First_Position_In_Current_Field(form))
{
- res = Inter_Field_Navigation(FN_Previous_Field,form);
+ res = Inter_Field_Navigation(FN_Previous_Field, form);
}
else
{
- if (fct==FE_New_Line)
+ if (fct == FE_New_Line)
{
- if ((form->opts & O_NL_OVERLOAD) &&
+ if ((form->opts & O_NL_OVERLOAD) &&
First_Position_In_Current_Field(form))
{
- res = Inter_Field_Navigation(FN_Next_Field,form);
+ res = Inter_Field_Navigation(FN_Next_Field, form);
}
else
/* FE_New_Line deals itself with the _WINDOW_MODIFIED flag */
@@ -2170,7 +2454,7 @@ static int Field_Editing(int (* const fct) (FORM *), FORM * form)
if (form->current->opts & O_EDIT)
{
res = fct(form);
- if (res==E_OK)
+ if (res == E_OK)
form->status |= _WINDOW_MODIFIED;
}
}
@@ -2179,11 +2463,11 @@ static int Field_Editing(int (* const fct) (FORM *), FORM * form)
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FE_New_Line(FORM * form)
-|
+|
| Description : Perform a new line request. This is rather complex
-| compared to other routines in this code due to the
+| compared to other routines in this code due to the
| rather difficult to understand description in the
| manuals.
|
@@ -2191,130 +2475,141 @@ static int Field_Editing(int (* const fct) (FORM *), FORM * form)
| E_REQUEST_DENIED - new line not allowed
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
-static int FE_New_Line(FORM * form)
+static int
+FE_New_Line(FORM *form)
{
- FIELD *field = form->current;
- char *bp, *t;
- bool Last_Row = ((field->drows - 1)==form->currow);
-
- if (form->status & _OVLMODE)
+ FIELD *field = form->current;
+ FIELD_CELL *bp, *t;
+ bool Last_Row = ((field->drows - 1) == form->currow);
+
+ T((T_CALLED("FE_New_Line(%p)"), form));
+ if (form->status & _OVLMODE)
{
- if (Last_Row &&
+ if (Last_Row &&
(!(Growable(field) && !Single_Line_Field(field))))
{
if (!(form->opts & O_NL_OVERLOAD))
- return(E_REQUEST_DENIED);
+ returnCode(E_REQUEST_DENIED);
+ wmove(form->w, form->currow, form->curcol);
wclrtoeol(form->w);
/* we have to set this here, although it is also
handled in the generic routine. The reason is,
that FN_Next_Field may fail, but the form is
definitively changed */
form->status |= _WINDOW_MODIFIED;
- return Inter_Field_Navigation(FN_Next_Field,form);
+ returnCode(Inter_Field_Navigation(FN_Next_Field, form));
}
- else
+ else
{
- if (Last_Row && !Field_Grown(field,1))
- { /* N.B.: due to the logic in the 'if', LastRow==TRUE
- means here that the field is growable and not
- a single-line field */
- return(E_SYSTEM_ERROR);
+ if (Last_Row && !Field_Grown(field, 1))
+ {
+ /* N.B.: due to the logic in the 'if', LastRow==TRUE
+ means here that the field is growable and not
+ a single-line field */
+ returnCode(E_SYSTEM_ERROR);
}
+ wmove(form->w, form->currow, form->curcol);
wclrtoeol(form->w);
form->currow++;
form->curcol = 0;
form->status |= _WINDOW_MODIFIED;
- return(E_OK);
+ returnCode(E_OK);
}
}
- else
- { /* Insert Mode */
+ else
+ {
+ /* Insert Mode */
if (Last_Row &&
!(Growable(field) && !Single_Line_Field(field)))
{
if (!(form->opts & O_NL_OVERLOAD))
- return(E_REQUEST_DENIED);
- return Inter_Field_Navigation(FN_Next_Field,form);
+ returnCode(E_REQUEST_DENIED);
+ returnCode(Inter_Field_Navigation(FN_Next_Field, form));
}
- else
+ else
{
bool May_Do_It = !Last_Row && Is_There_Room_For_A_Line(form);
-
+
if (!(May_Do_It || Growable(field)))
- return(E_REQUEST_DENIED);
- if (!May_Do_It && !Field_Grown(field,1))
- return(E_SYSTEM_ERROR);
-
- bp= Address_Of_Current_Position_In_Buffer(form);
- t = After_End_Of_Data(bp,field->dcols - form->curcol);
+ returnCode(E_REQUEST_DENIED);
+ if (!May_Do_It && !Field_Grown(field, 1))
+ returnCode(E_SYSTEM_ERROR);
+
+ bp = Address_Of_Current_Position_In_Buffer(form);
+ t = After_End_Of_Data(bp, field->dcols - form->curcol);
+ wmove(form->w, form->currow, form->curcol);
wclrtoeol(form->w);
form->currow++;
- form->curcol=0;
- wmove(form->w,form->currow,form->curcol);
+ form->curcol = 0;
+ wmove(form->w, form->currow, form->curcol);
winsertln(form->w);
- waddnstr(form->w,bp,(int)(t-bp));
+ myADDNSTR(form->w, bp, (int)(t - bp));
form->status |= _WINDOW_MODIFIED;
- return E_OK;
+ returnCode(E_OK);
}
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FE_Insert_Character(FORM * form)
-|
+|
| Description : Insert blank character at the cursor position
|
| Return Values : E_OK
| E_REQUEST_DENIED
+--------------------------------------------------------------------------*/
-static int FE_Insert_Character(FORM * form)
+static int
+FE_Insert_Character(FORM *form)
{
FIELD *field = form->current;
int result = E_REQUEST_DENIED;
- if (Check_Char(field->type,(int)C_BLANK,(TypeArgument *)(field->arg)))
+ T((T_CALLED("FE_Insert_Character(%p)"), form));
+ if (Check_Char(field->type, (int)C_BLANK, (TypeArgument *)(field->arg)))
{
bool There_Is_Room = Is_There_Room_For_A_Char_In_Line(form);
if (There_Is_Room ||
((Single_Line_Field(field) && Growable(field))))
{
- if (!There_Is_Room && !Field_Grown(field,1))
- result = E_SYSTEM_ERROR;
+ if (!There_Is_Room && !Field_Grown(field, 1))
+ result = E_SYSTEM_ERROR;
else
{
- winsch(form->w,(chtype)C_BLANK);
+ winsch(form->w, (chtype)C_BLANK);
result = Wrapping_Not_Necessary_Or_Wrapping_Ok(form);
}
}
}
- return result;
+ returnCode(result);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FE_Insert_Line(FORM * form)
-|
+|
| Description : Insert a blank line at the cursor position
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - line can not be inserted
+--------------------------------------------------------------------------*/
-static int FE_Insert_Line(FORM * form)
+static int
+FE_Insert_Line(FORM *form)
{
FIELD *field = form->current;
int result = E_REQUEST_DENIED;
- if (Check_Char(field->type,(int)C_BLANK,(TypeArgument *)(field->arg)))
+ T((T_CALLED("FE_Insert_Line(%p)"), form));
+ if (Check_Char(field->type, (int)C_BLANK, (TypeArgument *)(field->arg)))
{
- bool Maybe_Done = (form->currow!=(field->drows-1)) &&
- Is_There_Room_For_A_Line(form);
+ bool Maybe_Done = (form->currow != (field->drows - 1)) &&
+ Is_There_Room_For_A_Line(form);
if (!Single_Line_Field(field) &&
(Maybe_Done || Growable(field)))
{
- if (!Maybe_Done && !Field_Grown(field,1))
+ if (!Maybe_Done && !Field_Grown(field, 1))
result = E_SYSTEM_ERROR;
else
{
@@ -2324,27 +2619,29 @@ static int FE_Insert_Line(FORM * form)
}
}
}
- return result;
+ returnCode(result);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FE_Delete_Character(FORM * form)
-|
+|
| Description : Delete character at the cursor position
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int FE_Delete_Character(FORM * form)
+static int
+FE_Delete_Character(FORM *form)
{
- wdelch(form->w);
- return E_OK;
+ T((T_CALLED("FE_Delete_Character(%p)"), form));
+ DeleteChar(form);
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FE_Delete_Previous(FORM * form)
-|
+|
| Description : Delete character before cursor. Again this is a rather
| difficult piece compared to others due to the overloading
| semantics of backspace.
@@ -2354,301 +2651,353 @@ static int FE_Delete_Character(FORM * form)
| Return Values : E_OK - success
| E_REQUEST_DENIED - Character can't be deleted
+--------------------------------------------------------------------------*/
-static int FE_Delete_Previous(FORM * form)
+static int
+FE_Delete_Previous(FORM *form)
{
- FIELD *field = form->current;
-
+ FIELD *field = form->current;
+
+ T((T_CALLED("FE_Delete_Previous(%p)"), form));
if (First_Position_In_Current_Field(form))
- return E_REQUEST_DENIED;
+ returnCode(E_REQUEST_DENIED);
- if ( (--(form->curcol))<0 )
+ if ((--(form->curcol)) < 0)
{
- char *this_line, *prev_line, *prev_end, *this_end;
-
+ FIELD_CELL *this_line, *prev_line, *prev_end, *this_end;
+ int this_row = form->currow;
+
form->curcol++;
- if (form->status & _OVLMODE)
- return E_REQUEST_DENIED;
-
- prev_line = Address_Of_Row_In_Buffer(field,(form->currow-1));
- this_line = Address_Of_Row_In_Buffer(field,(form->currow));
+ if (form->status & _OVLMODE)
+ returnCode(E_REQUEST_DENIED);
+
+ prev_line = Address_Of_Row_In_Buffer(field, (form->currow - 1));
+ this_line = Address_Of_Row_In_Buffer(field, (form->currow));
Synchronize_Buffer(form);
- prev_end = After_End_Of_Data(prev_line,field->dcols);
- this_end = After_End_Of_Data(this_line,field->dcols);
- if ((int)(this_end-this_line) >
- (field->cols-(int)(prev_end-prev_line)))
- return E_REQUEST_DENIED;
+ prev_end = After_End_Of_Data(prev_line, field->dcols);
+ this_end = After_End_Of_Data(this_line, field->dcols);
+ if ((int)(this_end - this_line) >
+ (field->cols - (int)(prev_end - prev_line)))
+ returnCode(E_REQUEST_DENIED);
+ wmove(form->w, form->currow, form->curcol);
wdeleteln(form->w);
- Adjust_Cursor_Position(form,prev_end);
- wmove(form->w,form->currow,form->curcol);
- waddnstr(form->w,this_line,(int)(this_end-this_line));
- }
- else
+ Adjust_Cursor_Position(form, prev_end);
+ /*
+ * If we did not really move to the previous line, help the user a
+ * little. It is however a little inconsistent. Normally, when
+ * backspacing around the point where text wraps to a new line in a
+ * multi-line form, we absorb one keystroke for the wrapping point. That
+ * is consistent with SVr4 forms. However, SVr4 does not allow typing
+ * into the last column of the field, and requires the user to enter a
+ * newline to move to the next line. Therefore it can consistently eat
+ * that keystroke. Since ncurses allows the last column, it wraps
+ * automatically (given the proper options). But we cannot eat the
+ * keystroke to back over the wrapping point, since that would put the
+ * cursor past the end of the form field. In this case, just delete the
+ * character at the end of the field.
+ */
+ if (form->currow == this_row && this_row > 0)
+ {
+ form->currow -= 1;
+ form->curcol = field->dcols - 1;
+ DeleteChar(form);
+ }
+ else
+ {
+ wmove(form->w, form->currow, form->curcol);
+ myADDNSTR(form->w, this_line, (int)(this_end - this_line));
+ }
+ }
+ else
{
- wmove(form->w,form->currow,form->curcol);
- wdelch(form->w);
+ DeleteChar(form);
}
- return E_OK;
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FE_Delete_Line(FORM * form)
-|
+|
| Description : Delete line at cursor position.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int FE_Delete_Line(FORM * form)
+static int
+FE_Delete_Line(FORM *form)
{
+ T((T_CALLED("FE_Delete_Line(%p)"), form));
form->curcol = 0;
wdeleteln(form->w);
- return E_OK;
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FE_Delete_Word(FORM * form)
-|
+|
| Description : Delete word at cursor position
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - failure
+--------------------------------------------------------------------------*/
-static int FE_Delete_Word(FORM * form)
+static int
+FE_Delete_Word(FORM *form)
{
- FIELD *field = form->current;
- char *bp = Address_Of_Current_Row_In_Buffer(form);
- char *ep = bp + field->dcols;
- char *cp = bp + form->curcol;
- char *s;
-
+ FIELD *field = form->current;
+ FIELD_CELL *bp = Address_Of_Current_Row_In_Buffer(form);
+ FIELD_CELL *ep = bp + field->dcols;
+ FIELD_CELL *cp = bp + form->curcol;
+ FIELD_CELL *s;
+
+ T((T_CALLED("FE_Delete_Word(%p)"), form));
Synchronize_Buffer(form);
- if (is_blank(*cp))
- return E_REQUEST_DENIED; /* not in word */
+ if (ISBLANK(*cp))
+ returnCode(E_REQUEST_DENIED); /* not in word */
/* move cursor to begin of word and erase to end of screen-line */
Adjust_Cursor_Position(form,
- After_Last_Whitespace_Character(bp,form->curcol));
- wmove(form->w,form->currow,form->curcol);
+ After_Last_Whitespace_Character(bp, form->curcol));
+ wmove(form->w, form->currow, form->curcol);
wclrtoeol(form->w);
/* skip over word in buffer */
- s = Get_First_Whitespace_Character(cp,(int)(ep-cp));
+ s = Get_First_Whitespace_Character(cp, (int)(ep - cp));
/* to begin of next word */
- s = Get_Start_Of_Data(s,(int)(ep - s));
- if ( (s!=cp) && !is_blank(*s))
+ s = Get_Start_Of_Data(s, (int)(ep - s));
+ if ((s != cp) && !ISBLANK(*s))
{
/* copy remaining line to window */
- waddnstr(form->w,s,(int)(s - After_End_Of_Data(s,(int)(ep - s))));
+ myADDNSTR(form->w, s, (int)(s - After_End_Of_Data(s, (int)(ep - s))));
}
- return E_OK;
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FE_Clear_To_End_Of_Line(FORM * form)
-|
+|
| Description : Clear to end of current line.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int FE_Clear_To_End_Of_Line(FORM * form)
+static int
+FE_Clear_To_End_Of_Line(FORM *form)
{
+ T((T_CALLED("FE_Clear_To_End_Of_Line(%p)"), form));
+ wmove(form->w, form->currow, form->curcol);
wclrtoeol(form->w);
- return E_OK;
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static int FE_Clear_To_End_Of_Form(FORM * form)
-|
-| Description : Clear to end of form.
+| Facility : libnform
+| Function : static int FE_Clear_To_End_Of_Field(FORM * form)
+|
+| Description : Clear to end of field.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int FE_Clear_To_End_Of_Form(FORM * form)
+static int
+FE_Clear_To_End_Of_Field(FORM *form)
{
+ T((T_CALLED("FE_Clear_To_End_Of_Field(%p)"), form));
+ wmove(form->w, form->currow, form->curcol);
wclrtobot(form->w);
- return E_OK;
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FE_Clear_Field(FORM * form)
-|
+|
| Description : Clear entire field.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int FE_Clear_Field(FORM * form)
+static int
+FE_Clear_Field(FORM *form)
{
+ T((T_CALLED("FE_Clear_Field(%p)"), form));
form->currow = form->curcol = 0;
werase(form->w);
- return E_OK;
+ returnCode(E_OK);
}
/*----------------------------------------------------------------------------
- END of Field Editing routines
+ END of Field Editing routines
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Edit Mode routines
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int EM_Overlay_Mode(FORM * form)
-|
+|
| Description : Switch to overlay mode.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int EM_Overlay_Mode(FORM * form)
+static int
+EM_Overlay_Mode(FORM *form)
{
+ T((T_CALLED("EM_Overlay_Mode(%p)"), form));
form->status |= _OVLMODE;
- return E_OK;
+ returnCode(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int EM_Insert_Mode(FORM * form)
-|
+|
| Description : Switch to insert mode
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-static int EM_Insert_Mode(FORM * form)
+static int
+EM_Insert_Mode(FORM *form)
{
+ T((T_CALLED("EM_Insert_Mode(%p)"), form));
form->status &= ~_OVLMODE;
- return E_OK;
+ returnCode(E_OK);
}
/*----------------------------------------------------------------------------
- END of Edit Mode routines
+ END of Edit Mode routines
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Helper routines for Choice Requests
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static bool Next_Choice(
| FIELDTYPE * typ,
| FIELD * field,
| TypeArgument *argp)
-|
+|
| Description : Get the next field choice. For linked types this is
| done recursively.
|
| Return Values : TRUE - next choice successfully retrieved
| FALSE - couldn't retrieve next choice
+--------------------------------------------------------------------------*/
-static bool Next_Choice(FIELDTYPE * typ, FIELD *field, TypeArgument *argp)
+static bool
+Next_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
{
- if (!typ || !(typ->status & _HAS_CHOICE))
+ if (!typ || !(typ->status & _HAS_CHOICE))
return FALSE;
if (typ->status & _LINKED_TYPE)
{
assert(argp);
- return(
- Next_Choice(typ->left ,field,argp->left) ||
- Next_Choice(typ->right,field,argp->right) );
- }
+ return (
+ Next_Choice(typ->left, field, argp->left) ||
+ Next_Choice(typ->right, field, argp->right));
+ }
else
{
assert(typ->next);
- return typ->next(field,(void *)argp);
+ return typ->next(field, (void *)argp);
}
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static bool Previous_Choice(
| FIELDTYPE * typ,
| FIELD * field,
| TypeArgument *argp)
-|
+|
| Description : Get the previous field choice. For linked types this
| is done recursively.
|
| Return Values : TRUE - previous choice successfully retrieved
| FALSE - couldn't retrieve previous choice
+--------------------------------------------------------------------------*/
-static bool Previous_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
+static bool
+Previous_Choice(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
{
- if (!typ || !(typ->status & _HAS_CHOICE))
+ if (!typ || !(typ->status & _HAS_CHOICE))
return FALSE;
if (typ->status & _LINKED_TYPE)
{
assert(argp);
- return(
- Previous_Choice(typ->left ,field,argp->left) ||
- Previous_Choice(typ->right,field,argp->right));
- }
- else
+ return (
+ Previous_Choice(typ->left, field, argp->left) ||
+ Previous_Choice(typ->right, field, argp->right));
+ }
+ else
{
assert(typ->prev);
- return typ->prev(field,(void *)argp);
+ return typ->prev(field, (void *)argp);
}
}
/*----------------------------------------------------------------------------
End of Helper routines for Choice Requests
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Routines for Choice Requests
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int CR_Next_Choice(FORM * form)
-|
+|
| Description : Get the next field choice.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - next choice couldn't be retrieved
+--------------------------------------------------------------------------*/
-static int CR_Next_Choice(FORM * form)
+static int
+CR_Next_Choice(FORM *form)
{
FIELD *field = form->current;
+
+ T((T_CALLED("CR_Next_Choice(%p)"), form));
Synchronize_Buffer(form);
- return ((Next_Choice(field->type,field,(TypeArgument *)(field->arg))) ?
- E_OK : E_REQUEST_DENIED);
+ returnCode((Next_Choice(field->type, field, (TypeArgument *)(field->arg)))
+ ? E_OK
+ : E_REQUEST_DENIED);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int CR_Previous_Choice(FORM * form)
-|
+|
| Description : Get the previous field choice.
|
| Return Values : E_OK - success
| E_REQUEST_DENIED - prev. choice couldn't be retrieved
+--------------------------------------------------------------------------*/
-static int CR_Previous_Choice(FORM * form)
+static int
+CR_Previous_Choice(FORM *form)
{
FIELD *field = form->current;
+
+ T((T_CALLED("CR_Previous_Choice(%p)"), form));
Synchronize_Buffer(form);
- return ((Previous_Choice(field->type,field,(TypeArgument *)(field->arg))) ?
- E_OK : E_REQUEST_DENIED);
+ returnCode((Previous_Choice(field->type, field, (TypeArgument *)(field->arg)))
+ ? E_OK
+ : E_REQUEST_DENIED);
}
/*----------------------------------------------------------------------------
End of Routines for Choice Requests
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Helper routines for Field Validations.
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static bool Check_Field(
| FIELDTYPE * typ,
| FIELD * field,
| TypeArgument * argp)
-|
+|
| Description : Check the field according to its fieldtype and its
| actual arguments. For linked fieldtypes this is done
| recursively.
@@ -2656,59 +3005,63 @@ static int CR_Previous_Choice(FORM * form)
| Return Values : TRUE - field is valid
| FALSE - field is invalid.
+--------------------------------------------------------------------------*/
-static bool Check_Field(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
+static bool
+Check_Field(FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
{
if (typ)
{
if (field->opts & O_NULLOK)
{
- char *bp = field->buf;
+ FIELD_CELL *bp = field->buf;
+
assert(bp);
- while(is_blank(*bp))
- { bp++; }
- if (*bp == '\0')
+ while (ISBLANK(*bp))
+ {
+ bp++;
+ }
+ if (CharOf(*bp) == 0)
return TRUE;
}
if (typ->status & _LINKED_TYPE)
{
assert(argp);
- return(
- Check_Field(typ->left ,field,argp->left ) ||
- Check_Field(typ->right,field,argp->right) );
+ return (
+ Check_Field(typ->left, field, argp->left) ||
+ Check_Field(typ->right, field, argp->right));
}
- else
+ else
{
if (typ->fcheck)
- return typ->fcheck(field,(void *)argp);
+ return typ->fcheck(field, (void *)argp);
}
}
return TRUE;
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : bool _nc_Internal_Validation(FORM * form )
-|
-| Description : Validate the current field of the form.
+|
+| Description : Validate the current field of the form.
|
| Return Values : TRUE - field is valid
| FALSE - field is invalid
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(bool)
-_nc_Internal_Validation (FORM *form)
+_nc_Internal_Validation(FORM *form)
{
FIELD *field;
- field = form->current;
-
+ field = form->current;
+
Synchronize_Buffer(form);
if ((form->status & _FCHECK_REQUIRED) ||
(!(field->opts & O_PASSOK)))
{
- if (!Check_Field(field->type,field,(TypeArgument *)(field->arg)))
+ if (!Check_Field(field->type, field, (TypeArgument *)(field->arg)))
return FALSE;
- form->status &= ~_FCHECK_REQUIRED;
+ form->status &= ~_FCHECK_REQUIRED;
field->status |= _CHANGED;
Synchronize_Linked_Fields(field);
}
@@ -2717,67 +3070,71 @@ _nc_Internal_Validation (FORM *form)
/*----------------------------------------------------------------------------
End of Helper routines for Field Validations.
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Routines for Field Validation.
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FV_Validation(FORM * form)
-|
+|
| Description : Validate the current field of the form.
|
| Return Values : E_OK - field valid
| E_INVALID_FIELD - field not valid
+--------------------------------------------------------------------------*/
-static int FV_Validation(FORM * form)
+static int
+FV_Validation(FORM *form)
{
+ T((T_CALLED("FV_Validation(%p)"), form));
if (_nc_Internal_Validation(form))
- return E_OK;
+ returnCode(E_OK);
else
- return E_INVALID_FIELD;
+ returnCode(E_INVALID_FIELD);
}
/*----------------------------------------------------------------------------
End of routines for Field Validation.
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Helper routines for Inter-Field Navigation
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static FIELD *Next_Field_On_Page(FIELD * field)
-|
-| Description : Get the next field after the given field on the current
+|
+| Description : Get the next field after the given field on the current
| page. The order of fields is the one defined by the
| fields array. Only visible and active fields are
| counted.
|
| Return Values : Pointer to the next field.
+--------------------------------------------------------------------------*/
-INLINE static FIELD *Next_Field_On_Page(FIELD * field)
+NCURSES_INLINE static FIELD *
+Next_Field_On_Page(FIELD *field)
{
- FORM *form = field->form;
+ FORM *form = field->form;
FIELD **field_on_page = &form->field[field->index];
FIELD **first_on_page = &form->field[form->page[form->curpage].pmin];
- FIELD **last_on_page = &form->field[form->page[form->curpage].pmax];
+ FIELD **last_on_page = &form->field[form->page[form->curpage].pmax];
do
{
- field_on_page =
- (field_on_page==last_on_page) ? first_on_page : field_on_page + 1;
+ field_on_page =
+ (field_on_page == last_on_page) ? first_on_page : field_on_page + 1;
if (Field_Is_Selectable(*field_on_page))
break;
- } while(field!=(*field_on_page));
- return(*field_on_page);
+ }
+ while (field != (*field_on_page));
+ return (*field_on_page);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : FIELD* _nc_First_Active_Field(FORM * form)
-|
+|
| Description : Get the first active field on the current page,
| if there are such. If there are none, get the first
| visible field on the page. If there are also none,
@@ -2785,17 +3142,18 @@ INLINE static FIELD *Next_Field_On_Page(FIELD * field)
|
| Return Values : Pointer to calculated field.
+--------------------------------------------------------------------------*/
-NCURSES_EXPORT(FIELD*)
-_nc_First_Active_Field (FORM * form)
+NCURSES_EXPORT(FIELD *)
+_nc_First_Active_Field(FORM *form)
{
FIELD **last_on_page = &form->field[form->page[form->curpage].pmax];
FIELD *proposed = Next_Field_On_Page(*last_on_page);
if (proposed == *last_on_page)
- { /* there might be the special situation, where there is no
- active and visible field on the current page. We then select
- the first visible field on this readonly page
- */
+ {
+ /* there might be the special situation, where there is no
+ active and visible field on the current page. We then select
+ the first visible field on this readonly page
+ */
if (Field_Is_Not_Selectable(proposed))
{
FIELD **field = &form->field[proposed->index];
@@ -2803,66 +3161,71 @@ _nc_First_Active_Field (FORM * form)
do
{
- field = (field==last_on_page) ? first : field + 1;
+ field = (field == last_on_page) ? first : field + 1;
if (((*field)->opts & O_VISIBLE))
break;
- } while(proposed!=(*field));
-
+ }
+ while (proposed != (*field));
+
proposed = *field;
- if ((proposed == *last_on_page) && !(proposed->opts&O_VISIBLE))
- { /* This means, there is also no visible field on the page.
- So we propose the first one and hope the very best...
- Some very clever user has designed a readonly and invisible
- page on this form.
+ if ((proposed == *last_on_page) && !(proposed->opts & O_VISIBLE))
+ {
+ /* This means, there is also no visible field on the page.
+ So we propose the first one and hope the very best...
+ Some very clever user has designed a readonly and invisible
+ page on this form.
*/
proposed = *first;
}
}
}
- return(proposed);
+ return (proposed);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static FIELD *Previous_Field_On_Page(FIELD * field)
-|
-| Description : Get the previous field before the given field on the
-| current page. The order of fields is the one defined by
+|
+| Description : Get the previous field before the given field on the
+| current page. The order of fields is the one defined by
| the fields array. Only visible and active fields are
| counted.
|
| Return Values : Pointer to the previous field.
+--------------------------------------------------------------------------*/
-INLINE static FIELD *Previous_Field_On_Page(FIELD * field)
+NCURSES_INLINE static FIELD *
+Previous_Field_On_Page(FIELD *field)
{
- FORM *form = field->form;
+ FORM *form = field->form;
FIELD **field_on_page = &form->field[field->index];
FIELD **first_on_page = &form->field[form->page[form->curpage].pmin];
- FIELD **last_on_page = &form->field[form->page[form->curpage].pmax];
-
+ FIELD **last_on_page = &form->field[form->page[form->curpage].pmax];
+
do
{
- field_on_page =
- (field_on_page==first_on_page) ? last_on_page : field_on_page - 1;
+ field_on_page =
+ (field_on_page == first_on_page) ? last_on_page : field_on_page - 1;
if (Field_Is_Selectable(*field_on_page))
break;
- } while(field!=(*field_on_page));
-
+ }
+ while (field != (*field_on_page));
+
return (*field_on_page);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static FIELD *Sorted_Next_Field(FIELD * field)
-|
-| Description : Get the next field after the given field on the current
+|
+| Description : Get the next field after the given field on the current
| page. The order of fields is the one defined by the
| (row,column) geometry, rows are major.
|
| Return Values : Pointer to the next field.
+--------------------------------------------------------------------------*/
-INLINE static FIELD *Sorted_Next_Field(FIELD * field)
+NCURSES_INLINE static FIELD *
+Sorted_Next_Field(FIELD *field)
{
FIELD *field_on_page = field;
@@ -2871,22 +3234,24 @@ INLINE static FIELD *Sorted_Next_Field(FIELD * field)
field_on_page = field_on_page->snext;
if (Field_Is_Selectable(field_on_page))
break;
- } while(field_on_page!=field);
-
+ }
+ while (field_on_page != field);
+
return (field_on_page);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static FIELD *Sorted_Previous_Field(FIELD * field)
-|
-| Description : Get the previous field before the given field on the
-| current page. The order of fields is the one defined
+|
+| Description : Get the previous field before the given field on the
+| current page. The order of fields is the one defined
| by the (row,column) geometry, rows are major.
|
| Return Values : Pointer to the previous field.
+--------------------------------------------------------------------------*/
-INLINE static FIELD *Sorted_Previous_Field(FIELD * field)
+NCURSES_INLINE static FIELD *
+Sorted_Previous_Field(FIELD *field)
{
FIELD *field_on_page = field;
@@ -2895,73 +3260,79 @@ INLINE static FIELD *Sorted_Previous_Field(FIELD * field)
field_on_page = field_on_page->sprev;
if (Field_Is_Selectable(field_on_page))
break;
- } while(field_on_page!=field);
-
+ }
+ while (field_on_page != field);
+
return (field_on_page);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static FIELD *Left_Neighbour_Field(FIELD * field)
-|
-| Description : Get the left neighbour of the field on the same line
+| Facility : libnform
+| Function : static FIELD *Left_Neighbor_Field(FIELD * field)
+|
+| Description : Get the left neighbor of the field on the same line
| and the same page. Cycles through the line.
|
-| Return Values : Pointer to left neighbour field.
+| Return Values : Pointer to left neighbor field.
+--------------------------------------------------------------------------*/
-INLINE static FIELD *Left_Neighbour_Field(FIELD * field)
+NCURSES_INLINE static FIELD *
+Left_Neighbor_Field(FIELD *field)
{
FIELD *field_on_page = field;
- /* For a field that has really a left neighbour, the while clause
+ /* For a field that has really a left neighbor, the while clause
immediately fails and the loop is left, positioned at the right
- neighbour. Otherwise we cycle backwards through the sorted fieldlist
+ neighbor. Otherwise we cycle backwards through the sorted field list
until we enter the same line (from the right end).
- */
+ */
do
{
field_on_page = Sorted_Previous_Field(field_on_page);
- } while(field_on_page->frow != field->frow);
-
+ }
+ while (field_on_page->frow != field->frow);
+
return (field_on_page);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static FIELD *Right_Neighbour_Field(FIELD * field)
-|
-| Description : Get the right neighbour of the field on the same line
+| Facility : libnform
+| Function : static FIELD *Right_Neighbor_Field(FIELD * field)
+|
+| Description : Get the right neighbor of the field on the same line
| and the same page.
|
-| Return Values : Pointer to right neighbour field.
+| Return Values : Pointer to right neighbor field.
+--------------------------------------------------------------------------*/
-INLINE static FIELD *Right_Neighbour_Field(FIELD * field)
+NCURSES_INLINE static FIELD *
+Right_Neighbor_Field(FIELD *field)
{
FIELD *field_on_page = field;
- /* See the comments on Left_Neighbour_Field to understand how it works */
+ /* See the comments on Left_Neighbor_Field to understand how it works */
do
{
field_on_page = Sorted_Next_Field(field_on_page);
- } while(field_on_page->frow != field->frow);
-
+ }
+ while (field_on_page->frow != field->frow);
+
return (field_on_page);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static FIELD *Upper_Neighbour_Field(FIELD * field)
-|
+| Facility : libnform
+| Function : static FIELD *Upper_Neighbor_Field(FIELD * field)
+|
| Description : Because of the row-major nature of sorting the fields,
-| its more difficult to define whats the upper neighbour
+| it is more difficult to define whats the upper neighbor
| field really means. We define that it must be on a
| 'previous' line (cyclic order!) and is the rightmost
| field laying on the left side of the given field. If
| this set is empty, we take the first field on the line.
|
-| Return Values : Pointer to the upper neighbour field.
+| Return Values : Pointer to the upper neighbor field.
+--------------------------------------------------------------------------*/
-static FIELD *Upper_Neighbour_Field(FIELD * field)
+static FIELD *
+Upper_Neighbor_Field(FIELD *field)
{
FIELD *field_on_page = field;
int frow = field->frow;
@@ -2970,45 +3341,48 @@ static FIELD *Upper_Neighbour_Field(FIELD * field)
/* Walk back to the 'previous' line. The second term in the while clause
just guarantees that we stop if we cycled through the line because
there might be no 'previous' line if the page has just one line.
- */
+ */
do
{
field_on_page = Sorted_Previous_Field(field_on_page);
- } while(field_on_page->frow==frow && field_on_page->fcol!=fcol);
-
- if (field_on_page->frow!=frow)
- { /* We really found a 'previous' line. We are positioned at the
+ }
+ while (field_on_page->frow == frow && field_on_page->fcol != fcol);
+
+ if (field_on_page->frow != frow)
+ {
+ /* We really found a 'previous' line. We are positioned at the
rightmost field on this line */
- frow = field_on_page->frow;
+ frow = field_on_page->frow;
- /* We walk to the left as long as we are really right of the
- field. */
- while(field_on_page->frow==frow && field_on_page->fcol>fcol)
+ /* We walk to the left as long as we are really right of the
+ field. */
+ while (field_on_page->frow == frow && field_on_page->fcol > fcol)
field_on_page = Sorted_Previous_Field(field_on_page);
- /* If we wrapped, just go to the right which is the first field on
- the row */
- if (field_on_page->frow!=frow)
+ /* If we wrapped, just go to the right which is the first field on
+ the row */
+ if (field_on_page->frow != frow)
field_on_page = Sorted_Next_Field(field_on_page);
}
-
+
return (field_on_page);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static FIELD *Down_Neighbour_Field(FIELD * field)
-|
+| Facility : libnform
+| Function : static FIELD *Down_Neighbor_Field(FIELD * field)
+|
| Description : Because of the row-major nature of sorting the fields,
-| its more difficult to define whats the down neighbour
+| its more difficult to define whats the down neighbor
| field really means. We define that it must be on a
| 'next' line (cyclic order!) and is the leftmost
| field laying on the right side of the given field. If
| this set is empty, we take the last field on the line.
|
-| Return Values : Pointer to the upper neighbour field.
+| Return Values : Pointer to the upper neighbor field.
+--------------------------------------------------------------------------*/
-static FIELD *Down_Neighbour_Field(FIELD * field)
+static FIELD *
+Down_Neighbor_Field(FIELD *field)
{
FIELD *field_on_page = field;
int frow = field->frow;
@@ -3017,42 +3391,44 @@ static FIELD *Down_Neighbour_Field(FIELD * field)
/* Walk forward to the 'next' line. The second term in the while clause
just guarantees that we stop if we cycled through the line because
there might be no 'next' line if the page has just one line.
- */
+ */
do
{
field_on_page = Sorted_Next_Field(field_on_page);
- } while(field_on_page->frow==frow && field_on_page->fcol!=fcol);
+ }
+ while (field_on_page->frow == frow && field_on_page->fcol != fcol);
- if (field_on_page->frow!=frow)
- { /* We really found a 'next' line. We are positioned at the rightmost
+ if (field_on_page->frow != frow)
+ {
+ /* We really found a 'next' line. We are positioned at the rightmost
field on this line */
frow = field_on_page->frow;
- /* We walk to the right as long as we are really left of the
- field. */
- while(field_on_page->frow==frow && field_on_page->fcol<fcol)
+ /* We walk to the right as long as we are really left of the
+ field. */
+ while (field_on_page->frow == frow && field_on_page->fcol < fcol)
field_on_page = Sorted_Next_Field(field_on_page);
- /* If we wrapped, just go to the left which is the last field on
- the row */
- if (field_on_page->frow!=frow)
+ /* If we wrapped, just go to the left which is the last field on
+ the row */
+ if (field_on_page->frow != frow)
field_on_page = Sorted_Previous_Field(field_on_page);
}
-
- return(field_on_page);
+
+ return (field_on_page);
}
-
+
/*----------------------------------------------------------------------------
Inter-Field Navigation routines
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Inter_Field_Navigation(
| int (* const fct) (FORM *),
| FORM * form)
-|
-| Description : Generic behaviour for changing the current field, the
+|
+| Description : Generic behavior for changing the current field, the
| field is left and a new field is entered. So the field
| must be validated and the field init/term hooks must
| be called.
@@ -3061,229 +3437,254 @@ static FIELD *Down_Neighbour_Field(FIELD * field)
| E_INVALID_FIELD - field is invalid
| some other - error from subordinate call
+--------------------------------------------------------------------------*/
-static int Inter_Field_Navigation(int (* const fct) (FORM *),FORM *form)
+static int
+Inter_Field_Navigation(int (*const fct) (FORM *), FORM *form)
{
int res;
- if (!_nc_Internal_Validation(form))
+ if (!_nc_Internal_Validation(form))
res = E_INVALID_FIELD;
else
{
- Call_Hook(form,fieldterm);
+ Call_Hook(form, fieldterm);
res = fct(form);
- Call_Hook(form,fieldinit);
+ Call_Hook(form, fieldinit);
}
return res;
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Next_Field(FORM * form)
-|
+|
| Description : Move to the next field on the current page of the form
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Next_Field(FORM * form)
+static int
+FN_Next_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Next_Field_On_Page(form->current));
+ T((T_CALLED("FN_Next_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Next_Field_On_Page(form->current)));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Previous_Field(FORM * form)
-|
-| Description : Move to the previous field on the current page of the
+|
+| Description : Move to the previous field on the current page of the
| form
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Previous_Field(FORM * form)
+static int
+FN_Previous_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Previous_Field_On_Page(form->current));
+ T((T_CALLED("FN_Previous_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Previous_Field_On_Page(form->current)));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_First_Field(FORM * form)
-|
+|
| Description : Move to the first field on the current page of the form
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_First_Field(FORM * form)
+static int
+FN_First_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Next_Field_On_Page(form->field[form->page[form->curpage].pmax]));
+ T((T_CALLED("FN_First_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Next_Field_On_Page(form->field[form->page[form->curpage].pmax])));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Last_Field(FORM * form)
-|
+|
| Description : Move to the last field on the current page of the form
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Last_Field(FORM * form)
+static int
+FN_Last_Field(FORM *form)
{
- return
- _nc_Set_Current_Field(form,
- Previous_Field_On_Page(form->field[form->page[form->curpage].pmin]));
+ T((T_CALLED("FN_Last_Field(%p)"), form));
+ returnCode(
+ _nc_Set_Current_Field(form,
+ Previous_Field_On_Page(form->field[form->page[form->curpage].pmin])));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Sorted_Next_Field(FORM * form)
-|
+|
| Description : Move to the sorted next field on the current page
| of the form.
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Sorted_Next_Field(FORM * form)
+static int
+FN_Sorted_Next_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Sorted_Next_Field(form->current));
+ T((T_CALLED("FN_Sorted_Next_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Sorted_Next_Field(form->current)));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Sorted_Previous_Field(FORM * form)
-|
+|
| Description : Move to the sorted previous field on the current page
| of the form.
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Sorted_Previous_Field(FORM * form)
+static int
+FN_Sorted_Previous_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Sorted_Previous_Field(form->current));
+ T((T_CALLED("FN_Sorted_Previous_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Sorted_Previous_Field(form->current)));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Sorted_First_Field(FORM * form)
-|
+|
| Description : Move to the sorted first field on the current page
| of the form.
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Sorted_First_Field(FORM * form)
+static int
+FN_Sorted_First_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Sorted_Next_Field(form->field[form->page[form->curpage].smax]));
+ T((T_CALLED("FN_Sorted_First_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Sorted_Next_Field(form->field[form->page[form->curpage].smax])));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Sorted_Last_Field(FORM * form)
-|
+|
| Description : Move to the sorted last field on the current page
| of the form.
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Sorted_Last_Field(FORM * form)
+static int
+FN_Sorted_Last_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Sorted_Previous_Field(form->field[form->page[form->curpage].smin]));
+ T((T_CALLED("FN_Sorted_Last_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Sorted_Previous_Field(form->field[form->page[form->curpage].smin])));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Left_Field(FORM * form)
-|
+|
| Description : Get the field on the left of the current field on the
| same line and the same page. Cycles through the line.
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Left_Field(FORM * form)
+static int
+FN_Left_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Left_Neighbour_Field(form->current));
+ T((T_CALLED("FN_Left_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Left_Neighbor_Field(form->current)));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Right_Field(FORM * form)
-|
+|
| Description : Get the field on the right of the current field on the
| same line and the same page. Cycles through the line.
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Right_Field(FORM * form)
+static int
+FN_Right_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Right_Neighbour_Field(form->current));
+ T((T_CALLED("FN_Right_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Right_Neighbor_Field(form->current)));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Up_Field(FORM * form)
-|
-| Description : Get the upper neighbour of the current field. This
+|
+| Description : Get the upper neighbor of the current field. This
| cycles through the page. See the comments of the
-| Upper_Neighbour_Field function to understand how
-| 'upper' is defined.
+| Upper_Neighbor_Field function to understand how
+| 'upper' is defined.
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Up_Field(FORM * form)
+static int
+FN_Up_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Upper_Neighbour_Field(form->current));
+ T((T_CALLED("FN_Up_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Upper_Neighbor_Field(form->current)));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int FN_Down_Field(FORM * form)
-|
-| Description : Get the down neighbour of the current field. This
+|
+| Description : Get the down neighbor of the current field. This
| cycles through the page. See the comments of the
-| Down_Neighbour_Field function to understand how
-| 'down' is defined.
+| Down_Neighbor_Field function to understand how
+| 'down' is defined.
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int FN_Down_Field(FORM * form)
+static int
+FN_Down_Field(FORM *form)
{
- return _nc_Set_Current_Field(form,
- Down_Neighbour_Field(form->current));
+ T((T_CALLED("FN_Down_Field(%p)"), form));
+ returnCode(_nc_Set_Current_Field(form,
+ Down_Neighbor_Field(form->current)));
}
/*----------------------------------------------------------------------------
- END of Field Navigation routines
+ END of Field Navigation routines
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Helper routines for Page Navigation
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int _nc_Set_Form_Page(FORM * form,
| int page,
| FIELD * field)
-|
-| Description : Make the given page nr. the current page and make
+|
+| Description : Make the given page number the current page and make
| the given field the current field on the page. If
| for the field NULL is given, make the first field on
| the page the current field. The routine acts only
@@ -3291,14 +3692,15 @@ static int FN_Down_Field(FORM * form)
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+| E_BAD_ARGUMENT - invalid field pointer
+| E_SYSTEM_ERROR - some severe basic error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-_nc_Set_Form_Page
-(FORM * form, int page, FIELD * field)
+_nc_Set_Form_Page(FORM *form, int page, FIELD *field)
{
int res = E_OK;
- if ((form->curpage!=page))
+ if ((form->curpage != page))
{
FIELD *last_field, *field_on_page;
@@ -3308,64 +3710,67 @@ _nc_Set_Form_Page
do
{
if (field_on_page->opts & O_VISIBLE)
- if ((res=Display_Field(field_on_page))!=E_OK)
- return(res);
+ if ((res = Display_Field(field_on_page)) != E_OK)
+ return (res);
field_on_page = field_on_page->snext;
- } while(field_on_page != last_field);
+ }
+ while (field_on_page != last_field);
if (field)
- res = _nc_Set_Current_Field(form,field);
+ res = _nc_Set_Current_Field(form, field);
else
/* N.B.: we don't encapsulate this by Inter_Field_Navigation(),
because this is already executed in a page navigation
- context that contains field navigation
+ context that contains field navigation
*/
res = FN_First_Field(form);
}
- return(res);
+ return (res);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Next_Page_Number(const FORM * form)
-|
+|
| Description : Calculate the page number following the current page
| number. This cycles if the highest page number is
-| reached.
+| reached.
|
| Return Values : The next page number
+--------------------------------------------------------------------------*/
-INLINE static int Next_Page_Number(const FORM * form)
+NCURSES_INLINE static int
+Next_Page_Number(const FORM *form)
{
return (form->curpage + 1) % form->maxpage;
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Previous_Page_Number(const FORM * form)
-|
+|
| Description : Calculate the page number before the current page
| number. This cycles if the first page number is
-| reached.
+| reached.
|
| Return Values : The previous page number
+--------------------------------------------------------------------------*/
-INLINE static int Previous_Page_Number(const FORM * form)
+NCURSES_INLINE static int
+Previous_Page_Number(const FORM *form)
{
- return (form->curpage!=0 ? form->curpage - 1 : form->maxpage - 1);
+ return (form->curpage != 0 ? form->curpage - 1 : form->maxpage - 1);
}
-
+
/*----------------------------------------------------------------------------
- Page Navigation routines
+ Page Navigation routines
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Page_Navigation(
| int (* const fct) (FORM *),
| FORM * form)
-|
-| Description : Generic behaviour for changing a page. This means
+|
+| Description : Generic behavior for changing a page. This means
| that the field is left and a new field is entered.
| So the field must be validated and the field init/term
| hooks must be called. Because also the page is changed,
@@ -3375,192 +3780,220 @@ INLINE static int Previous_Page_Number(const FORM * form)
| E_INVALID_FIELD - field is invalid
| some other - error from subordinate call
+--------------------------------------------------------------------------*/
-static int Page_Navigation(int (* const fct) (FORM *), FORM * form)
+static int
+Page_Navigation(int (*const fct) (FORM *), FORM *form)
{
int res;
- if (!_nc_Internal_Validation(form))
+ if (!_nc_Internal_Validation(form))
res = E_INVALID_FIELD;
else
{
- Call_Hook(form,fieldterm);
- Call_Hook(form,formterm);
+ Call_Hook(form, fieldterm);
+ Call_Hook(form, formterm);
res = fct(form);
- Call_Hook(form,forminit);
- Call_Hook(form,fieldinit);
+ Call_Hook(form, forminit);
+ Call_Hook(form, fieldinit);
}
return res;
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int PN_Next_Page(FORM * form)
-|
+|
| Description : Move to the next page of the form
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int PN_Next_Page(FORM * form)
-{
- return _nc_Set_Form_Page(form,Next_Page_Number(form),(FIELD *)0);
+static int
+PN_Next_Page(FORM *form)
+{
+ T((T_CALLED("PN_Next_Page(%p)"), form));
+ returnCode(_nc_Set_Form_Page(form, Next_Page_Number(form), (FIELD *)0));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int PN_Previous_Page(FORM * form)
-|
+|
| Description : Move to the previous page of the form
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int PN_Previous_Page(FORM * form)
+static int
+PN_Previous_Page(FORM *form)
{
- return _nc_Set_Form_Page(form,Previous_Page_Number(form),(FIELD *)0);
+ T((T_CALLED("PN_Previous_Page(%p)"), form));
+ returnCode(_nc_Set_Form_Page(form, Previous_Page_Number(form), (FIELD *)0));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int PN_First_Page(FORM * form)
-|
+|
| Description : Move to the first page of the form
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int PN_First_Page(FORM * form)
+static int
+PN_First_Page(FORM *form)
{
- return _nc_Set_Form_Page(form,0,(FIELD *)0);
+ T((T_CALLED("PN_First_Page(%p)"), form));
+ returnCode(_nc_Set_Form_Page(form, 0, (FIELD *)0));
}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int PN_Last_Page(FORM * form)
-|
+|
| Description : Move to the last page of the form
|
| Return Values : E_OK - success
| != E_OK - error from subordinate call
+--------------------------------------------------------------------------*/
-static int PN_Last_Page(FORM * form)
+static int
+PN_Last_Page(FORM *form)
{
- return _nc_Set_Form_Page(form,form->maxpage-1,(FIELD *)0);
+ T((T_CALLED("PN_Last_Page(%p)"), form));
+ returnCode(_nc_Set_Form_Page(form, form->maxpage - 1, (FIELD *)0));
}
+
/*----------------------------------------------------------------------------
- END of Field Navigation routines
+ END of Field Navigation routines
--------------------------------------------------------------------------*/
-
+
/*----------------------------------------------------------------------------
Helper routines for the core form driver.
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : static int Data_Entry(FORM * form,int c)
-|
+|
| Description : Enter character c into at the current position of the
| current field of the form.
|
-| Return Values : E_OK -
-| E_REQUEST_DENIED -
+| Return Values : E_OK - success
+| E_REQUEST_DENIED - driver could not process the request
| E_SYSTEM_ERROR -
+--------------------------------------------------------------------------*/
-static int Data_Entry(FORM * form, int c)
+static int
+Data_Entry(FORM *form, int c)
{
- FIELD *field = form->current;
+ FIELD *field = form->current;
int result = E_REQUEST_DENIED;
- if ( (field->opts & O_EDIT)
+ T((T_CALLED("Data_Entry(%p,%s)"), form, _tracechtype((chtype)c)));
+ if ((field->opts & O_EDIT)
#if FIX_FORM_INACTIVE_BUG
- && (field->opts & O_ACTIVE)
+ && (field->opts & O_ACTIVE)
#endif
- )
+ )
{
- if ( (field->opts & O_BLANK) &&
- First_Position_In_Current_Field(form) &&
- !(form->status & _FCHECK_REQUIRED) &&
- !(form->status & _WINDOW_MODIFIED) )
+ if ((field->opts & O_BLANK) &&
+ First_Position_In_Current_Field(form) &&
+ !(form->status & _FCHECK_REQUIRED) &&
+ !(form->status & _WINDOW_MODIFIED))
werase(form->w);
if (form->status & _OVLMODE)
{
- waddch(form->w,(chtype)c);
- }
- else /* no _OVLMODE */
+ waddch(form->w, (chtype)c);
+ }
+ else
+ /* no _OVLMODE */
{
bool There_Is_Room = Is_There_Room_For_A_Char_In_Line(form);
if (!(There_Is_Room ||
((Single_Line_Field(field) && Growable(field)))))
- return E_REQUEST_DENIED;
+ RETURN(E_REQUEST_DENIED);
- if (!There_Is_Room && !Field_Grown(field,1))
- return E_SYSTEM_ERROR;
+ if (!There_Is_Room && !Field_Grown(field, 1))
+ RETURN(E_SYSTEM_ERROR);
- winsch(form->w,(chtype)c);
+ winsch(form->w, (chtype)c);
}
- if ((result=Wrapping_Not_Necessary_Or_Wrapping_Ok(form))==E_OK)
+ if ((result = Wrapping_Not_Necessary_Or_Wrapping_Ok(form)) == E_OK)
{
- bool End_Of_Field= (((field->drows-1)==form->currow) &&
- ((field->dcols-1)==form->curcol));
+ bool End_Of_Field = (((field->drows - 1) == form->currow) &&
+ ((field->dcols - 1) == form->curcol));
+
form->status |= _WINDOW_MODIFIED;
if (End_Of_Field && !Growable(field) && (field->opts & O_AUTOSKIP))
- result = Inter_Field_Navigation(FN_Next_Field,form);
+ result = Inter_Field_Navigation(FN_Next_Field, form);
else
{
- if (End_Of_Field && Growable(field) && !Field_Grown(field,1))
+ if (End_Of_Field && Growable(field) && !Field_Grown(field, 1))
result = E_SYSTEM_ERROR;
else
{
+#if USE_WIDEC_SUPPORT
+ /*
+ * We have just added a byte to the form field. It may have
+ * been part of a multibyte character. If it was, the
+ * addch_used field is nonzero and we should not try to move
+ * to a new column.
+ */
+ if (WINDOW_EXT(form->w, addch_used) == 0)
+ IFN_Next_Character(form);
+#else
IFN_Next_Character(form);
+#endif
result = E_OK;
}
}
}
}
- return result;
+ RETURN(result);
}
-
+
/* Structure to describe the binding of a request code to a function.
The member keycode codes the request value as well as the generic
routine to use for the request. The code for the generic routine
is coded in the upper 16 Bits while the request code is coded in
- the lower 16 bits.
+ the lower 16 bits.
In terms of C++ you might think of a request as a class with a
virtual method "perform". The different types of request are
derived from this base class and overload (or not) the base class
implementation of perform.
*/
-typedef struct {
- int keycode; /* must be at least 32 bit: hi:mode, lo: key */
- int (*cmd)(FORM *); /* low level driver routine for this key */
-} Binding_Info;
+typedef struct
+{
+ int keycode; /* must be at least 32 bit: hi:mode, lo: key */
+ int (*cmd) (FORM *); /* low level driver routine for this key */
+}
+Binding_Info;
/* You may see this is the class-id of the request type class */
-#define ID_PN (0x00000000) /* Page navigation */
-#define ID_FN (0x00010000) /* Inter-Field navigation */
-#define ID_IFN (0x00020000) /* Intra-Field navigation */
-#define ID_VSC (0x00030000) /* Vertical Scrolling */
-#define ID_HSC (0x00040000) /* Horizontal Scrolling */
-#define ID_FE (0x00050000) /* Field Editing */
-#define ID_EM (0x00060000) /* Edit Mode */
-#define ID_FV (0x00070000) /* Field Validation */
-#define ID_CH (0x00080000) /* Choice */
+#define ID_PN (0x00000000) /* Page navigation */
+#define ID_FN (0x00010000) /* Inter-Field navigation */
+#define ID_IFN (0x00020000) /* Intra-Field navigation */
+#define ID_VSC (0x00030000) /* Vertical Scrolling */
+#define ID_HSC (0x00040000) /* Horizontal Scrolling */
+#define ID_FE (0x00050000) /* Field Editing */
+#define ID_EM (0x00060000) /* Edit Mode */
+#define ID_FV (0x00070000) /* Field Validation */
+#define ID_CH (0x00080000) /* Choice */
#define ID_Mask (0xffff0000)
#define Key_Mask (0x0000ffff)
#define ID_Shft (16)
/* This array holds all the Binding Infos */
-static const Binding_Info bindings[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
+/* *INDENT-OFF* */
+static const Binding_Info bindings[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
{
{ REQ_NEXT_PAGE |ID_PN ,PN_Next_Page},
{ REQ_PREV_PAGE |ID_PN ,PN_Previous_Page},
{ REQ_FIRST_PAGE |ID_PN ,PN_First_Page},
{ REQ_LAST_PAGE |ID_PN ,PN_Last_Page},
-
+
{ REQ_NEXT_FIELD |ID_FN ,FN_Next_Field},
{ REQ_PREV_FIELD |ID_FN ,FN_Previous_Field},
{ REQ_FIRST_FIELD |ID_FN ,FN_First_Field},
@@ -3573,7 +4006,7 @@ static const Binding_Info bindings[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
{ REQ_RIGHT_FIELD |ID_FN ,FN_Right_Field},
{ REQ_UP_FIELD |ID_FN ,FN_Up_Field},
{ REQ_DOWN_FIELD |ID_FN ,FN_Down_Field},
-
+
{ REQ_NEXT_CHAR |ID_IFN ,IFN_Next_Character},
{ REQ_PREV_CHAR |ID_IFN ,IFN_Previous_Character},
{ REQ_NEXT_LINE |ID_IFN ,IFN_Next_Line},
@@ -3588,7 +4021,7 @@ static const Binding_Info bindings[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
{ REQ_RIGHT_CHAR |ID_IFN ,IFN_Right_Character},
{ REQ_UP_CHAR |ID_IFN ,IFN_Up_Character},
{ REQ_DOWN_CHAR |ID_IFN ,IFN_Down_Character},
-
+
{ REQ_NEW_LINE |ID_FE ,FE_New_Line},
{ REQ_INS_CHAR |ID_FE ,FE_Insert_Character},
{ REQ_INS_LINE |ID_FE ,FE_Insert_Line},
@@ -3597,36 +4030,37 @@ static const Binding_Info bindings[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
{ REQ_DEL_LINE |ID_FE ,FE_Delete_Line},
{ REQ_DEL_WORD |ID_FE ,FE_Delete_Word},
{ REQ_CLR_EOL |ID_FE ,FE_Clear_To_End_Of_Line},
- { REQ_CLR_EOF |ID_FE ,FE_Clear_To_End_Of_Form},
+ { REQ_CLR_EOF |ID_FE ,FE_Clear_To_End_Of_Field},
{ REQ_CLR_FIELD |ID_FE ,FE_Clear_Field},
-
+
{ REQ_OVL_MODE |ID_EM ,EM_Overlay_Mode},
{ REQ_INS_MODE |ID_EM ,EM_Insert_Mode},
-
+
{ REQ_SCR_FLINE |ID_VSC ,VSC_Scroll_Line_Forward},
{ REQ_SCR_BLINE |ID_VSC ,VSC_Scroll_Line_Backward},
{ REQ_SCR_FPAGE |ID_VSC ,VSC_Scroll_Page_Forward},
{ REQ_SCR_BPAGE |ID_VSC ,VSC_Scroll_Page_Backward},
{ REQ_SCR_FHPAGE |ID_VSC ,VSC_Scroll_Half_Page_Forward},
{ REQ_SCR_BHPAGE |ID_VSC ,VSC_Scroll_Half_Page_Backward},
-
+
{ REQ_SCR_FCHAR |ID_HSC ,HSC_Scroll_Char_Forward},
{ REQ_SCR_BCHAR |ID_HSC ,HSC_Scroll_Char_Backward},
{ REQ_SCR_HFLINE |ID_HSC ,HSC_Horizontal_Line_Forward},
{ REQ_SCR_HBLINE |ID_HSC ,HSC_Horizontal_Line_Backward},
{ REQ_SCR_HFHALF |ID_HSC ,HSC_Horizontal_Half_Line_Forward},
{ REQ_SCR_HBHALF |ID_HSC ,HSC_Horizontal_Half_Line_Backward},
-
+
{ REQ_VALIDATION |ID_FV ,FV_Validation},
{ REQ_NEXT_CHOICE |ID_CH ,CR_Next_Choice},
{ REQ_PREV_CHOICE |ID_CH ,CR_Previous_Choice}
};
+/* *INDENT-ON* */
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int form_driver(FORM * form,int c)
-|
+|
| Description : This is the workhorse of the forms system. It checks
| to determine whether the character c is a request or
| data. If it is a request, the form driver executes
@@ -3645,129 +4079,147 @@ static const Binding_Info bindings[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
| E_INVALID_FIELD - field contents are invalid
| E_BAD_STATE - called from inside a hook routine
| E_REQUEST_DENIED - request failed
+| E_NOT_CONNECTED - no fields are connected to the form
| E_UNKNOWN_COMMAND - command not known
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-form_driver (FORM * form, int c)
+form_driver(FORM *form, int c)
{
- const Binding_Info* BI = (Binding_Info *)0;
+ const Binding_Info *BI = (Binding_Info *) 0;
int res = E_UNKNOWN_COMMAND;
+ T((T_CALLED("form_driver(%p,%d)"), form, c));
+
if (!form)
RETURN(E_BAD_ARGUMENT);
if (!(form->field))
RETURN(E_NOT_CONNECTED);
-
+
assert(form->page);
-
- if (c==FIRST_ACTIVE_MAGIC)
+
+ if (c == FIRST_ACTIVE_MAGIC)
{
form->current = _nc_First_Active_Field(form);
- return E_OK;
+ RETURN(E_OK);
}
-
- assert(form->current &&
- form->current->buf &&
+
+ assert(form->current &&
+ form->current->buf &&
(form->current->form == form)
- );
-
- if ( form->status & _IN_DRIVER )
+ );
+
+ if (form->status & _IN_DRIVER)
RETURN(E_BAD_STATE);
- if ( !( form->status & _POSTED ) )
+ if (!(form->status & _POSTED))
RETURN(E_NOT_POSTED);
-
- if ((c>=MIN_FORM_COMMAND && c<=MAX_FORM_COMMAND) &&
- ((bindings[c-MIN_FORM_COMMAND].keycode & Key_Mask) == c))
- BI = &(bindings[c-MIN_FORM_COMMAND]);
-
+
+ if ((c >= MIN_FORM_COMMAND && c <= MAX_FORM_COMMAND) &&
+ ((bindings[c - MIN_FORM_COMMAND].keycode & Key_Mask) == c))
+ BI = &(bindings[c - MIN_FORM_COMMAND]);
+
if (BI)
{
- typedef int (*Generic_Method)(int (* const)(FORM *),FORM *);
- static const Generic_Method Generic_Methods[] =
- {
- Page_Navigation, /* overloaded to call field&form hooks */
- Inter_Field_Navigation, /* overloaded to call field hooks */
- NULL, /* Intra-Field is generic */
- Vertical_Scrolling, /* Overloaded to check multi-line */
- Horizontal_Scrolling, /* Overloaded to check single-line */
- Field_Editing, /* Overloaded to mark modification */
- NULL, /* Edit Mode is generic */
- NULL, /* Field Validation is generic */
- NULL /* Choice Request is generic */
- };
- size_t nMethods = (sizeof(Generic_Methods)/sizeof(Generic_Methods[0]));
- size_t method = ((BI->keycode & ID_Mask) >> ID_Shft) & 0xffff;
-
- if ( (method >= nMethods) || !(BI->cmd) )
+ typedef int (*Generic_Method) (int (*const) (FORM *), FORM *);
+ static const Generic_Method Generic_Methods[] =
+ {
+ Page_Navigation, /* overloaded to call field&form hooks */
+ Inter_Field_Navigation, /* overloaded to call field hooks */
+ NULL, /* Intra-Field is generic */
+ Vertical_Scrolling, /* Overloaded to check multi-line */
+ Horizontal_Scrolling, /* Overloaded to check single-line */
+ Field_Editing, /* Overloaded to mark modification */
+ NULL, /* Edit Mode is generic */
+ NULL, /* Field Validation is generic */
+ NULL /* Choice Request is generic */
+ };
+ size_t nMethods = (sizeof(Generic_Methods) / sizeof(Generic_Methods[0]));
+ size_t method = ((BI->keycode & ID_Mask) >> ID_Shft) & 0xffff;
+
+ if ((method >= nMethods) || !(BI->cmd))
res = E_SYSTEM_ERROR;
else
{
Generic_Method fct = Generic_Methods[method];
+
if (fct)
- res = fct(BI->cmd,form);
+ res = fct(BI->cmd, form);
else
- res = (BI->cmd)(form);
+ res = (BI->cmd) (form);
}
- }
- else
+ }
+ else if (!(c & (~(int)MAX_REGULAR_CHARACTER)))
{
- if (!(c & (~(int)MAX_REGULAR_CHARACTER)) &&
- isprint((unsigned char)c) &&
- Check_Char(form->current->type,c,
+ /*
+ * If we're using 8-bit characters, iscntrl+isprint cover the whole set.
+ * But with multibyte characters, there is a third possibility, i.e.,
+ * parts of characters that build up into printable characters which are
+ * not considered printable.
+ *
+ * FIXME: the wide-character branch should also use Check_Char().
+ */
+#if USE_WIDEC_SUPPORT
+ if (!iscntrl(UChar(c)))
+#else
+ if (isprint(UChar(c)) &&
+ Check_Char(form->current->type, c,
(TypeArgument *)(form->current->arg)))
- res = Data_Entry(form,c);
+#endif
+ res = Data_Entry(form, c);
}
_nc_Refresh_Current_Field(form);
RETURN(res);
}
-
+
/*----------------------------------------------------------------------------
Field-Buffer manipulation routines.
- The effects of setting a buffer is tightly coupled to the core of the form
+ The effects of setting a buffer are tightly coupled to the core of the form
driver logic. This is especially true in the case of growable fields.
- So I don't separate this into an own module.
+ So I don't separate this into a separate module.
--------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int set_field_buffer(FIELD *field,
| int buffer, char *value)
-|
+|
| Description : Set the given buffer of the field to the given value.
| Buffer 0 stores the displayed content of the field.
| For dynamic fields this may grow the fieldbuffers if
| the length of the value exceeds the current buffer
| length. For buffer 0 only printable values are allowed.
| For static fields, the value needs not to be zero ter-
-| minated. It is copied up to the length of the buffer.
+| minated. It is copied up to the length of the buffer.
|
| Return Values : E_OK - success
| E_BAD_ARGUMENT - invalid argument
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_field_buffer
-(FIELD * field, int buffer, const char * value)
+set_field_buffer(FIELD *field, int buffer, const char *value)
{
- char *s, *p;
+ FIELD_CELL *p;
int res = E_OK;
+ unsigned int i;
unsigned int len;
- if ( !field || !value || ((buffer < 0)||(buffer > field->nbuf)) )
+#if USE_WIDEC_SUPPORT
+ FIELD_CELL *widevalue = 0;
+#endif
+
+ T((T_CALLED("set_field_buffer(%p,%d,%s)"), field, buffer, _nc_visbuf(value)));
+
+ if (!field || !value || ((buffer < 0) || (buffer > field->nbuf)))
RETURN(E_BAD_ARGUMENT);
- len = Buffer_Length(field);
+ len = Buffer_Length(field);
- if (buffer==0)
+ if (buffer == 0)
{
- const char *v;
- unsigned int i = 0;
-
- for(v=value; *v && (i<len); v++,i++)
+ for (i = 0; (value[i] != '\0') && (i < len); ++i)
{
- if (!isprint((unsigned char)*v))
+ if (iscntrl(UChar(value[i])))
RETURN(E_BAD_ARGUMENT);
}
}
@@ -3775,83 +4227,240 @@ set_field_buffer
if (Growable(field))
{
/* for a growable field we must assume zero terminated strings, because
- somehow we have to detect the length of what should be copied.
- */
+ somehow we have to detect the length of what should be copied.
+ */
unsigned int vlen = strlen(value);
+
if (vlen > len)
{
if (!Field_Grown(field,
- (int)(1 + (vlen-len)/((field->rows+field->nrow)*field->cols))))
+ (int)(1 + (vlen - len) / ((field->rows + field->nrow)
+ * field->cols))))
RETURN(E_SYSTEM_ERROR);
- /* in this case we also have to check, wether or not the remaining
+ /* in this case we also have to check, whether or not the remaining
characters in value are also printable for buffer 0. */
- if (buffer==0)
+ if (buffer == 0)
{
- unsigned int i;
-
- for(i=len; i<vlen; i++)
- if (!isprint((unsigned char)value[i]))
+ for (i = len; i < vlen; i++)
+ if (iscntrl(UChar(value[i])))
RETURN(E_BAD_ARGUMENT);
}
len = vlen;
}
}
-
- p = Address_Of_Nth_Buffer(field,buffer);
-#if HAVE_MEMCCPY
- s = memccpy(p,value,0,len);
+ p = Address_Of_Nth_Buffer(field, buffer);
+
+#if USE_WIDEC_SUPPORT
+ /*
+ * Use addstr's logic for converting a string to an array of cchar_t's.
+ * There should be a better way, but this handles nonspacing characters
+ * and other special cases that we really do not want to handle here.
+ */
+ wclear(field->working);
+ mvwaddstr(field->working, 0, 0, value);
+
+ if ((widevalue = (FIELD_CELL *)calloc(len, sizeof(FIELD_CELL))) == 0)
+ {
+ RETURN(E_SYSTEM_ERROR);
+ }
+ else
+ {
+ mvwin_wchnstr(field->working, 0, 0, widevalue, (int)len);
+ for (i = 0; i < len; ++i)
+ {
+ if (CharEq(myZEROS, widevalue[i]))
+ {
+ while (i < len)
+ p[i++] = myBLANK;
+ break;
+ }
+ p[i] = widevalue[i];
+ }
+ free(widevalue);
+ }
#else
- for(s=(char *)value; *s && (s < (value+len)); s++)
- p[s-value] = *s;
- if (s < (value+len))
+ for (i = 0; i < len; ++i)
{
- p[s-value] = *s++;
- s = p + (s-value);
+ if (value[i] == '\0')
+ {
+ while (i < len)
+ p[i++] = myBLANK;
+ break;
+ }
+ p[i] = value[i];
}
- else
- s=(char *)0;
#endif
- if (s)
- { /* this means, value was null terminated and not greater than the
- buffer. We have to pad with blanks. Please note that due to memccpy
- logic s points after the terminating null. */
- s--; /* now we point to the terminator. */
- assert(len >= (unsigned int)(s-p));
- if (len > (unsigned int)(s-p))
- memset(s,C_BLANK,len-(unsigned int)(s-p));
- }
-
- if (buffer==0)
+ if (buffer == 0)
{
int syncres;
- if (((syncres=Synchronize_Field( field ))!=E_OK) &&
- (res==E_OK))
+
+ if (((syncres = Synchronize_Field(field)) != E_OK) &&
+ (res == E_OK))
res = syncres;
- if (((syncres=Synchronize_Linked_Fields(field ))!=E_OK) &&
- (res==E_OK))
+ if (((syncres = Synchronize_Linked_Fields(field)) != E_OK) &&
+ (res == E_OK))
res = syncres;
}
RETURN(res);
-}
+}
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : char *field_buffer(const FIELD *field,int buffer)
-|
+|
| Description : Return the address of the buffer for the field.
|
| Return Values : Pointer to buffer or NULL if arguments were invalid.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(char *)
-field_buffer (const FIELD * field, int buffer)
+field_buffer(const FIELD *field, int buffer)
{
+ char *result = 0;
+
+ T((T_CALLED("field_buffer(%p,%d)"), field, buffer));
+
if (field && (buffer >= 0) && (buffer <= field->nbuf))
- return Address_Of_Nth_Buffer(field,buffer);
- else
- return (char *)0;
+ {
+#if USE_WIDEC_SUPPORT
+ FIELD_CELL *data = Address_Of_Nth_Buffer(field, buffer);
+ unsigned need = 0;
+ int size = Buffer_Length(field);
+ int n;
+
+ /* determine the number of bytes needed to store the expanded string */
+ for (n = 0; n < size; ++n)
+ {
+ if (!isWidecExt(data[n]))
+ {
+ mbstate_t state;
+ size_t next;
+
+ init_mb(state);
+ next = _nc_wcrtomb(0, data[n].chars[0], &state);
+ if (!isEILSEQ(next))
+ {
+ if (next != 0)
+ need += next;
+ }
+ }
+ }
+
+ /* allocate a place to store the expanded string */
+ if (field->expanded[buffer] != 0)
+ free(field->expanded[buffer]);
+ field->expanded[buffer] = typeMalloc(char, need + 1);
+
+ /* expand the multibyte data */
+ if ((result = field->expanded[buffer]) != 0)
+ {
+ wclear(field->working);
+ mvwadd_wchnstr(field->working, 0, 0, data, size);
+ mvwinnstr(field->working, 0, 0, result, (int)need + 1);
+ }
+#else
+ result = Address_Of_Nth_Buffer(field, buffer);
+#endif
+ }
+ returnPtr(result);
}
+#if USE_WIDEC_SUPPORT
+
+/* FIXME: see lib_get_wch.c */
+#if HAVE_MBTOWC && HAVE_MBLEN
+#define reset_mbytes(state) mblen(NULL, 0), mbtowc(NULL, NULL, 0)
+#define count_mbytes(buffer,length,state) mblen(buffer,length)
+#define trans_mbytes(wch,buffer,length,state) \
+ (int) mbtowc(&wch, buffer, length)
+#elif HAVE_MBRTOWC && HAVE_MBRLEN
+#define NEED_STATE
+#define reset_mbytes(state) init_mb(state)
+#define count_mbytes(buffer,length,state) mbrlen(buffer,length,&state)
+#define trans_mbytes(wch,buffer,length,state) \
+ (int) mbrtowc(&wch, buffer, length, &state)
+#else
+make an error
+#endif
+
+/*---------------------------------------------------------------------------
+| Convert a multibyte string to a wide-character string. The result must be
+| freed by the caller.
++--------------------------------------------------------------------------*/
+NCURSES_EXPORT(wchar_t *)
+_nc_Widen_String(char *source, int *lengthp)
+{
+ wchar_t *result = 0;
+ wchar_t wch;
+ size_t given = strlen(source);
+ size_t tries;
+ int pass;
+ int status;
+
+#ifdef NEED_STATE
+ mbstate_t state;
+#endif
+
+ for (pass = 0; pass < 2; ++pass)
+ {
+ unsigned need = 0;
+ size_t passed = 0;
+
+ while (passed < given)
+ {
+ bool found = FALSE;
+
+ for (tries = 1, status = 0; tries <= (given - passed); ++tries)
+ {
+ int save = source[passed + tries];
+
+ source[passed + tries] = 0;
+ reset_mbytes(state);
+ status = trans_mbytes(wch, source + passed, tries, state);
+ source[passed + tries] = save;
+
+ if (status > 0)
+ {
+ found = TRUE;
+ break;
+ }
+ }
+ if (found)
+ {
+ if (pass)
+ {
+ result[need] = wch;
+ }
+ passed += status;
+ ++need;
+ }
+ else
+ {
+ if (pass)
+ {
+ result[need] = source[passed];
+ }
+ ++need;
+ ++passed;
+ }
+ }
+
+ if (!pass)
+ {
+ if (!need)
+ break;
+ result = typeCalloc(wchar_t, need);
+
+ *lengthp = need;
+ if (result == 0)
+ break;
+ }
+ }
+
+ return result;
+}
+#endif
+
/* frm_driver.c ends here */
diff --git a/contrib/ncurses/form/frm_hook.c b/contrib/ncurses/form/frm_hook.c
index 8296712fc1c0..18e6d71f31ab 100644
--- a/contrib/ncurses/form/frm_hook.c
+++ b/contrib/ncurses/form/frm_hook.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,17 +27,18 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: frm_hook.c,v 1.9 2000/12/10 02:09:37 tom Exp $")
+MODULE_ID("$Id: frm_hook.c,v 1.14 2004/12/25 22:37:27 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)"), form, func));\
(Normalize_Form( form ) -> typ ## name) = func ;\
RETURN(E_OK);\
}
@@ -46,95 +47,96 @@ NCURSES_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (FORM *form, Form_Hook f
#define GEN_HOOK_GET_FUNCTION( typ, name ) \
NCURSES_IMPEXP Form_Hook NCURSES_API typ ## _ ## name ( const FORM *form )\
{\
- return ( Normalize_Form( form ) -> typ ## name );\
+ T((T_CALLED(#typ "_" #name "(%p)"), form));\
+ returnFormHook( Normalize_Form( form ) -> typ ## name );\
}
-
+
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int set_field_init(FORM *form, Form_Hook f)
-|
+|
| Description : Assigns an application defined initialization function
| to be called when the form is posted and just after
| the current field changes.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-GEN_HOOK_SET_FUNCTION(field,init)
+GEN_HOOK_SET_FUNCTION(field, init)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : Form_Hook field_init(const FORM *form)
-|
+|
| Description : Retrieve field initialization routine address.
|
| Return Values : The address or NULL if no hook defined.
+--------------------------------------------------------------------------*/
-GEN_HOOK_GET_FUNCTION(field,init)
+GEN_HOOK_GET_FUNCTION(field, init)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int set_field_term(FORM *form, Form_Hook f)
-|
+|
| Description : Assigns an application defined finalization function
| to be called when the form is unposted and just before
| the current field changes.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-GEN_HOOK_SET_FUNCTION(field,term)
+GEN_HOOK_SET_FUNCTION(field, term)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : Form_Hook field_term(const FORM *form)
-|
+|
| Description : Retrieve field finalization routine address.
|
| Return Values : The address or NULL if no hook defined.
+--------------------------------------------------------------------------*/
-GEN_HOOK_GET_FUNCTION(field,term)
+GEN_HOOK_GET_FUNCTION(field, term)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int set_form_init(FORM *form, Form_Hook f)
-|
+|
| Description : Assigns an application defined initialization function
| to be called when the form is posted and just after
| a page change.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-GEN_HOOK_SET_FUNCTION(form,init)
+GEN_HOOK_SET_FUNCTION(form, init)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : Form_Hook form_init(const FORM *form)
-|
+|
| Description : Retrieve form initialization routine address.
|
| Return Values : The address or NULL if no hook defined.
+--------------------------------------------------------------------------*/
-GEN_HOOK_GET_FUNCTION(form,init)
+GEN_HOOK_GET_FUNCTION(form, init)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : int set_form_term(FORM *form, Form_Hook f)
-|
+|
| Description : Assigns an application defined finalization function
| to be called when the form is unposted and just before
| a page change.
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-GEN_HOOK_SET_FUNCTION(form,term)
+GEN_HOOK_SET_FUNCTION(form, term)
/*---------------------------------------------------------------------------
-| Facility : libnform
+| Facility : libnform
| Function : Form_Hook form_term(const FORM *form)
-|
+|
| Description : Retrieve form finalization routine address.
|
| Return Values : The address or NULL if no hook defined.
+--------------------------------------------------------------------------*/
-GEN_HOOK_GET_FUNCTION(form,term)
+GEN_HOOK_GET_FUNCTION(form, term)
/* frm_hook.c ends here */
diff --git a/contrib/ncurses/form/frm_opts.c b/contrib/ncurses/form/frm_opts.c
index fe2354119712..d36d618a5343 100644
--- a/contrib/ncurses/form/frm_opts.c
+++ b/contrib/ncurses/form/frm_opts.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,12 +27,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: frm_opts.c,v 1.9 2000/12/10 02:09:37 tom Exp $")
+MODULE_ID("$Id: frm_opts.c,v 1.14 2005/04/16 16:59:18 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -45,14 +45,16 @@ MODULE_ID("$Id: frm_opts.c,v 1.9 2000/12/10 02:09:37 tom Exp $")
| E_BAD_ARGUMENT - invalid options
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_form_opts (FORM * form, Form_Options opts)
+set_form_opts(FORM *form, Form_Options opts)
{
+ T((T_CALLED("set_form_opts(%p,%d)"), form, opts));
+
opts &= ALL_FORM_OPTS;
if (opts & ~ALL_FORM_OPTS)
RETURN(E_BAD_ARGUMENT);
else
{
- Normalize_Form( form )->opts = opts;
+ Normalize_Form(form)->opts = opts;
RETURN(E_OK);
}
}
@@ -66,9 +68,10 @@ set_form_opts (FORM * form, Form_Options opts)
| Return Values : The option flags.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(Form_Options)
-form_opts (const FORM * form)
+form_opts(const FORM *form)
{
- return (Normalize_Form(form)->opts & ALL_FORM_OPTS);
+ T((T_CALLED("form_opts(%p)"), form));
+ returnCode((int)(Normalize_Form(form)->opts & ALL_FORM_OPTS));
}
/*---------------------------------------------------------------------------
@@ -82,14 +85,16 @@ form_opts (const FORM * form)
| E_BAD_ARGUMENT - invalid options
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-form_opts_on (FORM * form, Form_Options opts)
+form_opts_on(FORM *form, Form_Options opts)
{
+ T((T_CALLED("form_opts_on(%p,%d)"), form, opts));
+
opts &= ALL_FORM_OPTS;
if (opts & ~ALL_FORM_OPTS)
RETURN(E_BAD_ARGUMENT);
else
{
- Normalize_Form( form )->opts |= opts;
+ Normalize_Form(form)->opts |= opts;
RETURN(E_OK);
}
}
@@ -105,8 +110,10 @@ form_opts_on (FORM * form, Form_Options opts)
| E_BAD_ARGUMENT - invalid options
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-form_opts_off (FORM * form, Form_Options opts)
+form_opts_off(FORM *form, Form_Options opts)
{
+ T((T_CALLED("form_opts_off(%p,%d)"), form, opts));
+
opts &= ALL_FORM_OPTS;
if (opts & ~ALL_FORM_OPTS)
RETURN(E_BAD_ARGUMENT);
diff --git a/contrib/ncurses/form/frm_page.c b/contrib/ncurses/form/frm_page.c
index 84467f848bb5..a371838d950e 100644
--- a/contrib/ncurses/form/frm_page.c
+++ b/contrib/ncurses/form/frm_page.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: frm_page.c,v 1.6 2000/12/10 02:09:37 tom Exp $")
+MODULE_ID("$Id: frm_page.c,v 1.10 2004/12/11 22:08:21 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -47,35 +47,37 @@ MODULE_ID("$Id: frm_page.c,v 1.6 2000/12/10 02:09:37 tom Exp $")
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_form_page (FORM * form, int page)
+set_form_page(FORM *form, int page)
{
int err = E_OK;
- if ( !form || (page<0) || (page>=form->maxpage) )
+ T((T_CALLED("set_form_page(%p,%d)"), form, page));
+
+ if (!form || (page < 0) || (page >= form->maxpage))
RETURN(E_BAD_ARGUMENT);
if (!(form->status & _POSTED))
{
form->curpage = page;
form->current = _nc_First_Active_Field(form);
- }
+ }
else
{
- if (form->status & _IN_DRIVER)
+ if (form->status & _IN_DRIVER)
err = E_BAD_STATE;
else
{
if (form->curpage != page)
{
- if (!_nc_Internal_Validation(form))
+ if (!_nc_Internal_Validation(form))
err = E_INVALID_FIELD;
else
{
- Call_Hook(form,fieldterm);
- Call_Hook(form,formterm);
- err = _nc_Set_Form_Page(form,page,(FIELD *)0);
- Call_Hook(form,forminit);
- Call_Hook(form,fieldinit);
+ Call_Hook(form, fieldterm);
+ Call_Hook(form, formterm);
+ err = _nc_Set_Form_Page(form, page, (FIELD *)0);
+ Call_Hook(form, forminit);
+ Call_Hook(form, fieldinit);
_nc_Refresh_Current_Field(form);
}
}
@@ -94,9 +96,11 @@ set_form_page (FORM * form, int page)
| -1 : invalid form pointer
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-form_page (const FORM * form)
+form_page(const FORM *form)
{
- return Normalize_Form(form)->curpage;
+ T((T_CALLED("form_page(%p)"), form));
+
+ returnCode(Normalize_Form(form)->curpage);
}
/* frm_page.c ends here */
diff --git a/contrib/ncurses/form/frm_post.c b/contrib/ncurses/form/frm_post.c
index 96df4c4656e1..28937e91b0b2 100644
--- a/contrib/ncurses/form/frm_post.c
+++ b/contrib/ncurses/form/frm_post.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+
#include "form.priv.h"
-MODULE_ID("$Id: frm_post.c,v 1.5 2000/12/10 02:09:37 tom Exp $")
+MODULE_ID("$Id: frm_post.c,v 1.9 2004/12/11 22:19:06 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -47,37 +48,39 @@ MODULE_ID("$Id: frm_post.c,v 1.5 2000/12/10 02:09:37 tom Exp $")
| E_SYSTEM_ERROR - system error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-post_form (FORM * form)
+post_form(FORM *form)
{
WINDOW *formwin;
int err;
int page;
+ T((T_CALLED("post_form(%p)"), form));
+
if (!form)
RETURN(E_BAD_ARGUMENT);
- if (form->status & _POSTED)
+ if (form->status & _POSTED)
RETURN(E_POSTED);
if (!(form->field))
RETURN(E_NOT_CONNECTED);
-
+
formwin = Get_Form_Window(form);
- if ((form->cols > getmaxx(formwin)) || (form->rows > getmaxy(formwin)))
+ 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
to do the page initialization which is required by post_form.
- */
+ */
page = form->curpage;
form->curpage = -1;
- if ((err = _nc_Set_Form_Page(form,page,form->current))!=E_OK)
+ if ((err = _nc_Set_Form_Page(form, page, form->current)) != E_OK)
RETURN(err);
form->status |= _POSTED;
- Call_Hook(form,forminit);
- Call_Hook(form,fieldinit);
+ Call_Hook(form, forminit);
+ Call_Hook(form, fieldinit);
_nc_Refresh_Current_Field(form);
RETURN(E_OK);
@@ -95,19 +98,21 @@ post_form (FORM * form)
| E_BAD_STATE - called from a hook routine
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-unpost_form (FORM * form)
+unpost_form(FORM *form)
{
+ T((T_CALLED("unpost_form(%p)"), form));
+
if (!form)
RETURN(E_BAD_ARGUMENT);
- if (!(form->status & _POSTED))
+ if (!(form->status & _POSTED))
RETURN(E_NOT_POSTED);
- if (form->status & _IN_DRIVER)
+ if (form->status & _IN_DRIVER)
RETURN(E_BAD_STATE);
- Call_Hook(form,fieldterm);
- Call_Hook(form,formterm);
+ Call_Hook(form, fieldterm);
+ Call_Hook(form, formterm);
werase(Get_Form_Window(form));
delwin(form->w);
diff --git a/contrib/ncurses/form/frm_req_name.c b/contrib/ncurses/form/frm_req_name.c
index e5ff9149ab3d..e4d5c335d8ec 100644
--- a/contrib/ncurses/form/frm_req_name.c
+++ b/contrib/ncurses/form/frm_req_name.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,71 +37,73 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_req_name.c,v 1.8 2000/12/10 02:09:37 tom Exp $")
-
-static const char *request_names[ MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1 ] = {
- "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"
+MODULE_ID("$Id: frm_req_name.c,v 1.15 2005/04/16 16:59:27 tom Exp $")
+
+static const char *request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
+{
+ "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"
};
+
#define A_SIZE (sizeof(request_names)/sizeof(request_names[0]))
/*---------------------------------------------------------------------------
@@ -114,18 +116,19 @@ static const char *request_names[ MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1 ] = {
| NULL - on invalid request code
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(const char *)
-form_request_name ( int request )
+form_request_name(int request)
{
- if ( (request < MIN_FORM_COMMAND) || (request > MAX_FORM_COMMAND) )
+ T((T_CALLED("form_request_name(%d)"), request));
+
+ if ((request < MIN_FORM_COMMAND) || (request > MAX_FORM_COMMAND))
{
- SET_ERROR (E_BAD_ARGUMENT);
- return (const char *)0;
+ SET_ERROR(E_BAD_ARGUMENT);
+ returnCPtr((const char *)0);
}
else
- return request_names[ request - MIN_FORM_COMMAND ];
+ returnCPtr(request_names[request - MIN_FORM_COMMAND]);
}
-
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : int form_request_by_name (const char *str);
@@ -136,28 +139,30 @@ form_request_name ( int request )
| E_NO_MATCH - request not found
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-form_request_by_name ( const char *str )
-{
+form_request_by_name(const char *str)
+{
/* because the table is so small, it doesn't really hurt
to run sequentially through it.
- */
+ */
unsigned int i = 0;
char buf[16];
-
+
+ T((T_CALLED("form_request_by_name(%s)"), _nc_visbuf(str)));
+
if (str)
{
- strncpy(buf,str,sizeof(buf));
- while( (i<sizeof(buf)) && (buf[i] != '\0') )
+ strncpy(buf, str, sizeof(buf));
+ while ((i < sizeof(buf)) && (buf[i] != '\0'))
{
buf[i] = toupper(buf[i]);
i++;
}
-
- for (i=0; i < A_SIZE; i++)
+
+ for (i = 0; i < A_SIZE; i++)
{
- if (strncmp(request_names[i],buf,sizeof(buf))==0)
- return MIN_FORM_COMMAND + i;
- }
+ if (strncmp(request_names[i], buf, sizeof(buf)) == 0)
+ returnCode(MIN_FORM_COMMAND + (int) i);
+ }
}
RETURN(E_NO_MATCH);
}
diff --git a/contrib/ncurses/form/frm_scale.c b/contrib/ncurses/form/frm_scale.c
index 77bd00abf325..2ebf72d06c67 100644
--- a/contrib/ncurses/form/frm_scale.c
+++ b/contrib/ncurses/form/frm_scale.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: frm_scale.c,v 1.5 2000/12/10 02:09:37 tom Exp $")
+MODULE_ID("$Id: frm_scale.c,v 1.9 2004/12/11 22:12:34 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -45,19 +45,21 @@ MODULE_ID("$Id: frm_scale.c,v 1.5 2000/12/10 02:09:37 tom Exp $")
| E_NOT_CONNECTED - no fields connected to form
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-scale_form (const FORM * form, int * rows, int * cols)
+scale_form(const FORM *form, int *rows, int *cols)
{
- if ( !form )
+ T((T_CALLED("scale_form(%p,%p,%p)"), form, rows, cols));
+
+ if (!form)
RETURN(E_BAD_ARGUMENT);
- if ( !(form->field) )
+ if (!(form->field))
RETURN(E_NOT_CONNECTED);
-
- if (rows)
+
+ if (rows)
*rows = form->rows;
- if (cols)
+ if (cols)
*cols = form->cols;
-
+
RETURN(E_OK);
}
diff --git a/contrib/ncurses/form/frm_sub.c b/contrib/ncurses/form/frm_sub.c
index a413153e40c7..6db0023db1ab 100644
--- a/contrib/ncurses/form/frm_sub.c
+++ b/contrib/ncurses/form/frm_sub.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: frm_sub.c,v 1.5 2000/12/10 02:09:37 tom Exp $")
+MODULE_ID("$Id: frm_sub.c,v 1.9 2004/12/11 22:13:39 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -44,14 +44,16 @@ MODULE_ID("$Id: frm_sub.c,v 1.5 2000/12/10 02:09:37 tom Exp $")
| E_POSTED - form is posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_form_sub (FORM * form, WINDOW * win)
+set_form_sub(FORM *form, WINDOW *win)
{
- if (form && (form->status & _POSTED))
+ T((T_CALLED("set_form_sub(%p,%p)"), form, win));
+
+ if (form && (form->status & _POSTED))
RETURN(E_POSTED);
- Normalize_Form( form )->sub = win;
+ Normalize_Form(form)->sub = win;
RETURN(E_OK);
-}
+}
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -62,10 +64,14 @@ set_form_sub (FORM * form, WINDOW * win)
| Return Values : The pointer to the Subwindow.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(WINDOW *)
-form_sub (const FORM * form)
+form_sub(const FORM *form)
{
- const FORM* f = Normalize_Form( form );
- return Get_Form_Window(f);
+ const FORM *f;
+
+ T((T_CALLED("form_sub(%p)"), form));
+
+ f = Normalize_Form(form);
+ returnWin(Get_Form_Window(f));
}
/* frm_sub.c ends here */
diff --git a/contrib/ncurses/form/frm_user.c b/contrib/ncurses/form/frm_user.c
index 3b04e53bbb30..4d5e0e463a43 100644
--- a/contrib/ncurses/form/frm_user.c
+++ b/contrib/ncurses/form/frm_user.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: frm_user.c,v 1.9 2000/12/10 02:09:37 tom Exp $")
+MODULE_ID("$Id: frm_user.c,v 1.14 2004/12/25 22:37:56 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -44,8 +44,10 @@ MODULE_ID("$Id: frm_user.c,v 1.9 2000/12/10 02:09:37 tom Exp $")
| Return Values : E_OK - on success
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_form_userptr (FORM * form, void *usrptr)
+set_form_userptr(FORM *form, void *usrptr)
{
+ T((T_CALLED("set_form_userptr(%p,%p)"), form, usrptr));
+
Normalize_Form(form)->usrptr = usrptr;
RETURN(E_OK);
}
@@ -61,9 +63,10 @@ set_form_userptr (FORM * form, void *usrptr)
| NULL is returned
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void *)
-form_userptr (const FORM * form)
+form_userptr(const FORM *form)
{
- return Normalize_Form(form)->usrptr;
+ T((T_CALLED("form_userptr(%p)"), form));
+ returnVoidPtr(Normalize_Form(form)->usrptr);
}
/* frm_user.c ends here */
diff --git a/contrib/ncurses/form/frm_win.c b/contrib/ncurses/form/frm_win.c
index 1b69fc548491..2258f0a6195b 100644
--- a/contrib/ncurses/form/frm_win.c
+++ b/contrib/ncurses/form/frm_win.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: frm_win.c,v 1.9 2000/12/10 02:09:37 tom Exp $")
+MODULE_ID("$Id: frm_win.c,v 1.13 2004/12/11 22:15:27 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -44,14 +44,16 @@ MODULE_ID("$Id: frm_win.c,v 1.9 2000/12/10 02:09:37 tom Exp $")
| E_POSTED - form is posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_form_win (FORM * form, WINDOW * win)
+set_form_win(FORM *form, WINDOW *win)
{
- if (form && (form->status & _POSTED))
+ T((T_CALLED("set_form_win(%p,%p)"), form, win));
+
+ if (form && (form->status & _POSTED))
RETURN(E_POSTED);
- Normalize_Form( form )->win = win;
+ Normalize_Form(form)->win = win;
RETURN(E_OK);
-}
+}
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -62,11 +64,14 @@ set_form_win (FORM * form, WINDOW * win)
| Return Values : The pointer to the Window or stdscr if there is none.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(WINDOW *)
-form_win (const FORM * form)
+form_win(const FORM *form)
{
- const FORM* f = Normalize_Form( form );
- return (f->win ? f->win : stdscr);
+ const FORM *f;
+
+ T((T_CALLED("form_win(%p)"), form));
+
+ f = Normalize_Form(form);
+ returnWin(f->win ? f->win : stdscr);
}
/* frm_win.c ends here */
-
diff --git a/contrib/ncurses/form/fty_alnum.c b/contrib/ncurses/form/fty_alnum.c
index cbeef17d4eb3..c2d056b70acb 100644
--- a/contrib/ncurses/form/fty_alnum.c
+++ b/contrib/ncurses/form/fty_alnum.c
@@ -1,54 +1,81 @@
+/****************************************************************************
+ * Copyright (c) 1998-2005,2006 Free Software 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. *
+ ****************************************************************************/
-/*
- * THIS CODE IS SPECIFICALLY EXEMPTED FROM THE NCURSES PACKAGE COPYRIGHT.
- * You may freely copy it for use as a template for your own field types.
- * If you develop a field type that might be of general use, please send
- * it back to the ncurses maintainers for inclusion in the next version.
- */
/***************************************************************************
* *
-* Author : Juergen Pfeifer, juergen.pfeifer@gmx.net *
+* Author : Juergen Pfeifer *
* *
***************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fty_alnum.c,v 1.10 2000/12/09 23:46:12 tom Exp $")
+MODULE_ID("$Id: fty_alnum.c,v 1.19 2006/04/22 21:33:05 tom Exp $")
-typedef struct {
- int width;
-} alnumARG;
+#define thisARG alnumARG
+
+typedef struct
+ {
+ int width;
+ }
+thisARG;
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static void *Make_AlphaNumeric_Type(va_list *ap)
-|
+| Facility : libnform
+| Function : static void *Make_This_Type(va_list *ap)
+|
| Description : Allocate structure for alphanumeric type argument.
|
| Return Values : Pointer to argument structure or NULL on error
+--------------------------------------------------------------------------*/
-static void *Make_AlphaNumeric_Type(va_list * ap)
+static void *
+Make_This_Type(va_list *ap)
{
- alnumARG *argp = (alnumARG *)malloc(sizeof(alnumARG));
+ thisARG *argp = (thisARG *) malloc(sizeof(thisARG));
if (argp)
- argp->width = va_arg(*ap,int);
+ argp->width = va_arg(*ap, int);
return ((void *)argp);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static void *Copy_AlphaNumericType(const void *argp)
-|
-| Description : Copy structure for alphanumeric type argument.
+| Facility : libnform
+| Function : static void *Copy_ThisType(const void *argp)
+|
+| Description : Copy structure for alphanumeric type argument.
|
| Return Values : Pointer to argument structure or NULL on error.
+--------------------------------------------------------------------------*/
-static void *Copy_AlphaNumeric_Type(const void *argp)
+static void *
+Copy_This_Type(const void *argp)
{
- const alnumARG *ap = (const alnumARG *)argp;
- alnumARG *result = (alnumARG *)malloc(sizeof(alnumARG));
+ const thisARG *ap = (const thisARG *)argp;
+ thisARG *result = (thisARG *) malloc(sizeof(thisARG));
if (result)
*result = *ap;
@@ -57,81 +84,78 @@ static void *Copy_AlphaNumeric_Type(const void *argp)
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static void Free_AlphaNumeric_Type(void *argp)
-|
+| Facility : libnform
+| Function : static void Free_This_Type(void *argp)
+|
| Description : Free structure for alphanumeric type argument.
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Free_AlphaNumeric_Type(void * argp)
+static void
+Free_This_Type(void *argp)
{
- if (argp)
+ if (argp)
free(argp);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static bool Check_AlphaNumeric_Field(
-| FIELD *field,
+| Facility : libnform
+| Function : static bool Check_This_Character(
+| int c,
| const void *argp)
-|
-| Description : Validate buffer content to be a valid alphanumeric value
|
-| Return Values : TRUE - field is valid
-| FALSE - field is invalid
+| Description : Check a character for the alphanumeric type.
+|
+| Return Values : TRUE - character is valid
+| FALSE - character is invalid
+--------------------------------------------------------------------------*/
-static bool Check_AlphaNumeric_Field(FIELD * field, const void * argp)
+static bool
+Check_This_Character(int c, const void *argp GCC_UNUSED)
{
- int width = ((const alnumARG *)argp)->width;
- unsigned char *bp = (unsigned char *)field_buffer(field,0);
- int l = -1;
- unsigned char *s;
-
- while(*bp && *bp==' ')
- bp++;
- if (*bp)
- {
- s = bp;
- while(*bp && isalnum(*bp))
- bp++;
- l = (int)(bp-s);
- while(*bp && *bp==' ')
- bp++;
- }
- return ((*bp || (l < width)) ? FALSE : TRUE);
+#if USE_WIDEC_SUPPORT
+ if (iswalnum((wint_t) c))
+ return TRUE;
+#endif
+ return (isalnum(UChar(c)) ? TRUE : FALSE);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static bool Check_AlphaNumeric_Character(
-| int c,
-| const void *argp )
-|
-| Description : Check a character for the alphanumeric type.
+| Facility : libnform
+| Function : static bool Check_This_Field(
+| FIELD *field,
+| const void *argp)
|
-| Return Values : TRUE - character is valid
-| FALSE - character is invalid
+| Description : Validate buffer content to be a valid alphanumeric value
+|
+| Return Values : TRUE - field is valid
+| FALSE - field is invalid
+--------------------------------------------------------------------------*/
-static bool Check_AlphaNumeric_Character(int c, const void * argp GCC_UNUSED)
+static bool
+Check_This_Field(FIELD *field, const void *argp)
{
- return (isalnum(c) ? TRUE : FALSE);
+ int width = ((const thisARG *)argp)->width;
+ unsigned char *bp = (unsigned char *)field_buffer(field, 0);
+ bool result = (width < 0);
+
+ Check_CTYPE_Field(result, bp, width, Check_This_Character);
+ return (result);
}
-static FIELDTYPE typeALNUM = {
+static FIELDTYPE typeTHIS =
+{
_HAS_ARGS | _RESIDENT,
- 1, /* this is mutable, so we can't be const */
+ 1, /* this is mutable, so we can't be const */
(FIELDTYPE *)0,
(FIELDTYPE *)0,
- Make_AlphaNumeric_Type,
- Copy_AlphaNumeric_Type,
- Free_AlphaNumeric_Type,
- Check_AlphaNumeric_Field,
- Check_AlphaNumeric_Character,
+ Make_This_Type,
+ Copy_This_Type,
+ Free_This_Type,
+ Check_This_Field,
+ Check_This_Character,
NULL,
NULL
};
-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALNUM = &typeALNUM;
+NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALNUM = &typeTHIS;
/* fty_alnum.c ends here */
diff --git a/contrib/ncurses/form/fty_alpha.c b/contrib/ncurses/form/fty_alpha.c
index ddb295d3f0dc..bd7e000edf97 100644
--- a/contrib/ncurses/form/fty_alpha.c
+++ b/contrib/ncurses/form/fty_alpha.c
@@ -1,138 +1,161 @@
+/****************************************************************************
+ * Copyright (c) 1998-2005,2006 Free Software 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. *
+ ****************************************************************************/
-/*
- * THIS CODE IS SPECIFICALLY EXEMPTED FROM THE NCURSES PACKAGE COPYRIGHT.
- * You may freely copy it for use as a template for your own field types.
- * If you develop a field type that might be of general use, please send
- * it back to the ncurses maintainers for inclusion in the next version.
- */
/***************************************************************************
* *
-* Author : Juergen Pfeifer, juergen.pfeifer@gmx.net *
+* Author : Juergen Pfeifer *
* *
***************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fty_alpha.c,v 1.10 2000/12/09 23:46:12 tom Exp $")
+MODULE_ID("$Id: fty_alpha.c,v 1.21 2006/04/22 21:33:05 tom Exp $")
-typedef struct {
- int width;
-} alphaARG;
+#define thisARG alphaARG
+
+typedef struct
+ {
+ int width;
+ }
+thisARG;
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static void *Make_Alpha_Type(va_list *ap)
-|
+| Facility : libnform
+| Function : static void *Make_This_Type(va_list *ap)
+|
| Description : Allocate structure for alpha type argument.
|
| Return Values : Pointer to argument structure or NULL on error
+--------------------------------------------------------------------------*/
-static void *Make_Alpha_Type(va_list * ap)
+static void *
+Make_This_Type(va_list *ap)
{
- alphaARG *argp = (alphaARG *)malloc(sizeof(alphaARG));
+ thisARG *argp = (thisARG *) malloc(sizeof(thisARG));
+
if (argp)
- {
- argp->width = va_arg(*ap,int);
- }
+ argp->width = va_arg(*ap, int);
+
return ((void *)argp);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static void *Copy_Alpha_Type(const void * argp)
-|
-| Description : Copy structure for alpha type argument.
+| Facility : libnform
+| Function : static void *Copy_This_Type(const void * argp)
+|
+| Description : Copy structure for alpha type argument.
|
| Return Values : Pointer to argument structure or NULL on error.
+--------------------------------------------------------------------------*/
-static void *Copy_Alpha_Type(const void * argp)
+static void *
+Copy_This_Type(const void *argp)
{
- const alphaARG *ap = (const alphaARG *)argp;
- alphaARG *result = (alphaARG *)malloc(sizeof(alphaARG));
-
+ const thisARG *ap = (const thisARG *)argp;
+ thisARG *result = (thisARG *) malloc(sizeof(thisARG));
+
if (result)
- {
- *result = *ap;
- }
+ *result = *ap;
+
return ((void *)result);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static void Free_Alpha_Type( void * argp )
-|
+| Facility : libnform
+| Function : static void Free_This_Type(void *argp)
+|
| Description : Free structure for alpha type argument.
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Free_Alpha_Type(void * argp)
+static void
+Free_This_Type(void *argp)
{
- if (argp)
+ if (argp)
free(argp);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static bool Check_Alpha_Field(
-| FIELD * field,
-| const void * argp)
-|
-| Description : Validate buffer content to be a valid alpha value
+| Facility : libnform
+| Function : static bool Check_This_Character(
+| int c,
+| const void *argp)
|
-| Return Values : TRUE - field is valid
-| FALSE - field is invalid
+| Description : Check a character for the alpha type.
+|
+| Return Values : TRUE - character is valid
+| FALSE - character is invalid
+--------------------------------------------------------------------------*/
-static bool Check_Alpha_Field(FIELD * field, const void * argp)
+static bool
+Check_This_Character(int c, const void *argp GCC_UNUSED)
{
- int width = ((const alphaARG *)argp)->width;
- unsigned char *bp = (unsigned char *)field_buffer(field,0);
- int l = -1;
- unsigned char *s;
-
- while(*bp && *bp==' ')
- bp++;
- if (*bp)
- {
- s = bp;
- while(*bp && isalpha(*bp))
- bp++;
- l = (int)(bp-s);
- while(*bp && *bp==' ')
- bp++;
- }
- return ((*bp || (l < width)) ? FALSE : TRUE);
+#if USE_WIDEC_SUPPORT
+ if (iswalpha((wint_t) c))
+ return TRUE;
+#endif
+ return (isalpha(UChar(c)) ? TRUE : FALSE);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static bool Check_Alpha_Character(
-| int c,
-| const void * argp)
-|
-| Description : Check a character for the alpha type.
+| Facility : libnform
+| Function : static bool Check_This_Field(
+| FIELD *field,
+| const void *argp)
|
-| Return Values : TRUE - character is valid
-| FALSE - character is invalid
+| Description : Validate buffer content to be a valid alpha value
+|
+| Return Values : TRUE - field is valid
+| FALSE - field is invalid
+--------------------------------------------------------------------------*/
-static bool Check_Alpha_Character(int c, const void * argp GCC_UNUSED)
+static bool
+Check_This_Field(FIELD *field, const void *argp)
{
- return (isalpha(c) ? TRUE : FALSE);
+ int width = ((const thisARG *)argp)->width;
+ unsigned char *bp = (unsigned char *)field_buffer(field, 0);
+ bool result = (width < 0);
+
+ Check_CTYPE_Field(result, bp, width, Check_This_Character);
+ return (result);
}
-static FIELDTYPE typeALPHA = {
+static FIELDTYPE typeTHIS =
+{
_HAS_ARGS | _RESIDENT,
- 1, /* this is mutable, so we can't be const */
+ 1, /* this is mutable, so we can't be const */
(FIELDTYPE *)0,
(FIELDTYPE *)0,
- Make_Alpha_Type,
- Copy_Alpha_Type,
- Free_Alpha_Type,
- Check_Alpha_Field,
- Check_Alpha_Character,
+ Make_This_Type,
+ Copy_This_Type,
+ Free_This_Type,
+ Check_This_Field,
+ Check_This_Character,
NULL,
NULL
};
-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALPHA = &typeALPHA;
+NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALPHA = &typeTHIS;
/* fty_alpha.c ends here */
diff --git a/contrib/ncurses/form/fty_enum.c b/contrib/ncurses/form/fty_enum.c
index 4f52caf9db9f..054cc4dc862d 100644
--- a/contrib/ncurses/form/fty_enum.c
+++ b/contrib/ncurses/form/fty_enum.c
@@ -1,26 +1,49 @@
+/****************************************************************************
+ * Copyright (c) 1998-2004,2006 Free Software 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. *
+ ****************************************************************************/
-/*
- * THIS CODE IS SPECIFICALLY EXEMPTED FROM THE NCURSES PACKAGE COPYRIGHT.
- * You may freely copy it for use as a template for your own field types.
- * If you develop a field type that might be of general use, please send
- * it back to the ncurses maintainers for inclusion in the next version.
- */
/***************************************************************************
* *
-* Author : Juergen Pfeifer, juergen.pfeifer@gmx.net *
+* Author : Juergen Pfeifer *
* *
***************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fty_enum.c,v 1.15 2000/12/09 23:46:12 tom Exp $")
+MODULE_ID("$Id: fty_enum.c,v 1.20 2006/04/22 21:33:05 tom Exp $")
-typedef struct {
- char **kwds;
- int count;
- bool checkcase;
- bool checkunique;
-} enumARG;
+typedef struct
+ {
+ char **kwds;
+ int count;
+ bool checkcase;
+ bool checkunique;
+ }
+enumARG;
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -30,7 +53,8 @@ typedef struct {
|
| Return Values : Pointer to argument structure or NULL on error
+--------------------------------------------------------------------------*/
-static void *Make_Enum_Type(va_list * ap)
+static void *
+Make_Enum_Type(va_list *ap)
{
enumARG *argp = (enumARG *)malloc(sizeof(enumARG));
@@ -40,14 +64,16 @@ static void *Make_Enum_Type(va_list * ap)
char **kp = (char **)0;
int ccase, cunique;
- argp->kwds = va_arg(*ap,char **);
- ccase = va_arg(*ap,int);
- cunique = va_arg(*ap,int);
- argp->checkcase = ccase ? TRUE : FALSE;
+ argp->kwds = va_arg(*ap, char **);
+ ccase = va_arg(*ap, int);
+ cunique = va_arg(*ap, int);
+
+ argp->checkcase = ccase ? TRUE : FALSE;
argp->checkunique = cunique ? TRUE : FALSE;
kp = argp->kwds;
- while( kp && (*kp++) ) cnt++;
+ while (kp && (*kp++))
+ cnt++;
argp->count = cnt;
}
return (void *)argp;
@@ -61,7 +87,8 @@ static void *Make_Enum_Type(va_list * ap)
|
| Return Values : Pointer to argument structure or NULL on error.
+--------------------------------------------------------------------------*/
-static void *Copy_Enum_Type(const void * argp)
+static void *
+Copy_Enum_Type(const void *argp)
{
enumARG *result = (enumARG *)0;
@@ -70,6 +97,7 @@ static void *Copy_Enum_Type(const void * argp)
const enumARG *ap = (const enumARG *)argp;
result = (enumARG *)malloc(sizeof(enumARG));
+
if (result)
*result = *ap;
}
@@ -84,9 +112,10 @@ static void *Copy_Enum_Type(const void * argp)
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Free_Enum_Type(void * argp)
+static void
+Free_Enum_Type(void *argp)
{
- if (argp)
+ if (argp)
free(argp);
}
@@ -101,37 +130,40 @@ static void Free_Enum_Type(void * argp)
| const unsigned char * buf,
| bool ccase )
|
-| Description : Check wether or not the text in 'buf' matches the
+| Description : Check whether or not the text in 'buf' matches the
| text in 's', at least partial.
|
| Return Values : NOMATCH - buffer doesn't match
| PARTIAL - buffer matches partially
| EXACT - buffer matches exactly
+--------------------------------------------------------------------------*/
-static int Compare(const unsigned char *s, const unsigned char *buf,
- bool ccase)
+static int
+Compare(const unsigned char *s, const unsigned char *buf,
+ bool ccase)
{
- SKIP_SPACE(buf); /* Skip leading spaces in both texts */
+ SKIP_SPACE(buf); /* Skip leading spaces in both texts */
SKIP_SPACE(s);
- if (*buf=='\0')
+ if (*buf == '\0')
{
- return (((*s)!='\0') ? NOMATCH : EXACT);
- }
- else
+ return (((*s) != '\0') ? NOMATCH : EXACT);
+ }
+ else
{
if (ccase)
{
- while(*s++ == *buf)
+ while (*s++ == *buf)
{
- if (*buf++=='\0') return EXACT;
- }
- }
- else
+ if (*buf++ == '\0')
+ return EXACT;
+ }
+ }
+ else
{
- while(toupper(*s++)==toupper(*buf))
+ while (toupper(*s++) == toupper(*buf))
{
- if (*buf++=='\0') return EXACT;
+ if (*buf++ == '\0')
+ return EXACT;
}
}
}
@@ -139,12 +171,12 @@ static int Compare(const unsigned char *s, const unsigned char *buf,
matches with s. So if only blanks are following, we have a partial
match otherwise there is no match */
SKIP_SPACE(buf);
- if (*buf)
+ if (*buf)
return NOMATCH;
/* If it happens that the reference buffer is at its end, the partial
match is actually an exact match. */
- return ((s[-1]!='\0') ? PARTIAL : EXACT);
+ return ((s[-1] != '\0') ? PARTIAL : EXACT);
}
/*---------------------------------------------------------------------------
@@ -158,27 +190,28 @@ static int Compare(const unsigned char *s, const unsigned char *buf,
| Return Values : TRUE - field is valid
| FALSE - field is invalid
+--------------------------------------------------------------------------*/
-static bool Check_Enum_Field(FIELD * field, const void * argp)
+static bool
+Check_Enum_Field(FIELD *field, const void *argp)
{
- char **kwds = ((const enumARG *)argp)->kwds;
- bool ccase = ((const enumARG *)argp)->checkcase;
- bool unique = ((const enumARG *)argp)->checkunique;
- unsigned char *bp = (unsigned char *)field_buffer(field,0);
+ char **kwds = ((const enumARG *)argp)->kwds;
+ bool ccase = ((const enumARG *)argp)->checkcase;
+ bool unique = ((const enumARG *)argp)->checkunique;
+ unsigned char *bp = (unsigned char *)field_buffer(field, 0);
char *s, *t, *p;
int res;
-
- while( kwds && (s=(*kwds++)) )
+
+ while (kwds && (s = (*kwds++)))
{
- if ((res=Compare((unsigned char *)s,bp,ccase))!=NOMATCH)
+ if ((res = Compare((unsigned char *)s, bp, ccase)) != NOMATCH)
{
- p=t=s; /* t is at least a partial match */
- if ((unique && res!=EXACT))
+ p = t = s; /* t is at least a partial match */
+ if ((unique && res != EXACT))
{
- while( kwds && (p = *kwds++) )
+ while (kwds && (p = *kwds++))
{
- if ((res=Compare((unsigned char *)p,bp,ccase))!=NOMATCH)
+ if ((res = Compare((unsigned char *)p, bp, ccase)) != NOMATCH)
{
- if (res==EXACT)
+ if (res == EXACT)
{
t = p;
break;
@@ -187,10 +220,10 @@ static bool Check_Enum_Field(FIELD * field, const void * argp)
t = (char *)0;
}
}
- }
+ }
if (t)
{
- set_field_buffer(field,0,t);
+ set_field_buffer(field, 0, t);
return TRUE;
}
if (!p)
@@ -200,7 +233,8 @@ static bool Check_Enum_Field(FIELD * field, const void * argp)
return FALSE;
}
-static const char *dummy[] = { (char *)0 };
+static const char *dummy[] =
+{(char *)0};
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -212,28 +246,30 @@ static const char *dummy[] = { (char *)0 };
| Return Values : TRUE - next value found and loaded
| FALSE - no next value loaded
+--------------------------------------------------------------------------*/
-static bool Next_Enum(FIELD * field, const void * argp)
+static bool
+Next_Enum(FIELD *field, const void *argp)
{
const enumARG *args = (const enumARG *)argp;
- char **kwds = args->kwds;
- bool ccase = args->checkcase;
- int cnt = args->count;
- unsigned char *bp = (unsigned char *)field_buffer(field,0);
+ char **kwds = args->kwds;
+ bool ccase = args->checkcase;
+ int cnt = args->count;
+ unsigned char *bp = (unsigned char *)field_buffer(field, 0);
- if (kwds) {
- while(cnt--)
- {
- if (Compare((unsigned char *)(*kwds++),bp,ccase)==EXACT)
- break;
- }
- if (cnt<=0)
- kwds = args->kwds;
- if ((cnt>=0) || (Compare((const unsigned char *)dummy,bp,ccase)==EXACT))
- {
- set_field_buffer(field,0,*kwds);
- return TRUE;
- }
- }
+ if (kwds)
+ {
+ while (cnt--)
+ {
+ if (Compare((unsigned char *)(*kwds++), bp, ccase) == EXACT)
+ break;
+ }
+ if (cnt <= 0)
+ kwds = args->kwds;
+ if ((cnt >= 0) || (Compare((const unsigned char *)dummy, bp, ccase) == EXACT))
+ {
+ set_field_buffer(field, 0, *kwds);
+ return TRUE;
+ }
+ }
return FALSE;
}
@@ -248,37 +284,39 @@ static bool Next_Enum(FIELD * field, const void * argp)
| Return Values : TRUE - previous value found and loaded
| FALSE - no previous value loaded
+--------------------------------------------------------------------------*/
-static bool Previous_Enum(FIELD * field, const void * argp)
+static bool
+Previous_Enum(FIELD *field, const void *argp)
{
const enumARG *args = (const enumARG *)argp;
- int cnt = args->count;
- char **kwds = &args->kwds[cnt-1];
- bool ccase = args->checkcase;
- unsigned char *bp = (unsigned char *)field_buffer(field,0);
+ int cnt = args->count;
+ char **kwds = &args->kwds[cnt - 1];
+ bool ccase = args->checkcase;
+ unsigned char *bp = (unsigned char *)field_buffer(field, 0);
- if (kwds) {
- while(cnt--)
- {
- if (Compare((unsigned char *)(*kwds--),bp,ccase)==EXACT)
- break;
- }
-
- if (cnt<=0)
- kwds = &args->kwds[args->count-1];
-
- if ((cnt>=0) || (Compare((const unsigned char *)dummy,bp,ccase)==EXACT))
- {
- set_field_buffer(field,0,*kwds);
- return TRUE;
- }
- }
+ if (kwds)
+ {
+ while (cnt--)
+ {
+ if (Compare((unsigned char *)(*kwds--), bp, ccase) == EXACT)
+ break;
+ }
+
+ if (cnt <= 0)
+ kwds = &args->kwds[args->count - 1];
+
+ if ((cnt >= 0) || (Compare((const unsigned char *)dummy, bp, ccase) == EXACT))
+ {
+ set_field_buffer(field, 0, *kwds);
+ return TRUE;
+ }
+ }
return FALSE;
}
-
-static FIELDTYPE typeENUM = {
+static FIELDTYPE typeENUM =
+{
_HAS_ARGS | _HAS_CHOICE | _RESIDENT,
- 1, /* this is mutable, so we can't be const */
+ 1, /* this is mutable, so we can't be const */
(FIELDTYPE *)0,
(FIELDTYPE *)0,
Make_Enum_Type,
@@ -290,6 +328,7 @@ static FIELDTYPE typeENUM = {
Previous_Enum
};
-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ENUM = &typeENUM;
+NCURSES_EXPORT_VAR(FIELDTYPE *)
+TYPE_ENUM = &typeENUM;
/* fty_enum.c ends here */
diff --git a/contrib/ncurses/form/fty_int.c b/contrib/ncurses/form/fty_int.c
index 85348d737f25..13fef6272366 100644
--- a/contrib/ncurses/form/fty_int.c
+++ b/contrib/ncurses/form/fty_int.c
@@ -1,63 +1,96 @@
+/****************************************************************************
+ * Copyright (c) 1998-2005,2006 Free Software 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. *
+ ****************************************************************************/
-/*
- * THIS CODE IS SPECIFICALLY EXEMPTED FROM THE NCURSES PACKAGE COPYRIGHT.
- * You may freely copy it for use as a template for your own field types.
- * If you develop a field type that might be of general use, please send
- * it back to the ncurses maintainers for inclusion in the next version.
- */
/***************************************************************************
* *
-* Author : Juergen Pfeifer, juergen.pfeifer@gmx.net *
+* Author : Juergen Pfeifer *
* *
***************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fty_int.c,v 1.11 2000/12/09 23:46:12 tom Exp $")
+MODULE_ID("$Id: fty_int.c,v 1.20 2006/04/22 21:33:05 tom Exp $")
-typedef struct {
- int precision;
- long low;
- long high;
-} integerARG;
+#if USE_WIDEC_SUPPORT
+#define isDigit(c) (iswdigit((wint_t)(c)) || isdigit(UChar(c)))
+#else
+#define isDigit(c) isdigit(UChar(c))
+#endif
+
+#define thisARG integerARG
+
+typedef struct
+ {
+ int precision;
+ long low;
+ long high;
+ }
+thisARG;
/*---------------------------------------------------------------------------
| Facility : libnform
-| Function : static void *Make_Integer_Type( va_list * ap )
+| Function : static void *Make_This_Type( va_list * ap )
|
| Description : Allocate structure for integer type argument.
|
| Return Values : Pointer to argument structure or NULL on error
+--------------------------------------------------------------------------*/
-static void *Make_Integer_Type(va_list * ap)
+static void *
+Make_This_Type(va_list *ap)
{
- integerARG *argp = (integerARG *)malloc(sizeof(integerARG));
+ thisARG *argp = (thisARG *) malloc(sizeof(thisARG));
if (argp)
{
- argp->precision = va_arg(*ap,int);
- argp->low = va_arg(*ap,long);
- argp->high = va_arg(*ap,long);
+ argp->precision = va_arg(*ap, int);
+ argp->low = va_arg(*ap, long);
+ argp->high = va_arg(*ap, long);
}
return (void *)argp;
}
/*---------------------------------------------------------------------------
| Facility : libnform
-| Function : static void *Copy_Integer_Type(const void * argp)
+| Function : static void *Copy_This_Type(const void * argp)
|
| Description : Copy structure for integer type argument.
|
| Return Values : Pointer to argument structure or NULL on error.
+--------------------------------------------------------------------------*/
-static void *Copy_Integer_Type(const void * argp)
+static void *
+Copy_This_Type(const void *argp)
{
- const integerARG *ap = (const integerARG *)argp;
- integerARG *result = (integerARG *)0;
+ const thisARG *ap = (const thisARG *)argp;
+ thisARG *result = (thisARG *) 0;
if (argp)
{
- result = (integerARG *)malloc(sizeof(integerARG));
+ result = (thisARG *) malloc(sizeof(thisARG));
if (result)
*result = *ap;
}
@@ -66,68 +99,115 @@ static void *Copy_Integer_Type(const void * argp)
/*---------------------------------------------------------------------------
| Facility : libnform
-| Function : static void Free_Integer_Type(void * argp)
+| Function : static void Free_This_Type(void * argp)
|
| Description : Free structure for integer type argument.
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Free_Integer_Type(void * argp)
+static void
+Free_This_Type(void *argp)
{
- if (argp)
+ if (argp)
free(argp);
}
/*---------------------------------------------------------------------------
| Facility : libnform
-| Function : static bool Check_Integer_Field(
-| FIELD * field,
-| const void * argp)
+| Function : static bool Check_This_Field(
+| FIELD * field,
+| const void * argp)
|
| Description : Validate buffer content to be a valid integer value
|
| Return Values : TRUE - field is valid
| FALSE - field is invalid
+--------------------------------------------------------------------------*/
-static bool Check_Integer_Field(FIELD * field, const void * argp)
+static bool
+Check_This_Field(FIELD *field, const void *argp)
{
- const integerARG *argi = (const integerARG *)argp;
- long low = argi->low;
- long high = argi->high;
- int prec = argi->precision;
- unsigned char *bp = (unsigned char *)field_buffer(field,0);
- char *s = (char *)bp;
+ const thisARG *argi = (const thisARG *)argp;
+ long low = argi->low;
+ long high = argi->high;
+ int prec = argi->precision;
+ unsigned char *bp = (unsigned char *)field_buffer(field, 0);
+ char *s = (char *)bp;
long val;
char buf[100];
+ bool result = FALSE;
- while( *bp && *bp==' ') bp++;
+ while (*bp && *bp == ' ')
+ bp++;
if (*bp)
{
- if (*bp=='-') bp++;
+ if (*bp == '-')
+ bp++;
+#if USE_WIDEC_SUPPORT
+ if (*bp)
+ {
+ bool blank = FALSE;
+ int len;
+ int n;
+ wchar_t *list = _nc_Widen_String((char *)bp, &len);
+
+ if (list != 0)
+ {
+ result = TRUE;
+ for (n = 0; n < len; ++n)
+ {
+ if (blank)
+ {
+ if (list[n] != ' ')
+ {
+ result = FALSE;
+ break;
+ }
+ }
+ else if (list[n] == ' ')
+ {
+ blank = TRUE;
+ }
+ else if (!isDigit(list[n]))
+ {
+ result = FALSE;
+ break;
+ }
+ }
+ free(list);
+ }
+ }
+#else
while (*bp)
{
- if (!isdigit(*bp)) break;
+ if (!isdigit(UChar(*bp)))
+ break;
bp++;
}
- while(*bp && *bp==' ') bp++;
- if (*bp=='\0')
+ while (*bp && *bp == ' ')
+ bp++;
+ result = (*bp == '\0');
+#endif
+ if (result)
{
val = atol(s);
- if (low<high)
+ if (low < high)
{
- if (val<low || val>high) return FALSE;
+ if (val < low || val > high)
+ result = FALSE;
+ }
+ if (result)
+ {
+ sprintf(buf, "%.*ld", (prec > 0 ? prec : 0), val);
+ set_field_buffer(field, 0, buf);
}
- sprintf(buf,"%.*ld",(prec>0?prec:0),val);
- set_field_buffer(field,0,buf);
- return TRUE;
}
}
- return FALSE;
+ return (result);
}
/*---------------------------------------------------------------------------
| Facility : libnform
-| Function : static bool Check_Integer_Character(
+| Function : static bool Check_This_Character(
| int c,
| const void * argp)
|
@@ -136,25 +216,27 @@ static bool Check_Integer_Field(FIELD * field, const void * argp)
| Return Values : TRUE - character is valid
| FALSE - character is invalid
+--------------------------------------------------------------------------*/
-static bool Check_Integer_Character(int c, const void * argp GCC_UNUSED)
+static bool
+Check_This_Character(int c, const void *argp GCC_UNUSED)
{
- return ((isdigit(c) || (c=='-')) ? TRUE : FALSE);
+ return ((isDigit(UChar(c)) || (c == '-')) ? TRUE : FALSE);
}
-static FIELDTYPE typeINTEGER = {
+static FIELDTYPE typeTHIS =
+{
_HAS_ARGS | _RESIDENT,
- 1, /* this is mutable, so we can't be const */
+ 1, /* this is mutable, so we can't be const */
(FIELDTYPE *)0,
(FIELDTYPE *)0,
- Make_Integer_Type,
- Copy_Integer_Type,
- Free_Integer_Type,
- Check_Integer_Field,
- Check_Integer_Character,
+ Make_This_Type,
+ Copy_This_Type,
+ Free_This_Type,
+ Check_This_Field,
+ Check_This_Character,
NULL,
NULL
};
-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_INTEGER = &typeINTEGER;
+NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_INTEGER = &typeTHIS;
/* fty_int.c ends here */
diff --git a/contrib/ncurses/form/fty_ipv4.c b/contrib/ncurses/form/fty_ipv4.c
index f49dcdb19567..5d1a2098ef94 100644
--- a/contrib/ncurses/form/fty_ipv4.c
+++ b/contrib/ncurses/form/fty_ipv4.c
@@ -1,10 +1,31 @@
+/****************************************************************************
+ * Copyright (c) 1998-2004,2006 Free Software 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. *
+ ****************************************************************************/
-/*
- * THIS CODE IS SPECIFICALLY EXEMPTED FROM THE NCURSES PACKAGE COPYRIGHT.
- * You may freely copy it for use as a template for your own field types.
- * If you develop a field type that might be of general use, please send
- * it back to the ncurses maintainers for inclusion in the next version.
- */
/***************************************************************************
* *
* Author : Per Foreby, perf@efd.lth.se *
@@ -13,7 +34,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fty_ipv4.c,v 1.4 2000/12/09 23:46:12 tom Exp $")
+MODULE_ID("$Id: fty_ipv4.c,v 1.8 2006/12/02 19:33:02 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -26,24 +47,25 @@ MODULE_ID("$Id: fty_ipv4.c,v 1.4 2000/12/09 23:46:12 tom Exp $")
| Return Values : TRUE - field is valid
| FALSE - field is invalid
+--------------------------------------------------------------------------*/
-static bool Check_IPV4_Field(FIELD * field, const void * argp GCC_UNUSED)
+static bool
+Check_IPV4_Field(FIELD *field, const void *argp GCC_UNUSED)
{
- char *bp = field_buffer(field,0);
+ char *bp = field_buffer(field, 0);
int num = 0, len;
unsigned int d1, d2, d3, d4;
- if(isdigit((unsigned char)*bp)) /* Must start with digit */
+ if (isdigit(UChar(*bp))) /* Must start with digit */
{
num = sscanf(bp, "%u.%u.%u.%u%n", &d1, &d2, &d3, &d4, &len);
if (num == 4)
- {
- bp += len; /* Make bp point to what sscanf() left */
- while (*bp && isspace((unsigned char)*bp))
- bp++; /* Allow trailing whitespace */
- }
+ {
+ bp += len; /* Make bp point to what sscanf() left */
+ while (isspace(UChar(*bp)))
+ bp++; /* Allow trailing whitespace */
+ }
}
return ((num != 4 || *bp || d1 > 255 || d2 > 255
- || d3 > 255 || d4 > 255) ? FALSE : TRUE);
+ || d3 > 255 || d4 > 255) ? FALSE : TRUE);
}
/*---------------------------------------------------------------------------
@@ -57,14 +79,16 @@ static bool Check_IPV4_Field(FIELD * field, const void * argp GCC_UNUSED)
| Return Values : TRUE - character is valid
| FALSE - character is invalid
+--------------------------------------------------------------------------*/
-static bool Check_IPV4_Character(int c, const void * argp GCC_UNUSED)
+static bool
+Check_IPV4_Character(int c, const void *argp GCC_UNUSED)
{
- return ((isdigit(c) || (c=='.')) ? TRUE : FALSE);
+ return ((isdigit(UChar(c)) || (c == '.')) ? TRUE : FALSE);
}
-static FIELDTYPE typeIPV4 = {
+static FIELDTYPE typeIPV4 =
+{
_RESIDENT,
- 1, /* this is mutable, so we can't be const */
+ 1, /* this is mutable, so we can't be const */
(FIELDTYPE *)0,
(FIELDTYPE *)0,
NULL,
diff --git a/contrib/ncurses/form/fty_num.c b/contrib/ncurses/form/fty_num.c
index 39659d1d9d2c..cd09dfb001fe 100644
--- a/contrib/ncurses/form/fty_num.c
+++ b/contrib/ncurses/form/fty_num.c
@@ -1,195 +1,286 @@
+/****************************************************************************
+ * Copyright (c) 1998-2005,2006 Free Software 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. *
+ ****************************************************************************/
-/*
- * THIS CODE IS SPECIFICALLY EXEMPTED FROM THE NCURSES PACKAGE COPYRIGHT.
- * You may freely copy it for use as a template for your own field types.
- * If you develop a field type that might be of general use, please send
- * it back to the ncurses maintainers for inclusion in the next version.
- */
/***************************************************************************
* *
-* Author : Juergen Pfeifer, juergen.pfeifer@gmx.net *
+* Author : Juergen Pfeifer *
* *
***************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fty_num.c,v 1.14 2000/12/09 23:46:12 tom Exp $")
+MODULE_ID("$Id: fty_num.c,v 1.23 2006/04/22 21:33:05 tom Exp $")
#if HAVE_LOCALE_H
#include <locale.h>
#endif
-typedef struct {
- int precision;
- double low;
- double high;
- struct lconv* L;
-} numericARG;
+#if HAVE_LOCALE_H
+#define isDecimalPoint(c) ((c) == ((L && L->decimal_point) ? *(L->decimal_point) : '.'))
+#else
+#define isDecimalPoint(c) ((c) == '.')
+#endif
+
+#if USE_WIDEC_SUPPORT
+#define isDigit(c) (iswdigit((wint_t)(c)) || isdigit(UChar(c)))
+#else
+#define isDigit(c) isdigit(UChar(c))
+#endif
+
+#define thisARG numericARG
+
+typedef struct
+ {
+ int precision;
+ double low;
+ double high;
+ struct lconv *L;
+ }
+thisARG;
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static void *Make_Numeric_Type(va_list * ap)
-|
+| Facility : libnform
+| Function : static void *Make_This_Type(va_list * ap)
+|
| Description : Allocate structure for numeric type argument.
|
| Return Values : Pointer to argument structure or NULL on error
+--------------------------------------------------------------------------*/
-static void *Make_Numeric_Type(va_list * ap)
+static void *
+Make_This_Type(va_list *ap)
{
- numericARG *argn = (numericARG *)malloc(sizeof(numericARG));
+ thisARG *argn = (thisARG *) malloc(sizeof(thisARG));
if (argn)
{
- argn->precision = va_arg(*ap,int);
- argn->low = va_arg(*ap,double);
- argn->high = va_arg(*ap,double);
+ argn->precision = va_arg(*ap, int);
+ argn->low = va_arg(*ap, double);
+ argn->high = va_arg(*ap, double);
+
#if HAVE_LOCALE_H
- argn->L = localeconv();
+ argn->L = localeconv();
#else
- argn->L = NULL;
+ argn->L = NULL;
#endif
}
return (void *)argn;
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static void *Copy_Numeric_Type(const void * argp)
-|
-| Description : Copy structure for numeric type argument.
+| Facility : libnform
+| Function : static void *Copy_This_Type(const void * argp)
+|
+| Description : Copy structure for numeric type argument.
|
| Return Values : Pointer to argument structure or NULL on error.
+--------------------------------------------------------------------------*/
-static void *Copy_Numeric_Type(const void * argp)
+static void *
+Copy_This_Type(const void *argp)
{
- const numericARG *ap = (const numericARG *)argp;
- numericARG *result = (numericARG *)0;
+ const thisARG *ap = (const thisARG *)argp;
+ thisARG *result = (thisARG *) 0;
if (argp)
{
- result = (numericARG *)malloc(sizeof(numericARG));
+ result = (thisARG *) malloc(sizeof(thisARG));
if (result)
- *result = *ap;
+ *result = *ap;
}
return (void *)result;
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static void Free_Numeric_Type(void * argp)
-|
+| Facility : libnform
+| Function : static void Free_This_Type(void * argp)
+|
| Description : Free structure for numeric type argument.
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Free_Numeric_Type(void * argp)
+static void
+Free_This_Type(void *argp)
{
- if (argp)
+ if (argp)
free(argp);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static bool Check_Numeric_Field(FIELD * field,
-| const void * argp)
-|
+| Facility : libnform
+| Function : static bool Check_This_Field(FIELD * field,
+| const void * argp)
+|
| Description : Validate buffer content to be a valid numeric value
|
| Return Values : TRUE - field is valid
| FALSE - field is invalid
+--------------------------------------------------------------------------*/
-static bool Check_Numeric_Field(FIELD * field, const void * argp)
+static bool
+Check_This_Field(FIELD *field, const void *argp)
{
- const numericARG *argn = (const numericARG *)argp;
- double low = argn->low;
- double high = argn->high;
- int prec = argn->precision;
- unsigned char *bp = (unsigned char *)field_buffer(field,0);
- char *s = (char *)bp;
- double val = 0.0;
- struct lconv* L = argn->L;
+ const thisARG *argn = (const thisARG *)argp;
+ double low = argn->low;
+ double high = argn->high;
+ int prec = argn->precision;
+ unsigned char *bp = (unsigned char *)field_buffer(field, 0);
+ char *s = (char *)bp;
+ double val = 0.0;
+ struct lconv *L = argn->L;
char buf[64];
+ bool result = FALSE;
- while(*bp && *bp==' ') bp++;
+ while (*bp && *bp == ' ')
+ bp++;
if (*bp)
{
- if (*bp=='-' || *bp=='+')
+ if (*bp == '-' || *bp == '+')
bp++;
- while(*bp)
+#if USE_WIDEC_SUPPORT
+ if (*bp)
{
- if (!isdigit(*bp)) break;
+ bool blank = FALSE;
+ int state = 0;
+ int len;
+ int n;
+ wchar_t *list = _nc_Widen_String((char *)bp, &len);
+
+ if (list != 0)
+ {
+ result = TRUE;
+ for (n = 0; n < len; ++n)
+ {
+ if (blank)
+ {
+ if (list[n] != ' ')
+ {
+ result = FALSE;
+ break;
+ }
+ }
+ else if (list[n] == ' ')
+ {
+ blank = TRUE;
+ }
+ else if (isDecimalPoint(list[n]))
+ {
+ if (++state > 1)
+ {
+ result = FALSE;
+ break;
+ }
+ }
+ else if (!isDigit(list[n]))
+ {
+ result = FALSE;
+ break;
+ }
+ }
+ free(list);
+ }
+ }
+#else
+ while (*bp)
+ {
+ if (!isdigit(UChar(*bp)))
+ break;
bp++;
}
- if (*bp==(
-#if HAVE_LOCALE_H
- (L && L->decimal_point) ? *(L->decimal_point) :
-#endif
- '.'))
+ if (isDecimalPoint(*bp))
{
bp++;
- while(*bp)
+ while (*bp)
{
- if (!isdigit(*bp)) break;
+ if (!isdigit(UChar(*bp)))
+ break;
bp++;
}
}
- while(*bp && *bp==' ') bp++;
- if (*bp=='\0')
+ while (*bp && *bp == ' ')
+ bp++;
+ result = (*bp == '\0');
+#endif
+ if (result)
{
val = atof(s);
- if (low<high)
+ if (low < high)
+ {
+ if (val < low || val > high)
+ result = FALSE;
+ }
+ if (result)
{
- if (val<low || val>high) return FALSE;
+ sprintf(buf, "%.*f", (prec > 0 ? prec : 0), val);
+ set_field_buffer(field, 0, buf);
}
- sprintf(buf,"%.*f",(prec>0?prec:0),val);
- set_field_buffer(field,0,buf);
- return TRUE;
}
}
- return FALSE;
+ return (result);
}
/*---------------------------------------------------------------------------
-| Facility : libnform
-| Function : static bool Check_Numeric_Character(
+| Facility : libnform
+| Function : static bool Check_This_Character(
| int c,
| const void * argp)
-|
+|
| Description : Check a character for the numeric type.
|
| Return Values : TRUE - character is valid
| FALSE - character is invalid
+--------------------------------------------------------------------------*/
-static bool Check_Numeric_Character(int c, const void * argp)
+static bool
+Check_This_Character(int c, const void *argp)
{
- const numericARG *argn = (const numericARG *)argp;
- struct lconv* L = argn->L;
+ const thisARG *argn = (const thisARG *)argp;
+ struct lconv *L = argn->L;
- return (isdigit(c) ||
- c == '+' ||
- c == '-' ||
- c == (
-#if HAVE_LOCALE_H
- (L && L->decimal_point) ? *(L->decimal_point) :
-#endif
- '.')
- ) ? TRUE : FALSE;
+ return ((isDigit(c) ||
+ c == '+' ||
+ c == '-' ||
+ isDecimalPoint(c))
+ ? TRUE
+ : FALSE);
}
-static FIELDTYPE typeNUMERIC = {
+static FIELDTYPE typeTHIS =
+{
_HAS_ARGS | _RESIDENT,
- 1, /* this is mutable, so we can't be const */
+ 1, /* this is mutable, so we can't be const */
(FIELDTYPE *)0,
(FIELDTYPE *)0,
- Make_Numeric_Type,
- Copy_Numeric_Type,
- Free_Numeric_Type,
- Check_Numeric_Field,
- Check_Numeric_Character,
+ Make_This_Type,
+ Copy_This_Type,
+ Free_This_Type,
+ Check_This_Field,
+ Check_This_Character,
NULL,
NULL
};
-NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_NUMERIC = &typeNUMERIC;
+NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_NUMERIC = &typeTHIS;
/* fty_num.c ends here */
diff --git a/contrib/ncurses/form/fty_regex.c b/contrib/ncurses/form/fty_regex.c
index b575487173a9..087ff11ec30c 100644
--- a/contrib/ncurses/form/fty_regex.c
+++ b/contrib/ncurses/form/fty_regex.c
@@ -1,43 +1,67 @@
+/****************************************************************************
+ * Copyright (c) 1998-2004,2006 Free Software 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. *
+ ****************************************************************************/
-/*
- * THIS CODE IS SPECIFICALLY EXEMPTED FROM THE NCURSES PACKAGE COPYRIGHT.
- * You may freely copy it for use as a template for your own field types.
- * If you develop a field type that might be of general use, please send
- * it back to the ncurses maintainers for inclusion in the next version.
- */
/***************************************************************************
* *
-* Author : Juergen Pfeifer, juergen.pfeifer@gmx.net *
+* Author : Juergen Pfeifer *
* *
***************************************************************************/
#include "form.priv.h"
-MODULE_ID("$Id: fty_regex.c,v 1.15 2000/12/09 23:46:12 tom Exp $")
+MODULE_ID("$Id: fty_regex.c,v 1.19 2006/04/22 21:33:05 tom Exp $")
-#if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */
+#if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */
#include <regex.h>
typedef struct
-{
- regex_t *pRegExp;
- unsigned long *refCount;
-} RegExp_Arg;
+ {
+ regex_t *pRegExp;
+ unsigned long *refCount;
+ }
+RegExp_Arg;
#elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS
#undef RETURN
static int reg_errno;
-static char *RegEx_Init(char *instring)
+static char *
+RegEx_Init(char *instring)
{
- reg_errno = 0;
- return instring;
+ reg_errno = 0;
+ return instring;
}
-static char *RegEx_Error(int code)
+static char *
+RegEx_Error(int code)
{
- reg_errno = code;
- return 0;
+ reg_errno = code;
+ return 0;
}
#define INIT register char *sp = RegEx_Init(instring);
@@ -57,7 +81,8 @@ typedef struct
{
char *compiled_expression;
unsigned long *refCount;
-} RegExp_Arg;
+}
+RegExp_Arg;
/* Maximum Length we allow for a compiled regular expression */
#define MAX_RX_LEN (2048)
@@ -73,20 +98,23 @@ typedef struct
|
| Return Values : Pointer to argument structure or NULL on error
+--------------------------------------------------------------------------*/
-static void *Make_RegularExpression_Type(va_list * ap)
+static void *
+Make_RegularExpression_Type(va_list *ap)
{
#if HAVE_REGEX_H_FUNCS
- char *rx = va_arg(*ap,char *);
+ char *rx = va_arg(*ap, char *);
RegExp_Arg *preg;
- preg = (RegExp_Arg*)malloc(sizeof(RegExp_Arg));
+ preg = (RegExp_Arg *)malloc(sizeof(RegExp_Arg));
+
if (preg)
{
- if (((preg->pRegExp = (regex_t*)malloc(sizeof(regex_t))) != (regex_t*)0)
- && !regcomp(preg->pRegExp,rx,
- (REG_EXTENDED | REG_NOSUB | REG_NEWLINE) ))
+ if (((preg->pRegExp = (regex_t *) malloc(sizeof(regex_t))) != 0)
+ && !regcomp(preg->pRegExp, rx,
+ (REG_EXTENDED | REG_NOSUB | REG_NEWLINE)))
{
preg->refCount = (unsigned long *)malloc(sizeof(unsigned long));
+
*(preg->refCount) = 1;
}
else
@@ -94,12 +122,12 @@ static void *Make_RegularExpression_Type(va_list * ap)
if (preg->pRegExp)
free(preg->pRegExp);
free(preg);
- preg = (RegExp_Arg*)0;
+ preg = (RegExp_Arg *)0;
}
}
- return((void *)preg);
+ return ((void *)preg);
#elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS
- char *rx = va_arg(*ap,char *);
+ char *rx = va_arg(*ap, char *);
RegExp_Arg *pArg;
pArg = (RegExp_Arg *)malloc(sizeof(RegExp_Arg));
@@ -107,38 +135,44 @@ static void *Make_RegularExpression_Type(va_list * ap)
if (pArg)
{
int blen = RX_INCREMENT;
+
pArg->compiled_expression = NULL;
pArg->refCount = (unsigned long *)malloc(sizeof(unsigned long));
+
*(pArg->refCount) = 1;
- do {
- char *buf = (char *)malloc(blen);
- if (buf)
- {
+ do
+ {
+ char *buf = (char *)malloc(blen);
+
+ if (buf)
+ {
#if HAVE_REGEXP_H_FUNCS
- char *last_pos = compile (rx, buf, &buf[blen], '\0');
+ char *last_pos = compile(rx, buf, &buf[blen], '\0');
+
#else /* HAVE_REGEXPR_H_FUNCS */
- char *last_pos = compile (rx, buf, &buf[blen]);
+ char *last_pos = compile(rx, buf, &buf[blen]);
#endif
- if (reg_errno)
- {
- free(buf);
- if (reg_errno==50)
- blen += RX_INCREMENT;
- else
- {
- free(pArg);
- pArg = NULL;
- break;
- }
- }
- else
- {
- pArg->compiled_expression = buf;
- break;
- }
- }
- } while( blen <= MAX_RX_LEN );
+ if (reg_errno)
+ {
+ free(buf);
+ if (reg_errno == 50)
+ blen += RX_INCREMENT;
+ else
+ {
+ free(pArg);
+ pArg = NULL;
+ break;
+ }
+ }
+ else
+ {
+ pArg->compiled_expression = buf;
+ break;
+ }
+ }
+ }
+ while (blen <= MAX_RX_LEN);
}
if (pArg && !pArg->compiled_expression)
{
@@ -160,7 +194,8 @@ static void *Make_RegularExpression_Type(va_list * ap)
|
| Return Values : Pointer to argument structure or NULL on error.
+--------------------------------------------------------------------------*/
-static void *Copy_RegularExpression_Type(const void * argp)
+static void *
+Copy_RegularExpression_Type(const void *argp)
{
#if (HAVE_REGEX_H_FUNCS | HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS)
const RegExp_Arg *ap = (const RegExp_Arg *)argp;
@@ -185,10 +220,12 @@ static void *Copy_RegularExpression_Type(const void * argp)
|
| Return Values : -
+--------------------------------------------------------------------------*/
-static void Free_RegularExpression_Type(void * argp)
+static void
+Free_RegularExpression_Type(void *argp)
{
#if HAVE_REGEX_H_FUNCS | HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS
RegExp_Arg *ap = (RegExp_Arg *)argp;
+
if (ap)
{
if (--(*(ap->refCount)) == 0)
@@ -223,24 +260,33 @@ static void Free_RegularExpression_Type(void * argp)
| Return Values : TRUE - field is valid
| FALSE - field is invalid
+--------------------------------------------------------------------------*/
-static bool Check_RegularExpression_Field(FIELD * field, const void * argp)
+static bool
+Check_RegularExpression_Field(FIELD *field, const void *argp)
{
bool match = FALSE;
+
#if HAVE_REGEX_H_FUNCS
- const RegExp_Arg *ap = (const RegExp_Arg*)argp;
+ const RegExp_Arg *ap = (const RegExp_Arg *)argp;
+
if (ap && ap->pRegExp)
- match = (regexec(ap->pRegExp,field_buffer(field,0),0,NULL,0) ? FALSE:TRUE);
+ match = (regexec(ap->pRegExp, field_buffer(field, 0), 0, NULL, 0)
+ ? FALSE
+ : TRUE);
#elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS
RegExp_Arg *ap = (RegExp_Arg *)argp;
+
if (ap && ap->compiled_expression)
- match = (step(field_buffer(field,0),ap->compiled_expression) ? TRUE:FALSE);
+ match = (step(field_buffer(field, 0), ap->compiled_expression)
+ ? TRUE
+ : FALSE);
#endif
return match;
}
-static FIELDTYPE typeREGEXP = {
+static FIELDTYPE typeREGEXP =
+{
_HAS_ARGS | _RESIDENT,
- 1, /* this is mutable, so we can't be const */
+ 1, /* this is mutable, so we can't be const */
(FIELDTYPE *)0,
(FIELDTYPE *)0,
Make_RegularExpression_Type,
diff --git a/contrib/ncurses/form/llib-lform b/contrib/ncurses/form/llib-lform
index ac2ba436d666..bd7c3a4f1d87 100644
--- a/contrib/ncurses/form/llib-lform
+++ b/contrib/ncurses/form/llib-lform
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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 *
@@ -27,14 +27,41 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 *
+ * Author: Thomas E. Dickey 1996,1997,2002,2005 *
****************************************************************************/
/* LINTLIBRARY */
-/* ./fld_arg.c */
+/* ./f_trace.c */
#include "form.priv.h"
+#undef _nc_retrace_field_ptr
+FIELD **_nc_retrace_field_ptr(
+ FIELD **code)
+ { return(*(FIELD ***)0); }
+
+#undef _nc_retrace_field
+FIELD *_nc_retrace_field(
+ FIELD *code)
+ { return(*(FIELD **)0); }
+
+#undef _nc_retrace_field_type
+FIELDTYPE *_nc_retrace_field_type(
+ FIELDTYPE *code)
+ { return(*(FIELDTYPE **)0); }
+
+#undef _nc_retrace_form
+FORM *_nc_retrace_form(
+ FORM *code)
+ { return(*(FORM **)0); }
+
+#undef _nc_retrace_form_hook
+Form_Hook _nc_retrace_form_hook(
+ Form_Hook code)
+ { return(*(Form_Hook *)0); }
+
+/* ./fld_arg.c */
+
#undef set_fieldtype_arg
int set_fieldtype_arg(
FIELDTYPE *typ,
@@ -119,10 +146,10 @@ void _nc_Free_Argument(
{ /* void */ }
#undef _nc_Copy_Type
-bool _nc_Copy_Type(
+NCURSES_BOOL _nc_Copy_Type(
FIELD *dst,
FIELD const *src)
- { return(*(bool *)0); }
+ { return(*(NCURSES_BOOL *)0); }
#undef _nc_Free_Type
void _nc_Free_Type(
@@ -158,10 +185,10 @@ FIELD *dup_field(
#undef set_fieldtype_choice
int set_fieldtype_choice(
FIELDTYPE *typ,
- bool (*const next_choice)(
+ NCURSES_BOOL (*const next_choice)(
FIELD *p1,
const void *p2),
- bool (*const prev_choice)(
+ NCURSES_BOOL (*const prev_choice)(
FIELD *p1,
const void *p2))
{ return(*(int *)0); }
@@ -241,10 +268,10 @@ const FIELDTYPE *_nc_Default_FieldType = {0};
#undef new_fieldtype
FIELDTYPE *new_fieldtype(
- bool (*const field_check)(
+ NCURSES_BOOL (*const field_check)(
FIELD *p1,
const void *p2),
- bool (*const char_check)(
+ NCURSES_BOOL (*const char_check)(
int p1,
const void *p2))
{ return(*(FIELDTYPE **)0); }
@@ -297,26 +324,26 @@ int field_pad(
#undef set_new_page
int set_new_page(
FIELD *field,
- bool new_page_flag)
+ NCURSES_BOOL new_page_flag)
{ return(*(int *)0); }
#undef new_page
-bool new_page(
+NCURSES_BOOL new_page(
const FIELD *field)
- { return(*(bool *)0); }
+ { return(*(NCURSES_BOOL *)0); }
/* ./fld_stat.c */
#undef set_field_status
int set_field_status(
FIELD *field,
- bool status)
+ NCURSES_BOOL status)
{ return(*(int *)0); }
#undef field_status
-bool field_status(
+NCURSES_BOOL field_status(
const FIELD *field)
- { return(*(bool *)0); }
+ { return(*(NCURSES_BOOL *)0); }
/* ./fld_type.c */
@@ -355,14 +382,14 @@ int pos_form_cursor(
/* ./frm_data.c */
#undef data_behind
-bool data_behind(
+NCURSES_BOOL data_behind(
const FORM *form)
- { return(*(bool *)0); }
+ { return(*(NCURSES_BOOL *)0); }
#undef data_ahead
-bool data_ahead(
+NCURSES_BOOL data_ahead(
const FORM *form)
- { return(*(bool *)0); }
+ { return(*(NCURSES_BOOL *)0); }
/* ./frm_def.c */
@@ -425,9 +452,9 @@ int _nc_Set_Current_Field(
{ return(*(int *)0); }
#undef _nc_Internal_Validation
-bool _nc_Internal_Validation(
+NCURSES_BOOL _nc_Internal_Validation(
FORM *form)
- { return(*(bool *)0); }
+ { return(*(NCURSES_BOOL *)0); }
#undef _nc_First_Active_Field
FIELD *_nc_First_Active_Field(
@@ -441,10 +468,12 @@ int _nc_Set_Form_Page(
FIELD *field)
{ return(*(int *)0); }
-typedef struct {
- int keycode;
- int (*cmd)(FORM *);
-} Binding_Info;
+typedef struct
+{
+ int keycode;
+ int (*cmd) (FORM *);
+}
+Binding_Info;
#undef form_driver
int form_driver(
@@ -623,41 +652,49 @@ WINDOW *form_win(
/* ./fty_alnum.c */
-typedef struct {
- int width;
-} alnumARG;
+typedef struct
+ {
+ int width;
+ }
+alnumARG;
#undef TYPE_ALNUM
FIELDTYPE *TYPE_ALNUM;
/* ./fty_alpha.c */
-typedef struct {
- int width;
-} alphaARG;
+typedef struct
+ {
+ int width;
+ }
+alphaARG;
#undef TYPE_ALPHA
FIELDTYPE *TYPE_ALPHA;
/* ./fty_enum.c */
-typedef struct {
- char **kwds;
- int count;
- bool checkcase;
- bool checkunique;
-} enumARG;
+typedef struct
+ {
+ char **kwds;
+ int count;
+ NCURSES_BOOL checkcase;
+ NCURSES_BOOL checkunique;
+ }
+enumARG;
#undef TYPE_ENUM
FIELDTYPE *TYPE_ENUM;
/* ./fty_int.c */
-typedef struct {
- int precision;
- long low;
- long high;
-} integerARG;
+typedef struct
+ {
+ int precision;
+ long low;
+ long high;
+ }
+integerARG;
#undef TYPE_INTEGER
FIELDTYPE *TYPE_INTEGER;
@@ -670,12 +707,14 @@ FIELDTYPE *TYPE_IPV4;
#include <locale.h>
-typedef struct {
- int precision;
- double low;
- double high;
- struct lconv* L;
-} numericARG;
+typedef struct
+ {
+ int precision;
+ double low;
+ double high;
+ struct lconv *L;
+ }
+numericARG;
#undef TYPE_NUMERIC
FIELDTYPE *TYPE_NUMERIC;
@@ -685,10 +724,11 @@ FIELDTYPE *TYPE_NUMERIC;
#include <regex.h>
typedef struct
-{
- regex_t *pRegExp;
- unsigned long *refCount;
-} RegExp_Arg;
+ {
+ regex_t *pRegExp;
+ unsigned long *refCount;
+ }
+RegExp_Arg;
#undef TYPE_REGEXP
FIELDTYPE *TYPE_REGEXP;
diff --git a/contrib/ncurses/form/llib-lformw b/contrib/ncurses/form/llib-lformw
new file mode 100644
index 000000000000..7690c5b0bd88
--- /dev/null
+++ b/contrib/ncurses/form/llib-lformw
@@ -0,0 +1,740 @@
+/****************************************************************************
+ * Copyright (c) 2002,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 *
+ * "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 2002,2005 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./f_trace.c */
+
+#include "form.priv.h"
+
+#undef _nc_retrace_field_ptr
+FIELD **_nc_retrace_field_ptr(
+ FIELD **code)
+ { return(*(FIELD ***)0); }
+
+#undef _nc_retrace_field
+FIELD *_nc_retrace_field(
+ FIELD *code)
+ { return(*(FIELD **)0); }
+
+#undef _nc_retrace_field_type
+FIELDTYPE *_nc_retrace_field_type(
+ FIELDTYPE *code)
+ { return(*(FIELDTYPE **)0); }
+
+#undef _nc_retrace_form
+FORM *_nc_retrace_form(
+ FORM *code)
+ { return(*(FORM **)0); }
+
+#undef _nc_retrace_form_hook
+Form_Hook _nc_retrace_form_hook(
+ Form_Hook code)
+ { return(*(Form_Hook *)0); }
+
+/* ./fld_arg.c */
+
+#undef set_fieldtype_arg
+int set_fieldtype_arg(
+ FIELDTYPE *typ,
+ void *(*const make_arg)(
+ va_list *p1),
+ void *(*const copy_arg)(
+ const void *p1),
+ void (*const free_arg)(
+ void *p1))
+ { return(*(int *)0); }
+
+#undef field_arg
+void *field_arg(
+ const FIELD *field)
+ { return(*(void **)0); }
+
+/* ./fld_attr.c */
+
+#undef set_field_fore
+int set_field_fore(
+ FIELD *field,
+ chtype attr)
+ { return(*(int *)0); }
+
+#undef field_fore
+chtype field_fore(
+ const FIELD *field)
+ { return(*(chtype *)0); }
+
+#undef set_field_back
+int set_field_back(
+ FIELD *field,
+ chtype attr)
+ { return(*(int *)0); }
+
+#undef field_back
+chtype field_back(
+ const FIELD *field)
+ { return(*(chtype *)0); }
+
+/* ./fld_current.c */
+
+#undef set_current_field
+int set_current_field(
+ FORM *form,
+ FIELD *field)
+ { return(*(int *)0); }
+
+#undef current_field
+FIELD *current_field(
+ const FORM *form)
+ { return(*(FIELD **)0); }
+
+#undef field_index
+int field_index(
+ const FIELD *field)
+ { return(*(int *)0); }
+
+/* ./fld_def.c */
+
+#undef _nc_Default_Field
+FIELD *_nc_Default_Field;
+
+#undef _nc_Make_Argument
+TypeArgument *_nc_Make_Argument(
+ const FIELDTYPE *typ,
+ va_list *ap,
+ int *err)
+ { return(*(TypeArgument **)0); }
+
+#undef _nc_Copy_Argument
+TypeArgument *_nc_Copy_Argument(
+ const FIELDTYPE *typ,
+ const TypeArgument *argp,
+ int *err)
+ { return(*(TypeArgument **)0); }
+
+#undef _nc_Free_Argument
+void _nc_Free_Argument(
+ const FIELDTYPE *typ,
+ TypeArgument *argp)
+ { /* void */ }
+
+#undef _nc_Copy_Type
+NCURSES_BOOL _nc_Copy_Type(
+ FIELD *dst,
+ FIELD const *src)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_Free_Type
+void _nc_Free_Type(
+ FIELD *field)
+ { /* void */ }
+
+#undef new_field
+FIELD *new_field(
+ int rows,
+ int cols,
+ int frow,
+ int fcol,
+ int nrow,
+ int nbuf)
+ { return(*(FIELD **)0); }
+
+#undef free_field
+int free_field(
+ FIELD *field)
+ { return(*(int *)0); }
+
+/* ./fld_dup.c */
+
+#undef dup_field
+FIELD *dup_field(
+ FIELD *field,
+ int frow,
+ int fcol)
+ { return(*(FIELD **)0); }
+
+/* ./fld_ftchoice.c */
+
+#undef set_fieldtype_choice
+int set_fieldtype_choice(
+ FIELDTYPE *typ,
+ NCURSES_BOOL (*const next_choice)(
+ FIELD *p1,
+ const void *p2),
+ NCURSES_BOOL (*const prev_choice)(
+ FIELD *p1,
+ const void *p2))
+ { return(*(int *)0); }
+
+/* ./fld_ftlink.c */
+
+#undef link_fieldtype
+FIELDTYPE *link_fieldtype(
+ FIELDTYPE *type1,
+ FIELDTYPE *type2)
+ { return(*(FIELDTYPE **)0); }
+
+/* ./fld_info.c */
+
+#undef field_info
+int field_info(
+ const FIELD *field,
+ int *rows,
+ int *cols,
+ int *frow,
+ int *fcol,
+ int *nrow,
+ int *nbuf)
+ { return(*(int *)0); }
+
+#undef dynamic_field_info
+int dynamic_field_info(
+ const FIELD *field,
+ int *drows,
+ int *dcols,
+ int *maxgrow)
+ { return(*(int *)0); }
+
+/* ./fld_just.c */
+
+#undef set_field_just
+int set_field_just(
+ FIELD *field,
+ int just)
+ { return(*(int *)0); }
+
+#undef field_just
+int field_just(
+ const FIELD *field)
+ { return(*(int *)0); }
+
+/* ./fld_link.c */
+
+#undef link_field
+FIELD *link_field(
+ FIELD *field,
+ int frow,
+ int fcol)
+ { return(*(FIELD **)0); }
+
+/* ./fld_max.c */
+
+#undef set_max_field
+int set_max_field(
+ FIELD *field,
+ int maxgrow)
+ { return(*(int *)0); }
+
+/* ./fld_move.c */
+
+#undef move_field
+int move_field(
+ FIELD *field,
+ int frow,
+ int fcol)
+ { return(*(int *)0); }
+
+/* ./fld_newftyp.c */
+
+#undef _nc_Default_FieldType
+const FIELDTYPE *_nc_Default_FieldType = {0};
+
+#undef new_fieldtype
+FIELDTYPE *new_fieldtype(
+ NCURSES_BOOL (*const field_check)(
+ FIELD *p1,
+ const void *p2),
+ NCURSES_BOOL (*const char_check)(
+ int p1,
+ const void *p2))
+ { return(*(FIELDTYPE **)0); }
+
+#undef free_fieldtype
+int free_fieldtype(
+ FIELDTYPE *typ)
+ { return(*(int *)0); }
+
+/* ./fld_opts.c */
+
+#undef set_field_opts
+int set_field_opts(
+ FIELD *field,
+ Field_Options opts)
+ { return(*(int *)0); }
+
+#undef field_opts
+Field_Options field_opts(
+ const FIELD *field)
+ { return(*(Field_Options *)0); }
+
+#undef field_opts_on
+int field_opts_on(
+ FIELD *field,
+ Field_Options opts)
+ { return(*(int *)0); }
+
+#undef field_opts_off
+int field_opts_off(
+ FIELD *field,
+ Field_Options opts)
+ { return(*(int *)0); }
+
+/* ./fld_pad.c */
+
+#undef set_field_pad
+int set_field_pad(
+ FIELD *field,
+ int ch)
+ { return(*(int *)0); }
+
+#undef field_pad
+int field_pad(
+ const FIELD *field)
+ { return(*(int *)0); }
+
+/* ./fld_page.c */
+
+#undef set_new_page
+int set_new_page(
+ FIELD *field,
+ NCURSES_BOOL new_page_flag)
+ { return(*(int *)0); }
+
+#undef new_page
+NCURSES_BOOL new_page(
+ const FIELD *field)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./fld_stat.c */
+
+#undef set_field_status
+int set_field_status(
+ FIELD *field,
+ NCURSES_BOOL status)
+ { return(*(int *)0); }
+
+#undef field_status
+NCURSES_BOOL field_status(
+ const FIELD *field)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./fld_type.c */
+
+#undef set_field_type
+int set_field_type(
+ FIELD *field,
+ FIELDTYPE *type,
+ ...)
+ { return(*(int *)0); }
+
+#undef field_type
+FIELDTYPE *field_type(
+ const FIELD *field)
+ { return(*(FIELDTYPE **)0); }
+
+/* ./fld_user.c */
+
+#undef set_field_userptr
+int set_field_userptr(
+ FIELD *field,
+ void *usrptr)
+ { return(*(int *)0); }
+
+#undef field_userptr
+void *field_userptr(
+ const FIELD *field)
+ { return(*(void **)0); }
+
+/* ./frm_cursor.c */
+
+#undef pos_form_cursor
+int pos_form_cursor(
+ FORM *form)
+ { return(*(int *)0); }
+
+/* ./frm_data.c */
+
+#undef data_behind
+NCURSES_BOOL data_behind(
+ const FORM *form)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef data_ahead
+NCURSES_BOOL data_ahead(
+ const FORM *form)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./frm_def.c */
+
+#undef _nc_Default_Form
+FORM *_nc_Default_Form;
+
+#undef new_form
+FORM *new_form(
+ FIELD **fields)
+ { return(*(FORM **)0); }
+
+#undef free_form
+int free_form(
+ FORM *form)
+ { return(*(int *)0); }
+
+#undef set_form_fields
+int set_form_fields(
+ FORM *form,
+ FIELD **fields)
+ { return(*(int *)0); }
+
+#undef form_fields
+FIELD **form_fields(
+ const FORM *form)
+ { return(*(FIELD ***)0); }
+
+#undef field_count
+int field_count(
+ const FORM *form)
+ { return(*(int *)0); }
+
+/* ./frm_driver.c */
+
+#undef _nc_Position_Form_Cursor
+int _nc_Position_Form_Cursor(
+ FORM *form)
+ { return(*(int *)0); }
+
+#undef _nc_Refresh_Current_Field
+int _nc_Refresh_Current_Field(
+ FORM *form)
+ { return(*(int *)0); }
+
+#undef _nc_Synchronize_Attributes
+int _nc_Synchronize_Attributes(
+ FIELD *field)
+ { return(*(int *)0); }
+
+#undef _nc_Synchronize_Options
+int _nc_Synchronize_Options(
+ FIELD *field,
+ Field_Options newopts)
+ { return(*(int *)0); }
+
+#undef _nc_Set_Current_Field
+int _nc_Set_Current_Field(
+ FORM *form,
+ FIELD *newfield)
+ { return(*(int *)0); }
+
+#undef _nc_Internal_Validation
+NCURSES_BOOL _nc_Internal_Validation(
+ FORM *form)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_First_Active_Field
+FIELD *_nc_First_Active_Field(
+ FORM *form)
+ { return(*(FIELD **)0); }
+
+#undef _nc_Set_Form_Page
+int _nc_Set_Form_Page(
+ FORM *form,
+ int page,
+ FIELD *field)
+ { return(*(int *)0); }
+
+typedef struct
+{
+ int keycode;
+ int (*cmd) (FORM *);
+}
+Binding_Info;
+
+#undef form_driver
+int form_driver(
+ FORM *form,
+ int c)
+ { return(*(int *)0); }
+
+#undef set_field_buffer
+int set_field_buffer(
+ FIELD *field,
+ int buffer,
+ const char *value)
+ { return(*(int *)0); }
+
+#undef field_buffer
+char *field_buffer(
+ const FIELD *field,
+ int buffer)
+ { return(*(char **)0); }
+
+#undef _nc_Widen_String
+wchar_t *_nc_Widen_String(
+ char *source,
+ int *lengthp)
+ { return(*(wchar_t **)0); }
+
+/* ./frm_hook.c */
+
+#undef set_field_init
+int set_field_init(
+ FORM *form,
+ Form_Hook func)
+ { return(*(int *)0); }
+
+#undef field_init
+Form_Hook field_init(
+ const FORM *form)
+ { return(*(Form_Hook *)0); }
+
+#undef set_field_term
+int set_field_term(
+ FORM *form,
+ Form_Hook func)
+ { return(*(int *)0); }
+
+#undef field_term
+Form_Hook field_term(
+ const FORM *form)
+ { return(*(Form_Hook *)0); }
+
+#undef set_form_init
+int set_form_init(
+ FORM *form,
+ Form_Hook func)
+ { return(*(int *)0); }
+
+#undef form_init
+Form_Hook form_init(
+ const FORM *form)
+ { return(*(Form_Hook *)0); }
+
+#undef set_form_term
+int set_form_term(
+ FORM *form,
+ Form_Hook func)
+ { return(*(int *)0); }
+
+#undef form_term
+Form_Hook form_term(
+ const FORM *form)
+ { return(*(Form_Hook *)0); }
+
+/* ./frm_opts.c */
+
+#undef set_form_opts
+int set_form_opts(
+ FORM *form,
+ Form_Options opts)
+ { return(*(int *)0); }
+
+#undef form_opts
+Form_Options form_opts(
+ const FORM *form)
+ { return(*(Form_Options *)0); }
+
+#undef form_opts_on
+int form_opts_on(
+ FORM *form,
+ Form_Options opts)
+ { return(*(int *)0); }
+
+#undef form_opts_off
+int form_opts_off(
+ FORM *form,
+ Form_Options opts)
+ { return(*(int *)0); }
+
+/* ./frm_page.c */
+
+#undef set_form_page
+int set_form_page(
+ FORM *form,
+ int page)
+ { return(*(int *)0); }
+
+#undef form_page
+int form_page(
+ const FORM *form)
+ { return(*(int *)0); }
+
+/* ./frm_post.c */
+
+#undef post_form
+int post_form(
+ FORM *form)
+ { return(*(int *)0); }
+
+#undef unpost_form
+int unpost_form(
+ FORM *form)
+ { return(*(int *)0); }
+
+/* ./frm_req_name.c */
+
+#undef form_request_name
+const char *form_request_name(
+ int request)
+ { return(*(const char **)0); }
+
+#undef form_request_by_name
+int form_request_by_name(
+ const char *str)
+ { return(*(int *)0); }
+
+/* ./frm_scale.c */
+
+#undef scale_form
+int scale_form(
+ const FORM *form,
+ int *rows,
+ int *cols)
+ { return(*(int *)0); }
+
+/* ./frm_sub.c */
+
+#undef set_form_sub
+int set_form_sub(
+ FORM *form,
+ WINDOW *win)
+ { return(*(int *)0); }
+
+#undef form_sub
+WINDOW *form_sub(
+ const FORM *form)
+ { return(*(WINDOW **)0); }
+
+/* ./frm_user.c */
+
+#undef set_form_userptr
+int set_form_userptr(
+ FORM *form,
+ void *usrptr)
+ { return(*(int *)0); }
+
+#undef form_userptr
+void *form_userptr(
+ const FORM *form)
+ { return(*(void **)0); }
+
+/* ./frm_win.c */
+
+#undef set_form_win
+int set_form_win(
+ FORM *form,
+ WINDOW *win)
+ { return(*(int *)0); }
+
+#undef form_win
+WINDOW *form_win(
+ const FORM *form)
+ { return(*(WINDOW **)0); }
+
+/* ./fty_alnum.c */
+
+typedef struct
+ {
+ int width;
+ }
+alnumARG;
+
+#undef TYPE_ALNUM
+FIELDTYPE *TYPE_ALNUM;
+
+/* ./fty_alpha.c */
+
+typedef struct
+ {
+ int width;
+ }
+alphaARG;
+
+#undef TYPE_ALPHA
+FIELDTYPE *TYPE_ALPHA;
+
+/* ./fty_enum.c */
+
+typedef struct
+ {
+ char **kwds;
+ int count;
+ NCURSES_BOOL checkcase;
+ NCURSES_BOOL checkunique;
+ }
+enumARG;
+
+#undef TYPE_ENUM
+FIELDTYPE *TYPE_ENUM;
+
+/* ./fty_int.c */
+
+typedef struct
+ {
+ int precision;
+ long low;
+ long high;
+ }
+integerARG;
+
+#undef TYPE_INTEGER
+FIELDTYPE *TYPE_INTEGER;
+
+/* ./fty_ipv4.c */
+#undef TYPE_IPV4
+FIELDTYPE *TYPE_IPV4;
+
+/* ./fty_num.c */
+
+#include <locale.h>
+
+typedef struct
+ {
+ int precision;
+ double low;
+ double high;
+ struct lconv *L;
+ }
+numericARG;
+
+#undef TYPE_NUMERIC
+FIELDTYPE *TYPE_NUMERIC;
+
+/* ./fty_regex.c */
+
+#include <regex.h>
+
+typedef struct
+ {
+ regex_t *pRegExp;
+ unsigned long *refCount;
+ }
+RegExp_Arg;
+
+#undef TYPE_REGEXP
+FIELDTYPE *TYPE_REGEXP;
diff --git a/contrib/ncurses/form/modules b/contrib/ncurses/form/modules
index 4125e93e5a33..a11dade0ba55 100644
--- a/contrib/ncurses/form/modules
+++ b/contrib/ncurses/form/modules
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.13 1999/02/19 00:27:47 juergen Exp $
+# $Id: modules,v 1.14 2004/12/25 23:29:22 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# Copyright (c) 1998,2004 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -27,11 +27,12 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey
#
@ base
# Library objects
+f_trace lib $(srcdir) $(FORM_PRIV_H)
fld_arg lib $(srcdir) $(FORM_PRIV_H)
fld_attr lib $(srcdir) $(FORM_PRIV_H)
fld_current lib $(srcdir) $(FORM_PRIV_H)
diff --git a/contrib/ncurses/include/Caps b/contrib/ncurses/include/Caps
index 795f9daa8500..7c63c7f039a5 100644
--- a/contrib/ncurses/include/Caps
+++ b/contrib/ncurses/include/Caps
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998,2001 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2002,2006 Free Software 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995
# and: Eric S. Raymond <esr@snark.thyrsus.com>
#
-# $Id: Caps,v 1.35 2002/04/20 15:43:34 tom Exp $
+# $Id: Caps,v 1.36 2006/05/27 15:33:04 tom Exp $
#
# This is the master termcap/terminfo capability table.
#
@@ -967,8 +967,8 @@ acs_plus OTGC str GC - - ----- single intersection
# 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
+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
diff --git a/contrib/ncurses/include/Caps.aix4 b/contrib/ncurses/include/Caps.aix4
index c010bbd497ce..75913dc6e9a4 100644
--- a/contrib/ncurses/include/Caps.aix4
+++ b/contrib/ncurses/include/Caps.aix4
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2002,2006 Free Software 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,7 +28,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.aix4,v 1.5 2002/04/20 15:43:42 tom Exp $
+# $Id: Caps.aix4,v 1.7 2006/05/27 15:33:04 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with AIX 4.x's terminfo.
@@ -227,11 +227,11 @@ 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 can't 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 won't work, xon/xoff required
-prtr_silent mc5i bool 5i - - ----- printer won't echo on screen
+needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
+prtr_silent mc5i bool 5i - - ----- printer will not echo on screen
hard_cursor chts bool HC - - ----- cursor is hard to see
non_rev_rmcup nrrmc bool NR - - ----- smcup does not reverse rmcup
no_pad_char npc bool NP - - ----- pad character does not exist
@@ -275,7 +275,7 @@ maximum_windows wnum num MW - - ----- maximum number of defineable 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
-no_color_video ncv num NC - - ----- video attributes that can't be used with colors
+no_color_video ncv num NC - - ----- video attributes that cannot be used with colors
#%.TE
#%.ad
#%
@@ -1069,8 +1069,8 @@ acs_plus OTGC str GC - - ----- single intersection
# 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
+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
diff --git a/contrib/ncurses/include/Caps.hpux11 b/contrib/ncurses/include/Caps.hpux11
new file mode 100644
index 000000000000..b74acdb44b70
--- /dev/null
+++ b/contrib/ncurses/include/Caps.hpux11
@@ -0,0 +1,1278 @@
+##############################################################################
+# Copyright (c) 2002-2003,2006 Free Software 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 Dickey
+#
+# $Id: Caps.hpux11,v 1.4 2006/05/27 15:33:04 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
+# 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.
+#
+# This file has three major sections; a standard-capabilities table, two
+# extension-capability tables, and a section of aliases declarations.
+# The first two have the same format, as follows:
+#
+# FILE FORMAT
+#
+# Column 1: terminfo variable name
+# Column 2: terminfo capability name
+# Column 3: capability type (boolean, numeric, or string)
+# Column 4: termcap capability name
+# Column 5: KEY_xxx name, if any, `-' otherwise
+# Column 6: value for KEY_xxx name, if any, `-' otherwise
+# Column 7: Lead with `Y' if capability should be emitted in termcap
+# translations, `-' otherwise
+# Column 8: capability description
+#
+# The codes following [Y-] in column 7 describe the versions of termcap which
+# use the given capability. This information is not used by the curses library
+# proper; rather, it's there to help the terminfo maintainer avoid emitting
+# termcap entry translations that are more than 1023 bytes long (and tank a
+# lot of old termcap-using programs). The codes read as follows:
+# B = mentioned in the BSD man page for 4.4BSD curses
+# C = used by the 4.4BSD curses library
+# G = mentioned in the documentation for GNU termcap
+# E = used by GNU Emacs
+# K = remove this terminfo capability when translating to standard format
+# The important codes are C and E. A cap with C or E should be preserved in
+# translation if possible. The problem is that preserving all such caps may
+# lead to some termcap translations being too long. The termcap maintainer
+# has a bit of a juggling act to do...potential problem cases are marked with
+# an asterisk (*).
+#
+# The aliases section has the following format:
+#
+# Column 1: either `capalias' or `infoalias'
+# Column 2: name to be aliased
+# Column 3: what name it should translate to. The name IGNORE means it
+# should be discarded with a warning message.
+# Column 4: name of the extension set (used for compiler warning messages)
+# Column 5: capability description (usually an associated terminfo variable)
+#
+# HANDLING TERMCAP AND TERMINFO EXTENSIONS
+#
+# There are basically five different ways to handle termcap and terminfo
+# extensions:
+#
+# 1. Don't list the capname here, or list it but comment it out (the latter
+# is preferable; someone might want to handle it in the future). If you do
+# this, the capability will be treated as unknown and raise a warning from
+# the compiler.
+#
+# 2. Alias it. This is appropriate if the capability has the same meaning
+# as an already-supported one. The compiler will handle aliasing, emitting
+# an appropriate informational message whenever an alias fires.
+#
+# 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
+# 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
+# do this, the capability will be ignored on input (though the user will
+# get a warning message about it).
+#
+# 5. List it in the extensions table. If you do this, the compiler will
+# silently accept the capability, but the curses library proper will never
+# see it (because it won't be written out as part of the terminfo object
+# format). It's up to you what you have the compiler do with it.
+#
+# There are two opposite reasons to choose option 5. One is when you want
+# to eat the capability silently and discard it when doing translations
+# to terminfo with tic -I. Some very old obsolete BSD caps like :kn: are
+# in this class. Nothing will ever use them again.
+#
+# More usually, you want the compiler to try to deduce something from the
+# capability value that it can use to translate it into your output format.
+# You'll need to write custom code, probably in postprocess_termcap() or
+# postprocess_terminfo(), to handle the translation.
+#
+# 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
+# trim those out of the set to be translated to termcap, or various users of
+# the termcap file will become irate.
+#
+# It might look tempting to leave those long init strings out of translations.
+# We can't do it (yet); 4.4BSD tput and tset use them.
+#
+# We retain the sgr capability in translation in spite of the fact that neither
+# 4.4BSD nor GNU Emacs uses it, because (a) some entry naming distinctions are
+# hard to understand without it, and (b) the entries in which it is long tend
+# to be older types that don't use up a lot of string space on function keys.
+# The tic(1) translation code will complain and elide it if it makes a critical
+# difference (there is special code in tic to recognize this situation).
+#
+# Yes, BSD tset(1) uses hpa. We elide hpa/vpa anyway because the motion
+# optimizer in BSD curses didn't use them. This omission seems to be the
+# single most effective one, it shortened the resolved length of all thirteen
+# problem entries in the 9.9.0 version of the terminfo master below critical.
+#
+# 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
+# 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.
+#
+#############################################################################
+#
+# STANDARD CAPABILITIES
+#
+#%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 \fBvariable\fR is the name by which the programmer (at the terminfo level)
+#%accesses the capability.
+#%
+#%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
+#%identical or very similar names). Semantics are also intended to match
+#%those of the specification.
+#%
+#%The termcap code is the old
+#%.B termcap
+#%capability name (some capabilities are new, and have names which termcap
+#%did not originate).
+#%.P
+#%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
+#%.B Caps
+#%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:
+#%.TP
+#%(P)
+#%indicates that padding may be specified
+#%.TP
+#%#[1-9]
+#%in the description field indicates that the string is passed through tparm with
+#%parms as given (#\fIi\fP).
+#%.TP
+#%(P*)
+#%indicates that padding may vary in proportion to the number of
+#%lines affected
+#%.TP
+#%(#\d\fIi\fP\u)
+#%indicates the \fIi\fP\uth\d parameter.
+#%
+#%.PP
+#% These are the boolean capabilities:
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBBooleans name Code\fR
+auto_left_margin bw bool bw - - YB-G- cub1 wraps from column 0 to last column
+auto_right_margin am bool am - - YBCGE terminal has automatic margins
+no_esc_ctlc xsb bool xb - - YBCG- beehive (f1=escape, f2=ctrl C)
+ceol_standout_glitch xhp bool xs - - YBCGE standout not erased by overwriting (hp)
+eat_newline_glitch xenl bool xn - - YBCGE newline ignored after 80 cols (concept)
+erase_overstrike eo bool eo - - YBCG- can erase overstrikes with a blank
+generic_type gn bool gn - - YB-G- generic line type
+hard_copy hc bool hc - - YBCG- hardcopy terminal
+has_meta_key km bool km - - YB-GE Has a meta key (i.e., sets 8th-bit)
+has_status_line hs bool hs - - YB-G- has extra status line
+insert_null_glitch in bool in - - YBCGE insert mode distinguishes nulls
+memory_above da bool da - - YBCG- display may be retained above the screen
+memory_below db bool db - - YB-GE display may be retained below the screen
+move_insert_mode mir bool mi - - YBCGE safe to move while in insert mode
+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)
+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)
+needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
+prtr_silent mc5i bool 5i - - ----- printer will not echo on screen
+hard_cursor chts bool HC - - ----- cursor is hard to see
+non_rev_rmcup nrrmc bool NR - - ----- smcup does not reverse rmcup
+no_pad_char npc bool NP - - ----- pad character does not exist
+non_dest_scroll_region ndscr bool ND - - ----- scrolling region is non-destructive
+can_change ccc bool cc - - ----- terminal can re-define existing colors
+back_color_erase bce bool ut - - ----- screen erased with background color
+hue_lightness_saturation hls bool hl - - ----- terminal uses only HLS color notation (Tektronix)
+col_addr_glitch xhpa bool YA - - ----- only positive motion for hpa/mhpa caps
+cr_cancels_micro_mode crxm bool YB - - ----- using cr turns off micro mode
+has_print_wheel daisy bool YC - - ----- printer needs operator to change character set
+row_addr_glitch xvpa bool YD - - ----- only positive motion for vpa/mvpa caps
+semi_auto_right_margin sam bool YE - - ----- printing in last column causes cr
+cpi_changes_res cpix bool YF - - ----- changing character pitch changes resolution
+lpi_changes_res lpix bool YG - - ----- changing line pitch changes resolution
+#%.TE
+#%.ad
+#%
+#%These are the numeric capabilities:
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBNumeric name Code\fR
+columns cols num co - - YBCGE number of columns in a line
+init_tabs it num it - - YB-G- tabs initially every # spaces
+lines lines num li - - YBCGE number of lines on screen or page
+lines_of_memory lm num lm - - YB-G- lines of memory if > line. 0 means varies
+magic_cookie_glitch xmc num sg - - YBCGE number of blank characters left by smso or rmso
+padding_baud_rate pb num pb - - YB-GE lowest baud rate where padding needed
+virtual_terminal vt num vt - - YB--- virtual terminal number (CB/unix)
+width_status_line wsl num ws - - YB-G- number of columns in status line
+# end numbers for HPUX 9, 10 (non-color curses)
+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
+# 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
+no_color_video ncv num NC - - ----- video attributes that cannot be used with colors
+#%.TE
+#%.ad
+#%
+#%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.
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBNumeric name Code\fR
+buffer_capacity bufsz num Ya - - ----- numbers of bytes buffered before printing
+dot_vert_spacing spinv num Yb - - ----- spacing of pins vertically in pins per inch
+dot_horz_spacing spinh num Yc - - ----- spacing of dots horizontally in dots per inch
+max_micro_address maddr num Yd - - ----- maximum value in micro_..._address
+max_micro_jump mjump num Ye - - ----- maximum value in parm_..._micro
+micro_col_size mcs num Yf - - ----- character step size when in micro mode
+micro_line_size mls num Yg - - ----- line step size when in micro mode
+number_of_pins npins num Yh - - ----- numbers of pins in print-head
+output_res_char orc num Yi - - ----- horizontal resolution in units per line
+output_res_line orl num Yj - - ----- vertical resolution in units per line
+output_res_horz_inch orhi num Yk - - ----- horizontal resolution in units per inch
+output_res_vert_inch orvi num Yl - - ----- vertical resolution in units per inch
+print_rate cps num Ym - - ----- print rate in characters per second
+wide_char_size widcs num Yn - - ----- character step size when in double wide mode
+buttons btns num BT - - ----- number of buttons on mouse
+bit_image_entwining bitwin num Yo - - ----- number of passes for each bit-image row
+bit_image_type bitype num Yp - - ----- type of bit-image device
+#%.TE
+#%.ad
+#%
+#%These are the string capabilities:
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBString name Code\fR
+back_tab cbt str bt - - YBCGE back tab (P)
+bell bel str bl - - YB-GE audible signal (bell) (P)
+carriage_return cr str cr - - YBCGE carriage return (P*) (P*)
+change_scroll_region csr str cs - - YBCGE change region to line #1 to line #2 (P)
+clear_all_tabs tbc str ct - - YB-G- clear all tab stops (P)
+clear_screen clear str cl - - YBCGE clear screen and home cursor (P*)
+clr_eol el str ce - - YBCGE clear to end of line (P)
+clr_eos ed str cd - - YBCGE clear to end of screen (P*)
+column_address hpa str ch - - -B-GE* horizontal position #1, absolute (P)
+command_character cmdch str CC - - YB-G- terminal settable cmd character in prototype !?
+cursor_address cup str cm - - YBCGE move to row #1 columns #2
+cursor_down cud1 str do - - YBCGE down one line
+cursor_home home str ho - - YBCGE home cursor (if no cup)
+cursor_invisible civis str vi - - YB-G- make cursor invisible
+cursor_left cub1 str le - - YBCGE move left one space
+cursor_mem_address mrcup str CM - - YB-G- memory relative cursor addressing, move to row #1 columns #2
+cursor_normal cnorm str ve - - YBCGE make cursor appear normal (undo civis/cvvis)
+cursor_right cuf1 str nd - - YBCGE non-destructive space (move right one space)
+cursor_to_ll ll str ll - - YBCGE last line, first column (if no cup)
+cursor_up cuu1 str up - - YBCGE up one line
+cursor_visible cvvis str vs - - YBCGE make cursor very visible
+delete_character dch1 str dc - - YBCGE delete character (P*)
+delete_line dl1 str dl - - YBCGE delete line (P*)
+dis_status_line dsl str ds - - YB-G- disable status line
+down_half_line hd str hd - - YB-G- half a line down
+enter_alt_charset_mode smacs str as - - YB-G- start alternate character set (P)
+enter_blink_mode blink str mb - - YB-G- turn on blinking
+enter_bold_mode bold str md - - YB-G- turn on bold (extra bright) mode
+enter_ca_mode smcup str ti - - YBCGE string to start programs using cup
+enter_delete_mode smdc str dm - - YBCGE enter delete mode
+enter_dim_mode dim str mh - - YB-G- turn on half-bright mode
+enter_insert_mode smir str im - - YBCGE enter insert mode
+enter_secure_mode invis str mk - - -B-G-* turn on blank mode (characters invisible)
+enter_protected_mode prot str mp - - -B-G-* turn on protected mode
+enter_reverse_mode rev str mr - - YB-G- turn on reverse video mode
+enter_standout_mode smso str so - - YBCGE begin standout mode
+enter_underline_mode smul str us - - YBCGE begin underline mode
+erase_chars ech str ec - - YB-G- erase #1 characters (P)
+exit_alt_charset_mode rmacs str ae - - YB-G- end alternate character set (P)
+exit_attribute_mode sgr0 str me - - YB-GE turn off all attributes
+exit_ca_mode rmcup str te - - YBCGE strings to end programs using cup
+exit_delete_mode rmdc str ed - - YBCGE end delete mode
+exit_insert_mode rmir str ei - - YBCGE exit insert mode
+exit_standout_mode rmso str se - - YBCGE exit standout mode
+exit_underline_mode rmul str ue - - YBCGE exit underline mode
+flash_screen flash str vb - - YBCGE visible bell (may not move cursor)
+form_feed ff str ff - - YB-G- hardcopy terminal page eject (P*)
+from_status_line fsl str fs - - YB-G- return from status line
+init_1string is1 str i1 - - YB-G- initialization string
+init_2string is2 str is - - YB-G- initialization string
+init_3string is3 str i3 - - YB-G- initialization string
+init_file if str if - - YB-G- name of initialization file
+insert_character ich1 str ic - - YBCGE insert character (P)
+insert_line il1 str al - - YBCGE insert line (P*)
+insert_padding ip str ip - - YBCGE insert padding after inserted character
+key_backspace kbs str kb KEY_BACKSPACE 0407 YB-G- backspace key
+key_catab ktbc str ka KEY_CATAB 0526 -B-G-* clear-all-tabs key
+key_clear kclr str kC KEY_CLEAR 0515 -B-G-* clear-screen or erase key
+key_ctab kctab str kt KEY_CTAB 0525 -B-G-* clear-tab key
+key_dc kdch1 str kD KEY_DC 0512 YB-G- delete-character key
+key_dl kdl1 str kL KEY_DL 0510 -B-G-* delete-line key
+key_down kcud1 str kd KEY_DOWN 0402 YBCGE down-arrow key
+key_eic krmir str kM KEY_EIC 0514 -B-G-* sent by rmir or smir in insert mode
+key_eol kel str kE KEY_EOL 0517 -B-G-* clear-to-end-of-line key
+key_eos ked str kS KEY_EOS 0516 -B-G-* clear-to-end-of-screen key
+key_f0 kf0 str k0 KEY_F(0) 0410 YBCGE F0 function key
+key_f1 kf1 str k1 KEY_F(1) - YBCGE F1 function key
+key_f10 kf10 str k; KEY_F(10) - ----E F10 function key
+key_f2 kf2 str k2 KEY_F(2) - YBCGE F2 function key
+key_f3 kf3 str k3 KEY_F(3) - YBCGE F3 function key
+key_f4 kf4 str k4 KEY_F(4) - YBCGE F4 function key
+key_f5 kf5 str k5 KEY_F(5) - YBCGE F5 function key
+key_f6 kf6 str k6 KEY_F(6) - YBCGE F6 function key
+key_f7 kf7 str k7 KEY_F(7) - YBCGE F7 function key
+key_f8 kf8 str k8 KEY_F(8) - YBCGE F8 function key
+key_f9 kf9 str k9 KEY_F(9) - YBCGE F9 function key
+key_home khome str kh KEY_HOME 0406 YBCGE home key
+key_ic kich1 str kI KEY_IC 0513 YB-GE insert-character key
+key_il kil1 str kA KEY_IL 0511 -B-G-* insert-line key
+key_left kcub1 str kl KEY_LEFT 0404 YBCGE left-arrow key
+key_ll kll str kH KEY_LL 0533 YB-G- lower-left key (home down)
+key_npage knp str kN KEY_NPAGE 0522 YB-GE next-page key
+key_ppage kpp str kP KEY_PPAGE 0523 YB-GE previous-page key
+key_right kcuf1 str kr KEY_RIGHT 0405 YBCGE right-arrow key
+key_sf kind str kF KEY_SF 0520 -B-G-* scroll-forward key
+key_sr kri str kR KEY_SR 0521 -B-G-* scroll-backward key
+key_stab khts str kT KEY_STAB 0524 -B-G-* set-tab key
+key_up kcuu1 str ku KEY_UP 0403 YBCGE up-arrow key
+keypad_local rmkx str ke - - YBCGE leave 'keyboard_transmit' mode
+keypad_xmit smkx str ks - - YBCGE enter 'keyboard_transmit' mode
+lab_f0 lf0 str l0 - - -B-G-* label on function key f0 if not f0
+lab_f1 lf1 str l1 - - -B-G-* label on function key f1 if not f1
+lab_f10 lf10 str la - - ----- label on function key f10 if not f10
+lab_f2 lf2 str l2 - - -B-G-* label on function key f2 if not f2
+lab_f3 lf3 str l3 - - -B-G-* label on function key f3 if not f3
+lab_f4 lf4 str l4 - - -B-G-* label on function key f4 if not f4
+lab_f5 lf5 str l5 - - -B-G-* label on function key f5 if not f5
+lab_f6 lf6 str l6 - - -B-G-* label on function key f6 if not f6
+lab_f7 lf7 str l7 - - -B-G-* label on function key f7 if not f7
+lab_f8 lf8 str l8 - - -B-G-* label on function key f8 if not f8
+lab_f9 lf9 str l9 - - -B-G-* label on function key f9 if not f9
+meta_off rmm str mo - - YB-G-* turn off meta mode
+meta_on smm str mm - - YB-G-* turn on meta mode (8th-bit on)
+newline nel str nw - - YB-G-* newline (behave like cr followed by lf)
+pad_char pad str pc - - YBCGE padding char (instead of null)
+parm_dch dch str DC - - YB-GE delete #1 characters (P*)
+parm_delete_line dl str DL - - YBCGE delete #1 lines (P*)
+parm_down_cursor cud str DO - - YBCGE down #1 lines (P*)
+parm_ich ich str IC - - YB-GE insert #1 characters (P*)
+parm_index indn str SF - - YBCG- scroll forward #1 lines (P)
+parm_insert_line il str AL - - YBCGE insert #1 lines (P*)
+parm_left_cursor cub str LE - - YBCGE move #1 characters to the left (P)
+parm_right_cursor cuf str RI - - YBCGE move #1 characters to the right (P*)
+parm_rindex rin str SR - - YBCG- scroll back #1 lines (P)
+parm_up_cursor cuu str UP - - YBCGE up #1 lines (P*)
+pkey_key pfkey str pk - - -B--- program function key #1 to type string #2
+pkey_local pfloc str pl - - -B--- program function key #1 to execute string #2
+pkey_xmit pfx str px - - -B--- program function key #1 to transmit string #2
+print_screen mc0 str ps - - -B-G-* print contents of screen
+prtr_off mc4 str pf - - -B-G-* turn off printer
+prtr_on mc5 str po - - -B-G-* turn on printer
+repeat_char rep str rp - - YB-GE repeat char #1 #2 times (P*)
+reset_1string rs1 str r1 - - -B--- reset string
+reset_2string rs2 str r2 - - -B--- reset string
+reset_3string rs3 str r3 - - -B--- reset string
+reset_file rf str rf - - -B--- name of reset file
+restore_cursor rc str rc - - YBCG- restore cursor to position of last save_cursor
+row_address vpa str cv - - -B-GE* vertical position #1 absolute (P)
+save_cursor sc str sc - - YBCG- save current cursor position (P)
+scroll_forward ind str sf - - YBCGE scroll text up (P)
+scroll_reverse ri str sr - - YBCGE scroll text down (P)
+set_attributes sgr str sa - - YB-G- define video attributes #1-#9 (PG9)
+set_tab hts str st - - YB-G- set a tab in every row, current columns
+set_window wind str wi - - -B-GE current window is lines #1-#2 cols #3-#4
+tab ht str ta - - YBCGE tab to next 8-space hardware tab stop
+to_status_line tsl str ts - - YB-G- move to status line, column #1
+underline_char uc str uc - - YBCG- underline char and move past it
+up_half_line hu str hu - - YB-G- half a line up
+init_prog iprog str iP - - -B--- path name of program for initialization
+key_a1 ka1 str K1 KEY_A1 0534 YB-GE upper left of keypad
+key_a3 ka3 str K3 KEY_A3 0535 YB-GE upper right of keypad
+key_b2 kb2 str K2 KEY_B2 0536 YB-GE center of keypad
+key_c1 kc1 str K4 KEY_C1 0537 YB-GE lower left of keypad
+key_c3 kc3 str K5 KEY_C3 0540 YB-GE lower right of keypad
+prtr_non mc5p str pO - - -B-G-* turn on printer for #1 bytes
+#
+# SVr1 capabilities stop here. IBM's version of terminfo is the same as
+# SVr4 up to this point, but has a different set afterwards.
+#
+# HPUX defines these if __HP_CURSES_COMPAT is defined:
+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 KEY_F(11) - ----E F11 function key
+key_f12 kf12 str F2 KEY_F(12) - ----E F12 function key
+key_f13 kf13 str F3 KEY_F(13) - ----E F13 function key
+key_f14 kf14 str F4 KEY_F(14) - ----E F14 function key
+key_f15 kf15 str F5 KEY_F(15) - ----E F15 function key
+key_f16 kf16 str F6 KEY_F(16) - ----E F16 function key
+key_f17 kf17 str F7 KEY_F(17) - ----E F17 function key
+key_f18 kf18 str F8 KEY_F(18) - ----E F18 function key
+key_f19 kf19 str F9 KEY_F(19) - ----E F19 function key
+key_f20 kf20 str FA KEY_F(20) - ----E F20 function key
+key_f21 kf21 str FB KEY_F(21) - ----E F21 function key
+key_f22 kf22 str FC KEY_F(22) - ----E F22 function key
+key_f23 kf23 str FD KEY_F(23) - ----E F23 function key
+key_f24 kf24 str FE KEY_F(24) - ----E F24 function key
+key_f25 kf25 str FF KEY_F(25) - ----E F25 function key
+key_f26 kf26 str FG KEY_F(26) - ----E F26 function key
+key_f27 kf27 str FH KEY_F(27) - ----E F27 function key
+key_f28 kf28 str FI KEY_F(28) - ----E F28 function key
+key_f29 kf29 str FJ KEY_F(29) - ----E F29 function key
+key_f30 kf30 str FK KEY_F(30) - ----E F30 function key
+key_f31 kf31 str FL KEY_F(31) - ----E F31 function key
+key_f32 kf32 str FM KEY_F(32) - ----E F32 function key
+key_f33 kf33 str FN KEY_F(33) - ----E F33 function key
+key_f34 kf34 str FO KEY_F(34) - ----E F34 function key
+key_f35 kf35 str FP KEY_F(35) - ----E F35 function key
+key_f36 kf36 str FQ KEY_F(36) - ----E F36 function key
+key_f37 kf37 str FR KEY_F(37) - ----E F37 function key
+key_f38 kf38 str FS KEY_F(38) - ----E F38 function key
+key_f39 kf39 str FT KEY_F(39) - ----E F39 function key
+key_f40 kf40 str FU KEY_F(40) - ----E F40 function key
+key_f41 kf41 str FV KEY_F(41) - ----E F41 function key
+key_f42 kf42 str FW KEY_F(42) - ----E F42 function key
+key_f43 kf43 str FX KEY_F(43) - ----E F43 function key
+key_f44 kf44 str FY KEY_F(44) - ----E F44 function key
+key_f45 kf45 str FZ KEY_F(45) - ----E F45 function key
+key_f46 kf46 str Fa KEY_F(46) - ----E F46 function key
+key_f47 kf47 str Fb KEY_F(47) - ----E F47 function key
+key_f48 kf48 str Fc KEY_F(48) - ----E F48 function key
+key_f49 kf49 str Fd KEY_F(49) - ----E F49 function key
+key_f50 kf50 str Fe KEY_F(50) - ----E F50 function key
+key_f51 kf51 str Ff KEY_F(51) - ----E F51 function key
+key_f52 kf52 str Fg KEY_F(52) - ----E F52 function key
+key_f53 kf53 str Fh KEY_F(53) - ----E F53 function key
+key_f54 kf54 str Fi KEY_F(54) - ----E F54 function key
+key_f55 kf55 str Fj KEY_F(55) - ----E F55 function key
+key_f56 kf56 str Fk KEY_F(56) - ----E F56 function key
+key_f57 kf57 str Fl KEY_F(57) - ----E F57 function key
+key_f58 kf58 str Fm KEY_F(58) - ----E F58 function key
+key_f59 kf59 str Fn KEY_F(59) - ----E F59 function key
+key_f60 kf60 str Fo KEY_F(60) - ----E F60 function key
+key_f61 kf61 str Fp KEY_F(61) - ----E F61 function key
+key_f62 kf62 str Fq KEY_F(62) - ----E F62 function key
+key_f63 kf63 str Fr KEY_F(63) - ----E F63 function key
+# end of strings in HPUX 9
+char_padding rmp str rP - - ----- like ip but when in insert mode
+acs_chars acsc str ac - - ----- graphics charset pairs, based on vt100
+key_btab kcbt str kB KEY_BTAB 0541 ----- back-tab key
+enter_xon_mode smxon str SX - - ----- turn on xon/xoff handshaking
+exit_xon_mode rmxon str RX - - ----- turn off xon/xoff handshaking
+enter_am_mode smam str SA - - ----- turn on automatic margins
+exit_am_mode rmam str RA - - ----- turn off automatic margins
+xon_character xonc str XN - - ----- XON character
+xoff_character xoffc str XF - - ----- XOFF character
+ena_acs enacs str eA - - ----- enable alternate char set
+key_beg kbeg str @1 KEY_BEG 0542 ----- begin key
+key_cancel kcan str @2 KEY_CANCEL 0543 ----- cancel key
+key_close kclo str @3 KEY_CLOSE 0544 ----- close key
+key_command kcmd str @4 KEY_COMMAND 0545 ----- command key
+key_copy kcpy str @5 KEY_COPY 0546 ----- copy key
+key_create kcrt str @6 KEY_CREATE 0547 ----- create key
+key_end kend str @7 KEY_END 0550 ----- end key
+key_enter kent str @8 KEY_ENTER 0527 ----- enter/send key
+key_exit kext str @9 KEY_EXIT 0551 ----- exit key
+key_find kfnd str @0 KEY_FIND 0552 ----- find key
+key_help khlp str %1 KEY_HELP 0553 ----- help key
+key_mark kmrk str %2 KEY_MARK 0554 ----- mark key
+key_message kmsg str %3 KEY_MESSAGE 0555 ----- message key
+key_move kmov str %4 KEY_MOVE 0556 ----- move key
+key_next knxt str %5 KEY_NEXT 0557 ----- next key
+key_open kopn str %6 KEY_OPEN 0560 ----- open key
+key_options kopt str %7 KEY_OPTIONS 0561 ----- options key
+key_previous kprv str %8 KEY_PREVIOUS 0562 ----- previous key
+key_print kprt str %9 KEY_PRINT 0532 ----- print key
+key_redo krdo str %0 KEY_REDO 0563 ----- redo key
+key_reference kref str &1 KEY_REFERENCE 0564 ----- reference key
+key_refresh krfr str &2 KEY_REFRESH 0565 ----- refresh key
+key_replace krpl str &3 KEY_REPLACE 0566 ----- replace key
+key_restart krst str &4 KEY_RESTART 0567 ----- restart key
+key_resume kres str &5 KEY_RESUME 0570 ----- resume key
+key_save ksav str &6 KEY_SAVE 0571 ----- save key
+key_suspend kspd str &7 KEY_SUSPEND 0627 ----- suspend key
+key_undo kund str &8 KEY_UNDO 0630 ----- undo key
+key_sbeg kBEG str &9 KEY_SBEG 0572 ----- shifted begin key
+key_scancel kCAN str &0 KEY_SCANCEL 0573 ----- shifted cancel key
+key_scommand kCMD str *1 KEY_SCOMMAND 0574 ----- shifted command key
+key_scopy kCPY str *2 KEY_SCOPY 0575 ----- shifted copy key
+key_screate kCRT str *3 KEY_SCREATE 0576 ----- shifted create key
+key_sdc kDC str *4 KEY_SDC 0577 ----- shifted delete-character key
+key_sdl kDL str *5 KEY_SDL 0600 ----- shifted delete-line key
+key_select kslt str *6 KEY_SELECT 0601 ----- select key
+key_send kEND str *7 KEY_SEND 0602 ----- shifted end key
+key_seol kEOL str *8 KEY_SEOL 0603 ----- shifted clear-to-end-of-line key
+key_sexit kEXT str *9 KEY_SEXIT 0604 ----- shifted exit key
+key_sfind kFND str *0 KEY_SFIND 0605 ----- shifted find key
+key_shelp kHLP str #1 KEY_SHELP 0606 ----- shifted help key
+key_shome kHOM str #2 KEY_SHOME 0607 ----- shifted home key
+key_sic kIC str #3 KEY_SIC 0610 ----- shifted insert-character key
+key_sleft kLFT str #4 KEY_SLEFT 0611 ----- shifted left-arrow key
+key_smessage kMSG str %a KEY_SMESSAGE 0612 ----- shifted message key
+key_smove kMOV str %b KEY_SMOVE 0613 ----- shifted move key
+key_snext kNXT str %c KEY_SNEXT 0614 ----- shifted next key
+key_soptions kOPT str %d KEY_SOPTIONS 0615 ----- shifted options key
+key_sprevious kPRV str %e KEY_SPREVIOUS 0616 ----- shifted previous key
+key_sprint kPRT str %f KEY_SPRINT 0617 ----- shifted print key
+key_sredo kRDO str %g KEY_SREDO 0620 ----- shifted redo key
+key_sreplace kRPL str %h KEY_SREPLACE 0621 ----- shifted replace key
+key_sright kRIT str %i KEY_SRIGHT 0622 ----- shifted right-arrow key
+key_srsume kRES str %j KEY_SRSUME 0623 ----- shifted resume key
+key_ssave kSAV str !1 KEY_SSAVE 0624 ----- shifted save key
+key_ssuspend kSPD str !2 KEY_SSUSPEND 0625 ----- shifted suspend key
+key_sundo kUND str !3 KEY_SUNDO 0626 ----- shifted undo key
+req_for_input rfi str RF - - ----- send next input char (for ptys)
+clr_bol el1 str cb - - ----- Clear to beginning of line
+clear_margins mgc str MC - - ----- clear right and left soft margins
+set_left_margin smgl str ML - - ----- set left soft margin at current column. See smgl. (ML is not in BSD termcap).
+set_right_margin smgr str MR - - ----- set right soft margin at current column
+label_format fln str Lf - - ----- label format
+set_clock sclk str SC - - ----- set clock, #1 hrs #2 mins #3 secs
+display_clock dclk str DK - - ----- display clock
+remove_clock rmclk str RC - - ----- remove clock
+create_window cwin str CW - - ----- define a window #1 from #2,#3 to #4,#5
+goto_window wingo str WG - - ----- go to window #1
+hangup hup str HU - - ----- hang-up phone
+dial_phone dial str DI - - ----- dial number #1
+quick_dial qdial str QD - - ----- dial number #1 without checking
+tone tone str TO - - ----- select touch tone dialing
+pulse pulse str PU - - ----- select pulse dialing
+flash_hook hook str fh - - ----- flash switch hook
+fixed_pause pause str PA - - ----- pause for 2-3 seconds
+wait_tone wait str WA - - ----- wait for dial-tone
+user0 u0 str u0 - - ----- User string #0
+user1 u1 str u1 - - ----- User string #1
+user2 u2 str u2 - - ----- User string #2
+user3 u3 str u3 - - ----- User string #3
+user4 u4 str u4 - - ----- User string #4
+user5 u5 str u5 - - ----- User string #5
+user6 u6 str u6 - - ----- User string #6
+user7 u7 str u7 - - ----- User string #7
+user8 u8 str u8 - - ----- User string #8
+user9 u9 str u9 - - ----- User string #9
+#
+# SVr4 added these capabilities to support color
+#
+orig_pair op str op - - ----- Set default pair to its original value
+orig_colors oc str oc - - ----- Set all color pairs to the original ones
+initialize_color initc str Ic - - ----- initialize color #1 to (#2,#3,#4)
+initialize_pair initp str Ip - - ----- Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7)
+set_color_pair scp str sp - - ----- Set current color pair to #1
+set_foreground setf str Sf - - ----- Set foreground color #1
+set_background setb str Sb - - ----- Set background color #1
+#
+# SVr4 added these capabilities to support printers
+#
+change_char_pitch cpi str ZA - - ----- Change number of characters per inch to #1
+change_line_pitch lpi str ZB - - ----- Change number of lines per inch to #1
+change_res_horz chr str ZC - - ----- Change horizontal resolution to #1
+change_res_vert cvr str ZD - - ----- Change vertical resolution to #1
+define_char defc str ZE - - ----- Define a character #1, #2 dots wide, descender #3
+enter_doublewide_mode swidm str ZF - - ----- Enter double-wide mode
+enter_draft_quality sdrfq str ZG - - ----- Enter draft-quality mode
+enter_italics_mode sitm str ZH - - ----- Enter italic mode
+enter_leftward_mode slm str ZI - - ----- Start leftward carriage motion
+enter_micro_mode smicm str ZJ - - ----- Start micro-motion mode
+enter_near_letter_quality snlq str ZK - - ----- Enter NLQ mode
+enter_normal_quality snrmq str ZL - - ----- Enter normal-quality mode
+enter_shadow_mode sshm str ZM - - ----- Enter shadow-print mode
+enter_subscript_mode ssubm str ZN - - ----- Enter subscript mode
+enter_superscript_mode ssupm str ZO - - ----- Enter superscript mode
+enter_upward_mode sum str ZP - - ----- Start upward carriage motion
+exit_doublewide_mode rwidm str ZQ - - ----- End double-wide mode
+exit_italics_mode ritm str ZR - - ----- End italic mode
+exit_leftward_mode rlm str ZS - - ----- End left-motion mode
+exit_micro_mode rmicm str ZT - - ----- End micro-motion mode
+exit_shadow_mode rshm str ZU - - ----- End shadow-print mode
+exit_subscript_mode rsubm str ZV - - ----- End subscript mode
+exit_superscript_mode rsupm str ZW - - ----- End superscript mode
+exit_upward_mode rum str ZX - - ----- End reverse character motion
+micro_column_address mhpa str ZY - - ----- Like column_address in micro mode
+micro_down mcud1 str ZZ - - ----- Like cursor_down in micro mode
+micro_left mcub1 str Za - - ----- Like cursor_left in micro mode
+micro_right mcuf1 str Zb - - ----- Like cursor_right in micro mode
+micro_row_address mvpa str Zc - - ----- Like row_address #1 in micro mode
+micro_up mcuu1 str Zd - - ----- Like cursor_up in micro mode
+order_of_pins porder str Ze - - ----- Match software bits to print-head pins
+parm_down_micro mcud str Zf - - ----- Like parm_down_cursor in micro mode
+parm_left_micro mcub str Zg - - ----- Like parm_left_cursor in micro mode
+parm_right_micro mcuf str Zh - - ----- Like parm_right_cursor in micro mode
+parm_up_micro mcuu str Zi - - ----- Like parm_up_cursor in micro mode
+select_char_set scs str Zj - - ----- Select character set, #1
+set_bottom_margin smgb str Zk - - ----- Set bottom margin at current line
+set_bottom_margin_parm smgbp str Zl - - ----- Set bottom margin at line #1 or (if smgtp is not given) #2 lines from bottom
+set_left_margin_parm smglp str Zm - - ----- Set left (right) margin at column #1
+set_right_margin_parm smgrp str Zn - - ----- Set right margin at column #1
+set_top_margin smgt str Zo - - ----- Set top margin at current line
+set_top_margin_parm smgtp str Zp - - ----- Set top (bottom) margin at row #1
+start_bit_image sbim str Zq - - ----- Start printing bit image graphics
+start_char_set_def scsd str Zr - - ----- Start character set definition #1, with #2 characters in the set
+stop_bit_image rbim str Zs - - ----- Stop printing bit image graphics
+stop_char_set_def rcsd str Zt - - ----- End definition of character set #1
+subscript_characters subcs str Zu - - ----- List of subscriptable characters
+superscript_characters supcs str Zv - - ----- List of superscriptable characters
+these_cause_cr docr str Zw - - ----- Printing any of these characters causes CR
+zero_motion zerom str Zx - - ----- No motion for subsequent character
+#%.TE
+#%.ad
+#%
+#%The following string capabilities are present in the SVr4.0 term structure,
+#%but were originally not documented in the man page.
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw18.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBString name Code\fR
+char_set_names csnm str Zy - - ----- Produce #1'th item from list of character set names
+key_mouse kmous str Km KEY_MOUSE 0631 ----- Mouse event has occurred
+mouse_info minfo str Mi - - ----- Mouse status information
+req_mouse_pos reqmp str RQ - - ----- Request mouse position
+get_mouse getm str Gm - - ----- Curses should get button events, parameter #1 not documented.
+set_a_foreground setaf str AF - - ----- Set foreground color to #1, using ANSI escape
+set_a_background setab str AB - - ----- Set background color to #1, using ANSI escape
+pkey_plab pfxl str xl - - ----- Program function key #1 to type string #2 and show string #3
+device_type devt str dv - - ----- Indicate language/codeset support
+code_set_init csin str ci - - ----- Init sequence for multiple codesets
+set0_des_seq s0ds str s0 - - ----- Shift to codeset 0 (EUC set 0, ASCII)
+set1_des_seq s1ds str s1 - - ----- Shift to codeset 1
+set2_des_seq s2ds str s2 - - ----- Shift to codeset 2
+set3_des_seq s3ds str s3 - - ----- Shift to codeset 3
+set_lr_margin smglr str ML - - ----- Set both left and right margins to #1, #2. (ML is not in BSD termcap).
+set_tb_margin smgtb str MT - - ----- Sets both top and bottom margins to #1, #2
+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
+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
+#
+# SVr4 added these capabilities for direct PC-clone support
+#
+display_pc_char dispc str S1 - - ----- Display PC character #1
+enter_pc_charset_mode smpch str S2 - - ----- Enter PC character display mode
+exit_pc_charset_mode rmpch str S3 - - ----- Exit PC character display mode
+enter_scancode_mode smsc str S4 - - ----- Enter PC scancode mode
+exit_scancode_mode rmsc str S5 - - ----- Exit PC scancode mode
+pc_term_options pctrm str S6 - - ----- PC terminal options
+scancode_escape scesc str S7 - - ----- Escape for scancode emulation
+alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulation
+#%.TE
+#%.ad
+#%
+#%.in .8i
+#%The XSI Curses standard added these. They are some post-4.1
+#%versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x.
+#%The \fBncurses\fR termcap names for them are invented; according to the
+#%XSI Curses standard, they have no termcap names. If your compiled terminfo
+#%entries use these, they may not be binary-compatible with System V terminfo
+#%entries after SVr4.1; beware!
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBString name Code\fR
+set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch
+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
+#%.TE
+#%.ad
+#
+# The magic token below tells the tic compiler-generator code that all the caps
+# past it should be ignored (not written out) when dumping terminfo objects. It
+# also tells the man page table generator not to pass through following lines
+# This means we can have obsolete capabilities and pseudo-capabilities that are
+# recognized for termcap or terminfo compilation, but not output.
+#
+# %%-STOP-HERE-%%
+#
+# Don't move this casually! In fact, don't move it at all unless you're
+# either doing it to add System V or XPG4 extensions, or have decided you
+# don't care about SVr4 binary compatibility.
+#
+#############################################################################
+#
+# TERMCAP EXTENSION CAPABILITIES
+#
+# The capabilities below are either obsolete or extensions on certain systems.
+# They are not used by SVR4 terminfo. Some are used by captoinfo to translate
+# termcap sources; the rest are listed for completeness, and in case somebody
+# cares about them enough to hack in code that will translate them into
+# terminfo capabilities.
+#
+# The first part of the list is from Ross Ridge's `mytinfo' package
+# (comp.sources.unix, volume 26); the variable names and terminfo names (as
+# well as the termcap codes) match his list.
+#
+# This group of codes is not marked obsolete in 4.4BSD, but have no direct
+# terminfo equivalents. The rs capability is specially translated to terminfo
+# r2, and vice versa, if an entry does not already have an r2. Similarly,
+# i2 is translated to r3 if there is no r3 (because SV terminfo maps is to i2).
+# The ug capability is thrown away, but assumed to be whatever sg is if the
+# latter is nonzero and we're dumping in termcap format.
+#
+termcap_init2 OTi2 str i2 - - YB--- secondary initialization string
+termcap_reset OTrs str rs - - YB-G- terminal reset string
+magic_cookie_glitch_ul OTug num ug - - YBCGE number of blanks left by ul
+#
+# Obsolete termcap capabilities. Some are used for termcap translation. The
+# code uses the 'OT' prefix we put on obsolete capabilities to suppress
+# printing them in terminfo source dumps of compiled entries.
+#
+backspaces_with_bs OTbs bool bs - - YBCGE uses ^H to move left
+crt_no_scrolling OTns bool ns - - YBCG- crt cannot scroll
+no_correctly_working_cr OTnc bool nc - - YBCG- no way to go to start of line
+carriage_return_delay OTdC num dC - - YB-G- pad needed for CR
+new_line_delay OTdN num dN - - YB-G- pad needed for LF
+linefeed_if_not_lf OTnl str nl - - YBCGE use to move down
+backspace_if_not_bs OTbc str bc - - YBCGE move left, if not ^H
+#
+# GNU termcap library extensions. The GNU termcap file distributed with
+# Emacs no longer uses these, but MT showed up in pre-9.0 versions of the
+# BSD termcap file. The name clash with terminfo MT is resolved by type
+# info; MT is converted to km.
+#
+gnu_has_meta_key OTMT bool MT - - ----E has meta key
+# gnu_tab_width OTtw num tw - - ----E tab width in spaces
+#
+# 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
+#
+# The following comments describe capnames so ancient that I believe no
+# software uses them any longer. Some of these have to go because they
+# clash with terminfo names in ways that cannot be resolved by type
+# information.
+#
+# These mytinfo codes are not used in the 4.4BSD curses code. They are
+# marked obsolete in the 4.4BSD manual pages.
+#
+# There is one conflict with terminfo; ma is in both. This conflict is
+# resolved by type information.
+#
+# The `ko' capability is translated by special code. It should contain a
+# 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...
+#
+# 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
+# text. All lines above the cursor's current line become locked in place on
+# the screen. Then enter data normally. When the screen fills up, any
+# further data entered forces the first line of unfrozen line text to scroll
+# under the frozen data. Lines scrolled off the screen are inserted into
+# memory immediately preceding the first frozen line." (from the HP 700/96
+# User's manual). VT100/ANSI memory lock set is \E[>2h, reset is \E[>2l.
+#
+# Applications that use terminfo are supposed to behave as though xr is
+# always true.
+#
+linefeed_is_newline OTNL bool NL - - YB--- move down with \n
+# even_parity OTEP bool EP - - -B--- terminal requires even parity
+# odd_parity OTOP bool OP - - -B--- terminal requires odd parity
+# half_duplex OTHD bool HD - - -B--- terminal is half-duplex
+# lower_case_only OTLC bool LC - - -B--- terminal has only lower case
+# upper_case_only OTUC bool UC - - -B--- terminal has only upper case
+backspace_delay OTdB num dB - - YB-G- padding required for ^H
+# form_feed_delay OTdF num dF - - -B-G- padding required for ^L
+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
+# 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
+return_does_clr_eol OTxr bool xr - - YB--- return clears the line
+# tek_4025_insert_line OTxx bool xx - - -BC-- Tektronix 4025 insert-line glitch
+#
+# mytinfo described this as a termcap capability, but it's not listed in the
+# 4.4BSD man pages, and not found in the 4.4BSD termcap file. The ncurses
+# package, like System V, behaves as though it is always true.
+#
+# rind_only_at_top OTxq bool xq - - ----- reverse index only works from top 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.
+#
+# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
+# key_kill_char OTkk str kk - - ----- string set by kill key (?)
+# key_suspend_char OTkz str kz - - ----- string set by suspend key (?)
+# initialization_messy OTxc bool xc - - ----- initialization leaves garbage on the screen (?)
+# ind_at_bottom_does_cr OTxl bool xl - - ----- index does a carriage return
+#
+# Nonstandard capabilities unique to Ross Ridge's `mytinfo' package.
+# SR clashes with a terminfo name; this ambiguity cannot be resolved by a type
+# check.
+#
+# scroll_left OTsl1 str Sl - - ----- scroll screen leftward
+# scroll_right OTsr1 str Sr - - ----- scroll screen rightward
+# parm_scroll_left OTsl str SL - - ----- scroll screen leftward #1 characters
+# parm_scroll_right OTsr str SR - - ----- scroll screen rightward #1 characters
+#
+# The mytinfo capabilities end here.
+#
+# XENIX extensions:
+#
+# Xenix defined its own set of forms-drawing capabilities:
+#
+# cap IBM ASCII description ACS ASCII
+# --- ----------- -------------------- ------------- ------
+# G1 191 \277 M-? single upper right ACS_URCORNER
+# G2 218 \332 M-Z single upper left ACS_ULCORNER
+# G3 192 \300 M-@ single lower left ACS_LLCORNER
+# G4 217 \331 M-Y single lower right ACS_LRCORNER
+# G5 187 \273 M-; double upper right
+# G6 201 \311 M-I double upper left
+# G7 200 \310 M-H double lower left
+# G8 188 \274 M-< double lower right
+# GC 197 \305 M-E single intersection ACS_PLUS _ _
+# GD 194 \302 M-B single down-tick ACS_TTEE |
+# GH 196 \304 M-D single horizontal line ACS_HLINE
+# GL 180 \264 M-4 single left tick ACS_RTEE -|
+# GR 195 \303 M-C single right tick ACS_LTEE |-
+# GU 193 \301 M-A single up tick ACS_BTEE _|_
+# GV 179 \263 M-3 single vertical line ACS_VLINE
+# Gc 206 \316 M-N double intersection
+# Gd 203 \313 M-K double down tick
+# Gh 205 \315 M-M double horizontal line
+# Gl 204 \204 M-L double left tick
+# Gr 185 \271 M-9 double right tick
+# Gu 202 \312 M-J double up tick
+# 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
+# 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.
+# These terminfo names are invented.
+#
+acs_ulcorner OTG2 str G2 - - ----- single upper left
+acs_llcorner OTG3 str G3 - - ----- single lower left
+acs_urcorner OTG1 str G1 - - ----- single upper right
+acs_lrcorner OTG4 str G4 - - ----- single lower right
+acs_ltee OTGR str GR - - ----- tee pointing right
+acs_rtee OTGL str GL - - ----- tee pointing left
+acs_btee OTGU str GU - - ----- tee pointing up
+acs_ttee OTGD str GD - - ----- tee pointing down
+acs_hline OTGH str GH - - ----- single horizontal line
+acs_vline OTGV str GV - - ----- single vertical line
+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.
+#
+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.
+#
+#############################################################################
+#
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# case-fold-search:nil
+# truncate-lines:t
+# End:
diff --git a/contrib/ncurses/include/Caps.keys b/contrib/ncurses/include/Caps.keys
index 7ef7545fa5bc..6841ae5c1d5b 100644
--- a/contrib/ncurses/include/Caps.keys
+++ b/contrib/ncurses/include/Caps.keys
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2002,2006 Free Software 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 Dickey
# and: Ilya Zakharevich
#
-# $Id: Caps.keys,v 1.2 2002/04/20 15:43:49 tom Exp $
+# $Id: Caps.keys,v 1.3 2006/05/27 15:33:04 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is illustrates an experimental extension to describe alt-, shift- and
@@ -1057,8 +1057,8 @@ acs_plus OTGC str GC - - ----- single intersection
# 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
+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
diff --git a/contrib/ncurses/include/Caps.osf1r5 b/contrib/ncurses/include/Caps.osf1r5
index 28f4681e9e4d..d9ea5646ff5a 100644
--- a/contrib/ncurses/include/Caps.osf1r5
+++ b/contrib/ncurses/include/Caps.osf1r5
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2002 Free Software Foundation, Inc. #
+# Copyright (c) 2002,2006 Free Software 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,7 +28,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.osf1r5,v 1.2 2002/04/20 15:43:58 tom Exp $
+# $Id: Caps.osf1r5,v 1.4 2006/05/27 15:33:04 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with OSF/1 version 5 (Tru64) terminfo.
@@ -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 can't 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
@@ -977,8 +977,8 @@ acs_plus OTGC str GC - - ----- single intersection
# 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
+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
diff --git a/contrib/ncurses/include/Caps.uwin b/contrib/ncurses/include/Caps.uwin
index ea755c142ccc..450eaeb6ae58 100644
--- a/contrib/ncurses/include/Caps.uwin
+++ b/contrib/ncurses/include/Caps.uwin
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2002,2006 Free Software 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,7 +28,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.uwin,v 1.2 2002/04/20 15:44:04 tom Exp $
+# $Id: Caps.uwin,v 1.4 2006/05/27 15:33:04 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with U/Win's terminfo.
@@ -227,11 +227,11 @@ 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 can't 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 won't work, xon/xoff required
-prtr_silent mc5i bool 5i - - ----- printer won't echo on screen
+needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
+prtr_silent mc5i bool 5i - - ----- printer will not echo on screen
hard_cursor chts bool HC - - ----- cursor is hard to see
non_rev_rmcup nrrmc bool NR - - ----- smcup does not reverse rmcup
no_pad_char npc bool NP - - ----- pad character does not exist
@@ -269,7 +269,7 @@ buttons btns num BT - - ----- number of buttons on mouse
# 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
-no_color_video ncv num NC - - ----- video attributes that can't be used with colors
+no_color_video ncv num NC - - ----- video attributes that cannot be used with colors
#%.TE
#%.ad
#%
@@ -793,8 +793,8 @@ acs_plus OTGC str GC - - ----- single intersection
# 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
+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
diff --git a/contrib/ncurses/include/MKhashsize.sh b/contrib/ncurses/include/MKhashsize.sh
index d11d7bf23c8a..11b3111aff92 100755
--- a/contrib/ncurses/include/MKhashsize.sh
+++ b/contrib/ncurses/include/MKhashsize.sh
@@ -1,4 +1,32 @@
#!/bin/sh
+##############################################################################
+# Copyright (c) 1998,2006 Free Software 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: MKhashsize.sh,v 1.7 2006/10/22 00:45:39 tom Exp $
#
# MKhashsize.sh --- generate size include for hash functions
#
diff --git a/contrib/ncurses/include/MKkey_defs.sh b/contrib/ncurses/include/MKkey_defs.sh
index ab43b09f4845..b3cb4f7f72cb 100755
--- a/contrib/ncurses/include/MKkey_defs.sh
+++ b/contrib/ncurses/include/MKkey_defs.sh
@@ -1,7 +1,7 @@
#! /bin/sh
-# $Id: MKkey_defs.sh,v 1.8 2002/06/01 17:24:28 tom Exp $
+# $Id: MKkey_defs.sh,v 1.14 2003/12/06 17:10:09 tom Exp $
##############################################################################
-# Copyright (c) 2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2002,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"), #
@@ -30,7 +30,7 @@
#
# MKkey_defs.sh -- generate function-key definitions for curses.h
#
-# Author: Thomas E. Dickey <dickey@herndon4.his.com> 2001
+# Author: Thomas E. Dickey 2001
#
# Extract function-key definitions from the Caps file
#
@@ -43,9 +43,26 @@ pass2=pass2_$$
pass3=pass3_$$
pass4=pass4_$$
trap 'rm -f $data pass[1234]_$$' 0 1 2 5 15
-sed -e 's/[ ]\+/ /g' < $DATA |sort -n +5 >$data
+
+# 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
+then
+ # POSIX
+ sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n -k 6 >$data
+elif sort -n +5 $DATA >$data 2>/dev/null
+then
+ # SunOS (and SVr4, marked as obsolete but still recognized)
+ sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n +5 >$data
+else
+ echo "Your sort utility is broken. Please install one that works." >&2
+ exit 1
+fi
+
+# add keys that we generate automatically:
cat >>$data <<EOF
key_resize kr1 str R1 KEY_RESIZE + ----- Terminal resize event
+key_event kv1 str V1 KEY_EVENT + ----- We were interrupted by an event
EOF
cat <<EOF
diff --git a/contrib/ncurses/include/MKncurses_def.sh b/contrib/ncurses/include/MKncurses_def.sh
index 3ca08c33dd31..4aac86554b55 100755
--- a/contrib/ncurses/include/MKncurses_def.sh
+++ b/contrib/ncurses/include/MKncurses_def.sh
@@ -1,5 +1,5 @@
#! /bin/sh
-# $Id: MKncurses_def.sh,v 1.1 2000/09/02 17:37:35 tom Exp $
+# $Id: MKncurses_def.sh,v 1.2 2003/10/25 16:19:46 tom Exp $
##############################################################################
# Copyright (c) 2000 Free Software Foundation, Inc. #
# #
@@ -30,7 +30,7 @@
#
# MKncurses_def.sh -- generate fallback definitions for ncurses_cfg.h
#
-# Author: Thomas E. Dickey <dickey@herndon4.his.com> 2000
+# Author: Thomas E. Dickey 2000
#
# Given the choice between constructs such as
#
diff --git a/contrib/ncurses/include/MKparametrized.sh b/contrib/ncurses/include/MKparametrized.sh
index 4c3365529816..2825c822ae25 100755
--- a/contrib/ncurses/include/MKparametrized.sh
+++ b/contrib/ncurses/include/MKparametrized.sh
@@ -1,5 +1,32 @@
#!/bin/sh
-# $Id: MKparametrized.sh,v 1.5 2000/10/01 00:57:24 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2000,2006 Free Software 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: MKparametrized.sh,v 1.6 2006/04/22 21:36:16 tom Exp $
#
# MKparametrized.sh -- generate indirection vectors for various sort methods
#
diff --git a/contrib/ncurses/include/MKterm.h.awk.in b/contrib/ncurses/include/MKterm.h.awk.in
index 8243aea52dbe..ee22f014d128 100644
--- a/contrib/ncurses/include/MKterm.h.awk.in
+++ b/contrib/ncurses/include/MKterm.h.awk.in
@@ -1,6 +1,6 @@
BEGIN {
print "/****************************************************************************"
- print " * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *"
+ print " * Copyright (c) 1998-2003,2006 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 *"
@@ -30,9 +30,10 @@ BEGIN {
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.41 2001/12/23 01:04:38 tom Exp $ */"
+ print "/* $Id: MKterm.h.awk.in,v 1.47 2006/11/26 01:18:23 tom Exp $ */"
print ""
print "/*"
print "** term.h -- Definition of struct term"
@@ -54,15 +55,12 @@ BEGIN {
print " * definition (based on the system for which this was configured)."
print " */"
print ""
- print "#undef HAVE_TERMIOS_H"
- print "#define HAVE_TERMIOS_H 1/*default*/"
- print ""
- print "#undef HAVE_TCGETATTR"
- print "#define HAVE_TCGETATTR 1/*default*/"
- 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_XNAMES"
print "#define NCURSES_XNAMES @NCURSES_XNAMES@"
print ""
@@ -74,7 +72,8 @@ BEGIN {
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 "#if @HAVE_TERMIOS_H@ && @HAVE_TCGETATTR@"
print ""
print "#undef TERMIOS"
print "#define TERMIOS 1"
@@ -84,7 +83,8 @@ BEGIN {
print ""
print "#else /* !HAVE_TERMIOS_H */"
print ""
- print "#if HAVE_TERMIO_H"
+ print "/* #if HAVE_TERMIO_H */"
+ print "#if @HAVE_TERMIO_H@"
print ""
print "#undef TERMIOS"
print "#define TERMIOS 1"
@@ -199,7 +199,7 @@ END {
print "typedef struct termtype { /* in-core form of terminfo data */"
print " char *term_names; /* str_table offset of term names */"
print " char *str_table; /* pointer to string table */"
- print " char *Booleans; /* array of boolean values */"
+ print " NCURSES_SBOOL *Booleans; /* array of boolean values */"
print " short *Numbers; /* array of integer values */"
print " char **Strings; /* array of string offsets */"
print ""
@@ -224,6 +224,7 @@ END {
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 "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
@@ -268,9 +269,9 @@ END {
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(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(int) _nc_read_termcap_entry (const char *const, TERMTYPE *const);"
print "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);"
print ""
print "/* entry points */"
@@ -284,11 +285,18 @@ END {
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(char *) tparm (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 *, ...); /* implemented */"
+ print "#else"
+ print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* implemented */"
+ print "extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* implemented */"
+ print "#endif"
+ print ""
print "#endif /* __NCURSES_H */"
print ""
print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
diff --git a/contrib/ncurses/include/curses.h.in b/contrib/ncurses/include/curses.h.in
index df6f2a142376..6e517f765651 100644
--- a/contrib/ncurses/include/curses.h.in
+++ b/contrib/ncurses/include/curses.h.in
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,10 +29,10 @@
/****************************************************************************
* 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: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: curses.h.in,v 1.129 2002/06/01 17:22:56 tom Exp $ */
+/* $Id: curses.h.in,v 1.167 2006/11/26 01:14:54 tom Exp $ */
#ifndef __NCURSES_H
#define __NCURSES_H
@@ -41,7 +41,7 @@
#define CURSES_H 1
/* This should be defined for the enhanced functionality to be visible.
- * However, none of the wide-character (enhanced) functionality is implemented.
+ * However, some of the wide-character (enhanced) functionality is missing.
* So we do not define it (yet).
#define _XOPEN_CURSES 1
*/
@@ -55,29 +55,80 @@
#undef NCURSES_VERSION
#define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@"
+/*
+ * Identify the mouse encoding version.
+ */
+#define NCURSES_MOUSE_VERSION @NCURSES_MOUSE_VERSION@
+
+/*
+ * Definitions to facilitate DLL's.
+ */
#include <ncurses_dll.h>
+/*
+ * User-definable tweak to disable the include of <stdbool.h>.
+ */
+#ifndef NCURSES_ENABLE_STDBOOL_H
+#define NCURSES_ENABLE_STDBOOL_H @cf_cv_header_stdbool_h@
+#endif
+
+/*
+ * 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
+/*
+ * Expands to 'const' if ncurses is configured using --enable-const. Note that
+ * doing so makes it incompatible with other implementations of X/Open Curses.
+ */
#undef NCURSES_CONST
#define NCURSES_CONST @NCURSES_CONST@
+#undef NCURSES_INLINE
+#define NCURSES_INLINE @NCURSES_INLINE@
+
+/*
+ * The internal type used for color values
+ */
#undef NCURSES_COLOR_T
#define NCURSES_COLOR_T short
+/*
+ * The internal type used for window dimensions.
+ */
#undef NCURSES_SIZE_T
#define NCURSES_SIZE_T short
+/*
+ * Control whether tparm() supports varargs or fixed-parameter list.
+ */
+#undef NCURSES_TPARM_VARARGS
+#define NCURSES_TPARM_VARARGS @NCURSES_TPARM_VARARGS@
+
+/*
+ * 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.
+ */
#undef NCURSES_CH_T
#define NCURSES_CH_T @NCURSES_CH_T@
+#if @cf_cv_enable_lp64@ && defined(_LP64)
+typedef unsigned chtype;
+typedef unsigned mmask_t;
+#else
typedef unsigned @cf_cv_typeof_chtype@ chtype;
+typedef unsigned @cf_cv_typeof_mmask_t@ mmask_t;
+#endif
#include <stdio.h>
#include <unctrl.h>
@@ -106,24 +157,30 @@ typedef unsigned @cf_cv_typeof_chtype@ chtype;
typedef @cf_cv_type_of_bool@ NCURSES_BOOL;
-#if (!defined(__cplusplus) || !@cf_cv_builtin_bool@) && (!@cf_cv_cc_bool_type@)
+#if @USE_CXX_BOOL@ /* __cplusplus, etc. */
-#if @cf_cv_header_stdbool_h@
-#include <stdbool.h>
-#endif
+/* use the C++ compiler's bool type */
+#define NCURSES_BOOL bool
-#undef bool
+#else /* c89, c99, etc. */
-#if @cf_cv_header_stdbool_h@
-#define bool NCURSES_BOOL
+#if NCURSES_ENABLE_STDBOOL_H
+#include <stdbool.h>
+/* use whatever the C compiler decides bool really is */
+#define NCURSES_BOOL bool
#else
-typedef @cf_cv_type_of_bool@ bool;
+/* there is no predefined bool - use our own */
+#undef bool
+#define bool NCURSES_BOOL
#endif
#endif /* !__cplusplus, etc. */
#ifdef __cplusplus
extern "C" {
+#define NCURSES_CAST(type,value) static_cast<type>(value)
+#else
+#define NCURSES_CAST(type,value) (type)(value)
#endif
/*
@@ -170,45 +227,47 @@ extern NCURSES_EXPORT_VAR(chtype*) _nc_acs_map(void);
extern NCURSES_EXPORT_VAR(chtype) acs_map[];
#endif
+#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)])
+
/* VT100 symbols begin here */
-#define ACS_ULCORNER (acs_map['l']) /* upper left corner */
-#define ACS_LLCORNER (acs_map['m']) /* lower left corner */
-#define ACS_URCORNER (acs_map['k']) /* upper right corner */
-#define ACS_LRCORNER (acs_map['j']) /* lower right corner */
-#define ACS_LTEE (acs_map['t']) /* tee pointing right */
-#define ACS_RTEE (acs_map['u']) /* tee pointing left */
-#define ACS_BTEE (acs_map['v']) /* tee pointing up */
-#define ACS_TTEE (acs_map['w']) /* tee pointing down */
-#define ACS_HLINE (acs_map['q']) /* horizontal line */
-#define ACS_VLINE (acs_map['x']) /* vertical line */
-#define ACS_PLUS (acs_map['n']) /* large plus or crossover */
-#define ACS_S1 (acs_map['o']) /* scan line 1 */
-#define ACS_S9 (acs_map['s']) /* scan line 9 */
-#define ACS_DIAMOND (acs_map['`']) /* diamond */
-#define ACS_CKBOARD (acs_map['a']) /* checker board (stipple) */
-#define ACS_DEGREE (acs_map['f']) /* degree symbol */
-#define ACS_PLMINUS (acs_map['g']) /* plus/minus */
-#define ACS_BULLET (acs_map['~']) /* bullet */
+#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */
+#define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */
+#define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */
+#define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */
+#define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */
+#define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */
+#define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */
+#define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */
+#define ACS_HLINE NCURSES_ACS('q') /* horizontal line */
+#define ACS_VLINE NCURSES_ACS('x') /* vertical line */
+#define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */
+#define ACS_S1 NCURSES_ACS('o') /* scan line 1 */
+#define ACS_S9 NCURSES_ACS('s') /* scan line 9 */
+#define ACS_DIAMOND NCURSES_ACS('`') /* diamond */
+#define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */
+#define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */
+#define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */
+#define ACS_BULLET NCURSES_ACS('~') /* bullet */
/* Teletype 5410v1 symbols begin here */
-#define ACS_LARROW (acs_map[',']) /* arrow pointing left */
-#define ACS_RARROW (acs_map['+']) /* arrow pointing right */
-#define ACS_DARROW (acs_map['.']) /* arrow pointing down */
-#define ACS_UARROW (acs_map['-']) /* arrow pointing up */
-#define ACS_BOARD (acs_map['h']) /* board of squares */
-#define ACS_LANTERN (acs_map['i']) /* lantern symbol */
-#define ACS_BLOCK (acs_map['0']) /* solid square block */
+#define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */
+#define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */
+#define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */
+#define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */
+#define ACS_BOARD NCURSES_ACS('h') /* board of squares */
+#define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */
+#define ACS_BLOCK NCURSES_ACS('0') /* solid square block */
/*
* These aren't documented, but a lot of System Vs have them anyway
* (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings).
* The ACS_names may not match AT&T's, our source didn't know them.
*/
-#define ACS_S3 (acs_map['p']) /* scan line 3 */
-#define ACS_S7 (acs_map['r']) /* scan line 7 */
-#define ACS_LEQUAL (acs_map['y']) /* less/equal */
-#define ACS_GEQUAL (acs_map['z']) /* greater/equal */
-#define ACS_PI (acs_map['{']) /* Pi */
-#define ACS_NEQUAL (acs_map['|']) /* not equal */
-#define ACS_STERLING (acs_map['}']) /* UK pound sign */
+#define ACS_S3 NCURSES_ACS('p') /* scan line 3 */
+#define ACS_S7 NCURSES_ACS('r') /* scan line 7 */
+#define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */
+#define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */
+#define ACS_PI NCURSES_ACS('{') /* Pi */
+#define ACS_NEQUAL NCURSES_ACS('|') /* not equal */
+#define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */
/*
* Line drawing ACS names are of the form ACS_trbl, where t is the top, r
@@ -228,21 +287,11 @@ extern NCURSES_EXPORT_VAR(chtype) acs_map[];
#define ACS_SBSB ACS_VLINE
#define ACS_SSSS ACS_PLUS
-#if defined(ERR) && ((ERR) != -1)
#undef ERR
-#endif
-
-#if !defined(ERR)
#define ERR (-1)
-#endif
-#if defined(OK) && ((OK) != 0)
#undef OK
-#endif
-
-#if !defined(OK)
#define OK (0)
-#endif
/* values for the _flags member */
#define _SUBWIN 0x01 /* is this a sub-window? */
@@ -277,26 +326,28 @@ typedef chtype attr_t; /* ...must be at least as wide as chtype */
#undef mblen
#endif
#include <libutf8.h>
-#define _WCHAR_T
-#define _WINT_T
#endif
-#if @NCURSES_MBSTATE_T@
+#if @NEED_WCHAR_H@
#include <wchar.h> /* ...to get mbstate_t, etc. */
#endif
-#ifndef _WCHAR_T
-typedef unsigned long wchar_t;
-#endif /* _WCHAR_T */
-#ifndef _WINT_T
-typedef long int wint_t;
-#endif /* _WINT_T */
+#if @NCURSES_WCHAR_T@
+typedef unsigned short wchar_t@NCURSES_OK_WCHAR_T@;
+#endif
+
+#if @NCURSES_WINT_T@
+typedef unsigned int wint_t@NCURSES_OK_WCHAR_T@;
+#endif
#define CCHARW_MAX 5
typedef struct
{
attr_t attr;
wchar_t chars[CCHARW_MAX];
+#if @NCURSES_EXT_COLORS@
+ int ext_color; /* color pair, must be more than 16-bits */
+#endif
}
cchar_t;
@@ -353,6 +404,9 @@ struct _win_st
#ifdef _XOPEN_SOURCE_EXTENDED
cchar_t _bkgrnd; /* current background char/attribute pair */
+#if @NCURSES_EXT_COLORS@
+ int _color; /* current color-pair for non-space character */
+#endif
#endif
};
@@ -369,8 +423,6 @@ extern NCURSES_EXPORT_VAR(int) TABSIZE;
*/
extern NCURSES_EXPORT_VAR(int) ESCDELAY; /* ESC expire time in milliseconds */
-extern NCURSES_EXPORT_VAR(char) ttytype[]; /* needed for backward compatibility */
-
/*
* These functions are extensions - not in XSI Curses.
*/
@@ -379,41 +431,86 @@ 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) assume_default_colors (int, int);
-extern NCURSES_EXPORT(int) define_key (char *, int);
+extern NCURSES_EXPORT(int) define_key (const char *, int);
+extern NCURSES_EXPORT(int) key_defined (const char *);
extern NCURSES_EXPORT(int) keyok (int, bool);
extern NCURSES_EXPORT(int) resize_term (int, int);
extern NCURSES_EXPORT(int) resizeterm (int, int);
extern NCURSES_EXPORT(int) use_default_colors (void);
extern NCURSES_EXPORT(int) use_extended_names (bool);
+extern NCURSES_EXPORT(int) use_legacy_coding (int);
extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int);
+extern NCURSES_EXPORT(void) nofilter(void);
#else
#define curses_version() NCURSES_VERSION
#endif
/*
+ * This is an extension to support events...
+ */
+#if @NCURSES_EXT_FUNCS@
+#ifdef NCURSES_WGETCH_EVENTS
+#if !defined(__BEOS__) /* Fix _nc_timed_wait() on BEOS... */
+# define NCURSES_EVENT_VERSION 1
+#endif /* !defined(__BEOS__) */
+
+/*
+ * Bits to set in _nc_event.data.flags
+ */
+# define _NC_EVENT_TIMEOUT_MSEC 1
+# define _NC_EVENT_FILE 2
+# define _NC_EVENT_FILE_READABLE 2
+# if 0 /* Not supported yet... */
+# define _NC_EVENT_FILE_WRITABLE 4
+# define _NC_EVENT_FILE_EXCEPTION 8
+# endif
+
+typedef struct
+{
+ int type;
+ union
+ {
+ long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */
+ struct
+ {
+ unsigned int flags;
+ int fd;
+ unsigned int result;
+ } fev; /* _NC_EVENT_FILE */
+ } data;
+} _nc_event;
+
+typedef struct
+{
+ int count;
+ int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */
+ _nc_event *events[1];
+} _nc_eventlist;
+
+extern NCURSES_EXPORT(int) wgetch_events(WINDOW *, _nc_eventlist *); /* experimental */
+extern NCURSES_EXPORT(int) wgetnstr_events(WINDOW *,char *,int,_nc_eventlist *);/* experimental */
+
+#endif /* NCURSES_WGETCH_EVENTS */
+#endif /* NCURSES_EXT_FUNCS */
+
+/*
* GCC (and some other compilers) define '__attribute__'; we're using this
* macro to alert the compiler to flag inconsistencies in printf/scanf-like
* function calls. Just in case '__attribute__' isn't defined, make a dummy.
- * G++ doesn't accept it anyway.
+ * Old versions of G++ do not accept it anyway, at least not consistently with
+ * GCC.
*/
-#if !defined(__GNUC__) && !defined(__attribute__)
+#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))
#define __attribute__(p) /* nothing */
#endif
/*
- * For g++, turn off our macros that use __attribute__ (g++ recognizes some
- * of them, but not at the same version levels as gcc).
- */
-#ifdef __cplusplus
-#undef GCC_NORETURN
-#undef GCC_PRINTF
-#undef GCC_SCANF
-#undef GCC_UNUSED
-#endif
-
-/*
* We cannot define these in ncurses_cfg.h, since they require parameters to be
- * passed (that's non-portable).
+ * passed (that is non-portable). If you happen to be using gcc with warnings
+ * enabled, define
+ * GCC_PRINTF
+ * GCC_SCANF
+ * to improve checking of calls to printw(), etc.
*/
#ifndef GCC_PRINTFLIKE
#if defined(GCC_PRINTF) && !defined(printf)
@@ -552,7 +649,7 @@ extern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */
extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */
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, NCURSES_CONST char *,...) /* implemented */
+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 */
GCC_SCANFLIKE(3,4);
@@ -577,7 +674,7 @@ extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated
extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */
extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */
extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */
-extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, NCURSES_CONST char *,...) /* implemented */
+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 */
GCC_SCANFLIKE(4,5);
@@ -601,9 +698,8 @@ extern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */
extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */
extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */
extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */
-extern NCURSES_EXPORT(int) printw (NCURSES_CONST char *,...) /* implemented */
+extern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */
GCC_PRINTFLIKE(1,2);
-extern NCURSES_EXPORT(int) putp (const char *); /* implemented */
extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */
extern NCURSES_EXPORT(void) qiflush (void); /* implemented */
extern NCURSES_EXPORT(int) raw (void); /* implemented */
@@ -649,13 +745,9 @@ extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *,int,int,int,int); /* implemente
extern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */
extern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */
extern NCURSES_EXPORT(char *) termname (void); /* implemented */
-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(void) timeout (int); /* generated */
extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */
extern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */
-extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* implemented */
extern NCURSES_EXPORT(int) typeahead (int); /* implemented */
extern NCURSES_EXPORT(int) ungetch (int); /* implemented */
extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */
@@ -663,23 +755,23 @@ extern NCURSES_EXPORT(void) use_env (bool); /* implemented */
extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */
extern NCURSES_EXPORT(int) vidputs (chtype, int (*)(int)); /* implemented */
extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */
-extern NCURSES_EXPORT(int) vwprintw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */
-extern NCURSES_EXPORT(int) vw_printw (WINDOW *, NCURSES_CONST char *,va_list); /* 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) waddch (WINDOW *, const chtype); /* implemented */
-extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *const,int); /* implemented */
+extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */
extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */
-extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *const,int); /* implemented */
+extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */
extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */
extern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */
extern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */
extern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */
extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *); /* generated */
-extern NCURSES_EXPORT(int) wattr_on (WINDOW *, NCURSES_CONST attr_t, void *); /* implemented */
-extern NCURSES_EXPORT(int) wattr_off (WINDOW *, NCURSES_CONST attr_t, void *); /* implemented */
-extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */
-extern NCURSES_EXPORT(int) wbkgd (WINDOW *,const chtype); /* implemented */
+extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */
+extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */
+extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */
+extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */
extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */
extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */
extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */
@@ -708,7 +800,7 @@ extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */
extern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */
extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */
extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */
-extern NCURSES_EXPORT(int) wprintw (WINDOW *, NCURSES_CONST char *,...) /* implemented */
+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 */
@@ -725,7 +817,36 @@ extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */
extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
/*
- * vid_attr() was implemented originally based on the draft of XSI curses.
+ * 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) putp (const char *); /* implemented */
+
+#if NCURSES_TPARM_VARARGS
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* implemented */
+#else
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* implemented */
+extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* implemented */
+#endif
+
+extern NCURSES_EXPORT_VAR(char) ttytype[]; /* needed for backward compatibility */
+
+/*
+ * These functions are not in X/Open, but we use them in macro definitions:
+ */
+extern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */
+
+/*
+ * vid_attr() was implemented originally based on a draft of XSI curses.
*/
#ifndef _XOPEN_SOURCE_EXTENDED
#define vid_attr(a,pair,opts) vidattr(a)
@@ -736,7 +857,7 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define NCURSES_ATTR_SHIFT 8
#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT))
-#define A_NORMAL 0L
+#define A_NORMAL (@cf_cv_1UL@ - @cf_cv_1UL@)
#define A_ATTRIBUTES NCURSES_BITS(~(@cf_cv_1UL@ - @cf_cv_1UL@),0)
#define A_CHARTEXT (NCURSES_BITS(@cf_cv_1UL@,0) - @cf_cv_1UL@)
#define A_COLOR NCURSES_BITS(((@cf_cv_1UL@) << 8) - @cf_cv_1UL@,0)
@@ -756,12 +877,34 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define A_TOP NCURSES_BITS(@cf_cv_1UL@,21)
#define A_VERTICAL NCURSES_BITS(@cf_cv_1UL@,22)
-#define COLOR_PAIR(n) NCURSES_BITS(n, 0)
-#define PAIR_NUMBER(a) (((a) & A_COLOR) >> NCURSES_ATTR_SHIFT)
+/*
+ * Most of the pseudo functions are macros that either provide compatibility
+ * with older versions of curses, or provide inline functionality to improve
+ * performance.
+ */
/*
- * pseudo functions
+ * These pseudo functions are always implemented as macros:
*/
+
+#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))
+
+#define getsyx(y,x) do { if(newscr->_leaveok) (y)=(x)=-1; \
+ else getyx(newscr,(y),(x)); \
+ } while(0)
+#define setsyx(y,x) do { if((y)==-1 && (x)==-1) newscr->_leaveok=TRUE; \
+ else {newscr->_leaveok=FALSE;wmove(newscr,(y),(x));} \
+ } while(0)
+
+#ifndef NCURSES_NOMACROS
+
+/*
+ * These miscellaneous pseudo functions are provided for compatibility:
+ */
+
#define wgetstr(w, s) wgetnstr(w, s, -1)
#define getnstr(s, n) wgetnstr(stdscr, s, n)
@@ -774,17 +917,6 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define nocrmode() nocbreak()
#define gettmode()
-#define getyx(win,y,x) (y = (win)?(win)->_cury:ERR, x = (win)?(win)->_curx:ERR)
-#define getbegyx(win,y,x) (y = (win)?(win)->_begy:ERR, x = (win)?(win)->_begx:ERR)
-#define getmaxyx(win,y,x) (y = (win)?((win)->_maxy + 1):ERR, x = (win)?((win)->_maxx + 1):ERR)
-#define getparyx(win,y,x) (y = (win)?(win)->_pary:ERR, x = (win)?(win)->_parx:ERR)
-#define getsyx(y,x) do { if(newscr->_leaveok) (y)=(x)=-1; \
- else getyx(newscr,(y),(x)); \
- } while(0)
-#define setsyx(y,x) do { if((y)==-1 && (x)==-1) newscr->_leaveok=TRUE; \
- else {newscr->_leaveok=FALSE;wmove(newscr,(y),(x));} \
- } while(0)
-
/* It seems older SYSV curses versions define these */
#define getattrs(win) ((win)?(win)->_attrs:A_NORMAL)
#define getcurx(win) ((win)?(win)->_curx:ERR)
@@ -798,11 +930,16 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define wstandout(win) (wattrset(win,A_STANDOUT))
#define wstandend(win) (wattrset(win,A_NORMAL))
-#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
-#define wattron(win,at) wattr_on(win, at, (void *)0)
-#define wattroff(win,at) wattr_off(win, at, (void *)0)
+#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 defined(_XOPEN_SOURCE_EXTENDED) && @NCURSES_EXT_COLORS@
+#define wattrset(win,at) ((win)->_color = PAIR_NUMBER(at), \
+ (win)->_attrs = (at))
+#else
#define wattrset(win,at) ((win)->_attrs = (at))
+#endif
#define scroll(win) wscrl(win,1)
@@ -824,6 +961,12 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define waddchstr(win,str) waddchnstr(win,str,-1)
/*
+ * These apply to the first 256 color pairs.
+ */
+#define COLOR_PAIR(n) NCURSES_BITS(n, 0)
+#define PAIR_NUMBER(a) (NCURSES_CAST(int,(((a) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
+
+/*
* pseudo functions for standard screen
*/
@@ -887,7 +1030,7 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#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))
#define mvwhline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline(win,c,n))
-#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? (chtype)ERR : winch(win))
+#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win))
#define mvwinchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n))
#define mvwinchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winchstr(win,s))
#define mvwinnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n))
@@ -919,16 +1062,26 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n)
/*
- * Some wide-character functions do not depend on the extensions.
+ * Some wide-character functions can be implemented without the extensions.
*/
#define getbkgd(win) ((win)->_bkgd)
#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a))
#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a))
+#if defined(_XOPEN_SOURCE_EXTENDED) && @NCURSES_EXT_COLORS@
+#define wattr_set(win,a,p,opts) ((win)->_attrs = ((a) & ~A_COLOR), \
+ (win)->_color = (p), \
+ OK)
+#define wattr_get(win,a,p,opts) ((void)((a) != 0 && (*(a) = (win)->_attrs)), \
+ (void)((p) != 0 && (*(p) = (win)->_color)), \
+ OK)
+#else
+#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
#define wattr_get(win,a,p,opts) ((void)((a) != 0 && (*(a) = (win)->_attrs)), \
(void)((p) != 0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \
OK)
+#endif
/*
* XSI curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use
@@ -947,6 +1100,8 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list);
#endif
+#endif /* NCURSES_NOMACROS */
+
/*
* Pseudo-character tokens outside ASCII range. The curses wgetch() function
* will return any given one of these only if the corresponding k- capability
diff --git a/contrib/ncurses/include/curses.tail b/contrib/ncurses/include/curses.tail
index 589a2adb7a99..d9f8a3dec59e 100644
--- a/contrib/ncurses/include/curses.tail
+++ b/contrib/ncurses/include/curses.tail
@@ -1,38 +1,81 @@
-/* $Id: curses.tail,v 1.5 2001/12/30 00:01:16 tom Exp $ */
+/*
+ * This file is part of ncurses, designed to be appended after curses.h.in
+ * (see that file for the relevant copyright).
+ */
+/* $Id: curses.tail,v 1.14 2006/05/27 16:28:29 tom Exp $ */
/* mouse interface */
-#define NCURSES_MOUSE_VERSION 1
+
+#if NCURSES_MOUSE_VERSION > 1
+#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 5))
+#else
+#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6))
+#endif
+
+#define NCURSES_BUTTON_RELEASED 001L
+#define NCURSES_BUTTON_PRESSED 002L
+#define NCURSES_BUTTON_CLICKED 004L
+#define NCURSES_DOUBLE_CLICKED 010L
+#define NCURSES_TRIPLE_CLICKED 020L
+#define NCURSES_RESERVED_EVENT 040L
/* event masks */
-#define BUTTON1_RELEASED 000000000001L
-#define BUTTON1_PRESSED 000000000002L
-#define BUTTON1_CLICKED 000000000004L
-#define BUTTON1_DOUBLE_CLICKED 000000000010L
-#define BUTTON1_TRIPLE_CLICKED 000000000020L
-#define BUTTON1_RESERVED_EVENT 000000000040L
-#define BUTTON2_RELEASED 000000000100L
-#define BUTTON2_PRESSED 000000000200L
-#define BUTTON2_CLICKED 000000000400L
-#define BUTTON2_DOUBLE_CLICKED 000000001000L
-#define BUTTON2_TRIPLE_CLICKED 000000002000L
-#define BUTTON2_RESERVED_EVENT 000000004000L
-#define BUTTON3_RELEASED 000000010000L
-#define BUTTON3_PRESSED 000000020000L
-#define BUTTON3_CLICKED 000000040000L
-#define BUTTON3_DOUBLE_CLICKED 000000100000L
-#define BUTTON3_TRIPLE_CLICKED 000000200000L
-#define BUTTON3_RESERVED_EVENT 000000400000L
-#define BUTTON4_RELEASED 000001000000L
-#define BUTTON4_PRESSED 000002000000L
-#define BUTTON4_CLICKED 000004000000L
-#define BUTTON4_DOUBLE_CLICKED 000010000000L
-#define BUTTON4_TRIPLE_CLICKED 000020000000L
-#define BUTTON4_RESERVED_EVENT 000040000000L
-#define BUTTON_CTRL 000100000000L
-#define BUTTON_SHIFT 000200000000L
-#define BUTTON_ALT 000400000000L
-#define ALL_MOUSE_EVENTS 000777777777L
-#define REPORT_MOUSE_POSITION 001000000000L
+#define BUTTON1_RELEASED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)
+#define BUTTON1_PRESSED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED)
+#define BUTTON1_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED)
+#define BUTTON1_DOUBLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED)
+#define BUTTON1_TRIPLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED)
+
+#define BUTTON2_RELEASED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED)
+#define BUTTON2_PRESSED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED)
+#define BUTTON2_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED)
+#define BUTTON2_DOUBLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED)
+#define BUTTON2_TRIPLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED)
+
+#define BUTTON3_RELEASED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED)
+#define BUTTON3_PRESSED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED)
+#define BUTTON3_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED)
+#define BUTTON3_DOUBLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED)
+#define BUTTON3_TRIPLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED)
+
+#define BUTTON4_RELEASED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED)
+#define BUTTON4_PRESSED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED)
+#define BUTTON4_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED)
+#define BUTTON4_DOUBLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED)
+#define BUTTON4_TRIPLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED)
+
+/*
+ * In 32 bits the version-1 scheme does not provide enough space for a 5th
+ * button, unless we choose to change the ABI by omitting the reserved-events.
+ */
+#if NCURSES_MOUSE_VERSION > 1
+
+#define BUTTON5_RELEASED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED)
+#define BUTTON5_PRESSED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
+#define BUTTON5_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED)
+#define BUTTON5_DOUBLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED)
+#define BUTTON5_TRIPLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED)
+
+#define BUTTON_CTRL NCURSES_MOUSE_MASK(6, 0001L)
+#define BUTTON_SHIFT NCURSES_MOUSE_MASK(6, 0002L)
+#define BUTTON_ALT NCURSES_MOUSE_MASK(6, 0004L)
+#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(6, 0010L)
+
+#else
+
+#define BUTTON1_RESERVED_EVENT NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT)
+#define BUTTON2_RESERVED_EVENT NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT)
+#define BUTTON3_RESERVED_EVENT NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT)
+#define BUTTON4_RESERVED_EVENT NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT)
+
+#define BUTTON_CTRL NCURSES_MOUSE_MASK(5, 0001L)
+#define BUTTON_SHIFT NCURSES_MOUSE_MASK(5, 0002L)
+#define BUTTON_ALT NCURSES_MOUSE_MASK(5, 0004L)
+#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(5, 0010L)
+
+#endif
+
+#define ALL_MOUSE_EVENTS (REPORT_MOUSE_POSITION - 1)
/* macros to extract single event-bits from masks */
#define BUTTON_RELEASE(e, x) ((e) & (001 << (6 * ((x) - 1))))
@@ -42,8 +85,6 @@
#define BUTTON_TRIPLE_CLICK(e, x) ((e) & (020 << (6 * ((x) - 1))))
#define BUTTON_RESERVED_EVENT(e, x) ((e) & (040 << (6 * ((x) - 1))))
-typedef unsigned long mmask_t;
-
typedef struct
{
short id; /* ID to distinguish multiple devices */
@@ -57,7 +98,7 @@ extern NCURSES_EXPORT(int) ungetmouse (MEVENT *);
extern NCURSES_EXPORT(mmask_t) mousemask (mmask_t, mmask_t *);
extern NCURSES_EXPORT(bool) wenclose (const WINDOW *, int, int);
extern NCURSES_EXPORT(int) mouseinterval (int);
-extern NCURSES_EXPORT(bool) wmouse_trafo (const WINDOW* win,int* y, int* x, bool to_screen);
+extern NCURSES_EXPORT(bool) wmouse_trafo (const WINDOW*, int*, int*, bool);
extern NCURSES_EXPORT(bool) mouse_trafo (int*, int*, bool); /* generated */
#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
@@ -105,13 +146,12 @@ extern NCURSES_EXPORT(void) trace (const unsigned int);
#define TRACE_CCALLS 0x0400 /* trace per-character calls */
#define TRACE_DATABASE 0x0800 /* trace read/write of terminfo/termcap data */
#define TRACE_ATTRS 0x1000 /* trace attribute updates */
-#define TRACE_MAXIMUM 0xffff /* maximum trace level */
+
+#define TRACE_SHIFT 13 /* number of bits in the trace masks */
+#define TRACE_MAXIMUM ((1 << TRACE_SHIFT) - 1) /* maximum trace level */
#if defined(TRACE) || defined(NCURSES_TEST)
extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable; /* enable optimizations */
-#ifdef _XOPEN_SOURCE_EXTENDED
-extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *);
-#endif
extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
#define OPTIMIZE_MVCUR 0x01 /* cursor movement optimization */
#define OPTIMIZE_HASHMAP 0x02 /* diff hashing to detect scrolls */
@@ -121,6 +161,8 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
#ifdef __cplusplus
+#ifndef NCURSES_NOMACROS
+
/* these names conflict with STL */
#undef box
#undef clear
@@ -128,6 +170,8 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
#undef move
#undef refresh
+#endif /* NCURSES_NOMACROS */
+
}
#endif
diff --git a/contrib/ncurses/include/curses.wide b/contrib/ncurses/include/curses.wide
index c5577541ba44..896ecd265435 100644
--- a/contrib/ncurses/include/curses.wide
+++ b/contrib/ncurses/include/curses.wide
@@ -1,21 +1,26 @@
-
+/*
+ * This file is part of ncurses, designed to be appended after curses.h.in
+ * (see that file for the relevant copyright).
+ */
#ifdef _XOPEN_SOURCE_EXTENDED
-/* $Id: curses.wide,v 1.23 2002/05/11 22:25:33 tom Exp $ */
+/* $Id: curses.wide,v 1.32 2006/05/27 19:44:23 tom Exp $ */
extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
-#define WACS_BSSB (&_nc_wacs['l'])
-#define WACS_SSBB (&_nc_wacs['m'])
-#define WACS_BBSS (&_nc_wacs['k'])
-#define WACS_SBBS (&_nc_wacs['j'])
-#define WACS_SBSS (&_nc_wacs['u'])
-#define WACS_SSSB (&_nc_wacs['t'])
-#define WACS_SSBS (&_nc_wacs['v'])
-#define WACS_BSSS (&_nc_wacs['w'])
-#define WACS_BSBS (&_nc_wacs['q'])
-#define WACS_SBSB (&_nc_wacs['x'])
-#define WACS_SSSS (&_nc_wacs['n'])
+#define NCURSES_WACS(c) (&_nc_wacs[(unsigned char)c])
+
+#define WACS_BSSB NCURSES_WACS('l')
+#define WACS_SSBB NCURSES_WACS('m')
+#define WACS_BBSS NCURSES_WACS('k')
+#define WACS_SBBS NCURSES_WACS('j')
+#define WACS_SBSS NCURSES_WACS('u')
+#define WACS_SSSB NCURSES_WACS('t')
+#define WACS_SSBS NCURSES_WACS('v')
+#define WACS_BSSS NCURSES_WACS('w')
+#define WACS_BSBS NCURSES_WACS('q')
+#define WACS_SBSB NCURSES_WACS('x')
+#define WACS_SSSS NCURSES_WACS('n')
#define WACS_ULCORNER WACS_BSSB
#define WACS_LLCORNER WACS_SSBB
@@ -29,31 +34,31 @@ extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
#define WACS_VLINE WACS_SBSB
#define WACS_PLUS WACS_SSSS
-#define WACS_S1 (&_nc_wacs['o']) /* scan line 1 */
-#define WACS_S9 (&_nc_wacs['s']) /* scan line 9 */
-#define WACS_DIAMOND (&_nc_wacs['`']) /* diamond */
-#define WACS_CKBOARD (&_nc_wacs['a']) /* checker board */
-#define WACS_DEGREE (&_nc_wacs['f']) /* degree symbol */
-#define WACS_PLMINUS (&_nc_wacs['g']) /* plus/minus */
-#define WACS_BULLET (&_nc_wacs['~']) /* bullet */
+#define WACS_S1 NCURSES_WACS('o') /* scan line 1 */
+#define WACS_S9 NCURSES_WACS('s') /* scan line 9 */
+#define WACS_DIAMOND NCURSES_WACS('`') /* diamond */
+#define WACS_CKBOARD NCURSES_WACS('a') /* checker board */
+#define WACS_DEGREE NCURSES_WACS('f') /* degree symbol */
+#define WACS_PLMINUS NCURSES_WACS('g') /* plus/minus */
+#define WACS_BULLET NCURSES_WACS('~') /* bullet */
/* Teletype 5410v1 symbols */
-#define WACS_LARROW (&_nc_wacs[',']) /* arrow left */
-#define WACS_RARROW (&_nc_wacs['+']) /* arrow right */
-#define WACS_DARROW (&_nc_wacs['.']) /* arrow down */
-#define WACS_UARROW (&_nc_wacs['-']) /* arrow up */
-#define WACS_BOARD (&_nc_wacs['h']) /* board of squares */
-#define WACS_LANTERN (&_nc_wacs['i']) /* lantern symbol */
-#define WACS_BLOCK (&_nc_wacs['0']) /* solid square block */
+#define WACS_LARROW NCURSES_WACS(',') /* arrow left */
+#define WACS_RARROW NCURSES_WACS('+') /* arrow right */
+#define WACS_DARROW NCURSES_WACS('.') /* arrow down */
+#define WACS_UARROW NCURSES_WACS('-') /* arrow up */
+#define WACS_BOARD NCURSES_WACS('h') /* board of squares */
+#define WACS_LANTERN NCURSES_WACS('i') /* lantern symbol */
+#define WACS_BLOCK NCURSES_WACS('0') /* solid square block */
/* ncurses extensions */
-#define WACS_S3 (&_nc_wacs['p']) /* scan line 3 */
-#define WACS_S7 (&_nc_wacs['r']) /* scan line 7 */
-#define WACS_LEQUAL (&_nc_wacs['y']) /* less/equal */
-#define WACS_GEQUAL (&_nc_wacs['z']) /* greater/equal */
-#define WACS_PI (&_nc_wacs['{']) /* Pi */
-#define WACS_NEQUAL (&_nc_wacs['|']) /* not equal */
-#define WACS_STERLING (&_nc_wacs['}']) /* UK pound sign */
+#define WACS_S3 NCURSES_WACS('p') /* scan line 3 */
+#define WACS_S7 NCURSES_WACS('r') /* scan line 7 */
+#define WACS_LEQUAL NCURSES_WACS('y') /* less/equal */
+#define WACS_GEQUAL NCURSES_WACS('z') /* greater/equal */
+#define WACS_PI NCURSES_WACS('{') /* Pi */
+#define WACS_NEQUAL NCURSES_WACS('|') /* not equal */
+#define WACS_STERLING NCURSES_WACS('}') /* UK pound sign */
/*
* Function prototypes for wide-character operations.
@@ -74,23 +79,23 @@ extern NCURSES_EXPORT(void) bkgrndset (const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) border_set (const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* generated:WIDEC */
extern NCURSES_EXPORT(int) box_set (WINDOW *, const cchar_t *, const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) echo_wchar (const cchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) erasewchar (wchar_t*); /* implemented:WIDEC */
+extern NCURSES_EXPORT(int) erasewchar (wchar_t*); /* implemented */
extern NCURSES_EXPORT(int) get_wch (wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) get_wstr (wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) getbkgrnd (cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) getcchar (const cchar_t *, wchar_t*, attr_t*, short*, void*); /* implemented */
extern NCURSES_EXPORT(int) getn_wstr (wint_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) hline_set (const cchar_t *, int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) in_wch (NCURSES_CONST cchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) in_wchnstr (NCURSES_CONST cchar_t *, int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) in_wchstr (NCURSES_CONST cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) in_wch (cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) in_wchnstr (cchar_t *, int); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) in_wchstr (cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) innwstr (wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) ins_nwstr (const wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) ins_wch (const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) ins_wstr (const wchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) inwstr (wchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(char*) key_name (wchar_t); /* implemented */
-extern NCURSES_EXPORT(int) killwchar (wchar_t *); /* implemented:WIDEC */
+extern NCURSES_EXPORT(NCURSES_CONST char*) key_name (wchar_t); /* implemented */
+extern NCURSES_EXPORT(int) killwchar (wchar_t *); /* implemented */
extern NCURSES_EXPORT(int) mvadd_wch (int, int, const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvadd_wchnstr (int, int, const cchar_t *, int);/* generated:WIDEC */
extern NCURSES_EXPORT(int) mvadd_wchstr (int, int, const cchar_t *); /* generated:WIDEC */
@@ -100,9 +105,9 @@ extern NCURSES_EXPORT(int) mvget_wch (int, int, wint_t *); /* generated:WIDEC *
extern NCURSES_EXPORT(int) mvget_wstr (int, int, wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvgetn_wstr (int, int, wint_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvhline_set (int, int, const cchar_t *, int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvin_wch (int, int, NCURSES_CONST cchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, NCURSES_CONST cchar_t *, int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvin_wchstr (int, int, NCURSES_CONST cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvin_wch (int, int, cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, cchar_t *, int); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvin_wchstr (int, int, cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvinnwstr (int, int, wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvins_nwstr (int, int, const wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvins_wch (int, int, const cchar_t *); /* generated:WIDEC */
@@ -118,22 +123,22 @@ extern NCURSES_EXPORT(int) mvwget_wch (WINDOW *, int, int, wint_t *); /* generat
extern NCURSES_EXPORT(int) mvwget_wstr (WINDOW *, int, int, wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwgetn_wstr (WINDOW *, int, int, wint_t *, int);/* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwhline_set (WINDOW *, int, int, const cchar_t *, int);/* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, NCURSES_CONST cchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, NCURSES_CONST cchar_t *,int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, NCURSES_CONST cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, cchar_t *,int); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwinnwstr (WINDOW *, int, int, wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwins_nwstr (WINDOW *, int,int, const wchar_t *,int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwins_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwinwstr (WINDOW *, int, int, wchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* missing */
+extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* implemented */
extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, short, const void *); /* implemented */
-extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int); /* missing */
-extern NCURSES_EXPORT(attr_t) term_attrs (void); /* implemented:WIDEC */
-extern NCURSES_EXPORT(int) unget_wch (const wchar_t); /* implemented:WIDEC */
-extern NCURSES_EXPORT(int) vid_attr (attr_t, short, void *); /* implemented:WIDEC */
-extern NCURSES_EXPORT(int) vid_puts (attr_t, short, void *, int (*)(int)); /* implemented:WIDEC */
+extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int); /* implemented */
+extern NCURSES_EXPORT(attr_t) term_attrs (void); /* implemented */
+extern NCURSES_EXPORT(int) unget_wch (const wchar_t); /* implemented */
+extern NCURSES_EXPORT(int) vid_attr (attr_t, short, void *); /* implemented */
+extern NCURSES_EXPORT(int) vid_puts (attr_t, short, void *, int (*)(int)); /* implemented */
extern NCURSES_EXPORT(int) vline_set (const cchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) wadd_wch (WINDOW *,const cchar_t *); /* implemented */
extern NCURSES_EXPORT(int) wadd_wchnstr (WINDOW *,const cchar_t *,int); /* implemented */
@@ -146,12 +151,12 @@ extern NCURSES_EXPORT(int) wborder_set (WINDOW *,const cchar_t*,const cchar_t*,c
extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implemented */
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 *); /* implemented */
+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) whline_set (WINDOW *, const cchar_t *, int); /* implemented */
-extern NCURSES_EXPORT(int) win_wch (WINDOW *, NCURSES_CONST cchar_t *); /* implemented */
-extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, NCURSES_CONST cchar_t *, int); /* implemented */
-extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, NCURSES_CONST cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *); /* implemented */
+extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int); /* implemented */
+extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) winnwstr (WINDOW *, wchar_t *, int); /* implemented */
extern NCURSES_EXPORT(int) wins_nwstr (WINDOW *, const wchar_t *, int); /* implemented */
extern NCURSES_EXPORT(int) wins_wch (WINDOW *, const cchar_t *); /* implemented */
@@ -160,6 +165,8 @@ extern NCURSES_EXPORT(int) winwstr (WINDOW *, wchar_t *); /* implemented */
extern NCURSES_EXPORT(wchar_t*) wunctrl (cchar_t *); /* implemented */
extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* implemented */
+#ifndef NCURSES_NOMACROS
+
/*
* XSI curses macros for XPG4 conformance.
*/
@@ -186,11 +193,9 @@ extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* imple
#define ins_wch(c) wins_wch(stdscr,c)
#define ins_wstr(t) wins_wstr(stdscr,t)
#define inwstr(c) winwstr(stdscr,c)
-#define vid_attr(a,pair,opts) vidattr(a)
#define vline_set(c,n) wvline_set(stdscr,c,n)
#define wadd_wchstr(win,str) wadd_wchnstr(win,str,-1)
#define waddwstr(win,wstr) waddnwstr(win,wstr,-1)
-#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
#define wget_wstr(w,t) wgetn_wstr(w,t,-1)
#define wgetbkgrnd(win,wch) (*wch = win->_bkgrnd, OK)
#define win_wchstr(w,c) win_wchnstr(w,c,-1)
@@ -234,4 +239,11 @@ extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* imple
#define mvwinwstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winwstr(win,c))
#define mvwvline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline_set(win,c,n))
+#endif /* NCURSES_NOMACROS */
+
+#if defined(TRACE) || defined(NCURSES_TEST)
+extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *);
+extern NCURSES_EXPORT(const char *) _nc_viswibuf(const wint_t *);
+#endif
+
#endif /* _XOPEN_SOURCE_EXTENDED */
diff --git a/contrib/ncurses/include/hashed_db.h b/contrib/ncurses/include/hashed_db.h
new file mode 100644
index 000000000000..4dd3933111a8
--- /dev/null
+++ b/contrib/ncurses/include/hashed_db.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+ * Copyright (c) 2006 Free Software 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 2006 *
+ ****************************************************************************/
+
+/*
+ * $Id: hashed_db.h,v 1.5 2006/08/19 15:58:34 tom Exp $
+ */
+
+#ifndef HASHED_DB_H
+#define HASHED_DB_H 1
+
+#include <curses.h>
+
+#if USE_HASHED_DB
+
+#include <db.h>
+
+#ifndef DBN_SUFFIX
+#define DBM_SUFFIX ".db"
+#endif
+
+#ifdef DB_VERSION_MAJOR
+#define HASHED_DB_API DB_VERSION_MAJOR
+#else
+#define HASHED_DB_API 1 /* e.g., db 1.8.5 */
+#endif
+
+extern NCURSES_EXPORT(DB *) _nc_db_open(const char * /* path */, bool /* modify */);
+extern NCURSES_EXPORT(bool) _nc_db_have_data(DBT * /* key */, DBT * /* data */, char ** /* buffer */, int * /* size */);
+extern NCURSES_EXPORT(bool) _nc_db_have_index(DBT * /* key */, DBT * /* data */, char ** /* buffer */, int * /* size */);
+extern NCURSES_EXPORT(int) _nc_db_close(DB * /* db */);
+extern NCURSES_EXPORT(int) _nc_db_first(DB * /* db */, DBT * /* key */, DBT * /* data */);
+extern NCURSES_EXPORT(int) _nc_db_next(DB * /* db */, DBT * /* key */, DBT * /* data */);
+extern NCURSES_EXPORT(int) _nc_db_get(DB * /* db */, DBT * /* key */, DBT * /* data */);
+extern NCURSES_EXPORT(int) _nc_db_put(DB * /* db */, DBT * /* key */, DBT * /* data */);
+
+#endif
+
+#endif /* HASHED_DB_H */
diff --git a/contrib/ncurses/include/nc_alloc.h b/contrib/ncurses/include/nc_alloc.h
index c7317a096c52..ad51408761e7 100644
--- a/contrib/ncurses/include/nc_alloc.h
+++ b/contrib/ncurses/include/nc_alloc.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -29,11 +29,15 @@
/****************************************************************************
* Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 *
****************************************************************************/
-/* $Id: nc_alloc.h,v 1.10 2001/12/08 23:49:44 tom Exp $ */
+/* $Id: nc_alloc.h,v 1.13 2005/01/16 00:27:35 tom Exp $ */
#ifndef NC_ALLOC_included
#define NC_ALLOC_included 1
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#if HAVE_LIBDMALLOC
#include <dmalloc.h> /* Gray Watson's library */
#else
@@ -48,6 +52,13 @@
#define HAVE_LIBDBMALLOC 0
#endif
+#if HAVE_LIBMPATROL
+#include <mpatrol.h> /* Memory-Patrol library */
+#else
+#undef HAVE_LIBMPATROL
+#define HAVE_LIBMPATROL 0
+#endif
+
#ifndef NO_LEAKS
#define NO_LEAKS 0
#endif
@@ -55,9 +66,9 @@
#if HAVE_LIBDBMALLOC || HAVE_LIBDMALLOC || NO_LEAKS
#define HAVE_NC_FREEALL 1
struct termtype;
-extern void _nc_free_and_exit(int) GCC_NORETURN;
-extern void _nc_free_tparm(void);
-extern void _nc_leaks_dump_entry(void);
+extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN;
+extern NCURSES_EXPORT(void) _nc_free_tparm(void);
+extern NCURSES_EXPORT(void) _nc_leaks_dump_entry(void);
#define ExitProgram(code) _nc_free_and_exit(code)
#endif
@@ -80,4 +91,8 @@ extern NCURSES_EXPORT(char *) _nc_strdup(const char *);
#define typeCalloc(type,elts) (type *)calloc((elts),sizeof(type))
#define typeRealloc(type,elts,ptr) (type *)_nc_doalloc(ptr, (elts)*sizeof(type))
+#ifdef __cplusplus
+}
+#endif
+
#endif /* NC_ALLOC_included */
diff --git a/contrib/ncurses/include/nc_tparm.h b/contrib/ncurses/include/nc_tparm.h
new file mode 100644
index 000000000000..d1d769be9a27
--- /dev/null
+++ b/contrib/ncurses/include/nc_tparm.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+ * Copyright (c) 2006 Free Software 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 2006 *
+ ****************************************************************************/
+
+/* $Id: nc_tparm.h,v 1.4 2006/11/26 00:49:25 tom Exp $ */
+
+/*
+ * Cast parameters past the formatting-string for tparm() to match the
+ * assumption of the varargs code.
+ */
+#define TPARM_ARG long
+#define TPARM_N(n) (TPARM_ARG)(n)
+
+#define TPARM_9(a,b,c,d,e,f,g,h,i,j) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g),TPARM_N(h),TPARM_N(i),TPARM_N(j))
+
+#if NCURSES_TPARM_VARARGS
+#define TPARM_8(a,b,c,d,e,f,g,h,i) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g),TPARM_N(h),TPARM_N(i))
+#define TPARM_7(a,b,c,d,e,f,g,h) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g),TPARM_N(h))
+#define TPARM_6(a,b,c,d,e,f,g) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g))
+#define TPARM_5(a,b,c,d,e,f) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f))
+#define TPARM_4(a,b,c,d,e) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e))
+#define TPARM_3(a,b,c,d) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d))
+#define TPARM_2(a,b,c) tparm(a,TPARM_N(b),TPARM_N(c))
+#define TPARM_1(a,b) tparm(a,TPARM_N(b))
+#define TPARM_0(a) tparm(a)
+#else
+#define TPARM_8(a,b,c,d,e,f,g,h,i) TPARM_9(a,b,c,d,e,f,g,h,i,0)
+#define TPARM_7(a,b,c,d,e,f,g,h) TPARM_8(a,b,c,d,e,f,g,h,0)
+#define TPARM_6(a,b,c,d,e,f,g) TPARM_7(a,b,c,d,e,f,g,0)
+#define TPARM_5(a,b,c,d,e,f) TPARM_6(a,b,c,d,e,f,0)
+#define TPARM_4(a,b,c,d,e) TPARM_5(a,b,c,d,e,0)
+#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/contrib/ncurses/include/ncurses_cfg.hin b/contrib/ncurses/include/ncurses_cfg.hin
index 4d40dab8848b..3f8a482a5d84 100644
--- a/contrib/ncurses/include/ncurses_cfg.hin
+++ b/contrib/ncurses/include/ncurses_cfg.hin
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -30,7 +30,7 @@
* Author: Thomas E. Dickey <dickey@clark.net> 1997 *
****************************************************************************/
/*
- * $Id: ncurses_cfg.hin,v 1.3 2000/09/02 17:13:32 tom Exp $
+ * $Id: ncurses_cfg.hin,v 1.7 2005/01/02 01:26:58 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://dickey.his.com/autoconf/
- * ftp://dickey.his.com/autoconf/
+ * http://invisible-island.net/autoconf/
+ * ftp://invisible-island.net/autoconf/
*/
#ifndef NC_CONFIG_H
#define NC_CONFIG_H
@@ -59,4 +59,14 @@
#endif
#endif
+ /* On HP-UX, the C compiler doesn't grok mbstate_t without
+ -D_XOPEN_SOURCE=500. However, this causes problems on
+ IRIX. So, we #define mbstate_t to int in configure.in
+ only for the C compiler if needed. */
+#ifndef __cplusplus
+#ifdef NEED_MBSTATE_T_DEF
+#define mbstate_t int
+#endif
+#endif
+
#endif /* NC_CONFIG_H */
diff --git a/contrib/ncurses/include/ncurses_defs b/contrib/ncurses/include/ncurses_defs
index f4c46cb2c1cf..bba06615d1f2 100644
--- a/contrib/ncurses/include/ncurses_defs
+++ b/contrib/ncurses/include/ncurses_defs
@@ -1,6 +1,6 @@
-# $Id: ncurses_defs,v 1.14 2002/05/11 19:18:32 tom Exp $
+# $Id: ncurses_defs,v 1.30 2006/08/05 19:27:02 tom Exp $
##############################################################################
-# Copyright (c) 2000-2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 2000-2005,2006 Free Software 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,53 +45,77 @@ GCC_NORETURN /* nothing */
GCC_UNUSED /* nothing */
HAVE_BIG_CORE
HAVE_BSD_CGETENT
+HAVE_BSD_SIGNAL_H
+HAVE_BTOWC
HAVE_BUILTIN_H
HAVE_DIRENT_H
HAVE_ERRNO
HAVE_FCNTL_H
+HAVE_FILTER 1
HAVE_FORM_H
+HAVE_GETBEGX 1
+HAVE_GETCURX 1
HAVE_GETCWD
HAVE_GETEGID
HAVE_GETEUID
+HAVE_GETMAXX 1
HAVE_GETNSTR
HAVE_GETOPT_H
HAVE_GETTIMEOFDAY
HAVE_GETTTYNAM
+HAVE_GETWIN 1
+HAVE_GPM_H
HAVE_GPP_BUILTIN_H
HAVE_GXX_BUILTIN_H
HAVE_HAS_KEY
HAVE_ISASCII
HAVE_ISSETUGID
+HAVE_LANGINFO_CODESET
+HAVE_LIBC_H
HAVE_LIBDBMALLOC
HAVE_LIBDMALLOC
HAVE_LIBFORM
HAVE_LIBGPM
HAVE_LIBMENU
+HAVE_LIBMPATROL
HAVE_LIBPANEL
HAVE_LIMITS_H
HAVE_LINK
HAVE_LOCALE_H
HAVE_LONG_FILE_NAMES
-HAVE_MEMCCPY
+HAVE_MBLEN
+HAVE_MBRLEN
+HAVE_MBRTOWC
+HAVE_MBTOWC
HAVE_MENU_H
HAVE_MKSTEMP
+HAVE_MVVLINE 1
+HAVE_MVWVLINE 1
HAVE_NANOSLEEP
HAVE_NC_ALLOC_H
HAVE_PANEL_H
HAVE_POLL
HAVE_POLL_H
+HAVE_PURIFY
+HAVE_PUTWC
+HAVE_PUTWIN 1
HAVE_REGEXPR_H_FUNCS
HAVE_REGEXP_H_FUNCS
HAVE_REGEX_H_FUNCS
HAVE_REMOVE
HAVE_RESIZETERM
+HAVE_RESIZE_TERM
+HAVE_RIPOFFLINE 1
HAVE_SELECT
HAVE_SETBUF
HAVE_SETBUFFER
+HAVE_SETUPTERM 1
HAVE_SETVBUF
HAVE_SIGACTION
HAVE_SIGVEC
HAVE_SIZECHANGE
+HAVE_SLK_COLOR
+HAVE_SLK_INIT 1
HAVE_STRDUP
HAVE_STRSTR
HAVE_SYMLINK
@@ -107,10 +131,17 @@ HAVE_SYS_TIME_SELECT
HAVE_TCGETATTR
HAVE_TCGETPGRP
HAVE_TELL
+HAVE_TERMATTRS 1
HAVE_TERMIOS_H
HAVE_TERMIO_H
+HAVE_TERMNAME 1
+HAVE_TERM_H 1
+HAVE_TGETENT 1
+HAVE_TIGETNUM 1
+HAVE_TIGETSTR 1
HAVE_TIMES
HAVE_TTYENT_H
+HAVE_TYPEAHEAD 1
HAVE_TYPEINFO
HAVE_TYPE_ATTR_T
HAVE_TYPE_SIGACTION
@@ -120,13 +151,17 @@ HAVE_USE_DEFAULT_COLORS
HAVE_VFSCANF
HAVE_VSNPRINTF
HAVE_VSSCANF
+HAVE_WCTOB
+HAVE_WCTOMB
+HAVE_WCTYPE_H
+HAVE_WINSSTR 1
HAVE_WORKING_POLL
HAVE_WRESIZE
HAVE__DOSCAN
MIXEDCASE_FILENAMES
NCURSES_EXPANDED
+NCURSES_EXT_COLORS
NCURSES_EXT_FUNCS
-NCURSES_NOMACROS
NCURSES_NO_PADDING
NCURSES_PATHSEP ':'
NDEBUG
@@ -147,7 +182,9 @@ USE_DATABASE
USE_GETCAP
USE_GETCAP_CACHE
USE_HARD_TABS
+USE_HASHED_DB
USE_HASHMAP
+USE_HOME_TERMINFO
USE_LINKS
USE_MY_MEMMOVE
USE_OK_BCOPY
@@ -159,6 +196,7 @@ USE_STDIO_VSCAN
USE_STRSTREAM_VSCAN
USE_STRSTREAM_VSCAN_CAST
USE_SYMLINKS
+USE_SYSMOUSE
USE_TERMCAP
USE_WIDEC_SUPPORT
USE_XMC_SUPPORT
diff --git a/contrib/ncurses/include/ncurses_dll.h b/contrib/ncurses/include/ncurses_dll.h
index c961c3e0a49e..c47e5ec548e2 100644
--- a/contrib/ncurses/include/ncurses_dll.h
+++ b/contrib/ncurses/include/ncurses_dll.h
@@ -1,10 +1,41 @@
-/* $Id: ncurses_dll.h,v 1.2 2001/12/09 01:36:34 tom Exp $ */
+/****************************************************************************
+ * Copyright (c) 1998-2004,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 *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+/* $Id: ncurses_dll.h,v 1.5 2006/04/22 22:07:51 tom Exp $ */
#ifndef NCURSES_DLL_H_incl
#define NCURSES_DLL_H_incl 1
-#undef NCURSES_DLL /* cygwin dll not implemented */
-#define NCURSES_STATIC /* cygwin dll not implemented */
+/* no longer needed on cygwin or mingw, thanks to auto-import */
+/* but this structure may be useful at some point for an MSVC build */
+/* so, for now unconditionally define the important flags */
+/* "the right way" for proper static and dll+auto-import behavior */
+#undef NCURSES_DLL
+#define NCURSES_STATIC
#if defined(__CYGWIN__)
# if defined(NCURSES_DLL)
@@ -14,8 +45,8 @@
# endif
# undef NCURSES_IMPEXP
# undef NCURSES_API
-# undef NCURSES_EXPORT(type)
-# undef NCURSES_EXPORT_VAR(type)
+# undef NCURSES_EXPORT
+# undef NCURSES_EXPORT_VAR
# if defined(NCURSES_DLL)
/* building a DLL */
# define NCURSES_IMPEXP __declspec(dllexport)
diff --git a/contrib/ncurses/include/term_entry.h b/contrib/ncurses/include/term_entry.h
index a066be9948d1..c880c3a72175 100644
--- a/contrib/ncurses/include/term_entry.h
+++ b/contrib/ncurses/include/term_entry.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2004 Free 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,9 +29,10 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1998-2004 *
****************************************************************************/
-/* $Id: term_entry.h,v 1.32 2001/03/24 21:53:10 tom Exp $ */
+/* $Id: term_entry.h,v 1.34 2005/07/16 21:15:07 tom Exp $ */
/*
* term_entry.h -- interface to entry-manipulation code
@@ -56,7 +57,7 @@ typedef struct entry {
{
char *name;
struct entry *link;
- long line;
+ long line;
}
uses[MAX_USES];
int ncrosslinks;
@@ -133,6 +134,9 @@ extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *);
/* lib_acs.c */
extern NCURSES_EXPORT(void) _nc_init_acs (void); /* corresponds to traditional 'init_acs()' */
+/* lib_termcap.c: trim sgr0 string for termcap users */
+extern NCURSES_EXPORT(char *) _nc_trim_sgr0 (TERMTYPE *);
+
/* parse_entry.c: entry-parsing code */
#if NCURSES_XNAMES
extern NCURSES_EXPORT_VAR(bool) _nc_user_definable;
@@ -148,9 +152,11 @@ extern NCURSES_EXPORT(void) _nc_write_entry (TERMTYPE *const);
/* comp_parse.c: entry list handling */
extern NCURSES_EXPORT(void) _nc_read_entry_source (FILE*, char*, int, bool, bool (*)(ENTRY*));
extern NCURSES_EXPORT(bool) _nc_entry_match (char *, char *);
-extern NCURSES_EXPORT(int) _nc_resolve_uses (bool);
+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 *);
+extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype)(TERMTYPE *); /* obs 20040705 */
+extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE *, bool);
/* trace_xnames.c */
extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *);
diff --git a/contrib/ncurses/include/tic.h b/contrib/ncurses/include/tic.h
index 3a3d8e24c0f2..7d9e9d5b7d1c 100644
--- a/contrib/ncurses/include/tic.h
+++ b/contrib/ncurses/include/tic.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,10 +29,11 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996 on *
****************************************************************************/
/*
- * $Id: tic.h,v 1.41 2002/06/01 19:07:02 tom Exp $
+ * $Id: tic.h,v 1.55 2006/08/19 14:17:49 tom Exp $
* tic.h - Global variables and structures for the terminfo
* compiler.
*/
@@ -76,6 +77,15 @@ extern "C" {
#define MAGIC 0432 /* first two bytes of a compiled entry */
+#undef BYTE
+#define BYTE(p,n) (unsigned char)((p)[n])
+
+#define IS_NEG1(p) ((BYTE(p,0) == 0377) && (BYTE(p,1) == 0377))
+#define IS_NEG2(p) ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377))
+#define LOW_MSB(p) (BYTE(p,0) + 256*BYTE(p,1))
+
+#define IS_TIC_MAGIC(p) (LOW_MSB(p) == MAGIC)
+
/*
* The "maximum" here is misleading; XSI guarantees minimum values, which a
* given implementation may exceed.
@@ -83,13 +93,14 @@ extern "C" {
#define MAX_NAME_SIZE 512 /* maximum legal name field size (XSI:127) */
#define MAX_ENTRY_SIZE 4096 /* maximum legal entry size */
-/* The maximum size of individual name or alias is guaranteed in XSI to
- * be 14, since that corresponds to the older filename lengths. Newer
- * systems allow longer aliases, though not many terminal descriptions
- * are written to use them.
+/*
+ * The maximum size of individual name or alias is guaranteed in XSI to be at
+ * least 14, since that corresponds to the older filename lengths. Newer
+ * systems allow longer aliases, though not many terminal descriptions are
+ * written to use them. The MAX_ALIAS symbol is used for warnings.
*/
#if HAVE_LONG_FILE_NAMES
-#define MAX_ALIAS 32 /* POSIX minimum for PATH_MAX */
+#define MAX_ALIAS 32 /* smaller than POSIX minimum for PATH_MAX */
#else
#define MAX_ALIAS 14 /* SVr3 filename length */
#endif
@@ -104,10 +115,10 @@ extern "C" {
*/
#define MAX_DEBUG_LEVEL 15
-#define DEBUG_LEVEL(n) ((n) << 12) /* see TRACE_MAXIMUM */
+#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), \
_nc_tracing |= DEBUG_LEVEL(n)
#ifdef TRACE
@@ -203,8 +214,6 @@ struct alias
const char *source;
};
-extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
-
extern NCURSES_EXPORT_VAR(const struct name_table_entry * const) _nc_info_hash_table[];
extern NCURSES_EXPORT_VAR(const struct name_table_entry * const) _nc_cap_hash_table[];
@@ -217,18 +226,18 @@ extern NCURSES_EXPORT(const struct name_table_entry * const *) _nc_get_hash_tabl
#define NOTFOUND ((struct name_table_entry *) 0)
/* out-of-band values for representing absent capabilities */
-#define ABSENT_BOOLEAN (-1) /* 255 */
+#define ABSENT_BOOLEAN ((signed char)-1) /* 255 */
#define ABSENT_NUMERIC (-1)
#define ABSENT_STRING (char *)0
/* out-of-band values for representing cancels */
-#define CANCELLED_BOOLEAN (char)(-2) /* 254 */
+#define CANCELLED_BOOLEAN ((signed char)-2) /* 254 */
#define CANCELLED_NUMERIC (-2)
#define CANCELLED_STRING (char *)(-1)
#define VALID_BOOLEAN(s) ((unsigned char)(s) <= 1) /* reject "-1" */
#define VALID_NUMERIC(s) ((s) >= 0)
-#define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING)
+#define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING)
/* termcap entries longer than this may break old binaries */
#define MAX_TERMCAP_LENGTH 1023
@@ -241,6 +250,10 @@ extern NCURSES_EXPORT(const struct name_table_entry * const *) _nc_get_hash_tabl
#endif
/* access.c */
+extern NCURSES_EXPORT(unsigned) _nc_pathlast (const char *);
+extern NCURSES_EXPORT(bool) _nc_is_abs_path (const char *);
+extern NCURSES_EXPORT(bool) _nc_is_dir_path (const char *);
+extern NCURSES_EXPORT(bool) _nc_is_file_path (const char *);
extern NCURSES_EXPORT(char *) _nc_basename (char *);
extern NCURSES_EXPORT(char *) _nc_rootname (char *);
@@ -266,11 +279,12 @@ extern NCURSES_EXPORT_VAR(long) _nc_start_line;
#define SYN_TERMCAP 1
/* comp_error.c: warning & abort messages */
-extern NCURSES_EXPORT(void) _nc_set_source (const char *const name);
+extern NCURSES_EXPORT(const char *) _nc_get_source (void);
+extern NCURSES_EXPORT(void) _nc_err_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_get_type (char *name);
-extern NCURSES_EXPORT(void) _nc_set_type (const char *const name);
+extern NCURSES_EXPORT(void) _nc_set_source (const char *const);
+extern NCURSES_EXPORT(void) _nc_set_type (const char *const);
extern NCURSES_EXPORT(void) _nc_syserr_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
-extern NCURSES_EXPORT(void) _nc_err_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_warning (const char *const,...) GCC_PRINTFLIKE(1,2);
extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings;
@@ -278,20 +292,50 @@ extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings;
extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int);
/* comp_scan.c: decode string from readable form */
-extern NCURSES_EXPORT(char) _nc_trans_string (char *, char *);
+extern NCURSES_EXPORT(int) _nc_trans_string (char *, char *);
/* captoinfo.c: capability conversion */
extern NCURSES_EXPORT(char *) _nc_captoinfo (const char *, const char *, int const);
extern NCURSES_EXPORT(char *) _nc_infotocap (const char *, const char *, int const);
+/* home_terminfo.c */
+extern NCURSES_EXPORT(char *) _nc_home_terminfo (void);
+
+/* lib_tparm.c */
+#define NUM_PARM 9
+
+extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
+
+extern NCURSES_EXPORT(int) _nc_tparm_analyze(const char *, char **, int *);
+
/* lib_tputs.c */
extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */
/* comp_main.c: compiler main */
extern const char * _nc_progname;
-/* read_entry.c */
+/* db_iterator.c */
+typedef enum {
+ dbdTIC = 0,
+#if USE_DATABASE
+ dbdEnvOnce,
+ dbdHome,
+ dbdEnvList,
+ dbdCfgList,
+ dbdCfgOnce,
+#endif
+#if USE_TERMCAP
+ dbdEnvOnce2,
+ dbdEnvList2,
+ dbdCfgList2,
+#endif
+ dbdLAST
+} DBDIRS;
+
+extern NCURSES_EXPORT(const char *) _nc_next_db(DBDIRS *, int *);
extern NCURSES_EXPORT(const char *) _nc_tic_dir (const char *);
+extern NCURSES_EXPORT(void) _nc_first_db(DBDIRS *, int *);
+extern NCURSES_EXPORT(void) _nc_last_db(void);
/* write_entry.c */
extern NCURSES_EXPORT(int) _nc_tic_written (void);
diff --git a/contrib/ncurses/install-sh b/contrib/ncurses/install-sh
index ebc66913e940..9f59f0be50e4 100755
--- a/contrib/ncurses/install-sh
+++ b/contrib/ncurses/install-sh
@@ -109,38 +109,39 @@ then
echo "install: no input file specified"
exit 1
else
- true
+ :
fi
if [ x"$dir_arg" != x ]; then
dst=$src
src=""
-
+
if [ -d $dst ]; then
instcmd=:
+ chmodcmd=""
else
- instcmd=mkdir
+ instcmd=$mkdirprog
fi
else
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
-# might cause directories to be created, which would be especially bad
+# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if [ -f $src -o -d $src ]
then
- true
+ :
else
echo "install: $src does not exist"
exit 1
fi
-
+
if [ x"$dst" = x ]
then
echo "install: no destination specified"
exit 1
else
- true
+ :
fi
# If destination is a directory, append the input filename; if your system
@@ -150,7 +151,7 @@ else
then
dst="$dst"/`basename $src`
else
- true
+ :
fi
fi
@@ -162,8 +163,8 @@ dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
# Skip lots of stat calls in the usual case.
if [ ! -d "$dstdir" ]; then
-defaultIFS='
-'
+defaultIFS='
+ '
IFS="${IFS-${defaultIFS}}"
oIFS="${IFS}"
@@ -182,7 +183,7 @@ while [ $# -ne 0 ] ; do
then
$mkdirprog "${pathcomp}"
else
- true
+ :
fi
pathcomp="${pathcomp}/"
@@ -193,29 +194,29 @@ if [ x"$dir_arg" != x ]
then
$doit $instcmd $dst &&
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
else
# If we're going to rename the final executable, determine the name now.
- if [ x"$transformarg" = x ]
+ if [ x"$transformarg" = x ]
then
dstfile=`basename $dst`
else
- dstfile=`basename $dst $transformbasename |
+ dstfile=`basename $dst $transformbasename |
sed $transformarg`$transformbasename
fi
# don't allow the sed command to completely eliminate the filename
- if [ x"$dstfile" = x ]
+ if [ x"$dstfile" = x ]
then
dstfile=`basename $dst`
else
- true
+ :
fi
# Make a temp file name in the proper directory.
@@ -234,15 +235,15 @@ else
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $instcmd $src $dsttmp" command.
- if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
- if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
- if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
- if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
+ if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
+ if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
+ if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
+ if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
# Now rename the file to the real destination.
$doit $rmcmd -f $dstdir/$dstfile &&
- $doit $mvcmd $dsttmp $dstdir/$dstfile
+ $doit $mvcmd $dsttmp $dstdir/$dstfile
fi &&
diff --git a/contrib/ncurses/man/Makefile.in b/contrib/ncurses/man/Makefile.in
index 56dbe0933e96..8a24d843a242 100644
--- a/contrib/ncurses/man/Makefile.in
+++ b/contrib/ncurses/man/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.33 2002/01/19 22:49:44 tom Exp $
+# $Id: Makefile.in,v 1.39 2005/07/16 17:26:45 tom Exp $
##############################################################################
-# Copyright (c) 1998,2000,2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2003,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 "Software"), #
@@ -27,7 +27,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey 1996,1997
#
# Makefile for ncurses manual pages.
#
@@ -49,6 +49,7 @@ INSTALL_DATA = @INSTALL_DATA@
all \
sources : terminfo.5
depend :
+tags :
$(DESTDIR)$(mandir) :
sh $(srcdir)/../mkinstalldirs $@
@@ -56,10 +57,10 @@ $(DESTDIR)$(mandir) :
EDITARGS = $(DESTDIR)$(mandir) $(srcdir) terminfo.5 $(srcdir)/*.[0-9]*
install install.man : terminfo.5 $(DESTDIR)$(mandir)
- sh ./edit_man.sh installing $(EDITARGS)
+ sh ../edit_man.sh normal installing $(EDITARGS)
uninstall uninstall.man :
- -sh ./edit_man.sh removing $(EDITARGS)
+ -sh ../edit_man.sh normal removing $(EDITARGS)
# We compose terminfo.5 from the real sources...
CAPLIST=$(srcdir)/../include/@TERMINFO_CAPS@
@@ -72,8 +73,8 @@ mostlyclean :
clean: mostlyclean
rm -f terminfo.5
-edit_man.sed : make_sed.sh @MANPAGE_RENAMES@
- sh $srcdir/make_sed.sh @MANPAGE_RENAMES@ >edit_man.sed
+../edit_man.sed : make_sed.sh @MANPAGE_RENAMES@
+ sh $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed
distclean realclean: clean
- rm -f Makefile edit_man.*
+ rm -f Makefile ../edit_man.*
diff --git a/contrib/ncurses/man/captoinfo.1m b/contrib/ncurses/man/captoinfo.1m
index 40c09f5a213f..1bb6dec82fbf 100644
--- a/contrib/ncurses/man/captoinfo.1m
+++ b/contrib/ncurses/man/captoinfo.1m
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -27,7 +27,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: captoinfo.1m,v 1.16 2000/08/13 01:56:49 tom Exp $
+.\" $Id: captoinfo.1m,v 1.20 2006/05/13 15:14:01 tom Exp $
.TH captoinfo 1M ""
.ds n 5
.ds d @TERMINFO@
@@ -40,7 +40,7 @@
one found, an equivalent \fBterminfo\fR description is written to standard
output. Termcap \fBtc\fR capabilities are translated directly to terminfo
\fBuse\fR capabilities.
-
+.PP
If no \fIfile\fR is given, then the environment variable \fBTERMCAP\fR is used
for the filename or entry. If \fBTERMCAP\fR is a full pathname to a file, only
the terminal whose name is specified in the environment variable \fBTERM\fR is
@@ -151,7 +151,6 @@ be composed into an \fBacsc\fR string. The double-line capabilities and
IBM's AIX has a terminfo facility descended from SVr1 terminfo but incompatible
with the SVr4 format. The following AIX extensions are automatically
translated:
-.PP
.TS
c c
l l.
@@ -174,11 +173,16 @@ These will be discarded with a warning message.
.SH NOTES
This utility is actually a link to \fItic\fR(1M), running in \fI-I\fR mode.
You can use other \fItic\fR options such as \fB-f\fR and \fB-x\fR.
-
+.PP
The trace option isn't identical to SVr4's. Under SVr4, instead of following
-the -v with a trace level n, you repeat it n times.
+the \fB-v\fR with a trace level n, you repeat it n times.
.SH SEE ALSO
-\fBcurses\fR(3X), \fB@INFOCMP@\fR(1M), \fBterminfo\fR(\*n)
+\fB@INFOCMP@\fR(1M),
+\fBcurses\fR(3X),
+\fBterminfo\fR(\*n)
+.PP
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.SH AUTHOR
Eric S. Raymond <esr@snark.thyrsus.com>
.\"#
diff --git a/contrib/ncurses/man/clear.1 b/contrib/ncurses/man/clear.1
index 4c4991f1d1a3..41c4cadc7796 100644
--- a/contrib/ncurses/man/clear.1
+++ b/contrib/ncurses/man/clear.1
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2000,2006 Free 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: clear.1,v 1.3 2000/07/15 23:59:35 china Exp $
+.\" $Id: clear.1,v 1.5 2006/07/01 21:55:09 tom Exp $
.TH clear 1 ""
.ds n 5
.SH NAME
@@ -38,8 +38,13 @@
\fBclear\fR clears your screen if this is possible. It looks in the
environment for the terminal type and then in the \fBterminfo\fR database to
figure out how to clear the screen.
+.PP
+\fBclear\fR ignores any command-line parameters that may be present.
.SH SEE ALSO
\fB@TPUT@\fR(1), \fBterminfo\fR(\*n)
+.PP
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_add_wch.3x b/contrib/ncurses/man/curs_add_wch.3x
index fae59ae0b6cd..91228d450b20 100644
--- a/contrib/ncurses/man/curs_add_wch.3x
+++ b/contrib/ncurses/man/curs_add_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2001-2002,2006 Free 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_add_wch.3x,v 1.4 2002/02/16 22:28:43 tom Exp $
+.\" $Id: curs_add_wch.3x,v 1.5 2006/12/02 17:02:35 tom Exp $
.TH curs_add_wch 3X ""
.SH NAME
\fBadd_wch\fP,
@@ -121,6 +121,7 @@ Those are not currently implemented in \fBncurses\fP.
.SH SEE ALSO
.PP
\fBcurses\fR(3X),
+\fBcurs_addch\fR(3X),
\fBcurs_attr_get\fR(3X),
\fBcurs_clear\fR(3X),
\fBcurs_outopts\fR(3X),
diff --git a/contrib/ncurses/man/curs_add_wchstr.3x b/contrib/ncurses/man/curs_add_wchstr.3x
index 17d344698500..f84c2cb98c24 100644
--- a/contrib/ncurses/man/curs_add_wchstr.3x
+++ b/contrib/ncurses/man/curs_add_wchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2004,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 *
@@ -26,10 +26,9 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_add_wchstr.3x,v 1.1 2002/02/23 22:15:55 tom Exp $
+.\" $Id: curs_add_wchstr.3x,v 1.6 2005/01/02 01:28:49 tom Exp $
.TH curs_add_wchstr 3X ""
.SH NAME
-.PP
\fBadd_wchstr\fR,
\fBadd_wchnstr\fR,
\fBwadd_wchstr\fR,
@@ -40,7 +39,7 @@
\fBmvwadd_wchnstr\fR \- add an array of complex characters (and attributes) to a curses window
.SH SYNOPSIS
.B #include <curses.h>
-
+.PP
.nf
\fBint add_wchstr(const cchar_t *\fR\fIwchstr\fR\fB);\fR
.br
@@ -73,7 +72,7 @@ On the other hand, they do not perform checking
they do not advance the current cursor position,
they do not expand other control characters to ^-escapes,
and they truncate the string if it crosses the right margin,
-rather then wrapping it around to the new line.
+rather than wrapping it around to the new line.
.PP
These routines end successfully
on encountering a null \fIcchar_t\fR, or
@@ -88,7 +87,7 @@ All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success.
All these entry points are described in the XSI Curses standard, Issue 4.
.SH SEE ALSO
\fBcurses\fR(3X),
-\fBcurs_addchstr\fR(3X)
+\fBcurs_addchstr\fR(3X),
\fBcurs_addwstr\fR(3X)
.\"#
.\"# The following sets edit modes for GNU EMACS
diff --git a/contrib/ncurses/man/curs_addch.3x b/contrib/ncurses/man/curs_addch.3x
index 63e05269d0b7..d8b645d7c359 100644
--- a/contrib/ncurses/man/curs_addch.3x
+++ b/contrib/ncurses/man/curs_addch.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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: curs_addch.3x,v 1.17 2000/07/01 19:53:01 tom Exp $
+.\" $Id: curs_addch.3x,v 1.25 2006/12/02 17:02:22 tom Exp $
.TH curs_addch 3X ""
.SH NAME
\fBaddch\fR, \fBwaddch\fR, \fBmvaddch\fR, \fBmvwaddch\fR,
@@ -35,18 +35,18 @@
\fBwechochar\fR - add a character (with attributes) to a \fBcurses\fR window, then advance the cursor
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
-\fBint addch(chtype ch);\fR
+.PP
+\fBint addch(const chtype ch);\fR
.br
-\fBint waddch(WINDOW *win, chtype ch);\fR
+\fBint waddch(WINDOW *win, const chtype ch);\fR
.br
-\fBint mvaddch(int y, int x, chtype ch);\fR
+\fBint mvaddch(int y, int x, const chtype ch);\fR
.br
-\fBint mvwaddch(WINDOW *win, int y, int x, chtype ch);\fR
+\fBint mvwaddch(WINDOW *win, int y, int x, const chtype ch);\fR
.br
-\fBint echochar(chtype ch);\fR
+\fBint echochar(const chtype ch);\fR
.br
-\fBint wechochar(WINDOW *win, chtype ch);\fR
+\fBint wechochar(WINDOW *win, const chtype ch);\fR
.br
.SH DESCRIPTION
The \fBaddch\fR, \fBwaddch\fR, \fBmvaddch\fR and \fBmvwaddch\fR routines put
@@ -55,25 +55,29 @@ 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.
-
-If \fIch\fR is a tab, newline, or backspace, the cursor is moved appropriately
-within the window. Backspace moves the cursor one character left; at the left
-edge of a window it does nothing. 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). Tabs are considered to be at every eighth column.
-
+.PP
+If \fIch\fR is a tab, newline, or backspace,
+the cursor is moved appropriately within the window.
+Backspace moves the cursor one character left; at the left
+edge of a window it does nothing.
+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.
+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
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 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.
-
+.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
@@ -84,9 +88,9 @@ their equivalents.
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
below is used if the \fBacsc\fR capability doesn't define a terminal-specific
-replacement for it (but see the EXTENSIONS section below). The names are
-taken from VT100 nomenclature.
-
+replacement for it.
+The names are taken from VT100 nomenclature.
+.PP
.TS
l l l
_ _ _
@@ -125,7 +129,6 @@ ACS_ULCORNER + upper left-hand corner
ACS_URCORNER + upper right-hand corner
ACS_VLINE | 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
@@ -137,7 +140,7 @@ 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.
-
+.LP
Some ACS symbols
(ACS_S3,
ACS_S7,
@@ -151,10 +154,25 @@ 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).
+.LP
+The \fBTABSIZE\fR variable is implemented in some versions of curses,
+but is not part of X/Open curses.
+.LP
+If \fIch\fR 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.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_attr\fR(3X), \fBcurs_clear\fR(3X),
-\fBcurs_inch\fR(3X), \fBcurs_outopts\fR(3X), \fBcurs_refresh\fR(3X),
+\fBcurses\fR(3X),
+\fBcurs_attr\fR(3X),
+\fBcurs_clear\fR(3X),
+\fBcurs_inch\fR(3X),
+\fBcurs_outopts\fR(3X),
+\fBcurs_refresh\fR(3X),
\fBputc\fR(3S).
+.PP
+Comparable functions in the wide-character (ncursesw) library are
+described in
+\fBcurs_add_wch\fR(3X).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_addchstr.3x b/contrib/ncurses/man/curs_addchstr.3x
index 0d9ea29f0280..ac1b040021e5 100644
--- a/contrib/ncurses/man/curs_addchstr.3x
+++ b/contrib/ncurses/man/curs_addchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,15 +26,24 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addchstr.3x,v 1.7 2000/07/01 19:53:33 tom Exp $
+.\" $Id: curs_addchstr.3x,v 1.12 2006/12/02 17:02:45 tom Exp $
.TH curs_addchstr 3X ""
+.na
+.hy 0
.SH NAME
-\fBaddchstr\fR, \fBaddchnstr\fR, \fBwaddchstr\fR,
-\fBwaddchnstr\fR, \fBmvaddchstr\fR, \fBmvaddchnstr\fR, \fBmvwaddchstr\fR,
+\fBaddchstr\fR,
+\fBaddchnstr\fR,
+\fBwaddchstr\fR,
+\fBwaddchnstr\fR,
+\fBmvaddchstr\fR,
+\fBmvaddchnstr\fR,
+\fBmvwaddchstr\fR,
\fBmvwaddchnstr\fR - add a string of characters (and attributes) to a \fBcurses\fR window
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.PP
\fBint addchstr(const chtype *chstr);\fR
.br
\fBint addchnstr(const chtype *chstr, int n);\fR
@@ -56,25 +65,32 @@ the current cursor position. The four routines with \fIn\fR as the last
argument copy at most \fIn\fR elements, but no more than will fit on the line.
If \fBn\fR=\fB-1\fR then the whole string is copied, to the maximum number of
characters that will fit on the line.
-
+.PP
The window cursor is \fInot\fR advanced, and these routines work faster than
-\fBwaddnstr\fR. On the other hand, they don't perform any kind of checking
-(such as for the newline, backspace, or carriage return characters), they don't
-advance the current cursor position, they don't expand other control characters
+\fBwaddnstr\fR. On the other hand, they do not perform any kind of checking
+(such as for the newline, backspace, or carriage return characters), they do not
+advance the current cursor position, they do not expand other control characters
to ^-escapes, and they truncate the string if it crosses the right margin,
-rather then wrapping it around to the new line.
-
+rather than wrapping it around to the new line.
.SH RETURN VALUES
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.
+.PP
+X/Open does not define any error conditions.
+This implementation returns an error
+if the window pointer is null.
.SH NOTES
Note that all routines except \fBwaddchnstr\fR may be macros.
.SH PORTABILITY
-All these entry points are described in the XSI Curses standard, Issue 4.
+These entry points 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_add_wchstr\fR(3X).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_addstr.3x b/contrib/ncurses/man/curs_addstr.3x
index a845acbca7e9..488b9dd8e752 100644
--- a/contrib/ncurses/man/curs_addstr.3x
+++ b/contrib/ncurses/man/curs_addstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,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 *
@@ -26,8 +26,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addstr.3x,v 1.10 2002/03/09 23:09:29 tom Exp $
+.\" $Id: curs_addstr.3x,v 1.13 2005/05/15 16:17:14 tom Exp $
.TH curs_addstr 3X ""
+.na
+.hy 0
.SH NAME
\fBaddstr\fR,
\fBaddnstr\fR,
@@ -37,10 +39,12 @@
\fBmvaddnstr\fR,
\fBmvwaddstr\fR,
\fBmvwaddnstr\fR - add a string of characters to a \fBcurses\fR window and advance cursor
+.ad
+.hy
.SH SYNOPSIS
.nf
\fB#include <curses.h>\fR
-
+.PP
\fBint addstr(const char *\fR\fIstr\fR\fB);\fR
.br
\fBint addnstr(const char *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
@@ -70,6 +74,12 @@ or until a terminating null is reached.
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.
+.PP
+X/Open does not define any error conditions.
+This implementation returns an error
+if the window pointer is null or
+if the string pointer is null or
+if the corresponding calls to \fBwaddch\fP return an error.
.SH NOTES
Note that all of these routines except \fBwaddstr\fR and \fBwaddnstr\fR may be
macros.
diff --git a/contrib/ncurses/man/curs_addwstr.3x b/contrib/ncurses/man/curs_addwstr.3x
index 4ce7c2301e6a..63d274608cc7 100644
--- a/contrib/ncurses/man/curs_addwstr.3x
+++ b/contrib/ncurses/man/curs_addwstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2005,2006 Free 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,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addwstr.3x,v 1.2 2002/03/09 23:16:59 tom Exp $
+.\" $Id: curs_addwstr.3x,v 1.7 2006/02/25 20:59:08 tom Exp $
.TH curs_addwstr 3X ""
+.na
+.hy 0
.SH NAME
\fBaddwstr\fR,
\fBaddnwstr\fR,
@@ -37,10 +39,12 @@
\fBmvaddnwstr\fR,
\fBmvwaddwstr\fR,
\fBmvwaddnwstr\fR \- add a string of wide characters to a \fBcurses\fR window and advance cursor
+.ad
+.hy
.SH SYNOPSIS
.nf
\fB#include <curses.h>\fR
-
+.PP
\fBint addwstr(const wchar_t *\fR\fIwstr\fR\fB);\fR
.br
\fBint addnwstr(const wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
@@ -58,7 +62,8 @@
\fBint mvwaddnwstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
.fi
.SH DESCRIPTION
-These routines write the characters of the (null-terminated) \fBwchar_t\fRcharacter string
+These routines write the characters of the
+(null-terminated) \fBwchar_t\fR character string
\fIwstr\fR on the given window.
It is similar to constructing a \fBcchar_t\fR for each wchar_t in the string,
then calling \fBwadd_wch\fR for the resulting \fBcchar_t\fR.
@@ -79,8 +84,6 @@ Note that all of these routines except \fBwaddnwstr\fR may be macros.
.SH PORTABILITY
All these entry points are described in the XSI Curses standard, Issue 4.
.SH SEE ALSO
-.PP
-Functions:
\fBcurses\fR(3X),
\fBcurs_add_wch\fR(3X)
.\"#
diff --git a/contrib/ncurses/man/curs_attr.3x b/contrib/ncurses/man/curs_attr.3x
index 022613de29e5..31c5397dad1f 100644
--- a/contrib/ncurses/man/curs_attr.3x
+++ b/contrib/ncurses/man/curs_attr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,38 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_attr.3x,v 1.24 2002/02/16 22:38:32 tom Exp $
+.\" $Id: curs_attr.3x,v 1.30 2006/07/15 18:39:05 tom Exp $
.TH curs_attr 3X ""
+.na
+.hy 0
.SH NAME
-\fBattroff\fR, \fBwattroff\fR, \fBattron\fR, \fBwattron\fR,
-\fBattrset\fR, \fBwattrset\fR, \fBcolor_set\fR, \fBwcolor_set\fR,
-\fBstandend\fR, \fBwstandend\fR, \fBstandout\fR, \fBwstandout\fR,
-\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,
+\fBattroff\fR,
+\fBwattroff\fR,
+\fBattron\fR,
+\fBwattron\fR,
+\fBattrset\fR,
+\fBwattrset\fR,
+\fBcolor_set\fR,
+\fBwcolor_set\fR,
+\fBstandend\fR,
+\fBwstandend\fR,
+\fBstandout\fR,
+\fBwstandout\fR,
+\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
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
@@ -105,7 +124,7 @@ 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.
-
+.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
@@ -113,19 +132,24 @@ 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
+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.
-
+.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.
-
+.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
@@ -137,9 +161,9 @@ 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
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'ed with the
+the routines \fBattron\fR, \fBattroff\fR, and \fBattrset\fR, or OR'd with the
characters passed to \fBaddch\fR.
-
+.PP
.TS
center ;
l l .
@@ -156,39 +180,49 @@ l l .
\fBA_CHARTEXT\fR Bit-mask to extract a character
\fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR Color-pair number \fIn\fR
.TE
-
+.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.
+.PP
+\fBCOLOR_PAIR\fP 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.
+You must use ncurses ABI 6 to support more than 256 color pairs.
.SH PORTABILITY
-All these functions are supported in the XSI Curses standard, Issue 4. The
+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.
-
+.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
SVr4 curses, these functions correctly manipulate all other highlights
(specifically, \fBA_ALTCHARSET\fR, \fBA_PROTECT\fR, and \fBA_INVIS\fR).
-
+.PP
XSI Curses added the new entry points, \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
a new series of highlight macros prefixed with \fBWA_\fR.
-
+.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
.TS
center ;
l l .
@@ -201,17 +235,29 @@ l l .
\fBWA_BOLD\fR Extra bright or bold
\fBWA_ALTCHARSET\fR Alternate character set
.TE
-
+.PP
The XSI curses standard specifies that each pair of corresponding \fBA_\fR
and \fBWA_\fR-using functions operates on the same current-highlight
information.
-
+.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,
\fBA_VERTICAL\fR (and corresponding \fBWA_\fR macros for each) which this
-curses does not yet support.
+implementation does not yet support.
+.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.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_addch\fR(3X), \fBcurs_addstr\fR(3X),
+\fBcurses\fR(3X),
+\fBcurs_addch\fR(3X),
+\fBcurs_addstr\fR(3X),
+\fBcurs_bkgd\fR(3X),
\fBcurs_printw\fR(3X)
.\"#
.\"# The following sets edit modes for GNU EMACS
diff --git a/contrib/ncurses/man/curs_beep.3x b/contrib/ncurses/man/curs_beep.3x
index b9caaa804f76..49e57619de3c 100644
--- a/contrib/ncurses/man/curs_beep.3x
+++ b/contrib/ncurses/man/curs_beep.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,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 *
@@ -26,13 +26,13 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_beep.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_beep.3x,v 1.10 2005/01/08 17:55:51 tom Exp $
.TH curs_beep 3X ""
.SH NAME
\fBbeep\fR, \fBflash\fR - \fBcurses\fR bell and screen flash routines
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.PP
\fBint beep(void);\fR
.br
\fBint flash(void);\fR
@@ -45,14 +45,14 @@ 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,
+These routines return \fBOK\fR if they succeed in beeping or flashing,
\fBERR\fR otherwise.
.SH EXTENSIONS
SVr4's beep and flash routines always returned \fBOK\fR, so it was not
possible to tell when the beep or flash failed.
.SH PORTABILITY
-These functions are defined in the XSI Curses standard, Issue 4. Like SVr4, it
-specifies that they always return \fBOK\fR.
+These functions are described in the XSI Curses standard, Issue 4.
+Like SVr4, it specifies that they always return \fBOK\fR.
.SH SEE ALSO
\fBcurses\fR(3X)
.\"#
diff --git a/contrib/ncurses/man/curs_bkgd.3x b/contrib/ncurses/man/curs_bkgd.3x
index 035e97501e77..b2d768a441d9 100644
--- a/contrib/ncurses/man/curs_bkgd.3x
+++ b/contrib/ncurses/man/curs_bkgd.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2002,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 *
@@ -26,23 +26,22 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_bkgd.3x,v 1.16 2002/02/16 22:38:32 tom Exp $
+.\" $Id: curs_bkgd.3x,v 1.19 2003/12/27 18:50:40 tom Exp $
.TH curs_bkgd 3X ""
.SH NAME
\fBbkgdset\fR, \fBwbkgdset\fR,
\fBbkgd\fR, \fBwbkgd\fR,
\fBgetbkgd\fR - \fBcurses\fR window background manipulation routines
-
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
-\fBvoid bkgdset(const chtype ch);\fR
+.PP
+\fBvoid bkgdset(chtype ch);\fR
.br
-\fBvoid wbkgdset(WINDOW *win, const chtype ch);\fR
+\fBvoid wbkgdset(WINDOW *win, chtype ch);\fR
.br
-\fBint bkgd(const chtype ch);\fR
+\fBint bkgd(chtype ch);\fR
.br
-\fBint wbkgd(WINDOW *win, const chtype ch);\fR
+\fBint wbkgd(WINDOW *win, chtype ch);\fR
.br
\fBchtype getbkgd(WINDOW *win);\fR
.br
@@ -57,23 +56,23 @@ 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
+.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.
-
+.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:
-
+.PP
.RS
The rendition of every character on the screen is changed to
the new background rendition.
-
+.PP
Wherever the former background character
appears, it is changed to the new background character.
.RE
-
+.PP
The \fBgetbkgd\fR function returns the given window's current background
character/attribute pair.
.SH RETURN VALUE
@@ -83,12 +82,14 @@ but this appears to be an error.
.SH NOTES
Note that \fBbkgdset\fR and \fBbkgd\fR may be macros.
.SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4. The draft
-does not include \fBconst\fR qualifiers on the arguments. The standard
-specifies that \fBbkgd\fR and \fBwbkgd\fR return \fBERR\fR, on failure. but
-gives no failure conditions.
+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.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_addch\fR(3X), \fBcurs_outopts\fR(3X)
+\fBcurses\fR(3X),
+\fBcurs_addch\fR(3X),
+\fBcurs_attr\fR(3X),
+\fBcurs_outopts\fR(3X)
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_bkgrnd.3x b/contrib/ncurses/man/curs_bkgrnd.3x
index 3be0dced7b22..8c6f6afff6f4 100644
--- a/contrib/ncurses/man/curs_bkgrnd.3x
+++ b/contrib/ncurses/man/curs_bkgrnd.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2004,2006 Free 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,9 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_bkgrnd.3x,v 1.1 2002/02/23 23:23:42 tom Exp $
+.\" $Id: curs_bkgrnd.3x,v 1.3 2006/02/25 21:49:19 tom Exp $
.TH curs_bkgrnd 3X ""
.SH NAME
-.PP
\fBbkgrnd\fR,
\fBwbkgrnd\fR,
\fBbkgrndset\fR,
@@ -39,7 +38,7 @@
.SH SYNOPSIS
.PP
.B #include <curses.h>
-
+.sp
\fBint bkgrnd(\fR\fB const cchar_t *\fR\fIwch\fR\fB);\fR
.br
\fBint wbkgrnd(\fR\fB WINDOW *\fR\fIwin\fR\fB, const cchar_t *\fR\fIwch\fR\fB);\fR
@@ -64,26 +63,26 @@ 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.
-
+.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
The rendition of every character on the screen is changed to
the new background rendition.
-
+.PP
Wherever the former background character
appears, it is changed to the new background character.
.RE
-
+.PP
The \fBgetbkgrnd\fR function returns the given window's current background
character/attribute pair via the \fBwch\fR pointer.
-
+.
.SH NOTES
Note that
\fBbkgrnd\fR,
diff --git a/contrib/ncurses/man/curs_border.3x b/contrib/ncurses/man/curs_border.3x
index c087fad73bcd..3071d2a603ea 100644
--- a/contrib/ncurses/man/curs_border.3x
+++ b/contrib/ncurses/man/curs_border.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,24 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_border.3x,v 1.15 2002/02/16 22:21:47 tom Exp $
+.\" $Id: curs_border.3x,v 1.18 2006/02/25 21:49:19 tom Exp $
.TH curs_border 3X ""
+.na
+.hy 0
.SH NAME
-\fBborder\fR, \fBwborder\fR, \fBbox\fR,
-\fBhline\fR, \fBwhline\fR,
-\fBvline\fR, \fBwvline\fR,
-\fBmvhline\fR, \fBmvwhline\fR,
-\fBmvvline\fR, \fBmvwvline\fR - create \fBcurses\fR borders, horizontal and vertical lines
+\fBborder\fR,
+\fBwborder\fR,
+\fBbox\fR,
+\fBhline\fR,
+\fBwhline\fR,
+\fBvline\fR,
+\fBwvline\fR,
+\fBmvhline\fR,
+\fBmvwhline\fR,
+\fBmvvline\fR,
+\fBmvwvline\fR - create \fBcurses\fR borders, horizontal and vertical lines
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
@@ -66,6 +76,7 @@
The \fBborder\fR, \fBwborder\fR and \fBbox\fR routines
draw a box around the edges of a window.
Other than the window, each argument is a character with attributes:
+.sp
.RS
\fIls\fR - left side,
.br
@@ -83,8 +94,10 @@ Other than the window, each argument is a character with attributes:
.br
\fIbr\fR - bottom right-hand corner.
.RE
+.PP
If any of these arguments is zero, then the corresponding
default values (defined in \fBcurses.h\fR) are used instead:
+.sp
.RS
\fBACS_VLINE\fR,
.br
@@ -102,16 +115,16 @@ default values (defined in \fBcurses.h\fR) are used instead:
.br
\fBACS_LRCORNER\fR.
.RE
-
+.PP
\fBbox(\fR\fIwin\fR\fB, \fR\fIverch\fR\fB, \fR\fIhorch\fR\fB)\fR is a shorthand
for the following call: \fBwborder(\fR\fIwin\fR\fB,\fR \fIverch\fR\fB,\fR
\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
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
@@ -119,10 +132,14 @@ 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
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.
.SH NOTES
The borders generated by these functions are \fIinside\fR borders (this
is also true of SVr4 curses, though the fact is not documented).
-
+.PP
Note that \fBborder\fR and \fBbox\fR may be macros.
.SH PORTABILITY
These functions are described in the XSI Curses standard, Issue 4.
diff --git a/contrib/ncurses/man/curs_border_set.3x b/contrib/ncurses/man/curs_border_set.3x
index ba7a197bf0c7..dbf865385b78 100644
--- a/contrib/ncurses/man/curs_border_set.3x
+++ b/contrib/ncurses/man/curs_border_set.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2004,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 *
@@ -26,10 +26,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_border_set.3x,v 1.3 2002/04/20 16:49:13 tom Exp $
+.\" $Id: curs_border_set.3x,v 1.6 2005/05/15 16:17:37 tom Exp $
.TH curs_border_set 3X ""
+.na
+.hy 0
.SH NAME
-.PP
\fBborder_set\fR,
\fBwborder_set\fR,
\fBbox_set\fR,
@@ -41,6 +42,8 @@
\fBwvline_set\fR,
\fBmvvline_set\fR,
\fBmvwvline_set\fR \- create \fBcurses\fR borders or lines using complex characters and renditions
+.ad
+.hy
.SH SYNOPSIS
.PP
\fB#include <curses.h>\fR
@@ -190,6 +193,8 @@ Upon successful completion, these functions return
\fBOK\fR.
Otherwise, they return
\fBERR\fR.
+.PP
+Functions using a window parameter return an error if it is null.
.SH SEE ALSO
\fBncurses\fR(3X),
\fBcurs_border\fR(3X),
diff --git a/contrib/ncurses/man/curs_clear.3x b/contrib/ncurses/man/curs_clear.3x
index d08e852a27b1..fa7723af4fe8 100644
--- a/contrib/ncurses/man/curs_clear.3x
+++ b/contrib/ncurses/man/curs_clear.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,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 *
@@ -26,15 +26,24 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_clear.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_clear.3x,v 1.10 2005/10/01 19:34:43 tom Exp $
.TH curs_clear 3X ""
+.na
+.hy 0
.SH NAME
-\fBerase\fR, \fBwerase\fR, \fBclear\fR,
-\fBwclear\fR, \fBclrtobot\fR, \fBwclrtobot\fR, \fBclrtoeol\fR,
+\fBerase\fR,
+\fBwerase\fR,
+\fBclear\fR,
+\fBwclear\fR,
+\fBclrtobot\fR,
+\fBwclrtobot\fR,
+\fBclrtoeol\fR,
\fBwclrtoeol\fR - clear all or part of a \fBcurses\fR window
+.ad
+.hy
.SH SYNOPSIS
\fB# include <curses.h>\fR
-
+.sp
\fBint erase(void);\fR
.br
\fBint werase(WINDOW *win);\fR
@@ -54,24 +63,29 @@
.SH DESCRIPTION
The \fBerase\fR and \fBwerase\fR routines copy blanks to every
position in the window, clearing the screen.
-
+.PP
The \fBclear\fR and \fBwclear\fR routines are like \fBerase\fR and
\fBwerase\fR, but they also call \fBclearok\fR, so that the screen is
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.
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
to the right of the cursor, inclusive, to the end of the current line.
-
+.PP
Blanks created by erasure have the current background rendition (as set
by \fBwbkgdset\fR) merged into them.
.SH RETURN VALUE
-All routines return the integer \fBOK\fR. The SVr4.0 manual says "or a
+All routines return the integer \fBOK\fR on success and \fBERR\fP on failure.
+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 defines no error conditions.
+In this implementation,
+functions using a window pointer parameter return an error if it is null.
.SH NOTES
Note that \fBerase\fR, \fBwerase\fR, \fBclear\fR, \fBwclear\fR,
\fBclrtobot\fR, and \fBclrtoeol\fR may be macros.
@@ -79,11 +93,18 @@ Note that \fBerase\fR, \fBwerase\fR, \fBclear\fR, \fBwclear\fR,
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
ncurses.
+.PP
+This implementation, and others such as Solaris,
+sets the current position to 0,0 after erasing
+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.
.SH SEE ALSO
\fBcurses\fR(3X), \fBcurs_outopts\fR(3X), \fBcurs_refresh\fR(3X)
.\"#
diff --git a/contrib/ncurses/man/curs_color.3x b/contrib/ncurses/man/curs_color.3x
index 18926d92e6c1..99e63eff136e 100644
--- a/contrib/ncurses/man/curs_color.3x
+++ b/contrib/ncurses/man/curs_color.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2004,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 *
@@ -26,8 +26,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_color.3x,v 1.19 2002/02/16 22:38:32 tom Exp $
+.\" $Id: curs_color.3x,v 1.28 2005/12/18 00:00:37 tom Exp $
.TH curs_color 3X ""
+.na
+.hy 0
.SH NAME
\fBstart_color\fR,
\fBinit_pair\fR,
@@ -37,6 +39,8 @@
\fBcolor_content\fR,
\fBpair_content\fR,
\fBCOLOR_PAIR\fR - \fBcurses\fR color manipulation routines
+.ad
+.hy
.SH SYNOPSIS
\fB# include <curses.h>\fR
.br
@@ -64,7 +68,7 @@ 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.
-
+.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,
@@ -84,7 +88,7 @@ and white), and two global variables, \fBCOLORS\fR and
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.
-
+.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.
@@ -96,18 +100,20 @@ must be between \fB1\fR and \fBCOLOR_PAIRS-1\fR.
.TP 5
-
The value of the second and
-third arguments must be between 0 and \fBCOLORS\fR (the 0 color pair is wired
-to white on black and cannot be changed).
+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.
.PP
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
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
@@ -116,18 +122,18 @@ argument must be between \fB0\fR and \fBCOLORS\fR. (See the section
must be a value between 0 and 1000. When \fBinit_color\fR is used, all
occurrences of that color on the screen immediately change to the new
definition.
-
+.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.
-
+.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
@@ -136,7 +142,7 @@ 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).
-
+.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
number, and two addresses of \fBshort\fRs for storing the foreground and the
@@ -147,7 +153,7 @@ to by the second and third arguments are between 0 and \fBCOLORS\fR.
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.
-
+.PP
.nf
\fBCOLOR_BLACK\fR
\fBCOLOR_RED\fR
@@ -161,22 +167,44 @@ background color for all terminals.
.SH RETURN VALUE
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.
+.PP
+X/Open defines no error conditions.
+This implementation will return \fBERR\fR on attempts to
+use color values outside the range 0 to COLORS-1
+(except for the default colors extension),
+or use color pairs outside the range 0 to COLOR_PAIR-1.
+Color values used in \fBinit_color\fP must be in the range 0 to 1000.
+An error is returned from all functions
+if the terminal has not been initialized.
+An error is returned from secondary functions such as \fBinit_pair\fP
+if \fBstart_color\fP was not called.
+.RS
+.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
+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
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
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
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:
.TP 5
-
@@ -201,8 +229,12 @@ 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\fP 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.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_initscr\fR(3X),
diff --git a/contrib/ncurses/man/curs_delch.3x b/contrib/ncurses/man/curs_delch.3x
index 34bd9ac3e244..70266678d7c6 100644
--- a/contrib/ncurses/man/curs_delch.3x
+++ b/contrib/ncurses/man/curs_delch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2000,2006 Free 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_delch.3x,v 1.7 2000/07/01 19:55:37 tom Exp $
+.\" $Id: curs_delch.3x,v 1.8 2006/02/25 21:42:57 tom Exp $
.TH curs_delch 3X ""
.SH NAME
\fBdelch\fR,
@@ -35,7 +35,7 @@
\fBmvwdelch\fR - delete character under the cursor in a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint delch(void);\fR
.br
\fBint wdelch(WINDOW *win);\fR
diff --git a/contrib/ncurses/man/curs_deleteln.3x b/contrib/ncurses/man/curs_deleteln.3x
index 8b39402d1968..25991391840d 100644
--- a/contrib/ncurses/man/curs_deleteln.3x
+++ b/contrib/ncurses/man/curs_deleteln.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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.7 2000/11/11 20:43:20 Bernhard.Rosenkraenzer Exp $
+.\" $Id: curs_deleteln.3x,v 1.10 2006/02/25 21:49:19 tom Exp $
.TH curs_deleteln 3X ""
.SH NAME
\fBdeleteln\fR,
@@ -37,7 +37,7 @@
\fBwinsertln\fR - delete and insert lines in a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint deleteln(void);\fR
.br
\fBint wdeleteln(WINDOW *win);\fR
@@ -54,26 +54,30 @@
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.
-
+.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.
-
-The \fBinsertln\fR and \fBwinsertln\fR routines, insert a blank line above the
+.PP
+The \fBinsertln\fR and \fBwinsertln\fR routines insert a blank line above the
current line and the bottom line is lost.
.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
+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
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 won't use hardware line delete/insert unless
\fBidlok(..., TRUE)\fR has been set on the current window.
diff --git a/contrib/ncurses/man/curs_extend.3x b/contrib/ncurses/man/curs_extend.3x
index dc05b39d1dc7..c053864194c3 100644
--- a/contrib/ncurses/man/curs_extend.3x
+++ b/contrib/ncurses/man/curs_extend.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1999-2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999-2004,2006 Free 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,17 +26,17 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" Author: Thomas E. Dickey <dickey@clark.net> 1999
+.\" Author: Thomas E. Dickey 1999-on
.\"
-.\" $Id: curs_extend.3x,v 1.9 2002/02/16 22:39:04 tom Exp $
+.\" $Id: curs_extend.3x,v 1.15 2006/02/25 21:04:43 tom Exp $
.TH curs_extend 3X ""
.SH NAME
\fBcurses_version\fP,
\fBuse_extended_names\fP \- miscellaneous curses extensions
-
+.
.SH SYNOPSIS
\fB#include <curses.h>\fP
-
+.sp
\fBconst char * curses_version(void);\fP
.br
\fBint use_extended_names(bool enable);\fP
@@ -55,11 +55,11 @@ function controls whether the calling application
is able to use user-defined or nonstandard names
which may be compiled into the terminfo
description, i.e., via the terminfo or termcap interfaces.
-Normally these names are available for use, since the essential descision
+Normally these names are available for use, since the essential decision
is made by using the \fB-x\fP option of \fItic\fP to compile
extended terminal definitions.
However you can disable this feature
-to ensure compatiblity with other implementations of curses
+to ensure compatibility with other implementations of curses.
.SH PORTABILITY
These routines are specific to ncurses. They were not supported on
Version 7, BSD or System V implementations. It is recommended that
@@ -72,6 +72,7 @@ any code depending on them be conditioned using NCURSES_VERSION.
\fBdefine_key\fR(3X),
\fBkeybound\fR(3X),
\fBkeyok\fR(3X),
+\fBnofilter\fR(3X),
\fBresizeterm\fR(3X),
\fBwresize\fR(3X).
.SH AUTHOR
diff --git a/contrib/ncurses/man/curs_get_wch.3x b/contrib/ncurses/man/curs_get_wch.3x
index 26ff2d4c436a..6ecff799b5d6 100644
--- a/contrib/ncurses/man/curs_get_wch.3x
+++ b/contrib/ncurses/man/curs_get_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2003,2006 Free 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_get_wch.3x,v 1.3 2002/05/18 21:48:53 tom Exp $
+.\" $Id: curs_get_wch.3x,v 1.6 2006/02/25 21:47:06 tom Exp $
.TH curs_get_wch 3X ""
.SH NAME
\fBget_wch\fR,
@@ -37,13 +37,13 @@
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
-\fBint get_wch(win_t *\fR\fIwch\fR\fB);\fR
+\fBint get_wch(wint_t *\fR\fIwch\fR\fB);\fR
.br
-\fBint wget_wch(WINDOW *\fR\fIwin\fR\fB, win_t *\fR\fIwch\fR\fB);\fR
+\fBint wget_wch(WINDOW *\fR\fIwin\fR\fB, wint_t *\fR\fIwch\fR\fB);\fR
.br
-\fBint mvget_wch(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, win_t *\fR\fIwch\fR\fB);\fR
+\fBint mvget_wch(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwch\fR\fB);\fR
.br
-\fBint mvwget_wch(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, win_t *\fR\fIwch\fR\fB);\fR
+\fBint mvwget_wch(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwch\fR\fB);\fR
.br
\fBint unget_wch(const wchar_t \fR\fIwch\fR\fB);\fR
.SH DESCRIPTION
@@ -64,14 +64,14 @@ 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.
-
+.PP
Unless \fBnoecho\fR has been set,
these routines echo the character into the designated window.
-
+.PP
If the window is not a pad and has been moved or modified since the
last call to \fBwrefresh\fR,
\fBwrefresh\fR will be called before another character is read.
-
+.PP
If \fBkeypad\fR is enabled,
these functions respond to
the pressing of a function key by setting the object pointed to by
@@ -130,7 +130,7 @@ at the same time.
Depending on the state of the tty driver when each character
is typed, the program may produce undesirable results.
.PP
-All functions except \fBwget_wch\fR and \fBunget_wch\fR
+All functions except \fBwget_wch\fR and \fBunget_wch\fR
may be macros.
.SH RETURN VALUES
When
diff --git a/contrib/ncurses/man/curs_get_wstr.3x b/contrib/ncurses/man/curs_get_wstr.3x
index f8fa51d47fcb..4286c78b0d2a 100644
--- a/contrib/ncurses/man/curs_get_wstr.3x
+++ b/contrib/ncurses/man/curs_get_wstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2005,2006 Free 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,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_get_wstr.3x,v 1.2 2002/05/18 21:48:15 tom Exp $
+.\" $Id: curs_get_wstr.3x,v 1.6 2006/02/25 21:49:19 tom Exp $
.TH curs_get_wstr 3X ""
+.na
+.hy 0
.SH NAME
\fBget_wstr\fR,
\fBgetn_wstr\fR,
@@ -37,10 +39,12 @@
\fBmvgetn_wstr\fR,
\fBmvwget_wstr\fR,
\fBmvwgetn_wstr\fR \- get an array of wide characters from a curses terminal keyboard
+.ad
+.hy
.SH SYNOPSIS
.nf
\fB#include <curses.h>\fR
-
+.sp
\fBint get_wstr(wint_t *\fR\fIwstr\fR\fB);\fR
.br
\fBint getn_wstr(wint_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
@@ -68,22 +72,22 @@ An end-of-file condition is represented by \fBWEOF\fR, as defined in \fB<wchar.h
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
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,
backspace is echoed as deletion of the previous character (typically a left
motion).
-
+.PP
The effect of
\fBwget_wstr\fR
is as though a series of
calls to
\fBwget_wch\fR
were made.
-
+.PP
The effect of
\fBmvget_wstr\fR
is as though a call to
@@ -92,7 +96,7 @@ and then a series of calls to
\fBget_wch\fR
were
made.
-
+.PP
The effect of
\fBmvwget_wstr\fR
is as though a call to
@@ -100,7 +104,7 @@ is as though a call to
and then a series of calls to
\fBwget_wch\fR
were made.
-
+.PP
The
\fBgetn_wstr\fR,
\fBmvgetn_wstr\fR,
@@ -135,14 +139,21 @@ The use of
\fBmvgetn_wstr\fR,
\fBmvwgetn_wstr\fR, or
\fBwgetn_wstr\fR, respectively, is recommended.
-
+.PP
These functions cannot return \fBKEY_\fR values because there
is no way to distinguish a \fBKEY_\fR value from a valid \fBwchar_t\fR value.
-
+.PP
All of these routines except \fBwgetn_wstr\fR may be macros.
.SH RETURN VALUES
All of these functions return \fBOK\fR upon successful completion.
Otherwise, they return \fBERR\fR.
+.PP
+Functions using a window parameter return an error if it is null.
+.RS
+.TP 5
+\fBwgetn_wstr\fP
+returns an error if the associated call to \fBwget_wch\fP failed.
+.RE
.SH PORTABILITY
These functions are described in The Single Unix Specification, Version 2.
No error conditions are defined.
@@ -151,6 +162,9 @@ or if the lower-level \fBwget_wch\fR 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 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.
.SH SEE ALSO
Functions:
\fBcurses\fR(3X),
diff --git a/contrib/ncurses/man/curs_getcchar.3x b/contrib/ncurses/man/curs_getcchar.3x
index 2dfa10b7967a..91b996197c58 100644
--- a/contrib/ncurses/man/curs_getcchar.3x
+++ b/contrib/ncurses/man/curs_getcchar.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2001-2003,2006 Free 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_getcchar.3x,v 1.6 2002/03/24 01:08:55 tom Exp $
+.\" $Id: curs_getcchar.3x,v 1.8 2006/07/15 22:51:07 wcmbrine Exp $
.TH curs_getcchar 3X ""
.SH NAME
\fBgetcchar\fP,
@@ -108,7 +108,7 @@ The wide-character string pointed to by \fIwch\fP.
The string must be L'\\0' terminated,
contain at most one character with strictly positive width,
which must be the first,
-and contain no characters of negative width.
+and contain no characters of negative width.
.SH NOTES
.PP
The \fIopts\fP argument is reserved for future use.
@@ -121,7 +121,7 @@ If \fIwcval\fP is constructed by any other means, the effect is unspecified.
.PP
When \fIwch\fP is a null pointer,
\fBgetcchar\fP returns the number of wide characters referenced by
-\fIwcval\fP, including the null terminator.
+\fIwcval\fP.
.PP
When \fIwch\fP is not a null pointer,
\fBgetcchar\fP returns \fBOK\fP upon successful completion,
diff --git a/contrib/ncurses/man/curs_getch.3x b/contrib/ncurses/man/curs_getch.3x
index 73e1a29679b1..71fed5f7b60d 100644
--- a/contrib/ncurses/man/curs_getch.3x
+++ b/contrib/ncurses/man/curs_getch.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_getch.3x,v 1.21 2002/03/17 14:36:21 tom Exp $
+.\" $Id: curs_getch.3x,v 1.30 2006/12/02 17:02:53 tom Exp $
.TH curs_getch 3X ""
+.na
+.hy 0
.SH NAME
\fBgetch\fR,
\fBwgetch\fR,
@@ -36,9 +38,11 @@
\fBmvwgetch\fR,
\fBungetch\fR,
\fBhas_key\fR \- get (or push back) characters from \fBcurses\fR terminal keyboard
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.PP
\fBint getch(void);\fR
.br
\fBint wgetch(WINDOW *win);\fR
@@ -63,7 +67,7 @@ or after the first newline (nocbreak mode).
In half-delay mode,
the program waits until a character is typed or the
specified timeout has been reached.
-
+.PP
Unless \fBnoecho\fR has been set,
then the character will also be echoed into the
designated window according to the following rules:
@@ -73,19 +77,19 @@ as if \fBdelch\fR had been called.
If the character value is any other \fBKEY_\fR define, the user is alerted
with a \fBbeep\fR call.
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.
-
+.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
+of 8-bit characters whose names begin with \fBKEY_\fR. Thus, a variable
intended to hold the return value of a function key must be of short size or
larger.
-
+.PP
When a character that could be the beginning of a function key is received
(which, on modern terminals, means an escape character),
\fBcurses\fR sets a timer.
@@ -94,11 +98,11 @@ time, the character is passed through;
otherwise, the function key value is returned.
For this reason, many terminals experience a delay between the time
a user presses the escape key and the escape is returned to the program.
-
+.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.
@@ -110,7 +114,6 @@ center tab(/) ;
l l
l l .
\fIName\fR/\fIKey\fR \fIname\fR
-
KEY_BREAK/Break key
KEY_DOWN/The four arrow keys ...
KEY_UP
@@ -143,7 +146,7 @@ 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_LL/Home down or bottom (lower left)
KEY_A1/Upper left of keypad
KEY_A3/Upper right of keypad
KEY_B2/Center of keypad
@@ -208,7 +211,7 @@ KEY_SUNDO/Shifted undo key
KEY_SUSPEND/Suspend key
KEY_UNDO/Undo key
.TE
-
+.PP
Keypad is arranged like this:
.sp
.TS
@@ -222,34 +225,50 @@ c c c .
The \fBhas_key\fR 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., \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
.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
completion.
+.RS
+.TP 5
+\fBungetch\fP
+returns an error
+if there is no more room in the FIFO.
+.TP 5
+\fBwgetch\fP
+returns an error
+if the window pointer is null, or
+if its timeout expires without having any data.
+.RE
.SH NOTES
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., KEY_ENTER versus control/M, KEY_BACKSPACE versus control/H.
+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.
\fBNcurses\fR uses the terminfo definition.
-If it says that KEY_ENTER is control/M, \fBgetch\fR, will return KEY_ENTER
+If it says that \fBKEY_ENTER\fP is control/M,
+\fBgetch\fR will return \fBKEY_ENTER\fP
when you press control/M.
-
+.PP
When using \fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR, or
\fBmvwgetch\fR, nocbreak mode (\fBnocbreak\fR) and echo mode
(\fBecho\fR) 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.
-
+.PP
Note that \fBgetch\fR, \fBmvgetch\fR, and \fBmvwgetch\fR may be macros.
-
+.PP
Historically, the set of keypad macros was largely defined by the extremely
function-key-rich keyboard of the AT&T 7300, aka 3B1, aka Safari 4.
Modern
@@ -266,27 +285,27 @@ They
read single-byte characters only.
The standard specifies that they return
\fBERR\fR on failure, but specifies no error conditions.
-
+.PP
The echo behavior of these functions on input of \fBKEY_\fR or backspace
characters was not specified in the SVr4 documentation.
This description is
adopted from the XSI Curses standard.
-
+.PP
The behavior of \fBgetch\fR 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 \fBread\fR(2) call in
progress or not, and also (in some implementations) depending on whether an
-input timeout or non-blocking mode hsd been set.
-
+input timeout or non-blocking mode has been set.
+.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
\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
any code using it be conditionalized on the \fBNCURSES_VERSION\fR feature macro.
@@ -295,8 +314,12 @@ any code using it be conditionalized on the \fBNCURSES_VERSION\fR feature macro.
\fBcurs_inopts\fR(3X),
\fBcurs_mouse\fR(3X),
\fBcurs_move\fR(3X),
-\fBcurs_refresh\fR(3X).
+\fBcurs_refresh\fR(3X),
\fBresizeterm\fR(3X).
+.PP
+Comparable functions in the wide-character (ncursesw) library are
+described in
+\fBcurs_get_wch\fR(3X).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_getstr.3x b/contrib/ncurses/man/curs_getstr.3x
index 1a32a0be1aeb..f131765043a1 100644
--- a/contrib/ncurses/man/curs_getstr.3x
+++ b/contrib/ncurses/man/curs_getstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,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 *
@@ -26,8 +26,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_getstr.3x,v 1.11 2002/04/13 22:14:30 tom Exp $
+.\" $Id: curs_getstr.3x,v 1.15 2006/01/12 00:30:58 tom Exp $
.TH curs_getstr 3X ""
+.na
+.hy 0
.SH NAME
\fBgetstr\fR,
\fBgetnstr\fR,
@@ -37,9 +39,11 @@
\fBmvgetnstr\fR,
\fBmvwgetstr\fR,
\fBmvwgetnstr\fR - accept character strings from \fBcurses\fR terminal keyboard
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint getstr(char *str);\fR
.br
\fBint getnstr(char *str, int n);\fR
@@ -61,17 +65,17 @@ 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.
-
+.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
from the \fIstdscr\fR default window.
-
+.PP
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,
backspace is echoed as deletion of the previous character (typically a left
motion).
@@ -79,6 +83,17 @@ motion).
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
+X/Open defines no error conditions.
+.PP
+In this implementation,
+these functions return an error
+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
+rather than \fBOK\fP or \fBERR\fP.
.SH NOTES
Note that \fBgetstr\fR, \fBmvgetstr\fR, and \fBmvwgetstr\fR may be macros.
.SH PORTABILITY
@@ -87,14 +102,14 @@ 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.
-
+.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
+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.
.SH SEE ALSO
diff --git a/contrib/ncurses/man/curs_getyx.3x b/contrib/ncurses/man/curs_getyx.3x
index 820bf99c5327..8fe53dc71972 100644
--- a/contrib/ncurses/man/curs_getyx.3x
+++ b/contrib/ncurses/man/curs_getyx.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_getyx.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_getyx.3x,v 1.13 2006/05/27 20:28:05 tom Exp $
.TH curs_getyx 3X ""
.SH NAME
-\fBgetyx\fR, \fBgetparyx\fR, \fBgetbegyx\fR,
+\fBgetyx\fR,
+\fBgetparyx\fR,
+\fBgetbegyx\fR,
\fBgetmaxyx\fR - get \fBcurses\fR cursor and window coordinates
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBvoid getyx(WINDOW *win, int y, int x);\fR
.br
\fBvoid getparyx(WINDOW *win, int y, int x);\fR
@@ -45,23 +47,40 @@
.SH DESCRIPTION
The \fBgetyx\fR macro places the current cursor position of the given window in
the two integer variables \fIy\fR and \fIx\fR.
-
+.PP
If \fIwin\fR is a subwindow, the \fBgetparyx\fR macro places the beginning
coordinates of the subwindow relative to the parent window into two integer
-variables \fIy\fR and \fIx\fR. Otherwise, \fB-1\fR is placed into \fIy\fR and
-\fIx\fR.
-
+variables \fIy\fR and \fIx\fR.
+Otherwise, \fB-1\fR is placed into \fIy\fR and \fIx\fR.
+.PP
Like \fBgetyx\fR, the \fBgetbegyx\fR and \fBgetmaxyx\fR macros store
the current beginning coordinates and size of the specified window.
.SH RETURN VALUE
-The return values of these macros are undefined (\fIi\fR.\fIe\fR.,
-they should not be used as the right-hand side of assignment
-statements).
+The return values of these macros are undefined (i.e.,
+they should not be used as the right-hand side of assignment statements).
.SH NOTES
-All of these interfaces are macros and that "\fB&\fR" is not
-necessary before the variables \fIy\fR and \fIx\fR.
+All of these interfaces are macros.
+A "\fB&\fR" is not necessary before the variables \fIy\fR and \fIx\fR.
.SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4.
+The
+\fBgetyx\fR,
+\fBgetparyx\fR,
+\fBgetbegyx\fR and
+\fBgetmaxyx\fR
+macros are described in the XSI Curses standard, Issue 4.
+.PP
+This implementation also provides
+\fBgetbegx\fR,
+\fBgetbegy\fR,
+\fBgetcurx\fR,
+\fBgetcury\fR,
+\fBgetmaxx\fR,
+\fBgetmaxy\fR,
+\fBgetparx\fR and
+\fBgetpary\fR
+for compatibility with older versions of curses.
+X/Open does not define a corresponding \fBgetcuryx\fP function,
+though that would be needed to make references to the WINDOW structure opaque.
.SH SEE ALSO
\fBcurses\fR(3X)
.\"#
diff --git a/contrib/ncurses/man/curs_in_wch.3x b/contrib/ncurses/man/curs_in_wch.3x
index 668595c6f3ed..8709d130f180 100644
--- a/contrib/ncurses/man/curs_in_wch.3x
+++ b/contrib/ncurses/man/curs_in_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002,2006 Free 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_in_wch.3x,v 1.1 2002/03/10 15:08:57 tom Exp $
+.\" $Id: curs_in_wch.3x,v 1.2 2006/02/25 21:42:22 tom Exp $
.TH curs_in_wch 3X ""
.SH NAME
\fBin_wch\fR,
@@ -35,7 +35,7 @@
\fBwin_wch\fR - extract a complex character and rendition from a window
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint in_wch(cchar_t *\fR\fIwcval\fR\fB);\fR
.br
\fBint mvin_wch(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, cchar_t *\fR\fIwcval\fR\fB);\fR
diff --git a/contrib/ncurses/man/curs_in_wchstr.3x b/contrib/ncurses/man/curs_in_wchstr.3x
index 0012789f70fb..b04a1f54cd76 100644
--- a/contrib/ncurses/man/curs_in_wchstr.3x
+++ b/contrib/ncurses/man/curs_in_wchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2005,2006 Free 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,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_in_wchstr.3x,v 1.2 2002/05/18 21:48:30 tom Exp $
+.\" $Id: curs_in_wchstr.3x,v 1.6 2006/12/02 17:03:07 tom Exp $
.TH curs_in_wchstr 3X ""
+.na
+.hy 0
.SH NAME
\fBin_wchstr\fR,
\fBin_wchnstr\fR,
@@ -37,10 +39,12 @@
\fBmvin_wchnstr\fR,
\fBmvwin_wchstr\fR,
\fBmvwin_wchnstr\fR \- get an array of complex characters and renditions from a curses window
+.ad
+.hy
.SH SYNOPSIS
.nf
\fB#include <curses.h>\fR
-
+.sp
\fBint in_wchstr(cchar_t *\fR\fIwchstr\fR\fB);\fR
.br
\fBint in_wchnstr(cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR
@@ -106,9 +110,10 @@ returning ERR in that case.
.SH SEE ALSO
Functions:
\fBcurses\fR(3X),
-\fBcurs_in_wch\fR(3X)
+\fBcurs_in_wch\fR(3X),
\fBcurs_instr\fR(3X),
\fBcurs_inwstr\fR(3X)
+\fBcurs_inchstr\fR(3X)
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_inch.3x b/contrib/ncurses/man/curs_inch.3x
index bcc8d6f85c60..3091b9c0e6ae 100644
--- a/contrib/ncurses/man/curs_inch.3x
+++ b/contrib/ncurses/man/curs_inch.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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: curs_inch.3x,v 1.11 1998/11/29 01:04:34 Rick.Ohnemus Exp $
+.\" $Id: curs_inch.3x,v 1.13 2006/12/02 16:58:55 tom Exp $
.TH curs_inch 3X ""
.SH NAME
\fBinch\fR, \fBwinch\fR, \fBmvinch\fR, \fBmvwinch\fR
- get a character and attributes from a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBchtype inch(void);\fR
.br
\fBchtype winch(WINDOW *win);\fR
@@ -49,10 +49,10 @@ 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.
-
+.
.SS Attributes
The following bit-masks may be AND-ed with characters returned by \fBwinch\fR.
-
+.
.TS
l l .
\fBA_CHARTEXT\fR Bit-mask to extract character
@@ -65,6 +65,10 @@ Note that all of these routines may be macros.
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).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_inchstr.3x b/contrib/ncurses/man/curs_inchstr.3x
index 60f9d566e9fa..18c21dc3190d 100644
--- a/contrib/ncurses/man/curs_inchstr.3x
+++ b/contrib/ncurses/man/curs_inchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_inchstr.3x,v 1.8 2000/07/01 20:16:18 tom Exp $
+.\" $Id: curs_inchstr.3x,v 1.12 2006/12/02 17:00:58 tom Exp $
.TH curs_inchstr 3X ""
+.na
+.hy 0
.SH NAME
\fBinchstr\fR,
\fBinchnstr\fR,
@@ -37,9 +39,11 @@
\fBmvinchnstr\fR,
\fBmvwinchstr\fR,
\fBmvwinchnstr\fR - get a string of characters (and attributes) from a \fBcurses\fR window
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint inchstr(chtype *chstr);\fR
.br
\fBint inchnstr(chtype *chstr, int n);\fR
@@ -69,6 +73,11 @@ in the \fIchstr\fR [see \fBcurs_inch\fR(3X)].
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.
.SH NOTES
Note that all routines except \fBwinchnstr\fR may be macros. SVr4 does not
document whether the result string is 0-terminated; it does not document
@@ -80,6 +89,10 @@ 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).
+.PP
+Comparable functions in the wide-character (ncursesw) library are
+described in
+\fBcurs_in_wchstr\fR(3X).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_initscr.3x b/contrib/ncurses/man/curs_initscr.3x
index daa5e1e822de..1a865f94ec08 100644
--- a/contrib/ncurses/man/curs_initscr.3x
+++ b/contrib/ncurses/man/curs_initscr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,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 *
@@ -26,8 +26,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_initscr.3x,v 1.10 2000/07/08 12:47:39 tom Exp $
+.\" $Id: curs_initscr.3x,v 1.14 2005/05/15 16:18:01 tom Exp $
.TH curs_initscr 3X ""
+.na
+.hy 0
.SH NAME
\fBinitscr\fR,
\fBnewterm\fR,
@@ -35,16 +37,18 @@
\fBisendwin\fR,
\fBset_term\fR,
\fBdelscreen\fR - \fBcurses\fR screen initialization and manipulation routines
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBWINDOW *initscr(void);\fR
.br
\fBint endwin(void);\fR
.br
\fBbool isendwin(void);\fR
.br
-\fBSCREEN *newterm(const char *type, FILE *outfd, FILE *infd);\fR
+\fBSCREEN *newterm(char *type, FILE *outfd, FILE *infd);\fR
.br
\fBSCREEN *set_term(SCREEN *new);\fR
.br
@@ -56,13 +60,13 @@ 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.
-
+.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.
-
+.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
@@ -76,23 +80,23 @@ is \fBNULL\fR, \fB$TERM\fR will be used). 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
temporary escape causes the program to resume visual mode.
-
+.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.
-
+.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.
-
+.PP
The \fBdelscreen\fR routine frees storage associated with the
\fBSCREEN\fR data structure. The \fBendwin\fR routine does not do
this, so \fBdelscreen\fR should be called after \fBendwin\fR if a
@@ -100,18 +104,22 @@ particular \fBSCREEN\fR is no longer needed.
.SH RETURN VALUE
\fBendwin\fR returns the integer \fBERR\fR upon failure and \fBOK\fR
upon successful completion.
-
+.PP
Routines that return pointers always return \fBNULL\fR on error.
+.PP
+X/Open defines no error conditions.
+In this implementation
+\fBendwin\fP returns an error if the terminal was not initialized.
.SH NOTES
Note that \fBinitscr\fR and \fBnewterm\fR may be macros.
.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.
-
+.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
+It is safe but redundant to check the return value of \fBinitscr\fR
in XSI Curses.
.SH SEE ALSO
\fBcurses\fR(3X), \fBcurs_kernel\fR(3X), \fBcurs_refresh\fR(3X),
diff --git a/contrib/ncurses/man/curs_inopts.3x b/contrib/ncurses/man/curs_inopts.3x
index 1fc6a820a603..7b5a17b8f125 100644
--- a/contrib/ncurses/man/curs_inopts.3x
+++ b/contrib/ncurses/man/curs_inopts.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,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 *
@@ -26,17 +26,33 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_inopts.3x,v 1.8 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_inopts.3x,v 1.13 2005/05/15 16:18:07 tom Exp $
.TH curs_inopts 3X ""
+.na
+.hy 0
.SH NAME
-\fBcbreak\fR, \fBnocbreak\fR, \fBecho\fR,
-\fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR, \fBkeypad\fR,
-\fBmeta\fR, \fBnodelay\fR, \fBnotimeout\fR, \fBraw\fR, \fBnoraw\fR,
-\fBnoqiflush\fR, \fBqiflush\fR, \fBtimeout\fR, \fBwtimeout\fR,
+\fBcbreak\fR,
+\fBnocbreak\fR,
+\fBecho\fR,
+\fBnoecho\fR,
+\fBhalfdelay\fR,
+\fBintrflush\fR,
+\fBkeypad\fR,
+\fBmeta\fR,
+\fBnodelay\fR,
+\fBnotimeout\fR,
+\fBraw\fR,
+\fBnoraw\fR,
+\fBnoqiflush\fR,
+\fBqiflush\fR,
+\fBtimeout\fR,
+\fBwtimeout\fR,
\fBtypeahead\fR - \fBcurses\fR input options
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.PP
\fBint cbreak(void);\fR
.br
\fBint nocbreak(void);\fR
@@ -78,14 +94,14 @@ 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)
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.
[See \fBcurs_getch\fR(3X) for a
discussion of how these routines interact with \fBecho\fR and \fBnoecho\fR.]
-
+.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
driver is always disabled, but initially \fBgetch\fR is in echo mode, so
@@ -95,14 +111,14 @@ 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.]
-
+.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
mode.
-
+.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
the tty driver queue will be flushed, giving the effect of faster response to
@@ -110,7 +126,7 @@ 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 window argument is ignored.
-
+.PP
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
@@ -121,30 +137,30 @@ 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.
-
+.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)].
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
\fBmeta\fR(\fIwin\fR, \fBFALSE\fR); this is equivalent, under POSIX,
-to setting the CS8 flag on the terminal. The window argument,
+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.
-
+.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
(\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
purpose of the timeout is to differentiate between sequences received
from a function key and those typed by a user.
-
+.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
@@ -152,7 +168,7 @@ 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
\fBcurses\fR.
-
+.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
@@ -160,18 +176,18 @@ output queues associated with the \fBINTR\fR, \fBQUIT\fR and
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.
-
+.PP
The \fBtimeout\fR and \fBwtimeout\fR routines set blocking or
non-blocking read for a given window. If \fIdelay\fR is negative,
-blocking read is used (\fIi\fR.\fIe\fR., waits indefinitely for
+blocking read is used (i.e., waits indefinitely for
input). If \fIdelay\fR is zero, then non-blocking read is used
-(\fIi\fR.\fIe\fR., read returns \fBERR\fR if no input is waiting). If
+(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).
-
+.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
@@ -186,20 +202,32 @@ The \fBtypeahead\fR routine specifies that the file descriptor
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.
+.PP
+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 initialized.
+Also,
+.RS
+.TP 5
+\fBhalfdelay\fP
+returns an error
+if its parameter is outside the range 1..255.
+.RE
.SH PORTABILITY
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
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.
.SH NOTES
Note that \fBecho\fR, \fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR,
\fBmeta\fR, \fBnodelay\fR, \fBnotimeout\fR, \fBnoqiflush\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
diff --git a/contrib/ncurses/man/curs_ins_wch.3x b/contrib/ncurses/man/curs_ins_wch.3x
index 23cf0999572a..bb8a9a34afa9 100644
--- a/contrib/ncurses/man/curs_ins_wch.3x
+++ b/contrib/ncurses/man/curs_ins_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002,2006 Free 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_ins_wch.3x,v 1.2 2002/03/10 23:43:27 tom Exp $
+.\" $Id: curs_ins_wch.3x,v 1.3 2006/02/25 21:42:22 tom Exp $
.TH curs_ins_wch 3X ""
.SH NAME
\fBins_wch\fR,
@@ -35,7 +35,7 @@
\fBwins_wch\fR \- insert a complex character and rendition into a window
.SH SYNOPSIS
#include <curses.h>
-
+.sp
\fBint ins_wch(const cchar_t *\fR\fIwch\fR\fB);\fR
.br
\fBint wins_wch(WINDOW *\fR\fIwin, const cchar_t *\fR\fIwch\fR\fB);\fR
diff --git a/contrib/ncurses/man/curs_ins_wstr.3x b/contrib/ncurses/man/curs_ins_wstr.3x
index 197f30f5cd7d..0c153c4c67e4 100644
--- a/contrib/ncurses/man/curs_ins_wstr.3x
+++ b/contrib/ncurses/man/curs_ins_wstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002,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 *
@@ -26,8 +26,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_ins_wstr.3x,v 1.2 2002/03/10 23:43:27 tom Exp $
+.\" $Id: curs_ins_wstr.3x,v 1.4 2005/05/15 17:02:54 tom Exp $
.TH curs_ins_wstr 3X ""
+.na
+.hy 0
.SH NAME
\fBins_wstr\fR,
\fBins_nwstr\fR,
@@ -37,10 +39,12 @@
\fBmvins_nwstr\fR,
\fBmvwins_wstr\fR,
\fBmvwins_nwstr\fR \- insert a wide-character string into a curses window
+.ad
+.hy
.SH SYNOPSIS
.nf
\fB#include <curses.h>\fR
-
+.sp
\fBint ins_wstr(const wchar_t *\fR\fIwstr);\fR
.br
\fBint ins_nwstr(const wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
@@ -69,7 +73,7 @@ The cursor position does not change
The four routines with \fIn\fR as the last argument
insert a leading substring of at most \fIn\fR \fBwchar_t\fR characters.
If \fIn\fR is less than 1, the entire string is inserted.
-
+.PP
If a character in \fIwstr\fR is a tab, newline, carriage return or
backspace, the cursor is moved appropriately within the window.
A newline also does a \fBclrtoeol\fR before moving.
@@ -83,7 +87,7 @@ but instead returns a character in the ^-representation
of the control character.
.SH NOTES
Note that all but wins_nwstr may be macros.
-
+.PP
If the first character in the string is a nonspacing character, these
functions will fail.
XSI does not define what will happen if a nonspacing character follows
diff --git a/contrib/ncurses/man/curs_insch.3x b/contrib/ncurses/man/curs_insch.3x
index 8546cf530e67..78ab5a59c89b 100644
--- a/contrib/ncurses/man/curs_insch.3x
+++ b/contrib/ncurses/man/curs_insch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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_insch.3x,v 1.7 2000/07/01 19:57:21 tom Exp $
+.\" $Id: curs_insch.3x,v 1.10 2006/12/02 17:01:50 tom Exp $
.TH curs_insch 3X ""
.SH NAME
\fBinsch\fR,
@@ -35,7 +35,7 @@
\fBmvwinsch\fR - insert a character before cursor in a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint insch(chtype ch);\fR
.br
\fBint winsch(WINDOW *win, chtype ch);\fR
@@ -45,7 +45,7 @@
\fBint mvwinsch(WINDOW *win, int y, int x, chtype ch);\fR
.br
.SH DESCRIPTION
-These routines, insert the character \fIch\fR before the character under the
+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
right, with the possibility of the rightmost character on the line being lost.
The insertion operation does not change the cursor position.
@@ -56,12 +56,16 @@ completion, unless otherwise noted in the preceding routine descriptions.
.SH NOTES
These routines do not necessarily imply use of a hardware insert character
feature.
-
+.PP
Note that \fBinsch\fR, \fBmvinsch\fR, and \fBmvwinsch\fR 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_ins_wch\fR(3X).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_insstr.3x b/contrib/ncurses/man/curs_insstr.3x
index ed1e13eaecb0..6a5d312970f6 100644
--- a/contrib/ncurses/man/curs_insstr.3x
+++ b/contrib/ncurses/man/curs_insstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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_insstr.3x,v 1.12 2001/11/03 19:59:03 tom Exp $
+.\" $Id: curs_insstr.3x,v 1.17 2006/02/25 21:49:19 tom Exp $
.TH curs_insstr 3X ""
.SH NAME
\fBinsstr\fR,
@@ -57,36 +57,42 @@
\fBint mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n);\fR
.br
.SH DESCRIPTION
-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
-\fIy\fR, \fIx\fR, if specified). The four routines with \fIn\fR as the last
-argument insert a leading substring of at most \fIn\fR characters. If
-\fIn\fR<=0, then the entire string is inserted.
-
-If a character in \fIstr\fR is a tab, newline, carriage return or
-backspace, the cursor is moved appropriately within the window. A
-newline also does a \fBclrtoeol\fR before moving. Tabs are considered
-to be at every eighth column. If a character in \fIstr\fR is another
-control character, it is drawn in the \fB^\fR\fIX\fR notation.
-Calling \fBwinch\fR after adding a control character (and moving to
-it, if necessary) does not return the control character, but instead
-returns a character in the ^-representation of the control character.
+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 \fIy\fR, \fIx\fR, if specified).
+The functions with \fIn\fR as the last argument
+insert a leading substring of at most \fIn\fR characters.
+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.
+.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.
.SH NOTES
Note that all but \fBwinsnstr\fR may be macros.
.SH PORTABILITY
These functions are described in the XSI Curses standard, Issue 4, which adds
-const qualifiers to the arguments. The XSI Curses error conditions
-\fBEILSEQ\fR and \fBEILOVERFLOW\fR associated with extended-level conformance
-are not yet detected (this implementation does not yet support XPG4 multibyte
-characters).
+const qualifiers to the arguments.
+.LP
+The Single Unix Specification, Version 2 states that
+\fBinsnstr\fP and \fBwinsnstr\fP perform wrapping.
+This is probably an error, since it makes this group of functions inconsistent.
+Also, no implementation of curses documents this inconsistency.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_clear\fR(3X), \fBcurs_inch\fR(3X).
+\fBcurses\fR(3X),
+\fBunctrl\fR(3X),
+\fBcurs_clear\fR(3X),
+\fBcurs_inch\fR(3X).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_instr.3x b/contrib/ncurses/man/curs_instr.3x
index 9a09ab278c47..a93de2728322 100644
--- a/contrib/ncurses/man/curs_instr.3x
+++ b/contrib/ncurses/man/curs_instr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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_instr.3x,v 1.10 2001/11/03 19:58:56 tom Exp $
+.\" $Id: curs_instr.3x,v 1.13 2006/02/25 21:49:19 tom Exp $
.TH curs_instr 3X ""
.SH NAME
\fBinstr\fR,
@@ -39,7 +39,7 @@
\fBmvwinnstr\fR - get a string of characters from a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint instr(char *str);\fR
.br
\fBint innstr(char *str, int n);\fR
@@ -65,13 +65,14 @@ functions with \fIn\fR as the last argument return a leading substring at most
.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.
.SH NOTES
Note that all routines except \fBwinnstr\fR may be macros.
.SH PORTABILITY
-The XSI Curses
-error conditions \fBEILSEQ\fR and \fBEILOVERFLOW\fR associated with
-extended-level conformance are not yet detected (this implementation does not
-yet support XPG4 multibyte characters).
SVr4 does not
document whether a length limit includes or excludes the trailing NUL.
.PP
@@ -86,4 +87,3 @@ In this case, the functions return the string ending at the right margin.
.\"# mode:nroff
.\"# fill-column:79
.\"# End:
-
diff --git a/contrib/ncurses/man/curs_inwstr.3x b/contrib/ncurses/man/curs_inwstr.3x
index b345ce6e6fd5..990789cb9b32 100644
--- a/contrib/ncurses/man/curs_inwstr.3x
+++ b/contrib/ncurses/man/curs_inwstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2005,2006 Free 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,9 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_inwstr.3x,v 1.2 2002/04/13 20:25:35 tom Exp $
-.TH curs_inwstr 3 ""
+.\" $Id: curs_inwstr.3x,v 1.5 2006/02/25 21:20:20 tom Exp $
+.TH curs_inwstr 3X ""
.SH NAME
-.PP
\fBinwstr\fR,
\fBinnwstr\fR,
\fBwinwstr\fR,
@@ -41,7 +40,7 @@
.SH SYNOPSIS
.nf
\fB#include <curses.h> \fR
-
+.sp
\fBint inwstr(\fR\fBwchar_t *\fR\fIstr\fR\fB);\fR
.br
\fBint innwstr(\fR\fBwchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
@@ -83,7 +82,6 @@ routines return
routines return the
number of characters read into the string.
.SH SEE ALSO
-Functions:
\fBcurses\fR(3X),
\fBcurs_instr\fR(3X),
\fBcurs_in_wchstr\fR(3X)
diff --git a/contrib/ncurses/man/curs_kernel.3x b/contrib/ncurses/man/curs_kernel.3x
index caeb5bba0cd8..9403973840e4 100644
--- a/contrib/ncurses/man/curs_kernel.3x
+++ b/contrib/ncurses/man/curs_kernel.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2001,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 *
@@ -26,16 +26,27 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_kernel.3x,v 1.13 2001/12/08 18:01:25 tom Exp $
+.\" $Id: curs_kernel.3x,v 1.15 2005/05/15 16:18:13 tom Exp $
.TH curs_kernel 3X ""
+.na
+.hy 0
.SH NAME
-\fBdef_prog_mode\fR, \fBdef_shell_mode\fR,
-\fBreset_prog_mode\fR, \fBreset_shell_mode\fR, \fBresetty\fR,
-\fBsavetty\fR, \fBgetsyx\fR, \fBsetsyx\fR, \fBripoffline\fR,
-\fBcurs_set\fR, \fBnapms\fR - low-level \fBcurses\fR routines
+\fBdef_prog_mode\fR,
+\fBdef_shell_mode\fR,
+\fBreset_prog_mode\fR,
+\fBreset_shell_mode\fR,
+\fBresetty\fR,
+\fBsavetty\fR,
+\fBgetsyx\fR,
+\fBsetsyx\fR,
+\fBripoffline\fR,
+\fBcurs_set\fR,
+\fBnapms\fR - low-level \fBcurses\fR routines
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint def_prog_mode(void);\fR
.br
\fBint def_shell_mode(void);\fR
@@ -62,32 +73,32 @@
The following routines give low-level access to various \fBcurses\fR
capabilities. Theses routines typically are used inside library
routines.
-
+.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"
(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.
-
+.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.
-
+.PP
The \fBresetty\fR and \fBsavetty\fR routines save and restore the
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.
-
+.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
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
@@ -97,7 +108,7 @@ 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
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
@@ -112,29 +123,45 @@ 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.
-
+.PP
\fBripoffline\fR can be called up to five times before calling \fBinitscr\fR or
\fBnewterm\fR.
-
+.PP
The \fBcurs_set\fR routine sets the cursor state is set 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.
-
+.PP
The \fBnapms\fR routine is used to sleep for \fIms\fR milliseconds.
.SH RETURN VALUE
Except for \fBcurs_set\fR, these routines always return \fBOK\fR.
-\fBcurs_set\fR returns the previous cursor state, or \fBERR\fR if the
+.PP
+\fBcurs_set\fR
+returns the previous cursor state, or \fBERR\fR if the
requested \fIvisibility\fR is not supported.
+.PP
+X/Open defines no error conditions.
+In this implementation
+.RS
+.TP 5
+\fBdef_prog_mode\fR, \fBdef_shell_mode\fR, \fBreset_prog_mode\fR, \fBreset_shell_mode\fR
+return an error
+if the terminal was not initialized, or
+if the I/O call to obtain the terminal settings fails.
+.TP 5
+\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
on the correctness of the return value anywhere else.
-
+.PP
Both ncurses and SVr4 will call \fBcurs_set\fR in \fBendwin\fR
if \fBcurs_set\fR
has been called to make the cursor other than normal, i.e., either
@@ -144,7 +171,7 @@ 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.
-
+.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
for the return value.
diff --git a/contrib/ncurses/man/curs_mouse.3x b/contrib/ncurses/man/curs_mouse.3x
index 8211ef894f71..865fab1ad88f 100644
--- a/contrib/ncurses/man/curs_mouse.3x
+++ b/contrib/ncurses/man/curs_mouse.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,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 *
@@ -27,19 +27,23 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_mouse.3x,v 1.19 2002/02/16 22:39:04 tom Exp $
+.\" $Id: curs_mouse.3x,v 1.28 2005/05/15 16:18:19 tom Exp $
.TH curs_mouse 3X ""
+.na
+.hy 0
.SH NAME
\fBgetmouse\fR, \fBungetmouse\fR,
\fBmousemask\fR, \fBwenclose\fR,
\fBmouse_trafo\fR, \fBwmouse_trafo\fR,
\fBmouseinterval\fR - mouse interface through curses
+.ad
+.hy
.SH SYNOPSIS
.nf
-\fB#include <curses.h>\fR
-
+\fB#include <curses.h>
+.PP
\fBtypedef unsigned long mmask_t;
-
+.PP
typedef struct
{
short id; \fI/* ID to distinguish multiple devices */\fB
@@ -55,7 +59,7 @@ MEVENT;\fR
.br
\fBmmask_t mousemask(mmask_t newmask, mmask_t *oldmask);\fR
.br
-\fBbool wenclose(WINDOW *win, int y, int x);\fR
+\fBbool wenclose(const WINDOW *win, int y, int x);\fR
.br
\fBbool mouse_trafo(int* pY, int* pX, bool to_screen);\fR
.br
@@ -70,7 +74,7 @@ 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.
-
+.PP
To make mouse events visible, use the \fBmousemask\fR function.
This will set
the mouse events to be reported.
@@ -80,13 +84,13 @@ 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.
-
+.PP
As a side effect, setting a zero mousemask may turn off the mouse pointer;
setting a nonzero mask may turn it on.
Whether this happens is device-dependent.
-
-Here are the mouse event type masks:
-
+.PP
+Here are the mouse event type masks which may be defined:
+.PP
.TS
l l
_ _
@@ -97,28 +101,39 @@ BUTTON1_RELEASED mouse button 1 up
BUTTON1_CLICKED mouse button 1 clicked
BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked
BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked
+_
BUTTON2_PRESSED mouse button 2 down
BUTTON2_RELEASED mouse button 2 up
BUTTON2_CLICKED mouse button 2 clicked
BUTTON2_DOUBLE_CLICKED mouse button 2 double clicked
BUTTON2_TRIPLE_CLICKED mouse button 2 triple clicked
+_
BUTTON3_PRESSED mouse button 3 down
BUTTON3_RELEASED mouse button 3 up
BUTTON3_CLICKED mouse button 3 clicked
BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked
BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked
+_
BUTTON4_PRESSED mouse button 4 down
BUTTON4_RELEASED mouse button 4 up
BUTTON4_CLICKED mouse button 4 clicked
BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked
BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked
+_
+BUTTON5_PRESSED mouse button 5 down
+BUTTON5_RELEASED mouse button 5 up
+BUTTON5_CLICKED mouse button 5 clicked
+BUTTON5_DOUBLE_CLICKED mouse button 5 double clicked
+BUTTON5_TRIPLE_CLICKED mouse button 5 triple clicked
+_
BUTTON_SHIFT shift was down during button state change
BUTTON_CTRL control was down during button state change
BUTTON_ALT alt was down during button state change
ALL_MOUSE_EVENTS report all button state changes
REPORT_MOUSE_POSITION report mouse movement
+_
.TE
-
+.PP
Once a class of mouse events have 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.
@@ -131,26 +146,26 @@ 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.
-
+.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.
-
+.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.
It is useful for determining what subset of
the screen windows enclose the location of a mouse event.
-
+.PP
The \fBwmouse_trafo\fR function transforms a given pair of coordinates from
stdscr-relative coordinates to screen-relative coordinates or vice versa.
Please remember, that stdscr-relative coordinates are not always identical
to screen-relative coordinates due to the mechanism to reserve lines on top
or bottom of the screen for other purposes (ripoff() call, see also slk_...
functions).
-If the parameter \fBto_screen\fR is \fBTRUE\fR, the pointers
-\fBpY, pX\fR must reference the coordinates of a location inside the window
+If the parameter \fBto_screen\fR is \fBTRUE\fR, the pointers
+\fBpY, pX\fR must reference the coordinates of a location inside the window
\fBwin\fR.
They are converted to screen-relative coordinates and returned
through the pointers.
@@ -168,47 +183,93 @@ window, \fBFALSE\fR is returned.
Please notice, that the referenced coordinates
are only replaced by the converted coordinates if the transformation was
successful.
-
+.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
be recognized as a click.
-Use \fBmouseinterval(-1)\fR to disable click resolution.
+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.
-
+.PP
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 \fBgetstr\fR that expects a linefeed for input-loop
termination.
-
.SH RETURN VALUE
-\fBgetmouse\fR, \fBungetmouse\fR and \fBmouseinterval\fR
+\fBgetmouse\fR and \fBungetmouse\fR
return the integer \fBERR\fR upon failure or \fBOK\fR
upon successful completion.
-\fBmousemask\fR returns the
-mask of reportable events.
+.RS
+.TP 5
+\fBgetmouse\fP
+returns an error.
+If no mouse driver was initialized, or
+if the mask parameter is zero,
+.TP 5
+\fBungetmouse\fP
+returns an error if the FIFO is full.
+.RE
+.PP
+\fBmousemask\fR
+returns the mask of reportable events.
+.PP
+\fBmouseinterval\fR
+returns the previous interval value, unless
+the terminal was not initialized.
+In that case, it returns the maximum interval value (166).
+.PP
\fBwenclose\fR and \fBwmouse_trafo\fR
are boolean functions returning \fBTRUE\fR or \fBFALSE\fR depending
on their test result.
.SH PORTABILITY
These calls were designed for \fBncurses\fR(3X), and are not found in SVr4
curses, 4.4BSD curses, or any other previous version of curses.
-
+.PP
The feature macro \fBNCURSES_MOUSE_VERSION\fR is provided so the preprocessor
-can be used to test whether these features are present (its value is 1).
+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
+.TP 3
+1
+has definitions for reserved events.
+The mask uses 28 bits.
+.TP 3
+2
+adds definitions for button 5,
+removes the definitions for reserved events.
+The mask uses 29 bits.
+.RE
+.PP
The order of the \fBMEVENT\fR structure members is not guaranteed.
Additional fields may be added to the structure in the future.
-
+.PP
Under \fBncurses\fR(3X), these calls are implemented using either
-xterm's built-in mouse-tracking API or Alessandro Rubini's gpm server.
-If you are using something other than xterm and there is no gpm daemon
-running on your machine, mouse events will not be visible to
+xterm's built-in mouse-tracking API or
+platform-specific drivers including
+.RS
+Alessandro Rubini's gpm server.
+.br
+FreeBSD sysmouse
+.br
+OS/2 EMX
+.RE
+If you are using an unsupported configuration,
+mouse events will not be visible to
\fBncurses\fR(3X) (and the \fBwmousemask\fR function will always
return \fB0\fR).
-
+.PP
+If the terminfo entry contains a \fBXM\fR string,
+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
+\\E[?1000%?%p1%{1}%=%th%el%;
+.RE
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
@@ -218,12 +279,12 @@ Mouse events under xterm will not in fact be ignored during cooked mode,
if they have been enabled by \fBwmousemask\fR.
Instead, the xterm mouse
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 must have \fBkmous\fR set to "\\E[M" (the beginning
of the response from xterm for mouse clicks).
-
+.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",
diff --git a/contrib/ncurses/man/curs_move.3x b/contrib/ncurses/man/curs_move.3x
index 2fff160c2f14..804637792be5 100644
--- a/contrib/ncurses/man/curs_move.3x
+++ b/contrib/ncurses/man/curs_move.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,18 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_move.3x,v 1.7 2001/11/03 19:58:47 tom Exp $
+.\" $Id: curs_move.3x,v 1.12 2006/02/25 21:49:19 tom Exp $
.TH curs_move 3X ""
+.na
+.hy 0
.SH NAME
-\fBmove\fR, \fBwmove\fR - move \fBcurses\fR window cursor
+\fBmove\fR,
+\fBwmove\fR - move \fBcurses\fR window cursor
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint move(int y, int x);\fR
.br
\fBint wmove(WINDOW *win, int y, int x);\fR
@@ -46,13 +51,14 @@ left-hand corner of the window, which is (0,0).
These routines return \fBERR\fR upon failure and OK (SVr4
specifies only "an integer value other than \fBERR\fR") upon successful
completion.
+.PP
+Specifically, they return an error
+if the window pointer is null, or
+if the position is outside the window.
.SH NOTES
Note that \fBmove\fR may be a macro.
.SH PORTABILITY
-These functions are described in the XSI Curses standard, Issue 4. The
-standard specifies that if (y,x) is within a multi-column character, the cursor
-is moved to the first column of that character; however, this implementation
-does not yet support the extended-level XSI multibyte characters.
+These functions are described in the XSI Curses standard, Issue 4.
.SH SEE ALSO
\fBcurses\fR(3X), \fBcurs_refresh\fR(3X)
.\"#
diff --git a/contrib/ncurses/man/curs_outopts.3x b/contrib/ncurses/man/curs_outopts.3x
index f9db6f26def5..5b986bbd67bf 100644
--- a/contrib/ncurses/man/curs_outopts.3x
+++ b/contrib/ncurses/man/curs_outopts.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,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 *
@@ -26,15 +26,26 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_outopts.3x,v 1.17 2001/10/14 00:50:30 tom Exp $
+.\" $Id: curs_outopts.3x,v 1.20 2005/05/15 16:18:32 tom Exp $
.TH curs_outopts 3X ""
+.na
+.hy 0
.SH NAME
-\fBclearok\fR, \fBidlok\fR, \fBidcok\fR, \fBimmedok\fR,
-\fBleaveok\fR, \fBsetscrreg\fR, \fBwsetscrreg\fR, \fBscrollok\fR,
-\fBnl\fR, \fBnonl\fR - \fBcurses\fR output options
+\fBclearok\fR,
+\fBidlok\fR,
+\fBidcok\fR,
+\fBimmedok\fR,
+\fBleaveok\fR,
+\fBsetscrreg\fR,
+\fBwsetscrreg\fR,
+\fBscrollok\fR,
+\fBnl\fR,
+\fBnonl\fR - \fBcurses\fR output options
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint clearok(WINDOW *win, bool bf);\fR
.br
\fBint idlok(WINDOW *win, bool bf);\fR
@@ -60,7 +71,7 @@ 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.
-
+.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
redraw the entire screen from scratch.
@@ -70,7 +81,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.
-
+.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
equipped.
@@ -83,28 +94,28 @@ disabled by default because insert/delete line tends to be visually annoying
when used in applications where it isn't really needed.
If insert/delete line
cannot be used, \fBcurses\fR redraws the changed portions of all lines.
-
+.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
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.
-
+.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,
-\fIetc\fR., automatically cause a call to \fBwrefresh\fR.
+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.
-
+.PP
Normally, the hardware cursor is left at the location of the window cursor
being refreshed.
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.
-
+.PP
The \fBsetscrreg\fR and \fBwsetscrreg\fR routines allow the application
programmer to set a software scrolling region in a window.
\fItop\fR and
@@ -121,7 +132,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.)
-
+.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
newline action on the bottom line, or typing the last character of the last
@@ -131,7 +142,7 @@ 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).
-
+.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
@@ -148,30 +159,48 @@ The functions \fBsetscrreg\fR and \fBwsetscrreg\fR return \fBOK\fR upon success
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.
+.PP
+In this implementation, those functions that have a window pointer
+will return an error if the window pointer is null.
+.RS
+.TP 5
+.B wclrtoeol
+returns an error
+if the cursor position is about to wrap.
+.TP 5
+.B wsetscrreg
+returns an error if the scrolling region limits extend outside the window.
+.RE
+.PP
+X/Open does not define any error conditions.
+This implementation returns an error
+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().
BSD curses did turn off these translations; AT&T curses (at least as late as
SVr1) did not.
We choose to do so, on the theory that a programmer requesting
raw input wants a clean (ideally 8-bit clean) connection that the operating
-system does not mess with.
-
+system will not alter.
+.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.
-
-Earlier System V curses implementations specified that with \fBscrollok\fR
+.PP
+Earlier System V curses implementations specified that with \fBscrollok\fR
enabled, any window modification triggering a scroll also forced a physical
refresh.
XSI Curses does not require this, and \fBncurses\fR avoids doing
it to perform better vertical-motion optimization at \fBwrefresh\fR
time.
-
+.PP
The XSI Curses standard does not mention that the cursor should be
made invisible as a side-effect of \fBleaveok\fR.
SVr4 curses documentation does this, but the code does not.
@@ -179,7 +208,7 @@ Use \fBcurs_set\fR to make the cursor invisible.
.SH NOTES
Note that \fBclearok\fR, \fBleaveok\fR, \fBscrollok\fR, \fBidcok\fR, \fBnl\fR,
\fBnonl\fR and \fBsetscrreg\fR may be macros.
-
+.PP
The \fBimmedok\fR routine is useful for windows that are used as terminal
emulators.
.SH SEE ALSO
diff --git a/contrib/ncurses/man/curs_overlay.3x b/contrib/ncurses/man/curs_overlay.3x
index f17b375c3982..066c3a4a50f6 100644
--- a/contrib/ncurses/man/curs_overlay.3x
+++ b/contrib/ncurses/man/curs_overlay.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,20 +26,24 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_overlay.3x,v 1.10 2001/11/03 19:58:30 tom Exp $
+.\" $Id: curs_overlay.3x,v 1.14 2006/02/25 21:49:19 tom Exp $
.TH curs_overlay 3X ""
+.na
+.hy 0
.SH NAME
\fBoverlay\fR,
\fBoverwrite\fR,
\fBcopywin\fR - overlay and manipulate overlapped \fBcurses\fR windows
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint overlay(const WINDOW *srcwin, WINDOW *dstwin);\fR
.br
\fBint overwrite(const WINDOW *srcwin, WINDOW *dstwin);\fR
.br
-\fBint copywin(WINDOW *srcwin, WINDOW *dstwin, int sminrow,\fR
+\fBint copywin(const WINDOW *srcwin, WINDOW *dstwin, int sminrow,\fR
\fBint smincol, int dminrow, int dmincol, int dmaxrow,\fR
\fBint dmaxcol, int overlay);\fR
.SH DESCRIPTION
@@ -48,7 +52,7 @@ 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.
-
+.PP
The \fBcopywin\fR routine provides a finer granularity of control over the
\fBoverlay\fR and \fBoverwrite\fR routines. Like in the \fBprefresh\fR
routine, a rectangle is specified in the destination window, (\fIdminrow\fR,
@@ -60,6 +64,13 @@ argument \fIoverlay\fR is \fBtrue\fR, then copying is non-destructive, as in
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.
+.PP
+X/Open defines no error conditions.
+In this implementation,
+\fBcopywin\fP,
+\fBoverlay\fP and \fBoverwrite\fP return an error
+if either of the window pointers are null, or
+if some part of the window would be placed off-screen.
.SH NOTES
Note that \fBoverlay\fR and \fBoverwrite\fR may be macros.
.SH PORTABILITY
diff --git a/contrib/ncurses/man/curs_pad.3x b/contrib/ncurses/man/curs_pad.3x
index 0813a0a48f64..c7222074ebeb 100644
--- a/contrib/ncurses/man/curs_pad.3x
+++ b/contrib/ncurses/man/curs_pad.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2004,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 *
@@ -26,14 +26,22 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_pad.3x,v 1.9 2000/07/04 22:38:13 tom Exp $
+.\" $Id: curs_pad.3x,v 1.14 2005/05/15 16:18:43 tom Exp $
.TH curs_pad 3X ""
+.na
+.hy 0
.SH NAME
-\fBnewpad\fR, \fBsubpad\fR, \fBprefresh\fR,
-\fBpnoutrefresh\fR, \fBpechochar\fR - create and display \fBcurses\fR pads
+\fBnewpad\fR,
+\fBsubpad\fR,
+\fBprefresh\fR,
+\fBpnoutrefresh\fR,
+\fBpechochar\fR,
+\fBpecho_wchar\fR - create and display \fBcurses\fR pads
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBWINDOW *newpad(int nlines, int ncols);\fR
.br
\fBWINDOW *subpad(WINDOW *orig, int nlines, int ncols,\fR
@@ -46,56 +54,100 @@
\fBint sminrow, int smincol, int smaxrow, int smaxcol);\fR
.br
\fBint pechochar(WINDOW *pad, chtype ch);\fR
+.br
+\fBint pecho_wchar(WINDOW *pad, const cchar_t *wch);\fR
.SH DESCRIPTION
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. A pad is like a window, except that it is not restricted by the
+\fIncols\fR.
+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 refreshes of pads
-(\fIe\fR.\fIg\fR., from scrolling or echoing of input) do not occur. It is not
+screen.
+Pads can be used when a large window is needed, and only a part of the
+window will be on the screen at one time.
+Automatic refreshes of pads
+(e.g., from scrolling or echoing of input) do not occur.
+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
+\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.
-
+.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.
Unlike \fBsubwin\fR, which uses screen coordinates, the window is at position
-(\fIbegin\fR_\fIx\fR\fB,\fR \fIbegin\fR_\fIy\fR) on the pad. The window is
+(\fIbegin\fR_\fIx\fR\fB,\fR \fIbegin\fR_\fIy\fR) on the pad.
+The window is
made in the middle of the window \fIorig\fR, so that changes made to one window
-affect both windows. During the use of this routine, it will often be
+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.
-
+.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. \fIpminrow\fR and \fIpmincol\fR specify the upper
-left-hand corner of the rectangle to be displayed in the pad. \fIsminrow\fR,
+of windows.
+The additional parameters are needed to indicate what part of the
+pad and screen are involved.
+\fIpminrow\fR and \fIpmincol\fR specify the upper
+left-hand corner of the rectangle to be displayed in the pad.
+\fIsminrow\fR,
\fIsmincol\fR, \fIsmaxrow\fR, and \fIsmaxcol\fR specify the edges of the
-rectangle to be displayed on the screen. The lower right-hand corner 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 coordinates,
-since the rectangles must be the same size. Both rectangles must be entirely
-contained within their respective structures. Negative values of
+since the rectangles must be the same size.
+Both rectangles must be entirely
+contained within their respective structures.
+Negative values of
\fIpminrow\fR, \fIpmincol\fR, \fIsminrow\fR, or \fIsmincol\fR are treated as if
they were zero.
-
+.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
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
+\fBprefresh\fR.
+The knowledge that only a single character is being output is
taken into consideration and, for non-control characters, a considerable
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
+equivalents.
+In the case of \fBpechochar\fR, the last location of the pad on
the screen is reused for the arguments to \fBprefresh\fR.
+.PP
+The \fBpecho_wchar\fR function is the analogous wide-character
+form of \fBpechochar\fR.
+It outputs one character to a pad and immediately refreshes the pad.
+It does this by a call to \fBwadd_wch\fR followed by a call to \fBprefresh\fR.
.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.
-
+.PP
Routines that return pointers return \fBNULL\fR on error, and set \fBerrno\fR
-to \fBENOMEM\fR.
+to \fBENOMEM\fR.
+.PP
+X/Open does not define any error conditions.
+In this implementation
+.RS
+.TP 5
+\fBprefresh\fP and \fBpnoutrefresh\fP
+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 maximum.
+.TP 5
+\fBpechochar\fP
+returns an error
+if the window is not really a pad, and the associated call
+to \fBwechochar\fP returns an error.
+.TP 5
+\fBpecho_wchar\fP
+returns an error
+if the window is not really a pad, and the associated call
+to \fBwecho_wchar\fP returns an error.
+.RE
.SH NOTES
Note that \fBpechochar\fR may be a macro.
.SH PORTABILITY
diff --git a/contrib/ncurses/man/curs_print.3x b/contrib/ncurses/man/curs_print.3x
index dd4b6e3cba45..92b9ca2dafcc 100644
--- a/contrib/ncurses/man/curs_print.3x
+++ b/contrib/ncurses/man/curs_print.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,36 +26,36 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_print.3x,v 1.5 2002/02/16 22:39:04 tom Exp $
+.\" $Id: curs_print.3x,v 1.8 2006/02/25 21:49:19 tom Exp $
.TH curs_print 3X ""
.SH NAME
\fBmcprint\fR - ship binary data to printer
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint mcprint(char *data, int len);\fR
.SH DESCRIPTION
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
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.
-
+.
.SH RETURN VALUE
-The \fBmcprint\fR function returns \fBERR\fR if the write operation aborted
+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:
.TP 5
ENODEV
-Capabilities for printer redirection don't exist.
+Capabilities for printer redirection do not exist.
.TP 5
ENOMEM
Couldn't allocate sufficient memory to buffer the printer write.
-
+.PP
When \fBmcprint\fR succeeds, it returns the number of characters actually
sent to the printer.
.SH PORTABILITY
diff --git a/contrib/ncurses/man/curs_printw.3x b/contrib/ncurses/man/curs_printw.3x
index 8ba9d1748649..7c1a41b5b96f 100644
--- a/contrib/ncurses/man/curs_printw.3x
+++ b/contrib/ncurses/man/curs_printw.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,50 +26,64 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_printw.3x,v 1.11 2000/07/01 20:11:32 tom Exp $
+.\" $Id: curs_printw.3x,v 1.16 2006/02/25 21:49:19 tom Exp $
.TH curs_printw 3X ""
+.na
+.hy 0
.SH NAME
\fBprintw\fR,
\fBwprintw\fR,
\fBmvprintw\fR,
\fBmvwprintw\fR,
\fBvwprintw\fR, \fBvw_printw\fR - print formatted output in \fBcurses\fR windows
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
-\fBint printw(char *fmt\fR [\fB, arg\fR] \fB...);\fR
+.sp
+\fBint printw(const char *fmt, ...);\fR
.br
-\fBint wprintw(WINDOW *win, char *fmt\fR [\fB, arg\fR] \fB...);\fR
+\fBint wprintw(WINDOW *win, const char *fmt, ...);\fR
.br
-\fBint mvprintw(int y, int x, char *fmt\fR [\fB, arg\fR] \fB...);\fR
+\fBint mvprintw(int y, int x, const char *fmt, ...);\fR
.br
-\fBint mvwprintw(WINDOW *win, int y, int x,\fR
- \fBchar *fmt\fR [\fB, arg]\fR ...);
-
-\fB#include <varargs.h>\fR
+\fBint mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...);\fR
.br
-\fBint vwprintw(WINDOW *win, char *fmt, varglist);\fR
+\fBint vwprintw(WINDOW *win, const char *fmt, va_list varglist);\fR
.br
-\fBint vw_printw(WINDOW *win, char *fmt, varglist);\fR
+\fBint vw_printw(WINDOW *win, const char *fmt, va_list varglist);\fR
.br
.SH DESCRIPTION
The \fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR and \fBmvwprintw\fR
routines are analogous to \fBprintf\fR [see \fBprintf\fR(3S)]. In
effect, the string that would be output by \fBprintf\fR is output
instead as though \fBwaddstr\fR were used on the given window.
-
-The \fBvwprintw\fR routine is analogous to \fBvprintf\fR [see
-\fBprintf\fR(3S)] and performs a \fBwprintw\fR using a variable
-argument list. The third argument is a \fBva_list\fR, a pointer to a
-list of arguments, as defined in \fB<varargs.h>\fR.
+.PP
+The \fBvwprintw\fR and \fBwv_printw\fR routines are analogous
+to \fBvprintf\fR [see \fBprintf\fR(3S)]
+and perform a \fBwprintw\fR using a variable argument list.
+The third argument is a \fBva_list\fR, a pointer to a
+list of arguments, as defined in \fB<stdarg.h>\fR.
.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.
+.PP
+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.
.SH PORTABILITY
The XSI Curses standard, Issue 4 describes 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.
+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>.
.SH SEE ALSO
\fBcurses\fR(3X), \fBprintf\fR(3S), \fBvprintf(3S)\fR
.\"#
diff --git a/contrib/ncurses/man/curs_refresh.3x b/contrib/ncurses/man/curs_refresh.3x
index 210b326a618a..5ce06903d83d 100644
--- a/contrib/ncurses/man/curs_refresh.3x
+++ b/contrib/ncurses/man/curs_refresh.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2001,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 *
@@ -26,8 +26,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_refresh.3x,v 1.10 2001/11/03 18:57:12 tom Exp $
+.\" $Id: curs_refresh.3x,v 1.12 2005/05/15 16:18:49 tom Exp $
.TH curs_refresh 3X ""
+.na
+.hy 0
.SH NAME
\fBdoupdate\fR,
\fBredrawwin\fR,
@@ -35,9 +37,11 @@
\fBwnoutrefresh\fR,
\fBwredrawln\fR,
\fBwrefresh\fR - refresh \fBcurses\fR windows and lines
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint refresh(void);\fR
.br
\fBint wrefresh(WINDOW *win);\fR
@@ -62,14 +66,14 @@ 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.
-
+.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.
-
+.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
@@ -84,7 +88,7 @@ characters transmitted and less CPU time used.
If the \fIwin\fR argument to
\fBwrefresh\fR is 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.
What actually happens is that all \fItouched\fR (changed) lines in the window
are copied to the virtual screen.
@@ -94,7 +98,7 @@ 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.)
-
+.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).
@@ -103,11 +107,25 @@ The routine \fBredrawwin\fR() touches the entire window.
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.
+.PP
+X/Open does not define any error conditions.
+In this implementation
+.RS
+.TP 5
+\fBwnoutrefresh\fP
+returns an error
+if the window pointer is null, or
+if the window is really a pad.
+.TP 5
+\fBwredrawln\fP
+returns an error
+if the associated call to \fBtouchln\fP returns an error.
+.RE
.SH NOTES
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
of a window or just its changed portions has never been well-documented in
historic curses versions (including SVr4).
diff --git a/contrib/ncurses/man/curs_scanw.3x b/contrib/ncurses/man/curs_scanw.3x
index b7f3795d8101..9f25b57089bb 100644
--- a/contrib/ncurses/man/curs_scanw.3x
+++ b/contrib/ncurses/man/curs_scanw.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2000,2006 Free 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_scanw.3x,v 1.11 2000/07/15 21:48:17 tom Exp $
+.\" $Id: curs_scanw.3x,v 1.13 2006/02/25 21:42:22 tom Exp $
.TH curs_scanw 3X ""
.SH NAME
\fBscanw\fR,
@@ -36,15 +36,14 @@
\fBvwscanw\fR, \fBvw_scanw\fR - convert formatted input from a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
-\fBint scanw(char *fmt\fR [\fB, arg\fR] \fB...);\fR
+.sp
+\fBint scanw(char *fmt, ...);\fR
.br
-\fBint wscanw(WINDOW *win, char *fmt\fR [\fB, arg\fR] \fB...);\fR
+\fBint wscanw(WINDOW *win, char *fmt, ...);\fR
.br
-\fBint mvscanw(int y, int x, char *fmt\fR [\fB, arg\fR] \fB...);\fR
+\fBint mvscanw(int y, int x, char *fmt, ...);\fR
.br
-\fBint mvwscanw(WINDOW *win, int y, int x,\fR
- \fBchar *fmt\fR [\fB, arg]\fR \fB...);\fR
+\fBint mvwscanw(WINDOW *win, int y, int x, char *fmt, ...);\fR
.br
\fBint vw_scanw(WINDOW *win, char *fmt, va_list varglist);\fR
.br
@@ -55,15 +54,15 @@ The \fBscanw\fR, \fBwscanw\fR and \fBmvscanw\fR routines are analogous to
\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
field are lost.
-
-The \fBvwscanw\fR routine is similar to \fBvwprintw\fR in that it performs a
-\fBwscanw\fR using a variable argument list. The third argument is a
-\fIva\fR_\fIlist\fR, a pointer to a list of arguments, as defined in
-\fB<varargs.h>\fR.
+.PP
+The \fBvwscanw\fR and \fBvw_scanw\fR routines are analogous to \fBvscanf\fR.
+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.
.SH RETURN VALUE
\fBvwscanw\fR returns \fBERR\fR on failure and an integer equal to the
number of fields scanned on success.
-
+.PP
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.
@@ -71,6 +70,23 @@ which were mapped in the call.
The XSI Curses standard, Issue 4 describes these functions. 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.
+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>.
+.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,
+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.
+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(3S)
.\"#
diff --git a/contrib/ncurses/man/curs_scr_dump.3x b/contrib/ncurses/man/curs_scr_dump.3x
index 581d10d13c43..d432c0dbdb6a 100644
--- a/contrib/ncurses/man/curs_scr_dump.3x
+++ b/contrib/ncurses/man/curs_scr_dump.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,20 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_scr_dump.3x,v 1.2 2000/07/01 20:06:53 tom Exp $
+.\" $Id: curs_scr_dump.3x,v 1.6 2006/02/25 21:49:19 tom Exp $
.TH curs_scr_dump 3X ""
+.na
+.hy 0
.SH NAME
\fBscr_dump\fR,
\fBscr_restore\fR,
\fBscr_init\fR,
\fBscr_set\fR - read (write) a \fBcurses\fR screen from (to) a file
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint scr_dump(const char *filename);\fR
.br
\fBint scr_restore(const char *filename);\fR
@@ -47,41 +51,45 @@
.SH DESCRIPTION
The \fBscr_dump\fR routine dumps the current contents of the virtual screen
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.
-
+.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,
\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
-after \fBinitscr\fR or a \fBsystem\fR [see \fBsystem\fR(BA_LIB)] call to share
+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.
-
+.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
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.
-
+.PP
To read (write) a window from (to) a file, use the \fBgetwin\fR and
\fBputwin\fR routines [see \fBcurs_util\fR(3X)].
.SH RETURN VALUE
All routines return the integer \fBERR\fR upon failure and \fBOK\fR
upon success.
+.PP
+X/Open defines no error conditions.
+In this implementation,
+each will return an error if the file cannot be opened.
.SH NOTES
Note that \fBscr_init\fR, \fBscr_set\fR, and \fBscr_restore\fR may be macros.
.SH PORTABILITY
The XSI Curses standard, Issue 4, describes these functions (adding the const
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 don't define
+considered invalid "if the time-stamp of the tty is old" but do not define
"old".
.SH SEE ALSO
\fBcurses\fR(3X), \fBcurs_initscr\fR(3X), \fBcurs_refresh\fR(3X),
diff --git a/contrib/ncurses/man/curs_scroll.3x b/contrib/ncurses/man/curs_scroll.3x
index f957ac96db7c..754b71499841 100644
--- a/contrib/ncurses/man/curs_scroll.3x
+++ b/contrib/ncurses/man/curs_scroll.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,19 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_scroll.3x,v 1.9 2001/10/14 00:51:56 tom Exp $
+.\" $Id: curs_scroll.3x,v 1.13 2006/02/25 21:49:19 tom Exp $
.TH curs_scroll 3X ""
+.na
+.hy 0
.SH NAME
-\fBscroll\fR, \fBscrl\fR, \fBwscrl\fR - scroll a \fBcurses\fR window
+\fBscroll\fR,
+\fBscrl\fR,
+\fBwscrl\fR - scroll a \fBcurses\fR window
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint scroll(WINDOW *win);\fR
.br
\fBint scrl(int n);\fR
@@ -46,28 +52,34 @@ 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.
-
+.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
scroll the window down \fIn\fR lines.
This involves moving the lines in the
window character image structure.
The current cursor position is not changed.
-
+.PP
For these functions to work, scrolling must be enabled via \fBscrollok\fR.
.SH RETURN VALUE
These routines return \fBERR\fR upon failure, and \fBOK\fR (SVr4 only specifies
"an integer value other than \fBERR\fR") upon successful completion.
+.PP
+X/Open defines no error conditions.
+.PP
+This implementation returns an error
+if the window pointer is null, or
+if scrolling is not enabled in the window, e.g., with \fBscrollok\fP.
.SH NOTES
Note that \fBscrl\fR and \fBscroll\fR may be macros.
-
-The SVr4 documentation says that the optimization of physically scrolling
+.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.
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.
-
+optimization of multiple scroll actions on the next update.
+.PP
Neither the SVr4 nor the XSI documentation specify whether the current
attribute or
current color-pair of blanks generated by the scroll function is zeroed.
diff --git a/contrib/ncurses/man/curs_slk.3x b/contrib/ncurses/man/curs_slk.3x
index 8f1ae8a0d9bf..b946ff21f2de 100644
--- a/contrib/ncurses/man/curs_slk.3x
+++ b/contrib/ncurses/man/curs_slk.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,32 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_slk.3x,v 1.11 2001/03/03 21:05:41 Todd.C.Miller Exp $
+.\" $Id: curs_slk.3x,v 1.15 2006/02/25 21:49:19 tom Exp $
.TH curs_slk 3X ""
+.na
+.hy 0
.SH NAME
-\fBslk_init\fR, \fBslk_set\fR, \fBslk_refresh\fR,
-\fBslk_noutrefresh\fR, \fBslk_label\fR,
-\fBslk_clear\fR, \fBslk_restore\fR, \fBslk_touch\fR,
-\fBslk_attron\fR, \fBslk_attrset\fR, \fBslk_attroff\fR,
-\fBslk_attr_on\fR, \fBslk_attr_set\fR, \fBslk_attr_off\fR,
-\fBslk_attr\fR, \fBslk_color\fR - \fBcurses\fR soft label routines
+\fBslk_init\fR,
+\fBslk_set\fR,
+\fBslk_refresh\fR,
+\fBslk_noutrefresh\fR,
+\fBslk_label\fR,
+\fBslk_clear\fR,
+\fBslk_restore\fR,
+\fBslk_touch\fR,
+\fBslk_attron\fR,
+\fBslk_attrset\fR,
+\fBslk_attroff\fR,
+\fBslk_attr_on\fR,
+\fBslk_attr_set\fR,
+\fBslk_attr_off\fR,
+\fBslk_attr\fR,
+\fBslk_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
@@ -77,13 +91,13 @@ 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,
\fBcurses\fR takes over the bottom line of \fBstdscr\fR, reducing the size of
\fBstdscr\fR and the variable \fBLINES\fR. \fBcurses\fR standardizes on eight
-labels of up to eight characters each. In addition to this, the ncurses
+labels of up to eight characters each. In addition to this, the ncurses
implementation supports a mode where it simulates 12 labels of up to five
characters each. This is most common for todays PC like enduser devices.
Please note that ncurses simulates this mode by taking over up to two lines at
the bottom of the screen, it doesn't try to use any hardware support for this
mode.
-
+.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
@@ -92,44 +106,86 @@ the labels, \fB1\fR indicates a 4-4 arrangement and \fB2\fR indicates the
PC like 4-4-4 mode. If \fBfmt\fR is set to \fB3\fR, it is again the PC like
4-4-4 mode, but in addition an index line is generated, helping the user to
identify the key numbers easily.
-
+.PP
The \fBslk_set\fR routine requires \fIlabnum\fR to be a label number,
-from \fB1\fR to \fB8\fR (resp. \fB12\fR); \fIlabel\fR must be the string
+from \fB1\fR to \fB8\fR (resp. \fB12\fR); \fIlabel\fR must be the string
to be put on the label, up to eight (resp. five) characters in length.
A null string or a null pointer sets up a blank label. \fIfmt\fR is either
-\fB0\fR, \fB1\fR, or \fB2\fR, indicating whether the label is to be
+\fB0\fR, \fB1\fR, or \fB2\fR, indicating whether the label is to be
left-justified, centered, or right-justified, respectively, within the
label.
-
+.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.
-
+.PP
The \fBslk_clear\fR routine clears the soft labels from the screen.
-
-The \fBslk_restore\fR routine, restores the soft labels to the screen
+.PP
+The \fBslk_restore\fR routine restores the soft labels to the screen
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.
-
+.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.
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
+the screen. The default highlight for soft keys is A_STANDOUT (as in
System V curses, which does not document this fact).
-
+.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.
-
+.
.SH RETURN VALUE
These routines return \fBERR\fR upon failure and OK (SVr4 specifies only "an
-integer value other than \fBERR\fR") upon successful completion. \fBslk_attr\fR
+integer value other than \fBERR\fR") upon successful completion.
+.PP
+X/Open defines no error conditions.
+In this implementation
+.RS
+.TP 5
+\fBslk_attr\fR
returns the attribute used for the soft keys.
-
-\fBslk_label\fR returns \fBNULL\fR on error.
+.TP 5
+.na
+.hy 0
+\fBslk_attroff\fP, \fBslk_attron\fP, \fBslk_clear\fP, \fBslk_noutrefresh\fP, \fBslk_refresh\fP, \fBslk_touch\fP
+.ad
+.hy
+return an error
+if the terminal or the softkeys were not initialized.
+.TP 5
+\fBslk_attrset\fP
+returns an error
+if the terminal or the softkeys were not initialized.
+.TP 5
+\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.
+.TP 5
+\fBslk_color\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.
+.TP 5
+\fBslk_init\fR
+returns an error
+if the format parameter is outside the range 0..3.
+.TP 5
+\fBslk_label\fR
+returns \fBNULL\fR on error.
+.TP 5
+\fBslk_set\fP
+returns an error
+if the terminal or the softkeys were not initialized, or
+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 NOTES
Most applications would use \fBslk_noutrefresh\fR because a
\fBwrefresh\fR is likely to follow soon.
diff --git a/contrib/ncurses/man/curs_termattrs.3x b/contrib/ncurses/man/curs_termattrs.3x
index d285b8663345..48ff21ced68c 100644
--- a/contrib/ncurses/man/curs_termattrs.3x
+++ b/contrib/ncurses/man/curs_termattrs.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2002,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 *
@@ -26,7 +26,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_termattrs.3x,v 1.8 2002/05/11 21:32:26 tom Exp $
+.\" $Id: curs_termattrs.3x,v 1.9 2003/12/27 18:37:47 tom Exp $
.TH curs_termattrs 3X ""
.SH NAME
\fBbaudrate\fR,
@@ -42,7 +42,7 @@
\fBtermname\fR - \fBcurses\fR environment query routines
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.PP
\fBint baudrate(void);\fR
.br
\fBchar erasechar(void);\fR
@@ -69,29 +69,29 @@
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.
-
+.PP
The \fBerasechar\fR routine returns the user's current erase character.
-
+.PP
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.
-
+.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
be used to determine if it would be appropriate to turn on physical
scrolling using \fBscrollok\fR.
-
+.PP
The \fBkillchar\fR routine returns the user's current line kill character.
-
+.PP
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.
-
+.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
@@ -100,7 +100,7 @@ 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.
-
+.PP
If a given terminal doesn't support a video attribute that an
application program is trying to use, \fBcurses\fR may substitute a
different video attribute for it.
@@ -109,12 +109,11 @@ 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.
-
-The \fBtermname\fR routine returns the value of the environmental
-variable \fBTERM\fR (truncated to 14 characters).
+.PP
+The \fBtermname\fR routine returns the terminal name used by \fBsetupterm\fR.
.SH RETURN VALUE
\fBlongname\fR and \fBtermname\fR return \fBNULL\fR on error.
-
+.PP
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.
@@ -123,6 +122,8 @@ Note that \fBtermattrs\fR may be a macro.
.SH PORTABILITY
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.
.SH SEE ALSO
\fBcurses\fR(3X), \fBcurs_initscr\fR(3X), \fBcurs_outopts\fR(3X)
.\"#
diff --git a/contrib/ncurses/man/curs_termcap.3x b/contrib/ncurses/man/curs_termcap.3x
index 828bb9ad3cfd..e8072dc95bcf 100644
--- a/contrib/ncurses/man/curs_termcap.3x
+++ b/contrib/ncurses/man/curs_termcap.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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_termcap.3x,v 1.16 2002/02/16 19:26:41 tom Exp $
+.\" $Id: curs_termcap.3x,v 1.20 2006/02/25 21:50:01 tom Exp $
.TH curs_termcap 3X ""
.ds n 5
.SH NAME
@@ -40,12 +40,15 @@
\fB#include <curses.h>\fR
.br
\fB#include <term.h>\fR
-.br
+.sp
\fBextern char PC;\fR
+.br
\fBextern char * UP;\fR
+.br
\fBextern char * BC;\fR
-\fBextern @NCURSES_OSPEED@ ospeed;\fR
.br
+\fBextern @NCURSES_OSPEED@ ospeed;\fR
+.sp
\fBint tgetent(char *bp, const char *name);\fR
.br
\fBint tgetflag(char *id);\fR
@@ -64,36 +67,36 @@ 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.
-
+.PP
The \fBtgetent\fR routine loads the entry for \fIname\fR.
It returns 1 on success, 0 if there is no such entry, and -1 if the
terminfo database could not be found.
The emulation ignores the buffer pointer \fIbp\fR.
-
+.PP
The \fBtgetflag\fR routine gets the boolean entry for \fIid\fR,
or zero if it is not available.
-
+.PP
The \fBtgetnum\fR routine gets the numeric entry for \fIid\fR,
or -1 if it is not available.
-
+.PP
The \fBtgetstr\fR routine returns the string entry for \fIid\fR,
or zero if it is not available.
Use \fBtputs\fR to output the returned string.
The return value will also be copied to the buffer pointed to by \fIarea\fR,
and the \fIarea\fR value will be updated to point past the null ending
this value.
-
+.PP
Only the first two characters of the \fBid\fR parameter of
\fBtgetflag\fR,
\fBtgetnum\fR and
\fBtgetstr\fR are compared in lookups.
-
+.PP
The \fBtgoto\fR routine instantiates the parameters into the given capability.
The output from this routine is to be passed to \fBtputs\fR.
-
+.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.
-
+.PP
The variables
\fBPC\fR,
\fBUP\fR and
@@ -108,13 +111,13 @@ respectively.
\fBBC\fR is used in the \fBtgoto\fR emulation.
The variable \fBospeed\fR is set by ncurses in a system-specific coding
to reflect the terminal speed.
-
+.
.SH RETURN VALUE
Except where explicitly noted,
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.
-
+.PP
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,
@@ -126,14 +129,20 @@ terminfo-style strings as terminfo.
if the string is indeed terminfo-style by looking for "%p" parameters or
"$<..>" delays, and invoke a termcap-style parser if the string does not
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.
+.PP
+Note that termcap has nothing analogous to terminfo's \fBsgr\fR string.
+One consequence of this is that termcap applications assume \fRme\fR
+(terminfo \fBsgr0\fR) does not reset the alternate character set.
+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
are marked TO BE WITHDRAWN and may be removed in future versions.
-
+.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
since SVr1.
@@ -142,7 +151,7 @@ misinterpreted to mean that \fBtgetent\fR returns \fBOK\fR or \fBERR\fR.
Because the purpose of these functions is to provide compatibility with
the \fItermcap\fR library, that is a defect in XCurses, Issue 4, Version 2
rather than in ncurses.
-
+.PP
External variables are provided for support of certain termcap applications.
However, termcap applications' use of those variables is poorly documented,
e.g., not distinguishing between input and output.
diff --git a/contrib/ncurses/man/curs_terminfo.3x b/contrib/ncurses/man/curs_terminfo.3x
index c61b695ace0b..435ac35b7c3e 100644
--- a/contrib/ncurses/man/curs_terminfo.3x
+++ b/contrib/ncurses/man/curs_terminfo.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1999-2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999-2005,2006 Free 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,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_terminfo.3x,v 1.15 2002/05/11 21:19:29 tom Exp $
+.\" $Id: curs_terminfo.3x,v 1.24 2006/11/04 21:50:03 tom Exp $
.TH curs_terminfo 3X ""
.ds n 5
+.na
+.hy 0
.SH NAME
\fBdel_curterm\fR,
\fBmvcur\fR,
@@ -46,15 +48,17 @@
\fBvid_puts\fR,
\fBvidattr\fR,
\fBvidputs\fR - \fBcurses\fR interfaces to terminfo database
+.ad
+.hy
.SH SYNOPSIS
.nf
\fB#include <curses.h>\fR
.br
\fB#include <term.h>\fR
-
-\fBint setupterm(const char *\fR\fIterm\fR\fB, int \fR\fIfildes\fR\fB, int *\fR\fIerrret\fR\fB);\fR
+.PP
+\fBint setupterm(char *\fR\fIterm\fR\fB, int \fR\fIfildes\fR\fB, int *\fR\fIerrret\fR\fB);\fR
.br
-\fBint setterm(const char *\fR\fIterm\fR\fB);\fR
+\fBint setterm(char *\fR\fIterm\fR\fB);\fR
.br
\fBTERMINAL *set_curterm(TERMINAL *\fR\fInterm\fR\fB);\fR
.br
@@ -62,13 +66,13 @@
.br
\fBint restartterm(const char *\fR\fIterm\fR\fB, int \fR\fIfildes\fR\fB, int *\fR\fIerrret\fR\fB);\fR
.br
-\fBchar *tparm(const char *\fR\fIstr\fR\fB, ...);\fR
+\fBchar *tparm(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
-\fBint vidputs(chtype \fR\fIattrs\fR\fB, int (*\fR\fIputc\fR\fB)(char));\fR
+\fBint vidputs(chtype \fR\fIattrs\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR
.br
\fBint vidattr(chtype \fR\fIattrs\fR\fB);\fR
.br
@@ -78,11 +82,11 @@
.br
\fBint mvcur(int \fR\fIoldrow\fR\fB, int \fR\fIoldcol\fR\fB, int \fR\fInewrow\fR, int \fR\fInewcol\fR\fB);\fR
.br
-\fBint tigetflag(const char *\fR\fIcapname\fR\fB);\fR
+\fBint tigetflag(char *\fR\fIcapname\fR\fB);\fR
.br
-\fBint tigetnum(const char *\fR\fIcapname\fR\fB);\fR
+\fBint tigetnum(char *\fR\fIcapname\fR\fB);\fR
.br
-\fBchar *tigetstr(const char *\fR\fIcapname\fR\fB);\fR
+\fBchar *tigetstr(char *\fR\fIcapname\fR\fB);\fR
.br
.fi
.SH DESCRIPTION
@@ -91,7 +95,7 @@ directly with the \fBterminfo\fR database to handle certain terminal
capabilities, such as programming function keys. For all other
functionality, \fBcurses\fR routines are more suitable and their use is
recommended.
-
+.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
@@ -105,21 +109,21 @@ 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 \fBlines\fR and \fBcolumns\fR specified in the
\fBterminfo\fR database are used.
-
+.PP
The header files \fBcurses.h\fR and \fBterm.h\fR should be included (in this
order) to get the definitions for these strings, numbers, and flags.
-Parameterized strings should be passed through \fBtparm\fR to instantiate them.
+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 the \fBreset_shell_mode\fR to restore the
tty modes before exiting [see \fBcurs_kernel\fR(3X)]. Programs which use
cursor addressing should output \fBenter_ca_mode\fR upon startup and should
output \fBexit_ca_mode\fR before exiting. Programs desiring shell escapes
should call
-
+.PP
\fBreset_shell_mode\fR and output \fBexit_ca_mode\fR before the shell
is called and should output \fBenter_ca_mode\fR and 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
@@ -150,60 +154,60 @@ means that the \fBterminfo\fR database could not be found.
If \fIerrret\fR is
null, \fBsetupterm\fR prints an error message upon finding an error
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.
-
+.PP
The \fBsetterm\fR routine is being replaced by \fBsetupterm\fR. The call:
-
+.sp
\fBsetupterm(\fR\fIterm\fR\fB, 1, (int *)0)\fR
-
+.sp
provides the same functionality as \fBsetterm(\fR\fIterm\fR\fB)\fR.
The \fBsetterm\fR routine is included here for BSD compatibility, and
is not recommended for new programs.
-
+.PP
The \fBset_curterm\fR routine sets the variable \fBcur_term\fR to
\fInterm\fR, and makes all of the \fBterminfo\fR boolean, numeric, and
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
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.
-
+.PP
The \fBrestartterm\fR routine is similar to \fBsetupterm\fR and \fBinitscr\fR,
except that it is called after restoring memory to a previous state (for
example, when reloading a game saved as a core image dump). It assumes that
the windows and the input and output options are the same as when memory was
saved, but the terminal type and baud rate may be different. Accordingly,
it saves various tty state bits, does a setupterm, and then restores the bits.
-
+.PP
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.
-
+.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
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.
-
+.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
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.
They use a set of arguments for representing the video attributes plus color,
@@ -214,35 +218,37 @@ 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
effect immediately (rather than at the next refresh).
-
+.PP
The \fBtigetflag\fR, \fBtigetnum\fR and \fBtigetstr\fR routines return
the value of the capability corresponding to the \fBterminfo\fR
\fIcapname\fR passed to them, such as \fBxenl\fR.
-
+.PP
The \fBtigetflag\fR routine returns the value \fB-1\fR if
\fIcapname\fR is not a boolean capability,
or \fB0\fR if it is canceled or absent from the terminal description.
-
+.PP
The \fBtigetnum\fR routine returns the value \fB-2\fR if
\fIcapname\fR is not a numeric capability,
or \fB-1\fR if it is canceled or absent from the terminal description.
-
+.PP
The \fBtigetstr\fR routine returns the value \fB(char *)-1\fR
if \fIcapname\fR is not a string capability,
or \fB0\fR if it is canceled or absent from the terminal description.
-
+.PP
The \fIcapname\fR for each capability is given in the table column entitled
\fIcapname\fR code in the capabilities section of \fBterminfo\fR(\*n).
-
-\fBchar *boolnames\fR, \fB*boolcodes\fR, \fB*boolfnames\fR
-
-\fBchar *numnames\fR, \fB*numcodes\fR, \fB*numfnames\fR
-
-\fBchar *strnames\fR, \fB*strcodes\fR, \fB*strfnames\fR
-
+.sp
+.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
+.RE
+.PP
These null-terminated arrays contain the \fIcapnames\fR, the
\fBtermcap\fR codes, and the full C names, for each of the
\fBterminfo\fR variables.
@@ -250,40 +256,65 @@ These null-terminated arrays contain the \fIcapnames\fR, the
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.
-
+.PP
Routines that return pointers always return \fBNULL\fR on error.
+.PP
+X/Open defines no error conditions.
+In this implementation
+.RS
+.TP 5
+\fBdel_curterm\fP
+returns an error
+if its terminal parameter is null.
+.TP 5
+\fBrestartterm\fP
+returns an error
+if the associated call to \fBsetupterm\fP returns an error.
+.TP 5
+\fBsetupterm\fP
+returns an error
+if it cannot allocate enough memory, or
+create the initial windows (stdscr, curscr, newscr).
+Other error conditions are documented above.
+.RE
.SH NOTES
The \fBsetupterm\fR routine should be used in place of \fBsetterm\fR.
It may be useful when you want to test for terminal capabilities without
committing to the allocation of storage involved in \fBinitscr\fR.
-
+.PP
Note that \fBvidattr\fR and \fBvidputs\fR may be macros.
.SH PORTABILITY
The function \fBsetterm\fR is not described in the XSI Curses standard and must
be considered non-portable. All other functions are as described in the XSI
curses standard.
-
+.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 XSI Curses
semantics.
-
+.PP
In System V Release 4, the third argument of \fBtputs\fR has the type
\fBint (*putc)(char)\fR.
-
+.PP
The XSI Curses standard prototypes \fBtparm\fR with a fixed number of parameters,
rather than a variable argument list.
-That prototype assumes that none of the parameters are strings
-(or if so, that a long is big enough to hold a pointer).
-The variable argument list implemented in ncurses does not rely on
-that assumption.
-
+This implementation uses a variable argument list.
+Portable applications should provide 9 parameters after the format;
+zeroes are fine for this purpose.
+.PP
XSI notes that after calling \fBmvcur\fR, the curses state may not match the
actual terminal state, and that an application should touch and refresh
the window before resuming normal curses calls.
Both ncurses and System V Release 4 curses implement \fBmvcur\fR using
-the SCREEN data allocated in either \fBinitscr\fR or \fBnewterm\fR.
+the SCREEN data allocated in either \fBinitscr\fR or \fBnewterm\fR.
So though it is documented as a terminfo function,
\fBmvcur\fR is really a curses function which is not well specified.
+.PP
+XSI states that the old location must be given.
+This implementation allows the caller to use -1's for the old ordinates.
+In that case, the old location is unknown.
+.PP
+Extended terminal capability names, e.g., as defined by \fBtic\ -x\fP,
+are not stored in the arrays described in this section.
.SH SEE ALSO
\fBcurses\fR(3X), \fBcurs_initscr\fR(3X), \fBcurs_kernel\fR(3X), \fBcurs_termcap\fR(3X),
\fBputc\fR(3S), \fBterminfo\fR(\*n)
diff --git a/contrib/ncurses/man/curs_touch.3x b/contrib/ncurses/man/curs_touch.3x
index 58ffa9f6042b..a7d07bc3ffbe 100644
--- a/contrib/ncurses/man/curs_touch.3x
+++ b/contrib/ncurses/man/curs_touch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_touch.3x,v 1.8 2000/07/08 11:07:57 tom Exp $
+.\" $Id: curs_touch.3x,v 1.11 2006/02/25 21:49:19 tom Exp $
.TH curs_touch 3X ""
+.na
+.hy 0
.SH NAME
\fBtouchwin\fR,
\fBtouchline\fR,
@@ -35,6 +37,8 @@
\fBwtouchln\fR,
\fBis_linetouched\fR,
\fBis_wintouched\fR - \fBcurses\fR refresh control routines
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
@@ -59,15 +63,15 @@ 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 \fBtouchline\fR only pretends that \fIcount\fR lines have been
changed, beginning with line \fIstart\fR.
-
+.PP
The \fBuntouchwin\fR routine marks all lines in the window as unchanged since
the last call to \fBwrefresh\fR.
-
+.PP
The \fBwtouchln\fR routine makes \fIn\fR lines in the window, starting
at line \fIy\fR, look as if they have (\fIchanged\fR\fB=1\fR) or have
not (\fIchanged\fR\fB=0\fR) been changed since the last call to
\fBwrefresh\fR.
-
+.PP
The \fBis_linetouched\fR and \fBis_wintouched\fR routines return
\fBTRUE\fR if the specified line/window was modified since the last
call to \fBwrefresh\fR; otherwise they return \fBFALSE\fR. In
@@ -77,9 +81,25 @@ valid for the given window.
All routines return the integer \fBERR\fR upon failure and 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
+.RS
+.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.
+.TP 5
+\fBwtouchln\fP
+returns an error
+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
diff --git a/contrib/ncurses/man/curs_trace.3x b/contrib/ncurses/man/curs_trace.3x
index 4af258da3b09..560302c42cc7 100644
--- a/contrib/ncurses/man/curs_trace.3x
+++ b/contrib/ncurses/man/curs_trace.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 2000-2002,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 *
@@ -26,8 +26,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_trace.3x,v 1.5 2002/02/16 22:39:52 tom Exp $
+.\" $Id: curs_trace.3x,v 1.7 2005/05/15 17:02:54 tom Exp $
.TH curs_trace 3X ""
+.na
+.hy 0
.SH NAME
\fB_tracef\fR,
\fB_tracedump\fR,
@@ -39,9 +41,11 @@
\fB_tracechtype2\fR,
\fB_tracemouse\fR,
\fBtrace\fR - \fBcurses\fR debugging routines
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-.br
+.sp
\fBvoid _tracef(const char *format, ...);\fR
.br
\fBvoid _tracedump(const char *label, WINDOW *win);\fR
@@ -67,11 +71,11 @@ as well as applications which use the ncurses libraries.
These functions are normally available only with the debugging library
\fIlibncurses_g.a\fR, but may be compiled into any model (shared, static,
profile) by defining the symbol \fBTRACE\fR.
-
+.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.
-
+.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
values from the list of \fBTRACE_\fP\fIxxx\fR definitions in \fB<curses.h>\fR.
@@ -127,7 +131,7 @@ trace changes to video attributes and colors.
.TP 5
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.
The specific names are used as a guideline.
diff --git a/contrib/ncurses/man/curs_util.3x b/contrib/ncurses/man/curs_util.3x
index 09d490d1d1a6..e78f99935326 100644
--- a/contrib/ncurses/man/curs_util.3x
+++ b/contrib/ncurses/man/curs_util.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_util.3x,v 1.8 2002/02/23 22:55:47 tom Exp $
+.\" $Id: curs_util.3x,v 1.21 2006/08/26 14:17:48 tom Exp $
.TH curs_util 3X ""
+.na
+.hy 0
.SH NAME
\fBdelay_output\fR,
\fBfilter\fR,
@@ -35,16 +37,19 @@
\fBgetwin\fR,
\fBkey_name\fR,
\fBkeyname\fR,
+\fBnofilter\fR,
\fBputwin\fR,
\fBunctrl\fR,
\fBuse_env\fR,
\fBwunctrl\fR - miscellaneous \fBcurses\fR utility routines
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBchar *unctrl(chtype c);\fR
.br
-\fBchar *wunctrl(wchar_t w);\fR
+\fBchar *wunctrl(cchar_t *c);\fR
.br
\fBchar *keyname(int c);\fR
.br
@@ -52,6 +57,8 @@
.br
\fBvoid filter(void);\fR
.br
+\fBvoid nofilter(void);\fR
+.br
\fBvoid use_env(bool f);\fR
.br
\fBint putwin(WINDOW *win, FILE *filep);\fR
@@ -69,23 +76,29 @@ 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.
-
+.PP
The \fBkeyname\fR routine returns a character string corresponding to the key \fIc\fR.
Control characters are displayed in the \fB^\fR\fIX\fR notation.
Values above 128 are either meta characters, shown in the \fBM-\fR\fIX\fR notation,
-or the names of function keys, or
-"UNKNOWN STRING".
+or the names of function keys, or null.
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 "UNKNOWN STRING" where the former would display a meta character.
-
+the latter returns null where the former would display a meta character.
+.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.
-
+.PP
+The \fBnofilter\fP routine cancels the effect of a preceding \fBfilter\fP
+call.
+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.
+.PP
The \fBuse_env\fR routine, if used, is called before \fBinitscr\fR or
\fBnewterm\fR are called. When called with \fBFALSE\fR as an
argument, the values of \fBlines\fR and \fBcolumns\fR specified in the
@@ -94,39 +107,82 @@ argument, the values of \fBlines\fR and \fBcolumns\fR specified in the
\fBcurses\fR is running in a window (in which case default behavior
would be to use the window size if \fBLINES\fR and \fBCOLUMNS\fR are
not set).
-
+Note that setting \fBLINES\fR or \fBCOLUMNS\fR overrides the
+corresponding size which may be obtained from the operating system.
+.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
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.
-
+.PP
The \fBdelay_output\fR routine inserts an \fIms\fR 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 \fBnapms\fR to perform the delay.
+.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.
.SH RETURN VALUE
Except for \fBflushinp\fR, routines that return an integer return \fBERR\fR
upon failure and \fBOK\fR (SVr4 specifies only "an integer value other than
\fBERR\fR") upon successful completion.
-
-\fBflushinp\fR always returns \fBOK\fR.
-
+.PP
Routines that return pointers return \fBNULL\fR on error.
+.PP
+X/Open does not define any error conditions.
+In this implementation
+.RS
+.TP 5
+\fBflushinp\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
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.
-
+.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 `^'.
+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-1280 codes as
+printable.
+This implementation uses 8 bits but does not modify the string to reflect
+locale.
+The \fBuse_legacy_coding\fP function allows the caller to
+change the output of \fBunctrl\fP.
+.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 \fBtic\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.
+.PP
+The \fBnofilter\fP 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.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_initscr\fR(3X), \fBcurs_scr_dump\fR(3X).
+\fBuse_legacy_coding\fR(3),
+\fBcurses\fR(3X),
+\fBcurs_initscr\fR(3X),
+\fBcurs_kernel\fR(3X),
+\fBcurs_scr_dump\fR(3X).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/curs_window.3x b/contrib/ncurses/man/curs_window.3x
index 4d3ca4ca00c3..552862e9e253 100644
--- a/contrib/ncurses/man/curs_window.3x
+++ b/contrib/ncurses/man/curs_window.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_window.3x,v 1.9 2000/07/01 20:08:37 tom Exp $
+.\" $Id: curs_window.3x,v 1.14 2006/02/25 21:49:19 tom Exp $
.TH curs_window 3X ""
+.na
+.hy 0
.SH NAME
\fBnewwin\fR,
\fBdelwin\fR,
@@ -40,9 +42,11 @@
\fBsyncok\fR,
\fBwcursyncup\fR,
\fBwsyncdown\fR - create \fBcurses\fR windows
+.ad
+.hy
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBWINDOW *newwin(int nlines, int ncols, int begin_y,\fR
\fBint begin_x);\fR
.br
@@ -75,17 +79,17 @@ 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.
-
+.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.
-
+.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.
-
+.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,
@@ -96,29 +100,29 @@ will affect both windows. The subwindow shares memory with the window
\fIorig\fR. When using this routine, it is necessary to call
\fBtouchwin\fR or \fBtouchline\fR on \fIorig\fR before calling
\fBwrefresh\fR on the subwindow.
-
+.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.
-
+.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
parts of the parent window at the same physical position on the
screen.
-
+.PP
Calling \fBdupwin\fR creates an exact duplicate of the window \fIwin\fR.
-
+.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
\fBTRUE\fR then \fBwsyncup\fR is called automatically whenever there is a
change in the window.
-
+.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
\fBwrefresh\fR, so it should almost never be necessary to call it manually.
-
+.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
window.
@@ -126,23 +130,48 @@ window.
Routines that return an integer return the integer \fBERR\fR upon failure and
\fBOK\fR (SVr4 only specifies "an integer value other than \fBERR\fR") upon
successful completion.
-
-\fBdelwin\fR returns the integer \fBERR\fR upon failure and \fBOK\fR
-upon successful completion.
-
+.PP
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.
+.IP
+This implementation also maintains a list of windows,
+and checks that the pointer passed to \fBdelwin\fP is one that
+it created, returning an error if it was not..
+.TP 5
+\fBmvderwin\fP
+returns an error
+if the window pointer is null, or
+if some part of the window would be placed off-screen.
+.TP 5
+\fBmvwin\fP
+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.
+.TP 5
+\fBsyncok\fP
+returns an error
+if the window pointer is null.
+.RE
.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,
\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
diff --git a/contrib/ncurses/man/default_colors.3x b/contrib/ncurses/man/default_colors.3x
index 4ebb90124a8a..ce313e2b51a9 100644
--- a/contrib/ncurses/man/default_colors.3x
+++ b/contrib/ncurses/man/default_colors.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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. *
.\"***************************************************************************
.\"
-.\" Author: Thomas E. Dickey <dickey@clark.net> 1997,1999,2000
+.\" Author: Thomas E. Dickey 1997,1999,2000,2005
.\"
-.\" $Id: default_colors.3x,v 1.16 2002/02/16 22:39:52 tom Exp $
+.\" $Id: default_colors.3x,v 1.19 2006/02/25 21:49:19 tom Exp $
.TH default_colors 3X ""
.SH NAME
\fBuse_default_colors\fR,
\fBassume_default_colors\fR \- use terminal's default colors
.SH SYNOPSIS
\fB#include <curses.h>\fP
-
+.sp
\fBint use_default_colors(void);\fP
.br
\fBint assume_default_colors(int fg, int bg);\fP
@@ -107,6 +107,26 @@ error as well.
Associated with this extension, the \fBinit_pair\fR(3X) function accepts
negative arguments to specify default foreground or background
colors.
+.PP
+The \fIuse_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
+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 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.
+.PP
+The \fIassume_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
diff --git a/contrib/ncurses/man/define_key.3x b/contrib/ncurses/man/define_key.3x
index 1019c42fd770..216a3cbce4b6 100644
--- a/contrib/ncurses/man/define_key.3x
+++ b/contrib/ncurses/man/define_key.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2004,2006 Free 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. *
.\"***************************************************************************
.\"
-.\" Author: Thomas E. Dickey <dickey@clark.net> 1997
+.\" Author: Thomas E. Dickey 1997
.\"
-.\" $Id: define_key.3x,v 1.8 2002/02/16 22:39:52 tom Exp $
+.\" $Id: define_key.3x,v 1.12 2006/02/25 21:49:19 tom Exp $
.TH define_key 3X ""
.SH NAME
\fBdefine_key\fP \- define a keycode
.SH SYNOPSIS
\fB#include <curses.h>\fP
-
-\fBint define_key(char *definition, int keycode);\fP
+.sp
+\fBint define_key(const char *definition, int keycode);\fP
.SH DESCRIPTION
This is an extension to the curses library.
It permits an application to define keycodes with their corresponding control
@@ -53,7 +53,8 @@ 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).
+\fBkeyok\fR(3X),
+\fBkey_defined\fR(3X).
.SH AUTHOR
Thomas Dickey.
.\"#
diff --git a/contrib/ncurses/man/form.3x b/contrib/ncurses/man/form.3x
index 811b9ff74739..264662e664ae 100644
--- a/contrib/ncurses/man/form.3x
+++ b/contrib/ncurses/man/form.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2002,2006 Free 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.3x,v 1.15 2002/01/19 22:48:05 tom Exp $
+.\" $Id: form.3x,v 1.20 2006/11/04 18:50:09 tom Exp $
.TH form 3X ""
.SH NAME
\fBform\fR - curses extension for programming forms
@@ -40,26 +40,26 @@ 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.
-
+.PP
The \fBform\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 \fBform\fR library, link with the options
\fB-lform -lcurses\fR.
-
+.
.SS Current Default Values for Field Attributes
-
+.
The \fBform\fR library maintains a default value for field attributes. You
can get or set this default by calling the appropriate \fBset_\fR
or retrieval
routine with a \fBNULL\fR field pointer. Changing this default with a
\fBset_\fR function affects future field creations, but does not change the
rendering of fields already created.
-
+.
.SS Routine Name Index
-
+.
The following table lists each \fBform\fR routine and the name of
the manual page on which it is described.
-
+.
.TS
l l
l l .
@@ -101,11 +101,13 @@ form_term \fBform_hook\fR(3X)
form_userptr \fBform_userptr\fR(3X)
form_win \fBform_win\fR(3X)
free_field \fBform_field_new\fR(3X)
+free_fieldtype \fBform_fieldtype\fR(3X)
free_form \fBform_new\fR(3X)
link_field \fBform_field_new\fR(3X)
link_fieldtype \fBform_fieldtype\fR(3X)
move_field \fBform_field\fR(3X)
new_field \fBform_field_new\fR(3X)
+new_fieldtype \fBform_fieldtype\fR(3X)
new_form \fBform_new\fR(3X)
new_page \fBform_new_page\fR(3X)
pos_form_cursor \fBform_cursor\fR(3X)
@@ -138,60 +140,66 @@ set_new_page \fBform_new_page\fR(3X)
unpost_form \fBform_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,
+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:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_CONNECTED\fR
-The field is already connected to a form.
-.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
-The form is already posted.
-.TP 5
-\fBE_BAD_STATE\fR
+.B E_BAD_STATE
Routine was called from an initialization or termination function.
.TP 5
-\fBE_NO_ROOM\fR
-Form is too large for its window.
-.TP 5
-\fBE_NOT_POSTED\fR
-The form has not been posted.
-.TP 5
-\fBE_UNKNOWN_COMMAND\fR
-The form driver code saw an unknown request code.
+.B E_CONNECTED
+The field is already connected to a form.
.TP 5
-\fBE_INVALID_FIELD\fR
+.B E_INVALID_FIELD
Contents of a field are not valid.
.TP 5
-\fBE_NOT_CONNECTED\fR
+.B E_NOT_CONNECTED
No fields are connected to the form.
.TP 5
-\fBE_REQUEST_DENIED\fR
+.B E_NOT_POSTED
+The form has not been posted.
+.TP 5
+.B E_NO_ROOM
+Form is too large for its window.
+.TP 5
+.B E_POSTED
+The form is already posted.
+.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).
+.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 GNU \fBld\fR(1) and many other linkers).
+give you a link error using most linkers).
.SH PORTABILITY
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 ncurses by Eric
S. Raymond.
+.SH SEE ALSO
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/form_cursor.3x b/contrib/ncurses/man/form_cursor.3x
index ab37c99e7fae..bf9f28d6c61e 100644
--- a/contrib/ncurses/man/form_cursor.3x
+++ b/contrib/ncurses/man/form_cursor.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_cursor.3x,v 1.4 1998/11/29 01:05:43 Rick.Ohnemus Exp $
+.\" $Id: form_cursor.3x,v 1.6 2006/11/04 18:50:24 tom Exp $
.TH form_cursor 3X ""
.SH NAME
\fBform_cursor\fR - position a form window cursor
@@ -44,17 +44,18 @@ form operation.
.SH RETURN VALUE
This routine returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_NOT_POSTED\fR
+.B E_NOT_POSTED
The form has not been posted.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
+.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/form_data.3x b/contrib/ncurses/man/form_data.3x
index 3767e954590c..2ba004c3387e 100644
--- a/contrib/ncurses/man/form_data.3x
+++ b/contrib/ncurses/man/form_data.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_data.3x,v 1.7 1998/11/29 01:13:22 Rick.Ohnemus Exp $
+.\" $Id: form_data.3x,v 1.8 2006/02/25 21:38:26 tom Exp $
.TH form_data 3X ""
.SH NAME
\fBform_data\fR - test for off-screen data in given forms
@@ -41,7 +41,7 @@ bool data_behind(const FORM *form);
.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).
-
+.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).
.SH SEE ALSO
diff --git a/contrib/ncurses/man/form_driver.3x b/contrib/ncurses/man/form_driver.3x
index 235408910196..c88e3be0ae1c 100644
--- a/contrib/ncurses/man/form_driver.3x
+++ b/contrib/ncurses/man/form_driver.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2002,2006 Free 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: form_driver.3x,v 1.9 2002/02/16 22:39:52 tom Exp $
+.\" $Id: form_driver.3x,v 1.12 2006/11/04 18:51:00 tom Exp $
.TH form_driver 3X ""
.SH NAME
\fBform_driver\fR - command-processing loop of the form system
@@ -52,7 +52,7 @@ 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.
@@ -89,7 +89,7 @@ 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.
@@ -132,7 +132,7 @@ 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.
@@ -169,7 +169,7 @@ Enter overlay mode.
.TP 5
REQ_INS_MODE
Enter insert mode.
-
+.sp
.TP 5
REQ_SCR_FLINE
Scroll the field forward a line.
@@ -188,7 +188,7 @@ 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.
@@ -207,7 +207,7 @@ 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.
@@ -228,31 +228,32 @@ 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.
.SH RETURN VALUE
-\fBform_driver\fR return one of the following error codes:
+\fBform_driver\fR returns one of the following error codes:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_BAD_STATE\fR
+.B E_BAD_STATE
Routine was called from an initialization or termination function.
.TP 5
-\fBE_NOT_POSTED\fR
+.B E_NOT_POSTED
The form has not been posted.
.TP 5
-\fBE_UNKNOWN_COMMAND\fR
-The form driver code saw an unknown request code.
-.TP 5
-\fBE_INVALID_FIELD\fR
+.B E_INVALID_FIELD
Contents of field is invalid.
.TP 5
-\fBE_REQUEST_DENIED\fR
+.B E_REQUEST_DENIED
The form driver could not process the request.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
+.TP 5
+.B E_UNKNOWN_COMMAND
+The form driver code saw an unknown request code.
+.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/form_field.3x b/contrib/ncurses/man/form_field.3x
index f452036baeab..f3a26c57dac0 100644
--- a/contrib/ncurses/man/form_field.3x
+++ b/contrib/ncurses/man/form_field.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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.5 1998/11/29 01:05:52 Rick.Ohnemus Exp $
+.\" $Id: form_field.3x,v 1.8 2006/11/04 18:01:38 tom Exp $
.TH form_field 3X ""
.SH NAME
\fBform_field\fR - make and break connections between fields and forms
@@ -45,36 +45,37 @@ int move_field(FIELD *field, int frow, int fcol);
.SH DESCRIPTION
The function \fBset_form_fields\fR changes the field pointer array of
the given \fIform\fR. The array must be terminated by a \fBNULL\fR.
-
+.PP
The function \fBform_fields\fR returns the field array of the given form.
-
+.PP
The function \fBfield_count\fR returns the count of fields in \fIform\fR.
-
-The function \fBmove_field\fR move the given field (which must be disconnected)
+.PP
+The function \fBmove_field\fR moves the given field (which must be disconnected)
to a specified location on the screen.
.SH RETURN VALUES
-The function \fBform_fields\fR returns \fBNULL\fR on error.
-
-The function \fBfield_count\fR returns \fBERR\fR (the general
-\fBcurses\fR error return value) on error.
-
+The function \fBform_fields\fR returns a pointer (which may be \fBNULL\fR).
+It does not set errno.
+.PP
+The function \fBfield_count\fR returns \fBERR\fR if the \fIform\fP parameter
+is \fBNULL\fP.
+.PP
The functions \fBset_form_fields\fR and \fBmove_field\fR return one of
the following codes on error:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
+.B E_CONNECTED
+The field is already connected to a form.
+.TP 5
+.B E_POSTED
The form is already posted.
.TP 5
-\fBE_CONNECTED\fR
-The field is already connected to a form.
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
@@ -83,7 +84,7 @@ The header file \fB<form.h>\fR automatically includes the header file
.SH PORTABILITY
These routines emulate the System V forms library. They were not supported on
Version 7 or BSD versions.
-
+.PP
The SVr4 forms library documentation specifies the \fBfield_count\fR error value
as -1 (which is the value of \fBERR\fR).
.SH AUTHORS
diff --git a/contrib/ncurses/man/form_field_attributes.3x b/contrib/ncurses/man/form_field_attributes.3x
index ac7a3b53eece..90dc0f31b63b 100644
--- a/contrib/ncurses/man/form_field_attributes.3x
+++ b/contrib/ncurses/man/form_field_attributes.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2002,2006 Free 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_attributes.3x,v 1.7 2002/01/19 22:48:14 tom Exp $
+.\" $Id: form_field_attributes.3x,v 1.10 2006/11/04 18:51:26 tom Exp $
.TH form_field_attributes 3X ""
.SH NAME
\fBform_field_attributes\fR - color and attribute control for form fields
@@ -51,26 +51,27 @@ 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
\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
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
default is a blank.
.SH RETURN VALUE
These routines return one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
+.
.SH SEE ALSO
\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed
descriptions of the entry points.
diff --git a/contrib/ncurses/man/form_field_buffer.3x b/contrib/ncurses/man/form_field_buffer.3x
index 814c5d9d58f4..cac6a088e5ed 100644
--- a/contrib/ncurses/man/form_field_buffer.3x
+++ b/contrib/ncurses/man/form_field_buffer.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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_buffer.3x,v 1.9 2002/01/19 22:48:23 tom Exp $
+.\" $Id: form_field_buffer.3x,v 1.14 2006/11/04 17:12:00 tom Exp $
.TH form_field_buffer 3X ""
.SH NAME
\fBform_field_buffer\fR - field buffer control
@@ -50,40 +50,53 @@ to contain a given string. Buffer 0 is the displayed value of the field; other
numbered buffers may be allocated by applications through the \fBnbuf\fR
argument of (see \fBform_field_new\fR(3X)) but are not manipulated by the forms
library. The function \fBfield_buffer\fR returns the address of the buffer.
-Please note that this buffer has always the length of the buffer, that means
+Please note that this buffer has always the length of the buffer, that means
that it may typically contain trailing spaces. If you entered leading spaces
the buffer may also contain them. If you want the raw data, you must write your
own routine that copies the value out of the buffer and removes the leading
and trailing spaces. Please note also, that subsequent operations on the form
-will probably change the content of the buffer. So don't use it for long term
+will probably change the content of the buffer. So do not use it for long term
storage of the entered form data.
-
+.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
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.
An argument of 0 turns off any maximum size threshold for that field.
.SH RETURN VALUE
The \fBfield_buffer\fR function returns NULL on error.
-
+It sets errno according to their success:
+.TP 5
+.B E_OK
+The routine succeeded.
+.TP 5
+.B E_BAD_ARGUMENT
+Routine detected an incorrect or out-of-range argument.
+.PP
The \fBfield_status\fR function returns \fBTRUE\fR or \fBFALSE\fR.
-
+.PP
The remaining routines return one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.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
descriptions of the entry points.
.SH NOTES
The header file \fB<form.h>\fR automatically includes the header file
+.PP
+When configured for wide-characters, \fBfield_buffer\fP 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 \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
diff --git a/contrib/ncurses/man/form_field_info.3x b/contrib/ncurses/man/form_field_info.3x
index 56b81ac7daa0..bde312856951 100644
--- a/contrib/ncurses/man/form_field_info.3x
+++ b/contrib/ncurses/man/form_field_info.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2000,2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -27,7 +27,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_info.3x,v 1.8 2002/01/19 22:48:32 tom Exp $
+.\" $Id: form_field_info.3x,v 1.10 2006/11/04 17:14:31 tom Exp $
.TH form_field_info 3X ""
.SH NAME
\fBform_field_info\fR - retrieve field characteristics
@@ -44,21 +44,22 @@ 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
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
-addressed by the third argument will be set to 0. (A field can be made dynamic
-by turning off the \fBO_STATIC\fR).
+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.
.SH RETURN VALUE
These routines return one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.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
diff --git a/contrib/ncurses/man/form_field_just.3x b/contrib/ncurses/man/form_field_just.3x
index 9468d8b77512..15d6cb254df1 100644
--- a/contrib/ncurses/man/form_field_just.3x
+++ b/contrib/ncurses/man/form_field_just.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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_just.3x,v 1.6 2002/01/19 22:48:41 tom Exp $
+.\" $Id: form_field_just.3x,v 1.9 2006/11/04 17:12:00 tom Exp $
.TH form_field_just 3X ""
.SH NAME
\fBform_field_just\fR - retrieve field characteristics
@@ -43,20 +43,20 @@ The function \fBset_field_just\fR sets the justification attribute of
a field; \fBfield_just\fR returns a field's justification attribute.
The attribute may be one of NO_JUSTIFICATION, JUSTIFY_RIGHT,
JUSTIFY_LEFT, or JUSTIFY_CENTER.
-
+.
.SH RETURN VALUE
The function \fBfield_just\fR returns one of: NO_JUSTIFICATION,
JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
-
-The function \fBset_field_just\fR return one of the following:
+.PP
+The function \fBset_field_just\fR returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.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
diff --git a/contrib/ncurses/man/form_field_new.3x b/contrib/ncurses/man/form_field_new.3x
index 969152057d6d..168349ee77e9 100644
--- a/contrib/ncurses/man/form_field_new.3x
+++ b/contrib/ncurses/man/form_field_new.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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_new.3x,v 1.11 2002/02/16 22:39:52 tom Exp $
+.\" $Id: form_field_new.3x,v 1.14 2006/11/04 17:12:00 tom Exp $
.TH form_field_new 3X ""
.SH NAME
\fBform_field_new\fR - create and destroy form fields
@@ -48,31 +48,41 @@ int free_field(FIELD *field);
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
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.
-
+.PP
The function \fBlink_field\fR acts like \fBdup_field\fR, but the new field
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
The function, \fBnew_field\fR, \fBdup_field\fR, \fBlink_field\fR return
\fBNULL\fR on error.
-
-The function \fBfree_field\fR returns one of the following:
+They set errno according to their success:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
+.B E_BAD_ARGUMENT
+Routine detected an incorrect or out-of-range argument.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred, e.g., malloc failure.
+.PP
+The function \fBfree_field\fR returns one of the following:
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_OK
+The routine succeeded.
+.TP 5
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
+.TP 5
+.B E_CONNECTED
+field is connected.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
@@ -81,10 +91,10 @@ The header file \fB<form.h>\fR automatically includes the header file
.SH PORTABILITY
These routines emulate the System V forms library. They were not supported on
Version 7 or BSD versions.
-
+.PP
It may be unwise to count on the set of attributes copied by
\fBdup_field\fR(3X) being portable; the System V forms library documents are
-not very explicit on what gets copied and was not.
+not very explicit about what gets copied and what doesn't.
.SH AUTHORS
Juergen Pfeifer. Manual pages and adaptation for new curses by Eric
S. Raymond.
diff --git a/contrib/ncurses/man/form_field_opts.3x b/contrib/ncurses/man/form_field_opts.3x
index 8f5e2def4315..87449f224993 100644
--- a/contrib/ncurses/man/form_field_opts.3x
+++ b/contrib/ncurses/man/form_field_opts.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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_opts.3x,v 1.7 1998/11/29 01:06:54 Rick.Ohnemus Exp $
+.\" $Id: form_field_opts.3x,v 1.12 2006/11/04 17:12:00 tom Exp $
.TH form_field_opts 3X ""
.SH NAME
\fBform_field_opts\fR - set and get field options
@@ -45,20 +45,20 @@ OPTIONS field_opts(const FIELD *field);
.SH DESCRIPTION
The function \fBset_field_opts\fR sets all the given field's option bits (field
option bits may be logically-OR'ed together).
-
+.PP
The function \fBfield_opts_on\fR turns on the given option bits, and leaves
others alone.
-
+.PP
The function \fBfield_opts_off\fR turns off the given option bits, and leaves
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,
+suppressed.
.TP 5
O_ACTIVE
The field is visited during processing. If this option is off, the field will
@@ -72,34 +72,38 @@ O_EDIT
The field can be edited.
.TP 5
O_WRAP
-Words that don't fit on a line are wrapped to the next line. Words are
+Words that do not fit on a line are wrapped to the next line. Words are
blank-separated.
.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
+Skip to the next field when this one fills.
.TP 5
O_NULLOK
Allow a blank field.
.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.
.SH RETURN VALUE
Except for \fBfield_opts\fR, each routine returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
+.B E_BAD_ARGUMENT
+Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_CURRENT\fR
+.B E_CURRENT
The field is the current field.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.TP 5
diff --git a/contrib/ncurses/man/form_field_userptr.3x b/contrib/ncurses/man/form_field_userptr.3x
index 2aba2083bc01..47b9ed424d19 100644
--- a/contrib/ncurses/man/form_field_userptr.3x
+++ b/contrib/ncurses/man/form_field_userptr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_userptr.3x,v 1.6 1998/11/29 01:07:05 Rick.Ohnemus Exp $
+.\" $Id: form_field_userptr.3x,v 1.8 2006/11/04 18:04:37 tom Exp $
.TH form_field_userptr 3X ""
.SH NAME
\fBform_field_userptr\fR - associate application data with a form field
@@ -43,14 +43,10 @@ Every form field has a field that can be used to hold application-specific data
(that is, the form-driver code leaves it alone). These functions get and set
that field.
.SH RETURN VALUE
-The function \fBfield_userptr\fR returns \fBNULL\fR on error. The function
-\fBset_field_userptr\fR returns one of the following:
-.TP 5
-\fBE_OK\fR
-The routine succeeded.
-.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
+The function \fBfield_userptr\fR returns a pointer (which may be \fBNULL\fR).
+It does not set errno.
+.PP
+The function \fBset_field_userptr\fR returns \fBE_OK\fP (success).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
@@ -59,9 +55,9 @@ The header file \fB<form.h>\fR automatically includes the header file
.SH PORTABILITY
These routines emulate the System V forms library. They were not supported on
Version 7 or BSD versions.
-
-The user pointer should be a void pointer. We leave it as a char pointer for
-SVr4 compatibility.
+.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.
diff --git a/contrib/ncurses/man/form_field_validation.3x b/contrib/ncurses/man/form_field_validation.3x
index cc3d508d2d32..175268b49ea9 100644
--- a/contrib/ncurses/man/form_field_validation.3x
+++ b/contrib/ncurses/man/form_field_validation.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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,10 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_validation.3x,v 1.12 2002/02/16 22:39:52 tom Exp $
+.\" $Id: form_field_validation.3x,v 1.15 2006/11/04 17:14:19 tom Exp $
.TH form_field_validation 3X ""
.SH NAME
-\fBform_field_validation\fR - data type validation for fields
+\fBform_field_validation\fR - data type validation for fields
.SH SYNOPSIS
\fB#include <form.h>\fR
.br
@@ -38,10 +38,25 @@ int set_field_type(FIELD *field, FIELDTYPE *type, ...);
FIELDTYPE *field_type(const FIELD *field);
.br
void *field_arg(const FIELD *field);
+.sp
+FIELDTYPE *TYPE_ALNUM;
+.br
+FIELDTYPE *TYPE_ALPHA;
+.br
+FIELDTYPE *TYPE_ENUM;
+.br
+FIELDTYPE *TYPE_INTEGER;
+.br
+FIELDTYPE *TYPE_NUMERIC;
+.br
+FIELDTYPE *TYPE_REGEXP;
+.br
+FIELDTYPE *TYPE_IPV4;
.br
.SH DESCRIPTION
The function \fBset_field_type\fR declares a data type for a given form field.
-This is the type checked by validation functions. The types are as follows:
+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.
@@ -56,27 +71,29 @@ case-sensitivity; and a fifth \fBint\fR flag argument specifying whether a parti
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 not copied, only a reference to it is stored in the
-field. So you should avoid to use a list that lives in automatic variables
+field. So you should avoid using a list that lives in automatic variables
on the stack.
.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
+\fBint\fR argument controlling the precision, a fourth \fBlong\fR argument
constraining minimum value, and a fifth \fBlong\fR constraining maximum value.
-If the maximum value is less or equal the minimum value, the range is simply
-ignored. On return the field buffer is formatted according to the \fBprintf\fR
-format specification ".*ld", where the '*' is replaced by the precision argument.
+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.
.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 locale's, the decimal point character
+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 or equal 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.
+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.
.TP 5
TYPE_REGEXP
@@ -96,17 +113,17 @@ 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.
-
+.PP
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:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
diff --git a/contrib/ncurses/man/form_fieldtype.3x b/contrib/ncurses/man/form_fieldtype.3x
index 69a8e2082466..0d42faed6cc2 100644
--- a/contrib/ncurses/man/form_fieldtype.3x
+++ b/contrib/ncurses/man/form_fieldtype.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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.9 2001/08/04 20:36:25 William.Setzer Exp $
+.\" $Id: form_fieldtype.3x,v 1.14 2006/11/04 17:12:00 tom Exp $
.TH form_fieldtype 3X ""
.SH NAME
\fBform_fieldtype\fR - define validation-field types
@@ -57,58 +57,80 @@ FIELDTYPE *link_fieldtype(FIELDTYPE *type1,
.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
-validity of an entered data string whenever the user attempt to leave a field.
+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.
-
+.PP
You also supply \fBnew_fieldtype\fR with \fIchar_check\fR,
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.
-
+.PP
The function \fBfree_fieldtype\fR frees the space allocated for a given
validation type.
-
-The function \fBset_fieldtype\fR associates three storage-management functions
-with a field type. The \fImak_arg\fR function is automatically applied to the
+.PP
+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
-object which can later be passed to validation predicated. The other two
-hook arguments should copy and free argument-block structures. They will
-be used by the forms-driver code. You must supply the \fImak_arg\fR function,
-the other two are optional, you may supply NULL for them. In this case it
-is assumed, that \fImak_arg\fR doesn't allocate memory but simply loads the
+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 \fImake_arg\fR function,
+the other two are optional, you may supply NULL for them.
+In this case it is assumed
+that \fImake_arg\fR does not allocate memory but simply loads the
argument into a single scalar value.
-
+.PP
+The function \fBlink_fieldtype\fR creates
+a new field type from the two given types.
+They are connected by an logical 'OR'.
+.PP
The form driver requests \fBREQ_NEXT_CHOICE\fR and \fBREQ_PREV_CHOICE\fR 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 \fBset_fieldtype_choice\fR
+user with a way to move through the set.
+The \fBset_fieldtype_choice\fR
function allows forms programmers to define successor and predecessor functions
-for the field type. These functions take the field pointer and an
+for the field type.
+These functions take the field pointer and an
argument-block structure as arguments.
.SH RETURN VALUE
The pointer-valued routines return NULL on error.
-
+They set errno according to their success:
+.TP 5
+.B E_OK
+The routine succeeded.
+.TP 5
+.B E_BAD_ARGUMENT
+Routine detected an incorrect or out-of-range argument.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred, e.g., malloc failure.
+.PP
The integer-valued routines return one of the following codes on
error:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_CONNECTED\fR
+.B E_CONNECTED
The field is already connected to a form.
+.TP 5
+.B E_CURRENT
+The field is the current field.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
.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.
-
+.PP
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.
diff --git a/contrib/ncurses/man/form_hook.3x b/contrib/ncurses/man/form_hook.3x
index 19c1b9fbd7a0..82b62c3f0293 100644
--- a/contrib/ncurses/man/form_hook.3x
+++ b/contrib/ncurses/man/form_hook.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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.6 1999/03/20 22:37:15 Todd.Miller Exp $
+.\" $Id: form_hook.3x,v 1.8 2006/11/04 17:12:00 tom Exp $
.TH form_hook 3X ""
.SH NAME
\fBform_hook\fR - set hooks for automatic invocation by applications
@@ -53,21 +53,21 @@ void (*)(FORM *) form_term(const FORM *form);
.SH DESCRIPTION
These functions make it possible to set hook functions to be called at various
points in the automatic processing of input event codes by \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
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
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
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
returns the current form term hook, if any (\fBNULL\fR if there is no such
@@ -76,10 +76,10 @@ hook).
Routines that return pointers return \fBNULL\fR on error. Other routines
return one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
diff --git a/contrib/ncurses/man/form_new.3x b/contrib/ncurses/man/form_new.3x
index 0f4c5015d11b..cac4f508b38b 100644
--- a/contrib/ncurses/man/form_new.3x
+++ b/contrib/ncurses/man/form_new.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_new.3x,v 1.5 1998/11/29 01:07:37 Rick.Ohnemus Exp $
+.\" $Id: form_new.3x,v 1.7 2006/11/04 17:12:00 tom Exp $
.TH form_new 3X ""
.SH NAME
\fBform_new\fR - create and destroy forms
@@ -41,24 +41,34 @@ int free_form(FORM *form);
.SH DESCRIPTION
The function \fBnew_form\fR creates a new form connected to a specified field
pointer array (which must be \fBNULL\fR-terminated).
-
+.PP
The function \fBfree_form\fR disconnects \fIform\fR from its field array
and frees the storage allocated for the form.
.SH RETURN VALUE
The function \fBnew_form\fR returns \fBNULL\fR on error.
-
-The function \fBfree_form\fR returns one of the following:
+It sets errno according to the function's success:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
+.B E_BAD_ARGUMENT
+Routine detected an incorrect or out-of-range argument.
+.TP 5
+.B E_CONNECTED
+The field is already connected to a form.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred, e.g., malloc failure.
+.PP
+The function \fBfree_form\fR returns one of the following:
+.TP 5
+.B E_OK
+The routine succeeded.
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
+.B E_POSTED
The form has already been posted.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
diff --git a/contrib/ncurses/man/form_new_page.3x b/contrib/ncurses/man/form_new_page.3x
index 432f624f5298..5b7f58d4a46a 100644
--- a/contrib/ncurses/man/form_new_page.3x
+++ b/contrib/ncurses/man/form_new_page.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2002,2006 Free 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_new_page.3x,v 1.6 2002/01/19 22:48:51 tom Exp $
+.\" $Id: form_new_page.3x,v 1.8 2006/11/04 17:12:00 tom Exp $
.TH form_new_page 3X ""
.SH NAME
\fBform_new_page\fR - form pagination functions
@@ -41,21 +41,21 @@ bool new_page(const FIELD *field);
.SH DESCRIPTION
The function \fBset_new_page\fR sets or resets a flag marking the given field
as the beginning of a new page on its form.
-
+.PP
The function \fBnew_page\fR is a predicate which tests if a given field marks
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:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_CONNECTED\fR
+.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
diff --git a/contrib/ncurses/man/form_opts.3x b/contrib/ncurses/man/form_opts.3x
index 7921b3772563..4bf5b1e2c8d8 100644
--- a/contrib/ncurses/man/form_opts.3x
+++ b/contrib/ncurses/man/form_opts.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_opts.3x,v 1.6 1998/11/29 01:07:53 Rick.Ohnemus Exp $
+.\" $Id: form_opts.3x,v 1.8 2006/11/04 17:12:00 tom Exp $
.TH form_opts 3X ""
.SH NAME
\fBform_opts\fR - set and get form options
@@ -45,15 +45,15 @@ OPTIONS form_opts(const FORM *form);
.SH DESCRIPTION
The function \fBset_form_opts\fR sets all the given form's option bits (form
option bits may be logically-OR'ed together).
-
+.PP
The function \fBform_opts_on\fR turns on the given option bits, and leaves
others alone.
-
+.PP
The function \fBform_opts_off\fR turns off the given option bits, and leaves
others alone.
-
+.PP
The function \fBform_opts\fR returns the form's current option bits.
-
+.PP
The following options are defined (all are on by default):
.TP 5
O_NL_OVERLOAD
@@ -66,10 +66,10 @@ beginning of a field goes to the previous field.
.SH RETURN VALUE
Except for \fBform_opts\fR, each routine returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
diff --git a/contrib/ncurses/man/form_page.3x b/contrib/ncurses/man/form_page.3x
index 4b5d15aec18e..50ed54db4cc5 100644
--- a/contrib/ncurses/man/form_page.3x
+++ b/contrib/ncurses/man/form_page.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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.8 1998/11/29 01:08:02 Rick.Ohnemus Exp $
+.\" $Id: form_page.3x,v 1.10 2006/11/04 18:52:32 tom Exp $
.TH form_page 3X ""
.SH NAME
\fBform_page\fR - set and get form page number
@@ -59,23 +59,24 @@ 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:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_BAD_STATE\fR
+.B E_BAD_STATE
Routine was called from an initialization or termination function.
.TP 5
-\fBE_INVALID_FIELD\fR
+.B E_INVALID_FIELD
Contents of a field are not valid.
.TP 5
-\fBE_REQUEST_DENIED\fR
+.B E_REQUEST_DENIED
The form driver could not process the request.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
+.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/form_post.3x b/contrib/ncurses/man/form_post.3x
index 56e86ab94692..6bf1607799c6 100644
--- a/contrib/ncurses/man/form_post.3x
+++ b/contrib/ncurses/man/form_post.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_post.3x,v 1.4 1998/11/29 01:08:10 Rick.Ohnemus Exp $
+.\" $Id: form_post.3x,v 1.7 2006/11/04 18:53:20 tom Exp $
.TH form_post 3X ""
.SH NAME
\fBform_post\fR - write or erase forms from associated subwindows
@@ -43,34 +43,35 @@ 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
\fBcurses\fR routine (the implicit \fBdoupdate\fR triggered by an \fBcurses\fR
input request will do).
-
+.PP
The function \fBunpost_form\fR erases form from its associated subwindow.
.SH RETURN VALUE
These routines return one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
-The form has already been posted.
-.TP 5
-\fBE_BAD_STATE\fR
+.B E_BAD_STATE
Routine was called from an initialization or termination function.
.TP 5
-\fBE_NO_ROOM\fR
-Form is too large for its window.
-.TP 5
-\fBE_NOT_POSTED\fR
+.B E_NOT_POSTED
The form has not been posted.
.TP 5
-\fBE_NOT_CONNECTED\fR
+.B E_NOT_CONNECTED
No items are connected to the form.
+.TP 5
+.B E_NO_ROOM
+Form is too large for its window.
+.TP 5
+.B E_POSTED
+The form has already been posted.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
+.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/form_requestname.3x b/contrib/ncurses/man/form_requestname.3x
index df1f701b382e..a172f857b1e3 100644
--- a/contrib/ncurses/man/form_requestname.3x
+++ b/contrib/ncurses/man/form_requestname.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_requestname.3x,v 1.6 1998/11/29 01:08:18 Rick.Ohnemus Exp $
+.\" $Id: form_requestname.3x,v 1.7 2006/11/04 17:57:49 tom Exp $
.TH form_requestname 3X ""
.SH NAME
\fBform_requestname\fR - handle printable form request names
@@ -49,6 +49,7 @@ with the given name and returns its request code. Otherwise E_NO_MATCH is return
to \fBE_BAD_ARGUMENT\fR.
.br
\fBform_request_by_name\fR returns \fBE_NO_MATCH\fR on error.
+It does not set errno.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/form_userptr.3x b/contrib/ncurses/man/form_userptr.3x
index 00e3d71aa40e..7be0bf860480 100644
--- a/contrib/ncurses/man/form_userptr.3x
+++ b/contrib/ncurses/man/form_userptr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_userptr.3x,v 1.9 1998/11/29 01:08:39 Rick.Ohnemus Exp $
+.\" $Id: form_userptr.3x,v 1.11 2006/11/04 18:43:24 tom Exp $
.TH form_userptr 3X ""
.SH NAME
\fBform_userptr\fR - associate application data with a form item
@@ -43,14 +43,10 @@ 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.
.SH RETURN VALUE
-The function \fBform_userptr\fR returns \fBNULL\fR on error.
-The function \fBset_form_userptr\fR returns one of the following:
-.TP 5
-\fBE_OK\fR
-The routine succeeded.
-.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
+The function \fBform_userptr\fR returns a pointer (which may be \fBNULL\fR).
+It does not set errno.
+.PP
+The function \fBset_form_userptr\fR returns \fBE_OK\fP (success).
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
.SH NOTES
@@ -59,9 +55,9 @@ The header file \fB<form.h>\fR automatically includes the header file
.SH PORTABILITY
These routines emulate the System V forms library. They were not supported on
Version 7 or BSD versions.
-
-The user pointer should be a void pointer. We leave it as a char pointer for
-SVr4 compatibility.
+.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.
diff --git a/contrib/ncurses/man/form_win.3x b/contrib/ncurses/man/form_win.3x
index e56597028868..c8f64f2e04ad 100644
--- a/contrib/ncurses/man/form_win.3x
+++ b/contrib/ncurses/man/form_win.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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.8 1999/04/10 23:36:08 tom Exp $
+.\" $Id: form_win.3x,v 1.10 2006/11/04 17:12:00 tom Exp $
.TH form_win 3X ""
.SH NAME
\fBform_win\fR - make and break form window and subwindow associations
@@ -48,33 +48,33 @@ int scale_form(const FORM *form, int *rows, int *columns);
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
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
it were \fBstsdcr\fR. A form argument of \fBNULL\fR is treated as a request
to change the system default form window or subwindow.
-
+.PP
The function \fBscale_form\fR returns the minimum size required for the
subwindow of \fIform\fR.
.SH RETURN VALUE
Routines that return pointers return \fBNULL\fR on error. Routines that return
an integer return one of the following error codes:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
+.B E_POSTED
The form has already been posted.
.TP 5
-\fBE_NOT_CONNECTED\fR
+.B E_NOT_CONNECTED
No items are connected to the form.
.SH SEE ALSO
\fBcurses\fR(3X), \fBform\fR(3X).
diff --git a/contrib/ncurses/man/infocmp.1m b/contrib/ncurses/man/infocmp.1m
index 8ee2840c27da..a7feb4495766 100644
--- a/contrib/ncurses/man/infocmp.1m
+++ b/contrib/ncurses/man/infocmp.1m
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2004,2006 Free 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,40 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: infocmp.1m,v 1.29 2002/02/16 22:40:59 tom Exp $
+.\" $Id: infocmp.1m,v 1.43 2006/05/13 15:14:01 tom Exp $
.TH infocmp 1M ""
.ds n 5
.ds d @TERMINFO@
.SH NAME
\fBinfocmp\fR - compare or print out \fIterminfo\fR descriptions
.SH SYNOPSIS
-\fBinfocmp\fR [\fB-dceEGgnpqrILCuV1\fR] [\fB-v\fR \fIn\fR] [\fB-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR]
+\fBinfocmp\fR [\fB-\
+1\
+C\
+E\
+F\
+G\
+I\
+L\
+T\
+U\
+V\
+c\
+d\
+e\
+g\
+i\
+l\
+n\
+p\
+q\
+r\
+t\
+u\
+x\
+\fR]
+.br
+ [\fB-v\fR \fIn\fR] [\fB-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB-R \fR\fBsubset\fR]
.br
[\fB-w\fR\ \fIwidth\fR] [\fB-A\fR\ \fIdirectory\fR] [\fB-B\fR\ \fIdirectory\fR]
.br
@@ -57,15 +83,15 @@ 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.
-
+.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.
-
+.PP
The \fB-c\fR option produces a list of each capability that is common between
two entries. Capabilities that are not set are ignored. This option can be
used as a quick check to see if the \fB-u\fR option is worth using.
-
+.PP
The \fB-n\fR option produces a list of each capability that is in neither
entry. If no \fItermnames\fR are given, the environment variable \fBTERM\fR
will be used for both of the \fItermnames\fR. This can be used as a quick
@@ -73,7 +99,7 @@ check to see if anything was left out of a description.
.SS Source Listing Options [-I] [-L] [-C] [-r]
The \fB-I\fR, \fB-L\fR, and \fB-C\fR options will produce a source listing for
each terminal named.
-
+.
.TS
center tab(/) ;
l l .
@@ -82,27 +108,27 @@ l l .
\fB-C\fR/use the \fBtermcap\fR names
\fB-r\fR/when using \fB-C\fR, put out all capabilities in \fBtermcap\fR form
.TE
-
+.PP
If no \fItermnames\fR are given, the environment variable \fBTERM\fR will be
used for the terminal name.
-
+.PP
The source produced by the \fB-C\fR option may be used directly as a
\fBtermcap\fR entry, but not all parameterized strings can be changed to
the \fBtermcap\fR format. \fBinfocmp\fR 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.
-
+.PP
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.
-
+.PP
All \fBtermcap\fR variables no longer supported by \fBterminfo\fR, but which
are derivable from other \fBterminfo\fR variables, will be output. Not all
\fBterminfo\fR capabilities will be translated; only those variables which were
part of \fBtermcap\fR will normally be output. Specifying the \fB-r\fR option
will take off this restriction, allowing all capabilities to be output in
\fItermcap\fR form.
-
+.PP
Note that because padding is collected to the beginning of the capability, not
all capabilities are output. Mandatory padding is not supported. Because
\fBtermcap\fR strings are not as flexible, it is not always possible to convert
@@ -110,10 +136,10 @@ 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.
-
+.PP
Some common \fBterminfo\fR parameter sequences, their \fBtermcap\fR
equivalents, and some terminal types which commonly have such sequences, are:
-
+.
.TS
center tab(/) ;
l c l
@@ -138,27 +164,27 @@ 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 \fBinfocmp\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
first \fItermname\fR, but one of the other \fItermname\fR entries contains a
value for it. A capability's value gets printed if the value in the first
\fItermname\fR is not found in any of the other \fItermname\fR entries, or if
the first of the other \fItermname\fR entries that has this capability gives a
different value for the capability than that in the first \fItermname\fR.
-
+.PP
The order of the other \fItermname\fR entries is significant. Since the
terminfo compiler \fBtic\fR does a left-to-right scan of the capabilities,
specifying two \fBuse=\fR entries that contain differing entries for the same
capabilities will produce different results depending on the order that the
entries are given in. \fBinfocmp\fR will flag any such inconsistencies between
the other \fItermname\fR entries as they are found.
-
+.PP
Alternatively, specifying a capability \fIafter\fR a \fBuse=\fR entry that
contains that capability will cause the second specification to be ignored.
Using \fBinfocmp\fR to recreate a description can be a useful check to make
sure that everything was specified correctly in the original source
description.
-
+.PP
Another error that does not cause incorrect compiled files, but will slow down
the compilation time, is specifying extra \fBuse=\fR fields that are
superfluous. \fBinfocmp\fR will flag any other \fItermname use=\fR fields that
@@ -174,79 +200,17 @@ set \fBTERMINFO\fR for the other \fItermnames\fR. With this, it is possible to
compare descriptions for a terminal with the same name located in two different
databases. This is useful for comparing descriptions for the same terminal
created by different people.
-.SS Other Options [-s d|i|l|c] [-1FTVefip] [-Rsubset] [-v \fIn\fR] [-w \fIwidth\fR]
-The \fB-s\fR option sorts the fields within each type according to the argument
-below:
-.TP 5
-\fBd\fR
-leave fields in the order that they are stored in the \fIterminfo\fR database.
-.TP 5
-\fBi\fR
-sort by \fIterminfo\fR name.
-.TP 5
-\fBl\fR
-sort by the long C variable name.
-.TP 5
-\fBc\fR
-sort by the \fItermcap\fR name.
-
-If the \fB-s\fR option is not given, the fields printed out will be
-sorted alphabetically by the \fBterminfo\fR name within each type,
-except in the case of the \fB-C\fR or the \fB-L\fR options, which cause the
-sorting to be done by the \fBtermcap\fR name or the long C variable
-name, respectively.
+.SS Other Options
.TP 5
\fB-1\fR
causes the fields to be printed out one to a line. Otherwise,
the fields will be printed several to a line to a maximum width
of 60 characters.
-.TP 5
-\fB-F\fR
-compare terminfo files. This assumes that two following arguments are
-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 \fB-r\fR.
-.TP
-\fB-G\fR
-Display constant literals in decimal form
-rather than their character equivalents.
.TP
\fB-a\fR
tells \fBinfocmp\fP to retain commented-out capabilities rather than discarding
them. Capabilities are commented by prefixing them with a period.
.TP 5
-\fB-q\fR
-Make the comparison listing shorter by omitting subheadings, and using
-"-" for absent capabilities, "@" for canceled rather than "NULL".
-.TP 5
-\fB-R\fR\fIsubset\fR
-Restrict output to a given subset. This option is for use with archaic
-versions of terminfo like those on SVr1, Ultrix, or HP/UX that do not support
-the full set of SVR4/XSI Curses terminfo; and variants such as AIX
-that have their own extensions incompatible with SVr4/XSI. Available terminfo
-subsets are "SVr1", "Ultrix", "HP", and "AIX"; see \fBterminfo\fR(\*n) for
-details. You can also choose the subset "BSD" which selects only capabilities
-with termcap equivalents recognized by 4.4BSD.
-.TP 5
-\fB-T\fR
-eliminates size-restrictions on the generated text.
-This is mainly useful for testing and analysis, since the compiled
-descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
-.TP 5
-\fB-V\fR
-reports the version of ncurses which was used in this program, and exits.
-.TP 5
-\fB-e\fR
-Dump the capabilities of the given terminal as a C initializer for a
-TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fR).
-This option is useful for preparing versions of the curses library hardwired
-for a given terminal type.
-.TP 5
\fB-E\fR
Dump the capabilities of the given terminal as tables, needed in
the C initializer for a
@@ -256,14 +220,35 @@ for a given terminal type.
The tables are all declared static, and are named according to the type
and the name of the corresponding terminal entry.
.sp
-Before ncurses 5.0, the split between the \fB\-e\fP and \fB\-E\fP
+Before ncurses 5.0, the split between the \fB-e\fP and \fB-E\fP
options was not needed; but support for extended names required making
the arrays of terminal capabilities separate from the TERMTYPE structure.
-.TP
+.TP 5
+\fB-e\fR
+Dump the capabilities of the given terminal as a C initializer for a
+TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fR).
+This option is useful for preparing versions of the curses library hardwired
+for a given terminal type.
+.TP 5
+\fB-F\fR
+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 \fB-r\fR.
+.TP 5
\fB-f\fR
Display complex terminfo strings which contain if/then/else/endif expressions
indented for readability.
-.TP
+.TP 5
+\fB-G\fR
+Display constant literals in decimal form
+rather than their character equivalents.
+.TP 5
\fB-g\fR
Display constant character literals in quoted form
rather than their decimal equivalents.
@@ -279,7 +264,7 @@ 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:
-
+i.
.TS
center tab(/) ;
l l
@@ -291,18 +276,26 @@ 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
@@ -316,18 +309,83 @@ 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
An SGR0 designates an empty highlight sequence (equivalent to {SGR:NORMAL}).
.TP 5
+\fB-l\fR
+Set output format to terminfo.
+.TP 5
\fB-p\fR
Ignore padding specifications when comparing strings.
.TP 5
+\fB-q\fR
+Make the comparison listing shorter by omitting subheadings, and using
+"-" for absent capabilities, "@" for canceled rather than "NULL".
+.TP 5
+\fB-R\fR\fIsubset\fR
+Restrict output to a given subset. This option is for use with archaic
+versions of terminfo like those on SVr1, Ultrix, or HP/UX that do not support
+the full set of SVR4/XSI Curses terminfo; and variants such as AIX
+that have their own extensions incompatible with SVr4/XSI. Available terminfo
+subsets are "SVr1", "Ultrix", "HP", and "AIX"; see \fBterminfo\fR(\*n) for
+details. You can also choose the subset "BSD" which selects only capabilities
+with termcap equivalents recognized by 4.4BSD.
+.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
+below:
+.br
+.RS 5
+.TP 5
+\fBd\fR
+leave fields in the order that they are stored in the \fIterminfo\fR database.
+.TP 5
+\fBi\fR
+sort by \fIterminfo\fR name.
+.TP 5
+\fBl\fR
+sort by the long C variable name.
+.TP 5
+\fBc\fR
+sort by the \fItermcap\fR name.
+.RE
+.IP
+If the \fB-s\fR option is not given, the fields printed out will be
+sorted alphabetically by the \fBterminfo\fR name within each type,
+except in the case of the \fB-C\fR or the \fB-L\fR options, which cause the
+sorting to be done by the \fBtermcap\fR name or the long C variable
+name, respectively.
+.TP 5
+\fB-T\fR
+eliminates size-restrictions on the generated text.
+This is mainly useful for testing and analysis, since the compiled
+descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
+.TP
+\fB-t\fR
+tells \fBtic\fP to discard commented-out capabilities.
+Normally when translating from terminfo to termcap,
+untranslatable capabilities are commented-out.
+.TP 5
+\fB-U\fR
+tells \fBinfocmp\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 \fBinfocmp\fP makes to fill in missing
+data.
+.TP 5
+\fB-V\fR
+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.
.TP 5
\fB-w\fR \fIwidth\fR
changes the output to \fIwidth\fR characters.
+.TP
+\fB-x\fR
+print information for user-defined capabilities.
+These are extensions to the terminfo repertoire which can be loaded
+using the \fB-x\fR option of \fBtic\fP.
.SH FILES
.TP 20
\*d
@@ -345,23 +403,32 @@ The
\fB-f\fR,
\fB-g\fR,
\fB-i\fR,
-\fB-p\fR, and
-\fB-q\fR
+\fB-l\fR,
+\fB-p\fR,
+\fB-q\fR and
+\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.
Actual BSD curses versions will have a more restricted set. To see only the
-4.4BSD set, use -r -RBSD.
+4.4BSD set, use \fB-r\fR \fB-RBSD\fR.
.SH BUGS
-The -F option of \fBinfocmp\fR(1M) should be a \fBtoe\fR(1M) mode.
+The \fB-F\fR option of \fBinfocmp\fR(1M) should be a \fBtoe\fR(1M) mode.
.SH SEE ALSO
-\fBinfocmp\fR(1M), \fBcaptoinfo\fR(1M), \fBinfotocap\fR(1M),
-\fBtic\fR(1M), \fBtoe\fR(1M),
-\fBcurses\fR(3X), \fBterminfo\fR(\*n).
+\fB@CAPTOINFO@\fR(1M),
+\fB@INFOTOCAP@\fR(1M),
+\fB@TIC@\fR(1M),
+\fB@TOE@\fR(1M),
+\fBcurses\fR(3X),
+\fBterminfo\fR(\*n).
+.PP
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.SH AUTHOR
Eric S. Raymond <esr@snark.thyrsus.com>
and
-Thomas E. Dickey <dickey@herndon4.his.com>
+.br
+Thomas E. Dickey <dickey@invisible-island.net>
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/infotocap.1m b/contrib/ncurses/man/infotocap.1m
index ef8735b7be54..1d20ef081e7f 100644
--- a/contrib/ncurses/man/infotocap.1m
+++ b/contrib/ncurses/man/infotocap.1m
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1999,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999-2004,2006 Free 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: infotocap.1m,v 1.3 2000/08/13 01:56:03 tom Exp $
+.\" $Id: infotocap.1m,v 1.6 2006/05/13 15:35:45 tom Exp $
.TH infotocap 1M ""
.ds n 5
.ds d @TERMINFO@
@@ -66,6 +66,9 @@ You can use other \fItic\fR options such as \fB-f\fR and \fB-x\fR.
\fBtic\fR(1M),
\fBinfocmp\fR(1M),
\fBterminfo\fR(\*n)
+.PP
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/key_defined.3x b/contrib/ncurses/man/key_defined.3x
new file mode 100644
index 000000000000..d7413da6fe35
--- /dev/null
+++ b/contrib/ncurses/man/key_defined.3x
@@ -0,0 +1,60 @@
+.\"***************************************************************************
+.\" Copyright (c) 2003-2004,2006 Free Software 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 2003
+.\"
+.\" $Id: key_defined.3x,v 1.4 2006/02/25 21:50:01 tom Exp $
+.TH key_defined 3X ""
+.SH NAME
+\fBkey_defined\fP \- check if a keycode is defined
+.SH SYNOPSIS
+\fB#include <curses.h>\fP
+.sp
+\fBint key_defined(const char *definition);\fP
+.SH DESCRIPTION
+This is an extension to the curses library.
+It permits an application to determine if a string is currently bound
+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.
+.SH PORTABILITY
+These routines are specific to ncurses. They were not supported on
+Version 7, BSD or System V implementations. It is recommended that
+any code depending on them be conditioned using NCURSES_VERSION.
+.SH SEE ALSO
+\fBdefine_key\fR(3X).
+.SH AUTHOR
+Thomas Dickey.
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
diff --git a/contrib/ncurses/man/keybound.3x b/contrib/ncurses/man/keybound.3x
index 79c480cfd386..93e17945a31a 100644
--- a/contrib/ncurses/man/keybound.3x
+++ b/contrib/ncurses/man/keybound.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1999,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999-2003,2006 Free 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,24 +26,27 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" Author: Thomas E. Dickey <dickey@clark.net> 1999
+.\" Author: Thomas E. Dickey 1999
.\"
-.\" $Id: keybound.3x,v 1.3 2002/02/16 22:30:36 tom Exp $
+.\" $Id: keybound.3x,v 1.6 2006/02/25 21:47:06 tom Exp $
.TH keyok 3X ""
.SH NAME
\fBkeybound\fP \- return definition of keycode
.SH SYNOPSIS
\fB#include <curses.h>\fP
-
+.sp
\fBchar * keybound(int keycode, int count);\fP
.SH DESCRIPTION
This is an extension to the curses library.
It permits an application to determine the string which is defined
in the terminfo for specific keycodes.
.SH RETURN VALUE
-The keycode must be greater than zero, else NULL is returned.
+The \fIkeycode\fP parameter must be greater than zero, else NULL is returned.
If it does not correspond to a defined key, then NULL is returned.
-Otherwise, the function returns a string, which must be freed by the caller.
+The \fIcount\fP parameter is used to allow the application to iterate
+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
diff --git a/contrib/ncurses/man/keyok.3x b/contrib/ncurses/man/keyok.3x
index e3f2287abb13..08c2a27778ea 100644
--- a/contrib/ncurses/man/keyok.3x
+++ b/contrib/ncurses/man/keyok.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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,15 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" Author: Thomas E. Dickey <dickey@clark.net> 1997
+.\" Author: Thomas E. Dickey 1997
.\"
-.\" $Id: keyok.3x,v 1.7 2002/02/16 22:40:59 tom Exp $
+.\" $Id: keyok.3x,v 1.9 2006/02/25 21:47:06 tom Exp $
.TH keyok 3X ""
.SH NAME
\fBkeyok\fP \- enable or disable a keycode
.SH SYNOPSIS
\fB#include <curses.h>\fP
-
+.sp
\fBint keyok(int keycode, bool enable);\fP
.SH DESCRIPTION
This is an extension to the curses library.
diff --git a/contrib/ncurses/man/legacy_coding.3x b/contrib/ncurses/man/legacy_coding.3x
new file mode 100644
index 000000000000..b8b0561072a6
--- /dev/null
+++ b/contrib/ncurses/man/legacy_coding.3x
@@ -0,0 +1,82 @@
+.\"***************************************************************************
+.\" Copyright (c) 2005,2006 Free Software 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: legacy_coding.3x,v 1.2 2006/02/25 21:50:01 tom Exp $
+.TH legacy_coding 3X ""
+.SH NAME
+\fBuse_legacy_coding\fR \- use terminal's default colors
+.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.
+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.
+This affects only 8-bit characters.
+.PP
+The \fIlevel\fP parameter controls the result:
+.RS
+.TP 5
+0
+the library functions normally,
+rendering nonprinting characters as described in \fBunctrl\fP(3X).
+.TP
+1
+the library ignores \fBisprintf\fP for codes in the range 160-255.
+.TP
+2
+the library ignores \fBisprintf\fP for codes in the range 128-255.
+It also modifies the output of \fBunctrl\fP, showing codes in the
+range 128-159 as is.
+.RE
+.SH RETURN VALUE
+If the screen has not been initialized,
+or the \fIlevel\fP parameter is out of range,
+the function returns \fBERR\fP.
+Otherwise, it returns the previous level: \fB0\fP, \fB1\fP or \fB2\fP.
+.SH PORTABILITY
+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.
+.SH SEE ALSO
+\fBunctrl\fR.
+.SH AUTHOR
+Thomas Dickey (to support lynx's font-switching feature).
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
diff --git a/contrib/ncurses/man/make_sed.sh b/contrib/ncurses/man/make_sed.sh
index c6c37c25b0d5..f2afac93ebc8 100755
--- a/contrib/ncurses/man/make_sed.sh
+++ b/contrib/ncurses/man/make_sed.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-# $Id: make_sed.sh,v 1.5 1998/02/11 12:13:48 tom Exp $
+# $Id: make_sed.sh,v 1.9 2005/07/16 18:15:31 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2003,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 "Software"), #
@@ -28,7 +28,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1997
+# Author: Thomas E. Dickey 1997-2005
#
# Construct a sed-script to perform renaming within man-pages. Originally
# written in much simpler form, this one accounts for the common cases of
@@ -47,7 +47,7 @@ RESULT=result$$
rm -f $UPPER $SCRIPT $RESULT
trap "rm -f $COL.* $INPUT $UPPER $SCRIPT $RESULT" 0 1 2 5 15
fgrep -v \# $1 | \
-sed -e 's/[ ]\+/ /g' >$INPUT
+sed -e 's/[ ][ ]*/ /g' >$INPUT
for F in 1 2 3 4
do
@@ -63,7 +63,7 @@ paste $COL.* | \
sed -e 's/^/s\/\\</' \
-e 's/$/\//' >$UPPER
-# Do the TH lines
+echo "# Do the TH lines" >>$RESULT
sed -e 's/\//\/TH /' \
-e 's/ / /' \
-e 's/ / ""\/TH /' \
@@ -71,7 +71,7 @@ sed -e 's/\//\/TH /' \
-e 's/\/$/ ""\//' \
$UPPER >>$RESULT
-# Do the embedded references
+echo "# Do the embedded references" >>$RESULT
sed -e 's/</<fB/' \
-e 's/ /\\\\fR(/' \
-e 's/ /)\/fB/' \
@@ -79,5 +79,11 @@ sed -e 's/</<fB/' \
-e 's/\/$/)\//' \
$UPPER >>$RESULT
+echo "# Do the \fBxxx\fR references in the .NAME section" >>$RESULT
+sed -e 's/\\</^\\\\fB/' \
+ -e 's/ [^ ]* /\\\\f[RP] -\/\\\\fB/' \
+ -e 's/ .*$/\\\\fR -\//' \
+ $UPPER >>$RESULT
+
# Finally, send the result to standard output
cat $RESULT
diff --git a/contrib/ncurses/man/man_db.renames b/contrib/ncurses/man/man_db.renames
index 7aaf1de28610..8e968ac47f74 100644
--- a/contrib/ncurses/man/man_db.renames
+++ b/contrib/ncurses/man/man_db.renames
@@ -1,4 +1,31 @@
-# $Id: man_db.renames,v 0.31 2002/04/13 21:49:08 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2005,2006 Free Software 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: man_db.renames,v 0.36 2006/05/13 23:47:25 tom Exp $
# Manual-page renamings for the man_db program
#
# Files:
@@ -89,6 +116,8 @@ infocmp.1m infocmp.1
infotocap.1m infotocap.1
keybound.3x keybound.3ncurses
keyok.3x keyok.3ncurses
+key_defined.3x key_defined.3ncurses
+legacy_coding.3x legacy_coding.3ncurses
menu.3x menu.3menu
menu_attributes.3x attributes.3menu
menu_cursor.3x cursor.3menu
@@ -136,3 +165,6 @@ can_change_color.3x can_change_color.3ncurses
curs_attr_get.3x attr_get.3ncurses
dup_field.3x dup_field.3ncurses
init_pair.3x init_pair.3ncurses
+#
+# Other:
+tack.1m tack.1
diff --git a/contrib/ncurses/man/manlinks.sed b/contrib/ncurses/man/manlinks.sed
index e175148aab9a..4da7790dfd97 100644
--- a/contrib/ncurses/man/manlinks.sed
+++ b/contrib/ncurses/man/manlinks.sed
@@ -1,6 +1,6 @@
-# $Id: manlinks.sed,v 1.9 2000/09/30 23:32:24 tom Exp $
+# $Id: manlinks.sed,v 1.12 2003/12/20 13:17:56 tom Exp $
##############################################################################
-# Copyright (c) 2000 Free Software Foundation, Inc. #
+# Copyright (c) 2000-2002,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"), #
@@ -29,40 +29,73 @@
# Given a manpage (nroff) as input, writes a list of the names that are
# listed in the "NAME" section, i.e., the names that we would like to use
# as aliases for the manpage -T.Dickey
+#
+# eliminate formatting controls that get in the way
/^'\\"/d
/\.\\"/d
/^\.br/d
/^\.sp/d
+s/^\.IX//
s/\\f.//g
s/[:,]/ /g
+#
+# eliminate unnecessary whitespace, convert multiple blanks to single space
s/^[ ][ ]*//
s/[ ][ ]*$//
s/[ ][ ]*/ /g
+#
+# convert ".SH" into a more manageable form
s/\.SH[ ][ ]*/.SH_(/
#
+# in ".SH NAME"
+# change "\-" to "-", eliminate text after "-", and split the remaining lines
+# at each space, making a list of names:
/^\.SH_(NAME/,/^\.SH_(SYNOPSIS/{
s/\\-.*/ -/
/ -/{
- s/ -.*//
- s/ /\
+s/ -.*//
+s/ /\
/g
}
/^-/{
- d
+d
}
s/ /\
/g
}
+#
+# in ".SH SYNOPSIS"
+# remove any line that does not contain a '(', since we only want functions.
+# then strip off return-type of each function.
+# finally, remove the parameter list, which begins with a '('.
/^\.SH_(SYNOPSIS/,/^\.SH_(DESCRIPTION/{
- /^#/d
- /^[^(]*$/d
- s/^\([^ (]* [^ (]* [*]*\)//g
- s/^\([^ (]* [*]*\)//g
- s/\.SH_(/.SH_/
- s/(.*//
- s/\.SH_/.SH_(/
+/^[^(]*$/d
+# reduce
+# .B "int add_wch( const cchar_t *\fIwch\fB );"
+# to
+# add_wch( const cchar_t *\fIwch\fB );"
+s/^\([^ (]* [^ (]* [*]*\)//g
+s/^\([^ (]* [*]*\)//g
+# trim blanks in case we have
+# void (*) (FORM *) field_init(const FORM *form);
+s/) (/)(/g
+# reduce stuff like
+# void (*)(FORM *) field_init(const FORM *form);
+# to
+# field_init(const FORM *form);
+s/^\(([^)]*)\)\(([^)]*)\)*[ ]*//g
+# rename marker temporarily
+s/\.SH_(/.SH_/
+# kill lines with ");", and trim off beginning of argument list.
+s/[()].*//
+# rename marker back
+s/\.SH_/.SH_(/
}
+#
+# delete ".SH DESCRIPTION" and following lines
/^\.SH_(DESCRIPTION/,${
- d
+d
}
+#
+# delete any remaining directives
/^\./d
diff --git a/contrib/ncurses/man/menu.3x b/contrib/ncurses/man/menu.3x
index e81913c43cb9..17d6fc120cba 100644
--- a/contrib/ncurses/man/menu.3x
+++ b/contrib/ncurses/man/menu.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2002,2006 Free 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.3x,v 1.15 2002/01/19 22:48:58 tom Exp $
+.\" $Id: menu.3x,v 1.19 2006/11/04 18:38:29 tom Exp $
.TH menu 3X ""
.SH NAME
\fBmenu\fR - curses extension for programming menus
@@ -39,25 +39,25 @@ The \fBmenu\fR 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 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
\fB-lmenu -lcurses\fR.
-
+.
.SS Current Default Values for Item Attributes
-
+.
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
\fBset_\fR function affects future item creations, but does not change the
rendering of items already created.
-
+.
.SS Routine Name Index
-
+.
The following table lists each \fBmenu\fR routine and the name of
the manual page on which it is described.
-
+.
.TS
l l .
\fBcurses\fR Routine Name Manual Page Name
@@ -131,57 +131,60 @@ unpost_menu \fBmenu_post\fR(3X)
Routines that return pointers return \fBNULL\fR on error. Routines that return
an integer return one of the following error codes:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
-The menu is already posted.
-.TP 5
-\fBE_BAD_STATE\fR
+.B E_BAD_STATE
Routine was called from an initialization or termination function.
.TP 5
-\fBE_NO_ROOM\fR
-Menu is too large for its window.
+.B E_NO_MATCH
+Character failed to match.
.TP 5
-\fBE_NOT_POSTED\fR
-The menu has not been posted.
+.B E_NO_ROOM
+Menu is too large for its window.
.TP 5
-\fBE_UNKNOWN_COMMAND\fR
-The menu driver code saw an unknown request code.
+.B E_NOT_CONNECTED
+No items are connected to the menu.
.TP 5
-\fBE_NO_MATCH\fR
-Character failed to match.
+.B E_NOT_POSTED
+The menu has not been posted.
.TP 5
-\fBE_NOT_SELECTABLE\fR
+.B E_NOT_SELECTABLE
The designated item cannot be selected.
.TP 5
-\fBE_NOT_CONNECTED\fR
-No items are connected to the menu.
+.B E_POSTED
+The menu is already posted.
.TP 5
-\fBE_REQUEST_DENIED\fR
+.B E_REQUEST_DENIED
The menu driver could not process the request.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
+.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
-give you a link error using GNU \fBld\fR(1) and many other linkers).
+usually give a link-error).
.SH PORTABILITY
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 ncurses by Eric
S. Raymond.
+.SH SEE ALSO
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/menu_attributes.3x b/contrib/ncurses/man/menu_attributes.3x
index 99a2ac2bc101..d96ea234fd84 100644
--- a/contrib/ncurses/man/menu_attributes.3x
+++ b/contrib/ncurses/man/menu_attributes.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2002,2006 Free 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_attributes.3x,v 1.7 2002/01/19 22:49:06 tom Exp $
+.\" $Id: menu_attributes.3x,v 1.9 2006/11/04 17:12:00 tom Exp $
.TH menu_attributes 3X ""
.SH NAME
\fBmenu_attributes\fR - color and attribute control for menus
@@ -55,30 +55,30 @@ 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
is \fBA_STANDOUT\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.
-
+.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.
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.
.SH RETURN VALUE
These routines return one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.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
diff --git a/contrib/ncurses/man/menu_cursor.3x b/contrib/ncurses/man/menu_cursor.3x
index 2cc58507de66..4ade0bf96269 100644
--- a/contrib/ncurses/man/menu_cursor.3x
+++ b/contrib/ncurses/man/menu_cursor.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_cursor.3x,v 1.5 1998/11/29 01:09:30 Rick.Ohnemus Exp $
+.\" $Id: menu_cursor.3x,v 1.6 2006/11/04 17:13:57 tom Exp $
.TH menu_cursor 3X ""
.SH NAME
\fBmenu_cursor\fR - position a menu's cursor
@@ -43,16 +43,16 @@ routines have been called to do screen-painting in response to a menu select.
.SH RETURN VALUE
This routine returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_NOT_POSTED\fR
+.B E_NOT_POSTED
The menu has not been posted.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
diff --git a/contrib/ncurses/man/menu_driver.3x b/contrib/ncurses/man/menu_driver.3x
index 0e6f9e02f38f..a256141ae7db 100644
--- a/contrib/ncurses/man/menu_driver.3x
+++ b/contrib/ncurses/man/menu_driver.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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: menu_driver.3x,v 1.10 2002/02/16 22:40:59 tom Exp $
+.\" $Id: menu_driver.3x,v 1.12 2006/11/04 17:13:50 tom Exp $
.TH menu_driver 3X ""
.SH NAME
\fBmenu_driver\fR - command-processing loop of the menu system
@@ -115,10 +115,10 @@ is positioned to that item. If you double-click at an item a REQ_TOGGLE_ITEM
is generated and \fBE_UNKNOWN_COMMAND\fR is returned. This return value makes
sense, because a double click usually means that an item-specific action should
be returned. It's exactly the purpose of this return value to signal that an
-application specific command should be executed. If a translation
+application specific command should be executed. If a translation
into a request was done, \fBmenu_driver\fR returns the result of this request.
If you clicked outside the user window or the mouse event couldn't be translated
-into a menu request an \fBE_REQUEST_DENIED\fR is returned.
+into a menu request an \fBE_REQUEST_DENIED\fR is returned.
.PP
If the second argument is neither printable ASCII nor one of the above
pre-defined menu requests or KEY_MOUSE, the drive assumes it is an application-specific
@@ -128,28 +128,28 @@ pre-defined requests.
.SH RETURN VALUE
\fBmenu_driver\fR return one of the following error codes:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_BAD_STATE\fR
+.B E_BAD_STATE
Routine was called from an initialization or termination function.
.TP 5
-\fBE_NOT_POSTED\fR
+.B E_NOT_POSTED
The menu has not been posted.
.TP 5
-\fBE_UNKNOWN_COMMAND\fR
+.B E_UNKNOWN_COMMAND
The menu driver code saw an unknown request code.
.TP 5
-\fBE_NO_MATCH\fR
+.B E_NO_MATCH
Character failed to match.
.TP 5
-\fBE_REQUEST_DENIED\fR
+.B E_REQUEST_DENIED
The menu driver could not process the request.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
diff --git a/contrib/ncurses/man/menu_format.3x b/contrib/ncurses/man/menu_format.3x
index 7dde28face88..f4d456f6f960 100644
--- a/contrib/ncurses/man/menu_format.3x
+++ b/contrib/ncurses/man/menu_format.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2001,2006 Free 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_format.3x,v 1.8 2001/08/04 20:36:19 William.Setzer Exp $
+.\" $Id: menu_format.3x,v 1.10 2006/11/04 17:12:00 tom Exp $
.TH menu_format 3X ""
.SH NAME
\fBmenu_format\fR - set and get menu sizes
@@ -43,28 +43,31 @@ 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.
-
+.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
\fBset_menu_format\fR is interpreted as a request not to change the current
value.
-
+.PP
The function \fBmenu_format\fR returns the maximum-size constraints for the
given menu into the storage addressed by \fBrows\fR and \fBcols\fR.
.SH RETURN VALUE
These routines returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
+.B E_POSTED
The menu is already posted.
+.TP 5
+.B E_NOT_CONNECTED
+No items are connected to the menu.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/menu_hook.3x b/contrib/ncurses/man/menu_hook.3x
index 531528a60783..840552315675 100644
--- a/contrib/ncurses/man/menu_hook.3x
+++ b/contrib/ncurses/man/menu_hook.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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.6 1998/11/29 01:09:47 Rick.Ohnemus Exp $
+.\" $Id: menu_hook.3x,v 1.8 2006/11/04 17:12:00 tom Exp $
.TH menu_hook 3X ""
.SH NAME
\fBmenu_hook\fR - set hooks for automatic invocation by applications
@@ -53,22 +53,22 @@ void (*)(MENU *) menu_term(const MENU *menu);
.SH DESCRIPTION
These functions make it possible to set hook functions to be called at various
points in the automatic processing of input event codes by \fBmenu_driver\fR.
-
+.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
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
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
returns the current menu init hook, if any (\fBNULL\fR if there is no such
hook).
-
+.PP
The function \fBset_menu_term\fR sets a hook to be called at menu-unpost time
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
@@ -77,10 +77,10 @@ is no such hook).
Routines that return pointers return \fBNULL\fR on error. Other routines
return one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
diff --git a/contrib/ncurses/man/menu_items.3x b/contrib/ncurses/man/menu_items.3x
index 7ec7db5604ba..091534385368 100644
--- a/contrib/ncurses/man/menu_items.3x
+++ b/contrib/ncurses/man/menu_items.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_items.3x,v 1.5 1998/11/29 01:09:56 Rick.Ohnemus Exp $
+.\" $Id: menu_items.3x,v 1.7 2006/11/04 18:35:31 tom Exp $
.TH menu_items 3X ""
.SH NAME
\fBmenu_items\fR - make and break connections between items and menus
@@ -43,32 +43,34 @@ int item_count(const MENU *menu);
.SH DESCRIPTION
The function \fBset_menu_items\fR changes the item pointer array of the given
\fImenu\fR. The array must be terminated by a \fBNULL\fR.
-
+.PP
The function \fBmenu_items\fR returns the item array of the given menu.
-
+.PP
The function \fBitem_count\fR returns the count of items in \fImenu\fR.
.SH RETURN VALUES
-The function \fBmenu_items\fR returns \fBNULL\fR on error.
-
+The function \fBmenu_items\fR returns a pointer (which may be \fBNULL\fR).
+It does not set errno.
+.PP
The function \fBitem_count\fR returns \fBERR\fR (the general \fBcurses\fR error
-return value) on error.
-
+return value) if its \fImenu\fP parameter is \fBNULL\fP.
+.PP
The function \fBset_menu_items\fR returns one of the following codes on error:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
+.B E_NOT_CONNECTED
+No items are connected to the menu.
+.TP 5
+.B E_POSTED
The menu is already posted.
.TP 5
-\fBE_NOT_CONNECTED\fR
-No items are connected to the menu.
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
+.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
@@ -77,7 +79,7 @@ The header file \fB<menu.h>\fR automatically includes the header file
.SH PORTABILITY
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
diff --git a/contrib/ncurses/man/menu_mark.3x b/contrib/ncurses/man/menu_mark.3x
index 72ea000335e4..1db2b3ee1974 100644
--- a/contrib/ncurses/man/menu_mark.3x
+++ b/contrib/ncurses/man/menu_mark.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_mark.3x,v 1.6 1998/11/29 01:10:03 Rick.Ohnemus Exp $
+.\" $Id: menu_mark.3x,v 1.9 2006/11/04 18:33:18 tom Exp $
.TH menu_mark 3X ""
.SH NAME
\fBmenu_mark\fR - get and set the menu mark string
@@ -42,29 +42,31 @@ const char *menu_mark(const MENU *menu);
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.
-
+.PP
The function \fBset_menu_mark\fR sets the mark string for the given menu.
Calling \fBset_menu_mark\fR with a null menu item will abolish the mark string.
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
-a \fBNULL\fR menu argument will change this default.
-
+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
there is none).
.SH RETURN VALUE
-The function \fBmenu_mark\fR returns \fBNULL\fR on error. The function
-\fBset_menu_mark\fR may return the following error codes:
+The function \fBmenu_mark\fR returns a pointer (which may be \fBNULL\fR).
+It does not set errno.
+.PP
+The function \fBset_menu_mark\fR may return the following error codes:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/menu_new.3x b/contrib/ncurses/man/menu_new.3x
index c53bd9b8cb65..c2b98e499055 100644
--- a/contrib/ncurses/man/menu_new.3x
+++ b/contrib/ncurses/man/menu_new.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_new.3x,v 1.7 1998/11/29 01:10:13 Rick.Ohnemus Exp $
+.\" $Id: menu_new.3x,v 1.9 2006/11/04 18:31:37 tom Exp $
.TH menu_new 3X ""
.SH NAME
\fBmenu_new\fR - create and destroy menus
@@ -41,24 +41,31 @@ int free_menu(MENU *menu);
.SH DESCRIPTION
The function \fBnew_menu\fR creates a new menu connected to a specified item
pointer array (which must be \fBNULL\fR-terminated).
-
+.PP
The function \fBfree_menu\fR disconnects \fImenu\fR from its item array
and frees the storage allocated for the menu.
.SH RETURN VALUE
The function \fBnew_menu\fR returns \fBNULL\fR on error.
-
+It sets errno according to the function's failure:
+.TP 5
+.B E_NOT_CONNECTED
+No items are connected to the menu.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred, e.g., malloc failure.
+.PP
The function \fBfree_menu\fR returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
+.B E_POSTED
The menu has already been posted.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
diff --git a/contrib/ncurses/man/menu_opts.3x b/contrib/ncurses/man/menu_opts.3x
index 30cad58d4957..890b2c265134 100644
--- a/contrib/ncurses/man/menu_opts.3x
+++ b/contrib/ncurses/man/menu_opts.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_opts.3x,v 1.7 1998/11/29 01:10:21 Rick.Ohnemus Exp $
+.\" $Id: menu_opts.3x,v 1.9 2006/11/04 17:12:00 tom Exp $
.TH menu_opts 3X ""
.SH NAME
\fBmenu_opts\fR - set and get menu options
@@ -45,15 +45,15 @@ OPTIONS menu_opts(const MENU *menu);
.SH DESCRIPTION
The function \fBset_menu_opts\fR sets all the given menu's option bits (menu
option bits may be logically-OR'ed together).
-
+.PP
The function \fBmenu_opts_on\fR turns on the given option bits, and leaves
others alone.
-
+.PP
The function \fBmenu_opts_off\fR turns off the given option bits, and leaves
others alone.
-
+.PP
The function \fBmenu_opts\fR returns the menu's current option bits.
-
+.PP
The following options are defined (all are on by default):
.TP 5
O_ONEVALUE
@@ -77,13 +77,13 @@ requests to the other end of the menu.
.SH RETURN VALUE
Except for \fBmenu_opts\fR, each routine returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_POSTED\fR
+.B E_POSTED
The menu is already posted.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
diff --git a/contrib/ncurses/man/menu_pattern.3x b/contrib/ncurses/man/menu_pattern.3x
index 990a9dc52bac..50dee87a1e84 100644
--- a/contrib/ncurses/man/menu_pattern.3x
+++ b/contrib/ncurses/man/menu_pattern.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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: menu_pattern.3x,v 1.7 2002/02/16 22:40:59 tom Exp $
+.\" $Id: menu_pattern.3x,v 1.10 2006/11/04 18:25:24 tom Exp $
.TH menu_pattern 3X ""
.SH NAME
\fBmenu_pattern\fR - get and set a menu's pattern buffer
@@ -41,28 +41,37 @@ char *menu_pattern(const MENU *menu);
Every menu has an associated pattern match buffer. As input events that are
printable ASCII characters come in, they are appended to this match buffer
and tested for a match, as described in \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.
-
+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 \fBNULL\fR on error. The function
-\fBset_menu_pattern\fR may return the following error codes:
+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:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_NO_MATCH\fR
+.B E_BAD_STATE
+Routine was called from an initialization or termination function.
+.TP 5
+.B E_NOT_CONNECTED
+No items are connected to menu.
+.TP 5
+.B E_NO_MATCH
Character failed to match.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/menu_post.3x b/contrib/ncurses/man/menu_post.3x
index a4182d649520..e47facc9e4d9 100644
--- a/contrib/ncurses/man/menu_post.3x
+++ b/contrib/ncurses/man/menu_post.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_post.3x,v 1.7 1998/11/29 01:10:33 Rick.Ohnemus Exp $
+.\" $Id: menu_post.3x,v 1.9 2006/11/04 17:12:00 tom Exp $
.TH menu_post 3X ""
.SH NAME
\fBmenu_post\fR - write or erase menus from associated subwindows
@@ -43,34 +43,34 @@ 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
\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.
-
+.PP
The function \fBunpost_menu\fR erases menu from its associated subwindow.
.SH RETURN VALUE
These routines return one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
+.B E_POSTED
The menu has already been posted.
.TP 5
-\fBE_BAD_STATE\fR
+.B E_BAD_STATE
Routine was called from an initialization or termination function.
.TP 5
-\fBE_NO_ROOM\fR
+.B E_NO_ROOM
Menu is too large for its window. You should consider to use
\fBset_menu_format()\fR to solve the problem.
.TP 5
-\fBE_NOT_POSTED\fR
+.B E_NOT_POSTED
The menu has not been posted.
.TP 5
-\fBE_NOT_CONNECTED\fR
+.B E_NOT_CONNECTED
No items are connected to the menu.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
diff --git a/contrib/ncurses/man/menu_requestname.3x b/contrib/ncurses/man/menu_requestname.3x
index f4b646a455fc..1345aa784851 100644
--- a/contrib/ncurses/man/menu_requestname.3x
+++ b/contrib/ncurses/man/menu_requestname.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_requestname.3x,v 1.6 1998/11/29 01:10:40 Rick.Ohnemus Exp $
+.\" $Id: menu_requestname.3x,v 1.7 2006/11/04 17:56:09 tom Exp $
.TH menu_requestname 3X ""
.SH NAME
\fBmenu_requestname\fR - handle printable menu request names
@@ -43,12 +43,14 @@ The function \fBmenu_request_name\fR returns the printable name of a menu
request code.
.br
The function \fBmenu_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
-\fBmenu_request_name\fR returns \fBNULL\fR on error and sets errno
-to \fBE_BAD_ARGUMENT\fR.
+\fBmenu_request_name\fR returns \fBNULL\fR on error
+and sets errno to \fBE_BAD_ARGUMENT\fR.
.br
\fBmenu_request_by_name\fR returns \fBE_NO_MATCH\fR on error.
+It does not set errno.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/menu_spacing.3x b/contrib/ncurses/man/menu_spacing.3x
index 183162193204..dfe03a8a55b1 100644
--- a/contrib/ncurses/man/menu_spacing.3x
+++ b/contrib/ncurses/man/menu_spacing.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2001 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2001,2004 Free 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_spacing.3x,v 1.6 2001/08/04 20:36:16 William.Setzer Exp $
+.\" $Id: menu_spacing.3x,v 1.8 2004/12/11 23:39:07 tom Exp $
.TH menu_spacing 3X ""
.SH NAME
\fBmenu_spacing\fR - Control spacing between menu items.
@@ -51,7 +51,7 @@ description. It must not be larger than \fBTABSIZE\fR. The menu system puts in t
middle of this spacing area the pad character. The remaining parts are filled with
spaces.
\fBspc_rows\fR controls the number of rows that are used for an item. It must not be
-larger than 3. The menu system inserts then blank lines between item rows, these lines
+larger than 3. The menu system inserts the blank lines between item rows, these lines
will contain the pad character in the appropriate positions.
\fBspc_columns\fR controls the number of blanks between columns of items. It must not
be larger than TABSIZE.
diff --git a/contrib/ncurses/man/menu_userptr.3x b/contrib/ncurses/man/menu_userptr.3x
index 1fe354183d83..b7be2adcd8d0 100644
--- a/contrib/ncurses/man/menu_userptr.3x
+++ b/contrib/ncurses/man/menu_userptr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_userptr.3x,v 1.6 1998/11/29 01:11:02 Rick.Ohnemus Exp $
+.\" $Id: menu_userptr.3x,v 1.8 2006/11/04 18:21:03 tom Exp $
.TH menu_userptr 3X ""
.SH NAME
\fBmenu_userptr\fR - associate application data with a menu item
@@ -43,14 +43,10 @@ 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.
.SH RETURN VALUE
-Except for \fBmenu_userptr\fR (which returns \fBNULL\fR on error), each
-function returns one of the following:
-.TP 5
-\fBE_OK\fR
-The routine succeeded.
-.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
+\fBmenu_userptr\fR returns a pointer (which may be \fBNULL\fR).
+It does not set errno.
+.PP
+\fBset_menu_userptr\fP returns \fBE_OK\fP (success).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
@@ -59,9 +55,9 @@ The header file \fB<menu.h>\fR automatically includes the header file
.SH PORTABILITY
These routines emulate the System V menu library. They were not supported on
Version 7 or BSD versions.
-
-The user pointer should be a void pointer. We leave it as a char pointer for
-SVr4 compatibility.
+.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.
diff --git a/contrib/ncurses/man/menu_win.3x b/contrib/ncurses/man/menu_win.3x
index 336da44b0c5b..aa356e18de7e 100644
--- a/contrib/ncurses/man/menu_win.3x
+++ b/contrib/ncurses/man/menu_win.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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.6 1998/11/29 01:11:11 Rick.Ohnemus Exp $
+.\" $Id: menu_win.3x,v 1.8 2006/11/04 17:12:00 tom Exp $
.TH menu_win 3X ""
.SH NAME
\fBmenu_win\fR - make and break menu window and subwindow associations
@@ -48,33 +48,33 @@ int scale_menu(const MENU *menu, int *rows, int *columns);
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
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
it were \fBstsdcr\fR. A menu argument of \fBNULL\fR is treated as a request
to change the system default menu window or subwindow.
-
+.PP
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
an integer return one of the following error codes:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_POSTED\fR
+.B E_POSTED
The menu has already been posted.
.TP 5
-\fBE_NOT_CONNECTED\fR
+.B E_NOT_CONNECTED
No items are connected to the menu.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
diff --git a/contrib/ncurses/man/mitem_current.3x b/contrib/ncurses/man/mitem_current.3x
index 179a23be3b2e..979f401341fe 100644
--- a/contrib/ncurses/man/mitem_current.3x
+++ b/contrib/ncurses/man/mitem_current.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_current.3x,v 1.9 1998/12/26 19:52:34 tom Exp $
+.\" $Id: mitem_current.3x,v 1.11 2006/11/04 18:18:19 tom Exp $
.TH mitem_current 3X ""
.SH NAME
\fBmitem_current\fR - set and get current_menu_item
@@ -48,37 +48,38 @@ int item_index(const ITEM *item);
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
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
row being displayed.
-
+.PP
The function \fBitem_index\fR returns the (zero-origin) index of \fIitem\fR in
the menu's item pointer list.
.SH RETURN VALUE
-\fBcurrent_item\fR returns \fBNULL\fR on error.
-
+\fBcurrent_item\fR returns a pointer (which may be \fBNULL\fR).
+It does not set errno.
+.PP
\fBtop_row\fR and \fBitem_index\fR return \fBERR\fR (the general \fBcurses\fR
-error value) on error.
-
+error value) if their \fImenu\fP parameter is \fBNULL\fP.
+.PP
\fBset_current_item\fR and \fBset_top_row\fR return one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_BAD_STATE\fR
+.B E_BAD_STATE
Routine was called from an initialization or termination function.
.TP 5
-\fBE_NOT_CONNECTED\fR
+.B E_NOT_CONNECTED
No items are connected to the menu.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
@@ -87,7 +88,7 @@ The header file \fB<menu.h>\fR automatically includes the header file
.SH PORTABILITY
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
diff --git a/contrib/ncurses/man/mitem_name.3x b/contrib/ncurses/man/mitem_name.3x
index 007752e0bbe4..12009edace35 100644
--- a/contrib/ncurses/man/mitem_name.3x
+++ b/contrib/ncurses/man/mitem_name.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_name.3x,v 1.5 1998/11/29 01:11:29 Rick.Ohnemus Exp $
+.\" $Id: mitem_name.3x,v 1.6 2006/11/04 17:53:40 tom Exp $
.TH mitem_name 3X ""
.SH NAME
\fBmitem_name\fR - get menu item name and description fields
@@ -44,15 +44,16 @@ The function \fBitem_name\fR returns the name part of the given item.
The function \fBitem_description\fR returns the description part of the given
item.
.SH RETURN VALUE
-These routines returns \fBNULL\fR on error.
+These routines return a pointer (which may be \fBNULL\fR).
+They do not set errno.
.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
-Version 7 or BSD versions.
+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.
diff --git a/contrib/ncurses/man/mitem_new.3x b/contrib/ncurses/man/mitem_new.3x
index 0653840167bd..c0fa6edcf64a 100644
--- a/contrib/ncurses/man/mitem_new.3x
+++ b/contrib/ncurses/man/mitem_new.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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_new.3x,v 1.7 1998/11/29 01:11:38 Rick.Ohnemus Exp $
+.\" $Id: mitem_new.3x,v 1.10 2006/11/04 18:16:36 tom Exp $
.TH mitem_new 3X ""
.SH NAME
\fBmitem_new\fR - create and destroy menu items
@@ -42,7 +42,7 @@ int free_item(ITEM *item);
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 carefull with names
+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
@@ -50,20 +50,27 @@ is the responsibility of the application to release the memory for the
name or the description of the item.
.SH RETURN VALUE
The function \fBnew_item\fR returns \fBNULL\fR on error.
-
+It sets errno according to the function's failure:
+.TP 5
+.B E_BAD_ARGUMENT
+Routine detected an incorrect or out-of-range argument.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred, e.g., malloc failure.
+.PP
The function \fBfree_item\fR returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
-.TP 5
-\fBE_BAD_ARGUMENT\fR
+.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
-\fBE_CONNECTED\fR
+.B E_CONNECTED
Item is connected to a menu.
+.TP 5
+.B E_SYSTEM_ERROR
+System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
diff --git a/contrib/ncurses/man/mitem_opts.3x b/contrib/ncurses/man/mitem_opts.3x
index 99e4e5ea7e99..2a4a8761d081 100644
--- a/contrib/ncurses/man/mitem_opts.3x
+++ b/contrib/ncurses/man/mitem_opts.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_opts.3x,v 1.6 1998/11/29 01:12:37 Rick.Ohnemus Exp $
+.\" $Id: mitem_opts.3x,v 1.8 2006/11/04 17:12:00 tom Exp $
.TH mitem_opts 3X ""
.SH NAME
\fBmitem_opts\fR - set and get menu item options
@@ -45,25 +45,25 @@ OPTIONS item_opts(const ITEM *item);
.SH DESCRIPTION
The function \fBset_item_opts\fR sets all the given item's option bits (menu
option bits may be logically-OR'ed together).
-
+.PP
The function \fBitem_opts_on\fR turns on the given option bits, and leaves
others alone.
-
+.PP
The function \fBitem_opts_off\fR turns off the given option bits, and leaves
others alone.
-
+.PP
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
to on.
.SH RETURN VALUE
Except for \fBitem_opts\fR, each routine returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
diff --git a/contrib/ncurses/man/mitem_userptr.3x b/contrib/ncurses/man/mitem_userptr.3x
index 2dd564fd61e8..58951930244c 100644
--- a/contrib/ncurses/man/mitem_userptr.3x
+++ b/contrib/ncurses/man/mitem_userptr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,2006 Free 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_userptr.3x,v 1.6 1998/11/29 01:12:47 Rick.Ohnemus Exp $
+.\" $Id: mitem_userptr.3x,v 1.9 2006/11/04 18:21:03 tom Exp $
.TH mitem_userptr 3X ""
.SH NAME
\fBmitem_userptr\fR - associate application data with a menu item
@@ -43,13 +43,11 @@ 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.
.SH RETURN VALUE
-Except for \fBitem_userptr\fR (which returns \fBNULL\fR on error), each function returns one of the following:
-.TP 5
-\fBE_OK\fR
-The routine succeeded.
-.TP 5
-\fBE_SYSTEM_ERROR\fR
-System error occurred (see \fBerrno\fR).
+The function \fBitem_userptr\fR returns a pointer (possibly \fBNULL\fR).
+It does not set errno.
+.PP
+The \fBset_item_userptr\fP always returns \fBE_OK\fP (success).
+.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
@@ -58,9 +56,9 @@ The header file \fB<menu.h>\fR automatically includes the header file
.SH PORTABILITY
These routines emulate the System V menu library. They were not supported on
Version 7 or BSD versions.
-
-The user pointer should be a void pointer. We leave it as a char pointer for
-SVr4 compatibility.
+.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.
diff --git a/contrib/ncurses/man/mitem_value.3x b/contrib/ncurses/man/mitem_value.3x
index 5817d8d277b6..748fd528675c 100644
--- a/contrib/ncurses/man/mitem_value.3x
+++ b/contrib/ncurses/man/mitem_value.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2002,2006 Free 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: mitem_value.3x,v 1.6 2002/02/16 22:40:59 tom Exp $
+.\" $Id: mitem_value.3x,v 1.8 2006/11/04 17:12:00 tom Exp $
.TH mitem_value 3X ""
.SH NAME
\fBmitem_value\fR - set and get menu item values
@@ -42,20 +42,20 @@ If you turn off the menu option \fBO_ONEVALUE\fR (e.g., with
\fBset_menu_opts\fR or \fBmenu_opts_off\fR; see \fBmenu_opts\fR(3X)), the menu
becomes multi-valued; that is, more than one item may simultaneously be
selected.
-
+.PP
In a multi_valued menu, you can used \fBset_item_value\fR to select the
given menu item (second argument \fBTRUE\fR) or deselect it (second argument
\fBFALSE\fR).
.SH RETURN VALUE
The function \fBset_item_value\fR returns one of the following:
.TP 5
-\fBE_OK\fR
+.B E_OK
The routine succeeded.
.TP 5
-\fBE_SYSTEM_ERROR\fR
+.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
-\fBE_REQUEST_DENIED\fR
+.B E_REQUEST_DENIED
The menu driver could not process the request.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
diff --git a/contrib/ncurses/man/ncurses.3x b/contrib/ncurses/man/ncurses.3x
index 84ead5cab868..19678daab005 100644
--- a/contrib/ncurses/man/ncurses.3x
+++ b/contrib/ncurses/man/ncurses.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,1999,2001,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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.61 2002/05/11 21:15:32 tom Exp $
+.\" $Id: ncurses.3x,v 1.81 2006/12/02 19:23:11 tom Exp $
.hy 0
.TH ncurses 3X ""
.ds n 5
@@ -42,79 +42,82 @@ The \fBncurses\fR library routines give the user a terminal-independent method
of updating character screens with reasonable optimization. This
implementation is ``new curses'' (ncurses) and is the approved replacement for
4.4BSD classic curses, which has been discontinued.
-
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
+.PP
The \fBncurses\fR routines emulate the \fBcurses\fR(3X) library of System V
Release 4 UNIX, and the XPG4 curses standard (XSI curses) but the \fBncurses\fR
library is freely redistributable in source form. Differences from the SVr4
-curses are summarized under the EXTENSIONS and BUGS sections below and
-described in detail in the EXTENSIONS and BUGS sections of individual man
-pages.
-
+curses are summarized under the \fBEXTENSIONS\fP and \fBPORTABILITY\fP sections below and
+described in detail in the respective \fBEXTENSIONS\fP, \fBPORTABILITY\fP and \fBBUGS\fP sections
+of individual man pages.
+.PP
A program using these routines must be linked with the \fB-lncurses\fR option,
or (if it has been generated) with the debugging library \fB-lncurses_g\fR.
(Your system integrator may also have installed these libraries under
the names \fB-lcurses\fR and \fB-lcurses_g\fR.)
The ncurses_g library generates trace logs (in a file called 'trace' in the
current directory) that describe curses actions.
-
+See also the section on \fBALTERNATE CONFIGURATIONS\fP.
+.PP
The \fBncurses\fR package supports: overall screen, window and pad
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.
-
+.PP
To initialize the routines, the routine \fBinitscr\fR or \fBnewterm\fR
must be called before any of the other routines that deal with windows
and screens are used. The routine \fBendwin\fR must be called before
exiting. To get character-at-a-time input without echoing (most
interactive, screen oriented programs want this), the following
sequence should be used:
-
+.sp
\fBinitscr(); cbreak(); noecho();\fR
-
+.sp
Most programs would additionally use the sequence:
-
+.sp
\fBnonl();\fR
\fBintrflush(stdscr, FALSE);\fR
\fBkeypad(stdscr, TRUE);\fR
-
+.sp
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 \fBtput init\fR command
after the shell environment variable \fBTERM\fR has been exported.
\fBtset(1)\fR is usually responsible for doing this.
[See \fBterminfo\fR(\*n) for further details.]
-
+.PP
The \fBncurses\fR library permits manipulation of data structures,
called \fIwindows\fR, which can be thought of as two-dimensional
arrays of characters representing all or part of a CRT screen. A
default window called \fBstdscr\fR, which is the size of the terminal
screen, is supplied. Others may be created with \fBnewwin\fR.
-
+.PP
Note that \fBcurses\fR does not handle overlapping windows, that's done by
the \fBpanel\fR(3X) library. This means that you can either use
\fBstdscr\fR or divide the screen into tiled windows and not using
\fBstdscr\fR at all. Mixing the two will result in unpredictable, and
undesired, effects.
-
+.PP
Windows are referred to by variables declared as \fBWINDOW *\fR.
These data structures are manipulated with routines described here and
-elsewhere in the \fBncurses\fR manual pages. Among which the most basic
+elsewhere in the \fBncurses\fR manual pages. Among those, the most basic
routines are \fBmove\fR and \fBaddch\fR. More general versions of
these routines are included with names beginning with \fBw\fR,
allowing the user to specify a window. The routines not beginning
-with \fBw\fR affect \fBstdscr\fR.)
-
+with \fBw\fR affect \fBstdscr\fR.
+.PP
After using routines to manipulate a window, \fBrefresh\fR 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
\fBchtype\fR, (character and attribute data) so that other information
about the character may also be stored with each character.
-
+.PP
Special windows called \fIpads\fR 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 \fBcurs_pad\fR(3X) for more information.
-
+.PP
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
@@ -123,75 +126,74 @@ On input, \fBcurses\fR 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 \fB<curses.h>\fR,
such as \fBA_REVERSE\fR, \fBACS_HLINE\fR, and \fBKEY_LEFT\fR.
-
+.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
the environment will override information read by \fIterminfo\fR. This would
effect a program running in an AT&T 630 layer, for example, where the size of a
screen is changeable (see \fBENVIRONMENT\fR).
-
+.PP
If the environment variable \fBTERMINFO\fR is defined, any program using
\fBcurses\fR checks for a local terminal definition before checking in the
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
(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
and if that fails, it then checks
-
+.sp
\fB\*d/a/att4424\fR.
-
+.sp
This is useful for developing experimental definitions or when write
permission in \fB\*d\fR is not available.
-
+.PP
The integer variables \fBLINES\fR and \fBCOLS\fR are defined in
\fB<curses.h>\fR and will be filled in by \fBinitscr\fR with the size of the
screen. The constants \fBTRUE\fR and \fBFALSE\fR have the values \fB1\fR and
\fB0\fR, respectively.
-
+.PP
The \fBcurses\fR routines also define the \fBWINDOW *\fR variable \fBcurscr\fR
which is used for certain low-level operations like clearing and redrawing a
screen containing garbage. The \fBcurscr\fR can be used in only a few
routines.
-
+.
.SS Routine and Argument Names
Many \fBcurses\fR routines have two or more versions. The routines prefixed
with \fBw\fR require a window argument. The routines prefixed with \fBp\fR
require a pad argument. Those without a prefix generally use \fBstdscr\fR.
-
+.PP
The routines prefixed with \fBmv\fR require a \fIy\fR and \fIx\fR
coordinate to move to before performing the appropriate action. The
\fBmv\fR routines imply a call to \fBmove\fR before the call to the
other routine. The coordinate \fIy\fR always refers to the row (of
the window), and \fIx\fR always refers to the column. The upper
left-hand corner is always (0,0), not (1,1).
-
+.PP
The routines prefixed with \fBmvw\fR take both a window argument and
\fIx\fR and \fIy\fR coordinates. The window argument is always
specified before the coordinates.
-
+.PP
In each case, \fIwin\fR is the window affected, and \fIpad\fR is the
pad affected; \fIwin\fR and \fIpad\fR are always pointers to type
\fBWINDOW\fR.
-
+.PP
Option setting routines require a Boolean flag \fIbf\fR with the value
\fBTRUE\fR or \fBFALSE\fR; \fIbf\fR is always of type \fBbool\fR. The
variables \fIch\fR and \fIattrs\fR below are always of type
\fBchtype\fR. The types \fBWINDOW\fR, \fBSCREEN\fR, \fBbool\fR, and
\fBchtype\fR are defined in \fB<curses.h>\fR. The type \fBTERMINAL\fR
is defined in \fB<term.h>\fR. All other arguments are integers.
-
.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 `*'
are ncurses-specific, not described by XPG4 or present in SVr4.
-
+.PP
.TS
center tab(/);
l l
@@ -322,6 +324,7 @@ inwstr/\fBcurs_inwstr\fR(3X)
is_linetouched/\fBcurs_touch\fR(3X)
is_wintouched/\fBcurs_touch\fR(3X)
isendwin/\fBcurs_initscr\fR(3X)
+key_defined/\fBkey_defined\fR(3X)*
key_name/\fBcurs_util\fR(3X)
keybound/\fBkeybound\fR(3X)*
keyname/\fBcurs_util\fR(3X)
@@ -612,13 +615,13 @@ wvline_set/\fBcurs_border_set\fR(3X)
Routines that return an integer return \fBERR\fR upon failure and an
integer value other than \fBERR\fR upon successful completion, unless
otherwise noted in the routine descriptions.
-
+.PP
All macros return the value of the \fBw\fR version, except \fBsetscrreg\fR,
-\fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, \fBgetmaxyx\fR. The return
+\fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and \fBgetmaxyx\fR. The return
values of \fBsetscrreg\fR, \fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and
-\fBgetmaxyx\fR are undefined (\fIi\fR.\fIe\fR., these should not be used as the
+\fBgetmaxyx\fR are undefined (i.e., these should not be used as the
right-hand side of assignment statements).
-
+.PP
Routines that return pointers return \fBNULL\fR on error.
.SH ENVIRONMENT
The following environment symbols are useful for customizing the
@@ -629,7 +632,7 @@ BAUDRATE
The debugging library checks this environment symbol when the application
has redirected output to a file.
The symbol's numeric value is used for the baudrate.
-If no value is found \fBncurses\fR uses 9600.
+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
@@ -643,45 +646,55 @@ COLUMNS
Specify the width of the screen in characters.
Applications running in a windowing environment usually are able to
obtain the width of the window in which they are executing.
-If neither the $COLUMNS value nor the terminal's screen size is available,
+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
It is important that your application use a correct size for the screen.
-However, this is not always possible because your application may be
+This is not always possible because your application may be
running on a host which does not honor NAWS (Negotiations About Window
Size), or because you are temporarily running as another user.
-
-Either COLUMNS or LINES symbols may be specified independently.
+However, setting \fBCOLUMNS\fP and/or \fBLINES\fP overrides the library's
+use of the screen size obtained from the operating system.
+.IP
+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.
-
-Use the \fBuse_env\fR function to disable this feature.
+.IP
+Use the \fBuse_env\fR function to disable all use of external environment
+(including system calls) to determine the screen size.
.TP 5
ESCDELAY
Specifies the total time, in milliseconds, for which ncurses will
await a character sequence, e.g., a function key.
The default value, 1000 milliseconds, is enough for most uses.
However, it is made a variable to accommodate unusual applications.
-
+.IP
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
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
+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
Tells \fBncurses\fR where your home directory is.
That is where it may read and write auxiliary terminal descriptions:
-
+.IP
$HOME/.termcap
.br
$HOME/.terminfo
@@ -695,17 +708,41 @@ 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
1 = left
.br
2 = right
.br
3 = middle.
-
+.sp
This symbol lets you customize the mouse.
The symbol must be three numeric digits 1-3 in any order, e.g., 123 or 321.
If it is not specified, \fBncurses\fR uses 132.
.TP 5
+NCURSES_ASSUMED_COLORS
+Override the compiled-in assumption that the
+terminal's default colors are white-on-black
+(see \fBassume_default_colors\fR(3X)).
+You may set the foreground 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 \fBmax_colors\fR value is allowed.
+.TP 5
+NCURSES_NO_HARD_TABS
+\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
+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
Most of the terminal descriptions in the terminfo database are written
for real "hardware" terminals.
@@ -722,11 +759,11 @@ 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
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
Set the NCURSES_NO_PADDING symbol to disable all but mandatory
padding. Mandatory padding is used as a part of special control
sequences such as \fIflash\fR.
@@ -739,12 +776,30 @@ this feature is made optional. Setting the NCURSES_NO_SETBUF variable
disables output buffering, leaving the output in the original (usually
line buffered) mode.
.TP 5
+NCURSES_NO_UTF8_ACS
+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.
+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
+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.
+.TP 5
NCURSES_TRACE
During initialization, the \fBncurses\fR debugging library
checks the NCURSES_TRACE symbol.
If it is defined, to a numeric value, \fBncurses\fR calls the \fBtrace\fR
function, using that value as the argument.
-
+.IP
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
@@ -758,7 +813,7 @@ 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 symbol contains either a terminal description (with
newlines stripped out),
or a file name telling where the information denoted by the TERM symbol exists.
@@ -773,7 +828,7 @@ The complete list of directories in order follows:
.RS
.TP 3
-
-the last directory to which \fBncurses\fR wrote, if any, is searched first.
+the last directory to which \fBncurses\fR wrote, if any, is searched first
.TP 3
-
the directory specified by the TERMINFO symbol
@@ -807,6 +862,76 @@ 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.
+.SH ALTERNATE CONFIGURATIONS
+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
+developer using \fBncurses\fP:
+.TP 5
+--disable-overwrite
+The standard include for \fBncurses\fP is as noted in \fBSYNOPSIS\fP:
+.RS
+.sp
+\fB#include <curses.h>\fR
+.RE
+.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
+\fB#include <ncurses/curses.h>\fR
+.RE
+.IP
+It also omits a symbolic link which would allow you to use \fB-lcurses\fP
+to build executables.
+.TP 5
+--enable-widec
+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,
+i.e., instead of
+.RS
+.sp
+\fB-lncurses\fR
+.RE
+.IP
+you link with
+.RS
+.sp
+\fB-lncursesw\fR
+.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.
+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-shared
+.TP
+--with-normal
+.TP
+--with-debug
+.TP
+--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,
+e.g., \fBlibncurses_g.a\fP and \fBlibncurses_p.a\fP.
+.TP 5
+--with-trace
+The \fBtrace\fP 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 assuming it is always in the debug library.
.SH FILES
.TP 5
@DATADIR@/tabset
@@ -822,23 +947,24 @@ that falls back to the old-style /etc/termcap file if the terminal setup code
cannot find a terminfo entry corresponding to \fBTERM\fR. Use of this feature
is not recommended, as it essentially includes an entire termcap compiler in
the \fBncurses\fR startup code, at significant cost in core and startup cycles.
-
+.PP
The \fBncurses\fR library includes facilities for capturing mouse events on
certain terminals (including xterm). See the \fBcurs_mouse\fR(3X)
manual page for details.
-
+.PP
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.
-
+.PP
The \fBncurses\fR library extends the fixed set of function key capabilities
of terminals by allowing the application designer to define additional
key sequences at runtime.
See the \fBdefine_key\fR(3X)
+\fBkey_defined\fR(3X),
and \fBkeyok\fR(3X) manual pages for details.
-
+.PP
The \fBncurses\fR library can exploit the capabilities of terminals which
implement the ISO-6429 SGR 39 and SGR 49 controls, which allow an application
to reset the terminal to its original foreground and background colors.
@@ -846,17 +972,14 @@ 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 \fBdefault_colors\fR(3X) manual page for details.
-
+.PP
The \fBncurses\fR library includes a function for directing application output
to a printer attached to the terminal device. See the \fBcurs_print\fR(3X)
manual page for details.
.SH PORTABILITY
The \fBncurses\fR library is intended to be BASE-level conformant with the XSI
-Curses standard. Certain portions of the EXTENDED XSI Curses functionality
-(including color support) are supported. The following EXTENDED XSI Curses
-calls in support of wide (multibyte) characters are not yet implemented:
-\fBpecho_wchar\fP,
-\fBslk_wset\fP.
+Curses standard. The EXTENDED XSI Curses functionality
+(including color support) is supported.
.PP
A small number of local differences (that is, individual differences between
the XSI Curses and \fBncurses\fR calls) are described in \fBPORTABILITY\fR
@@ -885,22 +1008,10 @@ bits in the UNIX tty driver. In this implementation, all padding is done by
NUL sends. This method is slightly more expensive, but narrows the interface
to the UNIX kernel significantly and increases the package's portability
correspondingly.
-.PP
-In the XSI standard and SVr4 manual pages, many entry points have prototype
-arguments of the for \fBchar *const\fR (or \fBcchar_t *const\fR, or
-\fBwchar_t *const\fR, or \fBvoid *const\fR). Depending on one's interpretation of the
-ANSI C standard (see section 3.5.4.1), these declarations are either (a)
-meaningless, or (b) meaningless and illegal. The declaration
-\fBconst char *x\fR is a modifiable pointer to unmodifiable data, but
-\fBchar *const x\fR' is
-an unmodifiable pointer to modifiable data. Given that C passes arguments by
-value, \fB<type> *const\fR as a formal type is at best dubious. Some compilers
-choke on the prototypes. Therefore, in this implementation, they have been
-changed to \fBconst <type> *\fR globally.
.SH NOTES
The header file \fB<curses.h>\fR automatically includes the header files
\fB<stdio.h>\fR and \fB<unctrl.h>\fR.
-
+.PP
If standard output from a \fBncurses\fR program is re-directed to something
which is not a tty, screen updates will be directed to standard error. This
was an undocumented feature of AT&T System V Release 3 curses.
diff --git a/contrib/ncurses/man/panel.3x b/contrib/ncurses/man/panel.3x
index 7ebecc00ff46..2896f01adc49 100644
--- a/contrib/ncurses/man/panel.3x
+++ b/contrib/ncurses/man/panel.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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: panel.3x,v 1.10 2000/08/13 01:56:47 tom Exp $
+.\" $Id: panel.3x,v 1.12 2006/05/13 15:35:45 tom Exp $
.TH panel 3X ""
.ds n 5
.ds d @TERMINFO@
@@ -77,7 +77,7 @@ The set of currently visible panels is the stack of panels. The
of the stack.
.P
A window is associated with every panel. The panel routines enable
-you to create, move, hides, and show panels, as well as position a
+you to create, move, hide, and show panels, as well as position a
panel at any desired location in the stack.
.P
Panel routines are a functional layer added to \fBcurses\fR(3X), make only
@@ -166,7 +166,7 @@ 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
-give you a link error using GNU \fBld\fR(1) and some other linkers).
+usually give a link-error).
.SH FILES
.P
panel.h
@@ -176,6 +176,9 @@ libpanel.a
the panels library itself
.SH SEE ALSO
\fBcurses\fR(3X)
+.PP
+This describes \fBncurses\fR
+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
diff --git a/contrib/ncurses/man/resizeterm.3x b/contrib/ncurses/man/resizeterm.3x
index 562c35328901..888eaaf318d1 100644
--- a/contrib/ncurses/man/resizeterm.3x
+++ b/contrib/ncurses/man/resizeterm.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,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 *
@@ -26,9 +26,9 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,2002
+.\" Author: Thomas E. Dickey 1996-2005
.\"
-.\" $Id: resizeterm.3x,v 1.9 2002/02/16 22:32:24 tom Exp $
+.\" $Id: resizeterm.3x,v 1.11 2005/06/25 22:19:42 tom Exp $
.TH resizeterm 3X ""
.SH NAME
\fBis_term_resized\fR,
@@ -36,7 +36,7 @@
\fBresizeterm\fR - change the curses terminal size
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBbool is_term_resized(int lines, int columns);\fR
.br
\fBint resize_term(int lines, int columns);\fR
@@ -49,7 +49,7 @@ primarily for use by programs running in an X Window terminal (e.g., xterm).
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.
-
+.LP
Most of the work is done by the inner function \fBresize_term\fR.
The outer function \fBresizeterm\fR adds bookkeeping for the SIGWINCH handler.
When resizing the windows,
@@ -59,7 +59,7 @@ 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
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.
@@ -80,6 +80,14 @@ will be read on the next call to \fBgetch\fR.
This is used to alert an application that the screen size has changed,
and that it should repaint special features such as pads that cannot
be done automatically.
+.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,
+no screen size change may be recorded.
+In that case, no \fBKEY_RESIZE\fP is queued for the next call to \fBgetch\fP;
+an \fBERR\fP will be returned instead.
.SH SEE ALSO
\fBwresize\fR(3X).
.SH AUTHOR
diff --git a/contrib/ncurses/man/term.5 b/contrib/ncurses/man/term.5
index a8cf6e5ed47b..cd7e79ae9d36 100644
--- a/contrib/ncurses/man/term.5
+++ b/contrib/ncurses/man/term.5
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2004,2006 Free 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: term.5,v 1.13 2002/04/20 16:49:17 tom Exp $
+.\" $Id: term.5,v 1.17 2006/12/03 01:08:16 tom Exp $
.TH TERM 5
.ds n 5
.ds d @TERMINFO@
@@ -35,11 +35,13 @@ term \- format of compiled term file.
.SH SYNOPSIS
.B term
.SH DESCRIPTION
-.PP
+.SS STORAGE LOCATION
Compiled terminfo descriptions are placed under the directory \fB\*d\fP.
-In order to avoid a linear search of a huge \s-1UNIX\s+1 system directory, a
-two-level scheme is used: \fB\*b/c/name\fP
-where
+Two configurations are supported (when building the ncurses libraries):
+.TP 5
+.B directory tree
+A two-level scheme is used to avoid a linear search
+of a huge \s-1UNIX\s+1 system directory: \fB\*d/c/name\fP where
.I name
is the name of the terminal, and
.I c
@@ -50,13 +52,29 @@ Thus,
can be found in the file \fB\*d/a/act4\fP.
Synonyms for the same terminal are implemented by multiple
links to the same compiled file.
-.PP
+.TP 5
+.B hashed database
+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 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,
+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
+environment variable by assuming a directory tree for entries that
+correspond to an existing directory,
+and hashed database otherwise.
+.SS 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
-.I tic
+.I tic
program, and read by the routine
.IR setupterm .
The file is divided into six parts:
@@ -72,19 +90,27 @@ The header section begins the file.
This section contains six short integers in the format
described below.
These integers are
+.RS 5
+.TP 5
(1) the magic number (octal 0432);
+.TP 5
(2) the size, in bytes, of the names section;
+.TP 5
(3) the number of bytes in the boolean section;
+.TP 5
(4) the number of short integers in the numbers section;
+.TP 5
(5) the number of offsets (short integers) in the strings section;
+.TP 5
(6) the size, in bytes, of the string table.
+.RE
.PP
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
+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 \s-1VAX\s+1
and \s-1PDP\s+1-11 (that is, little-endian machines).
@@ -112,11 +138,11 @@ 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.
+If the value represented is -1, the capability is taken to be missing.
.PP
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.
+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 \ec notation are stored in their
@@ -128,7 +154,48 @@ 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.
+.SS EXTENDED STORAGE FORMAT
+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.
+.PP
+The ncurses 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,
+continues to parse according to its own scheme.
+.PP
+First, it reads the extended header (5 short integers):
+.RS 5
+.TP 5
+(1)
+count of extended boolean capabilities
+.TP 5
+(2)
+count of extended numeric capabilities
+.TP 5
+(3)
+count of extended string capabilities
+.TP 5
+(4)
+size of the extended string table in bytes.
+.TP 5
+(5)
+last offset 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.
+.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.
+.
+.SH PORTABILITY
Note that it is possible for
.I setupterm
to expect a different set of capabilities
@@ -155,17 +222,17 @@ 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
discussion of terminfo source compatibility issues.
-.PP
+.SH EXAMPLE
As an example, here is a hex dump of the description for the Lear-Siegler
ADM-3, a popular though rather stupid early terminal:
.nf
.sp
-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,
+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
.ft CW
\s-20000 1a 01 10 00 02 00 03 00 82 00 31 00 61 64 6d 33 ........ ..1.adm3
@@ -193,13 +260,21 @@ adm3a|lsi adm3a,
.ft R
.fi
.sp
-.PP
+.SH LIMITS
Some limitations: total compiled entries cannot exceed 4096 bytes.
The name field cannot exceed 128 bytes.
.SH FILES
\*d/*/* compiled terminal capability data base
.SH SEE ALSO
\fBcurses\fR(3X), \fBterminfo\fR(\*n).
+.SH AUTHORS
+Thomas E. Dickey
+.br
+extended terminfo format for ncurses 5.0
+.br
+hashed database support for ncurses 5.6
+.sp
+Eric S. Raymond
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/term.7 b/contrib/ncurses/man/term.7
index 5d51e92e6ed4..0a77cf694bd3 100644
--- a/contrib/ncurses/man/term.7
+++ b/contrib/ncurses/man/term.7
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2000,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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: term.7,v 1.13 2002/04/20 16:50:47 tom Exp $
+.\" $Id: term.7,v 1.15 2006/02/25 21:47:06 tom Exp $
.TH TERM 7
.ds n 5
.ds d @TERMINFO@
@@ -65,16 +65,16 @@ 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
-
+.sp
toe | more
-
+.sp
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 \fBinfocmp\fR(1) command. Invoke it as
follows:
-
+.sp
infocmp \fIentry-name\fR
-
+.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
@@ -96,7 +96,7 @@ 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 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
+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 (\e, $, [, ]), is especially
dangerous (terminfo is platform-independent, and choosing names with special
@@ -136,29 +136,29 @@ with another that has this suffix and uses magic cookies to support multiple
attributes.
.TP 5
-am
-Enable auto-margin (right-margin wraparound)
+Enable auto-margin (right-margin wraparound).
.TP 5
-m
-Mono mode - suppress color support
+Mono mode - suppress color support.
.TP 5
-na
No arrow keys - termcap ignores arrow keys which are actually there on the
terminal, so the user can use the arrow keys locally.
.TP 5
-nam
-No auto-margin - suppress am capability
+No auto-margin - suppress am capability.
.TP 5
-nl
-No labels - suppress soft labels
+No labels - suppress soft labels.
.TP 5
-nsl
-No status line - suppress status line
+No status line - suppress status line.
.TP 5
-pp
Has a printer port which is used.
.TP 5
-rv
-Terminal in reverse video mode (black on white)
+Terminal in reverse video mode (black on white).
.TP 5
-s
Enable status line.
@@ -190,10 +190,10 @@ should be unique within the first 14 characters.
compiled terminal capability data base
.TP 5
/etc/inittab
-tty line initialization (AT&T-like UNIXes).
+tty line initialization (AT&T-like UNIXes)
.TP 5
/etc/ttys
-tty line initialization (BSD-like UNIXes).
+tty line initialization (BSD-like UNIXes)
.SH SEE ALSO
\fBcurses\fR(3X), \fBterminfo\fR(\*n), \fBterm\fR(\*n).
.\"#
diff --git a/contrib/ncurses/man/terminfo.head b/contrib/ncurses/man/terminfo.head
index 36945ff2502b..28006d3b68c7 100644
--- a/contrib/ncurses/man/terminfo.head
+++ b/contrib/ncurses/man/terminfo.head
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2004,2006 Free 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.9 2000/08/13 01:56:40 tom Exp $
+.\" $Id: terminfo.head,v 1.13 2006/05/13 15:35:45 tom Exp $
.TH TERMINFO 5 "" "" "File Formats"
.ds n 5
.ds d @TERMINFO@
@@ -45,11 +45,13 @@ and libraries such as
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
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.PP
Entries in
.I terminfo
consist of a sequence of `,' separated fields (embedded commas may be
-escaped with a backslash or notated as \e072).
+escaped with a backslash or notated as \e054).
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.
@@ -59,6 +61,16 @@ 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.
.PP
+Lines beginning with a `#' in the first column are treated as comments.
+While comment lines are legal at any point, the output of \fIcaptoinfo\fP
+and \fIinfotocap\fP (aliases for \fItic\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 \fIinfocmp\ -f\fP option relies on this to format if-then-else expressions:
+the result can be read by \fItic\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
diff --git a/contrib/ncurses/man/terminfo.tail b/contrib/ncurses/man/terminfo.tail
index bd585b1268e5..fa9a90d86654 100644
--- a/contrib/ncurses/man/terminfo.tail
+++ b/contrib/ncurses/man/terminfo.tail
@@ -1,9 +1,11 @@
-.\" $Id: terminfo.tail,v 1.35 2002/04/20 16:49:33 tom Exp $
+.\" $Id: terminfo.tail,v 1.44 2006/04/01 22:47:01 tom Exp $
.\" Beginning of terminfo.tail file
+.\" This file is part of ncurses.
+.\" See "terminfo.head" for copyright.
.ps +1
-.PP
+..
.SS A Sample Entry
-.PP
+..
The following entry, describing an ANSI-standard terminal, is representative
of what a \fBterminfo\fR entry for a modern terminal typically looks like.
.PP
@@ -271,22 +273,22 @@ Thus the model 33 teletype is described as
.DT
.nf
.ft CW
-.in -7
- \s-133\||\|tty33\||\|tty\||\|model 33 teletype,
+.\".in -2
+\s-133\||\|tty33\||\|tty\||\|model 33 teletype,
bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1
-.in +7
+.\".in +2
.ft R
.PP
-while the Lear Siegler \s-1ADM\-3\s0 is described as
+while the Lear Siegler \s-1ADM-3\s0 is described as
.PP
.DT
.nf
.ft CW
-.in -7
- \s-1adm3\||\|3\||\|lsi adm3,
+.\".in -2
+\s-1adm3\||\|3\||\|lsi adm3,
am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
ind=^J, lines#24,\s+1
-.in +7
+.\".in +2
.ft R
.fi
.PP
@@ -311,42 +313,93 @@ The parameter mechanism uses a stack and special \fB%\fP codes
to manipulate it.
Typically a sequence will push one of the
parameters onto the stack and then print it in some format.
-Often more complex operations are necessary.
+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 \fBsgr\fP string.
.PP
The \fB%\fR encodings have the following meanings:
.PP
-.DT
-.nf
-.ta .5i 1.5i
- \s-1%% outputs `%'
- %\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
- as in \fBprintf\fP, flags are [-+#] and space
- %c print pop() like %c in printf()
- %s print pop() like %s in printf()
-
- %p[1-9] push \fIi\fP'th parm
- %P[a-z] set dynamic variable [a-z] to pop()
- %g[a-z] get dynamic variable [a-z] and push it
- %P[A-Z] set static variable [a-z] to pop()
- %g[A-Z] get static variable [a-z] and push it
- %'\fIc\fP' char constant \fIc\fP
- %{\fInn\fP} integer constant \fInn\fP
- %l push strlen(pop)
-
- %+ %- %* %/ %m
- arithmetic (%m is mod): push(pop() op pop())
- %& %| %^ bit operations: push(pop() op pop())
- %= %> %< logical operations: push(pop() op pop())
- %A, %O logical and & or operations (for conditionals)
- %! %~ unary operations push(op pop())
- %i add 1 to first two parameters (for ANSI terminals)
-
- %? expr %t thenpart %e elsepart %;
- if-then-else, %e elsepart is optional.
- else-if's are possible a la Algol 68:
- %? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %;
-\s+1 c\di\u are conditions, b\di\u are bodies.
-.fi
+.TP 5
+\s-1%%
+outputs `%'
+.TP
+%\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
+as in \fBprintf\fP, flags are [-+#] and space
+.TP
+%c
+print pop() like %c in \fBprintf\fP
+.TP
+%s
+print pop() like %s in \fBprintf\fP
+.TP
+%p[1-9]
+push \fIi\fP'th parameter
+.TP
+%P[a-z]
+set dynamic variable [a-z] to pop()
+.TP
+%g[a-z]
+get dynamic variable [a-z] and push it
+.TP
+%P[A-Z]
+set static variable [a-z] to pop()
+.TP
+%g[A-Z]
+get static variable [a-z] and push it
+.IP
+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.
+However, that fact is not documented in other implementations.
+Relying on it will adversely impact portability to other implementations.
+.TP
+%'\fIc\fP'
+char constant \fIc\fP
+.TP
+%{\fInn\fP}
+integer constant \fInn\fP
+.TP
+%l
+push strlen(pop)
+.TP
+%+ %- %* %/ %m
+arithmetic (%m is mod): push(pop() op pop())
+.TP
+%& %| %^
+bit operations (AND, OR and exclusive-OR): push(pop() op pop())
+.TP
+%= %> %<
+logical operations: push(pop() op pop())
+.TP
+%A, %O
+logical AND and OR operations (for conditionals)
+.TP
+%! %~
+unary operations (logical and bit complement): push(op pop())
+.TP
+%i
+add 1 to first two parameters (for ANSI terminals)
+.TP
+%? \fIexpr\fP %t \fIthenpart\fP %e \fIelsepart\fP %;
+This forms an if-then-else.
+The %e \fIelsepart\fP is optional.
+Usually the %? \fIexpr\fP part pushes a value onto the stack,
+and %t pops it from the stack, testing if it is nonzero (true).
+If it is zero (false), control passes to the %e (else) part.
+.IP
+It is possible to form else-if's a la Algol 68:
+.RS
+%? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %;
+.RE
+.IP
+where c\di\u are conditions, b\di\u are bodies.
+.IP
+Use the \fB-f\fP option of \fBtic\fP or \fBinfocmp\fP to see
+the structure of if-the-else's.
+Some strings, e.g., \fBsgr\fP can be very complicated when written
+on one line.
+The \fB-f\fP option splits the string into lines with the parts indented.
.PP
Binary operations are in postfix form with the operands in the usual order.
That is, to get x-5 one would use "%gx%{5}%-".
@@ -762,6 +815,12 @@ Putting this all together into the sgr sequence gives:
.fi
.PP
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.
.PP
Terminals with the ``magic cookie'' glitch
.RB ( xmc )
@@ -937,25 +996,33 @@ option of the
.IR tput
program, each time the user logs in.
They will be printed in the following order:
+.RS
+.TP
run the program
-.BR iprog ;
+.BR iprog
+.TP
output
-.BR is1 ;
-.BR is2 ;
+.BR is1
+.BR is2
+.TP
set the margins using
.BR mgc ,
.BR smgl
and
-.BR smgr ;
+.BR smgr
+.TP
set tabs using
.B tbc
and
-.BR hts ;
+.BR hts
+.TP
print the file
-.BR if ;
+.BR if
+.TP
and finally
output
.BR is3 .
+.RE
.PP
Most initialization is done with
.BR is2 .
@@ -966,17 +1033,21 @@ and special cases in
.B is1
and
.BR is3 .
-A pair of sequences that does a harder reset from a totally unknown state
-can be analogously given as
+.PP
+A set of sequences that does a harder reset from a totally unknown state
+can be given as
.BR rs1 ,
.BR rs2 ,
-.BR rf ,
+.BR rf
and
.BR rs3 ,
analogous to
-.B is2
+.B is1 ,
+.B is2 ,
+.B if
and
-.BR if .
+.BR is3
+respectively.
These strings are output by the
.IR reset
program, which is used when the terminal gets into a wedged state.
@@ -994,6 +1065,28 @@ normally be part of
but it causes an annoying glitch of the screen and is not normally
needed since the terminal is usually already in 80 column mode.
.PP
+The
+.IR reset
+program writes strings
+including
+.BR iprog ,
+etc., in the same order as the
+.IR init
+program, using
+.BR rs1 ,
+etc., instead of
+.BR is1 ,
+etc.
+If any of
+.BR rs1 ,
+.BR rs2 ,
+.BR rs3 ,
+or
+.BR rf
+reset capability strings are missing, the
+.IR reset
+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
(clear all tab stops)
@@ -1007,7 +1100,7 @@ or
.BR if .
.SS Delays and Padding
.PP
-Many older and slower terminals don't support either XON/XOFF or DTR
+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
@@ -1019,7 +1112,7 @@ close to full), set
.BR xon .
This capability suppresses the emission of padding.
You can also set it
-for memory-mapped console devices effectively that don't have a speed limit.
+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 decisions about relative costs, but actual pad characters will
not be transmitted.
@@ -1170,7 +1263,7 @@ defined."
.PP
The \fBsetaf\fR/\fBsetab\fR and \fBsetf\fR/\fBsetb\fR capabilities take a
single numeric argument each.
-Argument values 0-7 are portably defined as
+Argument values 0-7 of \fBsetaf\fR/\fBsetab\fR are portably defined as
follows (the middle column is the symbolic #define available in the header for
the \fBcurses\fR or \fBncurses\fR libraries).
The terminal hardware is free to
@@ -1192,6 +1285,25 @@ cyan \fBCOLOR_CYAN\fR 6 0,max,max
white \fBCOLOR_WHITE\fR 7 max,max,max
.TE
.PP
+The argument values of \fBsetf\fR/\fBsetb\fR historically correspond to
+a different mapping, i.e.,
+.TS H
+center;
+l c c c
+l l n l.
+\fBColor #define Value RGB\fR
+black \fBCOLOR_BLACK\fR 0 0, 0, 0
+blue \fBCOLOR_BLUE\fR 1 0,0,max
+green \fBCOLOR_GREEN\fR 2 0,max,0
+cyan \fBCOLOR_CYAN\fR 3 0,max,max
+red \fBCOLOR_RED\ \fR 4 max,0,0
+magenta \fBCOLOR_MAGENTA\fR 5 max,0,max
+yellow \fBCOLOR_YELLOW\fR 6 max,max,0
+white \fBCOLOR_WHITE\fR 7 max,max,max
+.TE
+It is important to not confuse the two sets of color capabilities;
+otherwise red/blue will be interchanged on the display.
+.PP
On an HP-like terminal, use \fBscp\fR with a color-pair number parameter to set
which color pair is current.
.PP
@@ -1421,39 +1533,39 @@ user preferences.
.SS Pitfalls of Long Entries
.PP
Long terminfo entries are unlikely to be a problem; to date, no entry has even
-approached terminfo's 4K string-table maximum.
+approached terminfo's 4096-byte string-table maximum.
Unfortunately, the termcap
-translations are much more strictly limited (to 1K), thus termcap translations
+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 tgetent() instruct the user to
-allocate a 1K buffer for the termcap entry.
+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 tgetent()
+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
-entry that's longer than 1023 bytes; others don't; others truncate the
+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 don't.
+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
tacks on another termcap entry to the end of the current one, to add
on its capabilities.
-If a termcap entry doesn't use the "tc"
+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
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 tgetent() 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:
.TP 5
@@ -1469,12 +1581,12 @@ the whole entry into the buffer, no matter what its length, to see
if it's the entry it wants,
.TP 5
*
-and tgetent() 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
-doesn't appear in the file at all (so that tgetent() has to search
+does not appear in the file at all (so that \fBtgetent()\fP has to search
the whole termcap file).
.PP
-Then tgetent() 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.
@@ -1487,7 +1599,7 @@ here but will return incorrect data for the terminal.
.PP
The "after tc expansion" length will have a similar effect to the
above, but only for people who actually set TERM to that terminal
-type, since tgetent() only does "tc" expansion once it's found the
+type, since \fBtgetent()\fP only does "tc" expansion once it's 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,
@@ -1511,12 +1623,12 @@ of terminfo (under HP-UX and AIX) which diverged from System V terminfo after
SVr1, and have added extension capabilities to the string table that (in the
binary format) collide with System V and XSI Curses extensions.
.SH EXTENSIONS
-Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, don't
+Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, do not
interpret the %A and %O operators in parameter strings.
.PP
SVr4/XPG4 do not specify whether \fBmsgr\fR licenses movement while in
an alternate-character-set mode (such modes may, among other things, map
-CR and NL to characters that don't trigger local motions).
+CR and NL to characters that do not trigger local motions).
The \fBncurses\fR implementation ignores \fBmsgr\fR in \fBALTCHARSET\fR
mode.
This raises the possibility that an XPG4
@@ -1573,7 +1685,11 @@ Supports both the SVr4 set and the AIX extensions.
\*d/?/*
files containing terminal descriptions
.SH SEE ALSO
-\fBtic\fR(1M), \fBcurses\fR(3X), \fBprintf\fR(3S), \fBterm\fR(\*n).
+\fB@TIC@\fR(1M),
+\fB@INFOCMP@\fR(1M),
+\fBcurses\fR(3X),
+\fBprintf\fR(3S),
+\fBterm\fR(\*n).
.SH AUTHORS
Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
Based on pcurses by Pavel Curtis.
diff --git a/contrib/ncurses/man/tic.1m b/contrib/ncurses/man/tic.1m
index e3a095453d3c..f13e0fd31f6c 100644
--- a/contrib/ncurses/man/tic.1m
+++ b/contrib/ncurses/man/tic.1m
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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.29 2000/08/19 18:51:05 tom Exp $
+.\" $Id: tic.1m,v 1.43 2006/05/13 15:14:01 tom Exp $
.TH tic 1M ""
.ds n 5
.ds d @TERMINFO@
@@ -34,23 +34,28 @@
\fBtic\fR - the \fIterminfo\fR entry-description compiler
.SH SYNOPSIS
\fBtic\fR
-[\fB\-\
+[\fB-\
1\
C\
+G\
I\
+L\
N\
-R\
T\
+U\
V\
a\
c\
f\
+g\
r\
s\
+t\
x\
\fR]
[\fB-e\fR \fInames\fR]
[\fB-o\fR \fIdir\fR]
+[\fB-R\fR \fIsubset\fR]
[\fB-v\fR[\fIn\fR]]
[\fB-w\fR[\fIn\fR]]
\fIfile\fR
@@ -74,11 +79,23 @@ Libraries that read terminfo entries are expected to check for a TERMINFO
directory first, look at \fI$HOME/.terminfo\fR if TERMINFO is not set, and
finally look in \fI\*d\fR.
.TP
+\fB-1\fR
+restricts the output to a single column
+.TP
\fB-a\fR
tells \fBtic\fP to retain commented-out capabilities rather than discarding
them. Capabilities are commented by prefixing them with a period.
This sets the \fB-x\fR option, because it treats the commented-out
entries as user-defined names.
+If the source is termcap, accept the 2-character names required by version 6.
+Otherwise these are ignored.
+.TP
+\fB-C\fR
+Force source translation to termcap format. Note: this differs from the \fB-C\fR
+option of \fIinfocmp\fR(1M) in that it does not merely translate capability
+names, but also translates terminfo strings to termcap format. Capabilities
+that are not translatable are left in the entry under their terminfo names
+but commented out with two preceding dots.
.TP
\fB-c\fR
tells \fBtic\fP to only check \fIfile\fR for errors, including syntax problems and
@@ -88,35 +105,28 @@ will print warnings about entries which, after use resolution, are more than
libraries (and a documented limit in terminfo), these entries may cause core
dumps.
.TP
-\fB-v\fR\fIn\fR
-specifies that (verbose) output be written to standard error trace
-information showing \fBtic\fR's progress. The optional integer
-\fIn\fR is a number from 1 to 10, inclusive, indicating the desired
-level of detail of information. 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.
-.TP
-\fB-o\fR\fIdir\fR
-Write compiled entries to given directory. Overrides the TERMINFO environment
-variable.
-.TP
-\fB-w\fR\fIn\fR
-specifies the width of the output.
-.TP
-\fB-1\fR
-restricts the output to a single column
+\fB-e \fR\fInames\fR
+Limit writes and translations to the following comma-separated list of
+terminals.
+If any name or alias of a terminal matches one of the names in
+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.)
.TP
-\fB-C\fR
-Force source translation to termcap format. Note: this differs from the -C
-option of \fIinfocmp\fR(1M) in that it does not merely translate capability
-names, but also translates terminfo strings to termcap format. Capabilities
-that are not translatable are left in the entry under their terminfo names
-but commented out with two preceding dots.
+\fB-f\fR
+Display complex terminfo strings which contain if/then/else/endif expressions
+indented for readability.
.TP
\fB-G\fR
Display constant literals in decimal form
rather than their character equivalents.
.TP
+\fB-g\fR
+Display constant character literals in quoted form
+rather than their decimal equivalents.
+.TP
\fB-I\fR
Force source translation to terminfo format.
.TP
@@ -125,10 +135,10 @@ Force source translation to terminfo format
using the long C variable names listed in <\fBterm.h\fR>
.TP
\fB-N\fR
-Disable smart defaults.
-Normally, when translating from termcap to terminfo, the compiler makes
+Disable smart defaults.
+Normally, when translating from termcap to terminfo, the compiler makes
a number of assumptions about the defaults of string capabilities
-\fBreset1_string\fR, \fBcarriage_return\fR, \fBcursor_left\fR,
+\fBreset1_string\fR, \fBcarriage_return\fR, \fBcursor_left\fR,
\fBcursor_down\fR, \fBscroll_forward\fR, \fBtab\fR, \fBnewline\fR,
\fBkey_backspace\fR, \fBkey_left\fR, and \fBkey_down\fR, then attempts
to use obsolete termcap capabilities to deduce correct values. It also
@@ -136,55 +146,67 @@ normally suppresses output of obsolete termcap capabilities such as \fBbs\fR.
This option forces a more literal translation that also preserves the
obsolete capabilities.
.TP
+\fB-o\fR\fIdir\fR
+Write compiled entries to given directory. Overrides the TERMINFO environment
+variable.
+.TP
\fB-R\fR\fIsubset\fR
Restrict output to a given subset. This option is for use with archaic
-versions of terminfo like those on SVr1, Ultrix, or HP/UX that don't support
+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.
.TP
+\fB-r\fR
+Force entry resolution (so there are no remaining tc capabilities) even
+when doing translation to termcap format. This may be needed if you are
+preparing a termcap file for a termcap library (such as GNU termcap through
+version 1.3 or BSD termcap through 4.3BSD) that does not handle multiple
+tc capabilities per entry.
+.TP
+\fB-s\fR
+Summarize the compile by showing the directory into which entries
+are written, and the number of entries which are compiled.
+.TP
\fB-T\fR
eliminates size-restrictions on the generated text.
This is mainly useful for testing and analysis, since the compiled
descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
.TP
+\fB-t\fR
+tells \fBtic\fP to discard commented-out capabilities.
+Normally when translating from terminfo to termcap,
+untranslatable capabilities are commented-out.
+.TP 5
+\fB-U\fR
+tells \fBtic\fP 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.
+.TP
\fB-V\fR
reports the version of ncurses which was used in this program, and exits.
.TP
-\fB-r\fR
-Force entry resolution (so there are no remaining tc capabilities) even
-when doing translation to termcap format. This may be needed if you are
-preparing a termcap file for a termcap library (such as GNU termcap up
-to version 1.3 or BSD termcap up to 4.3BSD) that doesn't handle multiple
-tc capabilities per entry.
-.TP
-\fB-e\fR
-Limit writes and translations to the following comma-separated list of
-terminals.
-If any name or alias of a terminal matches one of the names in
-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 -I or -C.)
-.TP
-\fB-f\fR
-Display complex terminfo strings which contain if/then/else/endif expressions
-indented for readability.
-.TP
-\fB-g\fR
-Display constant character literals in quoted form
-rather than their decimal equivalents.
+\fB-v\fR\fIn\fR
+specifies that (verbose) output be written to standard error trace
+information showing \fBtic\fR's progress.
+The optional parameter \fIn\fR is a number from 1 to 10, inclusive,
+indicating the desired level of detail of information.
+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.
.TP
-\fB-s\fR
-Summarize the compile by showing the directory into which entries
-are written, and the number of entries which are compiled.
+\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.
That is, if you supply a capability name which \fBtic\fP does not recognize,
it will infer its type (boolean, number or string) from the syntax and
make an extended table entry for that.
+User-defined capability strings
+whose name begins with ``k'' are treated as function keys.
.TP
\fIfile\fR
contains one or more \fBterminfo\fR terminal descriptions in source
@@ -214,11 +236,11 @@ List of tokens encountered by scanner
9
All values computed in construction of the hash table
.LP
-If n is not given, it is taken to be one.
+If the debug level \fIn\fR is not given, it is taken to be one.
.PP
All but one of the capabilities recognized by \fBtic\fR are documented
in \fBterminfo\fR(\*n). The exception is the \fBuse\fR capability.
-
+.PP
When a \fBuse\fR=\fIentry\fR-\fIname\fR field is discovered in a
terminal entry currently being compiled, \fBtic\fR reads in the binary
from \fB\*d\fR to complete the entry. (Entries created from
@@ -227,16 +249,16 @@ from \fB\*d\fR to complete the entry. (Entries created from
\fB\*d\fR.) \fBtic\fR duplicates the capabilities in
\fIentry\fR-\fIname\fR for the current entry, with the exception of
those capabilities that explicitly are defined in the current entry.
-
+.PP
When an entry, e.g., \fBentry_name_1\fR, contains a
\fBuse=\fR\fIentry\fR_\fIname\fR_\fI2\fR field, any canceled
capabilities in \fIentry\fR_\fIname\fR_\fI2\fR must also appear in
\fBentry_name_1\fR before \fBuse=\fR for these capabilities to be
canceled in \fBentry_name_1\fR.
-
+.PP
If the environment variable \fBTERMINFO\fR is set, the compiled
results are placed there instead of \fB\*d\fR.
-
+.PP
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)
@@ -252,7 +274,7 @@ Unlike the stock SVr4 \fBtic\fR 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 \fBterminfo\fR(\*n) for the list of
termcap names taken to be equivalent to terminfo names.
-
+.PP
The SVr4 manual pages are not clear on the resolution rules for \fBuse\fR
capabilities.
This implementation of \fBtic\fR will find \fBuse\fR targets anywhere
@@ -260,10 +282,10 @@ in the source file, or anywhere in the file tree rooted at \fBTERMINFO\fR (if
\fBTERMINFO\fR is defined), or in the user's \fI$HOME/.terminfo\fR directory
(if it exists), or (finally) anywhere in the system's file tree of
compiled entries.
-
+.PP
The error messages from this \fBtic\fR have the same format as GNU C
error messages, and can be parsed by GNU Emacs's compile facility.
-
+.PP
The
\fB-C\fR,
\fB-G\fR,
@@ -278,12 +300,13 @@ The
\fB-g\fR,
\fB-o\fR,
\fB-r\fR,
-\fB-s\fR and
+\fB-s\fR,
+\fB-t\fR and
\fB-x\fR
options
are not supported under SVr4.
-The SVr4 -c mode does not report bad use links.
-
+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 directory unless TERMINFO is explicitly set to it.
.SH FILES
@@ -291,8 +314,15 @@ System V does not compile entries to or read entries from your
\fB\*d/?/*\fR
Compiled terminal description database.
.SH SEE ALSO
-\fB@INFOCMP@\fR(1M), \fB@CAPTOINFO@\fR(1M), \fB@INFOTOCAP@\fR(1M),
-\fB@TOE@\fR(1M), \fBcurses\fR(3X), \fBterminfo\fR(\*n).
+\fB@INFOCMP@\fR(1M),
+\fB@CAPTOINFO@\fR(1M),
+\fB@INFOTOCAP@\fR(1M),
+\fB@TOE@\fR(1M),
+\fBcurses\fR(3X),
+\fBterminfo\fR(\*n).
+.PP
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/toe.1m b/contrib/ncurses/man/toe.1m
index 399cf614f3f3..1419674b3958 100644
--- a/contrib/ncurses/man/toe.1m
+++ b/contrib/ncurses/man/toe.1m
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2004,2006 Free 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,25 +26,29 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: toe.1m,v 1.10 2000/08/19 18:51:05 tom Exp $
+.\" $Id: toe.1m,v 1.18 2006/05/13 15:14:01 tom Exp $
.TH toe 1M ""
.ds n 5
.ds d @TERMINFO@
.SH NAME
\fBtoe\fR - table of (terminfo) entries
.SH SYNOPSIS
-\fBtoe\fR [\fB-v\fR[\fIn\fR]] [\fB-huUV\fR] \fIfile...\fR
+\fBtoe\fR [\fB-v\fR[\fIn\fR]] [\fB-ahuUV\fR] \fIfile...\fR
.br
.SH DESCRIPTION
.PP
With no options, \fBtoe\fR lists all available terminal types by primary name
with descriptions. File arguments specify the directories to be scanned; if no
such arguments are given, your default terminfo directory is scanned. If you
-also specify the -h option, a directory header will be issued as each
-directory is entered.
+also specify the \fB-h\fR option, a directory header will be issued as each
+directory is entered.
.PP
There are other options intended for use by terminfo file maintainers:
.TP
+\fB-a\fR
+report on all of the terminal databases which ncurses would search,
+rather than only the first one that it finds.
+.TP
\fB-u\fR \fIfile\fR
says to issue a report on dependencies in the given file. This report condenses
the `use' relation: each line consists of the primary name of a terminal that
@@ -60,10 +64,11 @@ whitespace-separated primary names of all terminals which depend on it,
followed by a newline.
.TP
\fB-v\fR\fIn\fR
-specifies that (verbose) output be written to standard error trace
-information showing \fBtoe\fR's progress. The optional integer
-\fIn\fR is a number from 1 to 10, interpreted as for \fBtic\fR(1).
-.TP 5
+specifies that (verbose) output be written to standard error,
+showing \fBtoe\fR's progress.
+The optional parameter \fIn\fR is a number from 1 to 10,
+interpreted as for \fBtic\fR(1).
+.TP
\fB-V\fR
reports the version of ncurses which was used in this program, and exits.
.SH FILES
@@ -71,8 +76,15 @@ reports the version of ncurses which was used in this program, and exits.
\fB\*d/?/*\fR
Compiled terminal description database.
.SH SEE ALSO
-\fB@TIC@\fR(1M), \fB@INFOCMP@\fR(1M), \fB@CAPTOINFO@\fR(1M),
-\fB@INFOTOCAP@\fR(1M), \fBcurses\fR(3X), \fBterminfo\fR(\*n).
+\fB@TIC@\fR(1M),
+\fB@INFOCMP@\fR(1M),
+\fB@CAPTOINFO@\fR(1M),
+\fB@INFOTOCAP@\fR(1M),
+\fBcurses\fR(3X),
+\fBterminfo\fR(\*n).
+.PP
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/tput.1 b/contrib/ncurses/man/tput.1
index 898df1e606f5..4de0b73a3a82 100644
--- a/contrib/ncurses/man/tput.1
+++ b/contrib/ncurses/man/tput.1
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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: tput.1,v 1.16 2000/09/09 20:43:33 tom Exp $
+.\" $Id: tput.1,v 1.25 2006/05/13 15:14:01 tom Exp $
.TH tput 1 ""
.ds d @TERMINFO@
-.ds n 5
+.ds n 1
.SH NAME
\fBtput\fR, \fBreset\fR - initialize a terminal or query terminfo database
.SH SYNOPSIS
@@ -50,14 +50,28 @@
The \fBtput\fR utility uses the \fBterminfo\fR database to make the
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. \fBtput\fR
-outputs a string if the attribute (\fIcap\fRability \fIname\fR) is of
-type string, or an integer if the attribute is of type integer. If
-the attribute is of type boolean, \fBtput\fR simply sets the exit code
-(\fB0\fR for TRUE if the terminal has the capability, \fB1\fR for
-FALSE if it does not), and produces no output. Before using a value
-returned on standard output, the user should test the exit code
-[\fB$?\fR, see \fBsh\fR(1)] to be sure it is \fB0\fR.
+return the long name of the requested terminal type.
+The result depends upon the capability's type:
+.RS
+.TP 5
+string
+\fBtput\fR writes the string to the standard output.
+No trailing newline is supplied.
+.TP
+integer
+\fBtput\fR writes the decimal value to the standard output,
+with a trailing newline.
+.TP
+boolean
+\fBtput\fR simply sets the exit code
+(\fB0\fR for TRUE if the terminal has the capability,
+\fB1\fR for FALSE if it does not),
+and writes nothing to the standard output.
+.RE
+.PP
+Before using a value returned on the standard output,
+the application should test the exit code
+(e.g., \fB$?\fR, see \fBsh\fR(1)) to be sure it is \fB0\fR.
(See the \fBEXIT CODES\fR and \fBDIAGNOSTICS\fR sections.)
For a complete list of capabilities
and the \fIcapname\fR associated with each, see \fBterminfo\fR(\*n).
@@ -70,22 +84,33 @@ variables \fBLINES\fR and \fBCOLUMNS\fR will be ignored,and the
operating system will not be queried for the actual screen size.
.TP
\fIcapname\fR
-indicates the attribute from the \fBterminfo\fR database. When
+indicates the capability from the \fBterminfo\fR database. When
\fBtermcap\fR support is compiled in, the \fBtermcap\fR name for
-the attribute is also accepted.
+the capability is also accepted.
.TP
\fIparms\fR
-If the attribute is a string that takes parameters, the arguments
-\fIparms\fR will be instantiated into the string. An all numeric
-argument will be passed to the attribute as a number.
+If the capability is a string that takes parameters, the arguments
+\fIparms\fR will be instantiated into the string.
+.IP
+Most parameters are numbers.
+Only a few terminfo capabilities require string parameters;
+\fBtput\fR uses a table to decide which to pass as strings.
+Normally \fBtput\fR uses \fBtparm\fR (3X) to perform the substitution.
+If no parameters are given for the capability,
+\fBtput\fR writes the string without performing the substitution.
.TP
\fB-S\fR
allows more than one capability per invocation of \fBtput\fR. The
capabilities must be passed to \fBtput\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
+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, \fBtput\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.
@@ -93,12 +118,28 @@ reports the version of ncurses which was used in this program, and exits.
\fBinit\fR
If the \fBterminfo\fR database is present and an entry for the user's
terminal exists (see \fB-T\fR\fItype\fR, above), the following will
-occur: (1) if present, the terminal's initialization strings will be
-output (\fBis1\fR, \fBis2\fR, \fBis3\fR, \fBif\fR, \fBiprog\fR), (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
+occur:
+.RS
+.TP
+(1)
+if present, the terminal's initialization strings will be
+output as detailed in the \fBterminfo\fR(5) section on
+.IR "Tabs and Initialization" ,
+.TP
+(2)
+any delays (e.g., newline) specified in the entry will
+be set in the tty driver,
+.TP
+(3)
+tabs expansion will be turned on or off according to
+the specification in the entry, and
+.TP
+(4)
+if tabs are not expanded,
+standard tabs will be set (every 8 spaces).
+.RE
+.IP
+If an entry does not
contain the information needed for any of the four above activities,
that activity will silently be skipped.
.TP
@@ -126,7 +167,7 @@ Initialize the terminal according to the type of
terminal in the environmental variable \fBTERM\fR. This
command should be included in everyone's .profile after
the environmental variable \fBTERM\fR has been exported, as
-illustrated on the \fBprofile\fR(4) manual page.
+illustrated on the \fBprofile\fR(5) manual page.
.TP 5
\fBtput -T5620 reset\fR
Reset an AT&T 5620 terminal, overriding the type of
@@ -158,6 +199,9 @@ Set exit code to indicate if the current terminal is a hard copy terminal.
\fBtput cup 23 4\fR
Send the sequence to move the cursor to row 23, column 4.
.TP 5
+\fBtput cup\fR
+Send the terminfo string for cursor-movement, with no parameters substituted.
+.TP 5
\fBtput longname\fR
Print the long name from the \fBterminfo\fR database for the
type of terminal specified in the environmental
@@ -176,59 +220,65 @@ variable \fBTERM\fR.
.RE
.TP 5
\&
-This example shows tput processing several capabilities in one
-invocation. This example clears the screen, moves the cursor to
-position 10, 10 and turns on bold (extra bright) mode. The list is
-terminated by an exclamation mark (\fB!\fR) on a line by itself.
+This example shows \fBtput\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.
+The list is terminated by an exclamation mark (\fB!\fR) on a line by itself.
.SH FILES
.TP
\fB\*d\fR
compiled terminal description database
.TP
-\fB/usr/include/curses.h\fR
-\fBcurses\fR(3X) header file
-.TP
-\fB/usr/include/term.h\fR
-\fBterminfo\fR header file
-.TP
\fB@DATADIR@/tabset/*\fR
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"
-section of \fBterminfo\fR(4)
-.SH SEE ALSO
-\fB@CLEAR@\fR(1), \fBstty\fR(1), \fBtabs\fR(\*n). \fBprofile\fR(\*n),
-\fBterminfo\fR(4) in the \fISystem\fR \fIAdministrator\fR'\fIs\fR
-\fIReference\fR \fIManual\fR. Chapter 10 of the
-\fIProgrammer\fR'\fIs\fR \fIGuide\fR.
+section of \fBterminfo\fR(5)
.SH EXIT CODES
-If \fIcapname\fR is of type boolean, a value of \fB0\fR is set for
-TRUE and \fB1\fR for FALSE unless the \fB-S\fR option is used.
-.PP
-If \fIcapname\fR is of type string, a value of \fB0\fR is set if the
-\fIcapname\fR is defined for this terminal \fItype\fR (the value of
-\fIcapname\fR is returned on standard output); a value of \fB1\fR is
-set if \fIcapname\fR is not defined for this terminal \fItype\fR (a
-null value is returned on standard output).
-.PP
-If \fIcapname\fR is of type boolean or string and the \fB-S\fR option
-is used, a value of \fB0\fR is returned to indicate that all lines
-were successful. No indication of which line failed can be given so
+If the \fB-S\fR option is used,
+\fBtput\fR 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 \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
\fB4\fR retain their usual interpretation.
-.PP
-If \fIcapname\fR is of type integer, a value of \fB0\fR is always set,
+If the \fB-S\fR option is not used,
+the exit code depends on the type of \fIcapname\fR:
+.RS 5
+.TP
+.I boolean
+a value of \fB0\fR is set for TRUE and \fB1\fR for FALSE.
+.TP
+.I string
+a value of \fB0\fR is set if the
+\fIcapname\fR is defined for this terminal \fItype\fR (the value of
+\fIcapname\fR is returned on standard output);
+a value of \fB1\fR is set if \fIcapname\fR
+is not defined for this terminal \fItype\fR
+(nothing is written to standard output).
+.TP
+.I integer
+a value of \fB0\fR is always set,
whether or not \fIcapname\fR is defined for this terminal \fItype\fR.
To determine if \fIcapname\fR is defined for this terminal \fItype\fR,
-the user must test the value of standard output. A value of \fB-1\fR
+the user must test the value written to standard output.
+A value of \fB-1\fR
means that \fIcapname\fR is not defined for this terminal \fItype\fR.
+.TP
+.I other
+\fBreset\fR or \fBinit\fR may fail to find their respective files.
+In that case, the exit code is set to 4 + \fBerrno\fR.
+.RE
.PP
Any other exit code indicates an error; see the DIAGNOSTICS section.
.SH DIAGNOSTICS
\fBtput\fR prints the following error messages and sets the corresponding exit
codes.
.PP
+.ne 15
.TS
l l.
exit code error message
@@ -242,12 +292,31 @@ T}
\fB2\fR usage error
\fB3\fR unknown terminal \fItype\fR or no \fBterminfo\fR database
\fB4\fR unknown \fBterminfo\fR capability \fIcapname\fR
+\fB>4\fR error occurred in -S
=
.TE
.SH PORTABILITY
+.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.
+.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 \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.
+A few platforms such as FreeBSD and NetBSD recognize termcap names rather
+than terminfo capability names in their respective \fBtput\fP commands.
+.SH SEE ALSO
+\fB@CLEAR@\fR(1),
+\fBstty\fR(1),
+\fBtabs\fR(\*n),
+\fBterminfo\fR(5).
+.PP
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
diff --git a/contrib/ncurses/man/tset.1 b/contrib/ncurses/man/tset.1
index 897d9edb5446..93e7c38580c7 100644
--- a/contrib/ncurses/man/tset.1
+++ b/contrib/ncurses/man/tset.1
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2005,2006 Free 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,14 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tset.1,v 1.12 2000/09/09 20:33:07 tom Exp $
+.\" $Id: tset.1,v 1.18 2006/07/29 11:34:07 tom Exp $
.TH tset 1 ""
.SH NAME
\fBtset\fR, \fBreset\fR - terminal initialization
.SH SYNOPSIS
-tset [-IQVqrs] [-] [-e \fIch\fR] [-i \fIch\fR] [-k \fIch\fR] [-m \fImapping\fR] [\fIterminal\fR]
+\fBtset\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
-reset [-IQVqrs] [-] [-e \fIch\fR] [-i \fIch\fR] [-k \fIch\fR] [-m \fImapping\fR] [\fIterminal\fR]
+\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]
.SH DESCRIPTION
\&\fBTset\fR initializes terminals.
\fBTset\fR first determines the type of terminal that you are using.
@@ -50,8 +50,10 @@ System-V-like UNIXes, \fIgetty\fR does this job by setting
.PP
4. The default terminal type, ``unknown''.
.PP
-If the terminal type was not specified on the command-line, the -m
-option mappings are then applied (see below for more information).
+If the terminal type was not specified on the command-line, the \fB-m\fR
+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
response confirms the type, or, another type can be entered to specify
@@ -65,6 +67,9 @@ and tab initialization 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 \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, \fBtset\fR sets cooked and echo modes,
turns off cbreak and raw modes, turns on newline translation and
@@ -72,68 +77,82 @@ 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
-
+.sp
\fB<LF>reset<LF>\fR
-
+.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.
Also, the terminal will often not echo the command.
.PP
The options are as follows:
.TP 5
--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.
-.TP 5
--e
+.B -c
+Set control characters and modes.
+.B -e
Set the erase character to \fIch\fR.
-.TP 5
--I
+.TP
+.B -I
Do not send the terminal or tab initialization strings to the terminal.
-.TP 5
--Q
-Don't display any values for the erase, interrupt and line kill characters.
.TP
-\fB-V\fR
-reports the version of ncurses which was used in this program, and exits.
-.TP 5
--i
+.B -i
Set the interrupt character to \fIch\fR.
-.TP 5
--k
+.TP
+.B -k
Set the line kill character to \fIch\fR.
-.TP 5
--m
+.TP
+.B -m
Specify a mapping from a port type to a terminal.
-See below for more information.
-.TP 5
--r
+See the section
+.B TERMINAL TYPE MAPPING
+for more information.
+.TP
+.B -Q
+Do not display any values for the erase, interrupt and line kill characters.
+Normally \fBtset\fR displays the values for control characters which
+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.
+.TP
+.B -r
Print the terminal type to the standard error output.
-.TP 5
--s
+.TP
+.B -s
Print the sequence of shell commands to initialize the environment variable
\fBTERM\fR to the standard output.
-See the section below on setting the environment for details.
+See the section
+.B SETTING THE ENVIRONMENT
+for details.
+.TP
+.B -V
+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.
+Normally this has no effect,
+unless \fBsetupterm\fP is not able to detect the window size.
.PP
-The arguments for the -e, -i, and -k
+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'
notation, i.e. control-h may be specified as ``^H'' or ``^h''.
+.
.SH SETTING THE ENVIRONMENT
It is often desirable to enter the terminal type and information about
the terminal's capabilities into the shell's environment.
-This is done using the -s option.
+This is done using the \fB-s\fR option.
.PP
-When the -s option is specified, the commands to enter the information
+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
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
or \fB.profile\fR files will initialize the environment correctly:
-
+.sp
eval \`tset -s options ... \`
-
+.
.SH TERMINAL TYPE MAPPING
When the terminal is not hardwired into the system (or the current
system information is incorrect) the terminal type derived from the
@@ -142,13 +161,13 @@ something generic like \fBnetwork\fR, \fBdialup\fR, or \fBunknown\fR.
When \fBtset\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 -m option is to map
+The purpose of the \fB-m\fR option is to map
from some set of conditions to a terminal type, that is, to
tell \fBtset\fR
``If I'm on this port at a particular speed, guess that I'm on that
kind of terminal''.
.PP
-The argument to the -m option consists of an optional port type, an
+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
string (delimited by either the operator or the colon character). The
@@ -159,7 +178,7 @@ 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.
.PP
-If the terminal type is not specified on the command line, the -m
+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
rate match the mapping, the terminal type specified in the mapping
replaces the current type. If more than one mapping is specified, the
@@ -181,9 +200,9 @@ 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.
.PP
-No whitespace characters are permitted in the -m option argument.
+No whitespace characters are permitted in the \fB-m\fR option argument.
Also, to avoid problems with meta-characters, it is suggested that the
-entire -m option argument be placed within single quote characters,
+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
@@ -197,8 +216,8 @@ can set \fBTERM\fR appropriately for each dial-up line; this obviates what was
\fBtset\fR's most important use). This implementation behaves like 4.4BSD
tset, with a few exceptions specified here.
.PP
-The -S option of BSD tset no longer works; it prints an error message to stderr
-and dies. The -s option only sets \fBTERM\fR, not \fBTERMCAP\fP. Both these
+The \fB-S\fR option of BSD tset no longer works; it prints an error message to stderr
+and dies. The \fB-s\fR option only sets \fBTERM\fR, not \fBTERMCAP\fP. Both these
changes are because the \fBTERMCAP\fR variable is no longer supported under
terminfo-based \fBncurses\fR, which makes \fBtset -S\fR useless (we made it die
noisily rather than silently induce lossage).
@@ -207,44 +226,63 @@ 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.
.PP
-The -A, -E, -h, -u and -v options were deleted from the \fBtset\fR
-utility in 4.4BSD. None of them were documented in 4.3BSD and all are
-of limited utility at best. The -a, -d, and -p options are similarly
+The \fB-A\fR, \fB-E\fR, \fB-h\fR, \fB-u\fR and \fB-v\fR
+options were deleted from the \fBtset\fR
+utility in 4.4BSD.
+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
-three options be changed to use the -m option instead. The
--n option remains, but has no effect. The -adnp options are therefore
+three options be changed to use the \fB-m\fR option instead. The
+-n option remains, but has no effect. The \fB-adnp\fR options are therefore
omitted from the usage summary above.
.PP
-It is still permissible to specify the -e, -i, and -k options without
+It is still permissible to specify the \fB-e\fR, \fB-i\fR, and \fB-k\fR options without
arguments, although it is strongly recommended that such usage be fixed to
explicitly specify the character.
.PP
-As of 4.4BSD, executing \fBtset\fR as \fBreset\fR no longer implies the -Q
+As of 4.4BSD, executing \fBtset\fR as \fBreset\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 \fBtset\fR has been removed.
.SH ENVIRONMENT
-The \fBtset\fR command uses the \fBSHELL\fR and \fBTERM\fR
-environment variables.
+The \fBtset\fR command uses these environment variables:
+.TP 5
+SHELL
+tells \fBtset\fP whether to initialize \fBTERM\fP using \fBsh\fP or
+\fBcsh\fP syntax.
+.TP 5
+TERM
+Denotes your terminal type.
+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 `/',
+\fBtset\fP removes the variable from the environment before looking
+for the terminal description.
.SH FILES
.TP 5
/etc/ttys
system port name to terminal type mapping database (BSD versions only).
-.TP 5
+.TP
@TERMINFO@
terminal capability database
.SH SEE ALSO
csh(1),
sh(1),
stty(1),
+setupterm(3X),
tty(4),
-termcap(5),
+terminfo(5),
ttys(5),
environ(7)
+.PP
+This describes \fBncurses\fR
+version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
.\"# mode:nroff
.\"# fill-column:79
.\"# End:
-
diff --git a/contrib/ncurses/man/wresize.3x b/contrib/ncurses/man/wresize.3x
index 62933f1a153d..4d05d3ee7069 100644
--- a/contrib/ncurses/man/wresize.3x
+++ b/contrib/ncurses/man/wresize.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998,2002 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2003,2006 Free 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,15 +26,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" Author: Thomas E. Dickey <dickey@clark.net> 1996
+.\" Author: Thomas E. Dickey 1996
.\"
-.\" $Id: wresize.3x,v 1.7 2002/02/16 22:40:59 tom Exp $
+.\" $Id: wresize.3x,v 1.9 2006/02/25 21:47:06 tom Exp $
.TH wresize 3X ""
.SH NAME
\fBwresize\fR - resize a curses window
.SH SYNOPSIS
\fB#include <curses.h>\fR
-
+.sp
\fBint wresize(WINDOW *win, int lines, int columns);\fR
.SH DESCRIPTION
The \fBwresize\fR function reallocates storage for an \fBncurses\fR
diff --git a/contrib/ncurses/menu/Makefile.in b/contrib/ncurses/menu/Makefile.in
index b5c7b68cbd46..8c3aa6268cbf 100644
--- a/contrib/ncurses/menu/Makefile.in
+++ b/contrib/ncurses/menu/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.36 2002/01/20 01:49:17 tom Exp $
+# $Id: Makefile.in,v 1.43 2006/10/14 20:40:36 tom Exp $
##############################################################################
-# Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2004,2006 Free Software 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,6 +45,9 @@
SHELL = /bin/sh
THIS = Makefile
+x = @EXEEXT@
+o = .@OBJEXT@
+
MODEL = @DFT_LWR_MODEL@
DESTDIR = @DESTDIR@
srcdir = @srcdir@
@@ -55,10 +58,15 @@ libdir = @libdir@
includedir = @includedir@
LIBTOOL = @LIBTOOL@
+LIBTOOL_CLEAN = @LIB_CLEAN@
+LIBTOOL_COMPILE = @LIB_COMPILE@
+LIBTOOL_LINK = @LIB_LINK@
+LIBTOOL_INSTALL = @LIB_INSTALL@
+LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
-INSTALL_PROG = @INSTALL_PROG@
+INSTALL_PROG = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
AR = @AR@
@@ -71,8 +79,7 @@ CC = @CC@
CPP = @CPP@
CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@ \
- -DHAVE_CONFIG_H
+CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
@@ -84,7 +91,7 @@ CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
-LINK = $(LIBTOOL) $(CC)
+LINK = $(LIBTOOL_LINK) $(CC)
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
@@ -97,7 +104,7 @@ NCURSES_MINOR = @NCURSES_MINOR@
REL_VERSION = @cf_cv_rel_version@
ABI_VERSION = @cf_cv_abi_version@
-RANLIB = @RANLIB@
+RANLIB = @LIB_PREP@
IMPORT_LIB = @IMPORT_LIB@
SHARED_LIB = @SHARED_LIB@
diff --git a/contrib/ncurses/menu/READ.ME b/contrib/ncurses/menu/READ.ME
index 3fd5627445e7..10ff5b0114fb 100644
--- a/contrib/ncurses/menu/READ.ME
+++ b/contrib/ncurses/menu/READ.ME
@@ -1,3 +1,33 @@
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998-2003,2006 Free Software 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: READ.ME,v 1.9 2006/04/22 23:13:05 tom Exp $
+-------------------------------------------------------------------------------
+
This is a clone of the menu library that is available with typical
System V curses implementations (ETI).
@@ -10,5 +40,3 @@ For things that still need doing, see the TO-DO file in the top-level
directory.
Juergen Pfeifer
-
-eMail: juergen.pfeifer@gmx.net
diff --git a/contrib/ncurses/menu/eti.h b/contrib/ncurses/menu/eti.h
index 4561fa441df3..baa6190d8f84 100644
--- a/contrib/ncurses/menu/eti.h
+++ b/contrib/ncurses/menu/eti.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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 *
@@ -27,9 +27,11 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+/* $Id: eti.h,v 1.8 2003/10/25 15:24:29 tom Exp $ */
+
#ifndef NCURSES_ETI_H_incl
#define NCURSES_ETI_H_incl 1
diff --git a/contrib/ncurses/menu/llib-lmenu b/contrib/ncurses/menu/llib-lmenu
index 3f421c1113b2..fc17cc364d42 100644
--- a/contrib/ncurses/menu/llib-lmenu
+++ b/contrib/ncurses/menu/llib-lmenu
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2002,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 *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1999 *
+ * Author: Thomas E. Dickey 1996-2002,2005 *
****************************************************************************/
/* LINTLIBRARY */
@@ -122,16 +122,21 @@ MENU _nc_Default_Menu;
ITEM _nc_Default_Item;
#undef _nc_Connect_Items
-bool _nc_Connect_Items(
+NCURSES_BOOL _nc_Connect_Items(
MENU *menu,
ITEM **items)
- { return(*(bool *)0); }
+ { return(*(NCURSES_BOOL *)0); }
#undef _nc_Disconnect_Items
void _nc_Disconnect_Items(
MENU *menu)
{ /* void */ }
+#undef _nc_Calculate_Text_Width
+int _nc_Calculate_Text_Width(
+ const TEXT *item)
+ { return(*(int *)0); }
+
#undef _nc_Calculate_Item_Length_and_Width
void _nc_Calculate_Item_Length_and_Width(
MENU *menu)
@@ -310,20 +315,20 @@ void *item_userptr(
#undef set_item_value
int set_item_value(
ITEM *item,
- bool value)
+ NCURSES_BOOL value)
{ return(*(int *)0); }
#undef item_value
-bool item_value(
+NCURSES_BOOL item_value(
const ITEM *item)
- { return(*(bool *)0); }
+ { return(*(NCURSES_BOOL *)0); }
/* ./m_item_vis.c */
#undef item_visible
-bool item_visible(
+NCURSES_BOOL item_visible(
const ITEM *item)
- { return(*(bool *)0); }
+ { return(*(NCURSES_BOOL *)0); }
/* ./m_items.c */
@@ -481,6 +486,38 @@ WINDOW *menu_sub(
const MENU *menu)
{ return(*(WINDOW **)0); }
+/* ./m_trace.c */
+
+#undef _nc_retrace_item
+ITEM *_nc_retrace_item(
+ ITEM *code)
+ { return(*(ITEM **)0); }
+
+#undef _nc_retrace_item_ptr
+ITEM **_nc_retrace_item_ptr(
+ ITEM **code)
+ { return(*(ITEM ***)0); }
+
+#undef _nc_retrace_item_opts
+Item_Options _nc_retrace_item_opts(
+ Item_Options code)
+ { return(*(Item_Options *)0); }
+
+#undef _nc_retrace_menu
+MENU *_nc_retrace_menu(
+ MENU *code)
+ { return(*(MENU **)0); }
+
+#undef _nc_retrace_menu_hook
+Menu_Hook _nc_retrace_menu_hook(
+ Menu_Hook code)
+ { return(*(Menu_Hook *)0); }
+
+#undef _nc_retrace_menu_opts
+Menu_Options _nc_retrace_menu_opts(
+ Menu_Options code)
+ { return(*(Menu_Options *)0); }
+
/* ./m_userptr.c */
#undef set_menu_userptr
diff --git a/contrib/ncurses/menu/llib-lmenuw b/contrib/ncurses/menu/llib-lmenuw
new file mode 100644
index 000000000000..d21fb9488499
--- /dev/null
+++ b/contrib/ncurses/menu/llib-lmenuw
@@ -0,0 +1,547 @@
+/****************************************************************************
+ * Copyright (c) 2002,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 *
+ * "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 2002,2005 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./m_attribs.c */
+
+#include "menu.priv.h"
+
+#undef set_menu_fore
+int set_menu_fore(
+ MENU *menu,
+ chtype attr)
+ { return(*(int *)0); }
+
+#undef menu_fore
+chtype menu_fore(
+ const MENU *menu)
+ { return(*(chtype *)0); }
+
+#undef set_menu_back
+int set_menu_back(
+ MENU *menu,
+ chtype attr)
+ { return(*(int *)0); }
+
+#undef menu_back
+chtype menu_back(
+ const MENU *menu)
+ { return(*(chtype *)0); }
+
+#undef set_menu_grey
+int set_menu_grey(
+ MENU *menu,
+ chtype attr)
+ { return(*(int *)0); }
+
+#undef menu_grey
+chtype menu_grey(
+ const MENU *menu)
+ { return(*(chtype *)0); }
+
+/* ./m_cursor.c */
+
+#undef _nc_menu_cursor_pos
+int _nc_menu_cursor_pos(
+ const MENU *menu,
+ const ITEM *item,
+ int *pY,
+ int *pX)
+ { return(*(int *)0); }
+
+#undef pos_menu_cursor
+int pos_menu_cursor(
+ const MENU *menu)
+ { return(*(int *)0); }
+
+/* ./m_driver.c */
+
+#undef _nc_Match_Next_Character_In_Item_Name
+int _nc_Match_Next_Character_In_Item_Name(
+ MENU *menu,
+ int ch,
+ ITEM **item)
+ { return(*(int *)0); }
+
+#undef menu_driver
+int menu_driver(
+ MENU *menu,
+ int c)
+ { return(*(int *)0); }
+
+/* ./m_format.c */
+
+#undef set_menu_format
+int set_menu_format(
+ MENU *menu,
+ int rows,
+ int cols)
+ { return(*(int *)0); }
+
+#undef menu_format
+void menu_format(
+ const MENU *menu,
+ int *rows,
+ int *cols)
+ { /* void */ }
+
+/* ./m_global.c */
+
+#undef _nc_Default_Menu
+MENU _nc_Default_Menu;
+#undef _nc_Default_Item
+ITEM _nc_Default_Item;
+
+#undef _nc_Connect_Items
+NCURSES_BOOL _nc_Connect_Items(
+ MENU *menu,
+ ITEM **items)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_Disconnect_Items
+void _nc_Disconnect_Items(
+ MENU *menu)
+ { /* void */ }
+
+#undef _nc_Calculate_Text_Width
+int _nc_Calculate_Text_Width(
+ const TEXT *item)
+ { return(*(int *)0); }
+
+#undef _nc_Calculate_Item_Length_and_Width
+void _nc_Calculate_Item_Length_and_Width(
+ MENU *menu)
+ { /* void */ }
+
+#undef _nc_Link_Items
+void _nc_Link_Items(
+ MENU *menu)
+ { /* void */ }
+
+#undef _nc_Show_Menu
+void _nc_Show_Menu(
+ const MENU *menu)
+ { /* void */ }
+
+#undef _nc_New_TopRow_and_CurrentItem
+void _nc_New_TopRow_and_CurrentItem(
+ MENU *menu,
+ int new_toprow,
+ ITEM *new_current_item)
+ { /* void */ }
+
+/* ./m_hook.c */
+
+#undef set_menu_init
+int set_menu_init(
+ MENU *menu,
+ Menu_Hook func)
+ { return(*(int *)0); }
+
+#undef menu_init
+Menu_Hook menu_init(
+ const MENU *menu)
+ { return(*(Menu_Hook *)0); }
+
+#undef set_menu_term
+int set_menu_term(
+ MENU *menu,
+ Menu_Hook func)
+ { return(*(int *)0); }
+
+#undef menu_term
+Menu_Hook menu_term(
+ const MENU *menu)
+ { return(*(Menu_Hook *)0); }
+
+#undef set_item_init
+int set_item_init(
+ MENU *menu,
+ Menu_Hook func)
+ { return(*(int *)0); }
+
+#undef item_init
+Menu_Hook item_init(
+ const MENU *menu)
+ { return(*(Menu_Hook *)0); }
+
+#undef set_item_term
+int set_item_term(
+ MENU *menu,
+ Menu_Hook func)
+ { return(*(int *)0); }
+
+#undef item_term
+Menu_Hook item_term(
+ const MENU *menu)
+ { return(*(Menu_Hook *)0); }
+
+/* ./m_item_cur.c */
+
+#undef set_current_item
+int set_current_item(
+ MENU *menu,
+ ITEM *item)
+ { return(*(int *)0); }
+
+#undef current_item
+ITEM *current_item(
+ const MENU *menu)
+ { return(*(ITEM **)0); }
+
+#undef item_index
+int item_index(
+ const ITEM *item)
+ { return(*(int *)0); }
+
+/* ./m_item_nam.c */
+
+#undef item_name
+const char *item_name(
+ const ITEM *item)
+ { return(*(const char **)0); }
+
+#undef item_description
+const char *item_description(
+ const ITEM *item)
+ { return(*(const char **)0); }
+
+/* ./m_item_new.c */
+
+#include <wctype.h>
+
+#undef new_item
+ITEM *new_item(
+ const char *name,
+ const char *description)
+ { return(*(ITEM **)0); }
+
+#undef free_item
+int free_item(
+ ITEM *item)
+ { return(*(int *)0); }
+
+#undef set_menu_mark
+int set_menu_mark(
+ MENU *menu,
+ const char *mark)
+ { return(*(int *)0); }
+
+#undef menu_mark
+const char *menu_mark(
+ const MENU *menu)
+ { return(*(const char **)0); }
+
+/* ./m_item_opt.c */
+
+#undef set_item_opts
+int set_item_opts(
+ ITEM *item,
+ Item_Options opts)
+ { return(*(int *)0); }
+
+#undef item_opts_off
+int item_opts_off(
+ ITEM *item,
+ Item_Options opts)
+ { return(*(int *)0); }
+
+#undef item_opts_on
+int item_opts_on(
+ ITEM *item,
+ Item_Options opts)
+ { return(*(int *)0); }
+
+#undef item_opts
+Item_Options item_opts(
+ const ITEM *item)
+ { return(*(Item_Options *)0); }
+
+/* ./m_item_top.c */
+
+#undef set_top_row
+int set_top_row(
+ MENU *menu,
+ int row)
+ { return(*(int *)0); }
+
+#undef top_row
+int top_row(
+ const MENU *menu)
+ { return(*(int *)0); }
+
+/* ./m_item_use.c */
+
+#undef set_item_userptr
+int set_item_userptr(
+ ITEM *item,
+ void *userptr)
+ { return(*(int *)0); }
+
+#undef item_userptr
+void *item_userptr(
+ const ITEM *item)
+ { return(*(void **)0); }
+
+/* ./m_item_val.c */
+
+#undef set_item_value
+int set_item_value(
+ ITEM *item,
+ NCURSES_BOOL value)
+ { return(*(int *)0); }
+
+#undef item_value
+NCURSES_BOOL item_value(
+ const ITEM *item)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./m_item_vis.c */
+
+#undef item_visible
+NCURSES_BOOL item_visible(
+ const ITEM *item)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./m_items.c */
+
+#undef set_menu_items
+int set_menu_items(
+ MENU *menu,
+ ITEM **items)
+ { return(*(int *)0); }
+
+#undef menu_items
+ITEM **menu_items(
+ const MENU *menu)
+ { return(*(ITEM ***)0); }
+
+#undef item_count
+int item_count(
+ const MENU *menu)
+ { return(*(int *)0); }
+
+/* ./m_new.c */
+
+#undef new_menu
+MENU *new_menu(
+ ITEM **items)
+ { return(*(MENU **)0); }
+
+#undef free_menu
+int free_menu(
+ MENU *menu)
+ { return(*(int *)0); }
+
+/* ./m_opts.c */
+
+#undef set_menu_opts
+int set_menu_opts(
+ MENU *menu,
+ Menu_Options opts)
+ { return(*(int *)0); }
+
+#undef menu_opts_off
+int menu_opts_off(
+ MENU *menu,
+ Menu_Options opts)
+ { return(*(int *)0); }
+
+#undef menu_opts_on
+int menu_opts_on(
+ MENU *menu,
+ Menu_Options opts)
+ { return(*(int *)0); }
+
+#undef menu_opts
+Menu_Options menu_opts(
+ const MENU *menu)
+ { return(*(Menu_Options *)0); }
+
+/* ./m_pad.c */
+
+#undef set_menu_pad
+int set_menu_pad(
+ MENU *menu,
+ int pad)
+ { return(*(int *)0); }
+
+#undef menu_pad
+int menu_pad(
+ const MENU *menu)
+ { return(*(int *)0); }
+
+/* ./m_pattern.c */
+
+#undef menu_pattern
+char *menu_pattern(
+ const MENU *menu)
+ { return(*(char **)0); }
+
+#undef set_menu_pattern
+int set_menu_pattern(
+ MENU *menu,
+ const char *p)
+ { return(*(int *)0); }
+
+/* ./m_post.c */
+
+#undef _nc_Post_Item
+void _nc_Post_Item(
+ const MENU *menu,
+ const ITEM *item)
+ { /* void */ }
+
+#undef _nc_Draw_Menu
+void _nc_Draw_Menu(
+ const MENU *menu)
+ { /* void */ }
+
+#undef post_menu
+int post_menu(
+ MENU *menu)
+ { return(*(int *)0); }
+
+#undef unpost_menu
+int unpost_menu(
+ MENU *menu)
+ { return(*(int *)0); }
+
+/* ./m_req_name.c */
+
+#undef menu_request_name
+const char *menu_request_name(
+ int request)
+ { return(*(const char **)0); }
+
+#undef menu_request_by_name
+int menu_request_by_name(
+ const char *str)
+ { return(*(int *)0); }
+
+/* ./m_scale.c */
+
+#undef scale_menu
+int scale_menu(
+ const MENU *menu,
+ int *rows,
+ int *cols)
+ { return(*(int *)0); }
+
+/* ./m_spacing.c */
+
+#undef set_menu_spacing
+int set_menu_spacing(
+ MENU *menu,
+ int s_desc,
+ int s_row,
+ int s_col)
+ { return(*(int *)0); }
+
+#undef menu_spacing
+int menu_spacing(
+ const MENU *menu,
+ int *s_desc,
+ int *s_row,
+ int *s_col)
+ { return(*(int *)0); }
+
+/* ./m_sub.c */
+
+#undef set_menu_sub
+int set_menu_sub(
+ MENU *menu,
+ WINDOW *win)
+ { return(*(int *)0); }
+
+#undef menu_sub
+WINDOW *menu_sub(
+ const MENU *menu)
+ { return(*(WINDOW **)0); }
+
+/* ./m_trace.c */
+
+#undef _nc_retrace_item
+ITEM *_nc_retrace_item(
+ ITEM *code)
+ { return(*(ITEM **)0); }
+
+#undef _nc_retrace_item_ptr
+ITEM **_nc_retrace_item_ptr(
+ ITEM **code)
+ { return(*(ITEM ***)0); }
+
+#undef _nc_retrace_item_opts
+Item_Options _nc_retrace_item_opts(
+ Item_Options code)
+ { return(*(Item_Options *)0); }
+
+#undef _nc_retrace_menu
+MENU *_nc_retrace_menu(
+ MENU *code)
+ { return(*(MENU **)0); }
+
+#undef _nc_retrace_menu_hook
+Menu_Hook _nc_retrace_menu_hook(
+ Menu_Hook code)
+ { return(*(Menu_Hook *)0); }
+
+#undef _nc_retrace_menu_opts
+Menu_Options _nc_retrace_menu_opts(
+ Menu_Options code)
+ { return(*(Menu_Options *)0); }
+
+/* ./m_userptr.c */
+
+#undef set_menu_userptr
+int set_menu_userptr(
+ MENU *menu,
+ void *userptr)
+ { return(*(int *)0); }
+
+#undef menu_userptr
+void *menu_userptr(
+ const MENU *menu)
+ { return(*(void **)0); }
+
+/* ./m_win.c */
+
+#undef set_menu_win
+int set_menu_win(
+ MENU *menu,
+ WINDOW *win)
+ { return(*(int *)0); }
+
+#undef menu_win
+WINDOW *menu_win(
+ const MENU *menu)
+ { return(*(WINDOW **)0); }
diff --git a/contrib/ncurses/menu/m_attribs.c b/contrib/ncurses/menu/m_attribs.c
index 4c87a94ce026..1126ffb84f5a 100644
--- a/contrib/ncurses/menu/m_attribs.c
+++ b/contrib/ncurses/menu/m_attribs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_attribs.c,v 1.9 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_attribs.c,v 1.14 2004/12/11 23:29:12 tom Exp $")
/* Macro to redraw menu if it is posted and changed */
#define Refresh_Menu(menu) \
@@ -51,6 +51,7 @@ MODULE_ID("$Id: m_attribs.c,v 1.9 2000/12/10 02:16:48 tom Exp $")
#define GEN_MENU_ATTR_SET_FCT( name ) \
NCURSES_IMPEXP int NCURSES_API set_menu_ ## name (MENU * menu, chtype attr)\
{\
+ T((T_CALLED("set_menu_" #name "(%p,%s)"), menu, _traceattr(attr)));\
if (!(attr==A_NORMAL || (attr & A_ATTRIBUTES)==attr))\
RETURN(E_BAD_ARGUMENT);\
if (menu && ( menu -> name != attr))\
@@ -62,11 +63,12 @@ NCURSES_IMPEXP int NCURSES_API set_menu_ ## name (MENU * menu, chtype attr)\
RETURN(E_OK);\
}
-/* "Template" macro to generate a function to get a menus attribute */
+/* "Template" macro to generate a function to get a menu's attribute */
#define GEN_MENU_ATTR_GET_FCT( name ) \
NCURSES_IMPEXP chtype NCURSES_API menu_ ## name (const MENU * menu)\
{\
- return (Normalize_Menu( menu ) -> name);\
+ T((T_CALLED("menu_" #name "(%p)"), menu));\
+ returnAttr(Normalize_Menu( menu ) -> name);\
}
/*---------------------------------------------------------------------------
@@ -74,14 +76,14 @@ NCURSES_IMPEXP chtype NCURSES_API menu_ ## name (const MENU * menu)\
| Function : int set_menu_fore(MENU *menu, chtype attr)
|
| Description : Set the attribute for selectable items. In single-
-| valued menus thiis is used to highlight the current
+| valued menus this is used to highlight the current
| item ((i.e. where the cursor is), in multi-valued
| menus this is used to highlight the selected items.
|
| Return Values : E_OK - success
| E_BAD_ARGUMENT - an invalid value has been passed
+--------------------------------------------------------------------------*/
-GEN_MENU_ATTR_SET_FCT( fore )
+GEN_MENU_ATTR_SET_FCT(fore)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -93,7 +95,7 @@ GEN_MENU_ATTR_SET_FCT( fore )
|
| Return Values : Attribute value
+--------------------------------------------------------------------------*/
-GEN_MENU_ATTR_GET_FCT( fore )
+GEN_MENU_ATTR_GET_FCT(fore)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -105,7 +107,7 @@ GEN_MENU_ATTR_GET_FCT( fore )
| Return Values : E_OK - success
| E_BAD_ARGUMENT - an invalid value has been passed
+--------------------------------------------------------------------------*/
-GEN_MENU_ATTR_SET_FCT( back )
+GEN_MENU_ATTR_SET_FCT(back)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -116,7 +118,7 @@ GEN_MENU_ATTR_SET_FCT( back )
|
| Return Values : Attribute value
+--------------------------------------------------------------------------*/
-GEN_MENU_ATTR_GET_FCT( back )
+GEN_MENU_ATTR_GET_FCT(back)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -127,7 +129,7 @@ GEN_MENU_ATTR_GET_FCT( back )
| Return Values : E_OK - success
| E_BAD_ARGUMENT - an invalid value has been passed
+--------------------------------------------------------------------------*/
-GEN_MENU_ATTR_SET_FCT( grey )
+GEN_MENU_ATTR_SET_FCT(grey)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -137,5 +139,5 @@ GEN_MENU_ATTR_SET_FCT( grey )
|
| Return Values : Attribute value
+--------------------------------------------------------------------------*/
-GEN_MENU_ATTR_GET_FCT( grey )
+GEN_MENU_ATTR_GET_FCT(grey)
/* m_attribs.c ends here */
diff --git a/contrib/ncurses/menu/m_cursor.c b/contrib/ncurses/menu/m_cursor.c
index ccca36cea233..0293f9073c32 100644
--- a/contrib/ncurses/menu/m_cursor.c
+++ b/contrib/ncurses/menu/m_cursor.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,17 +27,17 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
* Module m_cursor *
-* Correctly position a menus cursor *
+* Correctly position a menu's cursor *
***************************************************************************/
#include "menu.priv.h"
-MODULE_ID("$Id: m_cursor.c,v 1.14 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_cursor.c,v 1.20 2005/10/22 23:03:32 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -50,24 +50,23 @@ MODULE_ID("$Id: m_cursor.c,v 1.14 2000/12/10 02:16:48 tom Exp $")
| E_NOT_POSTED - Menu is not posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-_nc_menu_cursor_pos
-(const MENU* menu, const ITEM* item, int* pY, int* pX)
+_nc_menu_cursor_pos(const MENU * menu, const ITEM * item, int *pY, int *pX)
{
if (!menu || !pX || !pY)
- return(E_BAD_ARGUMENT);
+ return (E_BAD_ARGUMENT);
else
{
- if ((ITEM*)0 == item)
+ if ((ITEM *) 0 == item)
item = menu->curitem;
- assert(item!=(ITEM*)0);
+ assert(item != (ITEM *) 0);
- if ( !( menu->status & _POSTED ) )
- return(E_NOT_POSTED);
+ if (!(menu->status & _POSTED))
+ return (E_NOT_POSTED);
*pX = item->x * (menu->spc_cols + menu->itemlen);
*pY = (item->y - menu->toprow) * menu->spc_rows;
}
- return(E_OK);
+ return (E_OK);
}
/*---------------------------------------------------------------------------
@@ -81,24 +80,26 @@ _nc_menu_cursor_pos
| E_NOT_POSTED - Menu is not posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-pos_menu_cursor (const MENU * menu)
+pos_menu_cursor(const MENU * menu)
{
WINDOW *win, *sub;
- int x, y;
- int err = _nc_menu_cursor_pos(menu,(ITEM*)0,&y,&x);
+ int x = 0, y = 0;
+ int err = _nc_menu_cursor_pos(menu, (ITEM *) 0, &y, &x);
- if (E_OK==err)
+ T((T_CALLED("pos_menu_cursor(%p)"), menu));
+
+ if (E_OK == err)
{
win = menu->userwin ? menu->userwin : stdscr;
sub = menu->usersub ? menu->usersub : win;
assert(win && sub);
if ((menu->opt & O_SHOWMATCH) && (menu->pindex > 0))
- x += ( menu->pindex + menu->marklen - 1);
+ x += (menu->pindex + menu->marklen - 1);
- wmove(sub,y,x);
+ wmove(sub, y, x);
- if ( win != sub )
+ if (win != sub)
{
wcursyncup(sub);
wsyncup(sub);
diff --git a/contrib/ncurses/menu/m_driver.c b/contrib/ncurses/menu/m_driver.c
index 69115cf64811..d29c6024a7e3 100644
--- a/contrib/ncurses/menu/m_driver.c
+++ b/contrib/ncurses/menu/m_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_driver.c,v 1.18 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_driver.c,v 1.25 2005/11/26 20:46:59 tom Exp $")
/* Macros */
@@ -62,28 +62,31 @@ MODULE_ID("$Id: m_driver.c,v 1.18 2000/12/10 02:16:48 tom Exp $")
| Return Values : TRUE - if it is a substring
| FALSE - if it is not a substring
+--------------------------------------------------------------------------*/
-static bool Is_Sub_String(
- bool IgnoreCaseFlag,
- const char *part,
- const char *string
- )
+static bool
+Is_Sub_String(
+ bool IgnoreCaseFlag,
+ const char *part,
+ const char *string
+)
{
- assert( part && string );
- if ( IgnoreCaseFlag )
+ assert(part && string);
+ if (IgnoreCaseFlag)
{
- while(*string && *part)
+ while (*string && *part)
{
- if (toupper(*string++)!=toupper(*part)) break;
+ if (toupper(*string++) != toupper(*part))
+ break;
part++;
}
}
else
{
- while( *string && *part )
- if (*part != *string++) break;
+ while (*string && *part)
+ if (*part != *string++)
+ break;
part++;
}
- return ( (*part) ? FALSE : TRUE );
+ return ((*part) ? FALSE : TRUE);
}
/*---------------------------------------------------------------------------
@@ -113,73 +116,77 @@ static bool Is_Sub_String(
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
_nc_Match_Next_Character_In_Item_Name
-(MENU *menu, int ch, ITEM **item)
+(MENU * menu, int ch, ITEM ** item)
{
bool found = FALSE, passed = FALSE;
- int idx, last;
+ int idx, last;
+
+ T((T_CALLED("_nc_Match_Next_Character(%p,%d,%p)"), menu, ch, item));
- assert( menu && item && *item);
+ assert(menu && item && *item);
idx = (*item)->index;
- if (ch && ch!=BS)
+ if (ch && ch != BS)
{
/* if we become to long, we need no further checking : there can't be
- a match ! */
- if ((menu->pindex+1) > menu->namelen)
+ a match ! */
+ if ((menu->pindex + 1) > menu->namelen)
RETURN(E_NO_MATCH);
- Add_Character_To_Pattern(menu,ch);
+ Add_Character_To_Pattern(menu, ch);
/* we artificially position one item back, because in the do...while
- loop we start with the next item. This means, that with a new
- pattern search we always start the scan with the actual item. If
- we do a NEXT_PATTERN oder PREV_PATTERN search, we start with the
- one after or before the actual item. */
+ loop we start with the next item. This means, that with a new
+ pattern search we always start the scan with the actual item. If
+ we do a NEXT_PATTERN oder PREV_PATTERN search, we start with the
+ one after or before the actual item. */
if (--idx < 0)
- idx = menu->nitems-1;
+ idx = menu->nitems - 1;
}
last = idx; /* this closes the cycle */
- do{
- if (ch==BS)
- { /* we have to go backward */
- if (--idx < 0)
- idx = menu->nitems-1;
- }
- else
- { /* otherwise we always go forward */
- if (++idx >= menu->nitems)
- idx = 0;
- }
- if (Is_Sub_String((menu->opt & O_IGNORECASE) != 0,
- menu->pattern,
- menu->items[idx]->name.str)
+ do
+ {
+ if (ch == BS)
+ { /* we have to go backward */
+ if (--idx < 0)
+ idx = menu->nitems - 1;
+ }
+ else
+ { /* otherwise we always go forward */
+ if (++idx >= menu->nitems)
+ idx = 0;
+ }
+ if (Is_Sub_String((bool)((menu->opt & O_IGNORECASE) != 0),
+ menu->pattern,
+ menu->items[idx]->name.str)
)
- found = TRUE;
- else
- passed = TRUE;
- } while (!found && (idx != last));
+ found = TRUE;
+ else
+ passed = TRUE;
+ }
+ while (!found && (idx != last));
if (found)
{
- if (!((idx==(*item)->index) && passed))
+ if (!((idx == (*item)->index) && passed))
{
*item = menu->items[idx];
RETURN(E_OK);
}
/* This point is reached, if we fully cycled through the item list
- and the only match we found is the starting item. With a NEXT_PATTERN
- or PREV_PATTERN scan this means, that there was no additional match.
- If we searched with an expanded new pattern, we should never reach
- this point, because if the expanded pattern matches also the actual
- item we will find it in the first attempt (passed==FALSE) and we
- will never cycle through the whole item array.
- */
- assert( ch==0 || ch==BS );
+ and the only match we found is the starting item. With a NEXT_PATTERN
+ or PREV_PATTERN scan this means, that there was no additional match.
+ If we searched with an expanded new pattern, we should never reach
+ this point, because if the expanded pattern matches also the actual
+ item we will find it in the first attempt (passed==FALSE) and we
+ will never cycle through the whole item array.
+ */
+ assert(ch == 0 || ch == BS);
}
else
{
- if (ch && ch!=BS && menu->pindex>0)
+ if (ch && ch != BS && menu->pindex > 0)
{
/* if we had no match with a new pattern, we have to restore it */
Remove_Character_From_Pattern(menu);
@@ -201,7 +208,7 @@ _nc_Match_Next_Character_In_Item_Name
| E_NOT_POSTED - menu is not posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-menu_driver (MENU * menu, int c)
+menu_driver(MENU * menu, int c)
{
#define NAVIGATE(dir) \
if (!item->dir)\
@@ -213,327 +220,332 @@ menu_driver (MENU * menu, int c)
ITEM *item;
int my_top_row, rdiff;
+ T((T_CALLED("menu_driver(%p,%d)"), menu, c));
+
if (!menu)
RETURN(E_BAD_ARGUMENT);
- if ( menu->status & _IN_DRIVER )
+ if (menu->status & _IN_DRIVER)
RETURN(E_BAD_STATE);
- if ( !( menu->status & _POSTED ) )
+ if (!(menu->status & _POSTED))
RETURN(E_NOT_POSTED);
item = menu->curitem;
- my_top_row = menu->toprow;
- assert(item);
-
- if ((c > KEY_MAX) && (c<=MAX_MENU_COMMAND))
- {
- if (!((c==REQ_BACK_PATTERN)
- || (c==REQ_NEXT_MATCH) || (c==REQ_PREV_MATCH)))
- {
- assert( menu->pattern );
- Reset_Pattern(menu);
- }
-
- switch(c)
- {
- case REQ_LEFT_ITEM:
+ my_top_row = menu->toprow;
+ assert(item);
+
+ if ((c > KEY_MAX) && (c <= MAX_MENU_COMMAND))
+ {
+ if (!((c == REQ_BACK_PATTERN)
+ || (c == REQ_NEXT_MATCH) || (c == REQ_PREV_MATCH)))
+ {
+ assert(menu->pattern);
+ Reset_Pattern(menu);
+ }
+
+ switch (c)
+ {
+ case REQ_LEFT_ITEM:
/*=================*/
- NAVIGATE(left);
- break;
+ NAVIGATE(left);
+ break;
- case REQ_RIGHT_ITEM:
+ case REQ_RIGHT_ITEM:
/*==================*/
- NAVIGATE(right);
- break;
+ NAVIGATE(right);
+ break;
- case REQ_UP_ITEM:
+ case REQ_UP_ITEM:
/*===============*/
- NAVIGATE(up);
- break;
+ NAVIGATE(up);
+ break;
- case REQ_DOWN_ITEM:
+ case REQ_DOWN_ITEM:
/*=================*/
- NAVIGATE(down);
- break;
+ NAVIGATE(down);
+ break;
- case REQ_SCR_ULINE:
+ case REQ_SCR_ULINE:
/*=================*/
if (my_top_row == 0 || !(item->up))
- result = E_REQUEST_DENIED;
- else
- {
- --my_top_row;
- item = item->up;
- }
- break;
-
- case REQ_SCR_DLINE:
+ result = E_REQUEST_DENIED;
+ else
+ {
+ --my_top_row;
+ item = item->up;
+ }
+ break;
+
+ case REQ_SCR_DLINE:
/*=================*/
if ((my_top_row + menu->arows >= menu->rows) || !(item->down))
- {
- /* only if the menu has less items than rows, we can deny the
- request. Otherwise the epilogue of this routine adjusts the
- top row if necessary */
- result = E_REQUEST_DENIED;
- }
- else {
- my_top_row++;
+ {
+ /* only if the menu has less items than rows, we can deny the
+ request. Otherwise the epilogue of this routine adjusts the
+ top row if necessary */
+ result = E_REQUEST_DENIED;
+ }
+ else
+ {
+ my_top_row++;
item = item->down;
- }
- break;
+ }
+ break;
- case REQ_SCR_DPAGE:
+ case REQ_SCR_DPAGE:
/*=================*/
rdiff = menu->rows - (menu->arows + my_top_row);
- if (rdiff > menu->arows)
- rdiff = menu->arows;
- if (rdiff<=0)
- result = E_REQUEST_DENIED;
- else
- {
- my_top_row += rdiff;
- while(rdiff-- > 0 && item!=(ITEM*)0)
- item = item->down;
- }
- break;
-
- case REQ_SCR_UPAGE:
+ if (rdiff > menu->arows)
+ rdiff = menu->arows;
+ if (rdiff <= 0)
+ result = E_REQUEST_DENIED;
+ else
+ {
+ my_top_row += rdiff;
+ while (rdiff-- > 0 && item != (ITEM *) 0)
+ item = item->down;
+ }
+ break;
+
+ case REQ_SCR_UPAGE:
/*=================*/
rdiff = (menu->arows < my_top_row) ? menu->arows : my_top_row;
- if (rdiff<=0)
- result = E_REQUEST_DENIED;
- else
- {
- my_top_row -= rdiff;
- while(rdiff-- && item!=(ITEM*)0)
- item = item->up;
- }
- break;
+ if (rdiff <= 0)
+ result = E_REQUEST_DENIED;
+ else
+ {
+ my_top_row -= rdiff;
+ while (rdiff-- && item != (ITEM *) 0)
+ item = item->up;
+ }
+ break;
- case REQ_FIRST_ITEM:
+ case REQ_FIRST_ITEM:
/*==================*/
- item = menu->items[0];
- break;
+ item = menu->items[0];
+ break;
- case REQ_LAST_ITEM:
+ case REQ_LAST_ITEM:
/*=================*/
- item = menu->items[menu->nitems-1];
- break;
+ item = menu->items[menu->nitems - 1];
+ break;
- case REQ_NEXT_ITEM:
+ case REQ_NEXT_ITEM:
/*=================*/
- if ((item->index+1)>=menu->nitems)
- {
- if (menu->opt & O_NONCYCLIC)
- result = E_REQUEST_DENIED;
- else
- item = menu->items[0];
- }
- else
- item = menu->items[item->index + 1];
- break;
-
- case REQ_PREV_ITEM:
+ if ((item->index + 1) >= menu->nitems)
+ {
+ if (menu->opt & O_NONCYCLIC)
+ result = E_REQUEST_DENIED;
+ else
+ item = menu->items[0];
+ }
+ else
+ item = menu->items[item->index + 1];
+ break;
+
+ case REQ_PREV_ITEM:
/*=================*/
- if (item->index<=0)
- {
- if (menu->opt & O_NONCYCLIC)
- result = E_REQUEST_DENIED;
- else
- item = menu->items[menu->nitems-1];
- }
- else
- item = menu->items[item->index - 1];
- break;
-
- case REQ_TOGGLE_ITEM:
- /*===================*/
- if (menu->opt & O_ONEVALUE)
- {
+ if (item->index <= 0)
+ {
+ if (menu->opt & O_NONCYCLIC)
result = E_REQUEST_DENIED;
- }
- else
- {
- if (menu->curitem->opt & O_SELECTABLE)
- {
- menu->curitem->value = !menu->curitem->value;
- Move_And_Post_Item(menu,menu->curitem);
- _nc_Show_Menu(menu);
- }
- else
- result = E_NOT_SELECTABLE;
- }
- break;
-
- case REQ_CLEAR_PATTERN:
+ else
+ item = menu->items[menu->nitems - 1];
+ }
+ else
+ item = menu->items[item->index - 1];
+ break;
+
+ case REQ_TOGGLE_ITEM:
+ /*===================*/
+ if (menu->opt & O_ONEVALUE)
+ {
+ result = E_REQUEST_DENIED;
+ }
+ else
+ {
+ if (menu->curitem->opt & O_SELECTABLE)
+ {
+ menu->curitem->value = !menu->curitem->value;
+ Move_And_Post_Item(menu, menu->curitem);
+ _nc_Show_Menu(menu);
+ }
+ else
+ result = E_NOT_SELECTABLE;
+ }
+ break;
+
+ case REQ_CLEAR_PATTERN:
/*=====================*/
- /* already cleared in prologue */
- break;
+ /* already cleared in prologue */
+ break;
- case REQ_BACK_PATTERN:
+ case REQ_BACK_PATTERN:
/*====================*/
- if (menu->pindex>0)
- {
- assert(menu->pattern);
- Remove_Character_From_Pattern(menu);
- pos_menu_cursor( menu );
- }
- else
- result = E_REQUEST_DENIED;
- break;
-
- case REQ_NEXT_MATCH:
+ if (menu->pindex > 0)
+ {
+ assert(menu->pattern);
+ Remove_Character_From_Pattern(menu);
+ pos_menu_cursor(menu);
+ }
+ else
+ result = E_REQUEST_DENIED;
+ break;
+
+ case REQ_NEXT_MATCH:
/*==================*/
- assert(menu->pattern);
- if (menu->pattern[0])
- result = _nc_Match_Next_Character_In_Item_Name(menu,0,&item);
- else
- {
- if ((item->index+1)<menu->nitems)
- item=menu->items[item->index+1];
- else
- {
- if (menu->opt & O_NONCYCLIC)
- result = E_REQUEST_DENIED;
- else
- item = menu->items[0];
- }
- }
- break;
-
- case REQ_PREV_MATCH:
+ assert(menu->pattern);
+ if (menu->pattern[0])
+ result = _nc_Match_Next_Character_In_Item_Name(menu, 0, &item);
+ else
+ {
+ if ((item->index + 1) < menu->nitems)
+ item = menu->items[item->index + 1];
+ else
+ {
+ if (menu->opt & O_NONCYCLIC)
+ result = E_REQUEST_DENIED;
+ else
+ item = menu->items[0];
+ }
+ }
+ break;
+
+ case REQ_PREV_MATCH:
/*==================*/
- assert(menu->pattern);
- if (menu->pattern[0])
- result = _nc_Match_Next_Character_In_Item_Name(menu,BS,&item);
- else
- {
- if (item->index)
- item = menu->items[item->index-1];
- else
- {
- if (menu->opt & O_NONCYCLIC)
- result = E_REQUEST_DENIED;
- else
- item = menu->items[menu->nitems-1];
- }
- }
- break;
-
- default:
+ assert(menu->pattern);
+ if (menu->pattern[0])
+ result = _nc_Match_Next_Character_In_Item_Name(menu, BS, &item);
+ else
+ {
+ if (item->index)
+ item = menu->items[item->index - 1];
+ else
+ {
+ if (menu->opt & O_NONCYCLIC)
+ result = E_REQUEST_DENIED;
+ else
+ item = menu->items[menu->nitems - 1];
+ }
+ }
+ break;
+
+ default:
/*======*/
- result = E_UNKNOWN_COMMAND;
- break;
- }
- }
- else
- { /* not a command */
- if ( !(c & ~((int)MAX_REGULAR_CHARACTER)) && isprint(c) )
- result = _nc_Match_Next_Character_In_Item_Name( menu, c, &item );
+ result = E_UNKNOWN_COMMAND;
+ break;
+ }
+ }
+ else
+ { /* not a command */
+ if (!(c & ~((int)MAX_REGULAR_CHARACTER)) && isprint(UChar(c)))
+ result = _nc_Match_Next_Character_In_Item_Name(menu, c, &item);
#ifdef NCURSES_MOUSE_VERSION
- else if (KEY_MOUSE == c)
- {
- MEVENT event;
- WINDOW* uwin = Get_Menu_UserWin(menu);
-
- getmouse(&event);
- if ((event.bstate & (BUTTON1_CLICKED |
- BUTTON1_DOUBLE_CLICKED |
- BUTTON1_TRIPLE_CLICKED ))
- && wenclose(uwin,event.y, event.x))
- { /* we react only if the click was in the userwin, that means
- * inside the menu display area or at the decoration window.
- */
- WINDOW* sub = Get_Menu_Window(menu);
- int ry = event.y, rx = event.x; /* screen coordinates */
+ else if (KEY_MOUSE == c)
+ {
+ MEVENT event;
+ WINDOW *uwin = Get_Menu_UserWin(menu);
+
+ getmouse(&event);
+ if ((event.bstate & (BUTTON1_CLICKED |
+ BUTTON1_DOUBLE_CLICKED |
+ BUTTON1_TRIPLE_CLICKED))
+ && wenclose(uwin, event.y, event.x))
+ { /* we react only if the click was in the userwin, that means
+ * inside the menu display area or at the decoration window.
+ */
+ WINDOW *sub = Get_Menu_Window(menu);
+ int ry = event.y, rx = event.x; /* screen coordinates */
- result = E_REQUEST_DENIED;
- if (mouse_trafo(&ry,&rx,FALSE))
- { /* rx, ry are now "curses" coordinates */
- if (ry < sub->_begy)
- { /* we clicked above the display region; this is
- * interpreted as "scroll up" request
- */
- if (event.bstate & BUTTON1_CLICKED)
- result = menu_driver(menu,REQ_SCR_ULINE);
- else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
- result = menu_driver(menu,REQ_SCR_UPAGE);
- else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
- result = menu_driver(menu,REQ_FIRST_ITEM);
- RETURN(result);
- }
- else if (ry >= sub->_begy + sub->_maxy)
- { /* we clicked below the display region; this is
- * interpreted as "scroll down" request
- */
- if (event.bstate & BUTTON1_CLICKED)
- result = menu_driver(menu,REQ_SCR_DLINE);
- else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
- result = menu_driver(menu,REQ_SCR_DPAGE);
- else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
- result = menu_driver(menu,REQ_LAST_ITEM);
- RETURN(result);
- }
- else if (wenclose(sub,event.y,event.x))
- { /* Inside the area we try to find the hit item */
- int i,x,y,err;
- ry = event.y; rx = event.x;
- if (wmouse_trafo(sub,&ry,&rx,FALSE))
- {
- for(i=0;i<menu->nitems;i++)
- {
- err = _nc_menu_cursor_pos(menu,menu->items[i],
- &y, &x);
- if (E_OK==err)
- {
- if ((ry==y) &&
- (rx>=x) &&
- (rx < x + menu->itemlen))
- {
- item = menu->items[i];
- result = E_OK;
- break;
- }
- }
- }
- if (E_OK==result)
- { /* We found an item, now we can handle the click.
+ result = E_REQUEST_DENIED;
+ if (mouse_trafo(&ry, &rx, FALSE))
+ { /* rx, ry are now "curses" coordinates */
+ if (ry < sub->_begy)
+ { /* we clicked above the display region; this is
+ * interpreted as "scroll up" request
+ */
+ if (event.bstate & BUTTON1_CLICKED)
+ result = menu_driver(menu, REQ_SCR_ULINE);
+ else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
+ result = menu_driver(menu, REQ_SCR_UPAGE);
+ else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
+ result = menu_driver(menu, REQ_FIRST_ITEM);
+ RETURN(result);
+ }
+ else if (ry > sub->_begy + sub->_maxy)
+ { /* we clicked below the display region; this is
+ * interpreted as "scroll down" request
+ */
+ if (event.bstate & BUTTON1_CLICKED)
+ result = menu_driver(menu, REQ_SCR_DLINE);
+ else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
+ result = menu_driver(menu, REQ_SCR_DPAGE);
+ else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
+ result = menu_driver(menu, REQ_LAST_ITEM);
+ RETURN(result);
+ }
+ else if (wenclose(sub, event.y, event.x))
+ { /* Inside the area we try to find the hit item */
+ int i, x, y, err;
+
+ ry = event.y;
+ rx = event.x;
+ if (wmouse_trafo(sub, &ry, &rx, FALSE))
+ {
+ for (i = 0; i < menu->nitems; i++)
+ {
+ err = _nc_menu_cursor_pos(menu, menu->items[i],
+ &y, &x);
+ if (E_OK == err)
+ {
+ if ((ry == y) &&
+ (rx >= x) &&
+ (rx < x + menu->itemlen))
+ {
+ item = menu->items[i];
+ result = E_OK;
+ break;
+ }
+ }
+ }
+ if (E_OK == result)
+ { /* We found an item, now we can handle the click.
* A single click just positions the menu cursor
* to the clicked item. A double click toggles
* the item.
*/
- if (event.bstate & BUTTON1_DOUBLE_CLICKED)
- {
- _nc_New_TopRow_and_CurrentItem(menu,
- my_top_row,
- item);
- menu_driver(menu,REQ_TOGGLE_ITEM);
- result = E_UNKNOWN_COMMAND;
- }
- }
- }
- }
- }
- }
- else
- result = E_REQUEST_DENIED;
- }
+ if (event.bstate & BUTTON1_DOUBLE_CLICKED)
+ {
+ _nc_New_TopRow_and_CurrentItem(menu,
+ my_top_row,
+ item);
+ menu_driver(menu, REQ_TOGGLE_ITEM);
+ result = E_UNKNOWN_COMMAND;
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ result = E_REQUEST_DENIED;
+ }
#endif /* NCURSES_MOUSE_VERSION */
- else
- result = E_UNKNOWN_COMMAND;
- }
+ else
+ result = E_UNKNOWN_COMMAND;
+ }
- if (E_OK==result)
+ if (E_OK == result)
{
- /* Adjust the top row if it turns out that the current item unfortunately
- doesn't appear in the menu window */
- if ( item->y < my_top_row )
- my_top_row = item->y;
- else if ( item->y >= (my_top_row + menu->arows) )
- my_top_row = item->y - menu->arows + 1;
-
- _nc_New_TopRow_and_CurrentItem( menu, my_top_row, item );
+ /* Adjust the top row if it turns out that the current item unfortunately
+ doesn't appear in the menu window */
+ if (item->y < my_top_row)
+ my_top_row = item->y;
+ else if (item->y >= (my_top_row + menu->arows))
+ my_top_row = item->y - menu->arows + 1;
+
+ _nc_New_TopRow_and_CurrentItem(menu, my_top_row, item);
}
diff --git a/contrib/ncurses/menu/m_format.c b/contrib/ncurses/menu/m_format.c
index ffd8e701e3ee..773cb27e774f 100644
--- a/contrib/ncurses/menu/m_format.c
+++ b/contrib/ncurses/menu/m_format.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,14 +37,14 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_format.c,v 1.10 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_format.c,v 1.15 2004/12/11 23:11:21 tom Exp $")
#define minimum(a,b) ((a)<(b) ? (a): (b))
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : int set_menu_format(MENU *menu, int rows, int cols)
-|
+|
| Description : Sets the maximum number of rows and columns of items
| that may be displayed at one time on a menu. If the
| menu contains more items than can be displayed at
@@ -56,42 +56,44 @@ MODULE_ID("$Id: m_format.c,v 1.10 2000/12/10 02:16:48 tom Exp $")
| E_POSTED - the menu is already posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_format (MENU *menu, int rows, int cols)
+set_menu_format(MENU * menu, int rows, int cols)
{
int total_rows, total_cols;
-
- if (rows<0 || cols<0)
+
+ T((T_CALLED("set_menu_format(%p,%d,%d)"), menu, rows, cols));
+
+ if (rows < 0 || cols < 0)
RETURN(E_BAD_ARGUMENT);
-
+
if (menu)
{
- if ( menu->status & _POSTED )
+ if (menu->status & _POSTED)
RETURN(E_POSTED);
-
+
if (!(menu->items))
RETURN(E_NOT_CONNECTED);
-
- if (rows==0)
+
+ if (rows == 0)
rows = menu->frows;
- if (cols==0)
+ if (cols == 0)
cols = menu->fcols;
-
+
if (menu->pattern)
Reset_Pattern(menu);
-
+
menu->frows = rows;
menu->fcols = cols;
-
- assert(rows>0 && cols>0);
- total_rows = (menu->nitems - 1)/cols + 1;
- total_cols = (menu->status & O_ROWMAJOR) ?
- minimum(menu->nitems,cols) :
- (menu->nitems-1)/total_rows + 1;
-
- menu->rows = total_rows;
- menu->cols = total_cols;
- menu->arows = minimum(total_rows,rows);
- menu->toprow = 0;
+
+ assert(rows > 0 && cols > 0);
+ total_rows = (menu->nitems - 1) / cols + 1;
+ total_cols = (menu->opt & O_ROWMAJOR) ?
+ minimum(menu->nitems, cols) :
+ (menu->nitems - 1) / total_rows + 1;
+
+ menu->rows = total_rows;
+ menu->cols = total_cols;
+ menu->arows = minimum(total_rows, rows);
+ menu->toprow = 0;
menu->curitem = *(menu->items);
assert(menu->curitem);
menu->status |= _LINK_NEEDED;
@@ -99,24 +101,26 @@ set_menu_format (MENU *menu, int rows, int cols)
}
else
{
- if (rows>0) _nc_Default_Menu.frows = rows;
- if (cols>0) _nc_Default_Menu.fcols = cols;
+ if (rows > 0)
+ _nc_Default_Menu.frows = rows;
+ if (cols > 0)
+ _nc_Default_Menu.fcols = cols;
}
-
+
RETURN(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : void menu_format(const MENU *menu, int *rows, int *cols)
-|
+|
| Description : Returns the maximum number of rows and columns that may
| be displayed at one time on menu.
|
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-menu_format (const MENU *menu, int *rows, int *cols)
+menu_format(const MENU * menu, int *rows, int *cols)
{
if (rows)
*rows = Normalize_Menu(menu)->frows;
diff --git a/contrib/ncurses/menu/m_global.c b/contrib/ncurses/menu/m_global.c
index 927df28d65b0..28e836dd644e 100644
--- a/contrib/ncurses/menu/m_global.c
+++ b/contrib/ncurses/menu/m_global.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,10 +37,10 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_global.c,v 1.13 2002/06/01 16:16:44 tom Exp $")
+MODULE_ID("$Id: m_global.c,v 1.23 2005/12/31 21:51:52 tom Exp $")
static char mark[] = "-";
-
+/* *INDENT-OFF* */
NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = {
16, /* Nr. of chars high */
1, /* Nr. of chars wide */
@@ -95,6 +95,7 @@ NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item = {
(ITEM *)0, /* up */
(ITEM *)0 /* down */
};
+/* *INDENT-ON* */
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -105,24 +106,29 @@ NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item = {
|
| Return Values : -
+--------------------------------------------------------------------------*/
-INLINE static void ComputeMaximum_NameDesc_Lengths(MENU * menu)
+NCURSES_INLINE static void
+ComputeMaximum_NameDesc_Lengths(MENU * menu)
{
- unsigned MaximumNameLength = 0;
+ unsigned MaximumNameLength = 0;
unsigned MaximumDescriptionLength = 0;
ITEM **items;
-
+ unsigned check;
+
assert(menu && menu->items);
- for( items = menu->items; *items ; items++ )
+ for (items = menu->items; *items; items++)
{
- if (items[0]->name.length > MaximumNameLength )
- MaximumNameLength = items[0]->name.length;
-
- if (items[0]->description.length > MaximumDescriptionLength)
- MaximumDescriptionLength = items[0]->description.length;
+ check = _nc_Calculate_Text_Width(&((*items)->name));
+ if (check > MaximumNameLength)
+ MaximumNameLength = check;
+
+ check = _nc_Calculate_Text_Width(&((*items)->description));
+ if (check > MaximumDescriptionLength)
+ MaximumDescriptionLength = check;
}
-
+
menu->namelen = MaximumNameLength;
menu->desclen = MaximumDescriptionLength;
+ T(("ComputeMaximum_NameDesc_Lengths %d,%d", menu->namelen, menu->desclen));
}
/*---------------------------------------------------------------------------
@@ -134,22 +140,23 @@ INLINE static void ComputeMaximum_NameDesc_Lengths(MENU * menu)
|
| Return Values : -
+--------------------------------------------------------------------------*/
-INLINE static void ResetConnectionInfo(MENU *menu, ITEM **items)
+NCURSES_INLINE static void
+ResetConnectionInfo(MENU * menu, ITEM ** items)
{
ITEM **item;
-
+
assert(menu && items);
- for(item=items; *item; item++)
+ for (item = items; *item; item++)
{
(*item)->index = 0;
- (*item)->imenu = (MENU *)0;
+ (*item)->imenu = (MENU *) 0;
}
if (menu->pattern)
free(menu->pattern);
menu->pattern = (char *)0;
- menu->pindex = 0;
- menu->items = (ITEM **)0;
- menu->nitems = 0;
+ menu->pindex = 0;
+ menu->items = (ITEM **) 0;
+ menu->nitems = 0;
}
/*---------------------------------------------------------------------------
@@ -160,29 +167,29 @@ INLINE static void ResetConnectionInfo(MENU *menu, ITEM **items)
| Decorate all the items with a number and a backward
| pointer to the menu.
|
-| Return Values : TRUE - successfull connection
+| Return Values : TRUE - successful connection
| FALSE - connection failed
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(bool)
-_nc_Connect_Items (MENU *menu, ITEM **items)
+_nc_Connect_Items(MENU * menu, ITEM ** items)
{
ITEM **item;
unsigned int ItemCount = 0;
-
- if ( menu && items )
- {
- for(item=items; *item ; item++)
+
+ if (menu && items)
+ {
+ for (item = items; *item; item++)
{
- if ( (*item)->imenu )
+ if ((*item)->imenu)
{
/* if a item is already connected, reject connection */
break;
}
}
- if (! (*item) )
+ if (!(*item))
/* we reached the end, so there was no connected item */
{
- for(item=items; *item ; item++)
+ for (item = items; *item; item++)
{
if (menu->opt & O_ONEVALUE)
{
@@ -190,31 +197,31 @@ _nc_Connect_Items (MENU *menu, ITEM **items)
}
(*item)->index = ItemCount++;
(*item)->imenu = menu;
- }
+ }
}
}
else
- return(FALSE);
-
+ return (FALSE);
+
if (ItemCount != 0)
{
- menu->items = items;
+ menu->items = items;
menu->nitems = ItemCount;
ComputeMaximum_NameDesc_Lengths(menu);
- if ( (menu->pattern = (char *)malloc( (unsigned)(1 + menu->namelen))) )
+ if ((menu->pattern = typeMalloc(char, (unsigned)(1 + menu->namelen))))
{
- Reset_Pattern(menu);
- set_menu_format(menu,menu->frows,menu->fcols);
+ Reset_Pattern(menu);
+ set_menu_format(menu, menu->frows, menu->fcols);
menu->curitem = *items;
menu->toprow = 0;
- return(TRUE);
+ return (TRUE);
}
}
-
+
/* 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);
+ ResetConnectionInfo(menu, items);
+ return (FALSE);
}
/*---------------------------------------------------------------------------
@@ -226,11 +233,99 @@ _nc_Connect_Items (MENU *menu, ITEM **items)
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-_nc_Disconnect_Items (MENU * menu)
+_nc_Disconnect_Items(MENU * menu)
{
if (menu && menu->items)
- ResetConnectionInfo( menu, menu->items );
+ ResetConnectionInfo(menu, menu->items);
+}
+
+/*---------------------------------------------------------------------------
+| Facility : libnmenu
+| Function : int _nc_Calculate_Text_Width(const TEXT * item)
+|
+| Description : Calculate the number of columns for a TEXT.
+|
+| Return Values : the width
++--------------------------------------------------------------------------*/
+NCURSES_EXPORT(int)
+_nc_Calculate_Text_Width(const TEXT * item /*FIXME: limit length */ )
+{
+#if USE_WIDEC_SUPPORT
+ int result = item->length;
+
+ T((T_CALLED("_nc_menu_text_width(%p)"), item));
+ if (result != 0 && item->str != 0)
+ {
+ int count = mbstowcs(0, item->str, 0);
+ wchar_t *temp = 0;
+
+ if (count > 0
+ && (temp = typeMalloc(wchar_t, 2 + count)) != 0)
+ {
+ int n;
+
+ result = 0;
+ mbstowcs(temp, item->str, (unsigned)count);
+ for (n = 0; n < count; ++n)
+ {
+ int test = wcwidth(temp[n]);
+
+ if (test <= 0)
+ test = 1;
+ result += test;
+ }
+ free(temp);
+ }
+ }
+ returnCode(result);
+#else
+ return item->length;
+#endif
+}
+
+/*
+ * Calculate the actual width of a menu entry for wide-characters.
+ */
+#if USE_WIDEC_SUPPORT
+static int
+calculate_actual_width(MENU * menu, bool name)
+{
+ int width = 0;
+ int check = 0;
+ ITEM **items;
+
+ assert(menu && menu->items);
+
+ if (menu->items != 0)
+ {
+ for (items = menu->items; *items; items++)
+ {
+ if (name)
+ {
+ check = _nc_Calculate_Text_Width(&((*items)->name));
+ }
+ else
+ {
+ check = _nc_Calculate_Text_Width(&((*items)->description));
+ }
+ if (check > width)
+ width = check;
+ }
+ }
+ else
+ {
+ width = (name ? menu->namelen : menu->desclen);
+ }
+
+ T(("calculate_actual_width %s = %d/%d",
+ name ? "name" : "desc",
+ width,
+ name ? menu->namelen : menu->desclen));
+ return width;
}
+#else
+#define calculate_actual_width(menu, name) (name ? menu->namelen : menu->desclen)
+#endif
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -242,93 +337,103 @@ _nc_Disconnect_Items (MENU * menu)
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-_nc_Calculate_Item_Length_and_Width (MENU * menu)
+_nc_Calculate_Item_Length_and_Width(MENU * menu)
{
int l;
-
+
assert(menu);
- menu->height = 1 + menu->spc_rows * (menu->arows - 1);
+ menu->height = 1 + menu->spc_rows * (menu->arows - 1);
+
+ l = calculate_actual_width(menu, TRUE);
+ l += menu->marklen;
+
+ if ((menu->opt & O_SHOWDESC) && (menu->desclen > 0))
+ {
+ l += calculate_actual_width(menu, FALSE);
+ l += menu->spc_desc;
+ }
- l = menu->namelen + menu->marklen;
- if ( (menu->opt & O_SHOWDESC) && (menu->desclen > 0) )
- l += (menu->desclen + menu->spc_desc);
-
menu->itemlen = l;
l *= menu->cols;
- l += (menu->cols-1)*menu->spc_cols; /* for the padding between the columns */
+ l += (menu->cols - 1) * menu->spc_cols; /* for the padding between the columns */
menu->width = l;
-}
+
+ T(("_nc_CalculateItem_Length_and_Width columns %d, item %d, width %d",
+ menu->cols,
+ menu->itemlen,
+ menu->width));
+}
/*---------------------------------------------------------------------------
| Facility : libnmenu
| Function : void _nc_Link_Item(MENU *menu)
|
-| Description : Statically calculate for every item its four neighbours.
+| Description : Statically calculate for every item its four neighbors.
| This depends on the orientation of the menu. This
-| static aproach simplifies navigation in the menu a lot.
+| static approach simplifies navigation in the menu a lot.
|
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-_nc_Link_Items (MENU * menu)
+_nc_Link_Items(MENU * menu)
{
if (menu && menu->items && *(menu->items))
{
- int i,j;
+ int i, j;
ITEM *item;
int Number_Of_Items = menu->nitems;
int col = 0, row = 0;
int Last_in_Row;
int Last_in_Column;
bool cycle = (menu->opt & O_NONCYCLIC) ? FALSE : TRUE;
-
+
menu->status &= ~_LINK_NEEDED;
-
+
if (menu->opt & O_ROWMAJOR)
{
int Number_Of_Columns = menu->cols;
-
- for(i=0; i < Number_Of_Items; i++)
+
+ for (i = 0; i < Number_Of_Items; i++)
{
item = menu->items[i];
-
- Last_in_Row = row * Number_Of_Columns + (Number_Of_Columns-1);
-
- item->left = (col) ?
- /* if we are not in the leftmost column, we can use the
- predecessor in the items array */
- menu->items[i-1] :
- (cycle ? menu->items[(Last_in_Row>=Number_Of_Items) ?
- Number_Of_Items-1:
- Last_in_Row] :
- (ITEM *)0 );
-
- item->right = ( (col < (Number_Of_Columns-1)) &&
- ((i+1) < Number_Of_Items)
- ) ?
- menu->items[i+1] :
- ( cycle ? menu->items[row * Number_Of_Columns] :
- (ITEM *)0
- );
-
- Last_in_Column = (menu->rows-1) * Number_Of_Columns + col;
-
- item->up = (row) ? menu->items[i-Number_Of_Columns] :
- (cycle ? menu->items[(Last_in_Column>=Number_Of_Items) ?
- Number_Of_Items-1 :
- Last_in_Column] :
- (ITEM *)0);
-
- item->down = ( (i+Number_Of_Columns) < Number_Of_Items )
- ?
- menu->items[i + Number_Of_Columns] :
- (cycle ? menu->items[(row+1)<menu->rows ?
- Number_Of_Items-1:col] :
- (ITEM *)0);
+
+ Last_in_Row = row * Number_Of_Columns + (Number_Of_Columns - 1);
+
+ item->left = (col) ?
+ /* if we are not in the leftmost column, we can use the
+ predecessor in the items array */
+ menu->items[i - 1] :
+ (cycle ? menu->items[(Last_in_Row >= Number_Of_Items) ?
+ Number_Of_Items - 1 :
+ Last_in_Row] :
+ (ITEM *) 0);
+
+ item->right = ((col < (Number_Of_Columns - 1)) &&
+ ((i + 1) < Number_Of_Items)
+ )?
+ menu->items[i + 1] :
+ (cycle ? menu->items[row * Number_Of_Columns] :
+ (ITEM *) 0
+ );
+
+ Last_in_Column = (menu->rows - 1) * Number_Of_Columns + col;
+
+ item->up = (row) ? menu->items[i - Number_Of_Columns] :
+ (cycle ? menu->items[(Last_in_Column >= Number_Of_Items) ?
+ Number_Of_Items - 1 :
+ Last_in_Column] :
+ (ITEM *) 0);
+
+ item->down = ((i + Number_Of_Columns) < Number_Of_Items)
+ ?
+ menu->items[i + Number_Of_Columns] :
+ (cycle ? menu->items[(row + 1) < menu->rows ?
+ Number_Of_Items - 1 : col] :
+ (ITEM *) 0);
item->x = col;
item->y = row;
- if ( ++col == Number_Of_Columns )
+ if (++col == Number_Of_Columns)
{
row++;
col = 0;
@@ -338,48 +443,48 @@ _nc_Link_Items (MENU * menu)
else
{
int Number_Of_Rows = menu->rows;
-
- for(j=0; j<Number_Of_Items; j++)
+
+ for (j = 0; j < Number_Of_Items; j++)
{
- item = menu->items[i=(col * Number_Of_Rows + row)];
-
- Last_in_Column = (menu->cols-1) * Number_Of_Rows + row;
-
- item->left = (col) ?
+ item = menu->items[i = (col * Number_Of_Rows + row)];
+
+ Last_in_Column = (menu->cols - 1) * Number_Of_Rows + row;
+
+ item->left = (col) ?
menu->items[i - Number_Of_Rows] :
- (cycle ? (Last_in_Column >= Number_Of_Items ) ?
- menu->items[Last_in_Column-Number_Of_Rows] :
- menu->items[Last_in_Column] :
- (ITEM *)0 );
-
- item->right = ((i + Number_Of_Rows) <Number_Of_Items)
- ?
- menu->items[i + Number_Of_Rows] :
- (cycle ? menu->items[row] : (ITEM *)0);
-
+ (cycle ? (Last_in_Column >= Number_Of_Items) ?
+ menu->items[Last_in_Column - Number_Of_Rows] :
+ menu->items[Last_in_Column] :
+ (ITEM *) 0);
+
+ item->right = ((i + Number_Of_Rows) < Number_Of_Items)
+ ?
+ menu->items[i + Number_Of_Rows] :
+ (cycle ? menu->items[row] : (ITEM *) 0);
+
Last_in_Row = col * Number_Of_Rows + (Number_Of_Rows - 1);
-
- item->up = (row) ?
- menu->items[i-1] :
- (cycle ?
- menu->items[(Last_in_Row>=Number_Of_Items) ?
- Number_Of_Items-1:
- Last_in_Row] :
- (ITEM *)0);
-
- item->down = (row < (Number_Of_Rows-1))
- ?
- (menu->items[((i+1)<Number_Of_Items) ?
- i+1 :
- (col-1)*Number_Of_Rows + row + 1]) :
- (cycle ?
- menu->items[col * Number_Of_Rows] :
- (ITEM *)0
- );
-
+
+ item->up = (row) ?
+ menu->items[i - 1] :
+ (cycle ?
+ menu->items[(Last_in_Row >= Number_Of_Items) ?
+ Number_Of_Items - 1 :
+ Last_in_Row] :
+ (ITEM *) 0);
+
+ item->down = (row < (Number_Of_Rows - 1))
+ ?
+ (menu->items[((i + 1) < Number_Of_Items) ?
+ i + 1 :
+ (col - 1) * Number_Of_Rows + row + 1]) :
+ (cycle ?
+ menu->items[col * Number_Of_Rows] :
+ (ITEM *) 0
+ );
+
item->x = col;
item->y = row;
- if ( (++row) == Number_Of_Rows )
+ if ((++row) == Number_Of_Rows)
{
col++;
row = 0;
@@ -398,31 +503,31 @@ _nc_Link_Items (MENU * menu)
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-_nc_Show_Menu (const MENU *menu)
+_nc_Show_Menu(const MENU * menu)
{
WINDOW *win;
int maxy, maxx;
-
+
assert(menu);
- if ( (menu->status & _POSTED) && !(menu->status & _IN_DRIVER) )
+ if ((menu->status & _POSTED) && !(menu->status & _IN_DRIVER))
{
/* adjust the internal subwindow to start on the current top */
assert(menu->sub);
- mvderwin(menu->sub,menu->spc_rows * menu->toprow,0);
+ mvderwin(menu->sub, menu->spc_rows * menu->toprow, 0);
win = Get_Menu_Window(menu);
-
+
maxy = getmaxy(win);
- maxx = getmaxx(win);
-
- if (menu->height < maxy)
+ maxx = getmaxx(win);
+
+ if (menu->height < maxy)
maxy = menu->height;
- if (menu->width < maxx)
+ if (menu->width < maxx)
maxx = menu->width;
-
- copywin(menu->sub,win,0,0,0,0,maxy-1,maxx-1,0);
+
+ copywin(menu->sub, win, 0, 0, 0, 0, maxy - 1, maxx - 1, 0);
pos_menu_cursor(menu);
- }
-}
+ }
+}
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -438,41 +543,41 @@ _nc_Show_Menu (const MENU *menu)
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-_nc_New_TopRow_and_CurrentItem
-(MENU *menu, int new_toprow, ITEM *new_current_item)
+ _nc_New_TopRow_and_CurrentItem
+ (MENU * menu, int new_toprow, ITEM * new_current_item)
{
ITEM *cur_item;
bool mterm_called = FALSE;
bool iterm_called = FALSE;
-
+
assert(menu);
if (menu->status & _POSTED)
{
if (new_current_item != menu->curitem)
{
- Call_Hook(menu,itemterm);
+ Call_Hook(menu, itemterm);
iterm_called = TRUE;
}
if (new_toprow != menu->toprow)
{
- Call_Hook(menu,menuterm);
+ Call_Hook(menu, menuterm);
mterm_called = TRUE;
- }
-
- cur_item = menu->curitem;
+ }
+
+ cur_item = menu->curitem;
assert(cur_item);
- menu->toprow = new_toprow;
- menu->curitem = new_current_item;
-
+ menu->toprow = new_toprow;
+ menu->curitem = new_current_item;
+
if (mterm_called)
{
- Call_Hook(menu,menuinit);
+ Call_Hook(menu, menuinit);
}
if (iterm_called)
{
/* this means, move from the old current_item to the new one... */
- Move_To_Current_Item( menu, cur_item );
- Call_Hook(menu,iteminit);
+ Move_To_Current_Item(menu, cur_item);
+ Call_Hook(menu, iteminit);
}
if (mterm_called || iterm_called)
{
@@ -482,8 +587,8 @@ _nc_New_TopRow_and_CurrentItem
pos_menu_cursor(menu);
}
else
- { /* if we are not posted, this is quite simple */
- menu->toprow = new_toprow;
+ { /* if we are not posted, this is quite simple */
+ menu->toprow = new_toprow;
menu->curitem = new_current_item;
}
}
diff --git a/contrib/ncurses/menu/m_hook.c b/contrib/ncurses/menu/m_hook.c
index 783ec007ba7b..8d768a303ffc 100644
--- a/contrib/ncurses/menu/m_hook.c
+++ b/contrib/ncurses/menu/m_hook.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,12 +37,13 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_hook.c,v 1.9 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_hook.c,v 1.14 2004/12/25 21:39:52 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)"), menu, func));\
(Normalize_Menu(menu) -> typ ## name = func );\
RETURN(E_OK);\
}
@@ -51,7 +52,8 @@ NCURSES_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (MENU *menu, Menu_Hook f
#define GEN_HOOK_GET_FUNCTION( typ, name ) \
NCURSES_IMPEXP Menu_Hook NCURSES_API typ ## _ ## name ( const MENU *menu )\
{\
- return (Normalize_Menu(menu) -> typ ## name);\
+ T((T_CALLED(#typ "_" #name "(%p)"), menu));\
+ returnMenuHook(Normalize_Menu(menu) -> typ ## name);\
}
/*---------------------------------------------------------------------------
@@ -63,7 +65,7 @@ NCURSES_IMPEXP Menu_Hook NCURSES_API typ ## _ ## name ( const MENU *menu )\
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-GEN_HOOK_SET_FUNCTION( menu, init )
+GEN_HOOK_SET_FUNCTION(menu, init)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -75,7 +77,7 @@ GEN_HOOK_SET_FUNCTION( menu, init )
|
| Return Values : Menu init function address or NULL
+--------------------------------------------------------------------------*/
-GEN_HOOK_GET_FUNCTION( menu, init )
+GEN_HOOK_GET_FUNCTION(menu, init)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -86,7 +88,7 @@ GEN_HOOK_GET_FUNCTION( menu, init )
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-GEN_HOOK_SET_FUNCTION( menu, term )
+GEN_HOOK_SET_FUNCTION(menu, term)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -98,7 +100,7 @@ GEN_HOOK_SET_FUNCTION( menu, term )
|
| Return Values : Menu finalization function address or NULL
+--------------------------------------------------------------------------*/
-GEN_HOOK_GET_FUNCTION( menu, term )
+GEN_HOOK_GET_FUNCTION(menu, term)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -109,7 +111,7 @@ GEN_HOOK_GET_FUNCTION( menu, term )
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-GEN_HOOK_SET_FUNCTION( item, init )
+GEN_HOOK_SET_FUNCTION(item, init)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -121,7 +123,7 @@ GEN_HOOK_SET_FUNCTION( item, init )
|
| Return Values : Item init function address or NULL
+--------------------------------------------------------------------------*/
-GEN_HOOK_GET_FUNCTION( item, init )
+GEN_HOOK_GET_FUNCTION(item, init)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -132,7 +134,7 @@ GEN_HOOK_GET_FUNCTION( item, init )
|
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
-GEN_HOOK_SET_FUNCTION( item, term )
+GEN_HOOK_SET_FUNCTION(item, term)
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -144,6 +146,6 @@ GEN_HOOK_SET_FUNCTION( item, term )
|
| Return Values : Item finalization function address or NULL
+--------------------------------------------------------------------------*/
-GEN_HOOK_GET_FUNCTION( item, term )
+GEN_HOOK_GET_FUNCTION(item, term)
/* m_hook.c ends here */
diff --git a/contrib/ncurses/menu/m_item_cur.c b/contrib/ncurses/menu/m_item_cur.c
index a2b82ddb468a..dac12ed91c5e 100644
--- a/contrib/ncurses/menu/m_item_cur.c
+++ b/contrib/ncurses/menu/m_item_cur.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_item_cur.c,v 1.12 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_item_cur.c,v 1.17 2004/12/25 21:57:38 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -48,14 +48,16 @@ MODULE_ID("$Id: m_item_cur.c,v 1.12 2000/12/10 02:16:48 tom Exp $")
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_current_item (MENU * menu, ITEM * item)
+set_current_item(MENU * menu, ITEM * item)
{
- if (menu && item && (item->imenu==menu))
+ T((T_CALLED("set_current_item(%p,%p)"), menu, item));
+
+ if (menu && item && (item->imenu == menu))
{
- if ( menu->status & _IN_DRIVER )
+ if (menu->status & _IN_DRIVER)
RETURN(E_BAD_STATE);
-
- assert( menu->curitem );
+
+ assert(menu->curitem);
if (item != menu->curitem)
{
if (menu->status & _LINK_NEEDED)
@@ -69,12 +71,12 @@ set_current_item (MENU * menu, ITEM * item)
assert(menu->pattern);
Reset_Pattern(menu);
/* adjust the window to make item visible and update the menu */
- Adjust_Current_Item(menu,menu->toprow,item);
+ Adjust_Current_Item(menu, menu->toprow, item);
}
}
else
RETURN(E_BAD_ARGUMENT);
-
+
RETURN(E_OK);
}
@@ -87,9 +89,10 @@ set_current_item (MENU * menu, ITEM * item)
| Return Values : Item pointer or NULL if failure
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(ITEM *)
-current_item (const MENU * menu)
+current_item(const MENU * menu)
{
- return (menu && menu->items) ? menu->curitem : (ITEM *)0;
+ T((T_CALLED("current_item(%p)"), menu));
+ returnItem((menu && menu->items) ? menu->curitem : (ITEM *) 0);
}
/*---------------------------------------------------------------------------
@@ -101,9 +104,10 @@ current_item (const MENU * menu)
| Return Values : The index or ERR if this is an invalid item pointer
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-item_index (const ITEM *item)
+item_index(const ITEM * item)
{
- return (item && item->imenu) ? item->index : ERR;
+ T((T_CALLED("item_index(%p)"), item));
+ returnCode((item && item->imenu) ? item->index : ERR);
}
/* m_item_cur.c ends here */
diff --git a/contrib/ncurses/menu/m_item_nam.c b/contrib/ncurses/menu/m_item_nam.c
index 0fa8e59d6876..05a169340b45 100644
--- a/contrib/ncurses/menu/m_item_nam.c
+++ b/contrib/ncurses/menu/m_item_nam.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_item_nam.c,v 1.10 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_item_nam.c,v 1.14 2004/12/25 21:41:54 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -48,11 +48,12 @@ MODULE_ID("$Id: m_item_nam.c,v 1.10 2000/12/10 02:16:48 tom Exp $")
| Return Values : See above; returns NULL if item is invalid
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(const char *)
-item_name (const ITEM * item)
+item_name(const ITEM * item)
{
- return ((item) ? item->name.str : (char *)0);
+ T((T_CALLED("item_name(%p)"), item));
+ returnCPtr((item) ? item->name.str : (char *)0);
}
-
+
/*---------------------------------------------------------------------------
| Facility : libnmenu
| Function : char *item_description(const ITEM *item)
@@ -62,9 +63,10 @@ item_name (const ITEM * item)
| Return Values : See above; Returns NULL if item is invalid
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(const char *)
-item_description (const ITEM * item)
+item_description(const ITEM * item)
{
- return ((item) ? item->description.str : (char *)0);
+ T((T_CALLED("item_description(%p)"), item));
+ returnCPtr((item) ? item->description.str : (char *)0);
}
/* m_item_nam.c ends here */
diff --git a/contrib/ncurses/menu/m_item_new.c b/contrib/ncurses/menu/m_item_new.c
index 89e4469b8aa3..d7fe1f8542c2 100644
--- a/contrib/ncurses/menu/m_item_new.c
+++ b/contrib/ncurses/menu/m_item_new.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -38,7 +38,13 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_item_new.c,v 1.12 2000/12/10 02:16:48 tom Exp $")
+#if USE_WIDEC_SUPPORT
+#if HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
+#endif
+
+MODULE_ID("$Id: m_item_new.c,v 1.27 2006/12/17 19:47:09 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -50,16 +56,44 @@ MODULE_ID("$Id: m_item_new.c,v 1.12 2000/12/10 02:16:48 tom Exp $")
| Return Values : TRUE - if string is printable
| FALSE - if string contains non-printable characters
+--------------------------------------------------------------------------*/
-static bool Is_Printable_String(const char *s)
+static bool
+Is_Printable_String(const char *s)
{
+ int result = TRUE;
+
+#if USE_WIDEC_SUPPORT
+ int count = mbstowcs(0, s, 0);
+ wchar_t *temp = 0;
+
+ assert(s);
+
+ if (count > 0
+ && (temp = typeCalloc(wchar_t, (2 + (unsigned)count))) != 0)
+ {
+ int n;
+
+ mbstowcs(temp, s, (unsigned)count);
+ for (n = 0; n < count; ++n)
+ if (!iswprint((wint_t) temp[n]))
+ {
+ result = FALSE;
+ break;
+ }
+ free(temp);
+ }
+#else
assert(s);
- while(*s)
+ while (*s)
{
- if (!isprint((unsigned char)*s))
- return FALSE;
+ if (!isprint(UChar(*s)))
+ {
+ result = FALSE;
+ break;
+ }
s++;
}
- return TRUE;
+#endif
+ return result;
}
/*---------------------------------------------------------------------------
@@ -73,41 +107,45 @@ static bool Is_Printable_String(const char *s)
| Return Values : The item pointer or NULL if creation failed.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(ITEM *)
-new_item (const char *name, const char *description)
+new_item(const char *name, const char *description)
{
ITEM *item;
-
- if ( !name || (*name == '\0') || !Is_Printable_String(name) )
+
+ T((T_CALLED("new_item(\"%s\", \"%s\")"),
+ name ? name : "",
+ description ? description : ""));
+
+ if (!name || (*name == '\0') || !Is_Printable_String(name))
{
- item = (ITEM *)0;
- SET_ERROR( E_BAD_ARGUMENT );
+ item = (ITEM *) 0;
+ SET_ERROR(E_BAD_ARGUMENT);
}
else
{
- item = (ITEM *)calloc(1,sizeof(ITEM));
+ item = (ITEM *) calloc(1, sizeof(ITEM));
if (item)
{
- *item = _nc_Default_Item; /* hope we have struct assignment */
-
- item->name.length = strlen(name);
- item->name.str = name;
+ *item = _nc_Default_Item; /* hope we have struct assignment */
+
+ item->name.length = strlen(name);
+ item->name.str = name;
- if (description && (*description != '\0') &&
+ if (description && (*description != '\0') &&
Is_Printable_String(description))
{
- item->description.length = strlen(description);
- item->description.str = description;
+ item->description.length = strlen(description);
+ item->description.str = description;
}
else
{
item->description.length = 0;
- item->description.str = (char *)0;
+ item->description.str = (char *)0;
}
}
else
- SET_ERROR( E_SYSTEM_ERROR );
- }
- return(item);
+ SET_ERROR(E_SYSTEM_ERROR);
+ }
+ returnItem(item);
}
/*---------------------------------------------------------------------------
@@ -122,17 +160,19 @@ new_item (const char *name, const char *description)
| E_CONNECTED - item is still connected to a menu
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-free_item (ITEM * item)
+free_item(ITEM * item)
{
+ T((T_CALLED("free_item(%p)"), item));
+
if (!item)
- RETURN( E_BAD_ARGUMENT );
+ RETURN(E_BAD_ARGUMENT);
if (item->imenu)
- RETURN( E_CONNECTED );
-
+ RETURN(E_CONNECTED);
+
free(item);
- RETURN( E_OK );
+ RETURN(E_OK);
}
/*---------------------------------------------------------------------------
@@ -153,16 +193,18 @@ free_item (ITEM * item)
| E_SYSTEM_ERROR - no memory to store mark
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_mark (MENU * menu, const char * mark)
+set_menu_mark(MENU * menu, const char *mark)
{
- int l;
+ unsigned l;
+
+ T((T_CALLED("set_menu_mark(%p,%s)"), menu, _nc_visbuf(mark)));
- if ( mark && (*mark != '\0') && Is_Printable_String(mark) )
+ if (mark && (*mark != '\0') && Is_Printable_String(mark))
l = strlen(mark);
else
l = 0;
- if ( menu )
+ if (menu)
{
char *old_mark = menu->mark;
unsigned short old_status = menu->status;
@@ -171,13 +213,13 @@ set_menu_mark (MENU * menu, const char * mark)
{
/* If the menu is already posted, the geometry is fixed. Then
we can only accept a mark with exactly the same length */
- if (menu->marklen != l)
+ if (menu->marklen != (int)l)
RETURN(E_BAD_ARGUMENT);
- }
+ }
menu->marklen = l;
if (l)
{
- menu->mark = (char *)malloc(l+1);
+ menu->mark = (char *)malloc(l + 1);
if (menu->mark)
{
strcpy(menu->mark, mark);
@@ -192,24 +234,24 @@ set_menu_mark (MENU * menu, const char * mark)
}
else
menu->mark = (char *)0;
-
+
if ((old_status & _MARK_ALLOCATED) && old_mark)
free(old_mark);
if (menu->status & _POSTED)
{
- _nc_Draw_Menu( menu );
- _nc_Show_Menu( menu );
+ _nc_Draw_Menu(menu);
+ _nc_Show_Menu(menu);
}
else
{
/* Recalculate the geometry */
- _nc_Calculate_Item_Length_and_Width( menu );
+ _nc_Calculate_Item_Length_and_Width(menu);
}
}
else
{
- return set_menu_mark(&_nc_Default_Menu, mark);
+ returnCode(set_menu_mark(&_nc_Default_Menu, mark));
}
RETURN(E_OK);
}
@@ -223,9 +265,10 @@ set_menu_mark (MENU * menu, const char * mark)
| Return Values : The marker string pointer or NULL if no marker defined
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(const char *)
-menu_mark (const MENU * menu)
+menu_mark(const MENU * menu)
{
- return Normalize_Menu( menu )->mark;
+ T((T_CALLED("menu_mark(%p)"), menu));
+ returnPtr(Normalize_Menu(menu)->mark);
}
/* m_item_new.c */
diff --git a/contrib/ncurses/menu/m_item_opt.c b/contrib/ncurses/menu/m_item_opt.c
index c31ee49172d0..cfe7b75db392 100644
--- a/contrib/ncurses/menu/m_item_opt.c
+++ b/contrib/ncurses/menu/m_item_opt.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_item_opt.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_item_opt.c,v 1.17 2004/12/25 21:32:54 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -51,34 +51,36 @@ MODULE_ID("$Id: m_item_opt.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
| E_BAD_ARGUMENT - invalid item options
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_item_opts (ITEM *item, Item_Options opts)
-{
+set_item_opts(ITEM * item, Item_Options opts)
+{
+ T((T_CALLED("set_menu_opts(%p,%d)"), item, opts));
+
opts &= ALL_ITEM_OPTS;
if (opts & ~ALL_ITEM_OPTS)
RETURN(E_BAD_ARGUMENT);
-
+
if (item)
{
if (item->opt != opts)
- {
+ {
MENU *menu = item->imenu;
-
+
item->opt = opts;
-
+
if ((!(opts & O_SELECTABLE)) && item->value)
item->value = FALSE;
-
+
if (menu && (menu->status & _POSTED))
{
- Move_And_Post_Item( menu, item );
+ Move_And_Post_Item(menu, item);
_nc_Show_Menu(menu);
}
}
}
else
_nc_Default_Item.opt = opts;
-
+
RETURN(E_OK);
}
@@ -92,18 +94,21 @@ set_item_opts (ITEM *item, Item_Options opts)
| E_BAD_ARGUMENT - invalid options
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-item_opts_off (ITEM *item, Item_Options opts)
-{
- ITEM *citem = item; /* use a copy because set_item_opts must detect
- NULL item itself to adjust its behaviour */
+item_opts_off(ITEM * item, Item_Options opts)
+{
+ ITEM *citem = item; /* use a copy because set_item_opts must detect
+
+ NULL item itself to adjust its behavior */
+
+ T((T_CALLED("item_opts_off(%p,%d)"), item, opts));
if (opts & ~ALL_ITEM_OPTS)
RETURN(E_BAD_ARGUMENT);
else
{
- Normalize_Item(citem);
+ Normalize_Item(citem);
opts = citem->opt & ~(opts & ALL_ITEM_OPTS);
- return set_item_opts( item, opts );
+ returnCode(set_item_opts(item, opts));
}
}
@@ -117,11 +122,14 @@ item_opts_off (ITEM *item, Item_Options opts)
| E_BAD_ARGUMENT - invalid options
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-item_opts_on (ITEM *item, Item_Options opts)
+item_opts_on(ITEM * item, Item_Options opts)
{
- ITEM *citem = item; /* use a copy because set_item_opts must detect
- NULL item itself to adjust its behaviour */
-
+ ITEM *citem = item; /* use a copy because set_item_opts must detect
+
+ NULL item itself to adjust its behavior */
+
+ T((T_CALLED("item_opts_on(%p,%d)"), item, opts));
+
opts &= ALL_ITEM_OPTS;
if (opts & ~ALL_ITEM_OPTS)
RETURN(E_BAD_ARGUMENT);
@@ -129,7 +137,7 @@ item_opts_on (ITEM *item, Item_Options opts)
{
Normalize_Item(citem);
opts = citem->opt | opts;
- return set_item_opts( item, opts );
+ returnCode(set_item_opts(item, opts));
}
}
@@ -142,9 +150,10 @@ item_opts_on (ITEM *item, Item_Options opts)
| Return Values : Items options
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(Item_Options)
-item_opts (const ITEM * item)
+item_opts(const ITEM * item)
{
- return (ALL_ITEM_OPTS & Normalize_Item(item)->opt);
+ T((T_CALLED("item_opts(%p)"), item));
+ returnItemOpts(ALL_ITEM_OPTS & Normalize_Item(item)->opt);
}
/* m_item_opt.c ends here */
diff --git a/contrib/ncurses/menu/m_item_top.c b/contrib/ncurses/menu/m_item_top.c
index 1d751d94d8cb..7268a0e49f15 100644
--- a/contrib/ncurses/menu/m_item_top.c
+++ b/contrib/ncurses/menu/m_item_top.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,48 +37,50 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_item_top.c,v 1.5 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_item_top.c,v 1.10 2004/12/11 23:29:34 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
| Function : int set_top_row(MENU *menu, int row)
|
-| Description : Makes the speified row the top row in the menu
+| Description : Makes the specified row the top row in the menu
|
| Return Values : E_OK - success
| E_BAD_ARGUMENT - not a menu pointer or invalid row
| E_NOT_CONNECTED - there are no items for the menu
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_top_row (MENU * menu, int row)
+set_top_row(MENU * menu, int row)
{
ITEM *item;
-
+
+ T((T_CALLED("set_top_row(%p,%d)"), menu, row));
+
if (menu)
{
- if ( menu->status & _IN_DRIVER )
+ if (menu->status & _IN_DRIVER)
RETURN(E_BAD_STATE);
- if (menu->items == (ITEM **)0)
+ if (menu->items == (ITEM **) 0)
RETURN(E_NOT_CONNECTED);
-
- if ((row<0) || (row > (menu->rows - menu->arows)))
+
+ if ((row < 0) || (row > (menu->rows - menu->arows)))
RETURN(E_BAD_ARGUMENT);
}
else
RETURN(E_BAD_ARGUMENT);
-
+
if (row != menu->toprow)
{
- if (menu->status & _LINK_NEEDED)
+ if (menu->status & _LINK_NEEDED)
_nc_Link_Items(menu);
-
- item = menu->items[ (menu->opt&O_ROWMAJOR) ? (row*menu->cols) : row ];
+
+ item = menu->items[(menu->opt & O_ROWMAJOR) ? (row * menu->cols) : row];
assert(menu->pattern);
Reset_Pattern(menu);
_nc_New_TopRow_and_CurrentItem(menu, row, item);
}
-
- RETURN(E_OK);
+
+ RETURN(E_OK);
}
/*---------------------------------------------------------------------------
@@ -90,15 +92,16 @@ set_top_row (MENU * menu, int row)
| Return Values : The row number or ERR if there is no row
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-top_row (const MENU * menu)
+top_row(const MENU * menu)
{
+ T((T_CALLED("top_row(%p)"), menu));
if (menu && menu->items && *(menu->items))
{
- assert( (menu->toprow>=0) && (menu->toprow < menu->rows) );
- return menu->toprow;
+ assert((menu->toprow >= 0) && (menu->toprow < menu->rows));
+ returnCode(menu->toprow);
}
else
- return(ERR);
+ returnCode(ERR);
}
/* m_item_top.c ends here */
diff --git a/contrib/ncurses/menu/m_item_use.c b/contrib/ncurses/menu/m_item_use.c
index 1217735e4703..06a5baf984e8 100644
--- a/contrib/ncurses/menu/m_item_use.c
+++ b/contrib/ncurses/menu/m_item_use.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_item_use.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_item_use.c,v 1.16 2004/12/25 21:33:31 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -49,10 +49,11 @@ MODULE_ID("$Id: m_item_use.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_item_userptr (ITEM * item, void * userptr)
+set_item_userptr(ITEM * item, void *userptr)
{
+ T((T_CALLED("set_item_userptr(%p,%p)"), item, userptr));
Normalize_Item(item)->userptr = userptr;
- RETURN( E_OK );
+ RETURN(E_OK);
}
/*---------------------------------------------------------------------------
@@ -66,9 +67,10 @@ set_item_userptr (ITEM * item, void * userptr)
| NULL is returned.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void *)
-item_userptr (const ITEM * item)
+item_userptr(const ITEM * item)
{
- return Normalize_Item(item)->userptr;
+ T((T_CALLED("item_userptr(%p)"), item));
+ returnVoidPtr(Normalize_Item(item)->userptr);
}
/* m_item_use.c */
diff --git a/contrib/ncurses/menu/m_item_val.c b/contrib/ncurses/menu/m_item_val.c
index 48bde3ae4eba..cebf693fbd34 100644
--- a/contrib/ncurses/menu/m_item_val.c
+++ b/contrib/ncurses/menu/m_item_val.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,13 +37,13 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_item_val.c,v 1.9 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_item_val.c,v 1.14 2004/12/11 23:29:34 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
| Function : int set_item_value(ITEM *item, int value)
|
-| Description : Programmatically set the items selection value. This is
+| Description : Programmatically set the item's selection value. This is
| only allowed if the item is selectable at all and if
| it is not connected to a single-valued menu.
| If the item is connected to a posted menu, the menu
@@ -53,18 +53,19 @@ MODULE_ID("$Id: m_item_val.c,v 1.9 2000/12/10 02:16:48 tom Exp $")
| E_REQUEST_DENIED - not selectable or single valued menu
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_item_value (ITEM *item, bool value)
+set_item_value(ITEM * item, bool value)
{
MENU *menu;
-
+
+ T((T_CALLED("set_item_value(%p,%d)"), item, value));
if (item)
{
menu = item->imenu;
-
+
if ((!(item->opt & O_SELECTABLE)) ||
- (menu && (menu->opt & O_ONEVALUE)))
+ (menu && (menu->opt & O_ONEVALUE)))
RETURN(E_REQUEST_DENIED);
-
+
if (item->value ^ value)
{
item->value = value ? TRUE : FALSE;
@@ -72,7 +73,7 @@ set_item_value (ITEM *item, bool value)
{
if (menu->status & _POSTED)
{
- Move_And_Post_Item(menu,item);
+ Move_And_Post_Item(menu, item);
_nc_Show_Menu(menu);
}
}
@@ -80,7 +81,7 @@ set_item_value (ITEM *item, bool value)
}
else
_nc_Default_Item.value = value;
-
+
RETURN(E_OK);
}
@@ -94,9 +95,10 @@ set_item_value (ITEM *item, bool value)
| FALSE - if item is not selected
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(bool)
-item_value (const ITEM *item)
+item_value(const ITEM * item)
{
- return ((Normalize_Item(item)->value) ? TRUE : FALSE);
+ T((T_CALLED("item_value(%p)"), item));
+ returnBool((Normalize_Item(item)->value) ? TRUE : FALSE);
}
/* m_item_val.c ends here */
diff --git a/contrib/ncurses/menu/m_item_vis.c b/contrib/ncurses/menu/m_item_vis.c
index 9a2255e24331..f8fb97f028cb 100644
--- a/contrib/ncurses/menu/m_item_vis.c
+++ b/contrib/ncurses/menu/m_item_vis.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_item_vis.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_item_vis.c,v 1.15 2004/12/25 21:40:09 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -50,18 +50,19 @@ MODULE_ID("$Id: m_item_vis.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
| FALSE if invisible
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(bool)
-item_visible (const ITEM * item)
+item_visible(const ITEM * item)
{
MENU *menu;
-
- if ( item &&
- (menu=item->imenu) &&
- (menu->status & _POSTED) &&
- ( (menu->toprow + menu->arows) > (item->y) ) &&
- ( item->y >= menu->toprow) )
- return TRUE;
+
+ T((T_CALLED("item_visible(%p)"), item));
+ if (item &&
+ (menu = item->imenu) &&
+ (menu->status & _POSTED) &&
+ ((menu->toprow + menu->arows) > (item->y)) &&
+ (item->y >= menu->toprow))
+ returnBool(TRUE);
else
- return FALSE;
+ returnBool(FALSE);
}
/* m_item_vis.c ends here */
diff --git a/contrib/ncurses/menu/m_items.c b/contrib/ncurses/menu/m_items.c
index 3e21d2d15ef5..3e8f70b0fa7d 100644
--- a/contrib/ncurses/menu/m_items.c
+++ b/contrib/ncurses/menu/m_items.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_items.c,v 1.9 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_items.c,v 1.16 2005/01/16 01:02:23 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -53,39 +53,42 @@ MODULE_ID("$Id: m_items.c,v 1.9 2000/12/10 02:16:48 tom Exp $")
| passed to the function
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_items (MENU * menu, ITEM ** items)
+set_menu_items(MENU * menu, ITEM ** items)
{
+ T((T_CALLED("set_menu_items(%p,%p)"), menu, items));
+
if (!menu || (items && !(*items)))
RETURN(E_BAD_ARGUMENT);
-
- if ( menu->status & _POSTED )
+
+ if (menu->status & _POSTED)
RETURN(E_POSTED);
-
+
if (menu->items)
_nc_Disconnect_Items(menu);
-
+
if (items)
{
- if(!_nc_Connect_Items( menu, items ))
+ if (!_nc_Connect_Items(menu, items))
RETURN(E_CONNECTED);
}
-
+
menu->items = items;
RETURN(E_OK);
-}
+}
/*---------------------------------------------------------------------------
| Facility : libnmenu
| Function : ITEM **menu_items(const MENU *menu)
|
-| Description : Returns a pointer to the item pointer arry of the menu
+| Description : Returns a pointer to the item pointer array of the menu
|
| Return Values : NULL on error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(ITEM **)
-menu_items (const MENU *menu)
+menu_items(const MENU * menu)
{
- return(menu ? menu->items : (ITEM **)0);
+ T((T_CALLED("menu_items(%p)"), menu));
+ returnItemPtr(menu ? menu->items : (ITEM **) 0);
}
/*---------------------------------------------------------------------------
@@ -98,9 +101,10 @@ menu_items (const MENU *menu)
| Return Values : Number of items or -1 to indicate error.
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-item_count (const MENU *menu)
+item_count(const MENU * menu)
{
- return(menu ? menu->nitems : -1);
+ T((T_CALLED("item_count(%p)"), menu));
+ returnCode(menu ? menu->nitems : -1);
}
/* m_items.c ends here */
diff --git a/contrib/ncurses/menu/m_new.c b/contrib/ncurses/menu/m_new.c
index fc2642a7ce74..c20c66517790 100644
--- a/contrib/ncurses/menu/m_new.c
+++ b/contrib/ncurses/menu/m_new.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2006 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_new.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_new.c,v 1.18 2006/11/04 19:04:06 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -51,10 +51,12 @@ MODULE_ID("$Id: m_new.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
| Return Values : NULL on error
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(MENU *)
-new_menu (ITEM ** items)
+new_menu(ITEM ** items)
{
- MENU *menu = (MENU *)calloc(1,sizeof(MENU));
-
+ int err = E_SYSTEM_ERROR;
+ MENU *menu = (MENU *) calloc(1, sizeof(MENU));
+
+ T((T_CALLED("new_menu(%p)"), items));
if (menu)
{
*menu = _nc_Default_Menu;
@@ -63,18 +65,19 @@ new_menu (ITEM ** items)
menu->cols = menu->fcols;
if (items && *items)
{
- if (!_nc_Connect_Items(menu,items))
+ if (!_nc_Connect_Items(menu, items))
{
+ err = E_NOT_CONNECTED;
free(menu);
- menu = (MENU *)0;
+ menu = (MENU *) 0;
}
}
}
if (!menu)
- SET_ERROR(E_SYSTEM_ERROR);
+ SET_ERROR(err);
- return(menu);
+ returnMenu(menu);
}
/*---------------------------------------------------------------------------
@@ -89,17 +92,18 @@ new_menu (ITEM ** items)
| E_POSTED - Menu is already posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-free_menu (MENU * menu)
+free_menu(MENU * menu)
{
+ T((T_CALLED("free_menu(%p)"), menu));
if (!menu)
RETURN(E_BAD_ARGUMENT);
-
- if ( menu->status & _POSTED )
+
+ if (menu->status & _POSTED)
RETURN(E_POSTED);
-
- if (menu->items)
+
+ if (menu->items)
_nc_Disconnect_Items(menu);
-
+
if ((menu->status & _MARK_ALLOCATED) && menu->mark)
free(menu->mark);
diff --git a/contrib/ncurses/menu/m_opts.c b/contrib/ncurses/menu/m_opts.c
index 96a5320f0248..a7370b06f8e5 100644
--- a/contrib/ncurses/menu/m_opts.c
+++ b/contrib/ncurses/menu/m_opts.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_opts.c,v 1.13 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_opts.c,v 1.19 2004/12/25 21:36:12 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -53,8 +53,10 @@ MODULE_ID("$Id: m_opts.c,v 1.13 2000/12/10 02:16:48 tom Exp $")
| E_POSTED - menu is already posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_opts (MENU * menu, Menu_Options opts)
+set_menu_opts(MENU * menu, Menu_Options opts)
{
+ T((T_CALLED("set_menu_opts(%p,%d)"), menu, opts));
+
opts &= ALL_MENU_OPTS;
if (opts & ~ALL_MENU_OPTS)
@@ -62,18 +64,18 @@ set_menu_opts (MENU * menu, Menu_Options opts)
if (menu)
{
- if ( menu->status & _POSTED )
+ if (menu->status & _POSTED)
RETURN(E_POSTED);
- if ( (opts&O_ROWMAJOR) != (menu->opt&O_ROWMAJOR))
+ if ((opts & O_ROWMAJOR) != (menu->opt & O_ROWMAJOR))
{
/* we need this only if the layout really changed ... */
if (menu->items && menu->items[0])
{
- menu->toprow = 0;
+ menu->toprow = 0;
menu->curitem = menu->items[0];
assert(menu->curitem);
- set_menu_format( menu, menu->frows, menu->fcols );
+ set_menu_format(menu, menu->frows, menu->fcols);
}
}
@@ -83,13 +85,13 @@ set_menu_opts (MENU * menu, Menu_Options opts)
{
ITEM **item;
- if ( ((item=menu->items) != (ITEM**)0) )
- for(;*item;item++)
+ if (((item = menu->items) != (ITEM **) 0))
+ for (; *item; item++)
(*item)->value = FALSE;
}
if (opts & O_SHOWDESC) /* this also changes the geometry */
- _nc_Calculate_Item_Length_and_Width( menu );
+ _nc_Calculate_Item_Length_and_Width(menu);
}
else
_nc_Default_Menu.opt = opts;
@@ -111,10 +113,13 @@ set_menu_opts (MENU * menu, Menu_Options opts)
| E_POSTED - menu is already posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-menu_opts_off (MENU *menu, Menu_Options opts)
+menu_opts_off(MENU * menu, Menu_Options opts)
{
- MENU *cmenu = menu; /* use a copy because set_menu_opts must detect
- NULL menu itself to adjust its behaviour */
+ MENU *cmenu = menu; /* use a copy because set_menu_opts must detect
+
+ NULL menu itself to adjust its behavior */
+
+ T((T_CALLED("menu_opts_off(%p,%d)"), menu, opts));
opts &= ALL_MENU_OPTS;
if (opts & ~ALL_MENU_OPTS)
@@ -123,7 +128,7 @@ menu_opts_off (MENU *menu, Menu_Options opts)
{
Normalize_Menu(cmenu);
opts = cmenu->opt & ~opts;
- return set_menu_opts( menu, opts );
+ returnCode(set_menu_opts(menu, opts));
}
}
@@ -141,10 +146,13 @@ menu_opts_off (MENU *menu, Menu_Options opts)
| E_POSTED - menu is already posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-menu_opts_on (MENU * menu, Menu_Options opts)
+menu_opts_on(MENU * menu, Menu_Options opts)
{
- MENU *cmenu = menu; /* use a copy because set_menu_opts must detect
- NULL menu itself to adjust its behaviour */
+ MENU *cmenu = menu; /* use a copy because set_menu_opts must detect
+
+ NULL menu itself to adjust its behavior */
+
+ T((T_CALLED("menu_opts_on(%p,%d)"), menu, opts));
opts &= ALL_MENU_OPTS;
if (opts & ~ALL_MENU_OPTS)
@@ -153,7 +161,7 @@ menu_opts_on (MENU * menu, Menu_Options opts)
{
Normalize_Menu(cmenu);
opts = cmenu->opt | opts;
- return set_menu_opts(menu, opts);
+ returnCode(set_menu_opts(menu, opts));
}
}
@@ -166,9 +174,10 @@ menu_opts_on (MENU * menu, Menu_Options opts)
| Return Values : Menu options
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(Menu_Options)
-menu_opts (const MENU *menu)
+menu_opts(const MENU * menu)
{
- return (ALL_MENU_OPTS & Normalize_Menu( menu )->opt);
+ T((T_CALLED("menu_opts(%p)"), menu));
+ returnMenuOpts(ALL_MENU_OPTS & Normalize_Menu(menu)->opt);
}
/* m_opts.c ends here */
diff --git a/contrib/ncurses/menu/m_pad.c b/contrib/ncurses/menu/m_pad.c
index d7161e289a1e..76083ba36d34 100644
--- a/contrib/ncurses/menu/m_pad.c
+++ b/contrib/ncurses/menu/m_pad.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_pad.c,v 1.5 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_pad.c,v 1.10 2004/12/25 21:40:58 tom Exp $")
/* Macro to redraw menu if it is posted and changed */
#define Refresh_Menu(menu) \
@@ -59,18 +59,20 @@ MODULE_ID("$Id: m_pad.c,v 1.5 2000/12/10 02:16:48 tom Exp $")
| E_BAD_ARGUMENT - an invalid value has been passed
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_pad (MENU *menu, int pad)
+set_menu_pad(MENU * menu, int pad)
{
- bool do_refresh = (menu != (MENU*)0);
+ bool do_refresh = (menu != (MENU *) 0);
- if (!isprint((unsigned char)pad))
+ T((T_CALLED("set_menu_pad(%p,%d)"), menu, pad));
+
+ if (!isprint(UChar(pad)))
RETURN(E_BAD_ARGUMENT);
-
- Normalize_Menu( menu );
+
+ Normalize_Menu(menu);
menu->pad = pad;
-
+
if (do_refresh)
- Refresh_Menu( menu );
+ Refresh_Menu(menu);
RETURN(E_OK);
}
@@ -84,9 +86,10 @@ set_menu_pad (MENU *menu, int pad)
| Return Values : The pad character
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-menu_pad (const MENU * menu)
+menu_pad(const MENU * menu)
{
- return (Normalize_Menu( menu ) -> pad);
+ T((T_CALLED("menu_pad(%p)"), menu));
+ returnCode(Normalize_Menu(menu)->pad);
}
/* m_pad.c ends here */
diff --git a/contrib/ncurses/menu/m_pattern.c b/contrib/ncurses/menu/m_pattern.c
index 3e0590038c8f..1171390e214c 100644
--- a/contrib/ncurses/menu/m_pattern.c
+++ b/contrib/ncurses/menu/m_pattern.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_pattern.c,v 1.6 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_pattern.c,v 1.15 2006/11/04 18:46:39 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -51,9 +51,12 @@ MODULE_ID("$Id: m_pattern.c,v 1.6 2000/12/10 02:16:48 tom Exp $")
| PatternString - as expected
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(char *)
-menu_pattern (const MENU * menu)
+menu_pattern(const MENU * menu)
{
- return (menu ? (menu->pattern ? menu->pattern : "") : (char *)0);
+ static char empty[] = "";
+
+ T((T_CALLED("menu_pattern(%p)"), menu));
+ returnPtr(menu ? (menu->pattern ? menu->pattern : empty) : 0);
}
/*---------------------------------------------------------------------------
@@ -65,54 +68,56 @@ menu_pattern (const MENU * menu)
|
| Return Values : E_OK - success
| E_BAD_ARGUMENT - invalid menu or pattern pointer
-| E_NOT_CONNECTED - no items connected to menu
| E_BAD_STATE - menu in user hook routine
+| E_NOT_CONNECTED - no items connected to menu
| E_NO_MATCH - no item matches pattern
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_pattern (MENU *menu, const char *p)
+set_menu_pattern(MENU * menu, const char *p)
{
ITEM *matchitem;
- int matchpos;
-
- if (!menu || !p)
+ int matchpos;
+
+ T((T_CALLED("set_menu_pattern(%p,%s)"), menu, _nc_visbuf(p)));
+
+ if (!menu || !p)
RETURN(E_BAD_ARGUMENT);
-
+
if (!(menu->items))
RETURN(E_NOT_CONNECTED);
-
- if ( menu->status & _IN_DRIVER )
+
+ if (menu->status & _IN_DRIVER)
RETURN(E_BAD_STATE);
-
+
Reset_Pattern(menu);
-
+
if (!(*p))
{
pos_menu_cursor(menu);
RETURN(E_OK);
}
-
- if (menu->status & _LINK_NEEDED)
+
+ if (menu->status & _LINK_NEEDED)
_nc_Link_Items(menu);
-
- matchpos = menu->toprow;
+
+ matchpos = menu->toprow;
matchitem = menu->curitem;
assert(matchitem);
-
- while(*p)
+
+ while (*p)
{
- if ( !isprint((unsigned char)(*p)) ||
- (_nc_Match_Next_Character_In_Item_Name(menu,*p,&matchitem) != E_OK) )
+ if (!isprint(UChar(*p)) ||
+ (_nc_Match_Next_Character_In_Item_Name(menu, *p, &matchitem) != E_OK))
{
Reset_Pattern(menu);
pos_menu_cursor(menu);
RETURN(E_NO_MATCH);
}
p++;
- }
-
+ }
+
/* This is reached if there was a match. So we position to the new item */
- Adjust_Current_Item(menu,matchpos,matchitem);
+ Adjust_Current_Item(menu, matchpos, matchitem);
RETURN(E_OK);
}
diff --git a/contrib/ncurses/menu/m_post.c b/contrib/ncurses/menu/m_post.c
index 0d24cc00618a..657d0f18420b 100644
--- a/contrib/ncurses/menu/m_post.c
+++ b/contrib/ncurses/menu/m_post.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,113 +37,117 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_post.c,v 1.17 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_post.c,v 1.26 2004/12/25 23:57:04 tom Exp $")
/*---------------------------------------------------------------------------
-| Facility : libnmenu
-| Function : void _nc_Post_Item(MENU *menu, ITEM *item)
-|
+| Facility : libnmenu
+| Function : void _nc_Post_Item(MENU *menu, ITEM *item)
+|
| Description : Draw the item in the menus window at the current
-| window position
+| window position
|
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-_nc_Post_Item (const MENU * menu, const ITEM * item)
+_nc_Post_Item(const MENU * menu, const ITEM * item)
{
int i;
chtype ch;
int item_x, item_y;
int count = 0;
- bool isfore = FALSE, isback=FALSE, isgrey = FALSE;
-
+ bool isfore = FALSE, isback = FALSE, isgrey = FALSE;
+ int name_len;
+ int desc_len;
+
assert(menu->win);
-
- getyx(menu->win,item_y,item_x);
-
+
+ getyx(menu->win, item_y, item_x);
+
/* We need a marker iff
- it is a onevalued menu and it is the current item
- or it has a selection value
- */
- wattron(menu->win,menu->back);
- if (item->value || (item==menu->curitem))
+ */
+ wattron(menu->win, menu->back);
+ if (item->value || (item == menu->curitem))
{
- if (menu->marklen)
+ if (menu->marklen)
{
/* In a multi selection menu we use the fore attribute
for a selected marker that is not the current one.
This improves visualization of the menu, because now
always the 'normal' marker denotes the current
item. */
- if (!(menu->opt & O_ONEVALUE) && item->value && item!=menu->curitem)
+ if (!(menu->opt & O_ONEVALUE) && item->value && item != menu->curitem)
{
- wattron(menu->win,menu->fore);
+ wattron(menu->win, menu->fore);
isfore = TRUE;
}
- waddstr(menu->win,menu->mark);
+ waddstr(menu->win, menu->mark);
if (isfore)
{
- wattron(menu->win,menu->fore);
+ wattron(menu->win, menu->fore);
isfore = FALSE;
}
}
}
- else /* otherwise we have to wipe out the marker area */
- for(ch=' ',i=menu->marklen;i>0;i--)
- waddch(menu->win,ch);
- wattroff(menu->win,menu->back);
+ else /* otherwise we have to wipe out the marker area */
+ for (ch = ' ', i = menu->marklen; i > 0; i--)
+ waddch(menu->win, ch);
+ wattroff(menu->win, menu->back);
count += menu->marklen;
/* First we have to calculate the attribute depending on selectability
and selection status
- */
+ */
if (!(item->opt & O_SELECTABLE))
{
- wattron(menu->win,menu->grey);
+ wattron(menu->win, menu->grey);
isgrey = TRUE;
}
else
{
- if (item->value || item==menu->curitem)
+ if (item->value || item == menu->curitem)
{
- wattron(menu->win,menu->fore);
+ wattron(menu->win, menu->fore);
isfore = TRUE;
}
else
{
- wattron(menu->win,menu->back);
+ wattron(menu->win, menu->back);
isback = TRUE;
}
}
- waddnstr(menu->win,item->name.str,item->name.length);
- for(ch=' ',i=menu->namelen-item->name.length;i>0;i--)
+ waddnstr(menu->win, item->name.str, item->name.length);
+ name_len = _nc_Calculate_Text_Width(&(item->name));
+ for (ch = ' ', i = menu->namelen - name_len; i > 0; i--)
{
- waddch(menu->win,ch);
+ waddch(menu->win, ch);
}
count += menu->namelen;
/* Show description if required and available */
- if ( (menu->opt & O_SHOWDESC) && menu->desclen>0 )
+ if ((menu->opt & O_SHOWDESC) && menu->desclen > 0)
{
- int m = menu->spc_desc/2;
+ int m = menu->spc_desc / 2;
int cy = -1, cx = -1;
- for(ch=' ',i=0; i < menu->spc_desc; i++)
+ for (ch = ' ', i = 0; i < menu->spc_desc; i++)
{
- if (i==m)
+ if (i == m)
{
- waddch(menu->win,menu->pad);
- getyx(menu->win,cy,cx);
+ waddch(menu->win, menu->pad);
+ getyx(menu->win, cy, cx);
}
else
- waddch(menu->win,ch);
+ waddch(menu->win, ch);
}
if (item->description.length)
- waddnstr(menu->win,item->description.str,item->description.length);
- for(ch=' ',i=menu->desclen-item->description.length; i>0; i--)
+ waddnstr(menu->win, item->description.str, item->description.length);
+ desc_len = _nc_Calculate_Text_Width(&(item->description));
+ for (ch = ' ', i = menu->desclen - desc_len; i > 0; i--)
{
- waddch(menu->win,ch);
+ waddch(menu->win, ch);
}
count += menu->desclen + menu->spc_desc;
@@ -151,47 +155,49 @@ _nc_Post_Item (const MENU * menu, const ITEM * item)
{
int j, k, ncy, ncx;
- assert(cx>=0 && cy>=0);
- getyx(menu->win,ncy,ncx);
- if (isgrey) wattroff(menu->win,menu->grey);
- else if (isfore) wattroff(menu->win,menu->fore);
- wattron(menu->win,menu->back);
- for(j=1; j < menu->spc_rows;j++)
+ assert(cx >= 0 && cy >= 0);
+ getyx(menu->win, ncy, ncx);
+ if (isgrey)
+ wattroff(menu->win, menu->grey);
+ else if (isfore)
+ wattroff(menu->win, menu->fore);
+ wattron(menu->win, menu->back);
+ for (j = 1; j < menu->spc_rows; j++)
{
- if ((item_y+j) < getmaxy(menu->win))
+ if ((item_y + j) < getmaxy(menu->win))
{
- wmove (menu->win,item_y+j,item_x);
- for(k=0;k<count;k++)
- waddch(menu->win,' ');
+ wmove(menu->win, item_y + j, item_x);
+ for (k = 0; k < count; k++)
+ waddch(menu->win, ' ');
}
- if ((cy+j) < getmaxy(menu->win))
- mvwaddch(menu->win,cy+j,cx-1,menu->pad);
+ if ((cy + j) < getmaxy(menu->win))
+ mvwaddch(menu->win, cy + j, cx - 1, menu->pad);
}
- wmove(menu->win,ncy,ncx);
+ wmove(menu->win, ncy, ncx);
if (!isback)
- wattroff(menu->win,menu->back);
+ wattroff(menu->win, menu->back);
}
}
-
+
/* Remove attributes */
if (isfore)
- wattroff(menu->win,menu->fore);
+ wattroff(menu->win, menu->fore);
if (isback)
- wattroff(menu->win,menu->back);
+ wattroff(menu->win, menu->back);
if (isgrey)
- wattroff(menu->win,menu->grey);
-}
+ wattroff(menu->win, menu->grey);
+}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : void _nc_Draw_Menu(const MENU *)
-|
+|
| Description : Display the menu in its windows
|
| Return Values : -
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void)
-_nc_Draw_Menu (const MENU * menu)
+_nc_Draw_Menu(const MENU * menu)
{
ITEM *item = menu->items[0];
ITEM *lasthor, *lastvert;
@@ -202,75 +208,78 @@ _nc_Draw_Menu (const MENU * menu)
assert(item && menu->win);
s_bkgd = getbkgd(menu->win);
- wbkgdset(menu->win,menu->back);
+ wbkgdset(menu->win, menu->back);
werase(menu->win);
- wbkgdset(menu->win,s_bkgd);
+ wbkgdset(menu->win, s_bkgd);
- lastvert = (menu->opt & O_NONCYCLIC) ? (ITEM *)0 : item;
+ lastvert = (menu->opt & O_NONCYCLIC) ? (ITEM *) 0 : item;
do
- {
- wmove(menu->win,y,0);
+ {
+ wmove(menu->win, y, 0);
+
+ hitem = item;
+ lasthor = (menu->opt & O_NONCYCLIC) ? (ITEM *) 0 : hitem;
- hitem = item;
- lasthor = (menu->opt & O_NONCYCLIC) ? (ITEM *)0 : hitem;
-
do
{
- _nc_Post_Item( menu, hitem);
+ _nc_Post_Item(menu, hitem);
- wattron(menu->win,menu->back);
- if ( ((hitem = hitem->right) != lasthor) && hitem )
+ wattron(menu->win, menu->back);
+ if (((hitem = hitem->right) != lasthor) && hitem)
{
- int i,j, cy, cx;
+ int i, j, cy, cx;
chtype ch = ' ';
- getyx(menu->win,cy,cx);
- for(j=0;j<menu->spc_rows;j++)
+ getyx(menu->win, cy, cx);
+ for (j = 0; j < menu->spc_rows; j++)
{
- wmove(menu->win,cy+j,cx);
- for(i=0; i < menu->spc_cols; i++)
+ wmove(menu->win, cy + j, cx);
+ for (i = 0; i < menu->spc_cols; i++)
{
- waddch( menu->win,ch);
+ waddch(menu->win, ch);
}
}
- wmove(menu->win,cy,cx+menu->spc_cols);
+ wmove(menu->win, cy, cx + menu->spc_cols);
}
- } while (hitem && (hitem != lasthor));
- wattroff(menu->win,menu->back);
-
+ }
+ while (hitem && (hitem != lasthor));
+ wattroff(menu->win, menu->back);
+
item = item->down;
y += menu->spc_rows;
-
- } while( item && (item != lastvert) );
+
+ }
+ while (item && (item != lastvert));
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : int post_menu(MENU *)
-|
+|
| Description : Post a menu to the screen. This makes it visible.
|
| Return Values : E_OK - success
| E_BAD_ARGUMENT - not a valid menu pointer
| E_SYSTEM_ERROR - error in lower layers
-| E_NO_ROOM - Menu to large for screen
| E_NOT_CONNECTED - No items connected to menu
| E_BAD_STATE - Menu in userexit routine
| E_POSTED - Menu already posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-post_menu (MENU * menu)
+post_menu(MENU * menu)
{
+ T((T_CALLED("post_menu(%p)"), menu));
+
if (!menu)
RETURN(E_BAD_ARGUMENT);
-
- if ( menu->status & _IN_DRIVER )
+
+ if (menu->status & _IN_DRIVER)
RETURN(E_BAD_STATE);
- if ( menu->status & _POSTED )
+ if (menu->status & _POSTED)
RETURN(E_POSTED);
-
+
if (menu->items && *(menu->items))
{
int y;
@@ -278,54 +287,50 @@ post_menu (MENU * menu)
WINDOW *win = Get_Menu_Window(menu);
int maxy = getmaxy(win);
- int maxx = getmaxx(win);
-
- if (maxx < menu->width || maxy < menu->height)
- RETURN(E_NO_ROOM);
- if ( (menu->win = newpad(h,menu->width)) )
+ if ((menu->win = newpad(h, menu->width)))
{
y = (maxy >= h) ? h : maxy;
- if (y>=menu->height)
+ if (y >= menu->height)
y = menu->height;
- if(!(menu->sub = subpad(menu->win,y,menu->width,0,0)))
+ if (!(menu->sub = subpad(menu->win, y, menu->width, 0, 0)))
RETURN(E_SYSTEM_ERROR);
}
- else
- RETURN(E_SYSTEM_ERROR);
-
- if (menu->status & _LINK_NEEDED)
+ else
+ RETURN(E_SYSTEM_ERROR);
+
+ if (menu->status & _LINK_NEEDED)
_nc_Link_Items(menu);
}
else
RETURN(E_NOT_CONNECTED);
-
+
menu->status |= _POSTED;
- if (!(menu->opt&O_ONEVALUE))
+ if (!(menu->opt & O_ONEVALUE))
{
ITEM **items;
-
- for(items=menu->items;*items;items++)
+
+ for (items = menu->items; *items; items++)
{
(*items)->value = FALSE;
}
}
-
+
_nc_Draw_Menu(menu);
-
- Call_Hook(menu,menuinit);
- Call_Hook(menu,iteminit);
-
+
+ Call_Hook(menu, menuinit);
+ Call_Hook(menu, iteminit);
+
_nc_Show_Menu(menu);
-
+
RETURN(E_OK);
}
/*---------------------------------------------------------------------------
-| Facility : libnmenu
+| Facility : libnmenu
| Function : int unpost_menu(MENU *)
-|
+|
| Description : Detach menu from screen
|
| Return Values : E_OK - success
@@ -334,36 +339,38 @@ post_menu (MENU * menu)
| E_NOT_POSTED - menu is not posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-unpost_menu (MENU * menu)
+unpost_menu(MENU * menu)
{
WINDOW *win;
-
+
+ T((T_CALLED("unpost_menu(%p)"), menu));
+
if (!menu)
RETURN(E_BAD_ARGUMENT);
-
- if ( menu->status & _IN_DRIVER )
+
+ if (menu->status & _IN_DRIVER)
RETURN(E_BAD_STATE);
- if ( !( menu->status & _POSTED ) )
+ if (!(menu->status & _POSTED))
RETURN(E_NOT_POSTED);
-
- Call_Hook(menu,itemterm);
- Call_Hook(menu,menuterm);
-
+
+ Call_Hook(menu, itemterm);
+ Call_Hook(menu, menuterm);
+
win = Get_Menu_Window(menu);
werase(win);
wsyncup(win);
-
+
assert(menu->sub);
delwin(menu->sub);
menu->sub = (WINDOW *)0;
-
+
assert(menu->win);
delwin(menu->win);
menu->win = (WINDOW *)0;
-
+
menu->status &= ~_POSTED;
-
+
RETURN(E_OK);
}
diff --git a/contrib/ncurses/menu/m_req_name.c b/contrib/ncurses/menu/m_req_name.c
index 130bd6f6e0a0..01fe79e3be84 100644
--- a/contrib/ncurses/menu/m_req_name.c
+++ b/contrib/ncurses/menu/m_req_name.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,27 +37,29 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_req_name.c,v 1.13 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_req_name.c,v 1.19 2005/04/16 16:59:52 tom Exp $")
-static const char *request_names[ MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1 ] = {
- "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" ,
+static const char *request_names[MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1] =
+{
+ "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"
+ "BACK_PATTERN",
+ "NEXT_MATCH",
+ "PREV_MATCH"
};
+
#define A_SIZE (sizeof(request_names)/sizeof(request_names[0]))
/*---------------------------------------------------------------------------
@@ -70,18 +72,18 @@ static const char *request_names[ MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1 ] = {
| NULL - on invalid request code
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(const char *)
-menu_request_name ( int request )
+menu_request_name(int request)
{
- if ( (request < MIN_MENU_COMMAND) || (request > MAX_MENU_COMMAND) )
+ T((T_CALLED("menu_request_name(%d)"), request));
+ if ((request < MIN_MENU_COMMAND) || (request > MAX_MENU_COMMAND))
{
SET_ERROR(E_BAD_ARGUMENT);
- return (const char *)0;
+ returnCPtr((const char *)0);
}
else
- return request_names[ request - MIN_MENU_COMMAND ];
+ returnCPtr(request_names[request - MIN_MENU_COMMAND]);
}
-
/*---------------------------------------------------------------------------
| Facility : libnmenu
| Function : int menu_request_by_name (const char *str);
@@ -92,28 +94,30 @@ menu_request_name ( int request )
| E_NO_MATCH - request not found
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-menu_request_by_name ( const char *str )
-{
+menu_request_by_name(const char *str)
+{
/* because the table is so small, it doesn't really hurt
to run sequentially through it.
- */
+ */
unsigned int i = 0;
char buf[16];
-
+
+ T((T_CALLED("menu_request_by_name(%s)"), _nc_visbuf(str)));
+
if (str)
{
- strncpy(buf,str,sizeof(buf));
- while( (i<sizeof(buf)) && (buf[i] != '\0') )
+ strncpy(buf, str, sizeof(buf));
+ while ((i < sizeof(buf)) && (buf[i] != '\0'))
{
buf[i] = toupper(buf[i]);
i++;
}
-
- for (i=0; i < A_SIZE; i++)
+
+ for (i = 0; i < A_SIZE; i++)
{
- if (strncmp(request_names[i],buf,sizeof(buf))==0)
- return MIN_MENU_COMMAND + i;
- }
+ if (strncmp(request_names[i], buf, sizeof(buf)) == 0)
+ returnCode(MIN_MENU_COMMAND + (int)i);
+ }
}
RETURN(E_NO_MATCH);
}
diff --git a/contrib/ncurses/menu/m_scale.c b/contrib/ncurses/menu/m_scale.c
index e5c1101547b5..96c2d84eb3af 100644
--- a/contrib/ncurses/menu/m_scale.c
+++ b/contrib/ncurses/menu/m_scale.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_scale.c,v 1.5 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_scale.c,v 1.9 2004/12/11 23:29:34 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -51,11 +51,13 @@ MODULE_ID("$Id: m_scale.c,v 1.5 2000/12/10 02:16:48 tom Exp $")
| E_NOT_CONNECTED - no items are connected to menu
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-scale_menu (const MENU *menu, int *rows, int *cols)
+scale_menu(const MENU * menu, int *rows, int *cols)
{
- if (!menu)
- RETURN( E_BAD_ARGUMENT );
-
+ T((T_CALLED("scale_menu(%p,%p,%p)"), menu, rows, cols));
+
+ if (!menu)
+ RETURN(E_BAD_ARGUMENT);
+
if (menu->items && *(menu->items))
{
if (rows)
@@ -65,8 +67,7 @@ scale_menu (const MENU *menu, int *rows, int *cols)
RETURN(E_OK);
}
else
- RETURN( E_NOT_CONNECTED );
+ RETURN(E_NOT_CONNECTED);
}
/* m_scale.c ends here */
-
diff --git a/contrib/ncurses/menu/m_spacing.c b/contrib/ncurses/menu/m_spacing.c
index b384ef3ccaf8..039bbe4d59b1 100644
--- a/contrib/ncurses/menu/m_spacing.c
+++ b/contrib/ncurses/menu/m_spacing.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_spacing.c,v 1.12 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_spacing.c,v 1.17 2004/12/11 23:29:34 tom Exp $")
#define MAX_SPC_DESC ((TABSIZE) ? (TABSIZE) : 8)
#define MAX_SPC_COLS ((TABSIZE) ? (TABSIZE) : 8)
@@ -47,15 +47,17 @@ MODULE_ID("$Id: m_spacing.c,v 1.12 2000/12/10 02:16:48 tom Exp $")
| Facility : libnmenu
| Function : int set_menu_spacing(MENU *menu,int desc, int r, int c);
|
-| Description : Set the spacing between entried
+| Description : Set the spacing between entries
|
| Return Values : E_OK - on success
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_spacing
-(MENU *menu, int s_desc, int s_row, int s_col )
+set_menu_spacing(MENU * menu, int s_desc, int s_row, int s_col)
{
- MENU *m; /* split for ATAC workaround */
+ MENU *m; /* split for ATAC workaround */
+
+ T((T_CALLED("set_menu_spacing(%p,%d,%d,%d)"), menu, s_desc, s_row, s_col));
+
m = Normalize_Menu(menu);
assert(m);
@@ -63,19 +65,18 @@ set_menu_spacing
RETURN(E_POSTED);
if (((s_desc < 0) || (s_desc > MAX_SPC_DESC)) ||
- ((s_row < 0) || (s_row > MAX_SPC_ROWS)) ||
- ((s_col < 0) || (s_col > MAX_SPC_COLS)))
+ ((s_row < 0) || (s_row > MAX_SPC_ROWS)) ||
+ ((s_col < 0) || (s_col > MAX_SPC_COLS)))
RETURN(E_BAD_ARGUMENT);
m->spc_desc = s_desc ? s_desc : 1;
- m->spc_rows = s_row ? s_row : 1;
- m->spc_cols = s_col ? s_col : 1;
+ m->spc_rows = s_row ? s_row : 1;
+ m->spc_cols = s_col ? s_col : 1;
_nc_Calculate_Item_Length_and_Width(m);
RETURN(E_OK);
}
-
/*---------------------------------------------------------------------------
| Facility : libnmenu
| Function : int menu_spacing (const MENU *,int *,int *,int *);
@@ -85,15 +86,21 @@ set_menu_spacing
| Return Values : E_OK - on success
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-menu_spacing ( const MENU *menu, int* s_desc, int* s_row, int* s_col)
+menu_spacing(const MENU * menu, int *s_desc, int *s_row, int *s_col)
{
- const MENU *m; /* split for ATAC workaround */
+ const MENU *m; /* split for ATAC workaround */
+
+ T((T_CALLED("menu_spacing(%p,%p,%p,%p)"), menu, s_desc, s_row, s_col));
+
m = Normalize_Menu(menu);
assert(m);
- if (s_desc) *s_desc = m->spc_desc;
- if (s_row) *s_row = m->spc_rows;
- if (s_col) *s_col = m->spc_cols;
+ if (s_desc)
+ *s_desc = m->spc_desc;
+ if (s_row)
+ *s_row = m->spc_rows;
+ if (s_col)
+ *s_col = m->spc_cols;
RETURN(E_OK);
}
diff --git a/contrib/ncurses/menu/m_sub.c b/contrib/ncurses/menu/m_sub.c
index 43d8521445f4..82649c57b130 100644
--- a/contrib/ncurses/menu/m_sub.c
+++ b/contrib/ncurses/menu/m_sub.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_sub.c,v 1.5 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_sub.c,v 1.10 2004/12/25 21:38:31 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -49,18 +49,20 @@ MODULE_ID("$Id: m_sub.c,v 1.5 2000/12/10 02:16:48 tom Exp $")
| E_POSTED - menu is already posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_sub (MENU *menu, WINDOW *win)
+set_menu_sub(MENU * menu, WINDOW *win)
{
+ T((T_CALLED("set_menu_sub(%p,%p)"), menu, win));
+
if (menu)
{
- if ( menu->status & _POSTED )
+ if (menu->status & _POSTED)
RETURN(E_POSTED);
menu->usersub = win;
_nc_Calculate_Item_Length_and_Width(menu);
}
else
_nc_Default_Menu.usersub = win;
-
+
RETURN(E_OK);
}
@@ -73,10 +75,12 @@ set_menu_sub (MENU *menu, WINDOW *win)
| Return Values : NULL on error, otherwise a pointer to the window
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(WINDOW *)
-menu_sub (const MENU * menu)
+menu_sub(const MENU * menu)
{
- const MENU* m = Normalize_Menu(menu);
- return Get_Menu_Window(m);
+ const MENU *m = Normalize_Menu(menu);
+
+ T((T_CALLED("menu_sub(%p)"), menu));
+ returnWin(Get_Menu_Window(m));
}
/* m_sub.c ends here */
diff --git a/contrib/ncurses/menu/m_trace.c b/contrib/ncurses/menu/m_trace.c
new file mode 100644
index 000000000000..0f9f90273a6a
--- /dev/null
+++ b/contrib/ncurses/menu/m_trace.c
@@ -0,0 +1,77 @@
+/****************************************************************************
+ * Copyright (c) 2004,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 *
+ * "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 "menu.priv.h"
+
+MODULE_ID("$Id: m_trace.c,v 1.3 2005/01/16 01:06:11 tom Exp $")
+
+NCURSES_EXPORT(ITEM *)
+_nc_retrace_item(ITEM * code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
+NCURSES_EXPORT(ITEM **)
+_nc_retrace_item_ptr(ITEM ** code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
+NCURSES_EXPORT(Item_Options)
+_nc_retrace_item_opts(Item_Options code)
+{
+ T((T_RETURN("%d"), code));
+ return code;
+}
+
+NCURSES_EXPORT(MENU *)
+_nc_retrace_menu(MENU * code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
+NCURSES_EXPORT(Menu_Hook)
+_nc_retrace_menu_hook(Menu_Hook code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
+NCURSES_EXPORT(Menu_Options)
+_nc_retrace_menu_opts(Menu_Options code)
+{
+ T((T_RETURN("%d"), code));
+ return code;
+}
diff --git a/contrib/ncurses/menu/m_userptr.c b/contrib/ncurses/menu/m_userptr.c
index cab4d3c3d9b5..7b178b25a175 100644
--- a/contrib/ncurses/menu/m_userptr.c
+++ b/contrib/ncurses/menu/m_userptr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_userptr.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_userptr.c,v 1.16 2004/12/25 21:38:55 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -49,10 +49,11 @@ MODULE_ID("$Id: m_userptr.c,v 1.11 2000/12/10 02:16:48 tom Exp $")
| Return Values : E_OK - success
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_userptr (MENU * menu, void * userptr)
+set_menu_userptr(MENU * menu, void *userptr)
{
+ T((T_CALLED("set_menu_userptr(%p,%p)"), menu, userptr));
Normalize_Menu(menu)->userptr = userptr;
- RETURN( E_OK );
+ RETURN(E_OK);
}
/*---------------------------------------------------------------------------
@@ -66,9 +67,10 @@ set_menu_userptr (MENU * menu, void * userptr)
| NULL is returned
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(void *)
-menu_userptr (const MENU * menu)
+menu_userptr(const MENU * menu)
{
- return( Normalize_Menu(menu)->userptr);
+ T((T_CALLED("menu_userptr(%p)"), menu));
+ returnVoidPtr(Normalize_Menu(menu)->userptr);
}
/* m_userptr.c ends here */
diff --git a/contrib/ncurses/menu/m_win.c b/contrib/ncurses/menu/m_win.c
index 85bb06f032af..c3f857f71688 100644
--- a/contrib/ncurses/menu/m_win.c
+++ b/contrib/ncurses/menu/m_win.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
/***************************************************************************
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_win.c,v 1.10 2000/12/10 02:16:48 tom Exp $")
+MODULE_ID("$Id: m_win.c,v 1.15 2004/12/25 21:39:20 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -49,18 +49,20 @@ MODULE_ID("$Id: m_win.c,v 1.10 2000/12/10 02:16:48 tom Exp $")
| E_POSTED - menu is already posted
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(int)
-set_menu_win (MENU *menu, WINDOW *win)
+set_menu_win(MENU * menu, WINDOW *win)
{
+ T((T_CALLED("set_menu_win(%p,%p)"), menu, win));
+
if (menu)
{
- if ( menu->status & _POSTED )
+ if (menu->status & _POSTED)
RETURN(E_POSTED);
menu->userwin = win;
_nc_Calculate_Item_Length_and_Width(menu);
}
else
_nc_Default_Menu.userwin = win;
-
+
RETURN(E_OK);
}
@@ -73,10 +75,12 @@ set_menu_win (MENU *menu, WINDOW *win)
| Return Values : NULL on error, otherwise pointer to window
+--------------------------------------------------------------------------*/
NCURSES_EXPORT(WINDOW *)
-menu_win (const MENU *menu)
+menu_win(const MENU * menu)
{
- const MENU* m = Normalize_Menu(menu);
- return (m->userwin ? m->userwin : stdscr);
+ const MENU *m = Normalize_Menu(menu);
+
+ T((T_CALLED("menu_win(%p)"), menu));
+ returnWin(m->userwin ? m->userwin : stdscr);
}
/* m_win.c ends here */
diff --git a/contrib/ncurses/menu/menu.h b/contrib/ncurses/menu/menu.h
index 8c12894fdda4..f0b1f60b2259 100644
--- a/contrib/ncurses/menu/menu.h
+++ b/contrib/ncurses/menu/menu.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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 *
@@ -27,9 +27,11 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+/* $Id: menu.h,v 1.18 2003/11/08 20:48:24 tom Exp $ */
+
#ifndef ETI_MENU
#define ETI_MENU
@@ -76,7 +78,7 @@ typedef struct tagITEM
short x;
bool value; /* Selection value */
- struct tagITEM *left; /* neighbour items */
+ struct tagITEM *left; /* neighbor items */
struct tagITEM *right;
struct tagITEM *up;
struct tagITEM *down;
diff --git a/contrib/ncurses/menu/menu.priv.h b/contrib/ncurses/menu/menu.priv.h
index 1b2c6283383b..10d3537594da 100644
--- a/contrib/ncurses/menu/menu.priv.h
+++ b/contrib/ncurses/menu/menu.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,9 +27,11 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+/* $Id: menu.priv.h,v 1.22 2005/01/16 01:02:23 tom Exp $ */
+
/***************************************************************************
* Module menu.priv.h *
* Top level private header file for all libnmenu modules *
@@ -38,9 +40,7 @@
#ifndef MENU_PRIV_H_incl
#define MENU_PRIV_H_incl 1
-#include <ncurses_cfg.h>
-#include <curses.h>
-
+#include "curses.priv.h"
#include "mf_common.h"
#include "menu.h"
@@ -106,10 +106,13 @@ extern NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu;
{ (menu)->pindex = 0; \
(menu)->pattern[0] = '\0'; }
+#define UChar(c) ((unsigned char)(c))
+
/* Internal functions. */
extern NCURSES_EXPORT(void) _nc_Draw_Menu (const MENU *);
extern NCURSES_EXPORT(void) _nc_Show_Menu (const MENU *);
extern NCURSES_EXPORT(void) _nc_Calculate_Item_Length_and_Width (MENU *);
+extern NCURSES_EXPORT(int) _nc_Calculate_Text_Width(const TEXT *);
extern NCURSES_EXPORT(void) _nc_Post_Item (const MENU *, const ITEM *);
extern NCURSES_EXPORT(bool) _nc_Connect_Items (MENU *, ITEM **);
extern NCURSES_EXPORT(void) _nc_Disconnect_Items (MENU *);
@@ -119,4 +122,31 @@ extern NCURSES_EXPORT(int) _nc_Match_Next_Character_In_Item_Name (MENU*,int,ITE
extern NCURSES_EXPORT(int) _nc_menu_cursor_pos (const MENU* menu, const ITEM* item,
int* pY, int* pX);
+#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)
+
+extern NCURSES_EXPORT(ITEM *) _nc_retrace_item (ITEM *);
+extern NCURSES_EXPORT(ITEM **) _nc_retrace_item_ptr (ITEM **);
+extern NCURSES_EXPORT(Item_Options) _nc_retrace_item_opts (Item_Options);
+extern NCURSES_EXPORT(MENU *) _nc_retrace_menu (MENU *);
+extern NCURSES_EXPORT(Menu_Hook) _nc_retrace_menu_hook (Menu_Hook);
+extern NCURSES_EXPORT(Menu_Options) _nc_retrace_menu_opts (Menu_Options);
+
+#else /* !TRACE */
+
+#define returnItem(code) return code
+#define returnItemPtr(code) return code
+#define returnItemOpts(code) return code
+#define returnMenu(code) return code
+#define returnMenuHook(code) return code
+#define returnMenuOpts(code) return code
+
+#endif /* TRACE/!TRACE */
+
#endif /* MENU_PRIV_H_incl */
diff --git a/contrib/ncurses/menu/mf_common.h b/contrib/ncurses/menu/mf_common.h
index bf0bf016204e..681672dc3424 100644
--- a/contrib/ncurses/menu/mf_common.h
+++ b/contrib/ncurses/menu/mf_common.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,11 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 *
+ * Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
+/* $Id: mf_common.h,v 0.22 2005/11/26 15:26:52 tom Exp $ */
+
/* Common internal header for menu and form library */
#ifndef MF_COMMON_H_incl
@@ -69,29 +71,25 @@ extern int errno;
#define MAX_REGULAR_CHARACTER (0xff)
#define SET_ERROR(code) (errno=(code))
-#define GET_ERROR() (errno)
-#define RETURN(code) return( SET_ERROR(code) )
+#define GET_ERROR() (errno)
+
+#ifdef TRACE
+#define RETURN(code) returnCode( SET_ERROR(code) )
+#else
+#define RETURN(code) return( SET_ERROR(code) )
+#endif
/* The few common values in the status fields for menus and forms */
-#define _POSTED (0x01) /* menu or form is posted */
-#define _IN_DRIVER (0x02) /* menu or form is processing hook routine */
+#define _POSTED (0x01U) /* menu or form is posted */
+#define _IN_DRIVER (0x02U) /* menu or form is processing hook routine */
/* Call object hook */
#define Call_Hook( object, handler ) \
- if ( (object) && ((object)->handler) )\
+ if ( (object) != 0 && ((object)->handler) != (void *) 0 )\
{\
(object)->status |= _IN_DRIVER;\
(object)->handler(object);\
(object)->status &= ~_IN_DRIVER;\
}
-#define INLINE
-
-#ifndef TRACE
-# if CC_HAS_INLINE_FUNCS
-# undef INLINE
-# define INLINE inline
-# endif
-#endif
-
#endif /* MF_COMMON_H_incl */
diff --git a/contrib/ncurses/menu/modules b/contrib/ncurses/menu/modules
index 5d6cc823abc1..c78178a13cc6 100644
--- a/contrib/ncurses/menu/modules
+++ b/contrib/ncurses/menu/modules
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.14 1999/02/18 22:39:04 juergen Exp $
+# $Id: modules,v 1.16 2004/12/25 22:06:33 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# Copyright (c) 1998,2004 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -56,5 +56,6 @@ m_req_name lib $(srcdir) $(MENU_PRIV_H)
m_scale lib $(srcdir) $(MENU_PRIV_H)
m_spacing lib $(srcdir) $(MENU_PRIV_H)
m_sub lib $(srcdir) $(MENU_PRIV_H)
+m_trace lib $(srcdir) $(MENU_PRIV_H)
m_userptr lib $(srcdir) $(MENU_PRIV_H)
m_win lib $(srcdir) $(MENU_PRIV_H)
diff --git a/contrib/ncurses/misc/Makefile.in b/contrib/ncurses/misc/Makefile.in
index b8f25b8e6e99..95c22ab398a4 100644
--- a/contrib/ncurses/misc/Makefile.in
+++ b/contrib/ncurses/misc/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.34 2002/01/12 23:54:39 Robert.Joop Exp $
+# $Id: Makefile.in,v 1.40 2006/10/21 13:28:03 tom Exp $
##############################################################################
-# Copyright (c) 1998,2000,2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -27,7 +27,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey 1996-on
#
# Makefile for ncurses miscellany directory
#
@@ -62,22 +62,25 @@ HOSTCC = @BUILD_CC@
tabsetdir = $(datadir)/tabset
ticdir = @TERMINFO@
+ticfile = $(ticdir).db
source = @TERMINFO_SRC@
INSTALL = @INSTALL@
+INSTALL_PROG = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
################################################################################
-all :
+all : terminfo.tmp
depend :
sources :
-install : install.data
+install : install.data install.scripts
-install.data : $(DESTDIR)$(libdir) \
- $(DESTDIR)$(ticdir) \
+install.data : terminfo.tmp \
+ $(DESTDIR)$(libdir) \
+ $(DESTDIR)$(datadir) \
$(DESTDIR)$(tabsetdir)
DESTDIR=${DESTDIR} \
prefix=${prefix} \
@@ -87,39 +90,59 @@ install.data : $(DESTDIR)$(libdir) \
srcdir=${srcdir} \
datadir=${datadir} \
ticdir=${ticdir} \
- source=${source} \
+ source=terminfo.tmp \
THIS_CC="$(CC)" \
THAT_CC="$(HOSTCC)" \
- sh ./run_tic.sh
+ $(SHELL) ./run_tic.sh
@cd $(srcdir)/tabset && \
- sh -c 'for i in * ; do \
+ $(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
+
+install.scripts : ncurses-config
+ $(INSTALL_PROG) ncurses-config $(DESTDIR)$(bindir)/$(NCURSES_CONFIG)
+
+terminfo.tmp : run_tic.sed $(source)
+ echo '** adjusting tabset paths'
+ sed -f run_tic.sed $(source) >terminfo.tmp
+
+run_tic.sed :
+ WHICH_XTERM=@WHICH_XTERM@ \
+ ticdir=${ticdir} \
+ $(SHELL) $(srcdir)/gen_edit.sh >$@
+
$(DESTDIR)$(libdir) \
-$(DESTDIR)$(tabsetdir) \
-$(DESTDIR)$(ticdir) :
- sh $(srcdir)/../mkinstalldirs $@
+$(DESTDIR)$(datadir) \
+$(DESTDIR)$(tabsetdir) :
+ $(SHELL) $(top_srcdir)/mkinstalldirs $@
-uninstall : uninstall.data
+uninstall : uninstall.data uninstall.scripts
uninstall.data :
- -cd $(DESTDIR)$(ticdir) && rm -rf *
- -cd $(DESTDIR)$(tabsetdir) && rm -rf *
+ -test -d $(DESTDIR)$(tabsetdir) && rm -rf $(DESTDIR)$(tabsetdir)
+ -test -d $(DESTDIR)$(ticdir) && rm -rf $(DESTDIR)$(ticdir)
+ -test -f $(DESTDIR)$(ticfile) && rm -f $(DESTDIR)$(ticfile)
+
+uninstall.scripts :
+ -rm -f $(DESTDIR)$(bindir)/$(NCURSES_CONFIG)
tags :
@MAKE_UPPER_TAGS@TAGS :
mostlyclean :
+ -rm -f terminfo.tmp
+ -rm -f run_tic.sed
-rm -f core tags TAGS *~ *.bak *.ln *.atac trace
clean :: mostlyclean
distclean : clean
- -rm -f Makefile run_tic.sh
+ -rm -f Makefile run_tic.sh ncurses-config
realclean : distclean
diff --git a/contrib/ncurses/misc/chkdef.cmd b/contrib/ncurses/misc/chkdef.cmd
index c8d743356d6c..fa91dce54c22 100644
--- a/contrib/ncurses/misc/chkdef.cmd
+++ b/contrib/ncurses/misc/chkdef.cmd
@@ -1,5 +1,33 @@
+/****************************************************************************
+ * Copyright (c) 1998,2006 Free Software 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: chkdef.cmd,v 1.2 1998/08/29 21:45:58 tom Exp $
+ * $Id: chkdef.cmd,v 1.3 2006/04/22 23:14:50 tom Exp $
*
* Author: Juan Jose Garcia Ripoll <worm@arrakis.es>.
* Webpage: http://www.arrakis.es/~worm/
diff --git a/contrib/ncurses/misc/cleantic.cmd b/contrib/ncurses/misc/cleantic.cmd
index ab6a40a4fc88..6859de3053de 100644
--- a/contrib/ncurses/misc/cleantic.cmd
+++ b/contrib/ncurses/misc/cleantic.cmd
@@ -1,5 +1,33 @@
+/****************************************************************************
+ * Copyright (c) 1998,2006 Free Software 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: cleantic.cmd,v 1.3 1998/08/29 21:43:19 tom Exp $
+ * $Id: cleantic.cmd,v 1.4 2006/04/22 23:14:50 tom Exp $
*
* Author: Juan Jose Garcia Ripoll <worm@arrakis.es>.
* Webpage: http://www.arrakis.es/~worm/
diff --git a/contrib/ncurses/misc/cmpdef.cmd b/contrib/ncurses/misc/cmpdef.cmd
index 7cc9c95cc475..5bb8f6c4ce1c 100644
--- a/contrib/ncurses/misc/cmpdef.cmd
+++ b/contrib/ncurses/misc/cmpdef.cmd
@@ -1,5 +1,33 @@
+/****************************************************************************
+ * Copyright (c) 1998,2006 Free Software 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: cmpdef.cmd,v 1.2 1998/08/29 21:44:47 tom Exp $
+ * $Id: cmpdef.cmd,v 1.3 2006/04/22 23:14:50 tom Exp $
*
* Author: Juan Jose Garcia Ripoll <worm@arrakis.es>.
* Webpage: http://www.arrakis.es/~worm/
diff --git a/contrib/ncurses/misc/csort b/contrib/ncurses/misc/csort
new file mode 100755
index 000000000000..42faaf3a1976
--- /dev/null
+++ b/contrib/ncurses/misc/csort
@@ -0,0 +1,36 @@
+#!/bin/sh
+# $Id: csort,v 1.2 2002/10/19 21:42:09 tom Exp $
+##############################################################################
+# Copyright (c) 2002 Free Software 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. #
+##############################################################################
+#
+# override anything that might cause 'sort' to do the wrong thing...
+LANG=C; export LANG
+LANGUAGE=C; export LANGUAGE
+LC_ALL=C; export LC_ALL
+LC_CTYPE=C; export LC_CTYPE
+sort $*
diff --git a/contrib/ncurses/misc/emx.src b/contrib/ncurses/misc/emx.src
index 96625116168b..47200661b261 100644
--- a/contrib/ncurses/misc/emx.src
+++ b/contrib/ncurses/misc/emx.src
@@ -1,4 +1,31 @@
-# $Id: emx.src,v 1.7 2000/08/27 02:16:08 jmcoopr Exp $
+##############################################################################
+# Copyright (c) 1998-2003,2006 Free Software 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: emx.src,v 1.9 2006/04/22 21:46:17 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/
@@ -85,6 +112,7 @@ klone+sgr|attribute control for ansi.sys displays,
smpch=\E[11m,
smso=\E[7m,
smul=\E[4m,
+ use=klone+acs,
# Highlight controls corresponding to the ANSI.SYS standard. *All*
# console drivers for Intel boxes obey these. Does not assume \E[11m will
@@ -103,6 +131,7 @@ klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m),
smacs=\E[12m,
smso=\E[7m,
smul=\E[4m,
+ use=klone+acs,
# ANSI.SYS color control.
# The DOS 5 manual asserts that these sequences meet the ISO 6429 standard.
@@ -113,8 +142,17 @@ klone+color|color control for ansi.sys and ISO6429-compatible displays,
op=\E[37;40m,
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,
+
+# This is better than klone+color, it doesn't assume white-on-black as the
+# default color pair, but many `ANSI' terminals don't grok the <op> cap.
+ecma+color|color control for ECMA-48-compatible terminals,
+ AX,
+ colors#8,
+ ncv#3,
+ pairs#64,
+ op=\E[39;49m,
+ setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm,
#### ANSI/ECMA-48 terminals and terminal emulators
#
@@ -209,7 +247,9 @@ ansi.sys|ANSI.SYS 3.1 and later versions,
# no_color_video to inform the application that standout(1), underline(2)
# reverse(4) and invisible(64) don't work with color.
emx-base|DOS special keys,
+ bce,
bw,
+ it#8,
ncv#71,
bel=^G,
ka1=\0G,
@@ -293,7 +333,7 @@ emx-base|DOS special keys,
# me <-> sgr0 turn off all atributes
#
# On my terminal, \E[4m looks dim.
-ansi|ANSI.SYS color,
+ansi-emx|ANSI.SYS color,
blink=\E[5m,
bold=\E[1m,
kmous=\E[M,
@@ -319,17 +359,17 @@ window|ANSI.SYS window,
smul=\E[1;31;47m,
use=emx-base,
os2|OS/2-emx ANSI.SYS,
- cuu=\E[%p1%dA,
- cuu1=\E[A,
+ cub=\E[%p1%dD,
+ cub1=\E[D,
cud=\E[%p1%dB,
cud1=\E[B,
cuf=\E[%p1%dC,
cuf1=\E[C,
- cub=\E[%p1%dD,
- cub1=\E[D,
- sc=\E[s,
+ cuu=\E[%p1%dA,
+ cuu1=\E[A,
rc=\E[u,
- use=ansi,
+ sc=\E[s,
+ use=ansi-emx,
use=mono,
mono|ANSI.SYS mono,
blink=\E[5m,
@@ -353,7 +393,7 @@ mono2|ANSI.SYS mono2,
smul=\E[1;31;40m,
use=mono,
# nice colors for Emacs (white on blue, mode line white on cyan)
-ansi-color-2|ANSI.SYS color 2,
+ansi-color-2-emx|ANSI.SYS color 2,
rmcup=\E[0m,
rmso=\E[0;37;44m,
rmul=\E[0m,
@@ -361,9 +401,9 @@ ansi-color-2|ANSI.SYS color 2,
smcup=\E[0;37;44m,
smso=\E[1;37;46m,
smul=\E[1;31;40m,
- use=ansi,
+ use=ansi-emx,
# nice colors for Emacs (white on black, mode line black on cyan)
-ansi-color-3|ANSI.SYS color 3,
+ansi-color-3-emx|ANSI.SYS color 3,
rmcup=\E[0m,
rmso=\E[0m,
rmul=\E[0m,
@@ -371,7 +411,7 @@ ansi-color-3|ANSI.SYS color 3,
smcup=\E[0m,
smso=\E[30;46m,
smul=\E[1;31;40m,
- use=ansi,
+ use=ansi-emx,
#### X terminal emulators
#
@@ -437,7 +477,7 @@ x10term|vs100-x10|xterm terminal emulator (X10 window system),
# xterm's internal mouse-tracking facility; ncurses will interpret the
# following three bytes of mouse status information.
# From: Eric S. Raymond <esr@snark.thyrsus.com> 14 Dec 1995
-xterm|vs100|xterm terminal emulator (X11R6 Window System),
+xterm-r6|xterm terminal emulator (X11R6 Window System),
am,
km,
mir,
@@ -488,7 +528,15 @@ xterm|vs100|xterm terminal emulator (X11R6 Window System),
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~,
@@ -496,6 +544,7 @@ xterm|vs100|xterm terminal emulator (X11R6 Window System),
kf7=\E[18~,
kf8=\E[19~,
kf9=\E[20~,
+ kfnd=\E[1~,
khome=\EO\0,
kich1=\E[2~,
kmous=\E[M,
@@ -545,6 +594,7 @@ kterm|kterm kanji terminal emulator (X window system),
sc=\E7,
tsl=\E[?E\E[?%i%dT,
use=xterm,
+ use=ecma+color,
# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
xterm-nic|xterm with ich/ich1 suppressed for non-curses programs,
@@ -758,7 +808,6 @@ emu|emu native mode,
cup=\EE%p1%d;%p2%d;,
cuu=\Ep-%p1%d;,
cuu1=\EA,
- cvvis=\Ea,
dch=\EI%p1%d;,
dch1=\EI1;,
dl=\ER%p1%d;,
@@ -816,10 +865,21 @@ emu|emu native mode,
rmso=\ES,
rmul=\ES,
rs2=\ES\Es0;\Er0;,
- setab=\Es%i%p1%d; setaf=\Er%i%p1%d;,
+ setab=\Es%i%p1%d;,
+ setaf=\Er%i%p1%d;,
sgr0=\ES,
smacs=\0,
smir=\EY,
smso=\ES\ET,
smul=\ES\EV,
tbc=\Ej,
+###############################################################################
+# Aliases which conflict with terminfo.src
+ansi|ANSI.SYS color,
+ use=ansi-emx,
+ansi-color-2|ANSI.SYS color 2,
+ use=ansi-color-2-emx,
+ansi-color-3|ANSI.SYS color 3,
+ use=ansi-color-3-emx,
+xterm|vs100|xterm terminal emulator (X11R6 Window System),
+ use=xterm-r6,
diff --git a/contrib/ncurses/misc/gen_edit.sh b/contrib/ncurses/misc/gen_edit.sh
new file mode 100755
index 000000000000..f0aa72ac9ad2
--- /dev/null
+++ b/contrib/ncurses/misc/gen_edit.sh
@@ -0,0 +1,58 @@
+#!/bin/sh
+##############################################################################
+# Copyright (c) 2004 Free Software 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: gen_edit.sh,v 1.1 2004/07/11 15:01:29 tom Exp $
+# Generate a sed-script for converting the terminfo.src to the form which will
+# be installed.
+#
+# Assumes:
+# The leaf directory names (lib, tabset, terminfo)
+#
+
+: ${ticdir=@TERMINFO@}
+: ${xterm_new=@WHICH_XTERM@}
+
+# If we're not installing into /usr/share/, we'll have to adjust the location
+# of the tabset files in terminfo.src (which are in a parallel directory).
+TABSET=`echo $ticdir | sed -e 's%/terminfo$%/tabset%'`
+if test "x$TABSET" != "x/usr/share/tabset" ; then
+cat <<EOF
+s%/usr/share/tabset%$TABSET%g
+EOF
+fi
+
+if test "$xterm_new" != "xterm-new" ; then
+cat <<EOF
+/^# This is xterm for ncurses/,/^$/{
+ s/use=xterm-new,/use=$WHICH_XTERM,/
+}
+EOF
+fi
diff --git a/contrib/ncurses/misc/jpf-indent b/contrib/ncurses/misc/jpf-indent
new file mode 100755
index 000000000000..cdd825c61d37
--- /dev/null
+++ b/contrib/ncurses/misc/jpf-indent
@@ -0,0 +1,119 @@
+#!/bin/sh
+#****************************************************************************
+#* Copyright (c) 2004-2005,2006 Thomas E. Dickey *
+#* *
+#* 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: jpf-indent,v 1.6 2006/02/18 17:07:15 tom Exp $
+# indent ncurses source written by Juergen Pfeifer
+NOOP=no
+OPTS='
+-npro
+--blank-lines-after-declarations
+--blank-lines-after-procedures
+--brace-indent2
+--braces-after-if-line
+--continue-at-parentheses
+--indent-level2
+--line-length80
+--no-space-after-casts
+--no-space-after-function-call-names
+--parameter-indentation4
+--swallow-optional-blank-lines
+--tab-size8
+
+-T FIELD
+-T FIELDTYPE
+-T FIELD_CELL
+-T FORM
+-T NCURSES_INLINE
+-T RegExp_Arg
+-T TypeArgument
+-T WINDOW
+-T attr_t
+-T bool
+-T cchar_t
+-T chtype
+-T enumARG
+-T va_list
+-T wchar_t
+'
+for name in $*
+do
+ case $name in
+ -v|-n)
+ NOOP=yes
+ OPTS="$OPTS -v"
+ ;;
+ -*)
+ OPTS="$OPTS $name"
+ ;;
+ *.[ch])
+ save="${name}".a$$
+ test="${name}".b$$
+ rm -f "$save" "$test"
+ mv "$name" "$save"
+ sed \
+ -e '/MODULE_ID(/s/)$/);/' \
+ -e 's,\<GCC_NORETURN;,;//GCC_NORETURN;,' \
+ -e 's,\<GCC_PRINTFLIKE(,;//GCC_PRINTFLIKE(,' \
+ -e 's,\<GCC_SCANFLIKE(,;//GCC_SCANFLIKE(,' \
+ -e 's,\(\<NCURSES_EXPORT_VAR\>\),//\1,' \
+ "$save" >"$test"
+ cp "$test" "$name"
+ chmod u+w "$name"
+ # ${INDENT_PROG-indent} --version
+ ${INDENT_PROG-indent} -npro $OPTS "$name"
+ sed \
+ -e '/MODULE_ID(/s/);$/)/' \
+ -e 's,;[ ]*//GCC_NORETURN;, GCC_NORETURN;,' \
+ -e 's,;[ ]*//GCC_PRINTFLIKE(, GCC_PRINTFLIKE(,' \
+ -e 's,;[ ]*//GCC_SCANFLIKE(, GCC_SCANFLIKE(,' \
+ -e 's,//\(\<NCURSES_EXPORT_VAR\>\),\1,' \
+ "$name" >"$test"
+ mv "$test" "$name"
+ rm -f "${name}~"
+ if test $NOOP = yes ; then
+ if (cmp -s "$name" "$save" ) then
+ echo "** no change: $name"
+ else
+ diff -u "$save" "$name"
+ fi
+ rm -f "$name"
+ mv "$save" "$name"
+ elif ( cmp -s "$name" "$save" ) ; then
+ echo "** unchanged $name"
+ rm -f "${name}"
+ mv "$save" "$name"
+ else
+ echo "** updated $name"
+ rm -f "$save"
+ fi
+ ;;
+ *)
+ echo "** ignored: $name"
+ ;;
+ esac
+done
diff --git a/contrib/ncurses/misc/makedef.cmd b/contrib/ncurses/misc/makedef.cmd
index f3d9740eff68..68a35692cd43 100644
--- a/contrib/ncurses/misc/makedef.cmd
+++ b/contrib/ncurses/misc/makedef.cmd
@@ -1,5 +1,33 @@
+/****************************************************************************
+ * Copyright (c) 1998,2006 Free Software 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: makedef.cmd,v 1.4 1998/11/22 03:14:08 tom Exp $
+ * $Id: makedef.cmd,v 1.5 2006/04/22 23:14:50 tom Exp $
*
* Author: Juan Jose Garcia Ripoll <worm@arrakis.es>.
* Webpage: http://www.arrakis.es/~worm/
diff --git a/contrib/ncurses/misc/ncu-indent b/contrib/ncurses/misc/ncu-indent
new file mode 100755
index 000000000000..1e1c7fffaeb2
--- /dev/null
+++ b/contrib/ncurses/misc/ncu-indent
@@ -0,0 +1,130 @@
+#!/bin/sh
+#****************************************************************************
+#* Copyright (c) 2001-2005,2006 Thomas E. Dickey *
+#* *
+#* 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: ncu-indent,v 1.16 2006/02/18 17:02:22 tom Exp $
+NOOP=no
+OPTS='
+--blank-lines-after-procedures
+--braces-on-if-line
+--continuation-indentation0
+--continue-at-parentheses
+--cuddle-else
+--indent-level4
+--leave-preprocessor-space
+--no-blank-lines-after-commas
+--no-blank-lines-after-declarations
+--no-space-after-function-call-names
+--procnames-start-lines
+--space-special-semicolon
+--swallow-optional-blank-lines
+--tab-size8
+
+-T NCURSES_EXPORT_VAR
+-T NCURSES_INLINE
+-T SCREEN
+-T TERMTYPE
+-T attr_t
+-T cchar_t
+-T chtype
+-T inline
+-T wchar_t
+-T wint_t
+
+-T BUFFER
+-T CHARTYPE
+-T FILE
+-T GCC_NORETURN
+-T LINE
+-T MARK
+-T RETSIGTYPE
+-T TBUFF
+-T WINDOW
+-T size_t
+-T va_list
+
+-T Cardinal
+-T Widget
+-T XtPointer
+'
+for name in $*
+do
+ case $name in
+ -v|-n)
+ NOOP=yes
+ OPTS="$OPTS -v"
+ ;;
+ -*)
+ OPTS="$OPTS $name"
+ ;;
+ *.[ch]|*.cc|*.cpp)
+ save="${name}".a$$
+ test="${name}".b$$
+ rm -f "$save" "$test"
+ mv "$name" "$save"
+ sed \
+ -e '/MODULE_ID(/s/)$/);/' \
+ -e 's,\<GCC_NORETURN;,;//GCC_NORETURN;,' \
+ -e 's,\<GCC_PRINTFLIKE(,;//GCC_PRINTFLIKE(,' \
+ -e 's,\<GCC_SCANFLIKE(,;//GCC_SCANFLIKE(,' \
+ -e 's,\(\<NCURSES_EXPORT_VAR\>\),//\1,' \
+ "$save" >"$test"
+ cp "$test" "$name"
+ chmod u+w "$name"
+ # ${INDENT_PROG-indent} --version
+ ${INDENT_PROG-indent} -npro $OPTS "$name"
+ sed \
+ -e '/MODULE_ID(/s/);$/)/' \
+ -e 's,;[ ]*//GCC_NORETURN;, GCC_NORETURN;,' \
+ -e 's,;[ ]*//GCC_PRINTFLIKE(, GCC_PRINTFLIKE(,' \
+ -e 's,;[ ]*//GCC_SCANFLIKE(, GCC_SCANFLIKE(,' \
+ -e 's,//\(\<NCURSES_EXPORT_VAR\>\),\1,' \
+ "$name" >"$test"
+ mv "$test" "$name"
+ rm -f "${name}~"
+ if test $NOOP = yes ; then
+ if (cmp -s "$name" "$save" ) then
+ echo "** no change: $name"
+ else
+ diff -u "$save" "$name"
+ fi
+ rm -f "$name"
+ mv "$save" "$name"
+ elif ( cmp -s "$name" "$save" ) ; then
+ echo "** unchanged $name"
+ rm -f "${name}"
+ mv "$save" "$name"
+ else
+ echo "** updated $name"
+ rm -f "$save"
+ fi
+ ;;
+ *)
+ echo "** ignored: $name"
+ ;;
+ esac
+done
diff --git a/contrib/ncurses/misc/ncurses-config.in b/contrib/ncurses/misc/ncurses-config.in
new file mode 100644
index 000000000000..1da156c7d61a
--- /dev/null
+++ b/contrib/ncurses/misc/ncurses-config.in
@@ -0,0 +1,156 @@
+#!@SHELL@
+# $Id: ncurses-config.in,v 1.11 2006/10/28 20:22:52 tom Exp $
+##############################################################################
+# Copyright (c) 2006 Free Software 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, 2006
+
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+
+bindir="@bindir@"
+libdir="@libdir@"
+datadir="@datadir@"
+mandir="@mandir@"
+
+THIS="ncurses@DFT_ARG_SUFFIX@"
+
+test $# = 0 && exec @SHELL@ $0 --error
+
+while test $# -gt 0; do
+ case "$1" in
+ -*=*)
+ ARG=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
+ ;;
+ *)
+ ARG=
+ ;;
+ esac
+
+ case "$1" in
+ # basic configuration
+ --prefix=*)
+ prefix="$ARG"
+ test -z "$exec_prefix" && exec_prefix="$ARG"
+ ;;
+ --prefix)
+ echo "$prefix"
+ ;;
+ --exec-prefix=*)
+ exec_prefix="$ARG"
+ ;;
+ --exec-prefix)
+ echo "$exec_prefix"
+ ;;
+ # compile/link
+ --cflags)
+ INCS=
+ if test "${prefix}/include" != /usr/include ; then
+ INCS="-I${prefix}/include"
+ fi
+ if test "@WITH_OVERWRITE@" != no ; then
+ INCS="$INCS -I${prefix}/include/${THIS}"
+ fi
+ sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
+ $INCS
+ENDECHO
+ ;;
+ --libs)
+ sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
+ -L${exec_prefix}/lib @EXTRA_LDFLAGS@ -l${THIS} @LIBS@
+ENDECHO
+ ;;
+ # identification
+ --version)
+ echo "@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@"
+ ;;
+ --abi-version)
+ echo "@cf_cv_abi_version@"
+ ;;
+ --mouse-version)
+ echo "@NCURSES_MOUSE_VERSION@"
+ ;;
+ # locations
+ --bindir)
+ echo "${bindir}"
+ ;;
+ --datadir)
+ echo "${datadir}"
+ ;;
+ --libdir)
+ echo "${libdir}"
+ ;;
+ --mandir)
+ echo "${mandir}"
+ ;;
+ --terminfo)
+ echo "@TERMINFO@"
+ ;;
+ --terminfo-dirs)
+ echo "@TERMINFO_DIRS@"
+ ;;
+ --termpath)
+ echo "@TERMPATH@"
+ ;;
+ # general info
+ --help)
+ cat <<ENDHELP
+Usage: ${THIS}-config [options]
+
+Options:
+ --prefix echos the package-prefix of ${THIS}
+ --prefix=ARG sets the package-prefix of ${THIS}
+ --exec-prefix echos the executable-prefix of ${THIS}
+ --exec-prefix=ARG sets the executable-prefix of ${THIS}
+
+ --cflags echos the C compiler flags needed to compile with ${THIS}
+ --libs echos the libraries needed to link with ${THIS}
+
+ --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}
+
+ --bindir echos the directory containing ${THIS} programs
+ --datadir echos the directory containing ${THIS} data
+ --libdir echos the directory containing ${THIS} libraries
+ --mandir echos the directory containing ${THIS} manpages
+ --terminfo echos the \$TERMINFO terminfo database path
+ --terminfo-dirs echos the \$TERMINFO_DIRS directory list
+ --termpath echos the \$TERMPATH termcap list
+
+ --help prints this message
+ENDHELP
+ ;;
+ --error|*)
+ @SHELL@ $0 --help 1>&2
+ exit 1
+ ;;
+ esac
+ shift
+done
+# vile:shmode
diff --git a/contrib/ncurses/misc/run_tic.in b/contrib/ncurses/misc/run_tic.in
index 295ae0780d72..2732403a393d 100644
--- a/contrib/ncurses/misc/run_tic.in
+++ b/contrib/ncurses/misc/run_tic.in
@@ -1,6 +1,7 @@
#!@SHELL@
+# $Id: run_tic.in,v 1.23 2006/10/28 19:43:30 tom Exp $
##############################################################################
-# Copyright (c) 1998,2000 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2005,2006 Free Software 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 +30,6 @@
#
# Author: Thomas E. Dickey 1996,2000
#
-# $Id: run_tic.in,v 1.11 2001/10/14 00:44:33 tom Exp $
# This script is used to install terminfo.src using tic. We use a script
# because the path checking is too awkward to do in a makefile.
#
@@ -54,6 +54,7 @@ echo '** Building terminfo database, please wait...'
: ${LN_S="@LN_S@"}
: ${THAT_CC=cc}
: ${THIS_CC=cc}
+: ${ext_funcs=@NCURSES_EXT_FUNCS@}
test -z "${DESTDIR}" && DESTDIR=
@@ -62,62 +63,80 @@ test -z "${DESTDIR}" && DESTDIR=
# on the host's copy of tic to compile the terminfo database.
if test "$THAT_CC" = "$THIS_CC" ; then
case "$PATH" in
-:*) PATH=../progs:${DESTDIR}$bindir$PATH ;;
-*) PATH=../progs:${DESTDIR}$bindir:$PATH ;;
+:*) PATH=../progs:../lib:${DESTDIR}$bindir$PATH ;;
+*) PATH=../progs:../lib:${DESTDIR}$bindir:$PATH ;;
esac
export PATH
+SHLIB="sh $srcdir/shlib"
+else
+# Cross-compiling, so don't set PATH or run shlib.
+SHLIB=
+# reset $suffix, since it applies to the target, not the build platform.
+suffix=
fi
-#
+
# set another env var that doesn't get reset when `shlib' runs, so `shlib' uses
# the PATH we just set.
-#
-NEWPATH=$PATH
-export NEWPATH
-PROG_BIN_DIR=${DESTDIR}$bindir
-export PROG_BIN_DIR
+SHLIB_PATH=$PATH
+export SHLIB_PATH
+
+# set a variable to simplify environment update in shlib
+SHLIB_HOST=@host_os@
+export SHLIB_HOST
+# don't use user's TERMINFO variable
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/@'`
+TICDIR=`echo $TERMINFO | sed -e 's%/share/\([^/]*\)$%/lib/\1%'`
# Remove the old terminfo stuff; we don't care if it existed before, and it
# 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.
-( cd $TERMINFO && rm -fr ? 2>/dev/null )
+( test -d "$TERMINFO" && cd $TERMINFO && rm -fr ? 2>/dev/null )
-# If we're not installing into /usr/share/, we'll have to adjust the location
-# of the tabset files in terminfo.src (which are in a parallel directory).
-TABSET=`echo $ticdir | sed -e 's@/terminfo$@/tabset@'`
-if test "x$TABSET" != "x/usr/share/tabset" ; then
- echo '** adjusting tabset paths'
- TMP=${TMPDIR-/tmp}/$$
- sed -e s:/usr/share/tabset:$TABSET:g $source >$TMP
- trap "rm -f $TMP" 0 1 2 5 15
- source=$TMP
-fi
+if test "$ext_funcs" = 1 ; then
+cat <<EOF
+Running tic to install $TERMINFO ...
+
+ You may see messages regarding extended capabilities, e.g., AX.
+ These are extended terminal capabilities which are compiled
+ using
+ tic -x
+ If you have ncurses 4.2 applications, you should read the INSTALL
+ document, and install the terminfo without the -x option.
+EOF
+if ( $SHLIB tic$suffix -x -s -o $TERMINFO $source )
+then
+ echo '** built new '$TERMINFO
+else
+ echo '? tic could not build '$TERMINFO
+ exit 1
+fi
+else
cat <<EOF
Running tic to install $TERMINFO ...
You may see messages regarding unknown capabilities, e.g., AX.
- These are extended terminal capabilities which can be compiled
+ These are extended terminal capabilities which may be compiled
using
tic -x
- Read the INSTALL document before doing this - it can cause
- problems for older ncurses applications.
+ If you have ncurses 4.2 applications, you should read the INSTALL
+ document, and install the terminfo without the -x option.
EOF
-if ( $srcdir/shlib tic$suffix -s -o $TERMINFO $source )
+if ( $SHLIB tic$suffix -s -o $TERMINFO $source )
then
echo '** built new '$TERMINFO
else
echo '? tic could not build '$TERMINFO
exit 1
fi
+fi
# Make a symbolic link to provide compatibility with applications that expect
# to find terminfo under /usr/lib. That is, we'll _try_ to do that. Not
@@ -140,13 +159,16 @@ if test "$TICDIR" != "$TERMINFO" ; then
cd ${DESTDIR}$prefix
# Construct a symbolic link that only assumes $ticdir has the
# same $prefix as the other installed directories.
- RELATIVE=`echo $ticdir|sed -e 's:^'$prefix'/::'`
+ RELATIVE=`echo $ticdir|sed -e 's%^'$prefix'/%%'`
if test "$RELATIVE" != "$ticdir" ; then
- RELATIVE=../`echo $ticdir|sed -e 's:^'$prefix'/::' -e 's:^/::'`
+ RELATIVE=../`echo $ticdir|sed -e 's%^'$prefix'/%%' -e 's%^/%%'`
fi
if ( @LN_S@ $RELATIVE $TICDIR )
then
- echo '** linked '$TICDIR' for compatibility'
+ echo '** sym-linked '$TICDIR' for compatibility'
+ else
+ echo '** could not sym-link '$TICDIR' for compatibility'
fi
fi
fi
+# vile:shmode
diff --git a/contrib/ncurses/misc/shlib b/contrib/ncurses/misc/shlib
index 6817a0d70eaf..60fd4fc1286e 100755
--- a/contrib/ncurses/misc/shlib
+++ b/contrib/ncurses/misc/shlib
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 1998,2000 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2003,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 "Software"), #
@@ -29,7 +29,7 @@
#
# Author: Thomas E. Dickey <dickey@clark.net> 1996
#
-# $Id: shlib,v 1.6 2000/05/20 23:01:17 tom Exp $
+# $Id: shlib,v 1.10 2005/06/25 22:41:17 tom Exp $
# Use this script as a wrapper when running executables linked to shared
# libraries on systems that use the $LD_LIBRARY_PATH variable and don't embed
# the soname's path within the linked executable (such as IRIX), e.g,
@@ -58,30 +58,83 @@
# Special cases:
#
# BeOS R4.5 uses $LIBRARY_PATH rather than $LD_LIBRARY_PATH.
-
+# Cygwin uses $PATH
+# Mac OS X uses $DYLD_LIBRARY_PATH
#
-# Make sure that we use the PATH that was set in run_tic.sh
+# Other cases not handled by this script:
+#
+# AIX uses $LIBPATH
+# IRIX64 may use $LD_LIBRARY64_PATH or $LD_LIBRARYN32_PATH
+# Solaris may use $LD_LIBRARY_PATH_64
#
-if test X$NEWPATH != X ; then
- PATH=$NEWPATH
+CDPATH=
+#
+# Make sure that we use the PATH that was set in run_tic.sh
+if test -n "$SHLIB_PATH" ; then
+ PATH=$SHLIB_PATH
export PATH
fi
+# Find the lib-directory for this build tree
q=""
-for p in lib ../lib
+for p in lib ../lib ../../lib ../../../lib
do
if test -d $p; then
- q="$p"
+ q=`cd $p; pwd`
+ elif test -f configure && test ! -d ../$p ; then
+ break
fi
done
+
+# Set the environment variable.
if test -n "$q" ; then
- if test -n "$LD_LIBRARY_PATH"; then
- LD_LIBRARY_PATH="$q:$LD_LIBRARY_PATH"
+ system=
+ if test -n "$SHLIB_HOST" ; then
+ system="$SHLIB_HOST"
+ elif test -n "$PATHEXT" ; then
+ system=cygwin
elif test -n "$LIBRARY_PATH" ; then
- LIBRARY_PATH="$q:$LIBRARY_PATH"
+ system=beos
+ elif test -n "$DYLD_LIBRARY_PATH" ; then
+ system=darwin
+ elif test -n "$LD_LIBRARY_PATH"; then
+ system=unix
else
- LD_LIBRARY_PATH="$q"
+ for r in $q/*.*
+ do
+ if test -f "$r"
+ then
+ case $r in
+ *.dll)
+ system=cygwin
+ ;;
+ *.dylib)
+ system=darwin
+ ;;
+ esac
+ fi
+ test -n "$system" && break
+ done
fi
- export LD_LIBRARY_PATH
+
+ case .$system in
+ .cygwin*)
+ variable=PATH
+ ;;
+ .beos*)
+ variable=LIBRARY_PATH
+ ;;
+ .darwin*)
+ variable=DYLD_LIBRARY_PATH
+ ;;
+ *)
+ variable=LD_LIBRARY_PATH
+ ;;
+ esac
+
+ eval 'test -z "$'$variable'" && '$variable'=":"'
+ eval $variable'="$q:$'$variable'"'
+ eval 'export '$variable
fi
+
eval "$*"
diff --git a/contrib/ncurses/misc/terminfo.src b/contrib/ncurses/misc/terminfo.src
index 55be8059e904..8574fb5fe833 100644
--- a/contrib/ncurses/misc/terminfo.src
+++ b/contrib/ncurses/misc/terminfo.src
@@ -1,16 +1,40 @@
######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
#
-# This version of terminfo.src is distributed with ncurses.
+# This version of terminfo.src is distributed with ncurses and is maintained
+# by Thomas E. Dickey (TD).
+#
# Report bugs and new terminal descriptions to
# bug-ncurses@gnu.org
#
+# $Revision: 1.303 $
+# $Date: 2006/10/07 17:52:03 $
+#
# The original header is preserved below for reference. It is noted that there
-# is a newer version which differs in some cosmetic details; we have decided
-# to not change the header unless there is also a change in content.
+# is a "newer" version which differs in some cosmetic details (but actually
+# stopped updates several years ago); we have decided to not change the header
+# unless there is also a change in content.
+#
+# To further muddy the waters, it is noted that changes to this file as part of
+# maintenance of ncurses (since 1996) are generally conceded to be copyright
+# under the ncurses MIT-style license. That was the effect of the agreement
+# which the principal authors of ncurses made in 1998. However, since much of
+# the file itself is of unknown authorship (and the disclaimer below makes it
+# obvious that Raymond cannot or will not convey rights over those parts),
+# there is no explicit copyright notice on the file itself.
+#
+# It would also be a nuisance to split the file into unknown/known authorship
+# and move pieces as they are maintained, since many of the maintenance changes
+# have been small corrections to Raymond's translations to/from termcap format,
+# correcting the data but not the accompanying annotations.
+#
+# In any case, note that almost half of this file is not data but annotations
+# which reflect creative effort. Furthermore, the structure of entries to
+# reuse common chunks also is creative (and subject to copyright). Finally,
+# some portions of the data are derivative work under a compatible MIT-style
+# license from xterm.
#
#------------------------------------------------------------------------------
# Version 10.2.1
-# $Date: 2002/06/15 19:40:34 $
# terminfo syntax
#
# Eric S. Raymond (current maintainer)
@@ -44,7 +68,7 @@
# This file assumes a US-ASCII character set. If you need to fix this, start
# by global-replacing \E(B and \E)B with the appropriate ISO 6429 enablers
# for your character set. \E(A and \E)A enables the British character set
-# with the pound sign at position 2/3.
+# with the pound sign at position 2/3.
#
# In a Japanese-processing environment using EUC/Japanese or Shift-JIS,
# C1 characters are considered the first-byte set of the Japanese encodings,
@@ -70,7 +94,7 @@
# string-table limit of archaic termcap libraries except where explicitly
# noted below. Note that the termcap translation assumes that your termcap
# library can handle multiple tc capabilities in an entry. 4.4BSD has this
-# capability. Older versions of GNU termcap, through 1.3, do not.
+# capability. Older versions of GNU termcap, through 1.3, do not.
#
# For details on these formats, see terminfo(5) in the ncurses distribution,
# and termcap(5) in the 4.4BSD Unix Programmer's Manual. Be aware that 4.4BSD
@@ -102,7 +126,7 @@
# the master format). Individual capabilities are commented out by
# placing a period between the colon and the capability name.
#
-# The file is divided up into major sections (headed by lines beginning with
+# The file is divided up into major sections (headed by lines beginning with
# the string "########") and minor sections (beginning with "####"); do
#
# grep "^####" <file> | more
@@ -112,7 +136,7 @@
# that important and frequently-encountered terminal types are near the
# front (so that you'll get reasonable search efficiency from a linear
# search of the termcap form even if you don't use reorder). Minor sections
-# usually correspond to manufacturers or standard terminal classes.
+# usually correspond to manufacturers or standard terminal classes.
# Parenthesized words following manufacturer names are type prefixes or
# product line names used by that manufacturers.
#
@@ -145,18 +169,18 @@
# -s Enable status line.
# -vb Use visible bell (<flash>) rather than <bel>.
# -w Wide - in 132 column mode.
-# If a name has multiple suffixes and one is a line height, that one should
-# go first. Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'.
-#
+# If a name has multiple suffixes and one is a line height, that one should
+# go first. Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'.
+#
# Entries with embedded plus signs are designed to be included through use/tc
-# capabilities, not used as standalone entries.
+# capabilities, not used as standalone entries.
#
# To avoid search clashes, some older all-numeric names for terminals have
# been removed (i.e., "33" for the Model 33 Teletype, "2621" for the HP2621).
# All primary names of terminals now have alphanumeric prefixes.
#
# Comments marked "esr" are mostly results of applying the termcap-compiler
-# code packaged with ncurses and contemplating the resulting error messages.
+# code packaged with ncurses and contemplating the resulting error messages.
# In many cases, these indicated obvious fixes to syntax garbled by the
# composers. In a few cases, I was able to deduce corrected forms for garbled
# capabilities by looking at context. All the information in the original
@@ -191,7 +215,7 @@
# %c Accept any character
# %[...] Accept any number of characters in the given set
#
-# The cursor position report (<u6>) string must contain two scanf(3)-style
+# The cursor position report (<u6>) string must contain two scanf(3)-style
# %d format elements. The first of these must correspond to the Y coordinate
# and the second to the %d. If the string contains the sequence %i, it is
# taken as an instruction to decrement each value after reading it (this is
@@ -206,12 +230,12 @@
# All the entries in this file have been edited to assume that the tabset
# files directory is /usr/share/tabset, in conformance with the File Hierarchy
# Standard for Linux and open-source BSD systems. Some vendors (notably Sun)
-# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset.
+# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset.
#
# No curses package we know of actually uses these files. If their location
# is an issue, you will have to hand-patch the file locations before compiling
# this file.
-#
+#
# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL
#
# As the ANSI/ECMA-48 standard and variants take firmer hold, and as
@@ -233,8 +257,8 @@
# I'm especially interested in identifying the obscure entries listed under
# `Miscellaneous obsolete terminals, manufacturers unknown' before the tribal
# wisdom about them gets lost. If you know a lot about obscure old terminals,
-# please go to the terminfo resource page, grab the UFO file (ufo.ti), and
-# eyeball it for things you can identify and describe.
+# please go to the terminfo resource page, grab the UFO file (ufo.ti), and
+# eyeball it for things you can identify and describe.
#
# If you have been around long enough to contribute, please read the file
# with this in mind and send me your annotations.
@@ -245,7 +269,7 @@
# California copyright with dates from 1980 to 1993.
#
# Some information has been merged in from a terminfo file SCO distributes.
-# It has an obnoxious boilerplate copyright which I'm ignoring because they
+# It has an obnoxious boilerplate copyright which I'm ignoring because they
# took so much of the content from the ancestral BSD versions of this file
# and didn't attribute it, thereby violating the BSD Regents' copyright.
#
@@ -255,7 +279,7 @@
# graffiti -- it's legally dubious, ethically bogus, and patently ridiculous.
#
# This file deliberately has no copyright. It belongs to no one and everyone.
-# If you claim you own it, you will merely succeed in looking like a fool.
+# If you claim you own it, you will merely succeed in looking like a fool.
# Use it as you like. Use it at your own risk. Copy and redistribute freely.
# There are no guarantees anywhere. Svaha!
#
@@ -273,25 +297,25 @@
# terminal are the lowest common denominator - they look about like a ti 700.
#
-dumb|80-column dumb tty,
- am,
- cols#80,
- bel=^G, cr=^M, cud1=^J, ind=^J,
-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,
-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,
-
-vanilla,
- OTbs,
- bel=^G, cr=^M, cud1=^J, ind=^J,
+dumb|80-column dumb tty,
+ am,
+ cols#80,
+ bel=^G, cr=^M, cud1=^J, ind=^J,
+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,
+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,
+
+vanilla|dumb tty,
+ OTbs,
+ bel=^G, cr=^M, cud1=^J, ind=^J,
#### ANSI.SYS/ISO 6429/ECMA-48 Capabilities
#
@@ -300,50 +324,52 @@ vanilla,
# ANSI capabilities are broken up into pieces, so that a terminal
# implementing some ANSI subset can use many of them.
-ansi+local1,
- cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
-ansi+local,
- cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
- cuu=\E[%p1%dA, use=ansi+local1,
-ansi+tabs,
- cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[2g,
-ansi+inittabs,
- it#8, use=ansi+tabs,
-ansi+erase,
- clear=\E[H\E[J, ed=\E[J, el=\E[K,
-ansi+rca,
- hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd,
-ansi+cup,
- cup=\E[%i%p1%d;%p2%dH, home=\E[H,
-ansi+rep,
- rep=%p1%c\E[%p2%{1}%-%db,
-ansi+idl1,
- dl1=\E[M, il1=\E[L,
-ansi+idl,
- dl=\E[%p1%dM, il=\E[%p1%dL, use=ansi+idl1,
-ansi+idc,
- dch1=\E[P, ich=\E[%p1%d@, ich1=\E[@, rmir=\E6, smir=\E6,
-ansi+arrows,
- kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- khome=\E[H,
-ansi+sgr|ansi graphic renditions,
- blink=\E[5m, invis=\E[8m, rev=\E[7m, sgr0=\E[0m,
-ansi+sgrso|ansi standout only,
- rmso=\E[m, smso=\E[7m,
-ansi+sgrul|ansi underline only,
- rmul=\E[m, smul=\E[4m,
-ansi+sgrbold|ansi graphic renditions; assuming terminal has bold; not dim,
- bold=\E[1m,
- sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
- use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
-ansi+sgrdim|ansi graphic renditions; assuming terminal has dim; not bold,
- dim=\E[2m,
- sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;%;%?%p7%t8;%;m,
- use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
-ansi+pp|ansi printer port,
- mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
-ansi+csr|ansi scroll-region plus cursor save & restore,
- csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7,
+ansi+local1,
+ cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A,
+ansi+local,
+ cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
+ cuu=\E[%p1%dA, use=ansi+local1,
+ansi+tabs,
+ cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[2g,
+ansi+inittabs,
+ it#8, use=ansi+tabs,
+ansi+erase,
+ clear=\E[H\E[J, ed=\E[J, el=\E[K,
+ansi+rca,
+ hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd,
+ansi+cup,
+ cup=\E[%i%p1%d;%p2%dH, home=\E[H,
+ansi+rep,
+ rep=%p1%c\E[%p2%{1}%-%db,
+ansi+idl1,
+ dl1=\E[M, il1=\E[L,
+ansi+idl,
+ dl=\E[%p1%dM, il=\E[%p1%dL, use=ansi+idl1,
+ansi+idc,
+ dch1=\E[P, ich=\E[%p1%d@, ich1=\E[@, rmir=\E6, smir=\E6,
+ansi+arrows,
+ kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ khome=\E[H,
+ansi+sgr|ansi graphic renditions,
+ blink=\E[5m, invis=\E[8m, rev=\E[7m,
+ sgr=\E[0%?%p3%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
+ sgr0=\E[0m,
+ansi+sgrso|ansi standout only,
+ rmso=\E[m, smso=\E[7m,
+ansi+sgrul|ansi underline only,
+ rmul=\E[m, smul=\E[4m,
+ansi+sgrbold|ansi graphic renditions; assuming terminal has bold; not dim,
+ bold=\E[1m,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
+ use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
+ansi+sgrdim|ansi graphic renditions; assuming terminal has dim; not bold,
+ dim=\E[2m,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;%;%?%p7%t8;%;m,
+ use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul,
+ansi+pp|ansi printer port,
+ mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+ansi+csr|ansi scroll-region plus cursor save & restore,
+ csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7,
# The IBM PC alternate character set. Plug this into any Intel console entry.
# We use \E[11m for rmacs rather than \E[12m so the <acsc> string can use the
@@ -351,37 +377,43 @@ ansi+csr|ansi scroll-region plus cursor save & restore,
# This works with the System V, Linux, and BSDI consoles. It's a safe bet this
# 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,
- rmacs=\E[10m, smacs=\E[11m,
+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,
+ rmacs=\E[10m, smacs=\E[11m,
-# Highlight controls corresponding to the ANSI.SYS standard. Most
+# Highlight controls corresponding to the ANSI.SYS standard. Most
# console drivers for Intel boxes obey these. Makes the same assumption
# about \E[11m as klone+acs. True ANSI/ECMA-48 would have <rmso=\E[27m>,
# <rmul=\E[24m>, but this isn't a documented feature of ANSI.SYS.
-klone+sgr|attribute control for ansi.sys displays,
- blink=\E[5m, bold=\E[1m, invis=\E[8m, 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%;%?%p7%t;8%;%?%p9%t;11%;m,
- sgr0=\E[0;10m, smpch=\E[11m, smso=\E[7m, smul=\E[4m,
- use=klone+acs,
+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,
+ 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,
+ use=klone+sgr,
# Highlight controls corresponding to the ANSI.SYS standard. *All*
# console drivers for Intel boxes obey these. Does not assume \E[11m will
# work; uses \E[12m instead, which is pretty bulletproof but loses you the ACS
# diamond and arrow characters under curses.
-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,
- sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
- use=klone+acs,
+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,
+ 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,
- rmacs=\E[10m, smacs=\E[11m,
+klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset,
+ acsc=+\020\,\021-\036.^_0\215`\004a\237f\234g\232h\222i\220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t\206u\207v\210w\211x\201y\230z\231{\267|\274}L~\225,
+ rmacs=\E[10m, smacs=\E[11m,
# ANSI.SYS color control. The setab/setaf caps depend on the coincidence
# between SVr4/XPG4's color numbers and ANSI.SYS attributes. Here are longer
@@ -390,32 +422,32 @@ klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset,
# setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
# The DOS 5 manual asserts that these sequences meet the ISO 6429 standard.
# They match a subset of ECMA-48.
-klone+color|color control for ansi.sys and ISO6429-compatible displays,
- colors#8, ncv#3, pairs#64,
- op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+klone+color|color control for ansi.sys and ISO6429-compatible displays,
+ colors#8, ncv#3, pairs#64,
+ op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
# This is better than klone+color, it doesn't assume white-on-black as the
# default color pair, but many `ANSI' terminals don't grok the <op> cap.
-ecma+color|color control for ECMA-48-compatible terminals,
- AX,
- colors#8, ncv#3, pairs#64,
- op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ecma+color|color control for ECMA-48-compatible terminals,
+ AX,
+ colors#8, ncv#3, pairs#64,
+ op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
# Attribute control for ECMA-48-compatible terminals
-ecma+sgr|attribute capabilities for true ECMA-48 terminals,
- rmso=\E[27m, rmul=\E[24m, use=klone+sgr,
+ecma+sgr|attribute capabilities for true ECMA-48 terminals,
+ rmso=\E[27m, rmul=\E[24m, use=klone+sgr8,
# 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
# near the end of this file.
-ibcs2|Intel Binary Compatibility Standard prescriptions,
- cbt=\E[Z, clear=\Ec, cub=\E[%p1%dD, cud=\E[%p1%dB,
- cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
- dch=\E[%p1%dP, dispc=\E=%p1%dg, ech=\E[%p1%dX,
- hpa=\E[%i%p1%dG, hts=\EH, ich=\E[%p1%d@, 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,
+ibcs2|Intel Binary Compatibility Standard prescriptions,
+ cbt=\E[Z, clear=\Ec, cub=\E[%p1%dD, cud=\E[%p1%dB,
+ cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+ dch=\E[%p1%dP, dispc=\E=%p1%dg, ech=\E[%p1%dX,
+ hpa=\E[%i%p1%dG, hts=\EH, ich=\E[%p1%d@, 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,
#### ANSI/ECMA-48 terminals and terminal emulators
#
@@ -430,22 +462,22 @@ ibcs2|Intel Binary Compatibility Standard prescriptions,
# and more than one page of memory. It uses local motions instead of
# direct cursor addressing, and makes almost no assumptions. It does
# assume auto margins, no padding and/or xon/xoff, and a 24x80 screen.
-ansi-mr|mem rel cup ansi,
- am, xon,
- cols#80, lines#24, use=vanilla, use=ansi+erase,
- use=ansi+local1,
+ansi-mr|mem rel cup ansi,
+ am, xon,
+ cols#80, lines#24, use=vanilla, use=ansi+erase,
+ use=ansi+local1,
-# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but
+# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but
# beware of screen size problems and memory relative cursor addressing.
-ansi-mini|any ansi terminal with pessimistic assumptions,
- am, xon,
- cols#80, lines#24, use=vanilla, use=ansi+cup,
- use=ansi+erase,
+ansi-mini|any ansi terminal with pessimistic assumptions,
+ am, xon,
+ cols#80, lines#24, use=vanilla, use=ansi+cup,
+ use=ansi+erase,
-# ansi-mtabs adds relative addressing and minimal tab support
-ansi-mtabs|any ansi terminal with pessimistic assumptions,
- it#8,
- ht=^I, use=ansi+local1, use=ansi-mini,
+# ansi-mtabs adds relative addressing and minimal tab support
+ansi-mtabs|any ansi terminal with pessimistic assumptions,
+ it#8,
+ ht=^I, use=ansi+local1, use=ansi-mini,
# ANSI X3.64 from emory!mlhhh (Hugh Hansard) via BRL
#
@@ -474,109 +506,112 @@ 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,
- OTbs, am, mir,
- cols#80, it#8, lines#24,
- bel=^G, clear=\E[;H\E[2J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu1=\E[A, dch1=\E[P, dl1=\E[M$<5*/>, ed=\E[J, el=\E[K,
- home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, kbs=^H,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
- kf2=\EOR, kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM,
- rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h,
- smso=\E[7m, smul=\E[4m,
+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,
+ 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,
+ rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h,
+ smso=\E[7m, smul=\E[4m,
# Procomm and some other ANSI emulations don't recognize all of the ANSI-
-# standard capabilities. This entry deletes <cuu>, <cuf>, <cud>, <cub>, and
-# <vpa>/<hpa> capabilities, forcing curses to use repetitions of <cuu1>,
-# <cuf1>, <cud1> and <cub1>. Also deleted <ich> and <ich1>, as QModem up to
+# standard capabilities. This entry deletes <cuu>, <cuf>, <cud>, <cub>, and
+# <vpa>/<hpa> capabilities, forcing curses to use repetitions of <cuu1>,
+# <cuf1>, <cud1> and <cub1>. Also deleted <ich> and <ich1>, as QModem up to
# 5.03 doesn't recognize these. Finally, we delete <rep> and <ri>, which seem
# to confuse many emulators. On the other hand, we can count on these programs
-# doing <rmacs>/<smacs>/<sgr>. Older versions of this entry featured
+# doing <rmacs>/<smacs>/<sgr>. Older versions of this entry featured
# <invis=\E[9m>, but <invis=\E[8m> now seems to be more common under
# ANSI.SYS influence.
# From: Eric S. Raymond <esr@snark.thyrsus.com> Oct 30 1995
-pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode),
- OTbs, am, mir, msgr,
- cols#80, it#8, lines#24,
- bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=\E[D,
- cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
- 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,
- kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, tbc=\E[2g,
- use=klone+sgr-dumb,
-pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode),
- lines#25, use=pcansi-m,
-pcansi-33-m|pcansi33m|ibm-pc terminal programs with 33 lines (mono mode),
- lines#33, use=pcansi-m,
-pcansi-43-m|ansi43m|ibm-pc terminal programs with 43 lines (mono mode),
- lines#43, use=pcansi-m,
+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,
+ 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,
+ kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, tbc=\E[2g,
+ use=klone+sgr-dumb,
+pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode),
+ lines#25, use=pcansi-m,
+pcansi-33-m|pcansi33m|ibm-pc terminal programs with 33 lines (mono mode),
+ lines#33, use=pcansi-m,
+pcansi-43-m|ansi43m|ibm-pc terminal programs with 43 lines (mono mode),
+ lines#43, use=pcansi-m,
# The color versions. All PC emulators do color...
-pcansi|ibm-pc terminal programs claiming to be ansi,
- use=klone+color, use=pcansi-m,
-pcansi-25|pcansi25|ibm-pc terminal programs with 25 lines,
- lines#25, use=pcansi,
-pcansi-33|pcansi33|ibm-pc terminal programs with 33 lines,
- lines#33, use=pcansi,
-pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines,
- lines#43, use=pcansi,
+pcansi|ibm-pc terminal programs claiming to be ansi,
+ use=klone+color, use=pcansi-m,
+pcansi-25|pcansi25|ibm-pc terminal programs with 25 lines,
+ lines#25, use=pcansi,
+pcansi-33|pcansi33|ibm-pc terminal programs with 33 lines,
+ lines#33, use=pcansi,
+pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines,
+ lines#43, use=pcansi,
# ansi-m -- full ANSI X3.64 with ANSI.SYS-compatible attributes, no color.
# If you want pound signs rather than dollars, replace `B' with `A'
# in the <s0ds>, <s1ds>, <s2ds>, and <s3ds> capabilities.
# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
-ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes,
- mc5i,
- 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[2g,
- vpa=\E[%i%p1%dd, use=pcansi-m,
+ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes,
+ mc5i,
+ 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[2g,
+ vpa=\E[%i%p1%dd, use=pcansi-m,
+
+ansi+enq|ncurses extension for ANSI ENQ,
+ u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c,
+ u9=\E[c,
# ansi -- this terminfo expresses the largest subset of X3.64 that will fit in
# standard terminfo. Assumes ANSI.SYS-compatible attributes and color.
# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
-ansi|ansi/pc-term compatible with color,
- u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c,
- u9=\E[c, use=ecma+color, use=klone+sgr, use=ansi-m,
-
-# ansi-generic is a vanilla ANSI terminal. This is assumed to implement
-# all the normal ANSI stuff with no extensions. It assumes
-# insert/delete line/char is there, so it won't work with
-# vt100 clones. It assumes video attributes for bold, blink,
-# underline, and reverse, which won't matter much if the terminal
-# can't do some of those. Padding is assumed to be zero, which
+ansi|ansi/pc-term compatible with color,
+ use=ansi+enq, use=ecma+color, use=klone+sgr8, use=ansi-m,
+
+# ansi-generic is a vanilla ANSI terminal. This is assumed to implement
+# all the normal ANSI stuff with no extensions. It assumes
+# insert/delete line/char is there, so it won't work with
+# vt100 clones. It assumes video attributes for bold, blink,
+# underline, and reverse, which won't matter much if the terminal
+# can't do some of those. Padding is assumed to be zero, which
# shouldn't hurt since xon/xoff is assumed.
-ansi-generic|generic ansi standard terminal,
- am, xon,
- cols#80, lines#24, use=vanilla, use=ansi+csr, use=ansi+cup,
- use=ansi+rca, use=ansi+erase, use=ansi+tabs,
- use=ansi+local, use=ansi+idc, use=ansi+idl, use=ansi+rep,
- use=ansi+sgrbold, use=ansi+arrows,
+ansi-generic|generic ansi standard terminal,
+ am, xon,
+ cols#80, lines#24, use=vanilla, use=ansi+csr, use=ansi+cup,
+ use=ansi+rca, use=ansi+erase, use=ansi+tabs,
+ use=ansi+local, use=ansi+idc, use=ansi+idl, use=ansi+rep,
+ use=ansi+sgrbold, use=ansi+arrows,
#### DOS ANSI.SYS variants
#
# 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
-ansi.sys-old|ANSI.SYS under PC-DOS 2.1,
- OTbs, am, mir, msgr, xon,
- cols#80, lines#25,
- clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[k, home=\E[H,
- is2=\E[m\E[?7h, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
- khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s", rc=\E[u,
- rmam=\E[?7l, sc=\E[s, smam=\E[?7h, u6=\E[%i%d;%dR,
- u7=\E[6n, use=klone+color, use=klone+sgr,
-ansi.sys|ANSI.SYS 3.1 and later versions,
- el=\E[K, use=ansi.sys-old,
+ansi.sys-old|ANSI.SYS under PC-DOS 2.1,
+ OTbs, am, mir, msgr, xon,
+ cols#80, lines#25,
+ clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[k, home=\E[H,
+ is2=\E[m\E[?7h, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+ khome=^^, pfkey=\E[0;%p1%{58}%+%d;%p2"%s", rc=\E[u,
+ rmam=\E[?7l, sc=\E[s, smam=\E[?7h, u6=\E[%i%d;%dR,
+ u7=\E[6n, use=klone+color, use=klone+sgr8,
+ansi.sys|ANSI.SYS 3.1 and later versions,
+ el=\E[K, use=ansi.sys-old,
#
# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS.
@@ -591,23 +626,23 @@ ansi.sys|ANSI.SYS 3.1 and later versions,
# Caution: vi is limited to 256 string bytes, longer crashes or weirds out vi.
# 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,
- use=ansi.sys,
+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,
+ use=ansi.sys,
#
# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer.
-nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS,
- dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L,
- is2=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n,
- use=ansi.sys,
+nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS,
+ dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L,
+ is2=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n,
+ use=ansi.sys,
#
# 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,
- use=ansi.sysk,
+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,
+ use=ansi.sysk,
#### ANSI console types
#
@@ -615,29 +650,29 @@ nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi
#### 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H,
- hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
- kend=\E[4~, kf1=\E[11~, kf10=\E[20~, kf11=\E[21~,
- kf12=\E[22~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
- kf5=\E[15~, kf6=\E[16~, kf7=\E[17~, kf8=\E[18~, kf9=\E[19~,
- khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z,
- nel=^M^J, op=\E[m, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l,
- rmkx=\E[?4l, rmso=\E[m, rmul=\E[24m, rs1=\Ec, sc=\E7,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- setb=\E[%p1%{40}%+%cm, setf=\E[%p1%{30}%+%cm,
- sgr0=\E[0;10m, smir=\E[4h, smkx=\E[?4h, smso=\E[7m,
- smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n,
- vpa=\E[%i%p1%dd,
+beterm|BeOS Terminal,
+ am, eo, mir, msgr, xenl, xon,
+ colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64,
+ bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H,
+ hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+ il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~,
+ kend=\E[4~, kf1=\E[11~, kf10=\E[20~, kf11=\E[21~,
+ kf12=\E[22~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~,
+ kf5=\E[15~, kf6=\E[16~, kf7=\E[17~, kf8=\E[18~, kf9=\E[19~,
+ khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z,
+ nel=^M^J, op=\E[m, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l,
+ rmkx=\E[?4l, rmso=\E[m, rmul=\E[24m, rs1=\Ec, sc=\E7,
+ setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ setb=\E[%p1%{40}%+%cm, setf=\E[%p1%{30}%+%cm,
+ sgr0=\E[0;10m, smir=\E[4h, smkx=\E[?4h, smso=\E[7m,
+ smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n,
+ vpa=\E[%i%p1%dd,
#### Linux consoles
#
@@ -662,135 +697,196 @@ beterm|BeOS Terminal,
# * *
# ***************************************************************************
#
-# The 1.3.x kernels add color-change capabilities; if yours doesn't have this
-# and it matters, turn off <ccc>. The %02x escape used to implement this is
-# not back-portable to SV curses and not supported in ncurses versions before
-# 1.9.9. All linux kernels since 1.2.13 (at least) set the screen size
+# All linux kernels since 1.2.13 (at least) set the screen size
# themselves; this entry assumes that capability.
#
-# This entry is good for the 1.2.13 or later version of the Linux console.
-#
-# ***************************************************************************
-# * *
-# * WARNING: *
-# * Linuxes come with a default keyboard mapping kcbt=^I. This entry, in *
-# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab *
-# * character. Here are the keymap replacement lines that will set this up: *
-# * *
-# keycode 15 = Tab Tab
-# alt keycode 15 = Meta_Tab
-# shift keycode 15 = F26
-# string F26 ="\033[Z"
-# * *
-# * This has to use a key slot which is unfortunate (any unused one will *
-# * do, F26 is the higher-numbered one). The change ought to be built *
-# * into the kernel tables. *
-# * *
-# ***************************************************************************
-#
+linux-basic|linux console,
+ am, bce, eo, mir, msgr, xenl, xon,
+ it#8, ncv#18,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+ dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+ el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, home=\E[H,
+ hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+ il=\E[%p1%dL, il1=\E[L, ind=^J, kb2=\E[G, kbs=\177,
+ kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+ kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+ kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
+ kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+ kspd=^Z, nel=^M^J, 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%;%?%p7%t;8%;%?%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,
+
+linux-m|Linux console no color,
+ colors@, pairs@,
+ setab@, setaf@, setb@, setf@, use=linux,
+
# The 1.3.x kernels add color-change capabilities; if yours doesn't have this
# and it matters, turn off <ccc>. The %02x escape used to implement this is
-# not back-portable to SV curses and not supported in ncurses versions before
-# 1.9.9. All linux kernels since 1.2.13 (at least) set the screen size
-# themselves; this entry assumes that capability.
-#
+# not supposedly back-portable to older SV curses (although it has worked fine
+# on Solaris for several years) and not supported in ncurses versions before
+# 1.9.9.
+linux-c-nc|linux console with color-change,
+ ccc,
+ initc=\E]P%p1%x%p2%{256}%*%{1000}%/%02x%p3%{256}%*%{1000}%/%02x%p4%{256}%*%{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%{256}%*%{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%{256}%*%{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%{256}%*%{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
# get a block cursor for cvvis.
# reported by Frank Heckenbach <frank@g-n-u.de>.
-linux|linux console,
- am, bce, eo, mir, msgr, xenl, xon,
- it#8, ncv#18,
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
- bel=^G, civis=\E[?25l\E[?1c, clear=\E[H\E[J,
- cnorm=\E[?25h\E[?0c, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu1=\E[A, cvvis=\E[?25h\E[?8c, dch=\E[%p1%dP, dch1=\E[P,
- dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J,
- el=\E[K, el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, home=\E[H,
- hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, kb2=\E[G, kbs=\177,
- kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
- kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
- kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
- kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
- khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
- kspd=^Z, nel=^M^J, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l,
- rmso=\E[27m, rmul=\E[24m, rs1=\Ec\E]R, sc=\E7,
- sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
- smir=\E[4h, smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR,
- u7=\E[6n, u8=\E[?6c, u9=\E[c, vpa=\E[%i%p1%dd,
- use=klone+sgr, use=ecma+color,
-linux-m|Linux console no color,
- colors@, pairs@,
- setab@, setaf@, setb@, setf@, use=linux,
-linux-c-nc|linux console 1.3.x hack for ncurses only,
- ccc,
- initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
- oc=\E]R, use=linux,
-# From: Dennis Henriksen <opus@osrl.dk>, 9 July 1996
-linux-c|linux console 1.3.6+ with private palette for each virtual console,
- ccc,
- colors#8, pairs#64,
- initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p3%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p4%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;,
- oc=\E]R, use=linux,
+linux|linux console,
+ civis=\E[?25l\E[?1c, cnorm=\E[?25h\E[?0c,
+ cvvis=\E[?25h\E[?8c, use=linux-c-nc,
# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
-linux-nic|linux with ich/ich1 suppressed for non-curses programs,
- ich@, ich1@, use=linux,
+linux-nic|linux with ich/ich1 suppressed for non-curses programs,
+ ich@, ich1@, use=linux,
# This assumes you have used setfont(8) to load one of the Linux koi8-r fonts.
# acsc entry from Pavel Roskin" <pavel@absolute.spb.su>, 29 Sep 1997.
-linux-koi8|linux with koi8 alternate character set,
- acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i\276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v\211w\210x\201y\230z\231{\267|\274~\224,
- use=linux, use=klone+koi8acs,
+linux-koi8|linux with koi8 alternate character set,
+ acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i\276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v\211w\210x\201y\230z\231{\267|\274~\224,
+ use=linux, use=klone+koi8acs,
# Another entry for KOI8-r with Qing Long's acsc.
# (which one better complies with the standard?)
-linux-koi8r|linux with koi8-r alternate character set,
- use=linux, use=klone+koi8acs,
+linux-koi8r|linux with koi8-r alternate character set,
+ use=linux, use=klone+koi8acs,
# Entry for the latin1 and latin2 fonts
-linux-lat|linux with latin1 or latin2 alternate character set,
- acsc=+\020\,\021-\030.^Y0\333`\004a\013f\370g\361h\260i\316j\211k\214l\206m\203n\305o~p\304q\212r\304s_t\207u\215v\301w\302x\205y\363z\362{\343|\330}\234~\376,
- use=linux,
+linux-lat|linux with latin1 or latin2 alternate character set,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\013f\370g\361h\260i\316j\211k\214l\206m\203n\305o~p\304q\212r\304s_t\207u\215v\301w\302x\205y\363z\362{\343|\330}\234~\376,
+ use=linux,
+
+# 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~~,
+ rmacs=\E(K, rmpch@, sgr@, sgr0=\E[0m\E(K\017, smacs=\E(0,
+ smpch@, use=linux,
+
+# This is based on the Linux console (relies on the console to perform some
+# of the functionality), but does not recognize as many control sequences.
+# The program comes bundled with an old (circa 1998) copy of the Linux
+# console terminfo. It recognizes some non-ANSI/VT100 sequences such as
+# \E* move cursor to home, as as \E[H
+# \E,X same as \E(X
+# \EE move cursor to beginning of row
+# \E[y,xf same as \E[y,xH
+#
+# Note: The status-line support is buggy (dsl does not work).
+kon|kon2|jfbterm|Kanji ON Linux console,
+ ccc@, hs,
+ civis@, cnorm@, cvvis@, dsl=\E[?H, flash@, fsl=\E[?F, initc@,
+ initp@, kcbt@, oc@, op=\E[37;40m, rs1=\Ec, tsl=\E[?T,
+ use=linux,
#### Mach
#
# From: Matthew Vernon <mcv21@pick.sel.cam.ac.uk>
-mach|Mach Console,
- am, km,
- cols#80, it#8, lines#25,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
- el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J,
- kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[9, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf2=\EOQ,
- kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
- kf9=\EOX, khome=\E[H, kich1=\E[@, kll=\E[F, knp=\E[U,
- kpp=\E[V, rev=\E[7m, rmso=\E[0m, rmul=\E[24m, sgr0=\E[0m,
- smso=\E[7m, smul=\E[4m,
-mach-bold|Mach Console with bold instead of underline,
- rmul=\E[0m, smul=\E[1m, use=mach,
-mach-color|Mach Console with ANSI color,
- colors#8, pairs#64,
- dim=\E[2m, invis=\E[8m, op=\E[37;40m, rmso=\E[27m,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=mach,
+mach|Mach Console,
+ am, km,
+ cols#80, it#8, lines#25,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu=\E[%p1%dA, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+ el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[9, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf2=\EOQ,
+ kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
+ kf9=\EOX, khome=\E[H, kich1=\E[@, kll=\E[F, knp=\E[U,
+ kpp=\E[V, rev=\E[7m, rmso=\E[0m, rmul=\E[24m, sgr0=\E[0m,
+ smso=\E[7m, smul=\E[4m,
+mach-bold|Mach Console with bold instead of underline,
+ rmul=\E[0m, smul=\E[1m, use=mach,
+mach-color|Mach Console with ANSI color,
+ colors#8, pairs#64,
+ dim=\E[2m, invis=\E[8m, op=\E[37;40m, rmso=\E[27m,
+ setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=mach,
+
+# From: Marcus Brinkmann
+# http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/hurd/hurd/console/
+#
+# Comments in the original are summarized here:
+#
+# hurd uses 8-bit characters (km).
+#
+# Although it doesn't do XON/XOFF, we don't want padding characters (xon).
+#
+# Regarding compatibility to vt100: hurd doesn't specify <xenl>, as we don't
+# have the eat_newline_glitch. It doesn't support setting or removing tab
+# stops (hts/tbc).
+#
+# hurd uses ^H instead of \E[D for cub1, as only ^H implements <bw> and it is
+# one byte instead three.
+#
+# <ich1> is not included because hurd has insert mode.
+#
+# hurd doesn't use ^J for scrolling, because this could put things into the
+# scrollback buffer.
+#
+# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode.
+# This is a GNU extension.
+#
+# The original has commented-out ncv, but is restored here.
+#
+# Reading the source, RIS resets cnorm, but not xmous.
+hurd|The GNU Hurd console server,
+ am, bce, bw, eo, km, mir, msgr, xon,
+ colors#8, it#8, ncv#18, pairs#64,
+ acsc=++\,\,--..00ii``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ 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,
+ 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~,
+ 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,
#### OSF Unix
#
# OSF/1 1.1 Snapshot 2
-pmcons|pmconsole|PMAX console,
- am,
- cols#128, lines#57,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ht=^I,
- ind=^J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+pmcons|pmconsole|PMAX console,
+ am,
+ cols#128, lines#57,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ht=^I,
+ ind=^J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
# SCO console and SOS-Syscons console for 386bsd
# (scoansi: had unknown capabilities
@@ -820,91 +916,91 @@ pmcons|pmconsole|PMAX console,
# which do not work (console or scoterm).
#
# Console documents only 3 attributes can be set with SGR (so we don't use sgr).
-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.\231\,.+/0[5566778899\:\:;;<<==>>FFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`\204a0fxgqh2jYk?lZm@nEqDtCu4vAwBx3yszr{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,
- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[=0;12C, dch=\E[%p1%dP,
- 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,
-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%;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,
- smgtp=\E[=0;%i%p1%dm, smm=\E[=10L,
- wind=\E[%i%p1%d;%p2%d;%i%p3%d;%p4%dr,
- use=scoansi-old,
+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.\231\,.+/0[5566778899\:\:;;<<==>>FFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`\204a0fxgqh2jYk?lZm@nEqDtCu4vAwBx3yszr{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,
+ cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[=0;12C, dch=\E[%p1%dP,
+ 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,
+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%;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,
+ smgtp=\E[=0;%i%p1%dm, smm=\E[=10L,
+ wind=\E[%i%p1%d;%p2%d;%i%p3%d;%p4%dr,
+ use=scoansi-old,
# make this easy to change...
-scoansi|SCO Extended ANSI standard crt,
- use=scoansi-old,
+scoansi|SCO Extended ANSI standard crt,
+ use=scoansi-old,
# This actually describes the generic SVr4 display driver for Intel boxes.
# The <dim=\E[2m> isn't documented and therefore may not be reliable.
# From: Eric Raymond <esr@snark.thyrsus.com> Mon Nov 27 19:00:53 EST 1995
-att6386|at386|386at|AT&T WGS 6386 console,
- am, bw, eo, xon,
- 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,
- 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,
- sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
- tbc=\E[2g, vpa=\E[%i%p1%dd, use=klone+color,
+att6386|at386|386at|AT&T WGS 6386 console,
+ am, bw, eo, xon,
+ 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,
+ 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,
+ sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
+ tbc=\E[2g, vpa=\E[%i%p1%dd, use=klone+color,
# (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr)
-pc6300plus|AT&T 6300 plus,
- 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,
- 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,
- 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,
- smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+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,
+ 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,
+ 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,
+ smso=\E[7m, smul=\E[4m, tbc=\E[3g,
# From: Benjamin C. W. Sittler <bsittler@nmt.edu>
#
@@ -912,14 +1008,14 @@ pc6300plus|AT&T 6300 plus,
# Unfortunately, the UNIX PC terminfo entry that comes with ncurses
# is broken. All the special key sequences are broken, making it unusable
# with Emacs. The problem stems from the following:
-#
+#
# The UNIX PC has a plethora of keys (103 of them, and there's no numeric
# keypad!), loadable fonts, and strange highlighting modes ("dithered"
# half-intensity, "smeared" bold, and real strike-out, for example.) It also
# uses resizable terminal windows, but the bundled terminal program always
# uses an 80x24 window (and doesn't support seem to support a 132-column
-# mode.)
-#
+# mode.)
+#
# HISTORY: The UNIX PC was one of the first machines with a GUI, and used a
# library which was a superset of SVr3.5 curses (called tam, for "terminal
# access method".) tam includes support for real, overlapping windows,
@@ -935,44 +1031,44 @@ pc6300plus|AT&T 6300 plus,
# (If you're interested in adding some of the tam calls to ncurses, btw, I
# have the full documentation and several programs which use tam. It also
# used an extended terminfo format to describe key sequences, special
-# highlighting modes, etc.)
-#
+# highlighting modes, etc.)
+#
# KEYS: This means that ncurses would quite painful on the UNIX PC, since
# there are two sequences for every key-modifier combination (local keyboard
# sequence and remote "VT100" sequence.) But I doubt many people are trying
# to use ncurses on the UNIX PC, since ncurses doesn't properly handle the
-# GUI. Unfortunately, the terminfo entry (and the termcap, too, I presume)
-# seem to have been built from the manual describing the VT100 sequences.
-# This means it doesn't work for a real live UNIX PC.
-#
+# GUI. Unfortunately, the terminfo entry (and the termcap, too, I presume)
+# seem to have been built from the manual describing the VT100 sequences.
+# This means it doesn't work for a real live UNIX PC.
+#
# FONTS: The UNIX PC also has a strange interpretation of "alternate
# character set". Rather than the VT100 graphics you might expect, it allows
# up to 8 custom fonts to be loaded at any given time. This means that
# programs expecting VT100 graphics will usually be disappointed. For this
# reason I have disabled the smacs/rmacs sequences, but they could easily be
-# re-enabled. Here are the relevant control sequences (from the ESCAPE(7)
-# manpage), should you wish to do so:
-#
+# re-enabled. Here are the relevant control sequences (from the ESCAPE(7)
+# manpage), should you wish to do so:
+#
# SGR10 - Select font 0 - ESC [ 10 m or SO
# SGR11 - Select font 1 - ESC [ 11 m or SI
# SGR12 - Select font 2 - ESC [ 12 m
# ... (etc.)
# SGR17 - Select font 7 - ESC [ 17 m
-#
+#
# Graphics for line drawing are not reliably found at *any* character
# location because the UNIX PC has dynamically reloadable fonts. I use font
# 0 for regular text and font 1 for italics, but this is by no means
# universal. So ASCII line drawing is in order if smacs/rmacs are enabled.
-#
+#
# MISC: The cursor visible/cursor invisible sequences were swapped in the
# distributed terminfo.
-#
+#
# To ameliorate these problems (and fix a few highlighting bugs) I rewrote
# the UNIX PC terminfo entry. The modified version works great with Lynx,
# Emacs, and XEmacs running on my Linux PC and displaying on the UNIX PC
# attached by serial cable. In Emacs, even the Undo key works, and many
-# applications can now use the F1-F8 keys.
-#
+# applications can now use the F1-F8 keys.
+#
# esr's notes:
# Terminfo entry for the AT&T Unix PC 7300
# from escape(7) in Unix PC 7300 Manual.
@@ -987,8 +1083,8 @@ pc6300plus|AT&T 6300 plus,
# * into font memory slot #1. Once the font has been loaded,
# * it can be used as an alternative character set.
# *
-# * The call to ioctl with the argument WIOCLFONT is the key
-# * to this routine. For more information, see window(7) in
+# * The call to ioctl with the argument WIOCLFONT is the key
+# * to this routine. For more information, see window(7) in
# * the PC 7300 documentation.
# ***************************************************************/
# #include <string.h> /* needed for strcpy call */
@@ -1003,7 +1099,7 @@ pc6300plus|AT&T 6300 plus,
# * cfont <filename>. For further information on fonts see
# * cfont(1) in the PC 7300 documentation.
# */
-#
+#
# struct altfdata /* structure for alt font data */
# {
# short altf_slot; /* memory slot number */
@@ -1023,32 +1119,32 @@ pc6300plus|AT&T 6300 plus,
# (att7300: added <civis>/<cnorm>/<ich1>/<invis> from the BSDI entry,
# they're confirmed by the man page for the System V display---esr)
#
-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,
- 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,
- 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,
- kPRV=\ENG, kRDO=\EOT, kRIT=\ENL, kRPL=\EOY, kSAV=\EOO,
- kUND=\EOS, kbeg=\ENb, kbs=^H, kcan=\EOw, kcbt=\E[Z,
- kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\ENf,
- ked=\E[J, kel=\EOa, kend=\E0, kext=\EOk, kf1=\EOc, kf2=\EOd,
- kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
- kfnd=\EOx, khlp=\EOm, khome=\E[H, kich1=\ENj, kind=\E[B,
- kmov=\ENc, kmrk=\ENi, knp=\E[U, knxt=\ENh, kopn=\EOv,
- kopt=\EOr, kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt,
- kref=\EOb, krfr=\ENa, kri=\E[A, krpl=\EOy, krst=\EOB,
- ksav=\EOo, kslt=\ENI, kund=\EOs, nel=\EE, rev=\E[7m, ri=\EM,
- rmso=\E[m, rmul=\E[m, sgr0=\E[0;10m, smso=\E[7m,
- smul=\E[4m,
+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,
+ 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,
+ 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,
+ kPRV=\ENG, kRDO=\EOT, kRIT=\ENL, kRPL=\EOY, kSAV=\EOO,
+ kUND=\EOS, kbeg=\ENb, kbs=^H, kcan=\EOw, kcbt=\E[Z,
+ kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\ENf,
+ ked=\E[J, kel=\EOa, kend=\E0, kext=\EOk, kf1=\EOc, kf2=\EOd,
+ kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
+ kfnd=\EOx, khlp=\EOm, khome=\E[H, kich1=\ENj, kind=\E[B,
+ kmov=\ENc, kmrk=\ENi, knp=\E[U, knxt=\ENh, kopn=\EOv,
+ kopt=\EOr, kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt,
+ kref=\EOb, krfr=\ENa, kri=\E[A, krpl=\EOy, krst=\EOB,
+ ksav=\EOo, kslt=\ENI, kund=\EOs, nel=\EE, rev=\E[7m, ri=\EM,
+ rmso=\E[m, rmul=\E[m, sgr0=\E[0;10m, smso=\E[7m,
+ smul=\E[4m,
# Sent by Stefan Stapelberg <stefan@rent-a-guru.de>, 24 Feb 1997, this is
# from SGI's terminfo database. SGI's entry shows F9-F12 with the codes
@@ -1083,43 +1179,43 @@ att7300|unixpc|pc7300|3b1|s4|AT&T UNIX PC Model 7300,
#
# control-tab \[072q
#
-iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100),
- am,
- cols#80, it#8, lines#40,
- bel=^G, bold=\E[1m, clear=\E[H\E[2J,
- 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,
- 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,
- home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\ED,
- 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,
- tbc=\E[3g,
-iris-ansi-ap|IRIS ANSI in application-keypad mode,
- is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q,
- kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, use=iris-ansi,
+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,
+ 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,
+ home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+ 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,
+ tbc=\E[3g,
+iris-ansi-ap|IRIS ANSI in application-keypad mode,
+ is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q,
+ kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, use=iris-ansi,
# From the man-page, this is a quasi-vt100 emulator that runs on SGI's IRIX
# (T.Dickey 98/1/24)
-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,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sitm=\E[3m, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
- use=klone+color, use=iris-ansi-ap,
+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,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+ sitm=\E[3m, use=vt100+enq, use=klone+color,
+ use=iris-ansi-ap,
# The following is a version of the ibm-pc entry distributed with PC/IX,
# (Interactive Systems' System 3 for the Big Blue), modified by Richard
@@ -1128,13 +1224,13 @@ iris-color|xwsh|IRIX ANSI with color,
# underline modes have been added. Note: this entry describes the "native"
# capabilities of the PC monochrome display, without ANY emulation; most
# communications packages (but NOT PC/IX connect) do some kind of emulation.
-pcix|PC/IX console,
- am, bw, eo,
- cols#80, lines#24,
- 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, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m,
- smul=\E[4m,
+pcix|PC/IX console,
+ am, bw, eo,
+ cols#80, lines#24,
+ 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, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m,
+ smul=\E[4m,
# (ibmpcx: this entry used to be known as ibmx.
# It formerly included the following extension capabilities:
@@ -1147,15 +1243,15 @@ pcix|PC/IX console,
# I renamed GS/GE/WL/WR/CL/CR/PU/PD/HM/EN; also, removed a duplicate
# ":kh=\E[Y:". Added IBM-PC forms characters and highlights, they match
# what was there before. -- esr)
-ibmpcx|xenix|ibmx|IBM PC xenix console display,
- OTbs, am, msgr,
- cols#80, lines#25,
- clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C,
- cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
- ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[d,
- kf1=\E[K, kf2=\E[L, kf3=\E[M, kf4=\E[N, khome=\E[Y, knp=\E[e,
- kpp=\E[Z, use=klone+acs, use=klone+sgr,
+ibmpcx|xenix|ibmx|IBM PC xenix console display,
+ OTbs, am, msgr,
+ cols#80, lines#25,
+ clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C,
+ cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+ ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[d,
+ kf1=\E[K, kf2=\E[L, kf3=\E[M, kf4=\E[N, khome=\E[Y, knp=\E[e,
+ kpp=\E[Z, use=klone+acs, use=klone+sgr8,
#### QNX
#
@@ -1168,73 +1264,73 @@ ibmpcx|xenix|ibmx|IBM PC xenix console display,
# optimization. Bug: The <op> capability resets attributes.
# From: Michael Hunter <mphunter@qnx.com> 30 Jul 1996
# (removed: <sgr=%?%p1%t\E<%;%p2%t\E[%;%p3%t\E(%;%p4%t\E{%;%p6%t\E<%;,>)
-qnx|qnx4|qnx console,
- daisy, km, mir, msgr, xhpa, xt,
- colors#8, cols#80, it#4, lines#25, ncv#3, pairs#8,
- acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t\303u\264v\301w\302x\263,
- bel=^G, blink=\E{, bold=\E<, civis=\Ey0, clear=\EH\EJ,
- cnorm=\Ey1, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ey2,
- dch1=\Ef, dl1=\EF, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\Ee,
- il1=\EE, ind=^J, kBEG=\377\356, kCAN=\377\263,
- kCMD=\377\267, kCPY=\377\363, kCRT=\377\364,
- kDL=\377\366, kEND=\377\301, kEOL=\377\311,
- kEXT=\377\367, kFND=\377\370, kHLP=\377\371,
- kHOM=\377\260, kIC=\377\340, kLFT=\377\264,
- kMOV=\377\306, kMSG=\377\304, kNXT=\377\272,
- kOPT=\377\372, kPRT=\377\275, kPRV=\377\262,
- kRDO=\377\315, kRES=\377\374, kRIT=\377\266,
- kRPL=\377\373, kSAV=\377\307, kSPD=\377\303,
- kUND=\377\337, kbeg=\377\300, kcan=\377\243, kcbt=\377\0,
- kclo=\377\343, kclr=\377\341, kcmd=\377\245,
- kcpy=\377\265, kcrt=\377\305, kctab=\377\237,
- kcub1=\377\244, kcud1=\377\251, kcuf1=\377\246,
- kcuu1=\377\241, kdch1=\377\254, kdl1=\377\274,
- ked=\377\314, kel=\377\310, kend=\377\250, kent=\377\320,
- kext=\377\270, kf1=\377\201, kf10=\377\212,
- kf11=\377\256, kf12=\377\257, kf13=\377\213,
- kf14=\377\214, kf15=\377\215, kf16=\377\216,
- kf17=\377\217, kf18=\377\220, kf19=\377\221,
- kf2=\377\202, kf20=\377\222, kf21=\377\223,
- kf22=\377\224, kf23=\377\333, kf24=\377\334,
- kf25=\377\225, kf26=\377\226, kf27=\377\227,
- kf28=\377\230, kf29=\377\231, kf3=\377\203,
- kf30=\377\232, kf31=\377\233, kf32=\377\234,
- kf33=\377\235, kf34=\377\236, kf35=\377\276,
- kf36=\377\277, kf37=\377\321, kf38=\377\322,
- kf39=\377\323, kf4=\377\204, kf40=\377\324,
- kf41=\377\325, kf42=\377\326, kf43=\377\327,
- kf44=\377\330, kf45=\377\331, kf46=\377\332,
- kf47=\377\316, kf48=\377\317, kf5=\377\205, kf6=\377\206,
- kf7=\377\207, kf8=\377\210, kf9=\377\211, kfnd=\377\346,
- khlp=\377\350, khome=\377\240, khts=\377\342,
- kich1=\377\253, kil1=\377\273, kind=\377\261,
- kmov=\377\351, kmrk=\377\355, kmsg=\377\345,
- knp=\377\252, knxt=\377\312, kopn=\377\357,
- kopt=\377\353, kpp=\377\242, kprt=\377\255,
- kprv=\377\302, krdo=\377\336, kref=\377\354,
- kres=\377\360, krfr=\377\347, kri=\377\271,
- krmir=\377\313, krpl=\377\362, krst=\377\352,
- ksav=\377\361, kslt=\377\247, kspd=\377\335,
- ktbc=\377\344, kund=\377\365, mvpa=\E!%p1%02d, op=\ER,
- rep=\Eg%p2%{32}%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER,
- rmso=\E), rmul=\E], rs1=\ER, setb=\E@%p1%Pb%gb%gf%d%d,
- setf=\E@%p1%Pf%gb%gf%d%d, sgr0=\E}\E]\E>\E), smcup=\Ei,
- smso=\E(, smul=\E[,
-#
-#
-qnxt|qnxt4|QNX4 terminal,
- crxm, use=qnx4,
-#
-qnxm|QNX4 with mouse events,
- maddr#1,
- chr=\E/, cvr=\E", is1=\E/0t, mcub=\E/>1h, mcub1=\E/>7h,
- mcud=\E/>1h, mcud1=\E/>1l\E/>9h, mcuf=\E/>1h\E/>9l,
- mcuf1=\E/>7l, mcuu=\E/>6h, mcuu1=\E/>6l, rmicm=\E/>2l,
- smicm=\E/>2h, use=qnx4,
-#
-qnxw|QNX4 windows,
- xvpa, use=qnxm,
+qnx|qnx4|qnx console,
+ daisy, km, mir, msgr, xhpa, xt,
+ colors#8, cols#80, it#4, lines#25, ncv#3, pairs#8,
+ acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t\303u\264v\301w\302x\263,
+ bel=^G, blink=\E{, bold=\E<, civis=\Ey0, clear=\EH\EJ,
+ cnorm=\Ey1, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ey2,
+ dch1=\Ef, dl1=\EF, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\Ee,
+ il1=\EE, ind=^J, kBEG=\377\356, kCAN=\377\263,
+ kCMD=\377\267, kCPY=\377\363, kCRT=\377\364,
+ kDL=\377\366, kEND=\377\301, kEOL=\377\311,
+ kEXT=\377\367, kFND=\377\370, kHLP=\377\371,
+ kHOM=\377\260, kIC=\377\340, kLFT=\377\264,
+ kMOV=\377\306, kMSG=\377\304, kNXT=\377\272,
+ kOPT=\377\372, kPRT=\377\275, kPRV=\377\262,
+ kRDO=\377\315, kRES=\377\374, kRIT=\377\266,
+ kRPL=\377\373, kSAV=\377\307, kSPD=\377\303,
+ kUND=\377\337, kbeg=\377\300, kcan=\377\243, kcbt=\377\0,
+ kclo=\377\343, kclr=\377\341, kcmd=\377\245,
+ kcpy=\377\265, kcrt=\377\305, kctab=\377\237,
+ kcub1=\377\244, kcud1=\377\251, kcuf1=\377\246,
+ kcuu1=\377\241, kdch1=\377\254, kdl1=\377\274,
+ ked=\377\314, kel=\377\310, kend=\377\250, kent=\377\320,
+ kext=\377\270, kf1=\377\201, kf10=\377\212,
+ kf11=\377\256, kf12=\377\257, kf13=\377\213,
+ kf14=\377\214, kf15=\377\215, kf16=\377\216,
+ kf17=\377\217, kf18=\377\220, kf19=\377\221,
+ kf2=\377\202, kf20=\377\222, kf21=\377\223,
+ kf22=\377\224, kf23=\377\333, kf24=\377\334,
+ kf25=\377\225, kf26=\377\226, kf27=\377\227,
+ kf28=\377\230, kf29=\377\231, kf3=\377\203,
+ kf30=\377\232, kf31=\377\233, kf32=\377\234,
+ kf33=\377\235, kf34=\377\236, kf35=\377\276,
+ kf36=\377\277, kf37=\377\321, kf38=\377\322,
+ kf39=\377\323, kf4=\377\204, kf40=\377\324,
+ kf41=\377\325, kf42=\377\326, kf43=\377\327,
+ kf44=\377\330, kf45=\377\331, kf46=\377\332,
+ kf47=\377\316, kf48=\377\317, kf5=\377\205, kf6=\377\206,
+ kf7=\377\207, kf8=\377\210, kf9=\377\211, kfnd=\377\346,
+ khlp=\377\350, khome=\377\240, khts=\377\342,
+ kich1=\377\253, kil1=\377\273, kind=\377\261,
+ kmov=\377\351, kmrk=\377\355, kmsg=\377\345,
+ knp=\377\252, knxt=\377\312, kopn=\377\357,
+ kopt=\377\353, kpp=\377\242, kprt=\377\255,
+ kprv=\377\302, krdo=\377\336, kref=\377\354,
+ kres=\377\360, krfr=\377\347, kri=\377\271,
+ krmir=\377\313, krpl=\377\362, krst=\377\352,
+ ksav=\377\361, kslt=\377\247, kspd=\377\335,
+ ktbc=\377\344, kund=\377\365, mvpa=\E!%p1%02d, op=\ER,
+ rep=\Eg%p2%{32}%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER,
+ rmso=\E), rmul=\E], rs1=\ER, setb=\E@%p1%Pb%gb%gf%d%d,
+ setf=\E@%p1%Pf%gb%gf%d%d, sgr0=\E}\E]\E>\E), smcup=\Ei,
+ smso=\E(, smul=\E[,
+#
+#
+qnxt|qnxt4|QNX4 terminal,
+ crxm, use=qnx4,
+#
+qnxm|QNX4 with mouse events,
+ maddr#1,
+ chr=\E/, cvr=\E", is1=\E/0t, mcub=\E/>1h, mcub1=\E/>7h,
+ mcud=\E/>1h, mcud1=\E/>1l\E/>9h, mcuf=\E/>1h\E/>9l,
+ mcuf1=\E/>7l, mcuu=\E/>6h, mcuu1=\E/>6l, rmicm=\E/>2l,
+ smicm=\E/>2h, use=qnx4,
+#
+qnxw|QNX4 windows,
+ xvpa, use=qnxm,
#
# Monochrome QNX4 terminal or console. Setting this terminal type will
# allow an application running on a color console to behave as if it
@@ -1242,83 +1338,83 @@ qnxw|QNX4 windows,
# console writes because the term routines will recognize that the
# terminal name starts with 'qnxt'.
#
-qnxtmono|Monochrome QNX4 terminal or console,
- colors@, pairs@,
- scp@, use=qnx4,
+qnxtmono|Monochrome QNX4 terminal or console,
+ colors@, pairs@,
+ scp@, use=qnx4,
# From: Federico Bianchi <bianchi@pc-arte2.arte.unipi.it>, 1 Jul 1998
# (esr: commented out <scp> and <rmcup> to avoid warnings.)
# (TD: derive from original qnx4 entry)
-qnxt2|qnx 2.15 serial terminal,
- am,
- civis@, cnorm@, cvvis@, dch1@, ich1@, kRES@, kRPL@, kUND@, kspd@,
- rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, use=qnx4,
+qnxt2|qnx 2.15 serial terminal,
+ am,
+ civis@, cnorm@, cvvis@, dch1@, ich1@, kRES@, kRPL@, kUND@, kspd@,
+ rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, use=qnx4,
# QNX ANSI terminal definition
-qansi-g|QNX ANSI,
- am, eslok, hs, xon,
- colors#8, cols#80, it#8, lines#25, ncv#19, pairs#64, wsl#80,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~Oa,
- 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,
- 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,
- cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
- dl=\E[%p1%dM, dl1=\E[1M, dsl=\E[r, ech=\E[%p1%dX, ed=\E[J,
- 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,
- 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,
- kLFT=\E[d, kNXT=\E[u, kOPT=\ENz, kPRV=\E[v, kRIT=\E[c,
- kbs=^H, kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa,
- kcmd=\E[G, kcpy=\E[g, kctab=\E[z, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[p, kend=\E[Y,
- kext=\E[y, kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA,
- kf13=\EOp, kf14=\EOq, kf15=\EOr, kf16=\EOs, kf17=\EOt,
- kf18=\EOu, kf19=\EOv, kf2=\EOQ, kf20=\EOw, kf21=\EOx,
- kf22=\EOy, kf23=\EOz, kf24=\EOa, kf25=\E[1~, kf26=\E[2~,
- kf27=\E[3~, kf28=\E[4~, kf29=\E[5~, kf3=\EOR, kf30=\E[6~,
- kf31=\E[7~, kf32=\E[8~, kf33=\E[9~, kf34=\E[10~,
- kf35=\E[11~, kf36=\E[12~, kf37=\E[17~, kf38=\E[18~,
- kf39=\E[19~, kf4=\EOS, kf40=\E[20~, kf41=\E[21~,
- kf42=\E[22~, kf43=\E[23~, kf44=\E[24~, kf45=\E[25~,
- kf46=\E[26~, kf47=\E[27~, kf48=\E[28~, kf5=\EOT, kf6=\EOU,
- kf7=\EOV, kf8=\EOW, kf9=\EOX, kfnd=\ENf, khlp=\ENh,
- khome=\E[H, khts=\ENb, kich1=\E[@, kil1=\E[`, kind=\E[a,
- kmov=\ENi, kmrk=\ENm, kmsg=\ENe, knp=\E[U, kopn=\ENo,
- 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,
- 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%;,
- sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smso=\E[7m,
- smul=\E[4m, tbc=\E[2g,
- tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH,
-#
-qansi|QNX ansi with console writes,
- daisy, xhpa, use=qansi-g,
-#
-qansi-t|QNX ansi without console writes,
- crxm, use=qansi,
-#
-qansi-m|QNX ansi with mouse,
- maddr#1,
- chr=\E[, cvr=\E], is1=\E[0t, mcub=\E[>1h, mcub1=\E[>7h,
- mcud=\E[>1h, mcud1=\E[>1l\E[>9h, mcuf=\E[>1h\E[>9l,
- mcuf1=\E[>7l, mcuu=\E[>6h, mcuu1=\E[>6l, rmicm=\E[>2l,
- smicm=\E[>2h, use=qansi,
-#
-qansi-w|QNX ansi for windows,
- xvpa, use=qansi-m,
+qansi-g|QNX ANSI,
+ am, eslok, hs, xon,
+ colors#8, cols#80, it#8, lines#25, ncv#19, pairs#64, wsl#80,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~Oa,
+ 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,
+ 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,
+ cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+ dl=\E[%p1%dM, dl1=\E[1M, dsl=\E[r, ech=\E[%p1%dX, ed=\E[J,
+ 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,
+ 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,
+ kLFT=\E[d, kNXT=\E[u, kOPT=\ENz, kPRV=\E[v, kRIT=\E[c,
+ kbs=^H, kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa,
+ kcmd=\E[G, kcpy=\E[g, kctab=\E[z, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[p, kend=\E[Y,
+ kext=\E[y, kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA,
+ kf13=\EOp, kf14=\EOq, kf15=\EOr, kf16=\EOs, kf17=\EOt,
+ kf18=\EOu, kf19=\EOv, kf2=\EOQ, kf20=\EOw, kf21=\EOx,
+ kf22=\EOy, kf23=\EOz, kf24=\EOa, kf25=\E[1~, kf26=\E[2~,
+ kf27=\E[3~, kf28=\E[4~, kf29=\E[5~, kf3=\EOR, kf30=\E[6~,
+ kf31=\E[7~, kf32=\E[8~, kf33=\E[9~, kf34=\E[10~,
+ kf35=\E[11~, kf36=\E[12~, kf37=\E[17~, kf38=\E[18~,
+ kf39=\E[19~, kf4=\EOS, kf40=\E[20~, kf41=\E[21~,
+ kf42=\E[22~, kf43=\E[23~, kf44=\E[24~, kf45=\E[25~,
+ kf46=\E[26~, kf47=\E[27~, kf48=\E[28~, kf5=\EOT, kf6=\EOU,
+ kf7=\EOV, kf8=\EOW, kf9=\EOX, kfnd=\ENf, khlp=\ENh,
+ khome=\E[H, khts=\ENb, kich1=\E[@, kil1=\E[`, kind=\E[a,
+ kmov=\ENi, kmrk=\ENm, kmsg=\ENe, knp=\E[U, kopn=\ENo,
+ 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,
+ 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%;,
+ sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smso=\E[7m,
+ smul=\E[4m, tbc=\E[2g,
+ tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH,
+#
+qansi|QNX ansi with console writes,
+ daisy, xhpa, use=qansi-g,
+#
+qansi-t|QNX ansi without console writes,
+ crxm, use=qansi,
+#
+qansi-m|QNX ansi with mouse,
+ maddr#1,
+ chr=\E[, cvr=\E], is1=\E[0t, mcub=\E[>1h, mcub1=\E[>7h,
+ mcud=\E[>1h, mcud1=\E[>1l\E[>9h, mcuf=\E[>1h\E[>9l,
+ mcuf1=\E[>7l, mcuu=\E[>6h, mcuu1=\E[>6l, rmicm=\E[>2l,
+ smicm=\E[>2h, use=qansi,
+#
+qansi-w|QNX ansi for windows,
+ xvpa, use=qansi-m,
#### NetBSD consoles
#
@@ -1333,186 +1429,202 @@ qansi-w|QNX ansi for windows,
# NOTE: <ich1> has been taken out of this entry. for reference, it should
# be <ich1=\E[@>. For discussion, see ICH/ICH1 VERSUS RMIR/SMIR below.
# (esr: added <civis> and <cnorm> to resolve NetBSD Problem Report #4583)
-pcvtXX|pcvt vt200 emulator (DEC VT220),
- am, km, mir, msgr, xenl,
- it#8, vt#3,
- acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~,
- bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- 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,
- 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,
- 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,
+pcvtXX|pcvt vt200 emulator (DEC VT220),
+ am, km, mir, msgr, xenl,
+ it#8, vt#3,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ 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,
+ 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,
+ 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,
# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
# 50 lines entries; 80 columns
-pcvt25|dec vt220 emulation with 25 lines,
- cols#80, lines#25,
- is2=\E[1;25r\E[25;1H, use=pcvtXX,
-pcvt28|dec vt220 emulation with 28 lines,
- cols#80, lines#28,
- is2=\E[1;28r\E[28;1H, use=pcvtXX,
-pcvt35|dec vt220 emulation with 35 lines,
- cols#80, lines#35,
- is2=\E[1;35r\E[35;1H, use=pcvtXX,
-pcvt40|dec vt220 emulation with 40 lines,
- cols#80, lines#40,
- is2=\E[1;40r\E[40;1H, use=pcvtXX,
-pcvt43|dec vt220 emulation with 43 lines,
- cols#80, lines#43,
- is2=\E[1;43r\E[43;1H, use=pcvtXX,
-pcvt50|dec vt220 emulation with 50 lines,
- cols#80, lines#50,
- is2=\E[1;50r\E[50;1H, use=pcvtXX,
+pcvt25|dec vt220 emulation with 25 lines,
+ cols#80, lines#25,
+ is2=\E[1;25r\E[25;1H, use=pcvtXX,
+pcvt28|dec vt220 emulation with 28 lines,
+ cols#80, lines#28,
+ is2=\E[1;28r\E[28;1H, use=pcvtXX,
+pcvt35|dec vt220 emulation with 35 lines,
+ cols#80, lines#35,
+ is2=\E[1;35r\E[35;1H, use=pcvtXX,
+pcvt40|dec vt220 emulation with 40 lines,
+ cols#80, lines#40,
+ is2=\E[1;40r\E[40;1H, use=pcvtXX,
+pcvt43|dec vt220 emulation with 43 lines,
+ cols#80, lines#43,
+ is2=\E[1;43r\E[43;1H, use=pcvtXX,
+pcvt50|dec vt220 emulation with 50 lines,
+ cols#80, lines#50,
+ is2=\E[1;50r\E[50;1H, use=pcvtXX,
# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
# 50 lines entries; 132 columns
-pcvt25w|dec vt220 emulation with 25 lines and 132 cols,
- cols#132, lines#25,
- is2=\E[1;25r\E[25;1H, use=pcvtXX,
-pcvt28w|dec vt220 emulation with 28 lines and 132 cols,
- cols#132, lines#28,
- is2=\E[1;28r\E[28;1H, use=pcvtXX,
-pcvt35w|dec vt220 emulation with 35 lines and 132 cols,
- cols#132, lines#35,
- is2=\E[1;35r\E[35;1H, use=pcvtXX,
-pcvt40w|dec vt220 emulation with 40 lines and 132 cols,
- cols#132, lines#40,
- is2=\E[1;40r\E[40;1H, use=pcvtXX,
-pcvt43w|dec vt220 emulation with 43 lines and 132 cols,
- cols#132, lines#43,
- is2=\E[1;43r\E[43;1H, use=pcvtXX,
-pcvt50w|dec vt220 emulation with 50 lines and 132 cols,
- cols#132, lines#50,
- is2=\E[1;50r\E[50;1H, use=pcvtXX,
+pcvt25w|dec vt220 emulation with 25 lines and 132 cols,
+ cols#132, lines#25,
+ is2=\E[1;25r\E[25;1H, use=pcvtXX,
+pcvt28w|dec vt220 emulation with 28 lines and 132 cols,
+ cols#132, lines#28,
+ is2=\E[1;28r\E[28;1H, use=pcvtXX,
+pcvt35w|dec vt220 emulation with 35 lines and 132 cols,
+ cols#132, lines#35,
+ is2=\E[1;35r\E[35;1H, use=pcvtXX,
+pcvt40w|dec vt220 emulation with 40 lines and 132 cols,
+ cols#132, lines#40,
+ is2=\E[1;40r\E[40;1H, use=pcvtXX,
+pcvt43w|dec vt220 emulation with 43 lines and 132 cols,
+ cols#132, lines#43,
+ is2=\E[1;43r\E[43;1H, use=pcvtXX,
+pcvt50w|dec vt220 emulation with 50 lines and 132 cols,
+ cols#132, lines#50,
+ is2=\E[1;50r\E[50;1H, use=pcvtXX,
# OpenBSD implements a color variation
-pcvt25-color|dec vt220 emulation with 25 lines and color,
- cols#80, lines#25,
- is2=\E[1;25r\E[25;1H, kf1=\EOP, kf10=\E[29~, 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[17~,
- kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, use=pcvtXX,
- use=ecma+color,
+pcvt25-color|dec vt220 emulation with 25 lines and color,
+ cols#80, lines#25,
+ is2=\E[1;25r\E[25;1H, kf1=\EOP, kf10=\E[29~, 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[17~,
+ kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~, use=pcvtXX,
+ use=ecma+color,
# Terminfo entries to enable the use of the ncurses library in colour on a
# NetBSD-arm32 console (only tested on a RiscPC).
# Created by Dave Millen <dmill@globalnet.co.uk> 22.07.98
# modified codes for setf/setb to setaf/setab, then to klone+color, corrected
# typo in invis - TD
-arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480),
- am, bce, msgr, xenl, xon,
- cols#80, it#8, lines#30,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
- clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
- cuf=\E[%p1%dC, cuf1=\E[C$<2>,
- cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
- cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
- enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J,
- invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H,
- kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x,
- kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t, kf6=\E[u, kf7=\E[v,
- kf8=\E[l, kf9=\E[w, rc=\E8, rev=\E[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%;%?%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,
-
-arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768),
- cols#132, lines#50, use=arm100,
+arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480),
+ am, bce, msgr, xenl, xon,
+ cols#80, it#8, lines#30,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
+ clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cuf=\E[%p1%dC, cuf1=\E[C$<2>,
+ cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
+ cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
+ enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J,
+ invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H,
+ kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x,
+ kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t, kf6=\E[u, kf7=\E[v,
+ kf8=\E[l, kf9=\E[w, rc=\E8, rev=\E[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%;%?%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,
+
+arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768),
+ cols#132, lines#50, use=arm100,
# NetBSD/x68k console vt200 emulator. This port runs on a 68K machine
# manufactured by Sharp for the Japenese market.
# From Minoura Makoto <minoura@netlaputa.or.jp>, 12 May 1996
-x68k|x68k-ite|NetBSD/x68k ITE,
- cols#96, lines#32,
- kclr=\E[9~, khlp=\E[28~, use=vt220,
+x68k|x68k-ite|NetBSD/x68k ITE,
+ cols#96, lines#32,
+ kclr=\E[9~, khlp=\E[28~, use=vt220,
# <tv@pobox.com>:
# Entry for the DNARD OpenFirmware console, close to ANSI but not quite.
#
# (still unfinished, but good enough so far.)
-ofcons,
- bw,
- cols#80, lines#30,
- bel=^G, blink=\2337;2m, bold=\2331m, clear=^L, cr=^M,
- cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B,
- cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
- cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P,
- dim=\2332m, dl=\233%p1%dM, dl1=\233M, ed=\233J, el=\233K,
- flash=^G, ht=^I, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL,
- il1=\233L, ind=^J, invis=\2338m, kbs=^H, kcub1=\233D,
- kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\233P,
- kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W,
- kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r,
- kf9=\2330p, knp=\233/, kpp=\233?, nel=^M^J, rev=\2337m,
- rmso=\2330m, rmul=\2330m, sgr0=\2330m,
-
-# NetBSD "wscons" emulator in vt220 mode
-# These are micro-minimal and probably need to be redone for real
-# after the manner of the pcvt entries.
-wsvt25|NetBSD wscons in 25 line DEC VT220 mode,
- cols#80, lines#25, use=vt220,
-
-wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta,
- km,
- cols#80, lines#25, use=vt220,
-
-# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and
+ofcons|DNARD OpenFirmware console,
+ bw,
+ cols#80, lines#30,
+ bel=^G, blink=\2337;2m, bold=\2331m, clear=^L, cr=^M,
+ cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B,
+ cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH,
+ cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P,
+ dim=\2332m, dl=\233%p1%dM, dl1=\233M, ed=\233J, el=\233K,
+ flash=^G, ht=^I, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL,
+ il1=\233L, ind=^J, invis=\2338m, kbs=^H, kcub1=\233D,
+ kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\233P,
+ kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W,
+ kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r,
+ kf9=\2330p, knp=\233/, kpp=\233?, nel=^M^J, rev=\2337m,
+ rmso=\2330m, rmul=\2330m,
+ sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+ sgr0=\2330m,
+
+# NetBSD "wscons" emulator in vt220 mode.
+# This entry is based on the NetBSD termcap entry, correcting the ncv value.
+# The emulator renders underlined text in red. Colors are otherwise usable.
+#
+# Testing the emulator and reading the source code (NetBSD 2.0), it appears
+# that "vt220" is inaccurate. There are a few vt220-features, but most of the
+# vt220 screens in vttest do not work with this emulator. For instance, it
+# identifies itself (primary DA response) as a vt220 with selective erase. But
+# the selective erase feature does not work. The secondary response is copied
+# from Kermit's emulation of vt220, does not correspond to actual vt220. At
+# the level of detail in a termcap, it is a passable emulator, since ECH does
+# work. Don't use it on a VMS system -TD
+wsvt25|NetBSD wscons in 25 line DEC VT220 mode,
+ bce, msgr,
+ colors#8, cols#80, it#8, lines#25, ncv#2, pairs#64,
+ is2=\E[r\E[25;1H, kend=\E[8~, kf1=\E[11~, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf2=\E[12~, kf3=\E[13~,
+ kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+ kf9=\E[20~, khome=\E[7~, op=\E[m, setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm, use=vt220,
+
+wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta,
+ km, use=wsvt25,
+
+# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and
# DECstation/pmax.
-rcons|BSD rasterconsole,
- use=sun-il,
-# Color version of above. Color currenly only provided by NetBSD.
-rcons-color|BSD rasterconsole with ANSI color,
- bce,
- colors#8, pairs#64,
- op=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=rcons,
+rcons|BSD rasterconsole,
+ use=sun-il,
+# Color version of above. Color currently only provided by NetBSD.
+rcons-color|BSD rasterconsole with ANSI color,
+ bce,
+ colors#8, pairs#64,
+ op=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=rcons,
# mgterm -- MGL/MGL2, MobileGear Graphic Library
# for PocketBSD,PocketLinux,NetBSD/{hpcmips,mac68k}
# -- the setf/setb are probably incorrect, more likely setaf/setab -TD
# -- compare with cons25w
-mgterm,
- OTbs, OTpt, am, bce, bw, eo, km, msgr, npc,
- colors#8, cols#80, it#8, lines#18, pairs#64,
- bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
- cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, dl=\E[%p1%dM,
- dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
- home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
- ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
- indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[F,
- kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf2=\E[N,
- kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T,
- kf9=\E[U, khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I,
- nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT,
- rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, setb=\E[4%p1%dm,
- setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,
+mgterm,
+ OTbs, OTpt, am, bce, bw, eo, km, msgr, npc,
+ colors#8, cols#80, it#8, lines#18, pairs#64,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+ cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, dl=\E[%p1%dM,
+ dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+ home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@,
+ ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S,
+ indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, kend=\E[F,
+ kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf2=\E[N,
+ kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T,
+ kf9=\E[U, khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I,
+ nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT,
+ rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, setb=\E[4%p1%dm,
+ setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,
#### FreeBSD console entries
#
@@ -1543,111 +1655,117 @@ mgterm,
# F13-F24 are shifted F1-F12
# F25-F36 are control F1-F12
# F37-F48 are shift+control F1-F12
-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,
- cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
- hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS, kb2=\E[E,
- kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, kdch1=\177, kend=\E[F, kf1=\E[M, kf10=\E[V,
- kf11=\E[W, kf12=\E[X, 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, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmso=\E[m,
- rs2=\E[x\E[m\Ec, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd,
-cons25|ansis|ansi80x25|freebsd console (25-line ansi mode),
- 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-m|ansis-mono|ansi80x25-mono|freebsd console (25-line mono ansi mode),
- colors@, pairs@,
- bold@, dim@, op@, rmul=\E[m, setab@, setaf@, smul=\E[4m,
- use=cons25,
-cons30|ansi80x30|freebsd console (30-line ansi mode),
- lines#30, use=cons25,
-cons30-m|ansi80x30-mono|freebsd console (30-line mono ansi mode),
- lines#30, use=cons25-m,
-cons43|ansi80x43|freebsd console (43-line ansi mode),
- lines#43, use=cons25,
-cons43-m|ansi80x43-mono|freebsd console (43-line mono ansi mode),
- lines#43, use=cons25-m,
-cons50|ansil|ansi80x50|freebsd console (50-line ansi mode),
- lines#50, use=cons25,
-cons50-m|ansil-mono|ansi80x50-mono|freebsd console (50-line mono ansi mode),
- lines#50, use=cons25-m,
-cons60|ansi80x60|freebsd console (60-line ansi mode),
- lines#60, use=cons25,
-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,
- 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@, smul=\E[4m, use=cons25r,
-cons50r|cons50-koi8r|freebsd console w/koi8-r cyrillic (50 lines),
- lines#50, use=cons25r,
-cons50r-m|cons50-koi8r-m|freebsd console w/koi8-r cyrillic (50-line mono),
- lines#50, use=cons25r-m,
-cons60r|cons60-koi8r|freebsd console w/koi8-r cyrillic (60 lines),
- lines#60, use=cons25r,
-cons60r-m|cons60-koi8r-m|freebsd console w/koi8-r cyrillic (60-line mono),
- lines#60, use=cons25r-m,
+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,
+ 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,
+cons25|ansis|ansi80x25|freebsd console (25-line ansi mode),
+ acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~\371,
+ use=cons25w,
+cons25-m|ansis-mono|ansi80x25-mono|freebsd console (25-line mono ansi mode),
+ colors@, pairs@,
+ bold@, dim@, op@, rmul=\E[m, setab@, setaf@,
+ sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m,
+ smul=\E[4m, use=cons25,
+cons30|ansi80x30|freebsd console (30-line ansi mode),
+ lines#30, use=cons25,
+cons30-m|ansi80x30-mono|freebsd console (30-line mono ansi mode),
+ lines#30, use=cons25-m,
+cons43|ansi80x43|freebsd console (43-line ansi mode),
+ lines#43, use=cons25,
+cons43-m|ansi80x43-mono|freebsd console (43-line mono ansi mode),
+ lines#43, use=cons25-m,
+cons50|ansil|ansi80x50|freebsd console (50-line ansi mode),
+ lines#50, use=cons25,
+cons50-m|ansil-mono|ansi80x50-mono|freebsd console (50-line mono ansi mode),
+ lines#50, use=cons25-m,
+cons60|ansi80x60|freebsd console (60-line ansi mode),
+ lines#60, use=cons25,
+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,
+ 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,
+ smul=\E[4m, use=cons25r,
+cons50r|cons50-koi8r|freebsd console w/koi8-r cyrillic (50 lines),
+ lines#50, use=cons25r,
+cons50r-m|cons50-koi8r-m|freebsd console w/koi8-r cyrillic (50-line mono),
+ lines#50, use=cons25r-m,
+cons60r|cons60-koi8r|freebsd console w/koi8-r cyrillic (60 lines),
+ lines#60, use=cons25r,
+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,
- use=cons25w,
-cons25l1-m|cons25-iso-m|freebsd console w/iso 8859-1 chars (mono),
- colors@, pairs@,
- bold@, dim@, op@, rmul=\E[m, setab@, setaf@, smul=\E[4m,
- use=cons25l1,
-cons50l1|cons50-iso8859|freebsd console w/iso 8859-1 chars (50 lines),
- lines#50, use=cons25l1,
-cons50l1-m|cons50-iso-m|freebsd console w/iso 8859-1 chars (50-line mono),
- lines#50, use=cons25l1-m,
-cons60l1|cons60-iso|freebsd console w/iso 8859-1 chars (60 lines),
- lines#60, use=cons25l1,
-cons60l1-m|cons60-iso-m|freebsd console w/iso 8859-1 chars (60-line mono),
- lines#60, use=cons25l1-m,
+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,
+ use=cons25w,
+cons25l1-m|cons25-iso-m|freebsd console w/iso 8859-1 chars (mono),
+ colors@, pairs@,
+ bold@, dim@, op@, rmul=\E[m, setab@, setaf@,
+ sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m,
+ smul=\E[4m, use=cons25l1,
+cons50l1|cons50-iso8859|freebsd console w/iso 8859-1 chars (50 lines),
+ lines#50, use=cons25l1,
+cons50l1-m|cons50-iso-m|freebsd console w/iso 8859-1 chars (50-line mono),
+ lines#50, use=cons25l1-m,
+cons60l1|cons60-iso|freebsd console w/iso 8859-1 chars (60 lines),
+ lines#60, use=cons25l1,
+cons60l1-m|cons60-iso-m|freebsd console w/iso 8859-1 chars (60-line mono),
+ lines#60, use=cons25l1-m,
#### 386BSD and BSD/OS Consoles
#
-# This was the original 386BSD console entry (I think).
+# This was the original 386BSD console entry (I think).
# Some places it's named oldpc3|oldibmpc3.
# From: Alex R.N. Wetmore <aw2t@andrew.cmu.edu>
-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,
- 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,
- kcuu1=\E[A, khome=\E[Y, ri=\E[T, rmso=\E[1;0x\E[2;7x,
- rmul=\E[1;0x\E[2;7x, sgr0=\E[m\E[1;0x\E[2;7x,
- smso=\E[1;7x\E[2;0x, smul=\E[1;7x\E[2;0x,
+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,
+ 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,
+ kcuu1=\E[A, khome=\E[Y, ri=\E[T, rmso=\E[1;0x\E[2;7x,
+ rmul=\E[1;0x\E[2;7x, sgr0=\E[m\E[1;0x\E[2;7x,
+ smso=\E[1;7x\E[2;0x, smul=\E[1;7x\E[2;0x,
# description of BSD/386 console emulator in version 1.0 (supplied by BSDI)
-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,
- 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,
+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,
+ 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,
# Description of BSD/OS console emulator in version 1.1, 2.0, 2.1
# Note, the emulator supports many of the additional console features
@@ -1655,52 +1773,68 @@ oldpc3|oldibmpc3|old IBM PC BSD/386 Console,
# are described here. This entry really ought to be upgraded.
# Also note, the console will also work with fewer lines after doing
# "stty rows NN", e.g. to use 24 lines.
-# (Color support from Kevin Rosenberg <kevin@cyberport.com>, 2 May 1996)
+# (Color support from Kevin Rosenberg <kevin@cyberport.com>, 2 May 1996)
# Bug: The <op> capability resets attributes.
-bsdos-pc|IBM PC BSD/OS Console,
- sgr=\E[0;10%?%p1%t;7%;%?%p2%t;1%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
- use=bsdos-pc-nobold,
-
-bsdos-pc-nobold|BSD/OS PC console w/o bold,
- use=klone+color, use=bsdos-pc-m,
-
-bsdos-pc-m|bsdos-pc-mono|BSD/OS PC console mono,
- OTbs, am, eo, km, xon,
- cols#80, it#8, lines#25,
- bel=^G, clear=\Ec, cr=^M, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
- il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L,
- kll=\E[F, knp=\E[G, kpp=\E[I, nel=^M^J, rc=\E8, sc=\E7,
- sgr=\E[0;10%?%p1%t;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m%?%p5%t\E[=8F%;,
- use=klone+sgr,
-
-# Old names for BSD/OS PC console used in releases before 4.1.
-pc3|BSD/OS on the PC Console,
- use=bsdos-pc-nobold,
-ibmpc3|pc3-bold|BSD/OS on the PC Console with bold instead of underline,
- use=bsdos-pc,
-
-# BSD/OS on the SPARC
-bsdos-sparc|Sun SPARC BSD/OS Console,
- use=sun,
-
-# BSD/OS on the PowerPC
-bsdos-ppc|PowerPC BSD/OS Console,
- use=bsdos-pc,
+bsdos-pc|IBM PC BSD/OS Console,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;1%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
+ use=bsdos-pc-nobold,
+
+bsdos-pc-nobold|BSD/OS PC console w/o bold,
+ use=klone+color, use=bsdos-pc-m,
+
+bsdos-pc-m|bsdos-pc-mono|BSD/OS PC console mono,
+ OTbs, am, eo, km, xon,
+ cols#80, it#8, lines#25,
+ bel=^G, clear=\Ec, cr=^M, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+ il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L,
+ kll=\E[F, knp=\E[G, kpp=\E[I, nel=^M^J, rc=\E8, sc=\E7,
+ sgr=\E[0;10%?%p1%t;7%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m%?%p5%t\E[=8F%;,
+ use=klone+sgr8,
+
+# Old names for BSD/OS PC console used in releases before 4.1.
+pc3|BSD/OS on the PC Console,
+ use=bsdos-pc-nobold,
+ibmpc3|pc3-bold|BSD/OS on the PC Console with bold instead of underline,
+ use=bsdos-pc,
+
+# BSD/OS on the SPARC
+bsdos-sparc|Sun SPARC BSD/OS Console,
+ use=sun,
+
+# BSD/OS on the PowerPC
+bsdos-ppc|PowerPC BSD/OS Console,
+ use=bsdos-pc,
#### DEC VT52
# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
-vt52|dec vt52,
- OTbs,
- cols#80, it#8, lines#24,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF,
+#
+# Actually (TD pointed this out at the time the acsc string was added):
+# vt52 shouldn't define full acsc since most of the cells don't match.
+# see vt100 manual page A-31. This is the list that does match:
+# f degree
+# g plus/minus
+# h right-arrow
+# k down-arrow
+# m scan-1
+# o scan-3
+# q scan-5
+# s scan-7
+# The line-drawing happens to work in several terminal emulators, but should
+# not be used as a guide to the capabilities of the vt52. Note in particular
+# that vt52 does not support line-drawing characters (the scan-X values refer
+# to a crude plotting feature) -TD
+vt52|dec vt52,
+ OTbs,
+ cols#80, it#8, lines#24,
+ acsc=ffgghhompoqqss.k, bel=^G, clear=\EH\EJ, cr=^M,
+ cub1=\ED, cud1=\EB, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+ el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF,
#### DEC VT100 and compatibles
#
@@ -1711,7 +1845,7 @@ vt52|dec vt52,
#
# Except where noted, these entries are DEC's official terminfos.
# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
-# Engineering for more information. Updated terminfos and termcaps
+# Engineering for more information. Updated terminfos and termcaps
# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
#
# In October 1995 DEC sold its terminals business, including the VT and Dorio
@@ -1732,18 +1866,18 @@ vt52|dec vt52,
# you output the char in column 80, immediately output CR LF
# and then assume you are in column 1 of the next line. If <xenl>
# is on, am should be on too.
-#
+#
# I assume you have smooth scroll off or are at a slow enough baud
# rate that it doesn't matter (1200? or less). Also this assumes
-# that you set auto-nl to "on", if you set it off use vt100-nam
+# that you set auto-nl to "on", if you set it off use vt100-nam
# below.
-#
+#
# The padding requirements listed here are guesses. It is strongly
# recommended that xon/xoff be enabled, as this is assumed here.
-#
-# The vt100 uses <rs2> and <rf> rather than <is2>/<tbc>/<hts> because the
-# tab settings are in non-volatile memory and don't need to be
-# reset upon login. Also setting the number of columns glitches
+#
+# The vt100 uses <rs2> and <rf> rather than <is2>/<tbc>/<hts> because the
+# tab settings are in non-volatile memory and don't need to be
+# reset upon login. Also setting the number of columns glitches
# the screen annoyingly. You can type "reset" to get them set.
#
# The VT100 series terminals have cursor ("arrows") keys which can operate
@@ -1767,7 +1901,7 @@ vt52|dec vt52,
# The Numeric Keypad which can operate in two different modes: Numeric Mode and
# Application Mode. Numeric Mode is the reset state, and is assumed to be
# the normal state. Application Mode is the "set" state. In Numeric Mode,
-# the numeric and punctuation keys transmit ASCII 7-bit characters, and the
+# the numeric and punctuation keys transmit ASCII 7-bit characters, and the
# Enter key transmits the same as the Return key (Note: the Return key
# can be configured to send either LF (\015) or CR LF). In Application Mode,
# all the keypad keys transmit "Esc O {code}" sequences. The PF1 - PF4 keys
@@ -1809,9 +1943,53 @@ vt52|dec vt52,
# | $Op | $On | |
# |___kc1_______K4____|_kc3__K5_|_kent_@8_|
#
+# Note however, that the arrangement of the 5-key ka1-kc3 do not follow the
+# terminfo guidelines. That is a compromise used to assign the remaining
+# keys on the keypad to kf5-kf0, used on older systems with legacy termcap
+# support:
+vt100+keypad|dec vt100 numeric keypad no fkeys,
+ ka1=\EOq, ka3=\EOs, kb2=\EOr, kc1=\EOp, kc3=\EOn,
+vt100+pfkeys|dec vt100 numeric keypad,
+ kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ use=vt100+keypad,
+vt100+fnkeys|dec vt100 numeric keypad,
+ kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl,
+ kf9=\EOw, use=vt100+pfkeys,
+#
+# A better adaptation to modern keyboards such as the PC's, which have a dozen
+# function keys and the keypad 2,4,6,8 keys are labeled with arrows keys, is to
+# use the 5-key arrangement to model the arrow keys as suggested in the
+# terminfo guidelines:
+# _______________________________________
+# | PF1 | PF2 | PF3 | PF4 |
+# | $OP | $OQ | $OR | $OS |
+# |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_|
+# | 7 8 9 - |
+# | $Ow | $Ox | $Oy | $Om |
+# |_ka1__K1_|_________|_ka3__K3_|_________|
+# | 4 | 5 | 6 | , |
+# | $Ot | $Ou | $Ov | $Ol |
+# |_________|_kb2__K2_|_________|_________|
+# | 1 | 2 | 3 | |
+# | $Oq | $Or | $Os | enter |
+# |_kc1__K4_|_________|_kc3__K5_| $OM |
+# | 0 | . | |
+# | $Op | $On | |
+# |___________________|_________|_kent_@8_|
+#
+vt220+keypad|dec vt220 numeric keypad,
+ ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, kent=\EOM,
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ka2=\EOx, kb1=\EOt,
+ kb3=\EOv, kc2=\EOr,
+#
+vt100+enq|ncurses extension for vt100-style ENQ,
+ u8=\E[?1;2c, use=ansi+enq,
+vt102+enq|ncurses extension for vt102-style ENQ,
+ u8=\E[?6c, use=ansi+enq,
+#
# And here, for those of you with orphaned VT100s lacking documentation, is
# a description of the soft switches invoked when you do `Set Up'.
-#
+#
# Scroll 0-Jump Shifted 3 0-#
# | 1-Smooth | 1-British pound sign
# | Autorepeat 0-Off | Wrap Around 0-Off
@@ -1843,226 +2021,229 @@ vt52|dec vt52,
# INTERLACE_OFF
#
# (vt100: I added <rmam>/<smam> based on the init string, also <OTbs>. -- esr)
-vt100|vt100-am|dec vt100 (w/advanced video),
- OTbs, am, msgr, xenl, xon,
- cols#80, it#8, lines#24, vt#3,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
- clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
- cuf=\E[%p1%dC, cuf1=\E[C$<2>,
- cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
- cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
- enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, ka1=\EOq,
- ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD,
- kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, kf0=\EOy,
- kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt,
- kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, 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,
-vt100nam|vt100-nam|vt100 no automargins,
- am@, xenl@, use=vt100-am,
-vt100-vb|dec vt100 (w/advanced video) & no beep,
- bel@, flash=\E[?5h\E[?5l, use=vt100,
+vt100|vt100-am|dec vt100 (w/advanced video),
+ OTbs, am, mc5i, msgr, xenl, xon,
+ 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,
+ 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,
+vt100nam|vt100-nam|vt100 no automargins,
+ am@, xenl@, use=vt100-am,
+vt100-vb|dec vt100 (w/advanced video) & no beep,
+ bel@, flash=\E[?5h\E[?5l, use=vt100,
# Ordinary vt100 in 132 column ("wide") mode.
-vt100-w|vt100-w-am|dec vt100 132 cols (w/advanced video),
- cols#132, lines#24,
- rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-am,
-vt100-w-nam|vt100-nam-w|dec vt100 132 cols (w/advanced video no automargin),
- cols#132, lines#14, vt@,
- rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-nam,
+vt100-w|vt100-w-am|dec vt100 132 cols (w/advanced video),
+ cols#132, lines#24,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-am,
+vt100-w-nam|vt100-nam-w|dec vt100 132 cols (w/advanced video no automargin),
+ cols#132, lines#14, vt@,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-nam,
# vt100 with no advanced video.
-vt100-nav|vt100 without advanced video option,
- xmc#1,
- blink@, bold@, rev@, rmso=\E[m, rmul@, sgr@, sgr0@, smso=\E[7m,
- smul@, use=vt100,
-vt100-nav-w|vt100-w-nav|dec vt100 132 cols 14 lines (no advanced video option),
- cols#132, lines#14, use=vt100-nav,
+vt100-nav|vt100 without advanced video option,
+ xmc#1,
+ blink@, bold@, rev@, rmso=\E[m, rmul@, sgr@, sgr0@, smso=\E[7m,
+ smul@, use=vt100,
+vt100-nav-w|vt100-w-nav|dec vt100 132 cols 14 lines (no advanced video option),
+ cols#132, lines#14, use=vt100-nav,
# vt100 with one of the 24 lines used as a status line.
# We put the status line on the top.
-vt100-s|vt100-s-top|vt100-top-s|vt100 for use with top sysline,
- eslok, hs,
- lines#23,
- clear=\E[2;1H\E[J$<50>, csr=\E[%i%i%p1%d;%p2%dr,
- cup=\E[%i%p1%{1}%+%d;%p2%dH$<5>, dsl=\E7\E[1;24r\E8,
- fsl=\E8, home=\E[2;1H, is2=\E7\E[2;24r\E8,
- tsl=\E7\E[1;%p1%dH\E[1K, use=vt100-am,
-
-# Status line at bottom.
+vt100-s|vt100-s-top|vt100-top-s|vt100 for use with top sysline,
+ eslok, hs,
+ lines#23,
+ clear=\E[2;1H\E[J$<50>, csr=\E[%i%i%p1%d;%p2%dr,
+ cup=\E[%i%p1%{1}%+%d;%p2%dH$<5>, dsl=\E7\E[1;24r\E8,
+ fsl=\E8, home=\E[2;1H, is2=\E7\E[2;24r\E8,
+ tsl=\E7\E[1;%p1%dH\E[1K, use=vt100-am,
+
+# Status line at bottom.
# Clearing the screen will clobber status line.
-vt100-s-bot|vt100-bot-s|vt100 for use with bottom sysline,
- eslok, hs,
- lines#23,
- dsl=\E7\E[1;24r\E8, fsl=\E8, is2=\E[1;23r\E[23;1H,
- tsl=\E7\E[24;%p1%dH\E[1K, use=vt100-am,
+vt100-s-bot|vt100-bot-s|vt100 for use with bottom sysline,
+ eslok, hs,
+ lines#23,
+ dsl=\E7\E[1;24r\E8, fsl=\E8, is2=\E[1;23r\E[23;1H,
+ tsl=\E7\E[24;%p1%dH\E[1K, use=vt100-am,
# Most of the `vt100' emulators out there actually emulate a vt102
# This entry (or vt102-nsgr) is probably the right thing to use for
-# these.
-vt102|dec vt102,
- mir,
- dch1=\E[P, dl1=\E[M, il1=\E[L, rmir=\E[4l, smir=\E[4h,
- use=vt100,
-vt102-w|dec vt102 in wide mode,
- cols#132,
- rs3=\E[?3h, use=vt102,
+# these.
+vt102|dec vt102,
+ dch1=\E[P, dl1=\E[M, il1=\E[L, rmir=\E[4l, smir=\E[4h,
+ use=vt100,
+vt102-w|dec vt102 in wide mode,
+ cols#132,
+ rs3=\E[?3h, use=vt102,
# Many brain-dead PC comm programs that pretend to be `vt100-compatible'
# fail to interpret the ^O and ^N escapes properly. Symptom: the <sgr0>
# string in the canonical vt100 entry above leaves the screen littered
# with little snowflake or star characters (IBM PC ROM character \017 = ^O)
# after highlight turnoffs. This entry should fix that, and even leave
-# ACS support working, at the cost of making multiple-highlight changes
+# ACS support working, at the cost of making multiple-highlight changes
# slightly more expensive.
# From: Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995
-vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes),
- sgr@, sgr0=\E[m, use=vt102,
+vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes),
+ sgr@, sgr0=\E[m, use=vt102,
# VT125 Graphics CRT. Clear screen also erases graphics
-vt125|vt125 graphics terminal,
- clear=\E[H\E[2J\EPpS(E)\E\\$<50>, use=vt100,
+# Some vt125's came configured with vt102 support.
+vt125|vt125 graphics terminal,
+ mir,
+ clear=\E[H\E[2J\EPpS(E)\E\\$<50>, use=vt100,
# This isn't a DEC entry, it came from University of Wisconsin.
# (vt131: I added <rmam>/<smam> based on the init string, also <OTbs> -- esr)
-vt131|dec vt131,
- 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/>,
- 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/>,
- 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,
- sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=,
- smso=\E[7m$<2/>, smul=\E[4m$<2/>,
+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/>,
+ 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/>,
+ 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,
+ sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=,
+ smso=\E[7m$<2/>, smul=\E[4m$<2/>,
# vt132 - like vt100 but slower and has ins/del line and such.
# I'm told that <smir>/<rmir> are backwards in the terminal from the
-# manual and from the ANSI standard, this describes the actual
-# terminal. I've never actually used a vt132 myself, so this
+# manual and from the ANSI standard, this describes the actual
+# terminal. I've never actually used a vt132 myself, so this
# is untested.
#
-vt132|DEC vt132,
- xenl,
- dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>,
- ip=$<7>, rmir=\E[4h, smir=\E[4l, use=vt100,
+vt132|DEC vt132,
+ xenl,
+ dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>,
+ ip=$<7>, rmir=\E[4h, smir=\E[4l, use=vt100,
# This vt220 description maps F5--F9 to the second block of function keys
# at the top of the keyboard. The "DO" key is used as F10 to avoid conflict
# with the key marked (ESC) on the vt220. See vt220d for an alternate mapping.
# PF1--PF4 are used as F1--F4.
#
-vt220-old|vt200-old|DEC VT220 in vt100 emulation mode,
- OTbs, OTpt, am, mir, xenl, xon,
- cols#80, lines#24, vt#3,
- OTnl=^J,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, civis=\E[?25l,
- clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=^M,
- 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,
- if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED$<20/>,
- is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\EOP,
- kf10=\E[29~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[17~,
- kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~,
- khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rc=\E8,
- rev=\E[7m$<2>, rf=/usr/share/tabset/vt100,
- 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>,
- sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
- smso=\E[7m, smul=\E[4m,
+vt220-old|vt200-old|DEC VT220 in vt100 emulation mode,
+ OTbs, OTpt, am, mir, xenl, xon,
+ cols#80, lines#24, vt#3,
+ OTnl=^J,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, civis=\E[?25l,
+ clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=^M,
+ 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,
+ if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED$<20/>,
+ is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, kf1=\EOP,
+ kf10=\E[29~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\E[17~,
+ kf6=\E[18~, kf7=\E[19~, kf8=\E[20~, kf9=\E[21~,
+ khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rc=\E8,
+ rev=\E[7m$<2>, rf=/usr/share/tabset/vt100,
+ 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>,
+ sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+ smso=\E[7m, smul=\E[4m,
# A much better description of the VT200/220; used to be vt220-8
# changed rmacs/smacs from shift-in/shift-out to vt200-old's explicit G0/G1
# designation to accommodate bug in pcvt -TD
-vt220|vt200|dec vt220,
- OTbs, am, mc5i, mir, msgr, xenl, xon,
- cols#80, it#8, lines#24, vt#3,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
- flash=\E[?5h$<200/>\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=\ED,
- is2=\E[?7h\E[>\E[?1h\E F\E[?4l, kbs=^H, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
- kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
- kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
- khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~,
- kslt=\E[4~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[i,
- mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
- rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m,
- rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, smacs=\E(0$<2>,
- smam=\E[?7h, smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-vt220-w|vt200-w|DEC vt220 in wide mode,
- cols#132,
- rs3=\E[?3h, use=vt220,
-vt220-8bit|vt220-8|vt200-8bit|vt200-8|dec vt220/200 in 8-bit mode,
- OTbs, am, mc5i, mir, msgr, xenl, xon,
- cols#80, it#8, lines#24, vt#3,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=^M,
- csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H,
- cud=\233%p1%dB, cud1=^J, cuf=\233%p1%dC, cuf1=\233C,
- cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A,
- dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
- ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, enacs=\E)0,
- flash=\233?5h$<200/>\233?5l, home=\233H, ht=^I, hts=\EH,
- ich=\233%p1%d@, if=/usr/share/tabset/vt100,
- il=\233%p1%dL, il1=\233L, ind=\ED,
- is2=\233?7h\233>\233?1h\E F\233?4l, kbs=^H,
- kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
- kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~,
- kf13=\23325~, kf14=\23326~, kf17=\23331~, kf18=\23332~,
- kf19=\23333~, kf2=\EOQ, kf20=\23334~, kf3=\EOR, kf4=\EOS,
- kf6=\23317~, kf7=\23318~, kf8=\23319~, kf9=\23320~,
- kfnd=\2331~, khlp=\23328~, khome=\233H, kich1=\2332~,
- knp=\2336~, kpp=\2335~, krdo=\23329~, kslt=\2334~, lf1=pf1,
- lf2=pf2, lf3=pf3, lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i,
- nel=\EE, rc=\E8, rev=\2337m, ri=\EM, rmacs=^O, rmam=\233?7l,
- rmir=\2334l, rmso=\23327m, rmul=\23324m, rs1=\233?3l,
- sc=\E7, sgr0=\233m, smacs=^N, smam=\233?7h, smir=\2334h,
- smso=\2337m, smul=\2334m, tbc=\2333g,
+vt220|vt200|dec vt220,
+ OTbs, am, mc5i, mir, msgr, xenl, xon,
+ cols#80, it#8, lines#24, vt#3,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
+ flash=\E[?5h$<200/>\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=\ED,
+ is2=\E[?7h\E[>\E[?1h\E F\E[?4l, kbs=^H, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+ kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
+ kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
+ kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~,
+ lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[i, mc4=\E[4i,
+ mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
+ rmacs=\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>,
+ sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+ smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+vt220-w|vt200-w|DEC vt220 in wide mode,
+ cols#132,
+ rs3=\E[?3h, use=vt220,
+vt220-8bit|vt220-8|vt200-8bit|vt200-8|dec vt220/200 in 8-bit mode,
+ OTbs, am, mc5i, mir, msgr, xenl, xon,
+ cols#80, it#8, lines#24, vt#3,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=^M,
+ csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H,
+ cud=\233%p1%dB, cud1=^J, cuf=\233%p1%dC, cuf1=\233C,
+ cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A,
+ dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
+ ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, enacs=\E)0,
+ flash=\233?5h$<200/>\233?5l, home=\233H, ht=^I, hts=\EH,
+ ich=\233%p1%d@, if=/usr/share/tabset/vt100,
+ il=\233%p1%dL, il1=\233L, ind=\ED,
+ is2=\233?7h\233>\233?1h\E F\233?4l, kbs=^H,
+ kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
+ kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~,
+ kf13=\23325~, kf14=\23326~, kf17=\23331~, kf18=\23332~,
+ kf19=\23333~, kf2=\EOQ, kf20=\23334~, kf3=\EOR, kf4=\EOS,
+ kf6=\23317~, kf7=\23318~, kf8=\23319~, kf9=\23320~,
+ kfnd=\2331~, khlp=\23328~, khome=\233H, kich1=\2332~,
+ knp=\2336~, kpp=\2335~, krdo=\23329~, kslt=\2334~, lf1=pf1,
+ lf2=pf2, lf3=pf3, lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i,
+ nel=\EE, rc=\E8, rev=\2337m, ri=\EM, rmacs=\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>,
+ sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h, smir=\2334h,
+ smso=\2337m, smul=\2334m, tbc=\2333g,
-#
# vt220d:
# This vt220 description regards F6--F10 as the second block of function keys
# at the top of the keyboard. This mapping follows the description given
# in the VT220 Programmer Reference Manual and agrees with the labeling
# on some terminals that emulate the vt220. There is no support for an F5.
-# See vt220 for an alternate mapping.
+# See vt220 for an alternate mapping.
#
-vt220d|DEC VT220 in vt100 mode with DEC function key labeling,
- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
- kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
- kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf5@, kf6=\E[17~,
- kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, use=vt220-old,
+vt220d|DEC VT220 in vt100 mode with DEC function key labeling,
+ kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+ kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+ kf18=\E[32~, kf19=\E[33~, kf20=\E[34~, kf5@, kf6=\E[17~,
+ kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, use=vt220-old,
-vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins,
- am@,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220,
+vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins,
+ am@,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220,
# vt220 termcap written Tue Oct 25 20:41:10 1988 by Alex Latzko
# (not an official DEC entry!)
@@ -2079,35 +2260,34 @@ vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins,
#
# From: Alexander Latzko <latzko@marsenius.rutgers.edu>, 30 Dec 1996
# (Added vt100 <rc>,<sc> to quiet a tic warning -- esr)
-vt200-js|vt220-js|dec vt200 series with jump scroll,
- am,
- cols#80,
- bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub1=^H, cud1=^J, 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[?1l\E[?5l\E[?6l\E[?7h\E[?8h\E[?25h\E>\E[m,
- kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=^M\ED, 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=,
- smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m,
-
-# This was DEC's vt320. Use the purpose-built one below instead
+vt200-js|vt220-js|dec vt200 series with jump scroll,
+ am,
+ cols#80,
+ bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud1=^J, 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[?1l\E[?5l\E[?6l\E[?7h\E[?8h\E[?25h\E>\E[m,
+ kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=^M\ED, 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=,
+ smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m,
+
+# This was DEC's vt320. Use the purpose-built one below instead
#vt320|DEC VT320 in vt100 emulation mode,
# use=vt220,
-#
# Use v320n for SCO's LYRIX. Otherwise, use Adam Thompson's vt320-nam.
#
-vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode,
- am@,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220,
+vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode,
+ am@,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220,
-# These entries are not DEC's official ones, they were purpose-built for the
+# These entries are not DEC's official ones, they were purpose-built for the
# VT320. Here are the designer's notes:
-# <kel> is end on a PC kbd. Actually 'select' on a VT. Mapped to
+# <kel> is end on a PC kbd. Actually 'select' on a VT. Mapped to
# 'Erase to End of Field'... since nothing seems to use 'end' anyways...
# khome is Home on a PC kbd. Actually 'FIND' on a VT.
# Things that use <knxt> usually use tab anyways... and things that don't use
@@ -2117,53 +2297,54 @@ vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode,
# and the resulting fact that it causes the termcap translation of the entry
# to SMASH the 1k-barrier...
# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
-# (vt320: uncommented <fsl> --esr)
-vt320|vt300|dec vt320 7 bit terminal,
- am, eslok, hs, mir, msgr, xenl,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, fsl=\E[0$},
- 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[5?l\E[?7h\E[?8h\E[1;24r\E[24;1H,
- ka1=\EOw, ka3=\EOy, kb2=\EOu, kbs=\177, kc1=\EOq, kc3=\EOs,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kdch1=\E[3~, kel=\E[4~, kent=\EOM, kf1=\EOP, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
- kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
- kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS,
- kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
- khome=\E[1~, kich1=\E[2~, knp=\E[6~, knxt=^I, kpp=\E[5~,
- kprv=\E[Z, kslt=\E[4~, mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i,
- nel=\EE, 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[m, rmul=\E[m,
- rs2=\E>\E[?3l\E[?4l\E[5?l\E[?7h\E[?8h\E[1;24r\E[24;1H,
- 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$}\E[H\E[K,
-vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy,
- am@,
- is2=\E>\E[?3l\E[?4l\E[5?l\E[?7l\E[?8h\E[1;24r\E[24;1H,
- rs2=\E>\E[?3l\E[?4l\E[5?l\E[?7l\E[?8h\E[1;24r\E[24;1H,
- use=vt320,
+# (vt320: uncommented <fsl> --esr)
+vt320|vt300|dec vt320 7 bit terminal,
+ am, eslok, hs, mir, msgr, xenl,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, fsl=\E[0$},
+ 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,
+ 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~,
+ kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+ kf9=\E[20~, khome=\E[1~, kich1=\E[2~, knp=\E[6~, knxt=^I,
+ kpp=\E[5~, kprv=\E[Z, kslt=\E[4~, mc0=\E[i, mc4=\E[?4i,
+ mc5=\E[?5i, nel=\EE, 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[m,
+ 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>,
+ 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[1$}\E[H\E[K, use=vt220+keypad,
+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,
# 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[5?l\E[?7h\E[?8h\E[1;24r\E[24;1H,
- rs2=\E>\E[?3h\E[?4l\E[5?l\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[5?l\E[?7l\E[?8h\E[1;24r\E[24;1H,
- rs2=\E>\E[?3h\E[?4l\E[5?l\E[?7l\E[?8h\E[1;24r\E[24;1H,
- use=vt320-w,
+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,
+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,
# VT330 and VT340 -- These are ReGIS and SIXEL graphics terminals
# which are pretty much a superset of the VT320. They have the
@@ -2179,40 +2360,42 @@ vt320-w-nam|vt300-w-nam|dec vt320 wide 7 bit terminal with no am,
# Emacs v18 terminal modes to deal with the cursor keys in that the arrow
# keys were switched into application mode at the same time the numeric pad
# is switched into application mode. This changes the definitions of the
-# arrow keys. Emacs v19 is smarter and mines its keys directly out of
+# arrow keys. Emacs v19 is smarter and mines its keys directly out of
# your termcap or terminfo entry,
#
# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993
# (vt340: string capability "sb=\E[M" corrected to "sr";
# also, added <rmam>/<smam> based on the init string -- esr)
-vt340|dec-vt340|vt330|dec-vt330|dec vt340 graphics terminal with 24 line page,
- am, eslok, hs, mir, msgr, xenl, xon,
- 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,
- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[?25h, dch=\E[%p1%dP,
- dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K,
- flash=\E[?5h\E[?5l$<200/>, 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,
- 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,
- rf=/usr/share/tabset/vt300, 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,
- 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,
+vt340|dec-vt340|vt330|dec-vt330|dec vt340 graphics terminal with 24 line page,
+ am, eslok, hs, mir, msgr, xenl, xon,
+ 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,
+ 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[$},
+ 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,
+ 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,
+ 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>,
+ 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,
# 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).
-#
-# VT400/420 -- This terminal is a superset of the vt320. It adds the multiple
+#
+# VT400/420 -- This terminal is a superset of the vt320. It adds the multiple
# text pages and long text pages with selectable length of the vt340, along
# with left and right margins, rectangular area text copy, fill, and erase
# operations, selected region character attribute change operations,
@@ -2224,122 +2407,122 @@ vt340|dec-vt340|vt330|dec-vt330|dec vt340 graphics terminal with 24 line page,
# Emacs v18 terminal modes to deal with the cursor keys in that the arrow
# keys were switched into application mode at the same time the numeric pad
# is switched into application mode. This changes the definitions of the
-# arrow keys. Emacs v19 is smarter and mines its keys directly out of
+# arrow keys. Emacs v19 is smarter and mines its keys directly out of
# your termcap entry,
#
# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993
# (vt400: string capability ":sb=\E[M:" corrected to ":sr=\E[M:";
# also, added <rmam>/<smam> based on the init string -- esr)
-vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap,
- am, eslok, hs, mir, msgr, xenl, xon,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, 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[$},
- 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,
- 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,
- rf=/usr/share/tabset/vt300, ri=\EM, rmacs=^O,
- 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, sgr0=\E[m,
- smacs=^N, 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,
+vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap,
+ am, eslok, hs, mir, msgr, xenl, xon,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J$<10/>,
+ el=\E[K$<4/>, flash=\E[?5h\E[?5l$<200/>, 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,
+ 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,
+ 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>,
+ 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,
# (vt420: I removed <kf0>, it collided with <kf10>. I also restored
# a missing <sc> -- esr)
-vt420|DEC VT420,
- am, mir, xenl, xon,
- cols#80, lines#24, vt#3,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- 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=\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,
- if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
- is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR,
- kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
- kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- kslt=\E[4~, rc=\E8, rev=\E[7m$<2>,
- rf=/usr/share/tabset/vt300, 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[m, rmul=\E[m, 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>,
- sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
- smkx=\E=, smso=\E[7m, smul=\E[4m,
+vt420|DEC VT420,
+ am, mir, xenl, xon,
+ cols#80, lines#24, vt#3,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ 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=\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,
+ if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
+ is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR,
+ kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
+ kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ kslt=\E[4~, rc=\E8, rev=\E[7m$<2>,
+ rf=/usr/share/tabset/vt300, 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[m, rmul=\E[m, 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>,
+ sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+ smkx=\E=, smso=\E[7m, smul=\E[4m,
-#
# DEC VT220 and up support DECUDK (user-defined keys). DECUDK (i.e., pfx)
# takes two parameters, the key and the string. Translating the key is
# straightforward (keys 1-5 are not defined on real terminals, though some
# emulators define these):
#
# if (key < 16) then value = key;
-# else if (key < 21) then value = key + 1;
+# else if (key < 21) then value = key + 1;
# else if (key < 25) then value = key + 2;
# else if (key < 27) then value = key + 3;
# else if (key < 30) then value = key + 4;
# else value = key + 5;
#
-# The string must be the hexadecimal equivalent, e.g., "5052494E" for "PRINT".
+# The string must be the hexadecimal equivalent, e.g., "5052494E" for "PRINT".
# There's no provision in terminfo for emitting a string in this format, so the
# 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,
- pctrm=USR_TERM\:vt420pcdos\:,
- pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\,
- use=vt420,
-
-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%;,
- 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~,
- 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[H, lf1=\EOP, lf2=\EOQ, lf3=\EOR, lf4=\EOS,
- use=vt420,
-
-vt510|DEC VT510,
- use=vt420,
-vt510pc|DEC VT510 w/PC keyboard,
- use=vt420pc,
-vt510pcdos|DEC VT510 w/PC for DOS Merge,
- use=vt420pcdos,
+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,
+ pctrm=USR_TERM\:vt420pcdos\:,
+ pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\,
+ use=vt420,
+
+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%;,
+ 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~,
+ 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[H, lf1=\EOP, lf2=\EOQ, lf3=\EOR, lf4=\EOS,
+ use=vt420,
+
+vt510|DEC VT510,
+ use=vt420,
+vt510pc|DEC VT510 w/PC keyboard,
+ use=vt420pc,
+vt510pcdos|DEC VT510 w/PC for DOS Merge,
+ use=vt420pcdos,
# VT520/VT525
#
@@ -2355,57 +2538,57 @@ vt510pcdos|DEC VT510 w/PC for DOS Merge,
# assigned to an unknown key, Set-Up may be entered by pressing
# [F3] as the first key after power up, regardless of keyboard type.
# (vt520: I added <rmam>/<smam> based on the init string, also <sc> -- esr)
-vt520|DEC VT520,
- am, mir, xenl, xon,
- cols#80, lines#24, vt#3,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- 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=\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,
- if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
- is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR,
- kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
- kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- kslt=\E[4~,
- pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\,
- rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300,
- ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
- rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
- rmso=\E[m, rmul=\E[m, 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>,
- sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
- smso=\E[7m, smul=\E[4m,
+vt520|DEC VT520,
+ am, mir, xenl, xon,
+ cols#80, lines#24, vt#3,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ 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=\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,
+ if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
+ is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR,
+ kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
+ kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ kslt=\E[4~,
+ pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\,
+ rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300,
+ ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
+ rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+ rmso=\E[m, rmul=\E[m, 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>,
+ sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+ smso=\E[7m, smul=\E[4m,
# (vt525: I added <rmam>/<smam> based on the init string;
# removed <rmso>=\E[m, <rmul>=\E[m, added <sc> -- esr)
-vt525|DEC VT525,
- am, mir, xenl, xon,
- cols#80, lines#24, vt#3,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- 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=\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,
- if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
- is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR,
- kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
- kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- kslt=\E[4~,
- pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\,
- rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300,
- ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
- rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
- rmso=\E[m, rmul=\E[m, 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>,
- sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
- smso=\E[7m, smul=\E[4m,
+vt525|DEC VT525,
+ am, mir, xenl, xon,
+ cols#80, lines#24, vt#3,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ 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=\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,
+ if=/usr/share/tabset/vt300, il1=\E[L, ind=\ED,
+ is2=\E[1;24r\E[24;1H, is3=\E[?67h\E[64;1"p, kbs=^H,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kf1=\EOP, kf10=\E[29~, kf2=\EOQ, kf3=\EOR,
+ kf4=\EOS, kf5=\E[17~, kf6=\E[18~, kf7=\E[19~, kf8=\E[20~,
+ kf9=\E[21~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ kslt=\E[4~,
+ pfx=\EP1;1|%?%{16}%p1%>%t%{0}%e%{21}%p1%>%t%{1}%e%{25}%p1%>%t%{2}%e%{27}%p1%>%t%{3}%e%{30}%p1%>%t%{4}%e%{5}%;%p1%+%d/%p2%s\E\\,
+ rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300,
+ ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l,
+ rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+ rmso=\E[m, rmul=\E[m, 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>,
+ sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
+ smso=\E[7m, smul=\E[4m,
#### VT100 emulations
#
@@ -2414,12 +2597,12 @@ vt525|DEC VT525,
# (the best Windows telnet as of September 1995) presents the name `dec-vt100'
# to telnetd. Michael Deutschmann <ldeutsch@mail.netshop.net> informs us
# that this works best with a stock vt100 entry.
-dec-vt100|EWAN telnet's vt100 emulation,
- use=vt100,
+dec-vt100|EWAN telnet's vt100 emulation,
+ use=vt100,
# From: Adrian Garside <94ajg2@eng.cam.ac.uk>, 19 Nov 1996
-dec-vt220|DOS tnvt200 terminal emulator,
- am@, use=vt220,
+dec-vt220|DOS tnvt200 terminal emulator,
+ am@, use=vt220,
# Zstem340 is an (IMHO) excellent VT emulator for PC's. I recommend it to
# anyone who needs PC VT340 emulation. (or anything below that level, for
@@ -2428,30 +2611,34 @@ dec-vt220|DOS tnvt200 terminal emulator,
# I can send the address if requested.
# (z340: changed garbled \E[5?l to \E[?5l, DEC smooth scroll off -- esr)
# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
-z340|zstem vt340 terminal emulator 132col 42line,
- lines#42,
- is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H,
- 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,
+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,
+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,
# CRT is shareware. It implements some xterm features, including mouse.
-crt|crt-vt220|CRT 2.3 emulating VT220,
- bce, msgr,
- ncv@,
- hts=\EH, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
- use=vt220, use=ecma+color,
+crt|crt-vt220|CRT 2.3 emulating VT220,
+ bce, msgr,
+ ncv@,
+ hts=\EH, use=vt100+enq, use=vt220, use=ecma+color,
-# PuTTY 0.51 (released 14 December 2000)
+# PuTTY 0.55 (released 3 August 2004)
# http://www.chiark.greenend.org.uk/~sgtatham/putty/
#
+# Comparing with 0.51, vttest is much better (only a few problems with the
+# cursor position reports and wrapping).
+#
+# PuTTY 0.51 (released 14 December 2000)
+#
# This emulates vt100 + vt52 (plus a few vt220 features: ech, SRM, DECTCEM, as
# well as SCO and Atari, color palettes from Linux console). Reading the code,
-# it is intended to be VT102 plus selected features By default, it sets $TERM
+# it is intended to be VT102 plus selected features. By default, it sets $TERM
# to xterm, which is incorrect, since several features are misimplemented:
#
# Alt+key always sends ESC+key, so 'km' capability is removed.
@@ -2463,39 +2650,56 @@ crt|crt-vt220|CRT 2.3 emulating VT220,
#
# Several features such as backspace/delete are optional; this entry documents
# the default behavior -TD
-putty|xterm clone (win32),
- am, bw, ccc, km, mir, msgr, xenl,
- colors#8, cols#80, it#8, lines#24, pairs#64,
- acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E)0, home=\E[H,
- hpa=\E[%i%p1%dG, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L,
- ind=^J,
- initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p3%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%p4%{255}%&%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'A'%+%c%e%gx%d%;,
- 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~, 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~, kmous=\E[M, knp=\E[6~,
- kpp=\E[5~, kslt=\E[4~, oc=\E]R, op=\E[39;49m, rc=\E8,
- rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l,
- rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>,
- rmso=\E[27m, rmul=\E[24m,
- rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, 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, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h,
- smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
- tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
- vpa=\E[%i%p1%dd,
+
+putty|PuTTY terminal emulator,
+ am, bce, bw, ccc, hs, mir, msgr, xenl, xon,
+ colors#8, it#8, ncv#22, pairs#64,
+ 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,
+ 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%;,
+ dl=\E[%p1%dM, dl1=\E[M, dsl=\E]0;\007, ech=\E[%p1%dX,
+ ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+ flash=\E[?5h\E[?5l, fsl=^G, 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,
+ is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R,
+ kb2=\E[G, kbs=\177, kcan=^C, 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,
+ 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%;,
+ 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, tsl=\E]0;, vpa=\E[%i%p1%dd, use=vt102+enq,
+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,
+putty-256color|PuTTY 0.58 with xterm 256-colors,
+ use=xterm+256color, 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,
+ 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,
# 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
@@ -2536,25 +2740,25 @@ putty|xterm clone (win32),
# retrieving the window title, and for setting the window size (i.e., using
# "resize -s"), though it does not pass SIGWINCH to the application if the
# user resizes the window with the mouse.
-teraterm|Tera Term Pro,
- km, xon@,
- ncv#43, vt@,
- acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
- blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J,
- cnorm=\E[?25h, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
- flash=\E[?5h\E[?5l$<200/>, hpa=\E[%i%p1%dG,
- il=\E[%p1%dL, il1=\E[L, kdch1=\E[3~, kf1=\E[11~,
- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
- kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
- kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
- kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~,
- kpp=\E[5~, kslt=\E[4~, op=\E[100m, rev=\E[7m, ri=\EM,
- rmso=\E[27m, rmul=\E[24m, sgr0=\E[m, smso=\E[7m,
- smul=\E[4m, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
- vpa=\E[%i%p1%dd, use=klone+color, use=vt100,
+teraterm|Tera Term Pro,
+ km, xon@,
+ ncv#43, vt@,
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J,
+ cnorm=\E[?25h, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+ dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K,
+ flash=\E[?5h\E[?5l$<200/>, hpa=\E[%i%p1%dG,
+ il=\E[%p1%dL, il1=\E[L, kdch1=\E[3~, kf1=\E[11~,
+ kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+ kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+ kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
+ kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~,
+ kpp=\E[5~, kslt=\E[4~, op=\E[100m, rev=\E[7m, ri=\EM,
+ rmso=\E[27m, rmul=\E[24m, sgr0=\E[0m\017, smso=\E[7m,
+ smul=\E[4m, vpa=\E[%i%p1%dd, use=vt100+enq,
+ use=klone+color, use=vt100,
# Tested with WinNT 4.0, the telnet application assumes the screensize is
# 25x80. This entry uses the 'Terminal' font, to get line-drawing characters.
@@ -2565,12 +2769,11 @@ teraterm|Tera Term Pro,
# but that is not unusual for vt100 "emulators".
# b) Does not implement vt100 keypad
# 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,
- ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf0@, kf1@, kf10@, kf2@, kf3@, kf4@,
- kf5@, kf6@, kf7@, kf8@, kf9@, tbc@, u6=\E[%i%d;%dR, u7=\E[6n,
- u8=\E[?6c, u9=\E[c, use=vt100,
+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,
+ ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf0@, kf1@, kf10@, kf2@, kf3@, kf4@,
+ kf5@, kf6@, kf7@, kf8@, kf9@, tbc@, use=vt102+enq, use=vt100,
# Tested with Windows 2000, the telnet application runs in a console window,
# also using 'Terminal' font.
@@ -2579,10 +2782,52 @@ ms-vt100|MS telnet imitating dec vt100,
# a) This version has no function keys or numeric keypad. Unlike the older
# version, the numeric keypad is entirely ignored.
# b) The program sets $TERM to "ansi", which of course is inaccurate.
-ms-vt100-color|windows 2000 ansi (sic),
- bce,
- dch=\E[%p1%dP, ich=\E[%p1%d@, use=ecma+color,
- use=ms-vt100,
+ms-vt100-color|vtnt|windows 2000 ansi (sic),
+ bce,
+ dch=\E[%p1%dP, ich=\E[%p1%d@, use=ecma+color,
+ use=ms-vt100,
+
+# Based on comments from Federico Bianchi:
+#
+# vt100+ is basically a VT102-noSGR with ANSI.SYS colors and a different
+# scheme for PF keys.
+#
+# and PuTTY wishlist:
+#
+# The modifiers are represented as the codes listed above, prefixed to
+# the normal sequences. If the modifier is pressed alone, its sequence
+# is transmitted twice in succession. If multiple modifiers apply,
+# they're transmitted in the order shift, control, alt.
+#
+# Shift \E^S
+# Alt \E^A,
+# Ctrl \E^C,
+ms-vt100+|vt100+|windows XP vt100+ (sic),
+ kdch1=\E-, kend=\Ek, kf1=\E1, kf10=\E0, kf11=\E!, kf12=\E@,
+ kf13=\E\023\E1, kf14=\E\023\E2, kf15=\E\023\E3,
+ kf16=\E\023\E4, kf17=\E\023\E5, kf18=\E\023\E6,
+ kf19=\E\023\E7, kf2=\E2, kf20=\E\023\E8, kf21=\E\023\E9,
+ kf22=\E\023\E0, kf23=\E\023\E!, kf24=\E\023\E@,
+ kf25=\E\003\E1, kf26=\E\003\E2, kf27=\E\003\E3,
+ kf28=\E\003\E4, kf29=\E\003\E5, kf3=\E3, kf30=\E\003\E6,
+ kf31=\E\003\E7, kf32=\E\003\E8, kf33=\E\003\E9,
+ kf34=\E\003\E0, kf35=\E\003\E!, kf36=\E\003\E@,
+ kf37=\E\001\E1, kf38=\E\001\E2, kf39=\E\001\E3, kf4=\E4,
+ kf40=\E\001\E4, kf41=\E\001\E5, kf42=\E\001\E6,
+ kf43=\E\001\E7, kf44=\E\001\E8, kf45=\E\001\E9,
+ kf46=\E\001\E0, kf47=\E\001\E!, kf48=\E\001\E@, kf5=\E5,
+ kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, khome=\Eh, kich1=\E+,
+ knp=\E/, kpp=\E?, use=ms-vt100-color,
+
+ms-vt-utf8|vt-utf8|UTF-8 flavor of vt100+,
+ use=ms-vt100+,
+
+# a minimal subset of a vt100 (compare with "news-unk).
+tt|tkterm|Don Libes' tk text widget terminal emulator,
+ clear=\E[H\E[J, cr=^M, 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, rmso=\E[m,
+ smso=\E[7m,
#### X terminal emulators
#
@@ -2601,228 +2846,341 @@ ms-vt100-color|windows 2000 ansi (sic),
# (xterm: ":MT:" changed to ":km:"; added <smam>/<rmam> based on init string;
# removed (hs, eslok, tsl=\E[?E\E[?%i%dT, fsl=\E[?F, dsl=\E[?E)
# as these seem not to work -- esr)
-x10term|vs100-x10|xterm terminal emulator (X10 window system),
- 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,
- 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,
- 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,
- sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=,
- smso=\E[7m, smul=\E[4m,
-# Compatible with the R5 xterm
+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,
+ 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,
+ 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,
+ sgr0=\E[m, smam=\E[?7h, smir=\E[4h, smkx=\E[?1h\E=,
+ smso=\E[7m, smul=\E[4m,
+# Compatible with the R5 xterm
# (from the XFree86 3.2 distribution, <blink=@> removed)
# added khome/kend, rmir/smir, rmul/smul, hts based on the R5 xterm code - TD
# corrected typos in rs2 string - TD
# added u6-u9 -TD
-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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
- 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,
- rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H,
- sc=\E7,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
- sgr0=\E[m, 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,
+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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+ 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,
+ rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H,
+ sc=\E7,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
+ sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g, use=vt100+enq,
# 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
# (khome/kend do not actually work in X11R5 or X11R6, but many people use this
# for compatibility with other emulators).
-xterm-r6|xterm-old|xterm X11R6 version,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
- el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL,
- il1=\E[L, ind=^J,
- is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^H,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kdch1=\E[3~, kf1=\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~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
- kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7m, ri=\EM,
- rmacs=^O, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
- rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
- rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7,
- sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h,
- smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
- u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
+xterm-r6|xterm-old|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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+ 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,
+ 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~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+ kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7m, ri=\EM,
+ rmacs=^O, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
+ rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+ rs2=\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,
# 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),
- OTbs, am, bce, km, mir, msgr, xenl,
- cols#80, it#8, lines#24, ncv@,
- acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
- flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
- ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
- il1=\E[L, ind=^J,
- is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
- ka1=\EOw, ka3=\EOu, kb2=\EOy, kbeg=\EOE, kbs=^H, kc1=\EOq,
- kc3=\EOs, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kdch1=\177, kend=\EOF, kent=\EOM, kf1=\E[11~, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
- kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
- kf19=\E[33~, kf2=\E[12~, kf20=\E[34~, kf3=\E[13~,
- kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
- kf9=\E[20~, kfnd=\E[1~, 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, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
- vpa=\E[%i%p1%dd, use=ecma+color,
+xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System),
+ OTbs, am, bce, km, mir, msgr, xenl,
+ cols#80, it#8, lines#24, ncv@,
+ acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+ flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG,
+ ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL,
+ il1=\E[L, ind=^J,
+ is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>,
+ 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%;,
+ 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,
+ use=ecma+color, use=vt220+keypad,
# This is the stock xterm entry supplied with XFree86 3.3, which uses VT100
# codes for F1-F4 except while in VT220 mode.
-xterm-xf86-v33|xterm terminal emulator (XFree86 3.3 Window System),
- kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=xterm-xf86-v32,
+xterm-xf86-v33|xterm terminal emulator (XFree86 3.3 Window System),
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=xterm-xf86-v32,
# This version was released in XFree86 3.3.3 (November 1998).
# Besides providing printer support, it exploits a new feature that allows
# xterm to use terminfo-based descriptions with the titeInhibit resource.
# -- the distribution contained incorrect khome/kend values -TD
-xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System),
- mc5i,
- blink=\E[5m, ich1@, invis=\E[8m,
- is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, kslt@,
- mc0=\E[i, mc4=\E[4i, mc5=\E[5i, rmcup=\E[?1047l\E[?1048l,
- rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- smcup=\E[?1048h\E[?1047h, use=xterm-xf86-v33,
+xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System),
+ mc5i,
+ blink=\E[5m, ich1@, invis=\E[8m,
+ is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, kslt@,
+ mc0=\E[i, mc4=\E[4i, mc5=\E[5i, rmcup=\E[?1047l\E[?1048l,
+ rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ smcup=\E[?1048h\E[?1047h, use=xterm-xf86-v33,
# This version was released in XFree86 4.0.
-xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System),
- npc,
- kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, kIC=\E[2;5~,
- kLFT=\EO5D, kNXT=\E[6;5~, kPRV=\E[5;5~, kRIT=\EO5C, ka1@,
- ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF,
- kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
- kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~,
- kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
- kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q,
- kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf30=\E[17;5~,
- kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
- kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, kf37=\EO6P,
- kf38=\EO6Q, kf39=\EO6R, kf40=\EO6S, kf41=\E[15;6~,
- kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
- kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
- kf48=\E[24;6~, khome=\EOH, rmcup=\E[?1049l,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
- smcup=\E[?1049h, use=xterm-xf86-v333,
-
-xterm-xfree86|xterm-new|xterm terminal emulator (XFree86 4.0 Window System),
- npc,
- kDC=\E[3;2~, kEND=\EO2F, kHOM=\EO2H, kIC=\E[2;2~,
- kLFT=\EO2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\EO2C,
- kb2=\EOE, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\EO2P, kf14=\EO2Q,
- kf15=\EO2R, kf16=\EO2S, 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=\EO5P,
- kf26=\EO5Q, kf27=\EO5R, kf28=\EO5S, 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=\EO6P, kf38=\EO6Q, kf39=\EO6R,
- kf4=\EOS, 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~, kf5=\E[15~,
- kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\EOH,
- kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
- use=xterm-basic,
+xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System),
+ npc,
+ kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, kIC=\E[2;5~,
+ kLFT=\EO5D, kNXT=\E[6;5~, kPRV=\E[5;5~, kRIT=\EO5C, ka1@,
+ ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF,
+ kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
+ kf17=\E[15;2~, kf18=\E[17;2~, kf19=\E[18;2~,
+ kf20=\E[19;2~, kf21=\E[20;2~, kf22=\E[21;2~,
+ kf23=\E[23;2~, kf24=\E[24;2~, kf25=\EO5P, kf26=\EO5Q,
+ kf27=\EO5R, kf28=\EO5S, kf29=\E[15;5~, kf30=\E[17;5~,
+ kf31=\E[18;5~, kf32=\E[19;5~, kf33=\E[20;5~,
+ kf34=\E[21;5~, kf35=\E[23;5~, kf36=\E[24;5~, kf37=\EO6P,
+ kf38=\EO6Q, kf39=\EO6R, kf40=\EO6S, kf41=\E[15;6~,
+ kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
+ kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
+ kf48=\E[24;6~, khome=\EOH, rmcup=\E[?1049l,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+ smcup=\E[?1049h, use=xterm-xf86-v333,
+
+# 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%;,
+ 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,
+
+# This is the most common alias for xterm-new.
+xterm-xfree86|xterm terminal emulator (XFree86),
+ use=xterm-new,
+# use=xterm-old,
+
+# This version reflects the current xterm features.
+xterm-new|modern xterm terminal emulator,
+ npc,
+ indn=\E[%p1%dS, 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, kb2=\EOE, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB,
+ kcuf1=\EOC, kcuu1=\EOA, kend=\EOF, kent=\EOM, khome=\EOH,
+ kich1=\E[2~, kind=\E[1;2B, kmous=\E[M, knp=\E[6~,
+ kpp=\E[5~, kri=\E[1;2A, rin=\E[%p1%dT, use=xterm+pcfkeys,
+ use=xterm-basic,
+#
+# This fragment describes as much of XFree86 xterm's "pc-style" function
+# keys as will fit into terminfo's 60 function keys.
+# From ctlseqs.ms:
+# Code Modifiers
+# ---------------------------------
+# 2 Shift
+# 3 Alt
+# 4 Shift + Alt
+# 5 Control
+# 6 Shift + Control
+# 7 Alt + Control
+# 8 Shift + Alt + Control
+# ---------------------------------
+# The meta key may also be used as a modifier in this scheme, adding another
+# bit to the parameter.
+xterm+pcfkeys|fragment for PC-style fkeys,
+ use=xterm+pcf2, use=xterm+pcc2,
+#
+# 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.
+#
+# The original assignments from patch #94 for cursor-keys had some technical
+# issues:
+#
+# A parameter for a function-key to represent a modifier is just more
+# bits. But for a cursor-key it may change the behavior of the
+# application. For instance, emacs decodes the first parameter of a
+# cursor-key as a repeat count.
+#
+# A parameterized string should (really) not begin with SS3 (\EO).
+# Rather, CSI (\E[) should be used.
+#
+# For these reasons, the original assignments were deprecated. For
+# 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.
+xterm+pcc3|fragment with modifyCursorKeys:3,
+ kDN=\E[>1;2B, kDN5=\E[>1;5B, kDN6=\E[>1;6B,
+ kLFT5=\E[>1;5D, kLFT6=\E[>1;6D, kRIT5=\E[>1;5C,
+ kRIT6=\E[>1;6C, kUP=\E[>1;2A, kUP5=\E[>1;5A,
+ kUP6=\E[>1;6A,
+
+xterm+pcc2|fragment with modifyCursorKeys:2,
+ kDN=\E[1;2B, kDN5=\E[1;5B, kDN6=\E[1;6B, kLFT5=\E[1;5D,
+ kLFT6=\E[1;6D, kRIT5=\E[1;5C, kRIT6=\E[1;6C, kUP=\E[1;2A,
+ kUP5=\E[1;5A, kUP6=\E[1;6A,
+
+xterm+pcc1|fragment with modifyCursorKeys:1,
+ kDN=\E[2B, kDN5=\E[5B, kDN6=\E[6B, kLFT5=\E[5D,
+ kLFT6=\E[6D, kRIT5=\E[5C, kRIT6=\E[6C, kUP=\E[2A,
+ kUP5=\E[5A, kUP6=\E[6A,
+
+xterm+pcc0|fragment with modifyCursorKeys:0,
+ kDN=\EO2B, kDN5=\EO5B, kDN6=\EO6B, kLFT5=\EO5D,
+ kLFT6=\EO6D, kRIT5=\EO5C, kRIT6=\EO6C, kUP=\EO2A,
+ kUP5=\EO5A, kUP6=\EO6A,
+#
+# Here are corresponding fragments from xterm patch #216:
+#
+xterm+pcf0|fragment with modifyFunctionKeys:0,
+ kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+ kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S,
+ 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=\EO5P, kf26=\EO5Q,
+ kf27=\EO5R, kf28=\EO5S, 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=\EO6P, kf38=\EO6Q, kf39=\EO6R,
+ kf4=\EOS, 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~, kf49=\EO3P,
+ kf5=\E[15~, kf50=\EO3Q, kf51=\EO3R, kf52=\EO3S,
+ 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=\EO4P,
+ kf62=\EO4Q, kf63=\EO4R, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+#
+xterm+pcf2|fragment with modifyFunctionKeys:0,
+ kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+ kf13=\E[2P, kf14=\E[2Q, kf15=\E[2R, kf16=\E[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[5P, kf26=\E[5Q,
+ kf27=\E[5R, kf28=\E[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[6P, kf38=\E[6Q, kf39=\E[6R,
+ kf4=\EOS, kf40=\E[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[3P,
+ kf5=\E[15~, kf50=\E[3Q, kf51=\E[3R, kf52=\E[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[4P,
+ kf62=\E[4Q, kf63=\E[4R, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
#
# This chunk is used for building the VT220/Sun/PC keyboard variants.
-xterm-basic|xterm terminal emulator - common (XFree86),
- am, bce, km, mc5i, mir, msgr, xenl,
- 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[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- 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@, il=\E[%p1%dL, il1=\E[L,
- ind=^J, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, kbs=^H,
- kdch1=\E[3~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, meml=\El,
- memu=\Em, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
- rmam=\E[?7l, rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>,
- 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=\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, 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,
+xterm-basic|modern xterm terminal emulator - common,
+ OTbs, am, bce, km, mc5i, mir, msgr, xenl, AX,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ cvvis=\E[?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>, kbs=^H,
+ kdch1=\E[3~, kmous=\E[M, mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
+ 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>, 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, use=vt100+enq,
# From: David J. MacKenzie <djm@va.pubnix.com>, 14 Nov 1997
-xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1,
- rmso=\E[m, rmul=\E[m, use=xterm-xf86-v33,
+# 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,
# This is one of the variants of XFree86 3.3 xterm, updated for 4.0 (T.Dickey)
-xterm-16color|xterm with 16 colors like aixterm,
- colors#16, ncv#32, pairs#256,
- setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm,
- setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm,
- setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
- setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
- use=xterm-xfree86,
+xterm-16color|xterm with 16 colors like aixterm,
+ use=ibm+16color, use=xterm-new,
+
+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,
+ setb@, setf@,
+
+xterm+88color|xterm 88-color feature,
+ colors#88, pairs#7744, use=xterm+256color,
# These variants of XFree86 3.9.16 xterm are built as a configure option.
-xterm-256color|xterm with 256 colors,
- ccc,
- colors#256, ncv#32, pairs#256,
- initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
- setab=\E[48;5;%p1%dm, setaf=\E[38;5;%p1%dm,
- setb=\E[48;5;%p1%dm, setf=\E[38;5;%p1%dm,
- use=xterm-xfree86,
-xterm-88color|xterm with 88 colors,
- colors#88, pairs#88, use=xterm-256color,
+xterm-256color|xterm with 256 colors,
+ 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-1002|testing xterm-mouse,
+ XM=\E[?1002%?%p1%{1}%=%th%el%;, use=xterm-new,
+xterm-1003|testing xterm-mouse,
+ XM=\E[?1003%?%p1%{1}%=%th%el%;, use=xterm-new,
# This is another variant, for XFree86 4.0 xterm (T.Dickey)
# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
@@ -2833,64 +3191,68 @@ xterm-88color|xterm with 88 colors,
# SS3 \E O \217
# CSI \E [ \233
#
-xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
- OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl,
- colors#8, cols#80, it#8, lines#24, pairs#64,
- acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z,
- civis=\233?25l, clear=\233H\2332J, cnorm=\233?25h, cr=^M,
- csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H,
- cud=\233%p1%dB, cud1=^J, cuf=\233%p1%dC, cuf1=\233C,
- cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A,
- dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
- ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K,
- enacs=\E(B\E)0, flash=\233?5h$<100/>\233?5l,
- home=\233H, hpa=\233%i%p1%dG, ht=^I, hts=\210,
- ich=\233%p1%d@, il=\233%p1%dL, il1=\233L, ind=^J,
- invis=\2338m,
- is2=\E7\E G\233r\233m\233?7h\233?1;3;4;6l\2334l\E8\E>,
- ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kbs=^H,
- kc1=\217q, kc3=\217s, kcbt=\233Z, kcub1=\217D, kcud1=\217B,
- kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~,
- kent=\217M, kf1=\23311~, kf10=\23321~, kf11=\23323~,
- kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
- kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
- kf2=\23312~, kf20=\23334~, kf3=\23313~, kf4=\23314~,
- kf5=\23315~, kf6=\23317~, kf7=\23318~, kf8=\23319~,
- kf9=\23320~, khome=\2331~, kich1=\2332~, kmous=\233M,
- knp=\2336~, kpp=\2335~, mc0=\233i, mc4=\2334i, mc5=\2335i,
- meml=\El, memu=\Em, op=\23339;49m, rc=\E8, rev=\2337m,
- ri=\215, rmacs=^O, rmam=\233?7l, rmcup=\233?1049l,
- rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m,
- rs1=\Ec,
- rs2=\E[62"p\E G\E7\233r\E8\233m\233?7h\233?1;3;4;6l\2334l\E>,
- sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm,
- setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\233m^O, smacs=^N, smam=\233?7h, smcup=\233?1049h,
- smir=\2334h, smkx=\233?1h\E=, smso=\2337m, smul=\2334m,
- tbc=\2333g, u6=\233[%i%d;%dR, u7=\E[6n, u8=\233[?1;2c,
- u9=\E[c, vpa=\233%i%p1%dd,
-
-xterm-hp|XFree86 xterm with hpterm function keys,
- kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
- kdch1=\EP, kend=\EF, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es,
- kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, kich1=\EQ,
- knp=\ES, kpp=\ET, use=xterm-basic,
-
-xterm-sco|XFree86 xterm with SCO function keys,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kend=\E[F,
- kf1=\E[M, kf10=\E[V, kf11=\E[W, kf12=\E[X, kf13=\E[Y,
- kf15=\E[a, kf16=\E[b, kf17=\E[c, kf18=\E[d, kf19=\E[e,
- kf2=\E[N, kf20=\E[f, kf21=\E[g, kf22=\E[h, kf23=\E[i,
- kf24=\E[j, kf25=\E[k, kf26=\E[l, kf27=\E[m, kf28=\E[n,
- kf29=\E[o, kf3=\E[O, kf30=\E[p, kf31=\E[q, kf32=\E[r,
- kf33=\E[s, kf34=\E[t, kf35=\E[u, 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, use=xterm-basic,
-
-# The xterm-xfree86 description has all of the features, but is not completely
+xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
+ OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl, AX,
+ colors#8, cols#80, it#8, lines#24, pairs#64,
+ 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,
+ 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,
+ ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kbs=^H,
+ kc1=\217q, kc3=\217s, kcbt=\233Z, kcub1=\217D, kcud1=\217B,
+ kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~,
+ kent=\217M, kf1=\23311~, kf10=\23321~, kf11=\23323~,
+ kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
+ kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
+ kf2=\23312~, kf20=\23334~, kf3=\23313~, kf4=\23314~,
+ kf5=\23315~, kf6=\23317~, kf7=\23318~, kf8=\23319~,
+ kf9=\23320~, khome=\2331~, kich1=\2332~, kmous=\233M,
+ knp=\2336~, kpp=\2335~, mc0=\233i, mc4=\2334i, mc5=\2335i,
+ meml=\El, memu=\Em, op=\23339;49m, rc=\E8, rev=\2337m,
+ ri=\215, rmacs=\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,
+ 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%;,
+ 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,
+
+xterm-hp|xterm with hpterm function keys,
+ kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+ kdch1=\EP, kend=\EF, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es,
+ kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, kich1=\EQ,
+ knp=\ES, kpp=\ET, use=xterm-basic,
+
+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,
+ 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, kmous=\E[>M, knp=\E[G, kpp=\E[I,
+ use=xterm-basic,
+
+# The xterm-new description has all of the features, but is not completely
# compatible with vt220. If you are using a Sun or PC keyboard, set the
# sunKeyboard resource to true:
# + maps the editing keypad
@@ -2898,76 +3260,77 @@ xterm-sco|XFree86 xterm with SCO function keys,
# 12-fkey keyboard can support vt220's 20-fkeys.
# + maps numeric keypad "+" to ",".
# + uses DEC-style control sequences for the application keypad.
-#
-xterm-vt220|XFree86 xterm emulating vt220,
- ka1=\EOw, ka3=\EOy, kbeg=\EOu, kc1=\EOq, kc3=\EOs, kcbt=\E[Z,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[4~,
- kent=\EOM, kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
- kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
- kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
- kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf5=\E[15~, kf6=\E[17~,
- kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[1~,
- kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
- use=xterm-basic,
-
-xterm-vt52|XFree86 xterm emulating dec vt52,
- cols#80, it#8, lines#24,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC,
- cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
- home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF,
-
-xterm-noapp|xterm with cursor keys in normal mode,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rmcup@,
- rmkx=\E>, smcup@, smkx=\E=, use=xterm,
-
-xterm-24|vs100|xterms|xterm terminal emulator (X Window System),
- lines#24, use=xterm-r6,
+#
+xterm-vt220|xterm emulating vt220,
+ kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kend=\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~, kf20=\E[34~,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+ use=xterm-basic, use=vt220+keypad,
+
+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,
+ cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
+ home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF,
+
+xterm-noapp|xterm with cursor keys in normal mode,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rmcup@,
+ rmkx=\E>, smcup@, smkx=\E=, use=xterm,
+
+xterm-24|vs100|xterms|xterm terminal emulator (X Window System),
+ lines#24, use=xterm,
# This is xterm for ncurses.
-xterm|xterm terminal emulator (X Window System),
- use=xterm-r6,
-# use=xterm-xfree86,
+xterm|xterm terminal emulator (X Window System),
+ use=xterm-new,
-# These entries allow access to the X titlebar and icon name as a status line.
-# Note that twm (and possibly window managers descended from it such as tvtwm,
+# These entries allow access to the X titlebar and icon name as a status line.
+# Note that twm (and possibly window managers descended from it such as tvtwm,
# ctwm, and vtwm) track windows by icon-name; thus, you don't want to mess
# with it.
-xterm+sl|access X title line and icon name,
- hs,
- wsl#40,
- dsl=\E]0;\007, fsl=^G, tsl=\E]0;, use=xterm,
-xterm+sl-twm|access X title line (pacify twm-descended window managers),
- hs,
- wsl#40,
- dsl=\E]2;\007, fsl=^G, tsl=\E]2;, use=xterm,
+xterm+sl|access X title line and icon name,
+ hs,
+ wsl#40,
+ dsl=\E]0;\007, fsl=^G, tsl=\E]0;, use=xterm,
+xterm+sl-twm|access X title line (pacify twm-descended window managers),
+ hs,
+ wsl#40,
+ dsl=\E]2;\007, fsl=^G, tsl=\E]2;, use=xterm,
#
# The following xterm variants don't depend on your base version
#
# xterm with bold instead of underline
-xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold,
- smso=\E[7m, smul=\E[1m, use=xterm,
+xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold,
+ smso=\E[7m, smul=\E[1m, use=xterm,
# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr)
# (kterm should not invoke DEC Graphics as the alternate character set
# -- Kenji Rikitake)
# (proper setting of enacs, smacs, rmacs makes kterm to use DEC Graphics
# -- MATSUMOTO Shoji)
-kterm|kterm kanji terminal emulator (X window system),
- eslok, hs,
- acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs=, fsl=\E[?F,
- kmous=\E[M, rc=\E8, rmacs=\E(B, sc=\E7, smacs=\E(0,
- tsl=\E[?E\E[?%i%dT, use=xterm-r6, use=ecma+color,
-kterm-color|kterm-co|kterm with ANSI colors,
- ncv@, use=kterm, use=ecma+color,
+# kterm implements acsc via built-in table of X Drawable's
+kterm|kterm kanji terminal emulator (X window system),
+ eslok, hs,
+ ncv@,
+ 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%;,
+ 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,
# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
-xterm-nic|xterm with ich/ich1 suppressed for non-curses programs,
- ich@, ich1@, use=xterm,
-# From: Mark Sheppard <kimble@mistral.co.uk>, 4 May 1996
-xterm1|xterm terminal emulator ignoring the alternate screen buffer,
- rmcup@, smcup@, use=xterm,
+xterm-nic|xterm with ich/ich1 suppressed for non-curses programs,
+ ich@, ich1@, use=xterm,
+# From: Mark Sheppard <kimble@mistral.co.uk>, 4 May 1996
+xterm1|xterm terminal emulator ignoring the alternate screen buffer,
+ rmcup@, smcup@, use=xterm,
# This describes the capabilities of color_xterm, an xterm variant from
# before ECMA-64 color support was folded into the main-line xterm release.
@@ -2975,32 +3338,31 @@ xterm1|xterm terminal emulator ignoring the alternate screen buffer,
# From: Jacob Mandelson <jlm@ugcs.caltech.edu>, 09 Nov 1996
# The README's with the distribution also say that it supports SGR 21, 24, 25
# and 27, but they are not present in the terminfo or termcap.
-color_xterm|cx|cx100|color_xterm color terminal emulator for X,
- OTbs, am, km, mir, msgr, xenl,
- cols#80, it#8, lines#65, ncv@,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
- el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I,
- ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
- is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, ka1=\EOw, ka3=\EOy,
- kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\EOD, kcud1=\EOB,
- kcuf1=\EOC, kcuu1=\EOA, kend=\E[8~, kent=\EOM, kf1=\E[11~,
- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\E[12~,
- kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, khome=\E[7~, kich1=\E[2~,
- kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM,
- rmacs=^O, rmam=\E[?7l, rmcup=\E>\E[?41;1r, rmir=\E[4l,
- rmso=\E[27m, rmul=\E[24m,
- rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<,
- sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m, smacs=^N, smam=\E[?7h,
- smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m,
- smul=\E[4m, use=ecma+color,
+color_xterm|cx|cx100|color_xterm color terminal emulator for X,
+ OTbs, am, km, mir, msgr, xenl,
+ cols#80, it#8, lines#65, ncv@,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+ el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I,
+ ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ 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~,
+ kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, khome=\E[7~, kich1=\E[2~,
+ kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM,
+ rmacs=^O, rmam=\E[?7l, rmcup=\E>\E[?41;1r, rmir=\E[4l,
+ rmso=\E[27m, rmul=\E[24m,
+ rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<,
+ sc=\E7,
+ 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,
# The 'nxterm' distributed with Redhat Linux 5.2 is a slight rehack of
# xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support
@@ -3010,15 +3372,17 @@ color_xterm|cx|cx100|color_xterm color terminal emulator for X,
#
# Redhat Linux 6.x distributes XFree86 xterm as "nxterm", which uses bce
# colors; note that this is not compatible with the 5.2 version.
-nxterm|xterm-color|generic color xterm,
- ncv@,
- op=\E[m, use=xterm-r6, use=klone+color,
+# csw (2002-05-15): make xterm-color primary instead of nxterm, to
+# match XFree86's xterm.terminfo usage and prevent circular links
+xterm-color|nxterm|generic color xterm,
+ ncv@,
+ op=\E[m, use=xterm-r6, use=klone+color,
# this describes the alpha-version of Gnome terminal shipped with Redhat 6.0
-gnome-rh62|Gnome terminal,
- bce,
- kdch1=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
- use=xterm-color,
+gnome-rh62|Gnome terminal,
+ bce,
+ kdch1=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ use=xterm-color,
# GNOME Terminal 1.4.0.4 (Redhat 7.2)
#
@@ -3038,21 +3402,75 @@ gnome-rh62|Gnome terminal,
# vt100 TBC (tab reset) is not implemented.
# xterm alternate screen controls do not restore cursor position properly
# it hangs in tack after running function-keys test.
-gnome-rh72|GNOME Terminal,
- bce,
- 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%;,
- smam=\E[?7h, tbc@, use=xterm-color,
-
-gnome|GNOME Terminal,
- use=gnome-rh72,
+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%;,
+ sgr0=\E[0m\017, smam=\E[?7h, tbc@, use=xterm-color,
+
+# GNOME Terminal 2.0.1 (Redhat 8.0)
+#
+# Documentation now claims it implements vt220 (which is demonstrably false).
+# However, it does implement ECH, which is a vt220 feature. And there are
+# workable vt100 LNM, DECALN, DECSNM modes, making it possible to display
+# more of its bugs using vttest.
+#
+# However, note that bce and msgr are broken in this release. Tabs (tbc and
+# hts) are broken as well. Sometimes flash (as in xterm-new) works.
+#
+# kf1 and kf10 are not tested since they're assigned (hardcoded?) to menu
+# operations. Shift-tab generates a distinct sequence so it can be argued
+# that it implements kcbt.
+gnome-rh80|GNOME Terminal,
+ bce@, msgr@,
+ ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kbs=\177,
+ kcbt=\E^I, op=\E[39;49m, use=gnome-rh72,
+
+# GNOME Terminal 2.2.1 (Redhat 9.0)
+#
+# bce and msgr are repaired.
+gnome-rh90|GNOME Terminal,
+ bce, msgr,
+ hpa=\E[%i%p1%dG, kDC=\E[3;2~, kLFT=\EO2D, kRIT=\EO2C,
+ kb2=\E[E, kcbt=\E[Z, kend=\EOF, khome=\EOH, tbc=\E[3g,
+ vpa=\E[%i%p1%dd, use=xterm+pcf0, use=xterm+pcfkeys,
+ use=gnome-rh80,
+
+# GNOME Terminal 2.14.2 (Fedora Core 5)
+# 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,
+ use=ansi+enq, use=xterm+pcc0, use=gnome-rh90,
+
+gnome|GNOME Terminal,
+ use=gnome-fc5,
+
+gnome-256color|GNOME Terminal with xterm 256-colors,
+ use=xterm+256color, use=gnome,
+
+# XFCE Terminal 0.2.5.4beta2
+#
+# This is based on some of the same source code, e.g., the VTE library, as
+# gnome-terminal, but has fewer features, fails more screens in vttest.
+# Since most of the terminfo-related behavior is due to the VTE library,
+# the terminfo is the same as gnome-terminal.
+xfce|Xfce Terminal,
+ use=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,
# 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,
+kvt|KDE terminal,
+ bce, km@,
+ kdch1=\177, kend=\E[F, khome=\E[H, use=xterm-color,
# Konsole 1.0.1
# (formerly known as kvt)
@@ -3076,52 +3494,101 @@ kvt|KDE terminal,
# vt220, which is doubly incorrect because it does not implement vt220
# control sequences except for a few special cases). Treat it as a
# mildly-broken vt102.
-konsole-base|KDE console window,
- bce, km@, npc,
- bel@, blink=\E[5m, civis=\E[?25l, cnorm=\E[?25h,
- ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l,
- hpa=\E[%i%p1%dG, kbs@, kdch1@, kend@, kf1@, kf10@, kf11@, kf12@,
- kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2@, kf20@, kf3@,
- kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, kfnd@, khome@, kslt@,
- rmam=\E[?7l, rmso=\E[27m, rmul=\E[24m,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
- smam=\E[?7h, vpa=\E[%i%p1%dd, use=ecma+color,
- use=xterm-r6,
-konsole-linux|KDE console window with linux keyboard,
- kdch1=\E[3~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~,
- kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@,
- kf2=\E[[B, kf20@, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E,
- kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
- use=konsole-base,
+#
+# Update for konsole 1.3.2:
+# The 1049 private mode works (but see the other xterm screens in vttest).
+# Primary Device Attributes now returns the code for a vt100 with advanced
+# video option. Perhaps that's intended to be a "mildly-broken vt102".
+#
+# Updated for konsole 1.6.4:
+# add konsole-solaris
+konsole-base|KDE console window,
+ bce, km@, npc,
+ bel@, blink=\E[5m, civis=\E[?25l, cnorm=\E[?25h,
+ ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l,
+ hpa=\E[%i%p1%dG, indn=\E[%p1%dS, kbs=\177, kdch1@,
+ 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,
+ 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%;,
+ sgr0=\E[0m\017, smam=\E[?7h, vpa=\E[%i%p1%dd,
+ use=ecma+color, use=xterm-r6,
+konsole-linux|KDE console window with linux keyboard,
+ kdch1=\E[3~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~,
+ kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@,
+ kf2=\E[[B, kf20@, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E,
+ kf6=\E[17~, kf7=\E[18~, 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.
-konsole-xf3x|KDE console window with keyboard for XFree86 3.x xterm,
- kend=\E[4~, khome=\E[1~, use=konsole-vt100,
+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.
-konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,
- kbs=^H, kend=\EOF, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
- khome=\EOH, use=konsole-vt100,
+konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm,
+ kend=\EOF, kf1=\EOP, kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R,
+ kf16=\EO2S, 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~, kf3=\EOR, kf4=\EOS,
+ khome=\EOH, use=konsole-vt100,
# KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but
# it is still useful for deriving the other entries.
-konsole-vt100|KDE console window with vt100 (sic) keyboard,
- kbs=\177, 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,
-konsole-vt420pc|KDE console window with vt420 pc keyboard,
- kbs=^H, kdch1=\177, use=konsole-vt100,
-konsole-16color|klone of xterm-16color,
- colors#16, ncv#32, pairs#256,
- setab=\E[%?%p1%{8}%<%t%p1%'('%+%e%p1%{92}%+%;%dm,
- setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%'R'%+%;%dm,
- setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m',
- setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m',
- use=konsole,
+konsole-vt100|KDE console window with vt100 (sic) keyboard,
+ kbs=\177, 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,
+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,
# make a default entry for konsole
-konsole|KDE console window,
- use=konsole-linux,
+konsole|KDE console window,
+ use=konsole-xf4x,
+
+# Based on mlterm 2.9.2's mlterm.ti, with corrections/additions from reading
+# the source code and running tack -TD
+#
+# This is nominally a vt102 emulator, with features borrowed from rxvt and
+# xterm.
+#
+# There are some problems with vttest:
+# test of character sets leaves it in line-drawing mode.
+mlterm|multi lingual terminal emulator,
+ am, eslok, km, mc5i, mir, msgr, npc, xenl,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, 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, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=\E[3~, kend=\EOF, kent=\EOM, 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~, kfnd=\E[1~, khome=\EOH, kich1=\E[2~,
+ kmous=\E[M, knp=\E[6~, kpp=\E[5~, 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[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>,
+ rmso=\E[27m, rmul=\E[24m,
+ 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=\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,
# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
# Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
@@ -3140,272 +3607,522 @@ konsole|KDE console window,
#
# rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM.
# Since rxvt is not really compatible with xterm, it should be configured as
-# "rxvt" (monochrome) and "rxvt-color".
-rxvt-basic|rxvt terminal base (X Window System),
- OTbs, am, bce, eo, km, mir, msgr, xenl, xon,
- cols#80, it#8, lines#24,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
- el=\E[K, el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h\E[?5l,
- home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, is1=\E[?47l\E=\E[?1l,
- is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
- kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kLFT=\E[d, kNXT=\E[6$,
- kPRV=\E[5$, kRIT=\E[c, ka1=\EOw, ka3=\EOy, kb2=\EOu, kbs=^H,
- kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kel=\E[8\^,
- kend=\E[8~, kent=\EOM, 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=\E[7~, kich1=\E[2~,
- kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, rc=\E8,
- rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8,
- rmir=\E[4l, rmkx=\E>, rmso=\E[27m, rmul=\E[24m,
- rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
- rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>,
- s0ds=\E(B, s1ds=\E(0, sc=\E7, sgr0=\E[0m\017, smacs=^N,
- smcup=\E7\E[?47h, smir=\E[4h, smkx=\E=, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g,
-rxvt|rxvt terminal emulator (X Window System),
- ncv@,
- sgr0=\E[m\017, use=rxvt-basic, use=ecma+color,
+# "rxvt" (monochrome) and "rxvt-color".
+#
+# removed dch/dch1 because they are inconsistent with bce/ech -TD
+# remove km as per tack test -TD
+rxvt-basic|rxvt terminal base (X Window System),
+ OTbs, am, bce, eo, mir, msgr, xenl, xon,
+ 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,
+ 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,
+ enacs=\E(B\E)0, flash=\E[?5h\E[?5l, home=\E[H, ht=^I,
+ hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
+ ind=^J, is1=\E[?47l\E=\E[?1l,
+ is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, 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,
+ 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%;,
+ 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,
+# Key Codes from rxvt reference:
+#
+# Note: Shift + F1-F10 generates F11-F20
+#
+# For the keypad, use Shift to temporarily override Application-Keypad
+# setting use Num_Lock to toggle Application-Keypad setting if Num_Lock
+# is off, escape sequences toggle Application-Keypad setting.
+# Also note that values of Home, End, Delete may have been compiled
+# differently on your system.
+#
+# Normal Shift Control Ctrl+Shift
+# Tab ^I ESC [ Z ^I ESC [ Z
+# BackSpace ^H ^? ^? ^?
+# Find ESC [ 1 ~ ESC [ 1 $ ESC [ 1 ^ ESC [ 1 @
+# Insert ESC [ 2 ~ paste ESC [ 2 ^ ESC [ 2 @
+# Execute ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @
+# Select ESC [ 4 ~ ESC [ 4 $ ESC [ 4 ^ ESC [ 4 @
+# Prior ESC [ 5 ~ scroll-up ESC [ 5 ^ ESC [ 5 @
+# Next ESC [ 6 ~ scroll-down ESC [ 6 ^ ESC [ 6 @
+# Home ESC [ 7 ~ ESC [ 7 $ ESC [ 7 ^ ESC [ 7 @
+# End ESC [ 8 ~ ESC [ 8 $ ESC [ 8 ^ ESC [ 8 @
+# Delete ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @
+# F1 ESC [ 11 ~ ESC [ 23 ~ ESC [ 11 ^ ESC [ 23 ^
+# F2 ESC [ 12 ~ ESC [ 24 ~ ESC [ 12 ^ ESC [ 24 ^
+# F3 ESC [ 13 ~ ESC [ 25 ~ ESC [ 13 ^ ESC [ 25 ^
+# F4 ESC [ 14 ~ ESC [ 26 ~ ESC [ 14 ^ ESC [ 26 ^
+# F5 ESC [ 15 ~ ESC [ 28 ~ ESC [ 15 ^ ESC [ 28 ^
+# F6 ESC [ 17 ~ ESC [ 29 ~ ESC [ 17 ^ ESC [ 29 ^
+# F7 ESC [ 18 ~ ESC [ 31 ~ ESC [ 18 ^ ESC [ 31 ^
+# F8 ESC [ 19 ~ ESC [ 32 ~ ESC [ 19 ^ ESC [ 32 ^
+# F9 ESC [ 20 ~ ESC [ 33 ~ ESC [ 20 ^ ESC [ 33 ^
+# F10 ESC [ 21 ~ ESC [ 34 ~ ESC [ 21 ^ ESC [ 34 ^
+# F11 ESC [ 23 ~ ESC [ 23 $ ESC [ 23 ^ ESC [ 23 @
+# F12 ESC [ 24 ~ ESC [ 24 $ ESC [ 24 ^ ESC [ 24 @
+# F13 ESC [ 25 ~ ESC [ 25 $ ESC [ 25 ^ ESC [ 25 @
+# F14 ESC [ 26 ~ ESC [ 26 $ ESC [ 26 ^ ESC [ 26 @
+# F15 (Help) ESC [ 28 ~ ESC [ 28 $ ESC [ 28 ^ ESC [ 28 @
+# F16 (Menu) ESC [ 29 ~ ESC [ 29 $ ESC [ 29 ^ ESC [ 29 @
+# F17 ESC [ 31 ~ ESC [ 31 $ ESC [ 31 ^ ESC [ 31 @
+# F18 ESC [ 32 ~ ESC [ 32 $ ESC [ 32 ^ ESC [ 32 @
+# F19 ESC [ 33 ~ ESC [ 33 $ ESC [ 33 ^ ESC [ 33 @
+# F20 ESC [ 34 ~ ESC [ 34 $ ESC [ 34 ^ ESC [ 34 @
+# Application
+# Up ESC [ A ESC [ a ESC O a ESC O A
+# Down ESC [ B ESC [ b ESC O b ESC O B
+# Right ESC [ C ESC [ c ESC O c ESC O C
+# Left ESC [ D ESC [ d ESC O d ESC O D
+# KP_Enter ^M ESC O M
+# KP_F1 ESC O P ESC O P
+# KP_F2 ESC O Q ESC O Q
+# KP_F3 ESC O R ESC O R
+# KP_F4 ESC O S ESC O S
+# XK_KP_Multiply * ESC O j
+# XK_KP_Add + ESC O k
+# XK_KP_Separator , ESC O l
+# XK_KP_Subtract - ESC O m
+# XK_KP_Decimal . ESC O n
+# XK_KP_Divide / ESC O o
+# XK_KP_0 0 ESC O p
+# XK_KP_1 1 ESC O q
+# XK_KP_2 2 ESC O r
+# XK_KP_3 3 ESC O s
+# XK_KP_4 4 ESC O t
+# XK_KP_5 5 ESC O u
+# XK_KP_6 6 ESC O v
+# XK_KP_7 7 ESC O w
+# XK_KP_8 8 ESC O x
+# XK_KP_9 9 ESC O y
+#
+# kDN, kDN5, kDN6, etc are extensions based on the names from xterm+pcfkeys -TD
+# Removed kDN6, etc (control+shift) since rxvt does not implement this -TD
+rxvt+pcfkeys|fragment for PC-style fkeys,
+ kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E2$, kLFT=\E[d,
+ kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kel=\E[8\^,
+ kend=\E[8~, 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$,
+ kf23=\E[11\^, kf24=\E[12\^, kf25=\E[13\^, kf26=\E[14\^,
+ kf27=\E[15\^, kf28=\E[17\^, kf29=\E[18\^, kf3=\E[13~,
+ kf30=\E[19\^, kf31=\E[20\^, kf32=\E[21\^, kf33=\E[23\^,
+ kf34=\E[24\^, kf35=\E[25\^, kf36=\E[26\^, kf37=\E[28\^,
+ kf38=\E[29\^, kf39=\E[31\^, kf4=\E[14~, kf40=\E[32\^,
+ kf41=\E[33\^, kf42=\E[34\^, kf43=\E[23@, kf44=\E[24@,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ kfnd=\E[1~, khome=\E[7~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ kslt=\E[4~, kDN=\E[b, kDN5=\EOb, kLFT5=\EOd, kRIT5=\EOc,
+ kUP=\E[a, kUP5=\EOa,
+
+rxvt|rxvt terminal emulator (X Window System),
+ ncv@,
+ hpa=\E[%i%p1%dG, kf0=\E[21~, sgr0=\E[m\017,
+ vpa=\E[%i%p1%dd, use=rxvt-basic, use=ecma+color,
+rxvt-color|rxvt terminal emulator (X Window System),
+ use=rxvt,
+rxvt-256color|rxvt 2.7.9 with xterm 256-colors,
+ use=xterm+256color, use=rxvt,
+rxvt-xpm|rxvt terminal emulator (X Window System),
+ use=rxvt,
+rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin,
+ acsc=0\333+\257\,\256-\^`\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=0\333+\257\,\256-\^`\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,
+ ncv#32, use=ibm+16color, use=rxvt,
# From: Michael Jennings <mej@valinux.com>
+#
+# Eterm 0.9.3
+#
# removed kf0 which conflicts with kf10 -TD
# remove cvvis which conflicts with cnorm -TD
-Eterm|Eterm-color|Eterm with xterm-style color support (X Window System),
- am, bce, bw, eo, km, mc5i, mir, msgr, xenl, xon,
- btns#5, cols#80, it#8, lines#24, lm#0, ncv@,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
- flash=\E[?5h\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, ht=^I,
- hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
- ind=^J, is1=\E[?47l\E>\E[?1l,
- is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l,
- kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kLFT=\E[d, kNXT=\E[6$,
- kPRV=\E[5$, kRIT=\E[c, ka1=\E[7~, ka3=\E[5~, kb2=\EOu,
- kbeg=\EOu, kbs=^H, kc1=\E[8~, kc3=\E[6~, kcbt=\E[Z,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kel=\E[8\^, kend=\E[8~, kent=\EOM, kf1=\E[11~,
- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
- kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
- kf18=\E[32~, kf19=\E[33~, kf2=\E[12~, kf20=\E[34~,
- kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
- khome=\E[7~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
- kslt=\E[4~, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM,
- rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
- rmkx=, rmso=\E[27m, rmul=\E[24m,
- rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
- rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>,
- sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h,
- smir=\E[4h, smkx=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
- u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
- vpa=\E[%i%p1%dd, use=ecma+color,
+# Eterm does not implement control/shift cursor keys such as kDN6, or kPRV/kNXT
+# but does otherwise follow the rxvt+pcfkeys model -TD
+# remove nonworking flash -TD
+# remove km as per tack test -TD
+Eterm|Eterm-color|Eterm with xterm-style color support (X Window System),
+ am, bce, bw, eo, mc5i, mir, msgr, xenl, xon,
+ btns#5, cols#80, it#8, lines#24, lm#0, ncv@,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
+ home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@,
+ ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ is1=\E[?47l\E>\E[?1l,
+ is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, 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,
+ mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+ rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=,
+ rmso=\E[27m, rmul=\E[24m,
+ rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
+ rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>\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%;,
+ 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,
+ use=ecma+color,
+
+# 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
+xiterm|internationalized terminal emulator for X,
+ km@,
+ kbs=\177, kdch1=\E[3~, use=klone+color, use=xterm-r6,
# 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),
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
- el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY,
- home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, ka1=\EOq, ka3=\EOs, kb2=\EOr,
- kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD, kcud1=\EOB,
- kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kent=\EOM, kf0=\EOy,
- kf1=\EOP, kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf2=\EOQ,
- kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
- kf9=\EOX, khome=\E[H, kmous=\E[^_, knp=\E[U, kpp=\E[V,
- rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM, rmacs=^O,
- rmcup=\E@0\E[?4r, rmso=\E[m,
- rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, smcup=\E@0\E[?4s\E[?4h\E@1,
- smso=\E[7m, tbc=\E[3g,
-
-xtermc|xterm terminal emulator (color),
- colors#8, ncv#7, pairs#64,
- op=\E[100m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- use=xtermm,
+xtermm|xterm terminal emulator (monocrome),
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+ el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY,
+ home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+ il=\E[%p1%dL, il1=\E[L, ind=^J, 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[^_,
+ knp=\E[U, kpp=\E[V, rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM,
+ rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m,
+ rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smcup=\E@0\E[?4s\E[?4h\E@1,
+ smso=\E[7m, tbc=\E[3g, 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,
+ use=xtermm,
# From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995
# Here's a termcap entry I've been using for xterm_color, which comes
# with BSD/OS 2.0, and the X11R6 contrib tape too I think. Besides the
# color stuff, I also have a status line defined as the window manager
# title bar. [I have translated it to terminfo -- ESR]
-xterm-pcolor|xterm with color used for highlights and status line,
- bold=\E[1m\E[43m, rev=\E[7m\E[34m, smso=\E[7m\E[31m,
- smul=\E[4m\E[42m, use=xterm+sl, use=xterm-r6,
-
-# HP ships this, except for the pb#9600 which was merged in from BSD termcap.
-# (hpterm: added empty <acsc>, we have no idea what ACS chars look like --esr)
-hpterm|X-hpterm|hp X11 terminal emulator,
- am, da, db, mir, xhp,
- 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,
- 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,
- kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
- kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
- khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF,
- knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, meml=\El,
- memu=\Em, pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
- pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
- pfx=\E&f2a%p1%dk%p2%l%dL%p2%s,
- 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,
+xterm-pcolor|xterm with color used for highlights and status line,
+ bold=\E[1m\E[43m, rev=\E[7m\E[34m, smso=\E[7m\E[31m,
+ smul=\E[4m\E[42m, use=xterm+sl, use=xterm-r6,
+
+# HP ships this (HPUX 9 and 10), except for the pb#9600 which was merged in
+# from BSD termcap. (hpterm: added empty <acsc>, we have no idea what ACS
+# chars look like --esr)
+hpterm|X-hpterm|hp X11 terminal emulator,
+ am, da, db, mir, xhp,
+ 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,
+ 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,
+ kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
+ kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
+ khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF,
+ knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, meml=\El,
+ memu=\Em, pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
+ pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
+ pfx=\E&f2a%p1%dk%p2%l%dL%p2%s,
+ 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,
+# HPUX 11 provides a color version.
+hpterm-color|HP X11 terminal emulator with color,
+ ccc,
+ colors#64, pairs#8,
+ home=\E&a0y0C,
+ initp=\E&v%p2%da%p3%db%p4%dc%p5%dx%p6%dy%p7%dz%p1%dI,
+ op=\E&v0S, scp=\E&v%p1%dS, use=hpterm,
# This entry describes an xterm with Sun-style function keys enabled
# via the X resource setting "xterm*sunFunctionKeys:true"
# To understand <kf11>/<kf12> note that L1,L2 and F11,F12 are the same.
# The <kf13>...<kf20> keys are L3-L10. We don't set <kf16=\E[197z>
-# because we want it to be seen as <kcpy>.
+# because we want it to be seen as <kcpy>.
# The <kf31>...<kf45> keys are R1-R15. We treat some of these in accordance
# with their Sun keyboard labels instead.
# From: Simon J. Gerraty <sjg@zen.void.oz.au> 10 Jan 1996
-xterm-sun|xterm with sunFunctionKeys true,
- kb2=\E[218z, kcpy=\E[197z, kend=\E[220z, kf1=\E[224z,
- kf10=\E[233z, kf11=\E[192z, kf12=\E[193z, kf13=\E[194z,
- kf14=\E[195z, kf15=\E[196z, kf17=\E[198z, kf18=\E[199z,
- kf19=\E[200z, kf2=\E[225z, kf20=\E[201z, kf3=\E[226z,
- kf31=\E[208z, kf32=\E[209z, kf33=\E[210z, kf34=\E[211z,
- kf35=\E[212z, kf36=\E[213z, kf38=\E[215z, kf4=\E[227z,
- kf40=\E[217z, kf42=\E[219z, kf44=\E[221z, kf5=\E[228z,
- kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z,
- kfnd=\E[200z, khlp=\E[196z, khome=\E[214z, kich1=\E[2z,
- knp=\E[222z, kpp=\E[216z, kund=\E[195z, use=xterm,
-xterms-sun|small (80x24) xterm with sunFunctionKeys true,
- cols#80, lines#24, use=xterm-sun,
+xterm-sun|xterm with sunFunctionKeys true,
+ kb2=\E[218z, kcpy=\E[197z, kcub1=\EOD, kcud1=\EOB,
+ kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3z, kend=\E[220z,
+ kent=\EOM, kf1=\E[224z, kf10=\E[233z, kf11=\E[192z,
+ kf12=\E[193z, kf13=\E[194z, kf14=\E[195z, kf15=\E[196z,
+ kf17=\E[198z, kf18=\E[199z, kf19=\E[200z, kf2=\E[225z,
+ kf20=\E[201z, kf3=\E[226z, kf31=\E[208z, kf32=\E[209z,
+ kf33=\E[210z, kf34=\E[211z, kf35=\E[212z, kf36=\E[213z,
+ kf38=\E[215z, kf4=\E[227z, kf40=\E[217z, kf42=\E[219z,
+ kf44=\E[221z, kf45=\E[222z, kf46=\E[234z, kf47=\E[235z,
+ kf5=\E[228z, kf6=\E[229z, kf7=\E[230z, kf8=\E[231z,
+ kf9=\E[232z, kfnd=\E[200z, khlp=\E[196z, khome=\E[214z,
+ kich1=\E[2z, knp=\E[222z, kpp=\E[216z, kund=\E[195z,
+ use=xterm-basic,
+xterms-sun|small (80x24) xterm with sunFunctionKeys true,
+ cols#80, lines#24, use=xterm-sun,
# This is for the extensible terminal emulator on the X11R6 contrib tape.
-emu|emu native mode,
- 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,
- bel=^G, blink=\ES\EW, bold=\ES\EU, civis=\EZ,
- clear=\EP\EE0;0;, cnorm=\Ea, cr=^M, csr=\Ek%p1%d;%p2%d;,
- cub=\Eq-%p1%d;, cub1=^H, cud=\Ep%p1%d;, cud1=\EB,
- cuf=\Eq%p1%d;, cuf1=\ED, cup=\EE%p1%d;%p2%d;,
- cuu=\Ep-%p1%d;, cuu1=\EA, dch=\EI%p1%d;, dch1=\EI1;,
- dl=\ER%p1%d;, dl1=\ER1;, ech=\Ej%p1%d;, ed=\EN, el=\EK,
- el1=\EL, enacs=\0, home=\EE0;0;, ht=^I, hts=\Eh,
- il=\EQ%p1%d;, il1=\EQ1;, ind=\EG, is2=\ES\Er0;\Es0;,
- kbs=^H, kcub1=\EC, kcud1=\EB, kcuf1=\ED, kcuu1=\EA,
- kdch1=\177, kent=^M, kf0=\EF00, kf1=\EF01, kf10=\EF10,
- 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, kf6=\EF06,
- kf7=\EF07, kf8=\EF08, kf9=\EF09, kfnd=\Efind, kich1=\Eins,
- knp=\Enext, kpp=\Eprior, kslt=\Esel, oc=\Es0;\Er0;,
- rev=\ES\ET, ri=\EF, rmacs=\0, rmir=\EX, rmso=\ES, rmul=\ES,
- rs2=\ES\Es0;\Er0;, setab=\Es%i%p1%d;,
- setaf=\Er%i%p1%d;, sgr0=\ES, smacs=\0, smir=\EY,
- smso=\ES\ET, smul=\ES\EV, tbc=\Ej,
+# It corresponds to emu's internal emulation:
+# emu -term emu
+# emu's default sets TERM to "xterm", but that doesn't work well -TD
+# fixes: remove bogus rmacs/smacs, change oc to op, add bce, am -TD
+# fixes: add civis, cnorm, sgr -TD
+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,
+ 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;,
+ cub1=^H, cud=\Ep%p1%d;, cud1=\EB, cuf=\Eq%p1%d;, cuf1=\ED,
+ cup=\EE%p1%d;%p2%d;, cuu=\Ep-%p1%d;, cuu1=\EA,
+ 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,
+ 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,
+ kf6=\EF06, kf7=\EF07, kf8=\EF08, kf9=\EF09, kfnd=\Efind,
+ kich1=\Eins, knp=\Enext, kpp=\Eprior, kslt=\Esel,
+ 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%;,
+ sgr0=\ES, smir=\EY, smso=\ET, smul=\EV, tbc=\Ej,
+
+# vt220 Terminfo entry for the Emu emulation, corresponds to
+# emu -term vt220
+# with NumLock set (to make the keypad transmit kf0-kf9).
+# fixes: add am, xenl, corrected sgr0 -TD
+emu-220|Emu-220 (vt200-7bit mode),
+ am, xenl, xon,
+ 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,
+ 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,
+ dch=\E[%p1%dP, dch1=\E[1P, dl=\E[%p1%dM, dl1=\E[1M,
+ ed=\E[0J, el=\E[0K, el1=\E[1K, enacs=\E)0, home=\E[H, ht=^I,
+ hts=\EH, if=/usr/share/tabset/vt300, il=\E[%p1%dL,
+ il1=\E[1L, ind=\ED, is2=\E>\E[?1l\E[?3l\E[4l\E[?7h,
+ kbs=^H, kcmd=\E[29~, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, kdch1=\E[3~, kent=\EOM, kf0=\EOp, kf1=\EOq,
+ kf10=\EOl, kf11=\EOm, kf12=\EOn, kf13=\EOP, kf14=\EOQ,
+ kf15=\EOR, kf16=\EOS, kf2=\EOr, kf26=\E[17~, kf27=\E[18~,
+ kf28=\E[19~, kf29=\E[20~, kf3=\EOs, kf30=\E[21~,
+ kf34=\E[26~, kf37=\E[31~, kf38=\E[32~, kf39=\E[33~,
+ kf4=\EOt, kf40=\E[34~, kf5=\EOu, kf6=\EOv, kf7=\EOw,
+ kf8=\EOx, kf9=\EOy, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~,
+ 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=,
+ smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g,
+# A commercial product, Reportedly a version of Xterm with an OPEN LOOK UI,
+# print interface, ANSI X3.64 colour escape sequences, etc. Newsgroup postings
+# indicate that it emulates more than one terminal, but incompletely.
+#
+# This is adapted from a FreeBSD bug-report by Daniel Rudy <dcrudy@pacbell.net>
+# It is based on vt102's entry, with some subtle differences, but also
+# has status line
+# supports ANSI colors (except for 'op' string)
+# apparently implements alternate screen like xterm
+# does not use padding, of course.
+mvterm|vv100|SwitchTerm aka mvTERM,
+ am, eslok, hs, km, mir, msgr, xenl,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ dsl=\E[?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,
+ 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,
+ rmcup=\E[2J\E[?47l\E8, rmkx=\E[?1l\E>, rmso=\E[m,
+ 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%;,
+ 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,
+
+### MTERM
+#
+# This application is available by email from <mouse@Rodents.Montreal.QC.CA>.
+#
+# "mterm -type ansi" sets $TERM to "ansi"
+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,
+ 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,
+# 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,
+ 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,
+ rmir=^O, rmso=^T, smir=^Q, smso=^V,
+# "mterm -type decansi" sets $TERM to "decansi"
+#
+# note: kdch1, kfnd, kslt are in the source code, but do not work -TD
+decansi|ANSI emulation with DEC compatibility hacks,
+ am, mir, msgr, xenl,
+ 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,
+ 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,
+ smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u6=\E[%i%d;%dR,
+ u7=\E[6n, vpa=\E[%i%p1%dd,
#### MGR
#
# MGR is a Bell Labs window system lighter-weight than X.
-# These entries describe MGR's xterm-equivalent.
-# They are courtesy of Vincent Broman <broman@nosc.mil> 14 Jan 1997
-#
-
-mgr|Bellcore MGR (non X) window system terminal emulation,
- am, km,
- bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=^M,
- 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,
- rmso=\E0n, rmul=\E0n, sgr0=\E0n, smam=\E5s, smso=\E1n,
- smul=\E4n,
-mgr-sun|Mgr window with Sun keyboard,
- ka1=\E[214z, ka3=\E[216z, kb2=\E[218z, kc1=\E[220z,
- kc3=\E[222z, kcpy=\E[197z, kend=\E[220z, kent=\E[250z,
- kf1=\E[224z, kf10=\E[233z, kf11=\E[234z, kf12=\E[235z,
- kf2=\E[225z, kf3=\E[226z, kf4=\E[227z, kf5=\E[228z,
- kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z,
- kfnd=\E[200z, khlp=\E[207z, khome=\E[214z, knp=\E[222z,
- kopn=\E[198z, kpp=\E[216z, kund=\E[195z, use=mgr,
-mgr-linux|Mgr window with Linux keyboard,
- ka1=\E[H, ka3=\E[5~, kb2=\E[G, kc1=\E[Y, kc3=\E[6~,
- kdch1=\E[3~, kend=\E[4~, kf0=\E[[J, kf1=\E[[A, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D,
- kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
- khome=\E[1~, knp=\E[6~, kpp=\E[5~, use=mgr,
+# These entries describe MGR's xterm-equivalent.
+# They are courtesy of Vincent Broman <broman@nosc.mil> 14 Jan 1997
+#
+
+mgr|Bellcore MGR (non X) window system terminal emulation,
+ am, km,
+ bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=^M,
+ 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,
+ rmso=\E0n, rmul=\E0n, sgr0=\E0n, smam=\E5s, smso=\E1n,
+ smul=\E4n,
+mgr-sun|Mgr window with Sun keyboard,
+ ka1=\E[214z, ka3=\E[216z, kb2=\E[218z, kc1=\E[220z,
+ kc3=\E[222z, kcpy=\E[197z, kend=\E[220z, kent=\E[250z,
+ kf1=\E[224z, kf10=\E[233z, kf11=\E[234z, kf12=\E[235z,
+ kf2=\E[225z, kf3=\E[226z, kf4=\E[227z, kf5=\E[228z,
+ kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z,
+ kfnd=\E[200z, khlp=\E[207z, khome=\E[214z, knp=\E[222z,
+ kopn=\E[198z, kpp=\E[216z, kund=\E[195z, use=mgr,
+mgr-linux|Mgr window with Linux keyboard,
+ ka1=\E[H, ka3=\E[5~, kb2=\E[G, kc1=\E[Y, kc3=\E[6~,
+ kdch1=\E[3~, kend=\E[4~, kf0=\E[[J, kf1=\E[[A, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf2=\E[[B, kf3=\E[[C, kf4=\E[[D,
+ kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[1~, knp=\E[6~, kpp=\E[5~, use=mgr,
######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS
#
-# Columbus UNIX virtual terminal. This terminal also appears in
-# UNIX 4.0 and successors as line discipline 1 (?), but is
+# Columbus UNIX virtual terminal. This terminal also appears in
+# UNIX 4.0 and successors as line discipline 1 (?), but is
# undocumented and does not really work quite right.
-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,
- 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,
- kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A,
- smso=\Ea^D, smul=\Ea^A,
+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,
+ 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,
+ kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A,
+ smso=\Ea^D, smul=\Ea^A,
# (vremote: removed obsolete ":nl@:" -- esr)
-vremote|virtual remote terminal,
- am@,
- cols#79, use=cbunix,
-
-pty|4bsd pseudo teletype,
- cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!,
- smso=\Ea$, smul=\Ea!, use=cbunix,
-
-# The codes supported by the term.el terminal emulation in GNU Emacs 19.30
-eterm|gnu emacs term.el terminal emulation,
- am, mir, xenl,
- cols#80, lines#24,
- bel=^G, 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,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
- el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=^J, rev=\E[7m,
- rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
- sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m,
- smul=\E[4m,
-
-# Entries for use by the `screen' program by Juergen Weigert,
+vremote|virtual remote terminal,
+ am@,
+ cols#79, use=cbunix,
+
+pty|4bsd pseudo teletype,
+ cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!,
+ smso=\Ea$, smul=\Ea!, use=cbunix,
+
+# The codes supported by the term.el terminal emulation in GNU Emacs 19.30
+eterm|gnu emacs term.el terminal emulation,
+ am, mir, xenl,
+ cols#80, lines#24,
+ bel=^G, 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,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+ el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@,
+ il=\E[%p1%dL, il1=\E[L, ind=^J, rev=\E[7m,
+ rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
+ sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m,
+ smul=\E[4m,
+
+# Entries for use by the `screen' program by Juergen Weigert,
# Michael Schroeder, Oliver Laumann. The screen and
# screen-w entries came with version 3.7.1. The screen2 and screen3 entries
# come from University of Wisconsin and may be older.
@@ -3420,29 +4137,78 @@ eterm|gnu emacs term.el terminal emulation,
# E0 (str) Switch charset 'G0' back to standard charset.
#
# tested with screen 3.09.08
-screen|VT 100/ANSI X3.64 virtual terminal,
- OTbs, OTpt, am, km, mir, msgr, xenl, G0,
- colors#8, cols#80, it#8, lines#24, pairs#64,
- acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
- cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, ed=\E[J, el=\E[K, 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,
- 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, rmir=\E[4l,
- rmkx=\E[?1l\E>, rmso=\E[23m, rmul=\E[24m, rs2=\Ec, sc=\E7,
- sgr0=\E[m, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=,
- smso=\E[3m, smul=\E[4m, tbc=\E[3g, E0=\E(B, S0=\E(%p1%c,
- use=ecma+color,
+screen|VT 100/ANSI X3.64 virtual terminal,
+ OTbs, OTpt, am, km, mir, msgr, xenl, G0,
+ colors#8, cols#80, it#8, lines#24, pairs#64,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
+ cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+ dl1=\E[M, ed=\E[J, el=\E[K, 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,
+ 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,
+# 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, use=screen,
+screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line,
+ dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen,
+
+# ======================================================================
+# Entries for GNU Screen with 16 colors.
+# Those variations permit to benefit from 16 colors palette, and from
+# bold font and blink attribute separated from bright colors. But they
+# are less portable than the generic "screen" 8 color entries: Their
+# usage makes real sense only if the terminals you attach and reattach
+# do all support 16 color palette.
+
+screen-16color|GNU Screen with 16 colors,
+ use=ibm+16color, use=screen,
+
+screen-16color-s|GNU Screen with 16 colors and status line,
+ use=ibm+16color, use=screen-s,
+
+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,
+ 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,
+
+screen-256color-s|GNU Screen with 256 colors and status line,
+ ccc@,
+ initc@, use=xterm+256color, use=screen-s,
+
+screen-256color-bce|GNU Screen with 256 colors and BCE,
+ ccc@,
+ initc@, use=xterm+256color, use=screen-bce,
+
+screen-256color-bce-s|GNU Screen with 256 colors, BCE, and status line,
+ bce, ccc@,
+ initc@, use=xterm+256color, use=screen-s,
+
+# ======================================================================
# Read the fine manpage:
# When screen tries to figure out a terminal name for
@@ -3468,53 +4234,59 @@ screen|VT 100/ANSI X3.64 virtual terminal,
# 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 customized for XFree86 xterm,
- bce@, bw,
- invis@, kIC@, kNXT@, kPRV@, kend=\E[4~, khome=\E[1~, meml@,
- memu@,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
- use=xterm-xfree86,
+screen.xterm-xfree86|screen.xterm-new|screen customized for modern xterm,
+ bce@, bw,
+ invis@, kIC@, kNXT@, kPRV@, kend=\E[4~, khome=\E[1~, 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,
+ use=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=xterm-r6,
+screen.xterm-r6|screen customized for X11R6 xterm,
+ bw, use=xterm-r6,
# Color applications running in screen and TeraTerm do not play well together
-# on Solaris.
-screen.teraterm|disable ncv in teraterm,
- ncv#127, use=screen,
-
-screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols,
- cols#132, use=screen,
-
-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,
- 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,
- 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,
- rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smir=\E[4h,
- smso=\E[3m, smul=\E[4m, tbc=\E[3g,
+# 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,
+# fix the backspace key
+screen.linux|screen in linux console,
+ bw,
+ kbs=\177, kcbt@, use=screen,
+
+screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols,
+ cols#132, use=screen,
+
+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,
+ 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,
+ 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,
+ 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)
-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,
- 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,
- 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,
+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,
+ 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,
+ 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,
# Francesco Potorti <F.Potorti@cnuce.cnr.it>:
# NCSA telnet is one of the most used telnet clients for the Macintosh. It has
@@ -3550,66 +4322,66 @@ screen3|older VT 100/ANSI X3.64 virtual terminal,
# The status-line manipulation is a mapping of the xterm-compatible control
# sequences for setting the window-title. So you must use tsl and fsl in
# pairs, since the latter ends the string that is loaded to the window-title.
-ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
- am, hs, km, mir, msgr, xenl,
- acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- dsl=\E]0;\007, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
- flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, ht=^I, hts=\EH,
- ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
- il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>,
- is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~,
- kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~,
- kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~,
- kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khlp=\E[1~,
- khome=\E[2~, knp=\E[6~, kpp=\E[3~, mc4=\E[4i, mc5=\E[5i,
- rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM,
- rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l,
- 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%;,
- sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smcup=\E7,
- smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, tsl=\E]0;,
- u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?62;1;6c, u9=\E[c,
-ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
- use=ncsa-m, use=klone+color,
-ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
- hs@,
- dsl@, fsl@, tsl@, use=ncsa,
-ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
- hs@,
- dsl@, fsl@, tsl@, use=ncsa-m,
+ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
+ am, hs, km, mir, msgr, xenl,
+ acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ dsl=\E]0;\007, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
+ flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, ht=^I, hts=\EH,
+ ich=\E[%p1%d@, if=/usr/share/tabset/vt100,
+ il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>,
+ is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~,
+ kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~,
+ kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~,
+ kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khlp=\E[1~,
+ khome=\E[2~, knp=\E[6~, kpp=\E[3~, mc4=\E[4i, mc5=\E[5i,
+ rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM,
+ rmacs=\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%;,
+ 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, tsl=\E]0;,
+ u8=\E[?62;1;6c, use=ansi+enq,
+ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
+ use=ncsa-m, use=klone+color,
+ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode,
+ hs@,
+ dsl@, fsl@, tsl@, use=ncsa,
+ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
+ hs@,
+ dsl@, fsl@, tsl@, use=ncsa-m,
# alternate -TD:
# The documented function-key mapping refers to the Apple Extended Keyboard
# (e.g., NCSA Telnet's F1 corresponds to a VT220 F6). We use the VT220-style
# codes, however, since the numeric keypad (VT100) PF1-PF4 are available on
# some keyboards and many applications require these as F1-F4.
#
-ncsa-vt220|NCSA Telnet using vt220-compatible function keys,
- kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
- kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
- kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
- kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, use=ncsa,
+ncsa-vt220|NCSA Telnet using vt220-compatible function keys,
+ kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+ kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+ kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
+ kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, use=ncsa,
#### Pilot Pro Palm-Top
#
# Termcap for Top Gun Telnet and SSH on the Palm Pilot.
-# http://www.isaac.cs.berkeley.edu/pilot/tgtelnet.html
-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,
- 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,
- rmso=\EB, smso=\Eb,
+# 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,
+ 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,
+ rmso=\EB, smso=\Eb,
# From: Federico Bianchi <bianchi@www.arte.unipi.it>
# These entries are for the Embeddable Linux Kernel System (ELKS)
@@ -3622,33 +4394,33 @@ pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional,
# as an added bonus, this deals with all the capabilities common to
# both VT52 and ANSI (or, eventually, "special") modes.
-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,
+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,
-elks-vt52|ELKS vt52 console,
- clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\EK,
- home=\EH, use=elks-glasstty,
+elks-vt52|ELKS vt52 console,
+ clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\EK,
+ home=\EH, use=elks-glasstty,
-elks-ansi|ELKS ANSI console,
- clear=\E[H\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
- rmso=\E[m, smso=\E[7m, use=elks-glasstty,
+elks-ansi|ELKS ANSI console,
+ clear=\E[H\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
+ rmso=\E[m, smso=\E[7m, use=elks-glasstty,
# As a matter of fact, ELKS 0.0.83 on PCs defaults to ANSI emulation
# instead of VT52, but the "elks" entry still refers to the latter.
-elks|default ELKS console,
- use=elks-vt52,
+elks|default ELKS console,
+ use=elks-vt52,
# Project SIBO (for Psion 3 palmtops) console is identical to the ELKS
# one but in screen size
-sibo|ELKS SIBO console,
- cols#61, it#8, lines#20, use=elks-vt52,
+sibo|ELKS SIBO console,
+ cols#61, it#8, lines#20, use=elks-vt52,
######## COMMERCIAL WORKSTATION CONSOLES
#
@@ -3657,83 +4429,99 @@ sibo|ELKS SIBO console,
#
# This is from the OSF/1 Release 1.0 termcap file
-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,
- 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,
+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,
+ 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,
#### Sun consoles
#
# :is1: resets scrolling region in case a previous user had used "tset vt100"
-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,
- 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,
- 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,
+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,
+ 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,
+ 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,
# From: Alexander Lukyanov <lav@video.yars.free.net>, 14 Nov 1995
# <lines> capability later corrected by J.T. Conklin <jtc@cygnus.com>
# SGR 1, 4 aren't supported - removed bold/underline (T.Dickey 17 Jan 1998)
-sun-il|Sun Microsystems console with working insert-line,
- am, km, msgr,
- cols#80, lines#34,
- bel=^G, bold@, clear=^L, 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, 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,
- 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,
- 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,
- knp=\E[222z, kopt=\E[194z, kpp=\E[216z, kres=\E[193z,
- kund=\E[195z, rev=\E[7m, rmso=\E[m, rmul@, rs2=\E[s,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
- sgr0=\E[m, smso=\E[7m, smul@, u8=\E[1t, u9=\E[11t,
+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,
+ 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,
+ 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,
+ 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,
+ knp=\E[222z, kopt=\E[194z, kpp=\E[216z, kres=\E[193z,
+ kund=\E[195z, rev=\E[7m, rmso=\E[m, rmul@, rs2=\E[s,
+ sgr=\E[0%?%p1%p3%|%t;7%;m, sgr0=\E[m, smso=\E[7m,
+ u8=\E[1t, u9=\E[11t,
# On some versions of CGSIX framebuffer firmware (SparcStation 5), <il1>/<il>
# flake out on the last line. Unfortunately, without them the terminal has no
# way to scroll.
-sun-cgsix|sun-ss5|Sun SparcStation 5 console,
- il@, il1@, use=sun-il,
+sun-cgsix|sun-ss5|Sun SparcStation 5 console,
+ il@, il1@, use=sun-il,
# If you are using an SS5, change the sun definition to use sun-ss5.
-sun|sun1|sun2|Sun Microsystems Inc. workstation console,
- use=sun-il,
+sun|sun1|sun2|Sun Microsystems Inc. workstation console,
+ use=sun-il,
# From: <john@ucbrenoir> Tue Sep 24 13:14:44 1985
-sun-s|Sun Microsystems Workstation window with status line,
- hs,
- dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun,
-sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs,
- hs,
- dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun-e,
-sun-48|Sun 48-line window,
- cols#80, lines#48, use=sun,
-sun-34|Sun 34-line window,
- cols#80, lines#34, use=sun,
-sun-24|Sun 24-line window,
- cols#80, lines#24, use=sun,
-sun-17|Sun 17-line window,
- cols#80, lines#17, use=sun,
-sun-12|Sun 12-line window,
- cols#80, lines#12, use=sun,
-sun-1|Sun 1-line window for sysline,
- eslok, hs,
- cols#80, lines#1,
- dsl=^L, fsl=\E[K, tsl=^M, use=sun,
-sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character,
- ich1@, rmir@, smir@, use=sun,
-sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history,
- lines#35,
- rmcup=\E[>4h, smcup=\E[>4l, use=sun,
+sun-s|Sun Microsystems Workstation window with status line,
+ hs,
+ dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun,
+sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs,
+ hs,
+ dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun-e,
+sun-48|Sun 48-line window,
+ cols#80, lines#48, use=sun,
+sun-34|Sun 34-line window,
+ cols#80, lines#34, use=sun,
+sun-24|Sun 24-line window,
+ cols#80, lines#24, use=sun,
+sun-17|Sun 17-line window,
+ cols#80, lines#17, use=sun,
+sun-12|Sun 12-line window,
+ cols#80, lines#12, use=sun,
+sun-1|Sun 1-line window for sysline,
+ eslok, hs,
+ cols#80, lines#1,
+ dsl=^L, fsl=\E[K, tsl=^M, use=sun,
+sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character,
+ ich1@, rmir@, smir@, use=sun,
+sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history,
+ lines#35,
+ rmcup=\E[>4h, smcup=\E[>4l, use=sun,
+sun-type4|Sun Workstation console with type 4 keyboard,
+ kcub1=\E[217z, kcud1=\E[221z, kcuf1=\E[219z,
+ kcuu1=\E[215z, use=sun-il,
+
+# Most of the current references to sun-color are from users wondering why this
+# is the default on install. Details from reading the wscons manpage, adding
+# cub, etc., here (rather than in the base sun-il entry) since it is not clear
+# when those were added -TD
+sun-color|Sun Microsystems Workstation console with color support (IA systems),
+ colors#8, pairs#64,
+ cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
+ cuu=\E[%p1%dA, home=\E[H, op=\E[m\E[p, setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm,
+ setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+ setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
+ use=sun,
#### Iris consoles
#
@@ -3741,21 +4529,21 @@ sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history,
# (wsiris: this had extension capabilities
# :HS=\E7F2:HE=\E7F7:\
# :CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite:
-# See the note on Iris extensions near the end of this file.
-# Finally, removed suboptimal <clear>=\EH\EJ and added <cud1> &
+# See the note on Iris extensions near the end of this file.
+# Finally, removed suboptimal <clear>=\EH\EJ and added <cud1> &
# <flash> from BRL -- esr)
-wsiris|iris40|iris emulating a 40 line visual 50 (approximately),
- OTbs, OTnc, OTpt, am,
- OTkn#3, cols#80, it#8, lines#40,
- OTnl=\EB, bel=^G, clear=\Ev, cnorm=\E>, cub1=^H, cud1=\EB,
- cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
- cvvis=\E;, dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK,
- flash=\E7F4\E7B1\013\E7F7\E7B0, home=\EH, ht=^I, il1=\EL,
- ind=^J, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3,
- kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, ri=\EI,
- rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7, smso=\E9P,
- smul=\E7R2\E9P,
+wsiris|iris40|iris emulating a 40 line visual 50 (approximately),
+ OTbs, OTnc, OTpt, am,
+ OTkn#3, cols#80, it#8, lines#40,
+ OTnl=\EB, bel=^G, clear=\Ev, cnorm=\E>, cub1=^H, cud1=\EB,
+ cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
+ cvvis=\E;, dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK,
+ flash=\E7F4\E7B1\013\E7F7\E7B0, home=\EH, ht=^I, il1=\EL,
+ ind=^J, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3,
+ kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, ri=\EI,
+ rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7, smso=\E9P,
+ smul=\E7R2\E9P,
#### NeWS consoles
#
@@ -3766,36 +4554,36 @@ wsiris|iris40|iris emulating a 40 line visual 50 (approximately),
# Entry for NeWS's psterm from Eric Messick & Hugh Daniel
# (psterm: unknown ":sl=\EOl:el=\ENl:" removed -- esr)
-psterm|psterm-basic|NeWS psterm-80x34,
- OTbs, am, hs, km, ul,
- cols#80, it#8, lines#34,
- blink=\EOb, bold=\EOd, clear=^L, csr=\EE%p1%d;%p2%d;,
- cub1=\ET, cud1=\EP, cuf1=\EV, cup=\E%p1%d;%p2%d;, cuu1=\EY,
- dch1=\EF, dl1=\EK, ed=\EB, el=\EC, flash=\EZ, fsl=\ENl,
- home=\ER, ht=^I, il1=\EA, ind=\EW, is1=\EN*, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ll=\EU, rc=^\, rev=\EOr,
- ri=\EX, rmcup=\ENt, rmir=\ENi, rmso=\ENo, rmul=\ENu, sc=^],
- sgr0=\EN*, smcup=\EOt, smir=\EOi, smso=\EOo, smul=\EOu,
- tsl=\EOl,
-psterm-96x48|NeWS psterm 96x48,
- cols#96, lines#48, use=psterm,
-psterm-90x28|NeWS psterm 90x28,
- cols#90, lines#28, use=psterm,
-psterm-80x24|NeWS psterm 80x24,
- cols#80, lines#24, use=psterm,
+psterm|psterm-basic|NeWS psterm-80x34,
+ OTbs, am, hs, km, ul,
+ cols#80, it#8, lines#34,
+ blink=\EOb, bold=\EOd, clear=^L, csr=\EE%p1%d;%p2%d;,
+ cub1=\ET, cud1=\EP, cuf1=\EV, cup=\E%p1%d;%p2%d;, cuu1=\EY,
+ dch1=\EF, dl1=\EK, ed=\EB, el=\EC, flash=\EZ, fsl=\ENl,
+ home=\ER, ht=^I, il1=\EA, ind=\EW, is1=\EN*, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ll=\EU, rc=^\, rev=\EOr,
+ ri=\EX, rmcup=\ENt, rmir=\ENi, rmso=\ENo, rmul=\ENu, sc=^],
+ sgr0=\EN*, smcup=\EOt, smir=\EOi, smso=\EOo, smul=\EOu,
+ tsl=\EOl,
+psterm-96x48|NeWS psterm 96x48,
+ cols#96, lines#48, use=psterm,
+psterm-90x28|NeWS psterm 90x28,
+ cols#90, lines#28, use=psterm,
+psterm-80x24|NeWS psterm 80x24,
+ cols#80, lines#24, use=psterm,
# This is a faster termcap for psterm. Warning: if you use this termcap,
# some control characters you type will do strange things to the screen.
# (psterm-fast: unknown ":sl=^Ol:el=^Nl:" -- esr)
-psterm-fast|NeWS psterm fast version (flaky ctrl chars),
- OTbs, am, hs, km, ul,
- cols#80, it#8, lines#34,
- blink=^Ob, bold=^Od, clear=^L, csr=\005%p1%d;%p2%d;,
- cub1=^T, cud1=^P, cuf1=^V, cup=\004%p1%d;%p2%d;, cuu1=^Y,
- dch1=^F, dl1=^K, ed=^B, el=^C, flash=^Z, fsl=^Nl, home=^R, ht=^I,
- il1=^A, ind=^W, is1=^N*, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, ll=^U, rc=^\, rev=^Or, ri=^X, rmcup=^Nt, rmir=^Ni,
- rmso=^No, rmul=^Nu, sc=^], sgr0=^N*, smcup=^Ot, smir=^Oi,
- smso=^Oo, smul=^Ou, tsl=^Ol,
+psterm-fast|NeWS psterm fast version (flaky ctrl chars),
+ OTbs, am, hs, km, ul,
+ cols#80, it#8, lines#34,
+ blink=^Ob, bold=^Od, clear=^L, csr=\005%p1%d;%p2%d;,
+ cub1=^T, cud1=^P, cuf1=^V, cup=\004%p1%d;%p2%d;, cuu1=^Y,
+ dch1=^F, dl1=^K, ed=^B, el=^C, flash=^Z, fsl=^Nl, home=^R, ht=^I,
+ il1=^A, ind=^W, is1=^N*, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, ll=^U, rc=^\, rev=^Or, ri=^X, rmcup=^Nt, rmir=^Ni,
+ rmso=^No, rmul=^Nu, sc=^], sgr0=^N*, smcup=^Ot, smir=^Oi,
+ smso=^Oo, smul=^Ou, tsl=^Ol,
#### NeXT consoles
#
@@ -3803,315 +4591,603 @@ psterm-fast|NeWS psterm fast version (flaky ctrl chars),
#
# From: Dave Wetzel <dave@turbocat.snafu.de> 22 Dec 1995
-next|NeXT console,
- am, xt,
- cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, 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,
- 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,
+next|NeXT console,
+ am, xt,
+ cols#80, it#8, lines#24,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, 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,
+ 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,
#### Sony NEWS workstations
#
# (news-unk: this had :KB=news: -- esr)
-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,
- 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,
- is2=\E[?7h\E[?1l\E[?3l\E7\E8, kbs=^H, kcub1=\EOD,
- kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOY, kf1=\EOP,
- kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV,
- kf8=\EOW, kf9=\EOX, rc=\E8, rev=\E[7m, ri=\EM,
- rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sc=\E7,
- sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+news-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,
+ 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,
+ is2=\E[?7h\E[?1l\E[?3l\E7\E8, kbs=^H, kcub1=\EOD,
+ kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOY, kf1=\EOP,
+ kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV,
+ kf8=\EOW, kf9=\EOX, rc=\E8, rev=\E[7m, ri=\EM,
+ rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sc=\E7,
+ sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
#
# (news-29: this had :TY=ascii: --esr)
-news-29,
- lines#29, use=news-unk,
+news-29,
+ lines#29, use=news-unk,
# (news-29-euc: this had :TY=euc: --esr)
-news-29-euc,
- use=news-29,
+news-29-euc,
+ use=news-29,
# (news-29-sjis: this had :TY=sjis: --esr)
-news-29-sjis,
- use=news-29,
+news-29-sjis,
+ use=news-29,
#
# (news-33: this had :TY=ascii: --esr)
-news-33,
- lines#33, use=news-unk,
+news-33,
+ lines#33, use=news-unk,
# (news-33-euc: this had :TY=euc: --esr)
-news-33-euc,
- use=news-33,
+news-33-euc,
+ use=news-33,
# (news-33-sjis: this had :TY=sjis: --esr)
-news-33-sjis,
- use=news-33,
+news-33-sjis,
+ use=news-33,
#
# (news-42: this had :TY=ascii: --esr)
-news-42,
- lines#42, use=news-unk,
+news-42,
+ lines#42, use=news-unk,
# (news-42-euc: this had :TY=euc: --esr)
-news-42-euc,
- use=news-42,
+news-42-euc,
+ use=news-42,
# (news-42-sjis: this had :TY=sjis: --esr)
-news-42-sjis,
- use=news-42,
+news-42-sjis,
+ use=news-42,
#
-# NEWS-OS old termcap entry
+# NEWS-OS old termcap entry
#
# (news-old-unk: this had :KB=news:TY=sjis: --esr)
-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,
- 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=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
- kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m, ri=\EM,
- rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+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,
+ 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=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
+ kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m, ri=\EM,
+ rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+ sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
#
# (nwp512: this had :DE=^H:, which I think means <OTbs> --esr)
-nwp512|news|nwp514|news40|vt100-bm|old sony vt100 emulator 40 lines,
- OTbs,
- lines#40,
- is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8,
- use=news-old-unk,
+nwp512|news|nwp514|news40|vt100-bm|old sony vt100 emulator 40 lines,
+ OTbs,
+ lines#40,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8,
+ use=news-old-unk,
#
# (nwp512-a: this had :TY=ascii: and the alias vt100-bm --esr)
-nwp512-a|nwp514-a|news-a|news42|news40-a|sony vt100 emulator 42 line,
- lines#42,
- is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8,
- use=news-old-unk,
+nwp512-a|nwp514-a|news-a|news42|news40-a|sony vt100 emulator 42 line,
+ lines#42,
+ is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8,
+ use=news-old-unk,
#
# (nwp-512-o: this had :KB=nwp410:DE=^H: I interpret the latter as <OTbs>. --esr)
-nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|sony vt100 emulator 40 lines,
- OTbs,
- lines#40,
- is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8,
- use=news-old-unk,
+nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|sony vt100 emulator 40 lines,
+ OTbs,
+ lines#40,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8,
+ use=news-old-unk,
#
# (nwp513: this had :DE=^H: and the alias vt100-bm --esr)
-nwp513|nwp518|nwe501|newscbm|news31|sony vt100 emulator 33 lines,
- OTbs,
- lines#31,
- is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8,
- use=news-old-unk,
+nwp513|nwp518|nwe501|newscbm|news31|sony vt100 emulator 33 lines,
+ OTbs,
+ lines#31,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8,
+ use=news-old-unk,
#
# (nwp513-a: this had :TY=ascii: and :DE=^H:, which I interpret as <OTbs>; --esr)
# also the alias vt100-bm.
-nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|old sony vt100 emulator 33 lines,
- OTbs,
- lines#33,
- is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33r\E8,
- use=news-old-unk,
+nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|old sony vt100 emulator 33 lines,
+ OTbs,
+ lines#33,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33r\E8,
+ use=news-old-unk,
#
# (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,
- use=news-old-unk,
+nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|old sony vt100 emulator 33 lines,
+ OTbs,
+ lines#31,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8,
+ use=news-old-unk,
#
# (news28: this had :DE=^H:, I think that's <OTbs>, and :KB=nws1200: --esr)
-news28|sony vt100 emulator 28 lines,
- OTbs,
- lines#28,
- is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28r\E8,
- use=news-old-unk,
+news28|sony vt100 emulator 28 lines,
+ OTbs,
+ lines#28,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28r\E8,
+ use=news-old-unk,
#
# (news29: this had :TY=ascii:KB=nws1200:\ --esr)
-news29|news28-a|sony vt100 emulator 29 lines,
- lines#29,
- is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29r\E8,
- use=news-old-unk,
+news29|news28-a|sony vt100 emulator 29 lines,
+ lines#29,
+ is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29r\E8,
+ use=news-old-unk,
#
# (news511: this had :TY=sjis: --esr)
-nwp511|nwp-511|nwp-511 vt100,
- OTbs, OTpt, am, xenl,
- cols#80, lines#24,
- clear=\E[;H\E[2J$<20/>, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M,
- ed=\E[J$<30/>, el=\E[K$<3/>,
- flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
- il1=\E[L, is2=\E[?5l\E[?1l\E>\E[?7h\E[?8h, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
- kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\E#W, khome=\E[H,
- ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
- rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h,
- smso=\E[7m$<2/>, smul=\E[4m$<2/>,
+nwp511|nwp-511|nwp-511 vt100,
+ OTbs, OTpt, am, xenl,
+ cols#80, lines#24,
+ clear=\E[;H\E[2J$<20/>, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M,
+ ed=\E[J$<30/>, el=\E[K$<3/>,
+ flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
+ il1=\E[L, is2=\E[?5l\E[?1l\E>\E[?7h\E[?8h, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ,
+ kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\E#W, khome=\E[H,
+ ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
+ rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h,
+ smso=\E[7m$<2/>, smul=\E[4m$<2/>,
# (news517: this had :TY=sjis:. --esr)
-nwp517|nwp-517|nwp-517 vt200 80 cols 30 rows,
- eslok, hs,
- cols#80, lines#30,
- OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$},
- is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
- tsl=\E[1$}\E[;%df, use=vt200,
+nwp517|nwp-517|nwp-517 vt200 80 cols 30 rows,
+ eslok, hs,
+ cols#80, lines#30,
+ OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$},
+ is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+ tsl=\E[1$}\E[;%df, use=vt200,
# (news517-w: this had :TY=sjis:. --esr)
-nwp517-w|nwp-517-w|nwp-517 vt200 132 cols 50 rows,
- eslok, hs,
- cols#132, lines#50,
- OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$},
- is2=\E7\E[r\E8\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
- rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
- tsl=\E[1$}\E[;%df, use=vt200,
+nwp517-w|nwp-517-w|nwp-517 vt200 132 cols 50 rows,
+ eslok, hs,
+ cols#132, lines#50,
+ OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$},
+ is2=\E7\E[r\E8\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
+ tsl=\E[1$}\E[;%df, use=vt200,
#### Common Desktop Environment
#
# This ships with Sun's CDE in Solaris 2.5
# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov <lav@video.yars.free.net>
-dtterm|CDE desktop terminal,
- am, mir, msgr, xenl, xon,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, 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(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H,
- ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
- ind=\ED, invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l,
- kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
- kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
- kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
- kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
- kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
- kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- kslt=\E[4~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
- rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m,
- sc=\E7,
- sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
- smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ecma+color,
+dtterm|CDE desktop terminal,
+ am, mir, msgr, xenl, xon,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, 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(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H,
+ ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
+ ind=\ED, invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l,
+ kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kf1=\E[11~, kf10=\E[21~, kf11=\E[23~,
+ kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+ kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+ kf2=\E[12~, kf20=\E[34~, kf3=\E[13~, kf4=\E[14~,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ kslt=\E[4~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O,
+ rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m,
+ sc=\E7,
+ sgr=\E[0%?%p1%t;2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+ smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ecma+color,
#### Non-Unix Consoles
#
+### EMX termcap.dat compatibility modes
+#
+# Keypad: Home=\0G Up=\0H PrPag=\0I
+# ka1,kh kcuu1 kpp,ka3
+#
+# Left=\0K 5=\0L Right=\0M
+# kcub1 kb2 kcuf1
+#
+# End=\0O Down=\0P NxPag=\0Q
+# kc1,kend kcud1 kc3,knp
+#
+# Ins=\0R Del=\0S
+# kich1 kdch1
+#
+# On keyboard with 12 function keys,
+# shifted f-keys: F13-F24
+# control f-keys: F25-F36
+# alt f-keys: F37-F48
+# The shift/control/alt keys do not modify each other, but alt overrides both,
+# and control overrides shift.
+#
+# Also (possibly only EMX, so we don't put it in ansi.sys, etc): set the
+# no_color_video to inform the application that standout(1), underline(2)
+# reverse(4) and invisible(64) don't work with color.
+emx-base|DOS special keys,
+ bce, bw,
+ it#8, ncv#71,
+ bel=^G, ka1=\0G, ka3=\0I, kb2=\0L, kbs=^H, kc1=\0O, kc3=\0Q,
+ kcbt=\0^O, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H,
+ kdch1=\0S, kend=\0O, kf1=\0;, kf10=\0D, kf11=\0\205,
+ kf12=\0\206, kf13=\0T, kf14=\0U, kf15=\0V, kf16=\0W,
+ kf17=\0X, kf18=\0Y, kf19=\0Z, kf2=\0<, kf20=\0[, kf21=\0\\,
+ kf22=\0], kf23=\0\207, kf24=\0\210, kf25=\0\^, kf26=\0_,
+ kf27=\0`, kf28=\0a, kf29=\0b, kf3=\0=, kf30=\0c, kf31=\0d,
+ kf32=\0e, kf33=\0f, kf34=\0g, kf35=\0\211, kf36=\0\212,
+ kf37=\0h, kf38=\0i, kf39=\0j, kf4=\0>, kf40=\0k, kf41=\0l,
+ 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,
+ use=ansi.sys,
+
# Except for the "-emx" suffixes, these are as distributed with EMX 0.9b,
# a Unix-style environment used on OS/2. (Note that the suffix makes some
# names longer than 14 characters, the nominal maximum).
#
# Removed: rmacs=\E[10m, smacs=\E[11m, because OS/2 does not implement acs.
-ansi-emx|ANSI.SYS color,
- am, bce, eo, mir, msgr, xenl, xon,
- colors#16, 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, 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, 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,
-ansi-color-2-emx|ANSI.SYS color 2,
- am, bce, eo, mir, msgr, xenl, xon,
- colors#16, cols#80, it#8, lines#25, pairs#64,
- bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[0;37;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, 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, kspd=^Z, nel=^M^J, rev=\E[1;37;46m,
- rmir=\E[4l, rmpch=\E[10m, rmso=\E[0;37;44m,
- rmul=\E[0;37;44m, rs1=\Ec, setab=\E[4%p1%dm,
- setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smir=\E[4h,
- smpch=\E[11m, smso=\E[1;37;46m, smul=\E[1;36;44m,
- tbc=\E[3g, u8=\E[?6c, u9=\E[c,
-ansi-color-3-emx|ANSI.SYS color 3,
- am, bce, eo, mir, msgr, xenl, xon,
- colors#16, cols#80, it#8, lines#25, pairs#64,
- bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[0;37;40m\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, 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, kspd=^Z, nel=^M^J, rev=\E[1;37;46m,
- rmir=\E[4l, rmpch=\E[10m, rmso=\E[0;37;40m,
- rmul=\E[0;37;40m, rs1=\Ec, setab=\E[4%p1%dm,
- setaf=\E[3%p1%dm, sgr0=\E[0;10m, smir=\E[4h,
- smpch=\E[11m, smso=\E[1;37;46m, smul=\E[0;36;40m,
- tbc=\E[3g, u8=\E[?6c, u9=\E[c,
-mono-emx|stupid monochrome ansi terminal with only one kind of emphasis,
- am,
- cols#80, it#8, lines#24,
- clear=\E[H\E[2J$<50>, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
- ht=^I, 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,
- sgr0=\E[0m,
+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,
+# 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,
+ rmso=\E[0;37;44m, rmul=\E[0;37;44m, rs1=\Ec,
+ setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smso=\E[1;37;46m,
+ smul=\E[1;36;44m, use=ansi-emx,
+# nice colors for Emacs (white on black, mode line black on cyan)
+ansi-color-3-emx|ANSI.SYS color 3,
+ clear=\E[0;37;40m\E[H\E[J, rev=\E[1;37;46m,
+ rmso=\E[0;37;40m, rmul=\E[0;37;40m, rs1=\Ec,
+ setaf=\E[3%p1%dm, sgr0=\E[0;10m, smso=\E[1;37;46m,
+ smul=\E[0;36;40m, use=ansi-emx,
+mono-emx|stupid monochrome ansi terminal with only one kind of emphasis,
+ am,
+ cols#80, it#8, lines#24,
+ clear=\E[H\E[2J$<50>, cub1=\E[D, cud1=\E[B, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
+ ht=^I, 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,
+ sgr0=\E[0m,
# 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,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
- kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
- kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
- kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
- khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmam@, smam@,
- use=ansi.sys,
+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~,
+ kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+ kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
+ kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmam@, smam@,
+ use=ansi.sys,
# Use this for cygwin (tested with version 1.1.0).
# I've combined pcansi and linux. Some values of course were different and
# I've indicated which of these were and which I used.
# Cheers, earnie_boyd@yahoo.com
# several changes based on running with tack and comparing with older entry -TD
-cygwin|ansi emulation for Cygwin,
- am, eo, in, msgr, xon,
- colors#8, cols#80, it#8, 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, clear=\E[H\E[J, cr=^M, cub1=^H,
- cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
- 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, 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, 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~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
- kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~,
- kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
- knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m,
- rc=\E8, rev=\E[7m, ri=\EM, 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%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
- sgr0=\E[0;10m, smir=\E[4h, smpch=\E[11m, smso=\E[7m,
- smul=\E[4m, u6=\E[%i%d;%dR, u7=\E[6n, u9=\E[c,
- vpa=\E[%i%p1%dd,
+# more changes from csw:
+# add cbt [backtab]
+# remove eo [erase overstrike with blank]
+# change clear was \E[H\E[J now \E[2J (faster?)
+# remove cols
+# remove lines
+# remove ncv#3 [colors collide with highlights, bitmask] not applicable
+# to MSDOS box?
+# add cub [cursor back param]
+# add cuf [cursor forward param]
+# add cuu [cursor up param]
+# add cud [cursor down param]
+# add hs [has status line]
+# add fsl [return from status line]
+# add tsl [go to status line]
+# add smacs [Start alt charset] (not sure if this works)
+# add rmacs [End alt charset] (ditto)
+# add smcup [enter_ca_mode] (save console; thanks Corinna)
+# add rmcup [exit_ca_mode] (restore console; thanks Corinna)
+# add kb2 [center of keypad]
+# add u8 [user string 8] \E[?6c
+# add el [clear to end of line] \E[K
+# Notes:
+# cnorm [make cursor normal] not implemented
+# flash [flash] not implemented
+# blink [blink] not implemented very usefully in cygwin? \E[5m
+# dim [dim] not implemented very usefully in cygwin? \E[2m
+# cub1 [cursor back 1] typically \E[D, but ^H is faster?
+# kNXT [shifted next key] not implemented
+# 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
+# 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?
+# bce [back color erase] causes problems with change background color?
+# cvvis [make cursor very visible] causes a stackdump when testing with
+# testcurs using the output option? \E[?25h\E[?8c
+# civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c
+# ech [erase characters param] broken \E[%p1%dX
+# kcbt [back-tab key] not implemented in cygwin? \E[Z
+#
+# 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,
+ 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,
+ 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,
+ 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~,
+ kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+ kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D,
+ kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z,
+ nel=^M^J, 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%;%?%p4%t;5%;%?%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,
+
+# I've supplied this so that you can help test new values and add other
+# features. Cheers, earnie_boyd@yahoo.com.
+#
+# Some features are from pcansi. The op value is from linux. Function-keys
+# are from linux. These have been tested not to cause problems. xenl was in
+# this list, but DOES cause problems so it has been removed
+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,
+ 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,
+ 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,
+ 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$,
+ 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~,
+ kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+ kf18=\E[32~, kf19=\E[33~, kf2=\E[[B, kf20=\E[34~,
+ kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, khome=\E[1~, kich1=\E[2~,
+ knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, 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%;%?%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[2g, vpa=\E[%i%p1%dd, use=vt102+enq,
+
+# Key definitions:
+# The encodings for unshifted arrow keys, F1-F12, Home, Insert, etc. match the
+# encodings used by other x86 environments. All others are invented for DJGPP.
+# Oddly enough, while several combinations of modifiers are tabulated, there is
+# none for shifted cursor keys.
+#
+# F1 \E[[A
+# F2 \E[[B
+# F3 \E[[C
+# F4 \E[[D
+# F5 \E[[E
+# F6 \E[17~
+# F7 \E[18~
+# F8 \E[19~
+# F9 \E[20~
+# F10 \E[21~
+# F11 \E[23~
+# F12 \E[24~
+#
+# Delete \E[3~
+# Down Arrow \E[B
+# End \E[4~
+# Home \E[1~
+# Insert \E[2~
+# Left Arrow \E[D
+# Page Down \E[6~
+# Page Up \E[5~
+# Right Arrow \E[C
+# Up Arrow \E[A
+#
+# Shift-F1 \E[25~
+# Shift-F2 \E[26~
+# Shift-F3 \E[27~
+# Shift-F4 \E[28~
+# Shift-F5 \E[29~
+# Shift-F6 \E[30~
+# Shift-F7 \E[31~
+# Shift-F8 \E[32~
+# Shift-F9 \E[33~
+# Shift-F10 \E[34~
+# Shift-F11 \E[35~
+# Shift-F12 \E[36~
+#
+# Ctrl-F1 \E[47~
+# Ctrl-F2 \E[48~
+# Ctrl-F3 \E[49~
+# Ctrl-F4 \E[50~
+# Ctrl-F5 \E[51~
+# Ctrl-F6 \E[52~
+# Ctrl-F7 \E[53~
+# Ctrl-F8 \E[54~
+# Ctrl-F9 \E[55~
+# Ctrl-F10 \E[56~
+# Ctrl-F11 \E[57~
+# Ctrl-F12 \E[58~
+#
+# Ctrl-Delete \E[43~
+# Ctrl-Down Arrow \E[38~
+# Ctrl-End \E[44~
+# Ctrl-Home \E[41~
+# Ctrl-Insert \E[42~
+# Ctrl-Left Arrow \E[39~
+# Ctrl-Page Down \E[46~
+# Ctrl-Page Up \E[45~
+# Ctrl-Right Arrow \E[40~
+# Ctrl-Up Arrow \E[37~
+#
+# Alt-F1 \E[59~
+# Alt-F2 \E[60~
+# Alt-F3 \E[61~
+# Alt-F4 \E[62~
+# Alt-F5 \E[63~
+# Alt-F6 \E[64~
+# Alt-F7 \E[65~
+# Alt-F8 \E[66~
+# Alt-F9 \E[67~
+# Alt-F10 \E[68~
+# Alt-F11 \E[79~
+# Alt-F12 \E[80~
+#
+# Alt-Delete \E[65~
+# Alt-Down Arrow \E[60~
+# Alt-End \E[66~
+# Alt-Home \E[41~
+# Alt-Insert \E[64~
+# Alt-Left Arrow \E[61~
+# Alt-Page Down \E[68~
+# Alt-Page Up \E[67~
+# Alt-Right Arrow \E[62~
+# Alt-Up Arrow \E[59~
+#
+# Also:
+# Alt-A \E[82~
+# Alt-B \E[82~
+# Alt-C \E[83~
+# Alt-D \E[84~
+# Alt-E \E[85~
+# Alt-F \E[86~
+# Alt-G \E[87~
+# Alt-H \E[88~
+# Alt-I \E[89~
+# Alt-J \E[90~
+# Alt-K \E[91~
+# Alt-L \E[92~
+# Alt-M \E[93~
+# Alt-N \E[94~
+# Alt-O \E[95~
+# Alt-P \E[96~
+# Alt-Q \E[97~
+# Alt-R \E[98~
+# Alt-S \E[99~
+# Alt-T \E[100~
+# Alt-U \E[101~
+# Alt-V \E[102~
+# Alt-W \E[103~
+# Alt-X \E[104~
+# Alt-Y \E[105~
+# Alt-Z \E[106~
+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,
+ 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,
+ 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,
+ 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,
+ sgr0=\E[m, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
+
+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,
+
+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,
+ 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,
+
+# This is tested using U/Win's telnet. Scrolling is omitted because it is
+# buggy. Another odd bug appears when displaying "~" in alternate character
+# set (the emulator spits out error messages). Compare with att6386 -TD
+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,
+ 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,
+ 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,
+ 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,
+ 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,
+ smacs=\E[11m, smir=\E[4h, smpch=\E[11m, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
# This entry fits the Windows NT console when the _POSIX_TERM environment
# variable is set to 'on'. While the Windows NT POSIX console is seldom used,
@@ -4125,7 +5201,7 @@ cygwin|ansi emulation for Cygwin,
# but the termcap entry is actually broken and unusable as given; the :do:
# capability is misspelled "d".
#
-# To use this, you need to a bunch of environment variables:
+# To use this, you need to a bunch of environment variables:
#
# SET _POSIX_TERM=on
# SET TERM=ansi
@@ -4137,40 +5213,125 @@ cygwin|ansi emulation for Cygwin,
# Important note: setting the TMP environment variable in POSIX style renders
# it incompatible with a lot of other applications, including Visual C++. So
# you should have a separate command window just for vi. All the other
-# variables may be permanently set in the Control Panel\System applet.
+# variables may be permanently set in the Control Panel\System applet.
#
# You can find out more about the restrictions of this facility at
# <http://www.nentug.org/unix-to-nt/ntposix.htm>.
#
# From: Federico Bianchi <bianchi@magna.cisid.unipi.it>, 15 Jan 1997
-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,
- 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,
- ri=\E[T, rmso=\E[m, sc=\E[s, sgr0=\E[0m, smso=\E[7m,
+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,
+ 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,
+ ri=\E[T, rmso=\E[m, sc=\E[s, sgr0=\E[0m, smso=\E[7m,
# From: jew@venus.sunquest.com
# Date: 19 Feb 93 23:41:07 GMT
# Here's a combination of ansi and vt100 termcap
# entries that works nearly perfectly for me
# (Gateway 2000 Handbook and Microsoft Works 3.0):
-pcmw|PC running Microsoft Works,
- am, xenl,
- cols#80, it#8, lines#24, vt#3,
- bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
- clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J,
- cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
- cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
- ht=^I, hts=\EH$<2/>, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H,
- kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED$<5/>,
- rc=\E8, rev=\E[7m$<2/>, rf=/usr/share/lib/tabset/vt100,
- ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr0=\E[m$<2/>, smso=\E[7m$<2/>, smul=\E[4m$<2/>,
- tbc=\E[3g$<2/>,
+pcmw|PC running Microsoft Works,
+ am, xenl,
+ cols#80, it#8, lines#24, vt#3,
+ bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
+ clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J,
+ cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
+ cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
+ ht=^I, hts=\EH$<2/>, ind=\ED$<5/>, is2=\E[1;24r\E[24;1H,
+ kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\r\ED$<5/>,
+ rc=\E8, rev=\E[7m$<2/>, rf=/usr/share/lib/tabset/vt100,
+ ri=\EM$<5/>, rmso=\E[m$<2/>, rmul=\E[m$<2/>,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+ sgr0=\E[m$<2/>, smso=\E[7m$<2/>, smul=\E[4m$<2/>,
+ tbc=\E[3g$<2/>,
+
+# From: Federico Bianchi
+# This is the entry for the OpenNT terminal.
+# The ntconsole name is for backward compatability.
+# 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
+
+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=`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~q\304r\362s_t\303u\264v\301w\302x\263y\371z\372{\373|\374}\375~\376.\031-\030\,\021+^P0\333p\304r\304y\363z\362{\343|\330}\234,
+ 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,
+ 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[1m, smul=\E[4m,
+
+opennt-35|ntconsole-35|OpenNT-term35 compatible with color,
+ lines#35, use=opennt,
+
+opennt-50|ntconsole-50|OpenNT-term50 compatible with color,
+ lines#50, use=opennt,
+
+opennt-60|ntconsole-60|OpenNT-term60 compatible with color,
+ lines#60, use=opennt,
+
+opennt-100|ntconsole-100|OpenNT-term100 compatible with color,
+ lines#100, use=opennt,
+
+# OpenNT wide terminals
+opennt-w|opennt-25-w|ntconsole-w|ntconsole-25-w|OpenNT-term-w compat with color,
+ cols#125, use=opennt,
+
+opennt-35-w|ntconsole-35-w|OpenNT-term35-w compatible with color,
+ lines#35, use=opennt-w,
+
+opennt-50-w|ntconsole-50-w|OpenNT-term50-w compatible with color,
+ lines#50, use=opennt-w,
+
+opennt-60-w|ntconsole-60-w|OpenNT-term60-w compatible with color,
+ lines#60, use=opennt-w,
+
+opennt-w-vt|opennt-25-w-vt|ntconsole-w-vt|ntconsole-25-w-vt|OpenNT-term-w-vt compat with color,
+ cols#132, use=opennt,
+
+# OpenNT terminals with no smcup/rmcup (names match termcap entries)
+interix-nti|opennt-nti|opennt-25-nti|ntconsole-25-nti|OpenNT-nti compatible with color,
+ rmcup@, smcup@, use=opennt,
+
+opennt-35-nti|ntconsole-35-nti|OpenNT-term35-nti compatible with color,
+ lines#35, use=opennt-nti,
+
+opennt-50-nti|ntconsole-50-nti|OpenNT-term50-nti compatible with color,
+ lines#50, use=opennt-nti,
+
+opennt-60-nti|ntconsole-60-nti|OpenNT-term60-nti compatible with color,
+ lines#60, use=opennt-nti,
+
+opennt-100-nti|ntconsole-100-nti|OpenNT-term100-nti compatible with color,
+ lines#100, use=opennt-nti,
######## COMMON TERMINAL TYPES
#
@@ -4201,22 +5362,22 @@ pcmw|PC running Microsoft Works,
# Comparison with the k* capabilities makes it obvious that the c* things are
# shift keys. I have renamed them to keys 32 and up accordingly. Also,
# :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,
- 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,
- 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,
- 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=\E[f, kil1=^AJ\r, kind=^AO\r,
- nel=^M^J, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
- smam=\E[?7h, smso=\E[7m, smul=\E[4m,
+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,
+ 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,
+ 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,
+ 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=\E[f, kil1=^AJ\r, kind=^AO\r,
+ nel=^M^J, 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:\
# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\
@@ -4225,10 +5386,10 @@ altos2|alt2|altos-2|altos II,
# :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\
# :HL=^AP\r:SP=\E[i:\
# :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\
-altos3|altos5|alt3|alt5|altos-3|altos-5|altos III or V,
- blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2,
-altos4|alt4|altos-4|altos IV,
- use=wy50,
+altos3|altos5|alt3|alt5|altos-3|altos-5|altos III or V,
+ blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2,
+altos4|alt4|altos-4|altos IV,
+ use=wy50,
# (altos7: had extension capabilities:
# :GG#0:GI=\EH8:GF=\EH7:\
# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\
@@ -4239,213 +5400,213 @@ altos4|alt4|altos-4|altos IV,
# shift keys. I have renamed them to keys 32 and up accordingly. I have
# also made this entry relative to adm12 in order to give it an <sgr>. The
# <invis> imported by use=adm+sgr may work, let me know. -- esr)
-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,
- 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,
- 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,
- 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,
- rmir=\Er, smir=\Eq, use=adm+sgr,
-altos7pc|alt7pc|altos PC VII,
- kend=\ET, use=altos7,
+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,
+ 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,
+ 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,
+ 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,
+ rmir=\Er, smir=\Eq, use=adm+sgr,
+altos7pc|alt7pc|altos PC VII,
+ kend=\ET, use=altos7,
#### Hewlett-Packard (hp)
#
# Hewlett-Packard
-# 8000 Foothills Blvd
+# 8000 Foothills Blvd
# Roseville, CA 95747
# Vox: 1-(916)-785-4363 (Technical response line for VDTs)
# 1-(800)-633-3600 (General customer support)
#
#
# As of March 1998, HP no longer has any terminals in production.
-# The 700 series (22, 32, 41, 44, 92, 94, 96, 98) is still being
+# The 700 series (22, 32, 41, 44, 92, 94, 96, 98) is still being
# supported (they still have parts). So are the 2392a and 2394a.
# See the WORKSTATION CONSOLES section for the 700s.
#
# Generic HP terminal - this should (hopefully) work on any HP terminal.
-hpgeneric|hp|hewlett-packard generic terminal,
- OTbs, OTpt, am, da, db, mir, xhp,
- cols#80, lines#24, lm#0, vt#6,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\E&a%p2%dc%p1%dY$<6>, cuu1=\EA, dch1=\EP, dl1=\EM,
- 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@,
- sgr0=\E&d@, smir=\EQ, smso=\E&dJ, smul=\E&dD, tbc=\E3,
- vpa=\E&a%p1%dY,
-
-hp110|hewlett-packard model 110 portable,
- lines#16, use=hpgeneric,
-
-hp+pfk+cr|hp function keys with CR,
- kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r,
- kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r,
-
-hp+pfk-cr|hp function keys w/o CR,
- kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev,
- kf8=\Ew,
-
-# The hp2621s use the same keys for the arrows and function keys,
-# but not separate escape sequences. These definitions allow the
-# user to use those keys as arrow keys rather than as function
+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,
+ 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@,
+ sgr0=\E&d@, smir=\EQ, smso=\E&dJ, smul=\E&dD, tbc=\E3,
+ vpa=\E&a%p1%dY,
+
+hp110|hewlett-packard model 110 portable,
+ lines#16, use=hpgeneric,
+
+hp+pfk+cr|hp function keys with CR,
+ kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r,
+ kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r,
+
+hp+pfk-cr|hp function keys w/o CR,
+ kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev,
+ kf8=\Ew,
+
+# The hp2621s use the same keys for the arrows and function keys,
+# but not separate escape sequences. These definitions allow the
+# user to use those keys as arrow keys rather than as function
# keys.
-hp+pfk+arrows|hp alternate arrow definitions,
- kcub1=\Eu\r, kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1@,
- kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, khome=\Ep\r, kind=\Er\r,
- kll=\Eq\r, kri=\Es\r,
+hp+pfk+arrows|hp alternate arrow definitions,
+ kcub1=\Eu\r, kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1@,
+ kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, khome=\Ep\r, kind=\Er\r,
+ kll=\Eq\r, kri=\Es\r,
-hp+arrows|hp arrow definitions,
- kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
- kind=\ES, kll=\EF, kri=\ET,
+hp+arrows|hp arrow definitions,
+ kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh,
+ kind=\ES, kll=\EF, kri=\ET,
# Generic stuff from the HP 262x series
#
-hp262x|HP 262x terminals,
- xhp,
- blink=\E&dA, dch1=\EP$<2>, ed=\EJ, ht=\011$<2>, ind=\ES,
- invis=\E&dS, ip=$<2>, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- 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,
- sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, smul=\E&dD,
+hp262x|HP 262x terminals,
+ xhp,
+ blink=\E&dA, dch1=\EP$<2>, ed=\EJ, ht=\011$<2>, ind=\ES,
+ invis=\E&dS, ip=$<2>, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ 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,
+ 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.
# Due to severe 2621 braindamage, the only way to get the arrow keys to
# transmit anything at all is to turn on the function key labels
# with <smkx>, and even then the user has to hold down shift!
-# The default 2621 turns off the labels except when it has to to
-# enable the function keys. If your installation prefers labels
-# on all the time, or off all the time (at the "expense" of the
+# The default 2621 turns off the labels except when it has to to
+# enable the function keys. If your installation prefers labels
+# on all the time, or off all the time (at the "expense" of the
# function keys), use 2621-nl or 2621-wl.
-#
-# Note: there are newer ROMs for 2621's that allow you to set
-# strap A so the regular arrow keys xmit \EA, etc, as with the
-# 2645. However, even with this strap set, the terminal stops
+#
+# Note: there are newer ROMs for 2621's that allow you to set
+# strap A so the regular arrow keys xmit \EA, etc, as with the
+# 2645. However, even with this strap set, the terminal stops
# xmitting if you reset it, until you unset and reset the strap!
-# Since there is no way to set/unset the strap with an escape
+# Since there is no way to set/unset the strap with an escape
# sequence, we don't use it in the default.
# If you like, you can use 2621-ba (brain-damaged arrow keys).
-hp2621-ba|2621 w/new rom and strap A set,
- rmkx@, smkx@, use=hp+arrows, use=hp2621,
+hp2621-ba|2621 w/new rom and strap A set,
+ rmkx@, smkx@, use=hp+arrows, use=hp2621,
# hp2621 with function labels. Most of the time they are off,
# but inside vi, the function key labels appear. You have to
# hold down shift to get them to xmit.
-hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|hp 2621 w/labels,
- is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl,
-hp2621-fl|hp 2621,
- xhp@, xon,
- pb#19200,
- cbt=\Ei, cup=\E&a%p2%dc%p1%dY, dch1=\EP$<2>, ht=\011$<2>,
- ip=$<2>, is2=\E&j@\r, rmkx=\E&j@, rmso=\E&d@, rmul=\E&d@,
- sgr0=\E&d@, smkx=\E&jB, smso=\E&dD, smul=\E&dD,
- use=hp+pfk+cr, use=hpgeneric,
+hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|hp 2621 w/labels,
+ is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl,
+hp2621-fl|hp 2621,
+ xhp@, xon,
+ pb#19200,
+ cbt=\Ei, cup=\E&a%p2%dc%p1%dY, dch1=\EP$<2>, ht=\011$<2>,
+ ip=$<2>, is2=\E&j@\r, rmkx=\E&j@, rmso=\E&d@, rmul=\E&d@,
+ sgr0=\E&d@, smkx=\E&jB, smso=\E&dD, smul=\E&dD,
+ use=hp+pfk+cr, use=hpgeneric,
# To use hp2621p printer, setenv TERM=2621p, PRINTER=2612p
-hp2621p|hp 2621 with printer,
- mc4=\E&p13C, mc5=\E&p11C, use=hp2621,
+hp2621p|hp 2621 with printer,
+ mc4=\E&p13C, mc5=\E&p11C, use=hp2621,
-hp2621p-a|hp2621p with fn as arrows,
- use=hp+pfk+arrows, use=hp2621p,
+hp2621p-a|hp2621p with fn as arrows,
+ use=hp+pfk+arrows, use=hp2621p,
# hp2621 with k45 keyboard
-hp2621-k45|hp2621k45|k45|hp 2621 with 45 keyboard,
- kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
- khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621,
+hp2621-k45|hp2621k45|k45|hp 2621 with 45 keyboard,
+ kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+ khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621,
-# 2621 using all 48 lines of memory, only 24 visible at any time.
-hp2621-48|48 line 2621,
- lines#48,
- cup=\E&a%p2%dc%p1%dR, home=\EH, vpa=\E&a%p1%dR,
- use=hp2621,
+# 2621 using all 48 lines of memory, only 24 visible at any time.
+hp2621-48|48 line 2621,
+ lines#48,
+ cup=\E&a%p2%dc%p1%dR, home=\EH, vpa=\E&a%p1%dR,
+ use=hp2621,
# 2621 with no labels ever. Also prevents vi delays on escape.
-hp2621-nl|hp 2621 with no labels,
- kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@,
- use=hp2621-fl,
+hp2621-nl|hp 2621 with no labels,
+ kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@,
+ use=hp2621-fl,
-# Needed for UCB ARPAVAX console, since lsi-11 expands tabs
+# Needed for UCB ARPAVAX console, since lsi-11 expands tabs
# (wrong).
#
-hp2621-nt|hp 2621 w/no tabs,
- ht@, use=hp2621,
+hp2621-nt|hp 2621 w/no tabs,
+ ht@, use=hp2621,
# Hp 2624 B with 4 or 10 pages of memory.
-#
-# Some assumptions are made with this entry. These settings are
+#
+# Some assumptions are made with this entry. These settings are
# NOT set up by the initialization strings.
-#
+#
# Port Configuration
# RecvPace=Xon/Xoff
# XmitPace=Xon/Xoff
# StripNulDel=Yes
-#
+#
# Terminal Configuration
# InhHndShk=Yes
# InhDC2=Yes
# XmitFnctn(A)=No
# InhEolWrp=No
-#
+#
# Note: the 2624 DOES have a true <home>, believe it or not!
-#
-# The 2624 has an "error line" to which messages can be sent.
+#
+# The 2624 has an "error line" to which messages can be sent.
# This is CLOSE to what is expected for a "status line". However,
-# after a message is sent to the "error line", the next carriage
-# return is EATEN and the "error line" is turned back off again!
+# after a message is sent to the "error line", the next carriage
+# return is EATEN and the "error line" is turned back off again!
# So I guess we can't define <hs>, <eslok>, <wsl>, <dsl>, <fsl>, <tsl>.
-#
-# This entry supports emacs (and any other program that uses raw
-# mode) at 4800 baud and less. I couldn't get the padding right
+#
+# This entry supports emacs (and any other program that uses raw
+# mode) at 4800 baud and less. I couldn't get the padding right
# for 9600.
#
# (hp2624: replaced NUL sequences in flash with mandatory pauses -- esr)
-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,
+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,
-# This hp2626 entry does not use any of the fancy windowing stuff
+# This hp2626 entry does not use any of the fancy windowing stuff
# of the 2626.
-#
-# Indeed, terminfo does not yet handle such stuff. Since changing
-# any window clears memory, it is probably not possible to use
+#
+# Indeed, terminfo does not yet handle such stuff. Since changing
+# any window clears memory, it is probably not possible to use
# this for screen opt.
-#
-# ed is incredibly slow most of the time - I am guessing at the
-# exact padding. Since the terminal uses xoff/xon this is intended
-# only for cost computation, so that the terminal will prefer el
+#
+# ed is incredibly slow most of the time - I am guessing at the
+# exact padding. Since the terminal uses xoff/xon this is intended
+# only for cost computation, so that the terminal will prefer el
# or even dl1 which is probably faster!
-#
-# \ED\EJ\EC hack for ed from Ed Bradford - apparently ed is only
-# extra slow on the last line of the window.
-#
+#
+# \ED\EJ\EC hack for ed from Ed Bradford - apparently ed is only
+# extra slow on the last line of the window.
+#
# The padding probably should be changed.
#
-hp2626|hp2626a|hp2626p|hp 2626,
- da, db,
- lm#0, pb#19200,
- ed=\ED\EJ$<500>\EC, indn=\E&r%p1%dD, ip=$<4>,
- is2=\E&j@\r, rin=\E&r%p1%dU, use=hp+pfk+cr,
- use=hp+labels, use=scrhp,
+hp2626|hp2626a|hp2626p|hp 2626,
+ da, db,
+ lm#0, pb#19200,
+ ed=\ED\EJ$<500>\EC, indn=\E&r%p1%dD, ip=$<4>,
+ is2=\E&j@\r, rin=\E&r%p1%dU, use=hp+pfk+cr,
+ use=hp+labels, use=scrhp,
-# This entry is for sysline. It allocates a 23 line window with
-# a 115 line workspace for regular use, and a 1 line window for
+# This entry is for sysline. It allocates a 23 line window with
+# a 115 line workspace for regular use, and a 1 line window for
# the status line.
-#
+#
# This assumes port 2 is being used.
# Turn off horizontal line, Create ws #1 with 115 lines,
# Create ws #2 with 1 line, Create window #1 lines 1-23,
@@ -4453,222 +5614,222 @@ hp2626|hp2626a|hp2626p|hp 2626,
# Note that this clears the tabs so it must be done by tset before
# it sets the tabs.
#
-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,
- tsl=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC, use=hp2626,
+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,
+ tsl=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC, use=hp2626,
# Force terminal back to 24 lines after being 23.
-hp2626-ns|hp 2626 using all 24 lines,
- is1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I \E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r,
- use=hp2626,
+hp2626-ns|hp 2626 using all 24 lines,
+ is1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I \E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r,
+ use=hp2626,
# Various entries useful for small windows on 2626.
-hp2626-12|hewlett-packard 2626 12 lines,
- lines#12, use=hp2626,
-hp2626-12x40|hewlett-packard 2626 12 lines 40 columns,
- cols#40, lines#12, use=hp2626,
-hp2626-x40|hewlett-packard 2626 40 columns,
- cols#40, use=hp2626,
-hp2626-12-s|hewlett-packard 2626 11 lines plus status,
- lines#11, use=hp2626-s,
+hp2626-12|hewlett-packard 2626 12 lines,
+ lines#12, use=hp2626,
+hp2626-12x40|hewlett-packard 2626 12 lines 40 columns,
+ cols#40, lines#12, use=hp2626,
+hp2626-x40|hewlett-packard 2626 40 columns,
+ cols#40, use=hp2626,
+hp2626-12-s|hewlett-packard 2626 11 lines plus status,
+ lines#11, use=hp2626-s,
#
# 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@,
- smul=\E&dD\E&v1S, use=hp2621-nl,
-hp2627a|hp 2627 color terminal with no labels,
- cr=^M, cud1=^J, ht=^I, ind=^J,
- is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r,
- kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, 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,
- is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r,
- kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, use=hp2627a,
-
-# hp2640a doesn't have the Y cursor addressing feature, and C is
+hp2627a-rev|hp 2627 with reverse video colors,
+ cr=^M, cud1=^J, ht=^I, ind=^J,
+ is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3\r,
+ kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmul=\E&v0S\E&d@,
+ smul=\E&dD\E&v1S, use=hp2621-nl,
+hp2627a|hp 2627 color terminal with no labels,
+ cr=^M, cud1=^J, ht=^I, ind=^J,
+ is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r,
+ kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, 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,
+ is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r,
+ kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, use=hp2627a,
+
+# hp2640a doesn't have the Y cursor addressing feature, and C is
# memory relative instead of screen relative, as we need.
#
-hp2640a|hp 2640a,
- cup@, rmkx@, smkx@, use=hp2645,
+hp2640a|hp 2640a,
+ cup@, rmkx@, smkx@, use=hp2645,
-hp2640b|hp2644a|hp 264x series,
- rmkx@, smkx@, use=hp2645,
+hp2640b|hp2644a|hp 264x series,
+ rmkx@, smkx@, use=hp2645,
# (hp2641a: removed unknown :gu: -- esr)
-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,
- 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,
- rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB,
- vpa=\E&a%p1%2dY,
+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,
+ 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,
+ rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB,
+ vpa=\E&a%p1%2dY,
# This terminal should be used at 4800 baud or less. It needs padding for
# plain characters at 9600, I guessed at an appropriate cr delay. It really
# wants ^E/^F handshaking, but that doesn't work well even if you write
# software to support it.
-hp2645|hp45|HP 2645 series,
- pb#9600,
- blink=\E&dA, cr=\r$<20>, dim=\E&dH, kctab=\E2, kcub1=\ED,
- kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
- 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,
- sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric,
+hp2645|hp45|HP 2645 series,
+ pb#9600,
+ blink=\E&dA, cr=\r$<20>, dim=\E&dH, kctab=\E2, kcub1=\ED,
+ kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
+ 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,
+ sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric,
# You should use this terminal at 4800 baud or less.
-hp2648|hp2648a|HP 2648a graphics terminal,
- clear=\EH\EJ$<50>, cup=\E&a%p2%dc%p1%dY$<20>,
- dch1=\EP$<7>, ip=$<5>, use=hp2645,
+hp2648|hp2648a|HP 2648a graphics terminal,
+ clear=\EH\EJ$<50>, cup=\E&a%p2%dc%p1%dY$<20>,
+ dch1=\EP$<7>, ip=$<5>, use=hp2645,
-# The HP 150 terminal is a fairly vanilla HP terminal, with the
-# clreol standout problem. It also has graphics capabilities and
+# The HP 150 terminal is a fairly vanilla HP terminal, with the
+# clreol standout problem. It also has graphics capabilities and
# a touch screen, which we don't describe here.
-hp150|hewlett packard Model 150,
- OTbs, use=hp2622,
+hp150|hewlett packard Model 150,
+ OTbs, use=hp2622,
-# HP 2382a terminals, "the little ones." They don't have any
-# alternate character set support and sending out ^N/^O will
+# HP 2382a terminals, "the little ones." They don't have any
+# alternate character set support and sending out ^N/^O will
# leave the screen blank.
-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,
- rmacs@,
- sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c,
- sgr0=\E&d@, smacs@, use=hp+labels, use=scrhp,
-
-hp2621-a|hp2621a-a|hp2621 with fn as arrows,
- use=hp+pfk+arrows, use=hp2621-fl,
+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,
+ rmacs@,
+ sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c,
+ sgr0=\E&d@, smacs@, use=hp+labels, use=scrhp,
+
+hp2621-a|hp2621a-a|hp2621 with fn as arrows,
+ use=hp+pfk+arrows, use=hp2621-fl,
# newer hewlett packard terminals
-newhpkeyboard|generic entry for HP extended keyboard,
- kbs=^H, kcbt=\Ei, kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh,
- kich1=\EQ, kil1=\EL, kind=\ET, kll=\EF, knp=\EU, kpp=\EV,
- kri=\ES, krmir=\ER, rmkx=\E&s0A, smkx=\E&s1A,
- use=hp+pfk-cr,
-
-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,
- 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%;,
- sgr0=\E&d@\017, smacs=^N, smir=\EQ, smso=\E&dJ, smul=\E&dD,
- tbc=\E3, use=newhpkeyboard,
-
-memhp|memory relative addressing for new HP ttys,
- vt#6,
- clear=\EH\EJ$<40>, cub=\E&a-%p1%dC, cud=\E&a+%p1%dR,
- cuf=\E&a+%p1%dC, cup=\E&a%p1%dr%p2%dC, cuu=\E&a-%p1%dR,
- home=\EH, hpa=\E&a%p1%dC, ll=\E&a23R\r,
- mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dR, use=newhp,
-
-scrhp|screen relative addressing for new HP ttys,
- clear=\E&a0c0Y\EJ$<40>, cub=\E&a-%p1%dC,
- cud=\E&a+%p1%dR, cuf=\E&a+%p1%dC,
- cup=\E&a%p1%dy%p2%dC$<10>, cuu=\E&a-%p1%dR,
- home=\E&a0y0C, hpa=\E&a%p1%dC, ll=\E&a0y0C\EA,
- mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dY, use=newhp,
+newhpkeyboard|generic entry for HP extended keyboard,
+ kbs=^H, kcbt=\Ei, kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh,
+ kich1=\EQ, kil1=\EL, kind=\ET, kll=\EF, knp=\EU, kpp=\EV,
+ kri=\ES, krmir=\ER, rmkx=\E&s0A, smkx=\E&s1A,
+ use=hp+pfk-cr,
+
+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,
+ 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%;,
+ sgr0=\E&d@\017, smacs=^N, smir=\EQ, smso=\E&dJ, smul=\E&dD,
+ tbc=\E3, use=newhpkeyboard,
+
+memhp|memory relative addressing for new HP ttys,
+ vt#6,
+ clear=\EH\EJ$<40>, cub=\E&a-%p1%dC, cud=\E&a+%p1%dR,
+ cuf=\E&a+%p1%dC, cup=\E&a%p1%dr%p2%dC, cuu=\E&a-%p1%dR,
+ home=\EH, hpa=\E&a%p1%dC, ll=\E&a23R\r,
+ mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dR, use=newhp,
+
+scrhp|screen relative addressing for new HP ttys,
+ clear=\E&a0c0Y\EJ$<40>, cub=\E&a-%p1%dC,
+ cud=\E&a+%p1%dR, cuf=\E&a+%p1%dC,
+ cup=\E&a%p1%dy%p2%dC$<10>, cuu=\E&a-%p1%dR,
+ home=\E&a0y0C, hpa=\E&a%p1%dC, ll=\E&a0y0C\EA,
+ mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dY, use=newhp,
# (hp+labels: added label values from a BRL termcap -- esr)
-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,
- rmln=\E&j@, smln=\E&jB,
+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,
+ rmln=\E&j@, smln=\E&jB,
-hp+printer|"standard" printer info for HP ttys,
- ff=\E&p4u0C, mc0=\EH\E&p4dF, mc4=\E&p13C, mc5=\E&p11C,
+hp+printer|"standard" printer info for HP ttys,
+ ff=\E&p4u0C, mc0=\EH\E&p4dF, mc4=\E&p13C, mc5=\E&p11C,
# The new hp2621b is kind of a cross between the old 2621 and the
-# new 262x series of machines. It has dip-switched options.
-# The firmware has a bug in it such that if you give it a null
+# new 262x series of machines. It has dip-switched options.
+# The firmware has a bug in it such that if you give it a null
# length label, the following character is eaten!
-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,
- smln=\E&jB, use=hp2621,
+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,
+ smln=\E&jB, use=hp2621,
-hp2621b-p|hp 2621b with printer,
- use=hp+printer, use=hp2621b,
+hp2621b-p|hp 2621b with printer,
+ use=hp+printer, use=hp2621b,
# hp2621b - new 2621b with new extended keyboard
# these are closer to the new 26xx series than the other 2621b
-hp2621b-kx|hp 2621b with extended keyboard,
- use=newhpkeyboard, use=hp2621b,
+hp2621b-kx|hp 2621b with extended keyboard,
+ use=newhpkeyboard, use=hp2621b,
-hp2621b-kx-p|hp 2621b with new keyboard & printer,
- use=hp+printer, use=hp2621b-kx,
+hp2621b-kx-p|hp 2621b with new keyboard & printer,
+ use=hp+printer, use=hp2621b-kx,
# Some assumptions are made in the following entries.
# These settings are NOT set up by the initialization strings.
-#
+#
# Port Configuration
# RecvPace=Xon/Xoff XmitPace=Xon/Xoff StripNulDel=Yes
-#
+#
# Terminal Configuration
# InhHndShk(G)=Yes InhDC2(H)=Yes
# XmitFnctn(A)=No InhEolWrp=No
#
-#
+#
# Hp 2622a & hp2623a display and graphics terminals
#
-hp2622|hp2622a|hp 2622,
- da, db,
- lm#0, pb#19200,
- is2=\E&dj@\r, use=hp+pfk+cr, use=hp+labels, use=scrhp,
+hp2622|hp2622a|hp 2622,
+ da, db,
+ lm#0, pb#19200,
+ is2=\E&dj@\r, use=hp+pfk+cr, use=hp+labels, use=scrhp,
# The 2623 is a 2622 with extra graphics hardware.
-hp2623|hp2623a|hp 2623,
- use=hp2622,
+hp2623|hp2623a|hp 2623,
+ use=hp2622,
-hp2624b-p|hp2624b-4p-p|hewlett packard 2624 B with printer,
- use=hp+printer, use=hp2624,
+hp2624b-p|hp2624b-4p-p|hewlett packard 2624 B with printer,
+ use=hp+printer, use=hp2624,
# The hewlett packard B can have an optional extra 6 pages of memory.
-hp2624-10p|hp2624a-10p|hp2624b-10p|hewlett packard 2624 B w/ 10 pages of memory,
- lm#240, use=hp2624,
+hp2624-10p|hp2624a-10p|hp2624b-10p|hewlett packard 2624 B w/ 10 pages of memory,
+ lm#240, use=hp2624,
-hp2624b-10p-p|hewlett packard 2624 B w/ extra memory & printer,
- lm#240, use=hp2624b-p,
+hp2624b-10p-p|hewlett packard 2624 B w/ extra memory & printer,
+ lm#240, use=hp2624b-p,
# Color manipulations for HP terminals
-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,
- op=\E&v0S, scp=\E&v%p1%dS,
+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,
+ op=\E&v0S, scp=\E&v%p1%dS,
# <is2> sets the screen to be 80 columns wide
-hp2397a|hp2397|hewlett packard 2397A color terminal,
- is2=\E&w6f80X, use=memhp, use=hp+labels, use=hp+color,
+hp2397a|hp2397|hewlett packard 2397A color terminal,
+ is2=\E&w6f80X, use=memhp, use=hp+labels, use=hp+color,
-# HP 700/44 Setup parameters:
+# HP 700/44 Setup parameters:
# Terminal Mode HP-PCterm
# Inhibit Auto Wrap NO
# Status Line Host Writable
@@ -4678,209 +5839,209 @@ hp2397a|hp2397|hewlett packard 2397A color terminal,
# 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,
- 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,
- 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,
- 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~,
- 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[1~, knp=\E[6~,
- kpp=\E[5~, rmam=\E[?7l,
- rmsc=\E[>11l\EP1**x0/11;1/13\E[m\E\\, rmso=\E[m,
- rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
- smsc=\E[>11h\EPO**x0/65;1/67\E\\$<250>, smso=\E[7m,
- smul=\E[4m, xoffc=g, xonc=e,
+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,
+ 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,
+ 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,
+ 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~,
+ 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[1~, knp=\E[6~,
+ kpp=\E[5~, rmam=\E[?7l,
+ rmsc=\E[>11l\EP1**x0/11;1/13\E[m\E\\, rmso=\E[m,
+ rmul=\E[m, sgr0=\E[m, smam=\E[?7h,
+ smsc=\E[>11h\EPO**x0/65;1/67\E\\$<250>, smso=\E[7m,
+ smul=\E[4m, xoffc=g, xonc=e,
#
# (hp2392: copied <rmir> here from hpex -- esr)
-hp2392|239x series,
- cols#80,
- cbt=\Ei, cup=\E&a%p1%dy%p2%dC, 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=\Eh, kind=\EU, knp=\Eu, kpp=\Ev, kri=\EV,
- rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD, vpa=\E&a%p1%dY,
- use=hpsub,
-
-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,
- 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,
- 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,
+hp2392|239x series,
+ cols#80,
+ cbt=\Ei, cup=\E&a%p1%dy%p2%dC, 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=\Eh, kind=\EU, knp=\Eu, kpp=\Ev, kri=\EV,
+ rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD, vpa=\E&a%p1%dY,
+ use=hpsub,
+
+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,
+ 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,
+ 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,
# hpex:
# May be used for most 24 x 80 hp terminals,
-# 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,
+# 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,
# 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,
- smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub,
+hpex|hp extended capabilites,
+ cr=^M, cud1=^J, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=^J, kbs=^H,
+ kcub1=^H, kcud1=^J, nel=^M^J, rmir=\ER, rmul=\E&d@, smir=\EQ,
+ smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub,
# 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,
- 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,
- kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
- ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
- kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ,
- kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET,
- krmir=\ER, ktbc=\E3, meml=\El, memu=\Em,
- pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
- pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
- 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,
+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,
+ 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,
+ kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
+ ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
+ kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ,
+ kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET,
+ krmir=\ER, ktbc=\E3, meml=\El, memu=\Em,
+ pfkey=\E&f%p1%dk%p2%l%dL%p2%s,
+ pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s,
+ 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,
# HP 236 console
# From: <ddavis@ic.berkeley.edu>
-hp236|hp236 internal terminal emulator,
- OTbs, am,
- cols#80, lines#24,
- clear=\EF, cnorm=\EDE, cub1=^H,
- cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\EDB,
- dch1=\EJ, dl1=\EH, el=\EK, ich1=\EI, il1=\EG, rmso=\ECI,
- sgr0=\ECI, smso=\EBI,
+hp236|hp236 internal terminal emulator,
+ OTbs, am,
+ cols#80, lines#24,
+ clear=\EF, cnorm=\EDE, cub1=^H,
+ cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\EDB,
+ dch1=\EJ, dl1=\EH, el=\EK, ich1=\EI, il1=\EG, rmso=\ECI,
+ sgr0=\ECI, smso=\EBI,
# This works on a hp300 console running Utah 4.3 BSD
# From: Craig Leres <leres@okeeffe.berkeley.edu>
-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,
- 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,
- 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,
- vpa=\E&a%p1%dY,
+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,
+ 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,
+ 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,
+ vpa=\E&a%p1%dY,
# From: Greg Couch <gregc@ernie.berkeley.edu>
-hp9837|hp98720|hp98721|HP 9000/300 workstations,
- OTbs, am, da, db, mir, xhp,
- cols#128, it#8, lines#46, lm#0,
- bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB,
- cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
- 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,
- 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@,
- sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S, smul=\E&dD,
- tbc=\E3, vpa=\E&a%p1%dY,
+hp9837|hp98720|hp98721|HP 9000/300 workstations,
+ OTbs, am, da, db, mir, xhp,
+ cols#128, it#8, lines#46, lm#0,
+ bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB,
+ cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP,
+ 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,
+ 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@,
+ sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S, smul=\E&dD,
+ tbc=\E3, vpa=\E&a%p1%dY,
# HP 9845 desktop computer from BRL
# (hp9845: removed unknown capability :gu: -- esr)
-hp9845|HP 9845,
- OTbs, am, da, db, eo, mir, xhp,
- cols#80, lines#21,
- OTbc=\ED, clear=\EH\EJ, cuf1=\EC, cup=\E&a%p2%2dc%p1%2dY,
- cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK,
- if=/usr/share/tabset/std, il1=\EL, rmir=\ER, rmso=\E&d@,
- smir=\EQ, smso=\E&dB,
+hp9845|HP 9845,
+ OTbs, am, da, db, eo, mir, xhp,
+ cols#80, lines#21,
+ OTbc=\ED, clear=\EH\EJ, cuf1=\EC, cup=\E&a%p2%2dc%p1%2dY,
+ cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK,
+ if=/usr/share/tabset/std, il1=\EL, rmir=\ER, rmso=\E&d@,
+ smir=\EQ, smso=\E&dB,
# From: Charles A. Finnell of MITRE <finnell@mitre.org>, developed 07SEP90
# (hp98550: replaced /usr/share/tabset/9837 with std because <it#8>,<hts=\E1>;
# added empty <acsc> to avoid warnings re <smacs>/<rmacs> --esr)
-hp98550|hp98550a|HP 9000 Series 300 color console,
- 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,
- 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,
- kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
- kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
- khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF,
- knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, rev=\E&dJ,
- rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@,
- sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smso=\E&dJ,
- smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+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,
+ 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,
+ kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep,
+ kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
+ khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF,
+ knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, rev=\E&dJ,
+ rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@,
+ sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smso=\E&dJ,
+ smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
# From: Victor Duchovni <vic@fine.princeton.edu>
# (hp700-wy: removed obsolete ":nl=^J:";
# replaced /usr/share/tabset/hp700-wy with std because <it#8>,<hts=\E1> -- esr)
-hp700-wy|HP700/41 emulating wyse30,
- OTbs, am, bw, mir, msgr,
- cols#80, it#8, lines#24, xmc#1,
- cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^V, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- 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,
- 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/>,
- sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>,
- smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c,
-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,
- cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA,
- dch1=\EP, dim=\E&dH, dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I,
- hts=\E1, il1=\EL, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED,
- kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
- ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
- kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ,
- kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET,
- krmir=\ER, ktbc=\E3, rev=\E&dB, ri=\ET, rmacs=^O, rmir=\ER,
- rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, rmul=\E&d@,
- sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB,
- smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
-
-bobcat|sbobcat|HP 9000 model 300 console,
- am, da, db, mir, xhp,
- cols#128, it#8, lines#47, xmc#0,
- cbt=\Ei, clear=\EH\EJ, cr=^M, 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,
- 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,
- lines#94, use=gator,
-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,
- 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,
- 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,
- cols#128, lines#47, use=vt52,
-gator-52t|HP 9000 model 237 emulating extra-tall VT52,
- lines#94, use=gator-52,
+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,
+ 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,
+ 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/>,
+ sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>,
+ smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c,
+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,
+ cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA,
+ dch1=\EP, dim=\E&dH, dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I,
+ hts=\E1, il1=\EL, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED,
+ kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM,
+ ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et,
+ kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ,
+ kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET,
+ krmir=\ER, ktbc=\E3, rev=\E&dB, ri=\ET, rmacs=^O, rmir=\ER,
+ rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, rmul=\E&d@,
+ sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB,
+ smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY,
+
+bobcat|sbobcat|HP 9000 model 300 console,
+ am, da, db, mir, xhp,
+ cols#128, it#8, lines#47, xmc#0,
+ cbt=\Ei, clear=\EH\EJ, cr=^M, 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,
+ 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,
+ lines#94, use=gator,
+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,
+ 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,
+ 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,
+ cols#128, lines#47, use=vt52,
+gator-52t|HP 9000 model 237 emulating extra-tall VT52,
+ lines#94, use=gator-52,
#### Honeywell-Bull
#
@@ -4891,18 +6052,18 @@ gator-52t|HP 9000 model 237 emulating extra-tall VT52,
# control characters and it has standout/underline glitch. Most programs
# do not like these features/bugs. Visual bell is realized by flashing the
# "keyboard locked" LED.
-dku7003-dumb|Honeywell Bull DKU 7003 dumb mode,
- cols#80, lines#25,
- clear=^]^_, cr=^M, 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,
-dku7003|Honeywell Bull DKU 7003 all features described,
- msgr,
- xmc#1,
- blink=\E[5m, bold=\E[7m, dim=\E[2m, rev=\E[7m, rmso=\E[m,
- rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
- use=dku7003-dumb,
+dku7003-dumb|Honeywell Bull DKU 7003 dumb mode,
+ cols#80, lines#25,
+ clear=^]^_, cr=^M, 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,
+dku7003|Honeywell Bull DKU 7003 all features described,
+ msgr,
+ xmc#1,
+ blink=\E[5m, bold=\E[7m, dim=\E[2m, rev=\E[7m, rmso=\E[m,
+ rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+ use=dku7003-dumb,
#### Lear-Siegler (adm)
#
@@ -4911,31 +6072,31 @@ dku7003|Honeywell Bull DKU 7003 all features described,
# emulations (usually their stupidest, and usually labeled adm3, though
# these `adm3' emulations normally have adm3a+ capabilities).
#
-# WARNING: Some early ADM terminals (including the ADM3 and ADM5) had a
+# WARNING: Some early ADM terminals (including the ADM3 and ADM5) had a
# `diagnostic feature' that sending them a ^G while pin 22 (`Ring Indicator')
# was being held to ground would trigger a send of the top line on the screen.
# A quick fix might be to drop back to a cheesy 4-wire cable with pin 22
# hanging in the air. (Thanks to Eric Fischer, <eric@fudge.uchicago.edu>,
# for clearing up this point.)
-adm1a|adm1|lsi adm1a,
- am,
- cols#80, lines#24,
- bel=^G, clear=\E;$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^,
- ind=^J,
-adm2|lsi adm2,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dl1=\ER, ed=\EY, el=\ET, home=^^, ich1=\EQ, il1=\EE, ind=^J,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
+adm1a|adm1|lsi adm1a,
+ am,
+ cols#80, lines#24,
+ bel=^G, clear=\E;$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^,
+ ind=^J,
+adm2|lsi adm2,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+ dl1=\ER, ed=\EY, el=\ET, home=^^, ich1=\EQ, il1=\EE, ind=^J,
+ kcub1=^H, kcud1=^J, 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,
+adm3|lsi adm3,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, ind=^J,
# The following ADM-3A switch settings are assumed for normal operation:
# SPACE U/L_DISP CLR_SCRN 24_LINE
# CUR_CTL LC_EN AUTO_NL FDX
@@ -4948,58 +6109,58 @@ adm3|lsi adm3,
# socket, you may be out of luck.
#
# (adm3a: some capabilities merged in from BRl entry -- esr)
-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,
- kcuu1=^K, rs2=^N,
-adm3a+|adm3a plus,
- kbs=^H, use=adm3a,
+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,
+ kcuu1=^K, rs2=^N,
+adm3a+|adm3a plus,
+ kbs=^H, use=adm3a,
# (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr)
-adm5|lsi adm5,
- xmc#1,
- bel=^G, cr=^M, cud1=^J, ed=\EY, el=\ET, kbs=^H, khome=^^,
- rmso=\EG, smso=\EG, use=adm3a+,
+adm5|lsi adm5,
+ xmc#1,
+ bel=^G, cr=^M, cud1=^J, 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
# disabled ones. They may well work but not have been documented or
# expressed in the using entry. We'd like to cook up an <sgr> but the
# <rmacs>/<smacs> sequences of the using entries vary too much.
-adm+sgr|adm style highlight capabilities,
- invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, sgr0=\EG0,
- smso=\EG4, smul=\EG8,
+adm+sgr|adm style highlight capabilities,
+ invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, sgr0=\EG0,
+ smso=\EG4, smul=\EG8,
# LSI ADM-11 from George William Hartwig, Jr. <geo@BRL-TGR.ARPA> via BRL
# Status line additions from Stephen J. Muir <stephen%comp.lancs.ac.uk@ucl-cs>
# <khome> from <stephen%comp.lancs.ac.uk@ucl-cs.arpa>. <clear> could also
# be ^Z, according to his entry.
# (adm11: <smul>=\EG4 was obviously erroneous because it also said
# <rev>=\EG4. Looking at other ADMs confirms this -- esr)
-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,
- cuu1=^K, dsl=\Eh, ed=\EY, el=\ET, fsl=\E(\r, home=^^, ht=^I,
- kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r,
- kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
- kf7=^AF\r, kf8=^AG\r, khome=^^, nel=^M^J, tsl=\EF\E),
- use=adm+sgr,
+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,
+ cuu1=^K, dsl=\Eh, ed=\EY, el=\ET, fsl=\E(\r, home=^^, ht=^I,
+ kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r,
+ kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
+ kf7=^AF\r, kf8=^AG\r, khome=^^, nel=^M^J, tsl=\EF\E),
+ use=adm+sgr,
# From: Andrew Scott Beals <bandy@lll-crg.ARPA>
# Corrected by Olaf Siebert <rhialto@polder.ubc.kun.nl>, 11 May 1995
# Supervisor mode info by Ari Wuolle, <awuolle@delta.hut.fi>, 27 Aug 1996
# (adm12: removed obsolete ":kn:ma=j^Jk^P^K^Pl ^R^L^L :". This formerly had
# <is2>=\Eq but that looked wrong; this <is2> is from Dave Yost <esquire!yost>
-# via BRL. That entry asserted <xmc#1>, but I've left that out because
+# via BRL. That entry asserted <xmc#1>, but I've left that out because
# neither earlier nor later ADMSs have it -- esr)
#
# You will need to get into the supervisor setup before you can set
# baudrate etc. for your ADM-12+. Press Shift-Ctrl-Setup and you should
# see a lot more setup options.
-#
+#
# While in supervisor setup you can also use following codes:
-#
+#
# Ctrl-P Personality character selections (configure for example what
# arrow keys send, if I recall correctly)
# Ctrl-T tabs 1-80 use left&right to move and up to set and
@@ -5012,15 +6173,15 @@ adm11|LSI ADM-11,
# Ctrl-S Save both setup and functions keys. Takes from 6 to 10 seconds.
# Ctrl-R Reads both setup and functions keys from NVM.
# Shift-Ctrl-X Unlock keyboard and cancel received X-OFF status
-#
+#
# ADM-12+ supports hardware handshaking, but it is DTR/CTS as opposed to
# RTS/CTS used nowadays with virtually every modem and computer. 19200
# bps works fine with hardware flow control.
-#
+#
# The following null-modem cable should fix this and enable you to use
# RTS/CTS handshaking (which Linux supports, use CRTSCTS setting). Also
# set ADM-12+ for DTR handshaking from supervisor setup.
-#
+#
# PC Serial ADM-12+
# -------- -------
# 2 - 3
@@ -5031,46 +6192,46 @@ adm11|LSI ADM-11,
# 7 - 7
# 20 - 6,8
#
-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,
- 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,
- 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,
+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,
+ 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,
+ 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,
# (adm20: removed obsolete ":kn#7:" -- esr)
-adm20|lear siegler adm20,
- OTbs, am,
- cols#80, it#8, lines#24,
- bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cuf1=^L,
- cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW,
- 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,
+adm20|lear siegler adm20,
+ OTbs, am,
+ cols#80, it#8, lines#24,
+ bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cuf1=^L,
+ cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW,
+ 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,
# (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,
- 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,
- 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),
+adm22|lsi adm22,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+ 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,
+ 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),
# ADM 31 DIP Switches
#
# This information comes from two versions of the manual for the
@@ -5091,7 +6252,7 @@ adm22|lsi adm22,
# + +
# +-+ +-+
# + +
-# + S5 S6 S7 +
+# + S5 S6 S7 +
# + == == == +
# +----------------------------------------------+
# front of case (keyboard)
@@ -5214,58 +6375,58 @@ adm22|lsi adm22,
# position 6, bank @c11, 25% from back end of the circuit board. Should be
# OFF. If there is no such switch, you have an old adm31 and must use oadm31.
# (adm31: removed obsolete ":ma=j^Jk^P^K^Pl ^R^L^L :" -- esr)
-adm31|lsi adm31 with sw6 set for underline mode,
- OTbs, am, mir,
- cols#80, lines#24,
- bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- 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,
- 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,
-adm31-old|o31|old adm31,
- rmul@, smso=\EG4, smul@, use=adm31,
+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,
+ 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,
+ 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,
+adm31-old|o31|old adm31,
+ rmul@, smso=\EG4, smul@, use=adm31,
# LSI ADM-36 from Col. George L. Sicherman <gloria!colonel> via BRL
-adm36|LSI ADM36,
- OTbs, OTpt,
- OTkn#4,
- if=/usr/share/tabset/vt100,
- is2=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l,
- use=vt100,
+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,
# (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,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
- cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ht=^I,
- il1=\EE$<270>, ind=^J, invis@, ip=$<6*>, kcub1=^H, kcud1=^J,
- kcuf1=^L, kcuu1=^K, khome=^^, pad=\177, rmir=\Er, rmul@,
- smir=\Eq, smul@, use=adm+sgr,
-# The following termcap for the Lear Siegler ADM-42 leaves the
-# "system line" at the bottom of the screen blank (for those who
+adm42|lsi adm42,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, cbt=\EI, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+ cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ht=^I,
+ il1=\EE$<270>, ind=^J, invis@, ip=$<6*>, kcub1=^H, kcud1=^J,
+ kcuf1=^L, kcuu1=^K, khome=^^, pad=\177, rmir=\Er, rmul@,
+ smir=\Eq, smul@, use=adm+sgr,
+# The following termcap for the Lear Siegler ADM-42 leaves the
+# "system line" at the bottom of the screen blank (for those who
# find it distracting otherwise)
-adm42-ns|lsi adm-42 with no system line,
- cbt=\EI\EF \011, clear=\E;\EF \011,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<6>\EF \011,
- dch1=\EW\EF \011, dl1=\ER\EF \011, ed=\EY\EF \011,
- el=\ET\EF \011, il1=\EE\EF \011, rmir=\Er\EF \011,
- smir=\Eq\EF \011, use=adm42,
+adm42-ns|lsi adm-42 with no system line,
+ cbt=\EI\EF \011, clear=\E;\EF \011,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<6>\EF \011,
+ dch1=\EW\EF \011, dl1=\ER\EF \011, ed=\EY\EF \011,
+ el=\ET\EF \011, il1=\EE\EF \011, rmir=\Er\EF \011,
+ smir=\Eq\EF \011, use=adm42,
# ADM 1178 terminal -- rather like an ADM-42. Manual is dated March 1 1985.
# The insert mode of this terminal is commented out because it's broken for our
# purposes in that it will shift the position of every character on the page,
# not just the cursor line!
# From: Michael Driscoll <fenris@lightspeed.net> 10 July 1996
-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,
- 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,
- sgr0=\E), smso=\EG4, smul=\EG1,
+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,
+ 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,
+ sgr0=\E), smso=\EG4, smul=\EG1,
#### Prime
#
@@ -5279,27 +6440,27 @@ adm1178|1178|lsi adm1178,
#
# Standout mode is dim reverse-video.
-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,
- 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,
- rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m,
- sgr0=\E[m,
- smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12l\E[1Q,
- smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m,
-pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode,
- cols#132,
- cup=\E[%i%p1%d;%p2%dH, use=pt100,
-pt250|Prime PT250,
- rmso@, smso@, use=pt100,
-pt250w|Prime PT250 in 132-column mode,
- rmso@, smso@, use=pt100w,
+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,
+ 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,
+ rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m,
+ sgr0=\E[m,
+ smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12l\E[1Q,
+ smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m,
+pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode,
+ cols#132,
+ cup=\E[%i%p1%d;%p2%dH, use=pt100,
+pt250|Prime PT250,
+ rmso@, smso@, use=pt100,
+pt250w|Prime PT250 in 132-column mode,
+ rmso@, smso@, use=pt100w,
#### Qume (qvt)
#
@@ -5335,91 +6496,91 @@ pt250w|Prime PT250 in 132-column mode,
# If you inherit a Qume without docs, try Ctrl-Shift-Setup to enter its
# setup mode. Shift-s should be a configuration save to NVRAM.
-qvt101|qvt108|qume qvt 101 and QVT 108,
- xmc#1, use=qvt101+,
+qvt101|qvt108|qume qvt 101 and QVT 108,
+ xmc#1, use=qvt101+,
# This used to have <cvvis=\E.2> but no <cnorm> or <civis>. The BSD termcap
-# file had <cvvis=\EM4 \200\200\200>. I've done the safe thing and yanked
+# file had <cvvis=\EM4 \200\200\200>. I've done the safe thing and yanked
# both. The <rev> is from BSD, which also claimed bold=\E( and dim=\E).
# What seems to be going on here is that this entry was designed so that
# the normal highlight is bold and standout is dim plus something else
-# (reverse-video maybe? But then, are there two <rev> sequences?)
-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,
- 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, 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@, rmso=\E(,
- smso=\E0P\E), tbc=\E3, tsl=\Eg\Ef, use=adm+sgr,
-qvt102|qume qvt 102,
- cnorm=\E., use=qvt101,
+# (reverse-video maybe? But then, are there two <rev> sequences?)
+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,
+ 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, 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@, rmso=\E(,
+ smso=\E0P\E), tbc=\E3, tsl=\Eg\Ef, use=adm+sgr,
+qvt102|qume qvt 102,
+ cnorm=\E., use=qvt101,
# (qvt103: added <rmam>/<smam> based on init string -- esr)
-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,
- 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,
- 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>,
- 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,
- cols#132, lines#24,
- rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt103,
-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,
- 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,
- kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
- kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
- mc4=\EA, mc5=\E@, ri=\EJ, rmir=\Er, smir=\Eq, smul=\EG8,
- tbc=\E3, tsl=\Eg\Ef, use=adm+sgr,
-qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines,
- lines#25, use=qvt119+,
-qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode,
- cols#132,
- is2=\EDF\EC\EG0\Er\E(\E%\EX\En4, use=qvt119+,
-qvt119+-25-w|qvt119p-25-w|qvt119-25-w|QVT 119 and 119 PLUS 132 by 25,
- lines#25, use=qvt119+,
-qvt203|qvt203+|qume qvt 203 Plus,
- dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>,
- ip=$<7>, kf0=\E[29~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~,
- kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
- kf9=\E[28~, rmir=\E[4l, smir=\E[4h, use=qvt103,
-qvt203-w|qvt203-w-am|qume qvt 203 PLUS in 132 cols (w/advanced video),
- cols#132, lines#24,
- rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt203,
+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,
+ 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,
+ 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>,
+ 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,
+ cols#132, lines#24,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt103,
+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,
+ 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,
+ kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r,
+ kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+ mc4=\EA, mc5=\E@, ri=\EJ, rmir=\Er, smir=\Eq, smul=\EG8,
+ tbc=\E3, tsl=\Eg\Ef, use=adm+sgr,
+qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines,
+ lines#25, use=qvt119+,
+qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode,
+ cols#132,
+ is2=\EDF\EC\EG0\Er\E(\E%\EX\En4, use=qvt119+,
+qvt119+-25-w|qvt119p-25-w|qvt119-25-w|QVT 119 and 119 PLUS 132 by 25,
+ lines#25, use=qvt119+,
+qvt203|qvt203+|qume qvt 203 Plus,
+ dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>,
+ ip=$<7>, kf0=\E[29~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~,
+ kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~,
+ kf9=\E[28~, rmir=\E[4l, smir=\E[4h, use=qvt103,
+qvt203-w|qvt203-w-am|qume qvt 203 PLUS in 132 cols (w/advanced video),
+ cols#132, lines#24,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt203,
#
# Since a command is present for enabling 25 data lines,
# a specific terminfo entry may be generated for the 203.
# If one is desired for the QVT 119 PLUS then 25 lines must
# be selected in the status line (setup line 9).
#
-qvt203-25|QVT 203 PLUS with 25 by 80 column mode,
- cols#80, lines#25,
- is2=\E[=40h\E[?3l, use=qvt203,
-qvt203-25-w|QVT 203 PLUS with 25 by 132 columns,
- cols#132, lines#25,
- rs2=\E[?3h\E[=40h, use=qvt203,
+qvt203-25|QVT 203 PLUS with 25 by 80 column mode,
+ cols#80, lines#25,
+ is2=\E[=40h\E[?3l, use=qvt203,
+qvt203-25-w|QVT 203 PLUS with 25 by 132 columns,
+ cols#132, lines#25,
+ rs2=\E[?3h\E[=40h, use=qvt203,
#### Televideo (tvi)
#
@@ -5431,19 +6592,17 @@ qvt203-25-w|QVT 203 PLUS with 25 by 132 columns,
# Fax: (408)-954-0623
#
#
-# There are some tvi terminals that require incredible amounts of padding and
-# some that don't. I'm assuming tvi912 and tvi920 are the old slow ones, and
-# tvi912b, tvi912c, tvi920b, tvi920c are the new ones that don't need padding.
+# These require incredible amounts of padding.
#
# All of these terminals (912 to 970 and the tvipt) are discontinued. Newer
# Televideo terminals are ANSI and PC-ANSI compatible.
-tvi803|televideo 803,
- clear=\E*$<10>, use=tvi950,
+tvi803|televideo 803,
+ clear=\E*$<10>, use=tvi950,
# Vanilla tvi910 -- W. Gish <cswarren@violet> 10/29/86
# Switch settings are:
-#
+#
# S1 1 2 3 4
# D D D D 9600
# D D D U 50
@@ -5461,7 +6620,7 @@ tvi803|televideo 803,
# U U D U 7200
# U U U D 9600
# U U U U 19200
-#
+#
# S1 5 6 7 8
# U D X D 7N1 (data bits, parity, stop bits) (X means ignored)
# U D X U 7N2
@@ -5473,67 +6632,67 @@ tvi803|televideo 803,
# D D X U 8N2
# D U D D 8O1
# D U U U 8E2
-#
+#
# S1 9 Autowrap
# U on
# D off
-#
+#
# S1 10 CR/LF
# U do CR/LF when CR received
# D do CR when CR received
-#
+#
# S2 1 Mode
# U block
# D conversational
-#
+#
# S2 2 Duplex
# U half
# D full
-#
+#
# S2 3 Hertz
# U 50
# D 60
-#
+#
# S2 4 Edit mode
# U local
# D duplex
-#
+#
# S2 5 Cursor type
# U underline
# D block
-#
+#
# S2 6 Cursor down key
# U send ^J
# D send ^V
-#
+#
# S2 7 Screen colour
# U green on black
# D black on green
-#
+#
# S2 8 DSR status (pin 6)
# U disconnected
# D connected
-#
+#
# S2 9 DCD status (pin 8)
# U disconnected
# D duplex
-#
+#
# S2 10 DTR status (pin 20)
# U disconnected
# D duplex
# (tvi910: removed obsolete ":ma=^Kk^Ll^R^L:"; added <khome>, <cub1>, <cud1>,
# <ind>, <hpa>, <vpa>, <am>, <msgr> from SCO entry -- esr)
-tvi910|televideo model 910,
- OTbs, am, msgr,
- cols#80, it#8, lines#24, xmc#1,
- bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET,
- 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,
- 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,
+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,
+ 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,
+ 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,
# From: Alan R. Rogers <rogers%albany@csnet-relay>
# as subsequently hacked over by someone at SCO
# (tvi910+: removed obsolete ":ma=^K^P^L :" -- esr)
@@ -5550,7 +6709,7 @@ tvi910|televideo model 910,
# U D X D 7N1 U D X U 7N2 U U D D 7O1 U U D U 7O2
# U U U D 7E1 U U U U 7E2 D D X D 8N1 D D X U 8N2
# D U D D 8O1 D U U U 8E2
-#
+#
# S1 9 Autowrap (U = on, D = off)
# S1 10 CR/LF (U = CR/LF on CR received, D = CR on CR received)
# S2 1 Mode (U = block, D = conversational)
@@ -5564,42 +6723,152 @@ tvi910|televideo model 910,
# S2 9 DCD status (pin 8) (U = disconnected, D = connected)
# S2 10 DTR status (pin 20) (U = disconnected, D = connected)
#
-tvi910+|televideo 910+,
- dch1=\EW, dl1=\ER$<33*>, home=^^, ich1=\EQ, il1=\EE$<33*>,
- kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r,
- kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r,
- ll=\E=7\s, use=tvi910,
+tvi910+|televideo 910+,
+ dch1=\EW, dl1=\ER$<33*>, home=^^, ich1=\EQ, il1=\EE$<33*>,
+ kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r,
+ kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r,
+ ll=\E=7\s, use=tvi910,
# (tvi912: removed obsolete ":ma=^K^P^L :", added <flash> and
# <khome> from BRL entry -- esr)
-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,
- 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,
- 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,
- tbc=\E3,
-# the 912 has a <funct> key that's like shift: <funct>8 xmits "^A8\r".
-# The 920 has this plus real function keys that xmit different things.
-# Terminfo makes you use the funct key on the 912 but the real keys on the 920.
-tvi912c|tvi912b|new televideo 912,
- dl1=\ER$<5*>, il1=\EE$<5*>, use=tvi912,
-# set to page 1 when entering curses application (\E-17 )
-# reset to page 0 when exiting curses application (\E-07 )
-tvi912-2p|tvi920-2p|tvi-2p|televideo w/2 pages,
- rmcup=\E-07\s, smcup=\E-17\s, use=tvi912,
-# We got some new tvi912c terminals that act really weird on the regular
-# termcap, so one of our gurus worked this up. Seems that cursor
+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,
+ 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,
+ 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,
+ tbc=\E3,
+# We got some new tvi912c terminals that act really weird on the regular
+# termcap, so one of our gurus worked this up. Seems that cursor
# addressing is broken.
-tvi912cc|tvi912 at cowell college,
- cup@, use=tvi912c,
-
-# Here are the switch settings for the tvi920c:
+tvi912cc|tvi912 at cowell college,
+ cup@, use=tvi912c,
+
+# tvi{912,920}[bc] - TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C
+# From: Benjamin C. W. Sittler
+#
+# Someone has put a scanned copy of the manual online at:
+# http://vt100.net/televideo/912b-om/
+#
+# These terminals were produced ca. 1979, and had a 12" monochrome
+# screen, supported 75-9600 baud (no handshaking), monochrome, 7-bit
+# ASCII, and were generally similar to adm3a but with attributes
+# (including some with magic cookies), fancy half-duplex mode, and
+# different bugs.
+#
+# Some operations reqire truly incredible amounts of padding. The
+# insert_line (<il1>) and delete_line (<dl1>) operations in particular
+# are so slow as to be nearly unusable.
+#
+# There may or may not have been a separate, earlier series of 912/920
+# terminals (without the "B" and "C" suffix); I have never seen one,
+# and the manual only describes the "B" and "C" series. The 912 and 920
+# are quite distinct from the 914 and 924, which were much nicer non-
+# magic-cookie terminals similar to the 950.
+#
+# This is a new description for the following TeleVideo terminals,
+# distinguished chiefly by their keyboards:
+#
+# TVI-912B - very odd layout, no function keys (84 keys)
+# TVI-920B - typewriter layout, no function keys (103 keys)
+# TVI-912C - very odd layout, function keys F1-F11 (82 keys)
+# TVI-920C - typewriter layout, function keys F1-F11 (101 keys)
+#
+# To choose a setting for the TERM variable, start with the model:
+#
+# Model || base name
+# ----------||-----------
+# TVI-912B || tvi912b
+# TVI-912C || tvi912c
+# TVI-920B || tvi920b
+# TVI-920C || tvi920c
+#
+# Then add a suffix from the following table describing installed options
+# and how you'd like to use the terminal:
+#
+# Use Video | Second | Visual | Magic | Page || feature
+# Attributes | Page | Bell | Cookies | Print || suffix
+# ------------|--------|--------|---------|-------||---------
+# No | No | N/A | N/A | No || -unk
+# No | No | N/A | N/A | Yes || -p
+# No | Yes | No | N/A | No || -2p-unk
+# No | Yes | No | N/A | Yes || -2p-p
+# No | Yes | Yes | N/A | No || -vb-unk
+# No | Yes | Yes | N/A | Yes || -vb-p
+# Yes | No | N/A | No | N/A ||
+# Yes | No | N/A | Yes | N/A || -mc
+# Yes | Yes | No | No | N/A || -2p
+# Yes | Yes | No | Yes | N/A || -2p-mc
+# Yes | Yes | Yes | No | N/A || -vb
+# Yes | Yes | Yes | Yes | N/A || -vb-mc
+#
+# So e.g. a model 920 C with second page memory option, visual bell
+# and no magic cookies would be tvi920c-vb; a model 912 B without the
+# second page memory option and using magic cookies would be
+# tvi912b-mc
+#
+# PADDING
+#
+# At 9600 baud, the terminal is prone to overflow its input buffer
+# during complex operations (insert/delete
+# character/line/screen/page), and it does not signal this over the
+# RS232 cable. The typical symptom of an overrun is that the terminal
+# starts beeping, and output becomes garbled.
+#
+# The padding delays in this terminfo were derived using tack(1)
+# running on a Linux box connected to a TVI-920C with a later-model
+# (A49C1-style) ROM running at 9600 baud, so your mileage may
+# vary. The numbers below seem to give the terminal enough time so
+# that it doesn't overflow its input buffer and start losing
+# characters.
+#
+# KEYS
+#
+# If you want to use the FUNCT key on a tvi912[bc], use the
+# corresponding tvi920[bc] terminfo with FUNCT + ... equivalents from
+# the following table (these also work on the 920 series):
+#
+# Unshifted Function Keys:
+#
+# Key | capname|| Equivalent
+# -----|--------||------------
+# F1 | <kf1> || FUNCT + @
+# F2 | <kf2> || FUNCT + A
+# F3 | <kf3> || FUNCT + B
+# F4 | <kf4> || FUNCT + C
+# F5 | <kf5> || FUNCT + D
+# F6 | <kf6> || FUNCT + E
+# F7 | <kf7> || FUNCT + F
+# F8 | <kf8> || FUNCT + G
+# F9 | <kf9> || FUNCT + H
+# F10 | <kf10> || FUNCT + I
+# F11 | <kf11> || FUNCT + J
+#
+# Shifted Function Keys:
+#
+# SHIFT + Key | capname|| Equivalent
+# -------------|--------||------------
+# SHIFT + F1 | <kf12> || FUNCT + `
+# SHIFT + F2 | <kf13> || FUNCT + a
+# SHIFT + F3 | <kf14> || FUNCT + b
+# SHIFT + F4 | <kf15> || FUNCT + c
+# SHIFT + F5 | <kf16> || FUNCT + d
+# SHIFT + F6 | <kf17> || FUNCT + e
+# SHIFT + F7 | <kf18> || FUNCT + f
+# SHIFT + F8 | <kf19> || FUNCT + g
+# SHIFT + F9 | <kf20> || FUNCT + h
+# SHIFT + F10 | <kf21> || FUNCT + i
+# SHIFT + F11 | <kf22> || FUNCT + j
+#
+# PORTS AND SWITCH SETTINGS
+#
+# Here are the switch settings for the TVI-912B/TVI-920B and
+# TVI-912C/TVI-920C:
#
# S1 (Line), and S3 (Printer) baud rates -- put one, and only one, switch down:
# 2: 9600 3: 4800 4: 2400 5: 1200
@@ -5619,7 +6888,7 @@ tvi912cc|tvi912 at cowell college,
# 9: Even parity Odd parity
# 10: Steady cursor Blinking cursor
# (On Rev E or lower, use W25 instead of switch 10.)
-#
+#
# S5 UART/Terminal options:
# Open Closed
# 1: P3-6 Not connected DSR received on P3-6
@@ -5645,77 +6914,290 @@ tvi912cc|tvi912 at cowell college,
#
# S4/W31: Enables automatic LF upon receipt of CR from
# remote or keyboard.
-# S4/W32: Enables transmission of EOT at the end of Send. If not
+# S4/W32: Enables transmission of EOT at the end of Send. If not
# 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
+# S4/W34: Selects Page Print Mode as initial condition. If not
# installed, Extension Mode is selected.
#
-tvi920b|tvi920c|new televideo 920,
- dl1=\ER$<5*>, il1=\EE$<5*>, kf0=^AI\r, kf1=^A@\r,
- kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r,
- kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, use=tvi912,
+# NON-STANDARD CAPABILITIES
+#
+# Sending <u9> or <u7> returns a cursor position report in the format
+# YX\r, where Y and X are as in <cup>. This format is described in
+# <u8> and <u6>, but it's not clear how one should write an
+# appropriate scanf string, since we need to subtract %' ' from the
+# character after reading it. The <u9> capability is used by tack(1)
+# to synchronize during padding tests, and seems to work for that
+# purpose.
+#
+# This description also includes the obsolete termcap capabilities
+# has_hardware_tabs (<OTpt>) and backspaces_with_bs (<OTbs>).
+#
+# FEATURES NOT YET DESCRIBED IN THIS TERMINFO
+#
+# The FUNCT modifier actually works with every normal key by sending
+# ^AX\r, where X is the sequence normally sent by that key. This is a
+# sort of meta key not currently describable in terminfo.
+#
+# There are quite a few other keys (especially on the 920 models,) but
+# they are for the most part only useful in block mode.
+#
+# These terminals have lots of forms manipulation features, mainly
+# useful in block mode, including "clear X to nulls" (vs. "clear X to
+# spaces"; nulls are sentinels for "send X" operations); "send X"
+# operations for uploading all or part of the screen; and block-mode
+# editing keys (they don't send escape sequences, but manipulate video
+# memory directly). Block mode is used for local editing, and protect
+# mode (in conjunction with the "write protect" attribute,
+# a.k.a. half-intensity outside of protect mode) is used to control
+# which parts of the screen are edited/sent/printed (by <mc0>).
+#
+# There are at least two major families of ROM, "early" and
+# A49B1/A49C1; the major difference seems to be that the latter ROMs
+# support a few extra escape sequences for manipulating the off-screen
+# memory page, and for sending whole pages back to the host (mainly
+# useful in block mode.) The descriptions in this file don't use any
+# of those sequences: set cursor position including page (\E-PYX,
+# where P is \s for page 0 and ! for page 1 [actually only the LSB of
+# P is taken into account, so e.g. 0 and 1 work too,] and Y and X are
+# as in <cup>); read cursor position (\E/), which is analogous to <u9>
+# and returns PYX\r, where P is \s for page 0 or ! for page 1, and YX
+# are as in <cup>, and some "send page" features mainly useful for
+# forms manipulation.
+#
+# The keyboard enable (\E") and disable (\E#) sequences are unused,
+# except that a terminal reset (<is2>) enables the keyboard.
+#
+# Auto-flip mode (\Ev) is likely faster than the scrolling mode (\Ew)
+# enabled in <is2>, but auto-flip is very jarring so we don't use it.
+#
+# BUGS
+#
+# At least up to the A49B1 and A49C1 ROMs, there are no \Eb and \Ed
+# sequences (I infer that in some TeleVideo terminal they may invert
+# and uninvert the display) so the <flash> sequence given here is a
+# cheesy page-flip instead.
+#
+# The back_tab (<cbt>) sequence (\EI) doesn't work according to
+# tack(1), so it is not included in the descriptions below.
+#
+# It's not clear whether auto_left_margin (<bw>) flag should be set
+# for these terminals; tack says yes, so it is set here, but this
+# differs from other descriptions I've seen.
+#
+# Extension print mode (<mc5>) echoes all characters to the printer
+# port [in addition to displaying them] except for the page print mode
+# sequence (<mc4>); this is a slight violation of the terminfo
+# definition for <mc5> but I don't expect it to cause problems. We
+# reset to page print mode in <rs1> since it may have been enabled
+# accidentally.
+#
+# The descriptions with plus signs (+) are building blocks.
+
+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,
+ 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,
+ mc5=\E@, rs1=\Ek\010\Em\010\Eq\032, tbc=\E3, u6=%c%c\r,
+ u7=\E?, u8=%c%c\r, u9=\E?,
+
+# This isn't included in the basic capabilities because it is
+# typically unusable in combination with the full range of video
+# attributes, since the magic cookie attributes turn into ASCII
+# control characters, and the half-intensity ("protected") attribute
+# converts all affected characters to spaces.
+
+tvi912b+printer|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C page print support,
+ mc0=\EP,
+
+# This uses half-intensity mode (<dim>) for standout (<smso>), and
+# exposes no other attributes (half-intensity is the only attribute
+# that does not generate a magic cookie.)
+
+tvi912b+dim|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C half-intensity attribute support,
+ msgr,
+ dim=\E), rmso=\E(, sgr=\E%?%p1%p5%|%t)%e(%;, sgr0=\E(,
+ smso=\E),
+
+# Full magic-cookie attribute support, with half-intensity reverse
+# video for standout. Note that we add a space in the <dim> sequence
+# to give a consistent magic-cookie count. Also note that <sgr> uses
+# backspacing (in the TVI-supported order) to apply all requested
+# attributes with only a single magic cookie.
+
+tvi912b+mc|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C full magic-cookie attribute support,
+ 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%;%;,
+ sgr0=\E(\Ek\010\Em\010\Eq, smso=\E)\Ej, smul=\El,
+
+# This uses the second page memory option to save & restore screen
+# contents. If your terminal is missing the option, this description
+# should still work, but that has not been tested.
+
+tvi912b+2p|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option support,
+ flash=\EK$<100>\EK, rmcup=\032$<50>\EK\E=7\s,
+ smcup=\EK\032$<50>\E(\Ek\010\Em\010\Eq\032$<50>,
+
+# This simulates flashing by briefly toggling to the other page
+# (kludge!)
+
+tvi912b+vb|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option "visible bell" support,
+ bel=\EK$<100>\EK, use=tvi912b+2p,
+
+# Function keys (<kf12> .. <kf22> are shifted <kf1> .. <kf11>)
+
+tvi920b+fn|TeleVideo TVI-920B and TVI-920C function key support,
+ 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, kf6=^AE\r, kf7=^AF\r,
+ kf8=^AG\r, kf9=^AH\r,
+
+# Combinations of the basic building blocks
+
+tvi912b-2p-unk|tvi912c-2p-unk|tvi912b-unk-2p|tvi912c-unk-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes),
+ use=tvi912b+2p, use=tvi912b-unk,
+
+tvi912b-vb-unk|tvi912c-vb-unk|tvi912b-unk-vb|tvi912c-unk-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes),
+ use=tvi912b+vb, use=tvi912b-unk,
+
+tvi912b-p|tvi912c-p|TeleVideo TVI-912B or TVI-912C (no attributes; page print),
+ use=tvi912b+printer, use=tvi912b-unk,
+
+tvi912b-2p-p|tvi912c-2p-p|tvi912b-p-2p|tvi912c-p-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes; page print),
+ use=tvi912b+2p, use=tvi912b+printer, use=tvi912b-unk,
+
+tvi912b-vb-p|tvi912c-vb-p|tvi912b-p-vb|tvi912c-p-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes; page print),
+ use=tvi912b+vb, use=tvi912b+printer, use=tvi912b-unk,
+
+tvi912b-2p|tvi912c-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; half-intensity attribute),
+ use=tvi912b+2p, use=tvi912b+dim, use=tvi912b-unk,
+
+tvi912b-2p-mc|tvi912c-2p-mc|tvi912b-mc-2p|tvi912c-mc-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; magic cookies),
+ use=tvi912b+2p, use=tvi912b+mc, use=tvi912b-unk,
+
+tvi912b-vb|tvi912c-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; half-intensity attribute),
+ use=tvi912b+vb, use=tvi912b+dim, use=tvi912b-unk,
+
+tvi912b-vb-mc|tvi912c-vb-mc|tvi912b-mc-vb|tvi912c-mc-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; magic cookies),
+ use=tvi912b+vb, use=tvi912b+mc, use=tvi912b-unk,
+
+tvi912b|tvi912c|TeleVideo TVI-912B or TVI-912C (half-intensity attribute),
+ use=tvi912b+dim, use=tvi912b-unk,
+
+tvi912b-mc|tvi912c-mc|TeleVideo TVI-912B or TVI-912C (magic cookies),
+ use=tvi912b+mc, use=tvi912b-unk,
+
+tvi920b-unk|tvi920c-unk|TeleVideo TVI-920B or TVI-920C (no attributes),
+ use=tvi920b+fn, use=tvi912b-unk,
+
+tvi920b-2p-unk|tvi920c-2p-unk|tvi920b-unk-2p|tvi920c-unk-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes),
+ use=tvi920b+fn, use=tvi912b+2p, use=tvi912b-unk,
+
+tvi920b-vb-unk|tvi920c-vb-unk|tvi920b-unk-vb|tvi920c-unk-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes),
+ use=tvi920b+fn, use=tvi912b+vb, use=tvi912b-unk,
+
+tvi920b-p|tvi920c-p|TeleVideo TVI-920B or TVI-920C (no attributes; page print),
+ use=tvi920b+fn, use=tvi912b+printer, use=tvi912b-unk,
+
+tvi920b-2p-p|tvi920c-2p-p|tvi920b-p-2p|tvi920c-p-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes; page print),
+ use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+printer,
+ use=tvi912b-unk,
+
+tvi920b-vb-p|tvi920c-vb-p|tvi920b-p-vb|tvi920c-p-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes; page print),
+ use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+printer,
+ use=tvi912b-unk,
+
+tvi920b-2p|tvi920c-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; half-intensity attribute),
+ use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+dim,
+ use=tvi912b-unk,
+
+tvi920b-2p-mc|tvi920c-2p-mc|tvi920b-mc-2p|tvi920c-mc-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; magic cookies),
+ use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+mc,
+ use=tvi912b-unk,
+
+tvi920b-vb|tvi920c-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; half-intensity attribute),
+ use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+dim,
+ use=tvi912b-unk,
+
+tvi920b-vb-mc|tvi920c-vb-mc|tvi920b-mc-vb|tvi920c-mc-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; magic cookies),
+ use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+mc,
+ use=tvi912b-unk,
+
+tvi920b|tvi920c|TeleVideo TVI-920B or TVI-920C (half-intensity attribute),
+ use=tvi920b+fn, use=tvi912b+dim, use=tvi912b-unk,
+
+tvi920b-mc|tvi920c-mc|TeleVideo TVI-920B or TVI-920C (magic cookies),
+ use=tvi920b+fn, use=tvi912b+mc, use=tvi912b-unk,
# Televideo 921 and variants
# From: Tim Theisen <tim@cs.wisc.edu> 22 Sept 1995
# (tvi921: removed :ko=bt: before translation, I see no backtab cap;
# also added empty <acsc> to suppress tic warning -- esr)
-tvi921|televideo model 921 with sysline same as page & real vi function,
- OTbs, OTpt, am, hs, xenl, xhp,
- cols#80, lines#24, xmc#0,
- acsc=, clear=^Z, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K,
- 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@,
- is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, kcub1=^H,
- kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER$<1*/>,
- ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, nel=^M^J, rmacs=\E%%,
- rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, use=adm+sgr,
+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,
+ 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@,
+ is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, kcub1=^H,
+ kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER$<1*/>,
+ ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, nel=^M^J, rmacs=\E%%,
+ rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, use=adm+sgr,
# without the beeper
# (tvi92B: removed :ko=bt: before translation, I see no backtab cap;
# also added empty <acsc> to suppress tic warning -- esr)
-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,
- 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,
- 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,
+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,
+ 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,
+ 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,
# (tvi92D: removed :ko=bt: before translation, I see no backtab cap -- esr)
-tvi92D|tvi92B with DTR instead of XON/XOFF & better padding,
- dl1=\ER$<2*/>, il1=\EE$<2*/>,
- is2=\El\E"\EF1\E.3\016\EA\E<, kdl1=\ER$<2*/>,
- kil1=\EE$<2*/>, use=tvi92B,
+tvi92D|tvi92B with DTR instead of XON/XOFF & better padding,
+ dl1=\ER$<2*/>, il1=\EE$<2*/>,
+ is2=\El\E"\EF1\E.3\016\EA\E<, kdl1=\ER$<2*/>,
+ kil1=\EE$<2*/>, use=tvi92B,
# (tvi924: This used to have <dsl=\Es0>, <fsl=\031>. I put the new strings
# in from a BSD termcap file because it looks like they do something the
# old ones skip -- esr)
-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,
- 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,
- 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,
- kf10=^AJ\r, kf11=^AK\r, kf12=^AL\r, kf13=^AM\r, kf14=^AN\r,
- kf15=^AO\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, kf5=^AE\r,
- kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, khome=^^,
- kich1=\EQ, kil1=\EE, lf0=F1, lf1=F2, lf10=F11, lf2=F3, lf3=F4,
- lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10,
- pfkey=\E|%p1%{49}%+%c%p2%s\031, ri=\Ej, tbc=\E3, tsl=\Ef,
- use=adm+sgr,
+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,
+ 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,
+ 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,
+ kf10=^AJ\r, kf11=^AK\r, kf12=^AL\r, kf13=^AM\r, kf14=^AN\r,
+ kf15=^AO\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, kf5=^AE\r,
+ kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, khome=^^,
+ kich1=\EQ, kil1=\EE, lf0=F1, lf1=F2, lf10=F11, lf2=F3, lf3=F4,
+ lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10,
+ pfkey=\E|%p1%{49}%+%c%p2%s\031, ri=\Ej, tbc=\E3, tsl=\Ef,
+ use=adm+sgr,
# TVI925 DIP switches. In each of these, D = Down and U = Up,
#
@@ -5741,19 +7223,19 @@ tvi924|televideo tvi924,
# U U D U 7200
# U U U D 9600
# U U U U 19200
-#
-#
+#
+#
# Settings for word length and stop-bits (S1)
#
# Position Description
-# 5 6
+# 5 6
# ---------------------------
# U - 7-bit word
# D - 8-bit word
# - U 2 stop bits
# - D 1 stop bit
-#
-#
+#
+#
# S2 (external) settings
#
# Position Up Dn Description
@@ -5766,19 +7248,19 @@ tvi924|televideo tvi924,
# --------------------------------------------
# 3 X
# 4 X No parity
-# 5 X
+# 5 X
# --------------------------------------------
# 3 X
# 4 X Odd parity
-# 5 X
+# 5 X
# --------------------------------------------
# 3 X
# 4 X Even parity
-# 5 X
+# 5 X
# --------------------------------------------
-# 3 X
+# 3 X
# 4 X Mark parity
-# 5 X
+# 5 X
# --------------------------------------------
# 3 X
# 4 X Space parity
@@ -5791,47 +7273,47 @@ tvi924|televideo tvi924,
# 8 X
# --------------------------------------------
# 7 X Full Duplex
-# 8 X
+# 8 X
# --------------------------------------------
# 7 X Block mode
-# 8 X
+# 8 X
# --------------------------------------------
# 9 X 50 Hz
# X 60 Hz
# --------------------------------------------
# 10 X CR/LF (Auto LF)
# X CR only
-#
+#
# S3 (internal switch) settings:
-#
+#
# Position Up Dn Description
# --------------------------------------------
-# 1 X Keyclick off
+# 1 X Keyclick off
# X Keyclick on
# --------------------------------------------
# 2 X English
-# 3 X
+# 3 X
# --------------------------------------------
# 2 X German
-# 3 X
+# 3 X
# --------------------------------------------
# 2 X French
-# 3 X
+# 3 X
# --------------------------------------------
# 2 X Spanish
-# 3 X
+# 3 X
# --------------------------------------------
# 4 X Blinking block cursor
-# 5 X
+# 5 X
# --------------------------------------------
# 4 X Blinking underline cursor
-# 5 X
+# 5 X
# --------------------------------------------
# 4 X Steady block cursor
-# 5 X
+# 5 X
# --------------------------------------------
# 4 X Steady underline cursor
-# 5 X
+# 5 X
# --------------------------------------------
# 6 X Screen blanking timer (ON)
# X Screen blanking timer (OFF)
@@ -5850,28 +7332,28 @@ tvi924|televideo tvi924,
# --------------------------------------------
#
# (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,
- 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,
- 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,
- kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, ri=\Ej, tbc=\E3,
- tsl=\Eh\Ef, use=adm+sgr,
+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,
+ 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,
+ 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,
+ kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, ri=\Ej, tbc=\E3,
+ tsl=\Eh\Ef, use=adm+sgr,
# TeleVideo 925 from Mitch Bradley <sun!wmb> via BRL
# to avoid "magic cookie" standout glitch:
-tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
- xmc@,
- kbs=^H, kcub1=^H, kcud1=^J, rmso=\E(, smso=\E), use=tvi925,
+tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
+ xmc@,
+ kbs=^H, kcub1=^H, kcud1=^J, 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
-# for additional capabilities,
+# for additional capabilities,
# The following tvi descriptions from B:pjphar and virus!mike
# is for all 950s. It sets the following attributes:
# full duplex (\EDF) write protect off (\E()
@@ -5890,11 +7372,11 @@ tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
# start-protected field delimiter (\Ex2\200\200)
# end-protected field delimiter (\Ex3\200\200)
# set end of text delimiter to carriage return/null (\Ex4\r\200)
-#
+#
# TVI 950 Switch Setting Reference Charts
-#
+#
# TABLE 1:
-#
+#
# S1 1 2 3 4 5 6 7 8 9 10
# +-----------------------+-----+-----+-----------------------+
# | Computer Baud Rate |Data |Stop | Printer Baud Rate |
@@ -5904,8 +7386,8 @@ tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
# +------+-----------------------+-----+-----+-----------------------+
# | Down | TABLE 2 | 8 | 1 | TABLE 2 |
# +------+-----------------------+-----+-----+-----------------------+
-#
-#
+#
+#
# S2 1 2 3 4 5 6 7 8 9 10
# +-----+-----+-----------------+-----+-----------+-----+-----+
# |Edit |Cursr| Parity |Video|Transmiss'n| Hz |Click|
@@ -5914,9 +7396,9 @@ tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
# +------+-----+-----+-----------------+-----+-----------+-----+-----+
# | Down |Local|St'dy| TABLE 3 |BkonG| CHART | 50 | On |
# +------+-----+-----+-----------------+-----+-----------+-----+-----+
-#
+#
# TABLE 2:
-#
+#
# +-----------+-----+-----+-----+-----+-----------+
# | Display | 1 | 2 | 3 | 4 | Baud |
# +-----------+-----+-----+-----+-----+ |
@@ -5939,7 +7421,7 @@ tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
# | D | U | U | U | 9600 |
# | U | U | U | U | 19200 |
# +-----+-----+-----+-----+-----------+
-#
+#
# TABLE 3:
# +-----+-----+-----+-----------+
# | 3 | 4 | 5 | Parity |
@@ -5951,7 +7433,7 @@ tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
# | U | U | U | Space |
# +-----+-----+-----+-----------+
# X = don't care
-#
+#
# CHART:
# +-----+-----+-----------------+
# | 7 | 8 | Communication |
@@ -5961,28 +7443,28 @@ tvi925-hi|TeleVideo Model 925 with half intensity standout mode,
# | U | D | Block |
# | U | U | Local |
# +-----+-----+-----------------+
-#
-# (tvi950: early versions had obsolete ":ma=^Vj^Kk^Hh^Ll^^H:".
-# I also inserted <ich1> and <kich1>; the :ko: string indicated that <ich>
+#
+# (tvi950: early versions had obsolete ":ma=^Vj^Kk^Hh^Ll^^H:".
+# 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)
-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,
- 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@,
- 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,
- 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,
+# Finally, note that BSD has cud1=^V. -- esr)
+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,
+ 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@,
+ 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,
+ 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,
#
# is for 950 with two pages adds the following:
# set 48 line page (\E\\2)
@@ -5996,10 +7478,10 @@ tvi950|televideo 950,
# set duplex (send) edit keys (\El) when entering vi
# 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,
- rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
- smkx=\El, use=tvi950,
+tvi950-2p|televideo950 w/2 pages,
+ is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07 \011,
+ rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
+ smkx=\El, use=tvi950,
#
# is for 950 with four pages adds the following:
# set 96 line page (\E\\3)
@@ -6010,34 +7492,34 @@ tvi950-2p|televideo950 w/2 pages,
# when exiting ex, reset 96 line page (\E\\3)
# 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,
- rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
- smkx=\El, use=tvi950,
+tvi950-4p|televideo950 w/4 pages,
+ is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07 \011,
+ rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
+ smkx=\El, use=tvi950,
#
# <is2> for reverse video 950 changes the following:
# set reverse video (\Ed)
#
# set vb accordingly (\Ed ...delay... \Eb)
#
-tvi950-rv|televideo950 rev video,
- flash=\Ed$<200/>\Eb,
- is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0,
- use=tvi950,
+tvi950-rv|televideo950 rev video,
+ flash=\Ed$<200/>\Eb,
+ is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0,
+ use=tvi950,
# tvi950-rv-2p uses the appropriate entries from 950-2p and 950-rv
-tvi950-rv-2p|televideo950 rev video w/2 pages,
- flash=\Ed$<200/>\Eb,
- is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07\s,
- rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
- smkx=\El, use=tvi950,
+tvi950-rv-2p|televideo950 rev video w/2 pages,
+ flash=\Ed$<200/>\Eb,
+ is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07\s,
+ rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
+ smkx=\El, use=tvi950,
# tvi950-rv uses the appropriate entries from 950-4p and 950-rv
-tvi950-rv-4p|televideo950 rev video w/4 pages,
- flash=\Ed$<200/>\Eb,
- is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07\s,
- rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
- smkx=\El, use=tvi950,
+tvi950-rv-4p|televideo950 rev video w/4 pages,
+ flash=\Ed$<200/>\Eb,
+ is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07\s,
+ rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s,
+ smkx=\El, use=tvi950,
# From: Andreas Stolcke <stolcke@icsi.berkeley.edu>
# (tvi955: removed obsolete ":ma:=^Vj^Kk^Hh^Ll^^H";
# removed incorrect (and overridden) ":do=^J:"; fixed broken continuations in
@@ -6048,109 +7530,109 @@ tvi950-rv-4p|televideo950 rev video w/4 pages,
# ko implies -- esr)
# If the BSD termcap file was right, <cup=\E=%p1%{32}%+%c%p2%{32}%+%c> would
# also work.
-tvi955|televideo 955,
- OTbs, mc5i, msgr@,
- it#8, xmc@,
- acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2,
- civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH,
- 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%%,
- 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,
- sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O,
- use=tvi950,
-tvi955-w|955-w|televideo955 w/132 cols,
- cols#132,
- is2=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El, use=tvi955,
+tvi955|televideo 955,
+ OTbs, mc5i, msgr@,
+ it#8, xmc@,
+ acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2,
+ civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH,
+ 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%%,
+ 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,
+ sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O,
+ use=tvi950,
+tvi955-w|955-w|televideo955 w/132 cols,
+ cols#132,
+ is2=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El, use=tvi955,
# use half-intensity as normal mode, full intensity as <bold>
-tvi955-hb|955-hb|televideo955 half-bright,
- bold=\E[=5l, dim@, is2=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El,
- sgr0=\EG0\E[=5h, use=tvi955,
+tvi955-hb|955-hb|televideo955 half-bright,
+ bold=\E[=5l, dim@, is2=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El,
+ sgr0=\EG0\E[=5h, use=tvi955,
# From: Humberto Appleton <beto@cs.utexas.edu>, 880521 UT Austin
# (tvi970: removed ":sg#0:"; removed <rmso>=\E[m, <rmul>=\E[m;
# added <am>/<csr>/<home>/<hpa>/<vpa>/<smcup>/<rmcup> from BRL.
# According to BRL we could have <rmkx>=\E>, <smkx>=\E= but I'm not sure what
# it does to the function keys. I deduced <rmam>/<smam>.
# also added empty <acsc> to suppress tic warning, -- esr)
-tvi970|televideo 970,
- OTbs, OTpt, am, da, db, mir, msgr,
- cols#80, it#8, lines#24,
- acsc=, cbt=\E[Z, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr,
- cub1=^H, cud1=\ED, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
- cuu1=\EM, cvvis=\E[1Q, dch1=\E[P, dl1=\E[M, dsl=\Eg\Ef\r,
- ed=\E[J, el=\E[K, flash=\E[5m$<200/>\E[m, home=\E[H,
- hpa=\E[%i%p1%dG, ht=^I, il1=\E[L,
- is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J,
- kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kf1=\E?a, 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[H, ri=\EM, rmacs=\E(B,
- rmam=\E[?7h, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
- sgr0=\E[m, smacs=\E(B, smam=\E[?7l,
- smcup=\E[?20l\E[?7h\E[1Q, smir=\E[4h, smso=\E[7m,
- smul=\E[4m, vpa=\E[%i%p1%dd,
-tvi970-vb|televideo 970 with visual bell,
- flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
- use=tvi970,
-tvi970-2p|televideo 970 with using 2 pages of memory,
- rmcup=\E[H\E[J\E[V, smcup=\E[U\E[?20l\E[?7h\E[1Q,
- use=tvi970,
+tvi970|televideo 970,
+ OTbs, OTpt, am, da, db, mir, msgr,
+ cols#80, it#8, lines#24,
+ acsc=, cbt=\E[Z, clear=\E[H\E[2J, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud1=\ED, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
+ cuu1=\EM, cvvis=\E[1Q, dch1=\E[P, dl1=\E[M, dsl=\Eg\Ef\r,
+ ed=\E[J, el=\E[K, flash=\E[5m$<200/>\E[m, home=\E[H,
+ hpa=\E[%i%p1%dG, ht=^I, il1=\E[L,
+ is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J,
+ kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kf1=\E?a, 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[H, ri=\EM, rmacs=\E(B,
+ rmam=\E[?7h, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m,
+ sgr0=\E[m, smacs=\E(B, smam=\E[?7l,
+ smcup=\E[?20l\E[?7h\E[1Q, smir=\E[4h, smso=\E[7m,
+ smul=\E[4m, vpa=\E[%i%p1%dd,
+tvi970-vb|televideo 970 with visual bell,
+ flash=\E[?5h\0\0\0\0\0\0\0\0\0\0\0\0\0\E[?5l,
+ use=tvi970,
+tvi970-2p|televideo 970 with using 2 pages of memory,
+ rmcup=\E[H\E[J\E[V, smcup=\E[U\E[?20l\E[?7h\E[1Q,
+ use=tvi970,
# Works with vi and rogue. NOTE: Esc v sets autowrap on, Esc u sets 80 chars
# per line (rather than 40), Esc K chooses the normal character set. Not sure
-# padding is needed, but adapted from the tvi920c termcap. The <smso> and
+# padding is needed, but adapted from the tvi920c termcap. The <smso> and
# <smul> strings are klutzy, but at least use no screen space.
# (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:". I wish we knew <rmam>,
# its absence means <smam>=\Ev isn't safe to use. -- esr)
-# From: Gene Rochlin <armsis@amber.berkeley.edu> 9/19/84.
+# From: Gene Rochlin <armsis@amber.berkeley.edu> 9/19/84.
# The <ed>/<kf0>/<kf1>/<khome>/<mc4>, and <mc5> caps are from BRL, which says:
# F1 and F2 should be programmed as ^A and ^B; required for UNIFY.
-tvipt|televideo personal terminal,
- OTbs, am,
- cols#80, lines#24,
- cbt=\EI, clear=^Z, cub1=^H, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>,
- ed=\EY, el=\ET, home=^^, if=/usr/share/tabset/stdcrt,
- il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=^J,
- kcuf1=^L, kcuu1=^K, kf0=^A, kf1=^B, khome=^^, mc4=^T, mc5=^R,
- rmso=\EF, rmul=\EF, smso=\EG1@A\EH, smul=\EG1B@\EH,
+tvipt|televideo personal terminal,
+ OTbs, am,
+ cols#80, lines#24,
+ cbt=\EI, clear=^Z, cub1=^H, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>,
+ ed=\EY, el=\ET, home=^^, if=/usr/share/tabset/stdcrt,
+ il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=^J,
+ 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
-tvi9065|televideo 9065,
- am, bw, chts, hs, mc5i, mir, msgr, xenl, xon,
- cols#80, it#8, lh#1, lines#25, lm#0, lw#9, ma#4, nlab#8, vt#0,
- 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,
- 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,
- 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>,
- 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,
- 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%;%?%p9%t\E$%e\E%%%;,
- sgr0=\EG0, 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,
+tvi9065|televideo 9065,
+ am, bw, chts, hs, mc5i, mir, msgr, xenl, xon,
+ cols#80, it#8, lh#1, lines#25, lm#0, lw#9, ma#4, nlab#8, vt#0,
+ 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,
+ 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,
+ 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>,
+ 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,
+ 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%;%?%p9%t\E$%e\E%%%;,
+ sgr0=\EG0, 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,
#### Visual (vi)
#
@@ -6164,7 +7646,7 @@ tvi9065|televideo 9065,
# Visual 50 from Beau Shekita, BTL-Whippany <whuxlb!ejs>
# Recently I hacked together the following termcap for Visual
# Technology's Visual 50 terminal. It's a slight modification of
-# the vt52 termcap.
+# the vt52 termcap.
# It's intended to run when the Visual 50 is in vt52 emulation mode
# (I know what you're thinking; if it's emulating a vt52, then why
# another termcap? Well, it turns out that the Visual 50 can handle
@@ -6175,35 +7657,35 @@ tvi9065|televideo 9065,
# Beau's entry is combined with the vi50 entry from University of Wisconsin.
# Note especially the <il1> function. <kf4>-<kf6> are really l4-l6 in
# disguise; <kf7>-<kf9> are really l1-l3.
-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,
- cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
- cuu1=\EA, dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH,
- ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV,
- kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH,
- nel=^M^J, ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES,
+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,
+ cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+ cuu1=\EA, dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH,
+ ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV,
+ kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH,
+ nel=^M^J, ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES,
# this one was BSD & SCO's vi50
-vi50adm|visual 50 in adm3a mode,
- am, msgr,
- cols#80, it#8, lines#24,
- bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\EM,
- ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=^J, kbs=^H,
- kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH,
- rmso=\ET, smso=\EU,
+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,
+ 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,
+ kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH,
+ rmso=\ET, smso=\EU,
# From: Jeff Siegal <jbs@quiotix.com>
-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,
- 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,
- smir=\Ea, smso=\EU,
+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,
+ 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,
+ smir=\Ea, smso=\EU,
# Visual 200 from BRL
# The following switch settings are assumed for normal operation:
@@ -6215,57 +7697,57 @@ vi55|Visual 55,
# (This cap is commented out because <smir>/<rmir> is more efficient -- esr)
# Supposedly "4*" delays should be used for <il1>, <ed>, <clear>, <dch1>,
# and <dl1> strings, but we seem to get along fine without them.
-vi200|visual 200,
- 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,
+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,
# 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
# to use vi200-f.
-vi200-f|visual 200 no function keys,
- is2=\E3\Eb\Ej\E\\\El\EG\Ed\Ek, 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, rmkx=\E>, rmso@, smkx=\E=, smso@,
- use=vi200,
-vi200-rv|visual 200 reverse video,
- cnorm@, cvvis@, ri@, rmso=\E3, smso=\E4, use=vi200,
+vi200-f|visual 200 no function keys,
+ is2=\E3\Eb\Ej\E\\\El\EG\Ed\Ek, 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, rmkx=\E>, rmso@, smkx=\E=, smso@,
+ use=vi200,
+vi200-rv|visual 200 reverse video,
+ cnorm@, cvvis@, ri@, rmso=\E3, smso=\E4, use=vi200,
# the function keys are programmable but we don't reprogram them to their
# default values with <is2> because programming them is very verbose. maybe
# an initialization file should be made for the 300 and they could be stuck
# in it.
# (vi300: added <rmam>/<smam> based on init string -- esr)
-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,
- 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,
- 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\\,
- kf5=\E_E\E\\, kf6=\E_F\E\\, kf7=\E_G\E\\, kf8=\E_H\E\\,
- kf9=\E_I\E\\, khome=\E[H, ri=\EM, rmam=\E[?7l, rmir=\E[4l,
- rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
- smso=\E[1m, smul=\E[4m,
+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,
+ 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,
+ 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\\,
+ kf5=\E_E\E\\, kf6=\E_F\E\\, kf7=\E_G\E\\, kf8=\E_H\E\\,
+ kf9=\E_I\E\\, khome=\E[H, ri=\EM, rmam=\E[?7l, rmir=\E[4l,
+ rmso=\E[m, rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
+ smso=\E[1m, smul=\E[4m,
# 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,
+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,
# Visual 500 prototype entry from University of Wisconsin.
# The best place to look for the escape sequences is page A1-1 of the
@@ -6276,37 +7758,37 @@ vi300-old|visual 300 with old firmware (set edit extent reversed),
# of this slow terminal. :xp: is 10 time the padding factor.
# (vi500: removed unknown :xp#4: termcap;
# also added empty <acsc> to suppress tic warning -- esr)
-vi500|visual 500,
- am, mir, msgr,
- cols#80, it#8, lines#33,
- acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=^M,
- 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,
- 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,
- rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D,
+vi500|visual 500,
+ am, mir, msgr,
+ cols#80, it#8, lines#33,
+ acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=^M,
+ 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,
+ 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,
+ rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D,
# The visual 550 is a visual 300 with tektronix graphics,
# and with 33 lines. clear screen is modified here to
# also clear the graphics.
-vi550|visual 550 ansi x3.64,
- lines#33,
- clear=\030\E[H\E[2J, use=vi300,
-
-vi603|visual603|visual 603,
- hs, mir,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
- csr=\E[%i%p1%d;%p2%dr, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
- 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,
+vi550|visual 550 ansi x3.64,
+ lines#33,
+ clear=\030\E[H\E[2J, use=vi300,
+
+vi603|visual603|visual 603,
+ hs, mir,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J,
+ csr=\E[%i%p1%d;%p2%dr, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+ 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,
#### Wyse (wy)
#
@@ -6341,46 +7823,46 @@ vi603|visual603|visual 603,
# If more than one attribute is needed then the wy30-mc terminfo
# should be used.
#
-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,
- 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>,
- 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,
- 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,
- pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>,
- rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
- sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
- sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
- smso=\E`7\E), tbc=\E0, tsl=\EF,
+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,
+ 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>,
+ 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,
+ 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,
+ pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>,
+ rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
+ sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
+ sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
+ smso=\E`7\E), tbc=\E0, tsl=\EF,
#
# This terminal description uses the non-hidden attribute mode
# (with magic cookie).
#
# (wy30-mc: added <smcup> to suppress tic warning --esr)
-wy30-mc|wyse30-mc|wyse 30 with magic cookies,
- msgr@,
- 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%;,
- sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=,
- smso=\EG4, use=wy30, use=adm+sgr,
+wy30-mc|wyse30-mc|wyse 30 with magic cookies,
+ msgr@,
+ 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%;,
+ 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
# older versions of terminfo. If you see this effect then
# unset xon and delete the / from the delay.
# i.e. change $<100/> to $<100>
-wy30-vb|wyse30-vb|wyse 30 visible bell,
- bel@, use=wy30,
+wy30-vb|wyse30-vb|wyse 30 visible bell,
+ bel@, use=wy30,
#
# The Wyse 50 can support one attribute (e.g. Dim, Inverse,
# Normal) without magic cookies by using the protect mode.
@@ -6391,29 +7873,29 @@ wy30-vb|wyse30-vb|wyse 30 visible bell,
# cookies. The wy50-mc terminal description uses magic cookies
# to correctly handle multiple attributes on a screen.
#
-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,
- 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,
- 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,
- 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,
- pfx=\Ez%p1%{63}%+%c%p2%s\177,
- pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E),
- ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
- sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
- sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
- smso=\E`6\E), tbc=\E0, tsl=\EF,
+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,
+ 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,
+ 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,
+ 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,
+ pfx=\Ez%p1%{63}%+%c%p2%s\177,
+ pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E),
+ ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(,
+ sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;,
+ sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10,
+ smso=\E`6\E), tbc=\E0, tsl=\EF,
#
# This terminal description uses the non-hidden attribute mode
# (with magic cookie).
@@ -6423,22 +7905,22 @@ wy50|wyse50|Wyse 50,
# unset <xon> and delete the / from the delay.
# i.e. change $<100/> to $<100>
# (wy50-mc: added <smcup> to suppress tic warning --esr)
-wy50-mc|wyse50-mc|wyse 50 with magic cookies,
- msgr@,
- 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%;,
- 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,
- bel@, use=wy50,
-wy50-w|wyse50-w|wyse 50 132-column,
- cols#132, lw#7, nlab#16, wsl#97,
- cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>,
- use=wy50,
-wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell,
- bel@, use=wy50-w,
+wy50-mc|wyse50-mc|wyse 50 with magic cookies,
+ msgr@,
+ 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%;,
+ 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,
+ bel@, use=wy50,
+wy50-w|wyse50-w|wyse 50 132-column,
+ cols#132, lw#7, nlab#16, wsl#97,
+ cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>,
+ use=wy50,
+wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell,
+ bel@, use=wy50-w,
#
# The Wyse 350 is a Wyse 50 with color.
@@ -6451,7 +7933,7 @@ wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell,
# To further complicate things one of the attributes must be
# black (either the foreground or the background). In reverse video
# the background changes color with black letters. In normal video
-# the foreground changes colors on a black background.
+# the foreground changes colors on a black background.
# This terminfo uses some of the more advanced features of curses
# to display both color and blink. In the final analysis I am not
# sure that the wy350 runs better with this terminfo than it does
@@ -6463,54 +7945,54 @@ wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell,
# i.e. change $<100/> to $<100>
#
# Bug: The <op> capability resets attributes.
-wy350|wyse350|Wyse 350,
- am, bw, hs, mc5i, mir, xon,
- 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,
- 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,
- 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,
- 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,
- 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%;,
- 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,
- bel@, use=wy350,
-wy350-w|wyse350-w|wyse 350 132-column,
- cols#132, lw#7, nlab#16, wsl#97,
- cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>,
- use=wy350,
-wy350-wvb|wyse350-wvb|wyse 350 132-column visible bell,
- bel@, use=wy350-w,
+wy350|wyse350|Wyse 350,
+ am, bw, hs, mc5i, mir, xon,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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%;,
+ 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,
+ bel@, use=wy350,
+wy350-w|wyse350-w|wyse 350 132-column,
+ cols#132, lw#7, nlab#16, wsl#97,
+ cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>,
+ use=wy350,
+wy350-wvb|wyse350-wvb|wyse 350 132-column visible bell,
+ bel@, use=wy350-w,
#
# This terminfo description is untested.
# The wyse100 emulates an adm31, so the adm31 entry should work.
#
-wy100|wyse 100,
- hs, mir,
- cols#80, lines#24, xmc#1,
- bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, 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,
- 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,
+wy100|wyse 100,
+ hs, mir,
+ cols#80, lines#24, xmc#1,
+ bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, 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,
+ 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,
#
# The Wyse 120/150 has most of the features of the Wyse 60.
# This terminal does not need padding up to 9600 baud!
@@ -6518,54 +8000,54 @@ wy100|wyse 100,
# alt-charset mode. Try \EcE\s\s\E+\s if the screen is really clear
# then set <msgr>.
#
-wy120|wyse120|wy150|wyse150|Wyse 120/150,
- am, bw, hs, km, mc5i, mir, msgr, xon,
- cols#80, it#8, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
- acsc=+/\,.0[Iha2fxgqh1jYk?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,
- 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>,
- 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,
- is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
- kcud1=^J, 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=\Ed#, nel=\r\n$<3>,
- pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
- pfx=\EZ1%p1%{63}%+%c%p2%s\177,
- pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>,
- rmacs=\EcD, rmam=\Ed., rmcup=\Ew1, rmir=\Er, rmln=\EA11,
- rmxon=\Ec20, rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>,
- rs3=\EwG\Ee($<100>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{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,
-#
-wy120-w|wyse120-w|wy150-w|wyse150-w|wyse 120/150 132-column,
- cols#132, lw#7, nlab#16, wsl#97,
- cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>,
- rs2=\E`;$<70>, use=wy120,
-#
-wy120-25|wyse120-25|wy150-25|wyse150-25|wyse 120/150 80-column 25-lines,
- lh@, lines#25, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<100>, use=wy120,
-#
-wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|wyse 120/150 132-column 25-lines,
- lh@, lines#25, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<100>, use=wy120-w,
-#
-wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell,
- bel@, use=wy120,
-#
-wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell,
- bel@, use=wy120-w,
+wy120|wyse120|wy150|wyse150|Wyse 120/150,
+ am, bw, hs, km, mc5i, mir, msgr, xon,
+ cols#80, it#8, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
+ acsc=+/\,.0[iha2fxgqh1jYk?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,
+ 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>,
+ 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,
+ is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
+ kcud1=^J, 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=\Ed#, nel=\r\n$<3>,
+ pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+ pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+ pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>,
+ rmacs=\EcD, rmam=\Ed., rmcup=\Ew1, rmir=\Er, rmln=\EA11,
+ rmxon=\Ec20, rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>,
+ rs3=\EwG\Ee($<100>,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{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,
+#
+wy120-w|wyse120-w|wy150-w|wyse150-w|wyse 120/150 132-column,
+ cols#132, lw#7, nlab#16, wsl#97,
+ cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>,
+ rs2=\E`;$<70>, use=wy120,
+#
+wy120-25|wyse120-25|wy150-25|wyse150-25|wyse 120/150 80-column 25-lines,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<100>, use=wy120,
+#
+wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|wyse 120/150 132-column 25-lines,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<100>, use=wy120-w,
+#
+wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell,
+ bel@, use=wy120,
+#
+wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell,
+ bel@, use=wy120-w,
#
# The Wyse 60 is like the Wyse 50 but with more padding.
# The reset strings are slow and the pad times very depending
@@ -6597,72 +8079,72 @@ wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column
#
# (wy60: we use \E{ rather than ^^ for home (both are documented) to avoid
# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr)
-wy60|wyse60|Wyse 60,
- am, bw, hs, km, mc5i, mir, msgr,
- cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#45,
- acsc=+/\,.0[Iha2fxgqh1jYk?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,
- 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,
- 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,
- is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
- kcud1=^J, 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=\E{^K,
- mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>,
- pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
- pfx=\EZ1%p1%{63}%+%c%p2%s\177,
- pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
- rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew1, rmir=\Er,
- rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<150>,
- rs2=\EeG$<150>, rs3=\EwG\Ee($<200>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{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,
-#
-wy60-w|wyse60-w|wyse 60 132-column,
- cols#132, lw#7, nlab#16, wsl#97,
- cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<16>, ip=$<5>,
- rs2=\EeF$<150>\E`;$<150>, use=wy60,
-#
-wy60-25|wyse60-25|wyse 60 80-column 25-lines,
- lh@, lines#25, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<200>, use=wy60,
-wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines,
- lh@, lines#25, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<200>, use=wy60-w,
-#
-wy60-42|wyse60-42|wyse 60 80-column 42-lines,
- lines#42,
- clear=\E+$<260>, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<2>,
- dch1=\EW$<16>, dl1=\ER$<11>, ed=\Ey$<260>, il1=\EE$<11>,
- ind=\n$<9>, ip=$<5>, is1=\EcB2\EcC3, nel=\r\n$<6>,
- ri=\Ej$<10>, rs3=\Ee*$<150>, use=wy60,
-wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines,
- cols#132, lw#7, nlab#16, wsl#97,
- clear=\E+$<260>, cup=\Ea%i%p1%dR%p2%dC$<2>,
- dch1=\EW$<19>, ed=\Ey$<260>, home=\036$<2>, ip=$<6>,
- nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, use=wy60-42,
-#
-wy60-43|wyse60-43|wyse 60 80-column 43-lines,
- lh@, lines#43, lw@, nlab@,
- pln@, rs3=\Ee+$<150>, use=wy60-42,
-wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines,
- lh@, lines#43, lw@, nlab@,
- pln@, rs3=\Ee+$<150>, use=wy60-42-w,
-#
-wy60-vb|wyse60-vb|Wyse 60 visible bell,
- bel@, use=wy60,
-wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell,
- bel@, use=wy60-w,
+wy60|wyse60|Wyse 60,
+ am, bw, hs, km, mc5i, mir, msgr,
+ cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#45,
+ acsc=+/\,.0[iha2fxgqh1jYk?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,
+ 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,
+ 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,
+ is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
+ kcud1=^J, 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=\E{^K,
+ mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>,
+ pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+ pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+ pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
+ rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew1, rmir=\Er,
+ rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<150>,
+ rs2=\EeG$<150>, rs3=\EwG\Ee($<200>,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{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,
+#
+wy60-w|wyse60-w|wyse 60 132-column,
+ cols#132, lw#7, nlab#16, wsl#97,
+ cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<16>, ip=$<5>,
+ rs2=\EeF$<150>\E`;$<150>, use=wy60,
+#
+wy60-25|wyse60-25|wyse 60 80-column 25-lines,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<200>, use=wy60,
+wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<200>, use=wy60-w,
+#
+wy60-42|wyse60-42|wyse 60 80-column 42-lines,
+ lines#42,
+ clear=\E+$<260>, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<2>,
+ dch1=\EW$<16>, dl1=\ER$<11>, ed=\Ey$<260>, il1=\EE$<11>,
+ ind=\n$<9>, ip=$<5>, is1=\EcB2\EcC3, nel=\r\n$<6>,
+ ri=\Ej$<10>, rs3=\Ee*$<150>, use=wy60,
+wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines,
+ cols#132, lw#7, nlab#16, wsl#97,
+ clear=\E+$<260>, cup=\Ea%i%p1%dR%p2%dC$<2>,
+ dch1=\EW$<19>, ed=\Ey$<260>, home=\036$<2>, ip=$<6>,
+ nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, use=wy60-42,
+#
+wy60-43|wyse60-43|wyse 60 80-column 43-lines,
+ lh@, lines#43, lw@, nlab@,
+ pln@, rs3=\Ee+$<150>, use=wy60-42,
+wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines,
+ lh@, lines#43, lw@, nlab@,
+ pln@, rs3=\Ee+$<150>, use=wy60-42-w,
+#
+wy60-vb|wyse60-vb|Wyse 60 visible bell,
+ bel@, use=wy60,
+wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell,
+ bel@, use=wy60-w,
# The Wyse-99GT looks at lot like the Wyse 60 except that it
# does not have the 42/43 line mode. In the Wyse-60 the "lines"
@@ -6679,33 +8161,33 @@ wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell,
# u0 -> enter Tektronix mode
# u1 -> exit Tektronix mode
#
-wy99gt|wyse99gt|Wyse 99gt,
- msgr@,
- clear=\E+$<130>, dch1=\EW$<7>, dl1=\ER$<4>, ed=\Ey$<130>,
- el=\Et$<5>, flash=\E`8$<100/>\E`9, ht=\011$<1>,
- il1=\EE$<4>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@,
- ri=\Ej$<3>, rmcup=\Ew0, rs2=\E`\:$<150>, smcup=\Ew1,
- u0=\E~>\E8, u1=\E[42h, use=wy60,
+wy99gt|wyse99gt|Wyse 99gt,
+ msgr@,
+ clear=\E+$<130>, dch1=\EW$<7>, dl1=\ER$<4>, ed=\Ey$<130>,
+ el=\Et$<5>, flash=\E`8$<100/>\E`9, ht=\011$<1>,
+ il1=\EE$<4>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@,
+ ri=\Ej$<3>, rmcup=\Ew0, rs2=\E`\:$<150>, smcup=\Ew1,
+ u0=\E~>\E8, u1=\E[42h, use=wy60,
#
-wy99gt-w|wyse99gt-w|wyse 99gt 132-column,
- cols#132, lw#7, nlab#16, wsl#97,
- clear=\E+$<160>, cup=\Ea%i%p1%dR%p2%dC$<2>,
- dch1=\EW$<9>, ed=\Ey$<160>, ip=$<4>, rs2=\E`;$<150>,
- use=wy99gt,
+wy99gt-w|wyse99gt-w|wyse 99gt 132-column,
+ cols#132, lw#7, nlab#16, wsl#97,
+ clear=\E+$<160>, cup=\Ea%i%p1%dR%p2%dC$<2>,
+ dch1=\EW$<9>, ed=\Ey$<160>, ip=$<4>, rs2=\E`;$<150>,
+ use=wy99gt,
#
-wy99gt-25|wyse99gt-25|wyse 99gt 80-column 25-lines,
- lh@, lines#25, lw@, nlab@,
- pln@, rs2=\E`\:$<150>, rs3=\EwG\Ee)$<200>, use=wy99gt,
+wy99gt-25|wyse99gt-25|wyse 99gt 80-column 25-lines,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs2=\E`\:$<150>, rs3=\EwG\Ee)$<200>, use=wy99gt,
#
-wy99gt-25-w|wyse99gt-25-w|wyse 99gt 132-column 25-lines,
- lh@, lines#25, lw@, nlab@,
- pln@, rs2=\E`;$<150>, use=wy99gt-w,
+wy99gt-25-w|wyse99gt-25-w|wyse 99gt 132-column 25-lines,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs2=\E`;$<150>, use=wy99gt-w,
#
-wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell,
- bel@, use=wy99gt,
+wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell,
+ bel@, use=wy99gt,
#
-wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell,
- bel@, use=wy99gt-w,
+wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell,
+ bel@, use=wy99gt-w,
# Can't set tabs! Other bugs (ANSI mode only):
# - can't redefine function keys (anyway, key redefinition in ANSI mode
@@ -6721,41 +8203,41 @@ wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell,
# thing is that vi goes crazy if smir-rmir are present and both dch-dch1 are
# not, so smir and rmir are commented out as well.
# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
-wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard),
- am, km, mc5i, mir, msgr, xenl,
- cols#80, it#8, lines#25, vt#3,
- acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<1>,
- cub1=\010$<1>, cud=\E[%p1%dB, cud1=\ED,
- cuf=\E[%p1%dC$<1>, cuf1=\E[C$<1>,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
- cvvis=\E[34l\E[?25h, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
- ech=\E[%p1%dX, ed=\E[J$<8*>, el=\E[K$<1>, el1=\E[1K$<1>,
- enacs=\E)0, flash=\E[?5h$<30/>\E[?5l, home=\E[H,
- hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL,
- il1=\E[L, ind=\n$<1>, invis=\E[8m,
- is2=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i,
- kbs=^H, kcbt=\E[z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
- kf12=\E[24~, kf17=\E[K, kf18=\E[31~, kf19=\E[32~, kf2=\EOQ,
- kf20=\E[33~, kf21=\E[34~, kf22=\E[35~, kf23=\E[1~,
- kf24=\E[2~, kf3=\EOR, kf4=\EOS, kf5=\E[M, kf6=\E[17~,
- kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, ll=\E[24E, mc0=\E[?19h,
- mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8,
- rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
- rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m,
- rs2=\E[61"p\E[40h\E[?6l\E[1r\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[24E\E[4i,
- sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%O%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m\E[%?%p8%t1%;"q%?%p9%t\016%e\017%;,
- sgr0=\E[m\017\E["q, smacs=^N, smam=\E[?7h, smir=\E[4h,
- smkx=\E[?1h, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
+wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard),
+ am, km, mc5i, mir, msgr, xenl,
+ cols#80, it#8, lines#25, vt#3,
+ acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<1>,
+ cub1=\010$<1>, cud=\E[%p1%dB, cud1=\ED,
+ cuf=\E[%p1%dC$<1>, cuf1=\E[C$<1>,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM,
+ cvvis=\E[34l\E[?25h, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J$<8*>, el=\E[K$<1>, el1=\E[1K$<1>,
+ enacs=\E)0, flash=\E[?5h$<30/>\E[?5l, home=\E[H,
+ hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL,
+ il1=\E[L, ind=\n$<1>, invis=\E[8m,
+ is2=\E7\E[1r\E8\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[4i,
+ kbs=^H, kcbt=\E[z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+ kcuu1=\EOA, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
+ kf12=\E[24~, kf17=\E[K, kf18=\E[31~, kf19=\E[32~, kf2=\EOQ,
+ kf20=\E[33~, kf21=\E[34~, kf22=\E[35~, kf23=\E[1~,
+ kf24=\E[2~, kf3=\EOR, kf4=\EOS, kf5=\E[M, kf6=\E[17~,
+ kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, ll=\E[24E, mc0=\E[?19h,
+ mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8,
+ rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l,
+ rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m,
+ rs2=\E[61"p\E[40h\E[?6l\E[1r\E[2;3;4;13;20;34;39;36l\E[12;16;34h\E[?1;3;4;5;10;18l\E[?7;8;25h\E>\E[?5W\E(B\017\E[24E\E[4i,
+ sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%O%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m\E[%?%p8%t1%;"q%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017\E["q, smacs=^N, smam=\E[?7h, smir=\E[4h,
+ smkx=\E[?1h, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd,
# This is the american terminal. Here tabs work fine.
# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
-wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard),
- hts=\EH, is3=\E[?5l, rs3=\E[?5l, tbc=\E[3g, use=wy99-ansi,
+wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard),
+ hts=\EH, is3=\E[?5l, rs3=\E[?5l, tbc=\E[3g, use=wy99-ansi,
# This terminal (firmware version 02) has a lot of bugs:
# - can't set tabs;
@@ -6766,36 +8248,36 @@ wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard),
# speeds handshaking is needed even for character sending. If you use
# DTR handshaking, you can use even greater speeds.
# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
-wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard),
- am, bw, hs, km, mc5i, mir, msgr, xon,
- cols#80, it#8, lines#25, wsl#46,
- acsc='x+y.wI~_vj(k'l&m%n)o9q*s8t-u.v\,w+x=, bel=^G,
- blink=\EG2, cbt=\EI, civis=\E`0, clear=\E'\E(\032,
- cnorm=\E`4\E`1, cr=^M, cub1=^H, cud1=\Ej, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
- cvvis=\E`2\E`1, dch1=\EW, dim=\EGp, dl1=\ER, dsl=\EF\r,
- ed=\EY$<8*>, el=\ET$<8>, enacs=\Ec@1J$<2000>,
- flash=\E\^1$<30/>\E\^0, fsl=^M, home=^^, ht=^I, il1=\EE,
- ind=^J, invis=\EG3,
- is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\EcD\024,
- ka1=^^, ka3=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r,
- kf11=^AJ\r, kf12=^AK\r, kf13=^A`\r, kf14=^Aa\r, kf15=^Ab\r,
- kf16=^Ac\r, kf17=^Ad\r, kf18=^Ae\r, kf19=^Af\r, kf2=^AA\r,
- kf20=^Ag\r, kf21=^Ah\r, kf22=^Ai\r, kf23=^Aj\r, kf24=^Ak\r,
- kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
- kf8=^AG\r, kf9=^AH\r, kprt=\EP, mc0=\EP, mc4=^T, mc5=\Ed#,
- nel=^_, prot=\E), rev=\EG4, ri=\Ej, rmacs=\EcD, rmam=\Ed.,
- rmcup=\Ec21\Ec31, rmir=\Er, rmso=\EG0, rmxon=\Ec20\Ec30,
- rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024,
- sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t%{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%?%p9%t\EcE%e\EcD%;,
- sgr0=\E(\EG0, smacs=\EcE, smam=\Ed/, smcup=\Ec20\Ec30,
- smir=\Eq, smso=\EG4, smxon=\Ec21\Ec31, tsl=\EF,
+wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard),
+ am, bw, hs, km, mc5i, mir, msgr, xon,
+ cols#80, it#8, lines#25, wsl#46,
+ acsc='x+y.wi~_vj(k'l&m%n)o9q*s8t-u.v\,w+x=, bel=^G,
+ blink=\EG2, cbt=\EI, civis=\E`0, clear=\E'\E(\032,
+ cnorm=\E`4\E`1, cr=^M, cub1=^H, cud1=\Ej, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+ cvvis=\E`2\E`1, dch1=\EW, dim=\EGp, dl1=\ER, dsl=\EF\r,
+ ed=\EY$<8*>, el=\ET$<8>, enacs=\Ec@1J$<2000>,
+ flash=\E\^1$<30/>\E\^0, fsl=^M, home=^^, ht=^I, il1=\EE,
+ ind=^J, invis=\EG3,
+ is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\EcD\024,
+ ka1=^^, ka3=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H,
+ kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r,
+ kf11=^AJ\r, kf12=^AK\r, kf13=^A`\r, kf14=^Aa\r, kf15=^Ab\r,
+ kf16=^Ac\r, kf17=^Ad\r, kf18=^Ae\r, kf19=^Af\r, kf2=^AA\r,
+ kf20=^Ag\r, kf21=^Ah\r, kf22=^Ai\r, kf23=^Aj\r, kf24=^Ak\r,
+ kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+ kf8=^AG\r, kf9=^AH\r, kprt=\EP, mc0=\EP, mc4=^T, mc5=\Ed#,
+ nel=^_, prot=\E), rev=\EG4, ri=\Ej, rmacs=\EcD, rmam=\Ed.,
+ rmcup=\Ec21\Ec31, rmir=\Er, rmso=\EG0, rmxon=\Ec20\Ec30,
+ rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024,
+ sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t%{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%?%p9%t\EcE%e\EcD%;,
+ sgr0=\E(\EG0, smacs=\EcE, smam=\Ed/, smcup=\Ec20\Ec30,
+ smir=\Eq, smso=\EG4, smxon=\Ec21\Ec31, tsl=\EF,
# This is the american terminal. Here tabs work.
# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998
-wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard),
- hts=\E1, tbc=\E0, use=wy99f,
+wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard),
+ hts=\E1, tbc=\E0, use=wy99f,
#
# The Wyse 160 is combination of the WY-60 and the WY-99gt.
@@ -6818,69 +8300,69 @@ wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard),
#
# (wy160: we use \E{ rather than ^^ for home (both are documented) to avoid
# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr)
-wy160|wyse160|Wyse 160,
- am, bw, hs, km, mc5i, mir, msgr,
- cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#38,
- acsc=+/\,.0[Iha2fxgqh1jYk?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,
- 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,
- 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,
- is3=\Ew0$<100>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
- kcud1=^J, 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=\E{^K,
- mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<1>,
- pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
- pfx=\EZ1%p1%{63}%+%c%p2%s\177,
- pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<1>,
- rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew0, rmir=\Er,
- rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<70>,
- rs2=\E`\:$<100>, rs3=\EwG\Ee($<140>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{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,
-#
-wy160-w|wyse160-w|wyse 160 132-column,
- cols#132, lw#7, nlab#16, wsl#90,
- cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<9>,
- rs2=\EeF$<150>\E`;$<150>, use=wy160,
-#
-wy160-25|wyse160-25|wyse 160 80-column 25-lines,
- lh@, lines#25, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<200>, use=wy160,
-wy160-25-w|wyse160-25-w|wyse 160 132-column 25-lines,
- lh@, lines#25, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<200>, use=wy160-w,
-#
-wy160-42|wyse160-42|wyse 160 80-column 42-lines,
- lines#42,
- clear=\E+$<50>, dl1=\ER$<2>, ed=\Ey$<50>, il1=\EE$<2>,
- ind=\n$<2>, is1=\EcB2\EcC3, nel=\r\n$<2>, ri=\Ej$<2>,
- rs3=\Ee*$<150>, use=wy160,
-wy160-42-w|wyse160-42-w|wyse 160 132-column 42-lines,
- cols#132, lw#7, nlab#16, wsl#90,
- cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<8>, ip=$<3>,
- rs2=\EeF$<150>\E`;$<150>, use=wy160-42,
-#
-wy160-43|wyse160-43|wyse 160 80-column 43-lines,
- lh@, lines#43, lw@, nlab@,
- pln@, rs3=\Ee+$<150>, use=wy160-42,
-wy160-43-w|wyse160-43-w|wyse 160 132-column 43-lines,
- lh@, lines#43, lw@, nlab@,
- pln@, rs3=\Ee+$<150>, use=wy160-42-w,
-#
-wy160-vb|wyse160-vb|Wyse 160 visible bell,
- bel@, use=wy160,
-wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell,
- bel@, use=wy160-w,
+wy160|wyse160|Wyse 160,
+ am, bw, hs, km, mc5i, mir, msgr,
+ cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#38,
+ acsc=+/\,.0[iha2fxgqh1jYk?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,
+ 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,
+ 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,
+ is3=\Ew0$<100>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
+ kcud1=^J, 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=\E{^K,
+ mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<1>,
+ pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+ pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+ pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<1>,
+ rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew0, rmir=\Er,
+ rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<70>,
+ rs2=\E`\:$<100>, rs3=\EwG\Ee($<140>,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{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,
+#
+wy160-w|wyse160-w|wyse 160 132-column,
+ cols#132, lw#7, nlab#16, wsl#90,
+ cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<9>,
+ rs2=\EeF$<150>\E`;$<150>, use=wy160,
+#
+wy160-25|wyse160-25|wyse 160 80-column 25-lines,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<200>, use=wy160,
+wy160-25-w|wyse160-25-w|wyse 160 132-column 25-lines,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<200>, use=wy160-w,
+#
+wy160-42|wyse160-42|wyse 160 80-column 42-lines,
+ lines#42,
+ clear=\E+$<50>, dl1=\ER$<2>, ed=\Ey$<50>, il1=\EE$<2>,
+ ind=\n$<2>, is1=\EcB2\EcC3, nel=\r\n$<2>, ri=\Ej$<2>,
+ rs3=\Ee*$<150>, use=wy160,
+wy160-42-w|wyse160-42-w|wyse 160 132-column 42-lines,
+ cols#132, lw#7, nlab#16, wsl#90,
+ cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<8>, ip=$<3>,
+ rs2=\EeF$<150>\E`;$<150>, use=wy160-42,
+#
+wy160-43|wyse160-43|wyse 160 80-column 43-lines,
+ lh@, lines#43, lw@, nlab@,
+ pln@, rs3=\Ee+$<150>, use=wy160-42,
+wy160-43-w|wyse160-43-w|wyse 160 132-column 43-lines,
+ lh@, lines#43, lw@, nlab@,
+ pln@, rs3=\Ee+$<150>, use=wy160-42-w,
+#
+wy160-vb|wyse160-vb|Wyse 160 visible bell,
+ bel@, use=wy160,
+wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell,
+ bel@, use=wy160-w,
#
# The Wyse 75 is a vt100 lookalike without advanced video.
#
@@ -6893,62 +8375,61 @@ wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell,
# cookies. The wy75-mc terminal description uses magic cookies
# to correctly handle multiple attributes on a screen.
#
-wy75|wyse75|wyse 75,
- am, hs, mc5i, mir, msgr, xenl, xon,
- 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,
- 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,
- 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>,
- is1=\E[2;4;20;30l\E[?1;10l\E[12h\E[?7;8;25h,
- is2=\E>\E(B\E)0\017, is3=\E[m, ka1=\EOw, ka3=\EOy,
- kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdl1=\E[M, kel=\E[K, kent=\EOM,
- kf1=\E[?5i, 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[?3i,
- kf20=\E[34~, kf21=\E[35~, kf3=\E[2i, kf4=\E[@, kf5=\E[M,
- kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
- khlp=\E[28~, khome=\E[H, kich1=\E[@, kil1=\E[L, knp=\E[6~,
- kpp=\E[5~, kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, mc4=\E[4i,
- mc5=\E[5i, rc=\E8, rev=\E[1t\E[7m, ri=\EM$<2>, 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$<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%;,
- 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,
+wy75|wyse75|wyse 75,
+ am, hs, mc5i, mir, msgr, xenl, xon,
+ 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,
+ 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,
+ 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>,
+ is1=\E[2;4;20;30l\E[?1;10l\E[12h\E[?7;8;25h,
+ is2=\E>\E(B\E)0\017, is3=\E[m, kbs=^H, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\E[M, kel=\E[K,
+ kf1=\E[?5i, 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[?3i,
+ kf20=\E[34~, kf21=\E[35~, kf3=\E[2i, kf4=\E[@, kf5=\E[M,
+ kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
+ khlp=\E[28~, khome=\E[H, kich1=\E[@, kil1=\E[L, knp=\E[6~,
+ kpp=\E[5~, kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, mc4=\E[4i,
+ mc5=\E[5i, rc=\E8, rev=\E[1t\E[7m, ri=\EM$<2>, 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$<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%;,
+ 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,
#
# This terminal description uses the non-hidden attribute mode
# (with magic cookie).
#
-wy75-mc|wyse75-mc|wyse 75 with magic cookies,
- msgr@,
- 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%;,
- 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,
- pb@,
- bel@, use=wy75,
-wy75-w|wyse75-w|wyse 75 in 132 column mode,
- cols#132, wsl#130,
- rs2=\E[35h\E[?3h$<80>, use=wy75,
-wy75-wvb|wyse75-wvb|wyse 75 with visible bell 132 columns,
- pb@,
- bel@, use=wy75-w,
+wy75-mc|wyse75-mc|wyse 75 with magic cookies,
+ msgr@,
+ 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%;,
+ 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,
+ pb@,
+ bel@, use=wy75,
+wy75-w|wyse75-w|wyse 75 in 132 column mode,
+ cols#132, wsl#130,
+ rs2=\E[35h\E[?3h$<80>, use=wy75,
+wy75-wvb|wyse75-wvb|wyse 75 with visible bell 132 columns,
+ pb@,
+ bel@, use=wy75-w,
#
# Wyse 85 emulating a vt220 7 bit mode.
# 24 line screen with status line.
@@ -6962,53 +8443,52 @@ wy75-wvb|wyse75-wvb|wyse 75 with visible bell 132 columns,
# <dch> and <ich> work best when XON/XOFF is set. <ich> and
# <dch> leave trash on the screen when used without XON/XOFF.
#
-wy85|wyse85|wyse 85,
- am, hs, mc5i, mir, msgr, xenl, xon,
- cols#80, it#8, lines#24, wsl#80,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m,
- dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l,
- ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K,
- enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>,
- fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH,
- ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>,
- ind=\n$<3>, invis=\E[8m, ip=$<3>, is1=\E[62;1"p\E[?5W,
- is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
- is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu,
- kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kent=\EOM, kf1=\EOP,
- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
- kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
- kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR,
- kf4=\EOS, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
- kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, kich1=\E[2~,
- knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3,
- lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
- ri=\EM$<3>, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>,
- rmso=\E[m, rmul=\E[m, rs1=\E[13l\E[3l\E!p,
- rs2=\E[35h\E[?3l$<70>, rs3=\E[?5l, sc=\E7,
- sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
- smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
- tsl=\E[40h\E7\E[25;%i%p1%dH,
+wy85|wyse85|wyse 85,
+ am, hs, mc5i, mir, msgr, xenl, xon,
+ cols#80, it#8, lines#24, wsl#80,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m,
+ dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l,
+ ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K,
+ enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>,
+ fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH,
+ ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>,
+ ind=\n$<3>, invis=\E[8m, ip=$<3>, is1=\E[62;1"p\E[?5W,
+ is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
+ is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+ kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+ kf19=\E[33~, kf20=\E[34~, kf6=\E[17~, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
+ khome=\E[26~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
+ mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>,
+ rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m,
+ rmul=\E[m, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>,
+ rs3=\E[?5l, sc=\E7,
+ sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+ smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+ tsl=\E[40h\E7\E[25;%i%p1%dH, 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,
+wy85-vb|wyse85-vb|wyse 85 with visible bell,
+ bel@, flash=\E[30h\E\,\E[30l$<300>, 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,
+wy85-w|wyse85-w|wyse 85 in 132-column mode,
+ cols#132, wsl#132,
+ rs2=\E[35h\E[?3h$<70>, use=wy85,
#
# Wyse 85 in 132-column mode with visual bell.
-wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns,
- bel@, use=wy85-w,
+wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns,
+ bel@, use=wy85-w,
# From: Kevin Turner <kevint@aracnet.com>, 12 Jul 1998
# This copes with an apparent firmware bug in the wy85. He writes:
@@ -7016,45 +8496,45 @@ wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns,
# (instead of application), and change \E[ to \233 for all the keys in
# terminfo. At one point, I found some reference indicating that this
# terminal bug (not sending \E[) was acknowledged by Wyse (so it's not just
-# me), but I can't find that and the server under my bookmark to "Wyse
+# me), but I can't find that and the server under my bookmark to "Wyse
# Technical" isn't responding. So there's the question of wether the wy85
# terminfo should reflect the manufactuer's intended behaviour of the terminal
# or the actual."
-wy85-8bit|wyse85-8bit|wyse 85 in 8-bit mode,
- am, hs, mc5i, mir, msgr, xenl, xon,
- cols#80, it#8, lines#24, wsl#80,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m,
- dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l,
- ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K,
- enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>,
- fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH,
- ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>,
- ind=\n$<3>, invis=\E[8m, ip=$<3>, is1=\E[62;1"p\E[?5W,
- is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
- is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu,
- kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B,
- kcuf1=\233C, kcuu1=\233A, kdch1=\2333~, kent=\EOM,
- kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~,
- kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~,
- kf17=\23331~, kf18=\23332~, kf19=\23333~, kf2=\EOQ,
- kf20=\23334~, kf3=\EOR, kf4=\EOS, kf6=\23317~, kf7=\23318~,
- kf8=\23319~, kf9=\23320~, kfnd=\2331~, khlp=\23328~,
- khome=\23326~, kich1=\2332~, knp=\2336~, kpp=\2335~,
- kslt=\2334~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
- mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>,
- rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m,
- rmul=\E[m, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>,
- rs3=\E[?5l, sc=\E7,
- sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;+m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
- smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
- tsl=\E[40h\E7\E[25;%i%p1%dH,
+wy85-8bit|wyse85-8bit|wyse 85 in 8-bit mode,
+ am, hs, mc5i, mir, msgr, xenl, xon,
+ cols#80, it#8, lines#24, wsl#80,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m,
+ dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l,
+ ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K,
+ enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>,
+ fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH,
+ ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>,
+ ind=\n$<3>, invis=\E[8m, ip=$<3>, is1=\E[62;1"p\E[?5W,
+ is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h$<16>,
+ is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu,
+ kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B,
+ kcuf1=\233C, kcuu1=\233A, kdch1=\2333~, kent=\EOM,
+ kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~,
+ kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~,
+ kf17=\23331~, kf18=\23332~, kf19=\23333~, kf2=\EOQ,
+ kf20=\23334~, kf3=\EOR, kf4=\EOS, kf6=\23317~, kf7=\23318~,
+ kf8=\23319~, kf9=\23320~, kfnd=\2331~, khlp=\23328~,
+ khome=\23326~, kich1=\2332~, knp=\2336~, kpp=\2335~,
+ kslt=\2334~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
+ mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>,
+ rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[m,
+ rmul=\E[m, rs1=\E[13l\E[3l\E!p, rs2=\E[35h\E[?3l$<70>,
+ rs3=\E[?5l, sc=\E7,
+ sgr=\E[0%?%p2%t;4%;%?%p3%p1%|%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;+m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
+ smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+ tsl=\E[40h\E7\E[25;%i%p1%dH,
#
# Wyse 185 emulating a vt320 7 bit mode.
#
@@ -7066,164 +8546,163 @@ wy85-8bit|wyse85-8bit|wyse 85 in 8-bit mode,
# The Compose Character key can be used as a meta key if changed
# by set-up.
#
-wy185|wyse185|wyse 185,
- am, hs, km, 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$<40>, cnorm=\E[34h\E[?25h, cr=^M,
- 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,
- 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,
- 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,
- is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h,
- is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOy, kb2=\EOu,
- kbs=^H, kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kent=\EOM,
- kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
- kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
- kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf2=\EOQ,
- kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
- khome=\E[26~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i,
- mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<2>,
- rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l, 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%;,
- 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,
+wy185|wyse185|wyse 185,
+ am, hs, km, 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$<40>, cnorm=\E[34h\E[?25h, cr=^M,
+ 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,
+ 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,
+ 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,
+ is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25h,
+ is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP,
+ kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+ kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+ kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR,
+ kf4=\EOS, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, kich1=\E[2~,
+ knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3,
+ lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
+ ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l,
+ 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%;,
+ 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,
+ use=vt220+keypad,
#
# Wyse 185 with 24 data lines and top status (terminal status)
-wy185-24|wyse185-24|wyse 185 with 24 data lines,
- hs@,
- dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
- use=wy185,
+wy185-24|wyse185-24|wyse 185 with 24 data lines,
+ hs@,
+ dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
+ use=wy185,
#
# Wyse 185 with visual bell.
-wy185-vb|wyse185-vb|wyse 185+flash,
- bel@, use=wy185,
+wy185-vb|wyse185-vb|wyse 185+flash,
+ bel@, use=wy185,
#
# Wyse 185 in 132-column mode.
-wy185-w|wyse185-w|wyse 185 in 132-column mode,
- cols#132, wsl#132,
- dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
- ip=$<7>, rs2=\E[35h\E[?3h, use=wy185,
+wy185-w|wyse185-w|wyse 185 in 132-column mode,
+ cols#132, wsl#132,
+ dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
+ ip=$<7>, rs2=\E[35h\E[?3h, use=wy185,
#
# Wyse 185 in 132-column mode with visual bell.
-wy185-wvb|wyse185-wvb|wyse 185+flash+132 cols,
- bel@, use=wy185-w,
+wy185-wvb|wyse185-wvb|wyse 185+flash+132 cols,
+ bel@, use=wy185-w,
# wy325 terminfo entries
# Done by Joe H. Davis 3-9-92
# lines 25 columns 80
#
-wy325|wyse325|Wyse epc,
- am, bw, hs, mc5i, mir,
- cols#80, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
- acsc=+/\,.0[Iha2fxgqh1jYk?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,
- 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,
- 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,
- is3=\Ew0$<16>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
- kcud1=^J, 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=\Ed#,
- pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
- pfx=\EZ1%p1%{63}%+%c%p2%s\177,
- pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>,
- rmacs=\EcD, rmam=\Ed., rmcup=\Ew0, rmir=\Er, rmln=\EA11,
- rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>,
- rs3=\EwG\Ee($<100>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{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,
-
-#
-# lines 24 columns 80 vb
-#
-wy325-vb|wyse325-vb|wyse-325 with visual bell,
- bel@, use=wy325,
+wy325|wyse325|Wyse epc,
+ am, bw, hs, mc5i, mir,
+ cols#80, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45,
+ acsc=+/\,.0[iha2fxgqh1jYk?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,
+ 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,
+ 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,
+ is3=\Ew0$<16>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H,
+ kcud1=^J, 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=\Ed#,
+ pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+ pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+ pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>,
+ rmacs=\EcD, rmam=\Ed., rmcup=\Ew0, rmir=\Er, rmln=\EA11,
+ rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>,
+ rs3=\EwG\Ee($<100>,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{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,
+
+#
+# lines 24 columns 80 vb
+#
+wy325-vb|wyse325-vb|wyse-325 with visual bell,
+ bel@, use=wy325,
#
# lines 24 columns 132
#
-wy325-w|wyse325-w|wy325w-24|wyse-325 in wide mode,
- cols#132, lw#7, nlab#16, wsl#97,
- cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>,
- rs2=\E`;$<70>, use=wy325,
+wy325-w|wyse325-w|wy325w-24|wyse-325 in wide mode,
+ cols#132, lw#7, nlab#16, wsl#97,
+ cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>,
+ rs2=\E`;$<70>, use=wy325,
#
# lines 25 columns 80
#
-wy325-25|wyse325-25|wy325-80|wyse-325|wyse-325 25 lines,
- lh@, lines#25, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<100>, use=wy325,
+wy325-25|wyse325-25|wy325-80|wyse-325|wyse-325 25 lines,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<100>, use=wy325,
#
# lines 25 columns 132
#
-wy325-25w|wyse325-25w|wy325 132 columns,
- lh@, lines#25, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
+wy325-25w|wyse325-25w|wy325 132 columns,
+ lh@, lines#25, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
#
-# lines 25 columns 132 vb
+# lines 25 columns 132 vb
#
-wy325-w-vb|wy325-wvb|wyse325-wvb|wyse-325 wide mode reverse video,
- bel@, use=wy325-w,
+wy325-w-vb|wy325-wvb|wyse325-wvb|wyse-325 wide mode reverse video,
+ bel@, use=wy325-w,
#
# lines 42 columns 80
#
-wy325-42|wyse325-42|wyse-325 42 lines,
- lh@, lines#42, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<100>, use=wy325,
+wy325-42|wyse325-42|wyse-325 42 lines,
+ lh@, lines#42, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<100>, use=wy325,
#
# lines 42 columns 132
#
-wy325-42w|wyse325-42w|wyse-325 42 lines wide mode,
- lh@, lines#42, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
+wy325-42w|wyse325-42w|wyse-325 42 lines wide mode,
+ lh@, lines#42, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
#
-# lines 42 columns 132 vb
+# lines 42 columns 132 vb
#
-wy325-42w-vb|wy325-42wvb|wyse-325 42 lines wide mode visual bell,
- bel@, use=wy325-w,
+wy325-42w-vb|wy325-42wvb|wyse-325 42 lines wide mode visual bell,
+ bel@, use=wy325-w,
#
# lines 43 columns 80
#
-wy325-43|wyse325-43|wyse-325 43 lines,
- lh@, lines#43, lw@, nlab@,
- pln@, use=wy325,
+wy325-43|wyse325-43|wyse-325 43 lines,
+ lh@, lines#43, lw@, nlab@,
+ pln@, use=wy325,
#
# lines 43 columns 132
#
-wy325-43w|wyse325-43w|wyse-325 43 lines wide mode,
- lh@, lines#43, lw@, nlab@,
- pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
+wy325-43w|wyse325-43w|wyse-325 43 lines wide mode,
+ lh@, lines#43, lw@, nlab@,
+ pln@, rs3=\EwG\Ee)$<100>, use=wy325-w,
#
-# lines 43 columns 132 vb
+# lines 43 columns 132 vb
#
-wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell,
- bel@, use=wy325-w,
+wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell,
+ bel@, use=wy325-w,
# Wyse 370 -- 24 line screen with status line.
#
@@ -7243,130 +8722,128 @@ wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell,
# <u5> -> exit Tek 4207 mode (goto native ANSI mode)
#
# Bug: The <op> capability resets attributes.
-wy370-nk|wyse 370 without function keys,
- am, ccc, hs, mc5i, mir, msgr, xenl, xon,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
- 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,
- 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,
- 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,
- 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%;,
- 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,
- u0=\E[?38h\E8, u1=\E[?38l\E)0, u2=\E[92;52"p, u3=\E~B,
- u4=\E[92;76"p, u5=\E%!1\E[90;1"p, vpa=\E[%i%p1%dd,
+wy370-nk|wyse 370 without function keys,
+ am, ccc, hs, mc5i, mir, msgr, xenl, xon,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A,
+ 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,
+ 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,
+ 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,
+ 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%;,
+ 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,
+ u0=\E[?38h\E8, u1=\E[?38l\E)0, u2=\E[92;52"p, u3=\E~B,
+ u4=\E[92;76"p, u5=\E%!1\E[90;1"p, vpa=\E[%i%p1%dd,
#
# Function key set for the ASCII (wy-50 compatible) keyboard
# This is the default 370.
#
-wy370|wyse370|wy370-101k|Wyse 370 with 101 key keyboard,
- kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, kdch1=\EOQ, kdl1=\EOQ, kent=\EOM, kf1=\E[?4i,
- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
- kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf2=\E[?3i,
- kf3=\E[2i, kf4=\E[@, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, khome=\E[H, kich1=\EOP, kil1=\EOP,
- knp=\E[U, kpp=\E[V, use=wy370-nk,
+wy370|wyse370|wy370-101k|Wyse 370 with 101 key keyboard,
+ kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, kdch1=\EOQ, kdl1=\EOQ, kent=\EOM, kf1=\E[?4i,
+ kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+ kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf2=\E[?3i,
+ kf3=\E[2i, kf4=\E[@, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, khome=\E[H, kich1=\EOP, kil1=\EOP,
+ knp=\E[U, kpp=\E[V, use=wy370-nk,
#
# Function key set for the VT-320 (and wy85) compatible keyboard
#
-wy370-105k|Wyse 370 with 105 key keyboard,
- 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~, kent=\EOM, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
- kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
- kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
- kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
- kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
- khlp=\E[28~, khome=\E[26~, kich1=\E[2~, knp=\E[6~,
- kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4,
- use=wy370-nk,
+wy370-105k|Wyse 370 with 105 key keyboard,
+ kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+ kf13=\E[25~, kf14=\E[26~, kf15=\E[28~, kf16=\E[29~,
+ kf17=\E[31~, kf18=\E[32~, kf19=\E[33~, kf20=\E[34~,
+ kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
+ khlp=\E[28~, khome=\E[26~, kich1=\E[2~, knp=\E[6~,
+ kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4,
+ use=wy370-nk, use=vt220+keypad,
#
# Function key set for the PC compatible keyboard
#
-wy370-EPC|Wyse 370 with 102 key keyboard,
- kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, kend=\E[1~, kent=\EOM, kf1=\EOP, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
- kf5=\E[M, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
- khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, use=wy370-nk,
+wy370-EPC|Wyse 370 with 102 key keyboard,
+ kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, kend=\E[1~, kent=\EOM, kf1=\EOP, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ kf5=\E[M, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, use=wy370-nk,
#
# Wyse 370 with visual bell.
-wy370-vb|Wyse 370 with visible bell,
- bel@, use=wy370,
+wy370-vb|Wyse 370 with visible bell,
+ bel@, use=wy370,
#
# Wyse 370 in 132-column mode.
-wy370-w|Wyse 370 in 132-column mode,
- cols#132, wsl#132,
- rs2=\E[35h\E[?3h$<70>, use=wy370,
+wy370-w|Wyse 370 in 132-column mode,
+ cols#132, wsl#132,
+ rs2=\E[35h\E[?3h$<70>, use=wy370,
#
# 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,
-wy370-rv|Wyse 370 reverse video,
- rs3=\E[32h\E[?5h, use=wy370,
+wy370-wvb|Wyse 370 with visible bell 132-columns,
+ flash=\E[30h\E\,\E[30l$<300>, use=wy370-w,
+wy370-rv|Wyse 370 reverse video,
+ rs3=\E[32h\E[?5h, use=wy370,
#
# Wyse 99gt Tektronix 4010/4014 emulator,
#
-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,
- cuu1=^K, ff=^L,
- hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037,
- home=^]7`x @\037,
- hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037,
- is2=\E8, nel=^M^J, u0=\E~>\E8, u1=\E[42h,
+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,
+ cuu1=^K, ff=^L,
+ hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037,
+ home=^]7`x @\037,
+ hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037,
+ is2=\E8, nel=^M^J, 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,
- home=^]8`g @\037, use=wy99gt-tek,
+wy160-tek|Wyse 160 Tektronix 4010/4014 emulator,
+ cup=\035%{3103}%{91}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037,
+ home=^]8`g @\037, use=wy99gt-tek,
#
# Wyse 370 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,
- cuu1=^K, ff=^L,
- 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,
+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,
+ cuu1=^K, ff=^L,
+ 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,
# Vendor-supplied Wyse entries end here.
#
#TITLE: TERMINFO ENTRY WY520
#DATE: 8/5/93
-# The WY520 terminfo is based on the WY285 entry published on the WYSE
+# The WY520 terminfo is based on the WY285 entry published on the WYSE
# BBS with the addition of more function keys and special keys.
#
# rs1 -> set personality
@@ -7390,62 +8867,60 @@ wy370-tek|Wyse 370 Tektronix 4010/4014 emulator,
# keypad in Dec application mode which doesn't seem to work
# with SCO applications.
#
-wy520|wyse520|wyse 520,
- am, hs, km, mc5i, mir, 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$<40>, cnorm=\E[34h\E[?25h, cr=^M,
- 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,
- 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$~,
- ech=\E[%p1%dX, ed=\E[J$<40>, el=\E[K, el1=\E[1K,
- enacs=\E)0, fsl=\E[0$}, 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,
- is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25;67h,
- is3=\E>\E(B\E)0\017\E[m, ka1=\EOw, ka3=\EOu, kb2=\EOy,
- kbs=^H, kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, ked=\E[1~,
- kel=\E[4~, kent=\EOM, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
- kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
- kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
- kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
- kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
- khlp=\E[28~, khome=\E[26~, kich1=\E[2~, knp=\E[6~,
- kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4,
- mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
- ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, 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%;,
- 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`,
- vpa=\E[%i%p1%dd,
+wy520|wyse520|wyse 520,
+ am, hs, km, mc5i, mir, 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$<40>, cnorm=\E[34h\E[?25h, cr=^M,
+ 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,
+ 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$~,
+ ech=\E[%p1%dX, ed=\E[J$<40>, el=\E[K, el1=\E[1K,
+ enacs=\E)0, fsl=\E[0$}, 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,
+ is2=\E[2;4;20;30l\E[?1;4;10;16l\E[12h\E[?7;8;25;67h,
+ is3=\E>\E(B\E)0\017\E[m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, ked=\E[1~,
+ kel=\E[4~, kent=\EOM, kf10=\E[21~, kf11=\E[23~,
+ kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, kf15=\E[28~,
+ kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+ kf20=\E[34~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+ kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, khome=\E[26~,
+ kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1,
+ lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+ rc=\E8, rev=\E[7m, ri=\EM$<2>, rmacs=^O, rmam=\E[?7l,
+ 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%;,
+ 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`,
+ vpa=\E[%i%p1%dd, use=vt220+keypad,
#
# Wyse 520 with 24 data lines and status (terminal status)
-wy520-24|wyse520-24|wyse 520 with 24 data lines,
- hs@,
- dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
- use=wy520,
+wy520-24|wyse520-24|wyse 520 with 24 data lines,
+ hs@,
+ dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
+ use=wy520,
#
# Wyse 520 with visual bell.
-wy520-vb|wyse520-vb|wyse 520 with visible bell,
- flash=\E[30h\E\,\E[30l$<100>, use=wy520,
+wy520-vb|wyse520-vb|wyse 520 with visible bell,
+ flash=\E[30h\E\,\E[30l$<100>, use=wy520,
#
# Wyse 520 in 132-column mode.
-wy520-w|wyse520-w|wyse 520 in 132-column mode,
- cols#132, wsl#132,
- dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
- ip=$<7>, rs2=\E[35h\E[?3h, use=wy520,
+wy520-w|wyse520-w|wyse 520 in 132-column mode,
+ cols#132, wsl#132,
+ dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
+ ip=$<7>, rs2=\E[35h\E[?3h, use=wy520,
#
# 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,
+wy520-wvb|wyse520-wvb|wyse 520 with visible bell 132-columns,
+ flash=\E[30h\E\,\E[30l$<100>, use=wy520-w,
#
#
# Wyse 520 emulating a vt420 7 bit mode.
@@ -7457,118 +8932,118 @@ wy520-wvb|wyse520-wvb|wyse 520 with visible bell 132-columns,
# - Delete : delete a character (have to change interrupt character
# 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~,
- kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, kf5=\E[15~, khome=\E[H,
- use=wy520,
+wy520-epc|wyse520-epc|wyse 520 with EPC keyboard,
+ kdch1=\177, 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,
#
# Wyse 520 with 24 data lines and status (terminal status)
# with EPC keyboard.
-wy520-epc-24|wyse520-pc-24|wyse 520 with 24 data lines and EPC keyboard,
- hs@,
- dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
- use=wy520-epc,
+wy520-epc-24|wyse520-pc-24|wyse 520 with 24 data lines and EPC keyboard,
+ hs@,
+ dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@,
+ use=wy520-epc,
#
# 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,
+wy520-epc-vb|wyse520-pc-vb|wyse 520 with visible bell and EPC keyboard,
+ flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc,
#
# Wyse 520 in 132-column mode.
-wy520-epc-w|wyse520-epc-w|wyse 520 in 132-column mode with EPC keyboard,
- cols#132, wsl#132,
- dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
- ip=$<7>, rs2=\E[35h\E[?3h, use=wy520-epc,
+wy520-epc-w|wyse520-epc-w|wyse 520 in 132-column mode with EPC keyboard,
+ cols#132, wsl#132,
+ dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>,
+ ip=$<7>, rs2=\E[35h\E[?3h, use=wy520-epc,
#
# 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,
+wy520-epc-wvb|wyse520-p-wvb|wyse 520 with visible bell 132-columns and EPC keyboard,
+ flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc-w,
#
# Wyse 520 in 80-column, 36 lines
-wy520-36|wyse520-36|wyse 520 with 36 data lines,
- hs@,
- lines#36,
- dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@,
- use=wy520,
+wy520-36|wyse520-36|wyse 520 with 36 data lines,
+ hs@,
+ lines#36,
+ dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@,
+ use=wy520,
#
# Wyse 520 in 80-column, 48 lines
-wy520-48|wyse520-48|wyse 520 with 48 data lines,
- hs@,
- lines#48,
- dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@,
- use=wy520,
+wy520-48|wyse520-48|wyse 520 with 48 data lines,
+ hs@,
+ lines#48,
+ dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@,
+ use=wy520,
#
# Wyse 520 in 132-column, 36 lines
-wy520-36w|wyse520-36w|wyse 520 with 132 columns and 36 data lines,
- cols#132, wsl#132,
- rs2=\E[?3h,
- rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|,
- use=wy520-36,
+wy520-36w|wyse520-36w|wyse 520 with 132 columns and 36 data lines,
+ cols#132, wsl#132,
+ rs2=\E[?3h,
+ rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|,
+ use=wy520-36,
#
# Wyse 520 in 132-column, 48 lines
-wy520-48w|wyse520-48w|wyse 520 with 48 data lines,
- cols#132, wsl#132,
- rs2=\E[?3h,
- rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|,
- use=wy520-48,
+wy520-48w|wyse520-48w|wyse 520 with 48 data lines,
+ cols#132, wsl#132,
+ rs2=\E[?3h,
+ rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|,
+ use=wy520-48,
#
#
# Wyse 520 in 80-column, 36 lines with EPC keyboard
-wy520-36pc|wyse520-36pc|wyse 520 with 36 data lines and EPC keyboard,
- hs@,
- lines#36,
- dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@,
- use=wy520-epc,
+wy520-36pc|wyse520-36pc|wyse 520 with 36 data lines and EPC keyboard,
+ hs@,
+ lines#36,
+ dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@,
+ use=wy520-epc,
#
# Wyse 520 in 80-column, 48 lines with EPC keyboard
-wy520-48pc|wyse520-48pc|wyse 520 with 48 data lines and EPC keyboard,
- hs@,
- lines#48,
- dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@,
- use=wy520-epc,
+wy520-48pc|wyse520-48pc|wyse 520 with 48 data lines and EPC keyboard,
+ hs@,
+ lines#48,
+ dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@,
+ use=wy520-epc,
#
# Wyse 520 in 132-column, 36 lines with EPC keyboard
-wy520-36wpc|wyse520-36wpc|wyse 520 with 36 data lines and EPC keyboard,
- cols#132, wsl#132,
- rs2=\E[?3h,
- rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|,
- use=wy520-36pc,
+wy520-36wpc|wyse520-36wpc|wyse 520 with 36 data lines and EPC keyboard,
+ cols#132, wsl#132,
+ rs2=\E[?3h,
+ rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|,
+ use=wy520-36pc,
#
# Wyse 520 in 132-column, 48 lines with EPC keyboard
-wy520-48wpc|wyse520-48wpc|wyse 520 with 48 data lines and EPC keyboard,
- cols#132, wsl#132,
- rs2=\E[?3h,
- rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|,
- use=wy520-48pc,
+wy520-48wpc|wyse520-48wpc|wyse 520 with 48 data lines and EPC keyboard,
+ cols#132, wsl#132,
+ rs2=\E[?3h,
+ rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|,
+ use=wy520-48pc,
# From: John Gilmore <hoptoad!gnu@lll-crg.arpa>
# (wyse-vp: removed <if=/usr/share/tabset/wyse-adds>, there's no such
# file and we don't know what <hts> is -- esr)
-wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on,
- OTbs, am,
- cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EW,
- 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,
- rmul=^O, rs1=\E`\:\E`9\017\Er, sgr0=^O, smir=\Eq, smso=^N,
- smul=^N,
-
-wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad,
- is2=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=,
- kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- khome=\EOH, rmkx=\E[?1l\E>$<10/>, smkx=\E[?1h\E=$<10/>,
- use=wy75,
+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,
+ 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,
+ rmul=^O, rs1=\E`\:\E`9\017\Er, sgr0=^O, smir=\Eq, smso=^N,
+ smul=^N,
+
+wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad,
+ is2=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=,
+ kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ khome=\EOH, rmkx=\E[?1l\E>$<10/>, smkx=\E[?1h\E=$<10/>,
+ use=wy75,
# From: Eric Freudenthal <freudent@eric.ultra.nyu.edu>
-wy100q|Wyse 100 for Quotron,
- OTbs,
- cols#80, lines#24, xmc#1,
- cbt=\EI, clear=^Z, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, invis@,
- is2=\E`\:\0\EC\EDF\E0\E'\E(\EA21, kcub1=^H, kcud1=^J,
- kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr,
+wy100q|Wyse 100 for Quotron,
+ OTbs,
+ cols#80, lines#24, xmc#1,
+ cbt=\EI, clear=^Z, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+ dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, invis@,
+ is2=\E`\:\0\EC\EDF\E0\E'\E(\EA21, kcub1=^H, kcud1=^J,
+ kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr,
#### Kermit terminal emulations
#
@@ -7580,39 +9055,39 @@ wy100q|Wyse 100 for Quotron,
# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
# (kermit: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
# From: greg small <gts@populi.berkeley.edu> 9-25-84
-kermit|standard kermit,
- OTbs,
- cols#80, lines#24,
- clear=\EE, cub1=^H, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, home=\EH, is2=K0 Standard Kermit 9-25-84\n,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
-kermit-am|standard kermit plus auto-margin,
- am,
- is2=K1 Standard Kermit plus Automatic Margins\n,
- use=kermit,
+kermit|standard kermit,
+ OTbs,
+ cols#80, lines#24,
+ clear=\EE, cub1=^H, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+ el=\EK, home=\EH, is2=K0 Standard Kermit 9-25-84\n,
+ kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
+kermit-am|standard kermit plus auto-margin,
+ am,
+ is2=K1 Standard Kermit plus Automatic Margins\n,
+ use=kermit,
# IBMPC Kermit 1.2.
# Bugs: <ed>, <el>: do not work except at beginning of line! <clear> does
# not work, but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of
# line).
# From: greg small <gts@populi.berkeley.edu> 8-30-84
-pckermit|pckermit12|UCB IBMPC Kermit 1.2,
- am,
- lines#25,
- clear=\EH\EJ, ed@, el@,
- is2=K2 UCB IBMPC Kermit 1.2 8-30-84\n, use=kermit,
+pckermit|pckermit12|UCB IBMPC Kermit 1.2,
+ am,
+ lines#25,
+ clear=\EH\EJ, ed@, el@,
+ is2=K2 UCB IBMPC Kermit 1.2 8-30-84\n, use=kermit,
# IBMPC Kermit 1.20
# Cannot use line 25, now acts funny like ansi special scrolling region.
# Initialization must escape from that region by cursor position to line 24.
# Cannot use character insert because 1.20 goes crazy if insert at col 80.
# Does not use :am: because autowrap is lost when kermit dropped and restarted.
# From: greg small <gts@populi.berkeley.edu> 12-19-84
-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,
- rmir@, rmso=\Eq, smir@, smso=\Ep, use=kermit,
+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,
+ rmir@, rmso=\Eq, smir@, smso=\Ep, use=kermit,
# MS-DOS Kermit 2.27 for the IBMPC
# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
# Cannot use line 25, now acts funny like ansi special scrolling region.
@@ -7621,90 +9096,90 @@ pckermit120|UCB IBMPC Kermit 1.20,
# Reverse video for standout like H19.
# (msk227: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr)
# From: greg small <gts@populi.berkeley.edu> 3-17-85
-msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC,
- OTbs, am@,
- cols#80, it#8, lines#24,
- clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
- 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,
- rmir=\EO, rmso=\Eq, sc=\Ej, smir=\E@, smso=\Ep,
+msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC,
+ OTbs, am@,
+ cols#80, it#8, lines#24,
+ clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
+ 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,
+ 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,
- use=msk227,
+msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins,
+ am,
+ cvvis=\EO\Eq\EG\EvK5,
+ is2=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n,
+ use=msk227,
# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC
# Automatic margins now default. Use ansi <sgr> for highlights.
# Define function keys.
# (msk22714: removed obsolete ":kn#10:" -- esr)
# From: greg small <gts@populi.berkeley.edu> 3-17-85
-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,
- 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,
+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,
+ 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,
# This was designed for a VT320 emulator, but it is probably a good start
# at support for the VT320 itself.
# Please send changes with explanations to bug-gnu-emacs@prep.ai.mit.edu.
# (vt320-k3: I added <rmam>/<smam> based on the init string -- esr)
-vt320-k3|MS-Kermit 3.00's vt320 emulation,
- am, eslok, hs, km, mir, msgr, xenl,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
- flash=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\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,
- is2=\E>\E F\E[?1l\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,
- 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$~,
- 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,
+vt320-k3|MS-Kermit 3.00's vt320 emulation,
+ am, eslok, hs, km, mir, msgr, xenl,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+ flash=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\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,
+ is2=\E>\E F\E[?1l\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,
+ 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$~,
+ 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,
# From: Joseph Gil <yogi@cs.ubc.ca> 13 Dec 1991
# ACS capabilities from Philippe De Muyter <phdm@info.ucl.ac.be> 30 May 1996
# (I removed a bogus boolean :mo: and added <msgr>, <smam>, <rmam> -- esr)
-vt320-k311|dec vt320 series as defined by kermit 3.11,
- am, eslok, hs, mir, msgr, xenl, xon,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, 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,
- 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,
- 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,
- 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,
+vt320-k311|dec vt320 series as defined by kermit 3.11,
+ am, eslok, hs, mir, msgr, xenl, xon,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ dsl=\E[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,
+ 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,
+ 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,
+ 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,
######## NON-ANSI TERMINAL EMULATIONS
#
@@ -7730,7 +9205,7 @@ vt320-k311|dec vt320 series as defined by kermit 3.11,
# level 0:
# ^L -- clear window/reset current attribute to default
# ^V^A%p1%c -- set current color attribute, parameter decodes as follows:
-#
+#
# bit: 6 5 4 3 2 1 0
# | | | | |
# +---+---+ | +---+---+
@@ -7741,8 +9216,8 @@ vt320-k311|dec vt320 series as defined by kermit 3.11,
# level 0+:
# ^V^J%p1%c%p2%c%p3%c%p4%c%p5%c -- scroll (p2,p3) to (p4,p5) up by p1 lines
# ^V^K%p1%c%p2%c%p3%c%p4%c%p5%c -- scroll (p2,p3) to (p4,p5) down by p1 lines
-# ^V^L%p1%c%p2%c%p3%c -- clear p2 lines and p3 cols w/attr %p1
-# ^V^M%p1%c%p2%c%p3%c%p4%c -- fill p3 lines & p4 cols w/char p2+attr %p1
+# ^V^L%p1%c%p2%c%p3%c -- clear p2 lines and p3 cols w/attr %p1
+# ^V^M%p1%c%p2%c%p3%c%p4%c -- fill p3 lines & p4 cols w/char p2+attr %p1
# (^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
@@ -7759,28 +9234,33 @@ vt320-k311|dec vt320 series as defined by kermit 3.11,
# ^V^T -- change highlight at current cursor poition 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
+# -- define window
#
# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
# (The <blink>/<bold>/<rev>/<smacs>/<smul>/<smso> capabilities exist only to
# tell ncurses that the corresponding highlights exist; it should use <sgr>,
# which is the only method that will actually work for multiple highlights.)
-avatar0|avatar terminal emulator level 0,
- am, bce, msgr,
- cols#80, it#8, lines#25,
- blink=^A^V\177, bold=^V^A^P, cr=^M, 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%d, rev=^A^Vp,
- rs2=^L,
- sgr=\026\001%{0}%?%p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p4%t{128}%|%;%?%p6%t%{16}%|%;,
- sgr0=^V^A^G, smacs=, smso=^A^Vp, smul=^V^A, use=klone+acs,
+#
+# Update by TD - 2004: half of this was inconsistent. Found documentation
+# and repaired most of the damage. sgr0 is probably incorrect, but the
+# available documentation gives no clues for a workable string.
+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,
+ 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,
+ 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%;,
+ 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
-avatar0+|avatar terminal emulator level 0+,
- dch1=^V^N, rmir=\026\n\0\0\0\0, smir=^V^I, use=avatar0,
+avatar0+|avatar terminal emulator level 0+,
+ dch1=^V^N, rmir=\026\n\0\0\0\0, smir=^V^I, use=avatar0,
# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995
-avatar|avatar1|avatar terminal emulator level 1,
- civis=^V'^B, cnorm=^V'^A, cvvis=^V^C, dl1=^V-, il1=^V+,
- rmam=^V", rmir=^V^P, smam=^V$, use=avatar0+,
+avatar|avatar1|avatar terminal emulator level 1,
+ civis=^V'^B, cnorm=^V'^A, cvvis=^V^C, dl1=^V-, il1=^V+,
+ rmam=^V", rmir=^V^P, smam=^V$, use=avatar0+,
#### RBcomm
#
@@ -7788,32 +9268,31 @@ avatar|avatar1|avatar terminal emulator level 1,
# maintainer, Ralf Brown. It was fairly popular in the late DOS years (early
# '90s), especially in the BBS world, and still has some loyal users due to
# its very small memory footprint and to a cute macro language.
-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,
- cub1=^H, cud1=^C, cuf1=^B,
- cup=\037%p2%{32}%+%c%p1%{32}%+%c, cuu1=^^,
- cvvis=\E[?25h, 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,
- 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,
- is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H,
- kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm,
-rbcomm-w|IBM PC with RBcomm in 132 column mode,
- cols#132,
- bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J,
- is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H,
- kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm,
+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,
+ 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,
+ 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,
+ is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H,
+ kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm,
+rbcomm-w|IBM PC with RBcomm in 132 column mode,
+ cols#132,
+ bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J,
+ is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H,
+ kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm,
######## LCD DISPLAYS
#
@@ -7825,14 +9304,14 @@ rbcomm-w|IBM PC with RBcomm in 132 column mode,
# Command Character is 0xFE (decimal 254, octal 376)
#
# On this device, cursor addressability isn't possible. The LCD expects:
-# 0xfe G <col> <row>
+# 0xfe G <col> <row>
# for cup: %p1 == row and %p2 is column
#
# This line:
# cup=\376G%p2%c%p1%c
-# LOOKS like it will work, but sometimes only one of the two numbers is sent.
+# LOOKS like it will work, but sometimes only one of the two numbers is sent.
# See the terminfo (5) manpage commented regarding 'Terminals which use "%c"'.
-#
+#
# Alas, there is no cursor upline capability on this display.
#
# These entries add some 'sanity stuff' to the clear function. That is, it
@@ -7842,14 +9321,14 @@ rbcomm-w|IBM PC with RBcomm in 132 column mode,
# NOTE: calling 'beep' turns on the backlight (bell)
# 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,
- cnorm=\376K\376T, cub1=\376L, cuf1=\376M,
- flash=\376B\001$<200>\376F, home=\376H,
-MtxOrb204| 20x4 Matrix Orbital LCD display,
- cols#20, lines#4, use=MtxOrb,
-MtxOrb162| 16x2 Matrix Orbital LCD display,
- cols#16, lines#2, use=MtxOrb,
+MtxOrb|Generic Matrix Orbital LCD display,
+ bel=\376B^A, 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,
+ cols#20, lines#4, use=MtxOrb,
+MtxOrb162|16x2 Matrix Orbital LCD display,
+ cols#16, lines#2, use=MtxOrb,
# The end
######## OLDER TERMINAL TYPES
@@ -7869,25 +9348,25 @@ MtxOrb162| 16x2 Matrix Orbital LCD display,
# These are AT&T's official terminfo entries. All-caps aliases have been
# removed.
#
-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,
- 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,
- 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,
- kf16=\E[16r, kf2=\E[2r, kf3=\E[3r, kf4=\E[4r, kf5=\E[5r,
- kf6=\E[6r, kf7=\E[7r, kf8=\E[8r, kf9=\E[9r, khome=\E[H,
- kich1=\E[@, kil1=\E[L, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
- rev=\E[7m, rmir=\E[4l, rmso=\E[m, sgr0=\E[m, smir=\E[4h,
- smso=\E[7m,
-att2350|AT&T 2350 Video Information Terminal 80 column mode,
- mc0@, mc4@, mc5@, use=att2300,
+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,
+ 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,
+ 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,
+ kf16=\E[16r, kf2=\E[2r, kf3=\E[3r, kf4=\E[4r, kf5=\E[5r,
+ kf6=\E[6r, kf7=\E[7r, kf8=\E[8r, kf9=\E[9r, khome=\E[H,
+ kich1=\E[@, kil1=\E[L, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+ rev=\E[7m, rmir=\E[4l, rmso=\E[m, sgr0=\E[m, smir=\E[4h,
+ smso=\E[7m,
+att2350|AT&T 2350 Video Information Terminal 80 column mode,
+ mc0@, mc4@, mc5@, use=att2300,
# Must setup RETURN KEY - CR, REC'VD LF - INDEX.
# Seems upward compatible with vt100, plus ins/del line/char.
@@ -7897,69 +9376,67 @@ att2350|AT&T 2350 Video Information Terminal 80 column mode,
# 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:
+# (att4410: a BSD entry has been seen with the following capabilities:
# <is2=\E[?6l>, <kf1=\EOc>, <kf2=\EOd>, <kf3=\EOe>, <kf4=\EOg>,
# <kf6=\EOh>, <kf7=\EOi>, <kf8=\EOj>, -- esr)
-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,
- 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,
- 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,
- 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%|%t;2%;%?%p2%p6%|%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,
-
-att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1,
- cols#132, wsl#132,
- is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att5410v1,
-
-att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2,
- OTbs,
- pfx=\E[%p1%d;%p2%l%02dq f%p1%d %p2%s,
- use=att5410v1,
-
-att5410-w|att4410-w|4410-w|tty5410-w|5410-w|AT&T 4410/5410 in 132 column mode,
- cols#132, wsl#132,
- is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att4410,
+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,
+ 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,
+ 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,
+ 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%|%t;2%;%?%p2%p6%|%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,
+
+att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1,
+ cols#132, wsl#132,
+ is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att5410v1,
+
+att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2,
+ OTbs,
+ pfx=\E[%p1%d;%p2%l%02dq f%p1%d %p2%s,
+ use=att5410v1,
+
+att5410-w|att4410-w|4410-w|tty5410-w|5410-w|AT&T 4410/5410 in 132 column mode,
+ cols#132, wsl#132,
+ is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att4410,
# 5410 in terms of a vt100
# (v5410: added <rmam>/<smam> based on init string -- esr)
-v5410|att5410 in terms of a vt100,
- am, mir, msgr, xon,
- 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>,
- 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, ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=^H,
- kc1=\EOp, kc3=\EOn, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\EOx,
- kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt, kf6=\EOu, kf7=\EOv,
- kf8=\EOl, kf9=\EOw, 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[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
-
-#
+v5410|att5410 in terms of a vt100,
+ am, mir, msgr, xon,
+ 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>,
+ 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,
+ 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>,
+ 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,
+
+#
# Teletype Model 5420 -- A souped up 5410, with multiple windows,
# even! the 5420 has three modes: scroll, window or page mode
# this terminfo should work in scroll or window mode, but doesn't
@@ -7987,7 +9464,7 @@ v5410|att5410 in terms of a vt100,
# <is3> set screen color to black,
# No representation in terminfo for the delete word key: kdw1=\Ed
# Key capabilities assume the power-up send sequence...
-# This <rmcup> is not strictly necessary, but it helps maximize
+# This <rmcup> is not strictly necessary, but it helps maximize
# memory usefulness: <rmcup=\Ez>,
# Alternate sgr0: <sgr0=\E[m\EW^O>,
# Alternate sgr: <sgr=\E[%?%p1%t2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t^N%e^O%;>,
@@ -7996,178 +9473,178 @@ v5410|att5410 in terms of a vt100,
# This string causes them to send the strings <kf1>-<kf8>
# when pressed in SYS PF mode.
# (att4415: I added <rmam>/<smam> based on the init string -- esr)
-att4415|tty5420|att5420|AT&T 4415/5420 80 cols,
- OTbs, db, mir, xon,
- lh#2, lm#78, lw#8, nlab#8, wsl#55,
- cbt=\E[Z, clear=\E[x\E[J, cnorm=\E[11;0j, cub=\E[%p1%dD,
- cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dx,
- cuu=\E[%p1%dA, cvvis=\E[11;1j, dch=\E[%p1%dP,
- dl=\E[%p1%dM, ech=\E[%p1%ds\E[%p1%dD,
- 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,
- 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,
- 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[?9i,
- mc5=\E[?4i, mrcup=\E[%i%p1%d;%p2%dt,
- pfx=\E[%p1%d;%p2%l%02dq F%p1%d %p2%s,
- 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%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%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,
- use=att4410,
-
-att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols,
- cols#132, lm#54, wsl#97,
- is1=\E[?3h$<100>, use=att4415,
-
-att4415-rv|tty5420-rv|att5420-rv|AT&T 4415/5420 80 cols/rv,
- flash=\E[?5l$<200>\E[?5h, is3=\E[?5h, use=att4415,
-
-att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv,
- cols#132, lm#54, wsl#97,
- flash=\E[?5l$<200>\E[?5h, is1=\E[?3h$<100>, is3=\E[?5h,
- use=att4415,
+att4415|tty5420|att5420|AT&T 4415/5420 80 cols,
+ OTbs, db, mir, xon,
+ lh#2, lm#78, lw#8, nlab#8, wsl#55,
+ cbt=\E[Z, clear=\E[x\E[J, cnorm=\E[11;0j, cub=\E[%p1%dD,
+ cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dx,
+ cuu=\E[%p1%dA, cvvis=\E[11;1j, dch=\E[%p1%dP,
+ dl=\E[%p1%dM, ech=\E[%p1%ds\E[%p1%dD,
+ 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,
+ 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,
+ 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[?9i,
+ mc5=\E[?4i, mrcup=\E[%i%p1%d;%p2%dt,
+ pfx=\E[%p1%d;%p2%l%02dq F%p1%d %p2%s,
+ 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%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%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,
+ use=att4410,
+
+att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols,
+ cols#132, lm#54, wsl#97,
+ is1=\E[?3h$<100>, use=att4415,
+
+att4415-rv|tty5420-rv|att5420-rv|AT&T 4415/5420 80 cols/rv,
+ flash=\E[?5l$<200>\E[?5h, is3=\E[?5h, use=att4415,
+
+att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv,
+ cols#132, lm#54, wsl#97,
+ flash=\E[?5l$<200>\E[?5h, is1=\E[?3h$<100>, is3=\E[?5h,
+ use=att4415,
# Note that this mode permits programming USER PF KEYS and labels
# However, when you program user pf labels you have to reselect
-# 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,
- pln=\E[%p1%d;0;0;1q%p2%:-16.16s,
-
-att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels,
- kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
- use=att4415,
-
-att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels,
- kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
- use=att4415-rv,
-
-att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels,
- kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
- use=att4415-w,
-
-att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels,
- kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
- use=att4415-w-rv,
-
-att5420_2|AT&T 5420 model 2 80 cols,
- am, db, hs, mir, msgr, xon,
- cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- blink=\E[5m, cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j,
- cr=\EG, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cvvis=\E[11;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[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, 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,
- 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,
- 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~,
- 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%;,
- 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,
- 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,
- 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,
- 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,
- kf15=\E[J, kf18=\E[K, kf19=\E[L, kf2=\E[i, kf20=\E[E,
- kf21=\E[_, kf22=\E[M, kf23=\E[N, kf24=\E[O, kf3=\E[j,
- kf6=\E[k, kf7=\E[l, kf8=\E[f, kf9=\E[w, khome=\Ec, rc=\E8,
- rev=\E[7m, rmacs=^O, rmso=\E[m, rmul=\E[m, sc=\E7,
- sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
-att4418-w|att5418-w|AT&T 5418 132 cols,
- cols#132,
- is1=\E[?3h, use=att5418,
-
-att4420|tty4420|teletype 4420,
- OTbs, da, db, eo, msgr, ul, xon,
- cols#80, lines#24, lm#72,
- bel=^G, clear=\EH\EJ, cr=\EG, cub1=\ED, cud1=\EB, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
- dl1=\EM, ed=\EJ, el=\Ez, home=\EH, il1=\EL, ind=\EH\EM\EY7\s,
- kcbt=\EO, kclr=\EJ, kcub1=^H, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kdch1=\EP, kdl1=\EM, kf0=\EU, kf3=\E@, khome=\EH,
- kich1=\E\^, kil1=\EL, kind=\ES, kri=\ET,
- lf0=segment advance, lf3=cursor tab, rmdc@, rmso=\E~,
- rmul=\EZ, smdc@, smso=\E}, smul=\E\\,
+# 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,
+ pln=\E[%p1%d;0;0;1q%p2%:-16.16s,
+
+att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels,
+ kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
+ use=att4415,
+
+att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels,
+ kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
+ use=att4415-rv,
+
+att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels,
+ kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
+ use=att4415-w,
+
+att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels,
+ kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl,
+ use=att4415-w-rv,
+
+att5420_2|AT&T 5420 model 2 80 cols,
+ am, db, hs, mir, msgr, xon,
+ cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ blink=\E[5m, cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j,
+ cr=\EG, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cvvis=\E[11;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[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, 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,
+ 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,
+ 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~,
+ 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%;,
+ 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,
+ 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,
+ 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,
+ 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,
+ kf15=\E[J, kf18=\E[K, kf19=\E[L, kf2=\E[i, kf20=\E[E,
+ kf21=\E[_, kf22=\E[M, kf23=\E[N, kf24=\E[O, kf3=\E[j,
+ kf6=\E[k, kf7=\E[l, kf8=\E[f, kf9=\E[w, khome=\Ec, rc=\E8,
+ rev=\E[7m, rmacs=^O, rmso=\E[m, rmul=\E[m, sc=\E7,
+ sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
+att4418-w|att5418-w|AT&T 5418 132 cols,
+ cols#132,
+ is1=\E[?3h, use=att5418,
+
+att4420|tty4420|teletype 4420,
+ OTbs, da, db, eo, msgr, ul, xon,
+ cols#80, lines#24, lm#72,
+ bel=^G, clear=\EH\EJ, cr=\EG, cub1=\ED, cud1=\EB, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
+ dl1=\EM, ed=\EJ, el=\Ez, home=\EH, il1=\EL, ind=\EH\EM\EY7\s,
+ kcbt=\EO, kclr=\EJ, kcub1=^H, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, kdch1=\EP, kdl1=\EM, kf0=\EU, kf3=\E@, khome=\EH,
+ kich1=\E\^, kil1=\EL, kind=\ES, kri=\ET,
+ lf0=segment advance, lf3=cursor tab, rmdc@, rmso=\E~,
+ rmul=\EZ, smdc@, smso=\E}, smul=\E\\,
# The following is a terminfo entry for the Teletype 4424
# 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
-#
+#
# 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
# The terminal has either bold or blink, depending on options
#
# (att4424: commented out <smcup>=\E[1m, we don't need bright locked on -- esr)
-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,
- 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,
- 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,
- sgr0=\EX\E~\EZ\E4\E(B, smacs=\E(0, smso=\E}, smul=\E\\,
- tbc=\EF,
-
-att4424-1|tty4424-1|teletype 4424 in display function group I,
- kclr@, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome@,
- use=att4424,
+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,
+ 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,
+ 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,
+ sgr0=\EX\E~\EZ\E4\E(B, smacs=\E(0, smso=\E}, smul=\E\\,
+ tbc=\EF,
+
+att4424-1|tty4424-1|teletype 4424 in display function group I,
+ kclr@, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome@,
+ use=att4424,
# This entry is not one of AT&T's official ones, it was translated from the
# 4.4BSD termcap file. The highlight strings are different from att4424.
@@ -8175,122 +9652,122 @@ att4424-1|tty4424-1|teletype 4424 in display function group I,
# The following two lines are the comment originally attached to the entry:
# This entry appears to avoid the top line - I have no idea why.
# From: jwb Wed Mar 31 13:25:09 1982 remote from ihuxp
-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,
- 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/>,
- 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,
- sgr0=\E[m, smso=\E[7m, smul=\E[4m,
-
-# The Teletype 5425 is really version 2 of the Teletype 5420. It
-# is quite similar, except for some minor differences. No page
-# mode, for example, so all of the <cup> sequences used above have
-# to change back to what's being used for the 5410. Many of the
+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,
+ 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/>,
+ 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,
+ sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+
+# The Teletype 5425 is really version 2 of the Teletype 5420. It
+# is quite similar, except for some minor differences. No page
+# mode, for example, so all of the <cup> sequences used above have
+# to change back to what's being used for the 5410. Many of the
# option settings have changed their numbering as well.
-#
+#
# This has been tested on a preliminary model.
#
# (att5425: added <rmam>/<smam> based on the init string -- esr)
-att5425|tty5425|att4425|AT&T 4425/5425,
- am, da, db, hs, mir, msgr, xenl, xon,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[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,
- 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,
- 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,
- 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%?%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%;,
- 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,
- vpa=\E[%p1%{1}%+%dd,
-
-att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels,
- smkx=\E[21;1j\E[25;4j\Eent, use=att4425,
-
-att5425-w|att4425-w|tty5425-w|teletype 4425/5425 in 132 column mode,
- cols#132, lm#54, wsl#97,
- is1=\E[?3h$<100>, use=tty5425,
-
-# (att4426: his had bogus capabilities: :ri=\EM:, :ri=\E[1U:.
+att5425|tty5425|att4425|AT&T 4425/5425,
+ am, da, db, hs, mir, msgr, xenl, xon,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ cvvis=\E[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,
+ 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,
+ 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,
+ 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%?%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%;,
+ 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,
+ vpa=\E[%p1%{1}%+%dd,
+
+att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels,
+ smkx=\E[21;1j\E[25;4j\Eent, use=att4425,
+
+att5425-w|att4425-w|tty5425-w|teletype 4425/5425 in 132 column mode,
+ cols#132, lm#54, wsl#97,
+ is1=\E[?3h$<100>, use=tty5425,
+
+# (att4426: his had bogus capabilities: :ri=\EM:, :ri=\E[1U:.
# I also added <rmam>/<smam> -- esr)
-att4426|tty4426|teletype 4426S,
- am, da, db, xon,
- 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,
- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA, cuu1=\EA, 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,
+att4426|tty4426|teletype 4426S,
+ am, da, db, xon,
+ 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,
+ cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu=\E[%p1%dA, cuu1=\EA, 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,
# Terminfo entry for the AT&T 510 A Personal Terminal
-# Function keys 9 - 16 are available only after the
+# Function keys 9 - 16 are available only after the
# screen labeled (soft keys/action blocks) are labeled. Function key
# 9 corresponds to the leftmost touch target on the screen,
# function key 16 corresponds to the rightmost.
#
# This entry is based on one done by Ernie Rice at Summit, NJ and
# changed by Anne Gallup, Skokie, IL, ttrdc!anne
-att510a|bct510a|AT&T 510A Personal Terminal,
- am, mir, msgr, xenl, xon,
- 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,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[1B,
- 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,
- 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,
- 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%;,
- sgr0=\E[m\017, smacs=^N, smkx=\E[19;1|, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g,
+att510a|bct510a|AT&T 510A Personal Terminal,
+ am, mir, msgr, xenl, xon,
+ 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,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[1B,
+ 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,
+ 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,
+ 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%;,
+ sgr0=\E[m\017, smacs=^N, smkx=\E[19;1|, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g,
# Terminfo entry for the AT&T 510 D Personal Terminal
# Function keys 9 through 16 are accessed by bringing up the
@@ -8298,87 +9775,87 @@ att510a|bct510a|AT&T 510A Personal Terminal,
# Function key 9 corresponds to the leftmost touch target on the screen,
# function key 16 corresponds to the rightmost.
#
-# There are problems with soft key labeling. These are due to
+# There are problems with soft key labeling. These are due to
# strangenesses in the native terminal that are impossible to
-# describe in a terminfo.
-att510d|bct510d|AT&T 510D Personal Terminal,
- am, da, db, mir, msgr, xenl, xon,
- 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,
- cub1=^H, cud=\E[%p1%dB, cud1=\E[1B, 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%;,
- 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,
+# describe in a terminfo.
+att510d|bct510d|AT&T 510D Personal Terminal,
+ am, da, db, mir, msgr, xenl, xon,
+ 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,
+ cub1=^H, cud=\E[%p1%dB, cud1=\E[1B, 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%;,
+ 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,
# (att500: I merged this with the att513 entry, att500 just used att513 -- esr)
-att500|att513|AT&T 513 using page mode,
- am, chts, mir, msgr, xenl, xon,
- 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,
- 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,
- 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,
- 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,
- kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
- kFND=\EOX, kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK,
- kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, kOPT=\EOR, kPRT=\EOZ,
- kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, kRIT=\ENL, kRPL=\EOY,
- kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, kbs=^H, kcan=\EOw,
- kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd,
- kcrt=\EOn, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\Eent,
- kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
- kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm,
- khome=\E[H, kich1=\ENj, kind=\E[S, kmov=\ENc, kmrk=\ENi,
- kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr,
- kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb,
- kres=\EOq, krfr=\ENa, kri=\E[T, krpl=\EOy, krst=\EOB,
- 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,
- 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,
- 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,
- 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%;,
- 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,
+att500|att513|AT&T 513 using page mode,
+ am, chts, mir, msgr, xenl, xon,
+ 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,
+ 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,
+ 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,
+ 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,
+ kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
+ kFND=\EOX, kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK,
+ kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, kOPT=\EOR, kPRT=\EOZ,
+ kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, kRIT=\ENL, kRPL=\EOY,
+ kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, kbs=^H, kcan=\EOw,
+ kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd,
+ kcrt=\EOn, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\Eent,
+ kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
+ kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm,
+ khome=\E[H, kich1=\ENj, kind=\E[S, kmov=\ENc, kmrk=\ENi,
+ kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr,
+ kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb,
+ kres=\EOq, krfr=\ENa, kri=\E[T, krpl=\EOy, krst=\EOB,
+ 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,
+ 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,
+ 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,
+ 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%;,
+ 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,
# 01-07-88
# printer must be set to EMUL ANSI to accept ESC codes
@@ -8387,21 +9864,21 @@ att500|att513|AT&T 513 using page mode,
# and alt font ascii,wrap on,tabs cleared
# <is2> disables newline on LF,Emphasized off
# 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,
- 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,
- 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%;,
- 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(}%;,
- 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,
+att5310|att5320|AT&T Model 53210 or 5320 matrix printer,
+ xhpa, xvpa,
+ bufsz#8192, 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,
+ 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%;,
+ 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(}%;,
+ 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,
# Teletype 5620, firmware version 1.1 (8;7;3) or earlier from BRL
# The following SET-UP modes are assumed for normal operation:
@@ -8410,17 +9887,17 @@ att5310|att5320|AT&T Model 53210 or 5320 matrix printer,
# requirements. This termcap description is for the Resident Terminal Mode.
# No delays specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# The BRL entry also said: UNSAFE :ll=\E[70H:
-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,
- 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,
+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,
+ 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,
# 5620 terminfo (2.0 or later ROMS with char attributes)
# The following SET-UP modes are assumed for normal operation:
@@ -8434,223 +9911,223 @@ att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs,
# <msgr> is from an otherwise inferior BRL for this terminal. That entry
# also has <ll>=\E[70H commented out and marked unsafe.
# For more, see the 5620 FAQ maintained by David Breneman <daveb@dgtl.com>.
-att5620|dmd|tty5620|ttydmd|5620|5620 terminal 88 columns,
- OTbs, am, msgr, npc, xon,
- cols#88, it#8, lines#70,
- bel=^G, bold=\E[2m, clear=\E[H\E[J, cr=^M, cub1=^H,
- cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
- 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,
- 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,
-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,
- lines#34, use=att5620,
+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,
+ 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,
+ 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,
+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,
+ lines#34, use=att5620,
# 5620 layer running the "S" system's downloaded graphics handler:
-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,
- 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,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
- kll=\E[70;1H,
+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,
+ 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,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
+ kll=\E[70;1H,
# Entries for <kf15> thru <kf28> refer to the shifted system pf keys.
#
# Entries for <kf29> thru <kf46> refer to the alternate keypad mode
# keys: = * / + 7 8 9 - 4 5 6 , 1 2 3 0 . ENTER
-att605|AT&T 605 80 column 102key keyboard,
- am, eo, xon,
- 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,
- 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,
- 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,
- kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, kf11=\ENq,
- kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD,
- kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH,
- kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ,
- kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe,
- kf30=\EOQ, kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx,
- kf35=\EOy, kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv,
- kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs,
- kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh,
- kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, kich1=\E[@,
- kil1=\E[L, kind=\E[S, knp=\E[U, kpp=\E[V, ll=\E[24H,
- 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,
- rmacs=^O, rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m,
- rs2=\Ec\E[?3l, sc=\E7, sgr0=\E[m\017, smacs=\E)0\016,
- 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,
- 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,
-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,
+att605|AT&T 605 80 column 102key keyboard,
+ am, eo, xon,
+ 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,
+ 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,
+ 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,
+ kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, kf11=\ENq,
+ kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD,
+ kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH,
+ kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ,
+ kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe,
+ kf30=\EOQ, kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx,
+ kf35=\EOy, kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv,
+ kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs,
+ kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh,
+ kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, kich1=\E[@,
+ kil1=\E[L, kind=\E[S, knp=\E[U, kpp=\E[V, ll=\E[24H,
+ 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,
+ rmacs=^O, rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m,
+ rs2=\Ec\E[?3l, sc=\E7, sgr0=\E[m\017, smacs=\E)0\016,
+ 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,
+ 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,
+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,
# (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
# smart terminals support the same sequence -- esr)
-att610|AT&T 610; 80 column; 98key keyboard,
- am, eslok, hs, mir, msgr, xenl, xon,
- cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- 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,
- 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,
- kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
- kf13=\ENs, kf14=\ENt, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
- kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
- kind=\E[S, kri=\E[T, ll=\E[24H, 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=^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,
-att610-w|AT&T 610; 132 column; 98key keyboard,
- cols#132, wsl#132,
- is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
- use=att610,
-
-att610-103k|AT&T 610; 80 column; 103key keyboard,
- kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
- kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
- kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH,
- 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,
- 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,
- kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, kres=\EOq,
- krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, ksav=\EOo,
- kslt=\ENI, kspd=\EOp, kund=\EOs, use=att610,
-att610-103k-w|AT&T 610; 132 column; 103key keyboard,
- cols#132, wsl#132,
- is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
- use=att610-103k,
-att615|AT&T 615; 80 column; 98key keyboard,
- kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE,
- kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ,
- kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS,
- kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS,
- kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt,
- kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr,
- kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610,
-att615-w|AT&T 615; 132 column; 98key keyboard,
- kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE,
- kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ,
- kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS,
- kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS,
- kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt,
- kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr,
- kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610-w,
-att615-103k|AT&T 615; 80 column; 103key keyboard,
- kLFT=\E[ A, kRIT=\E[ @, use=att610-103k,
-att615-103k-w|AT&T 615; 132 column; 103key keyboard,
- kLFT=\E[ A, kRIT=\E[ @, use=att610-103k-w,
+att610|AT&T 610; 80 column; 98key keyboard,
+ am, eslok, hs, mir, msgr, xenl, xon,
+ cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+ 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,
+ 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,
+ kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
+ kf13=\ENs, kf14=\ENt, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg,
+ kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
+ kind=\E[S, kri=\E[T, ll=\E[24H, 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=^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,
+att610-w|AT&T 610; 132 column; 98key keyboard,
+ cols#132, wsl#132,
+ is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
+ use=att610,
+
+att610-103k|AT&T 610; 80 column; 103key keyboard,
+ kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
+ kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
+ kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH,
+ 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,
+ 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,
+ kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, kres=\EOq,
+ krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, ksav=\EOo,
+ kslt=\ENI, kspd=\EOp, kund=\EOs, use=att610,
+att610-103k-w|AT&T 610; 132 column; 103key keyboard,
+ cols#132, wsl#132,
+ is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
+ use=att610-103k,
+att615|AT&T 615; 80 column; 98key keyboard,
+ kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE,
+ kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ,
+ kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS,
+ kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS,
+ kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt,
+ kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr,
+ kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610,
+att615-w|AT&T 615; 132 column; 98key keyboard,
+ kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE,
+ kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ,
+ kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS,
+ kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS,
+ kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt,
+ kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr,
+ kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610-w,
+att615-103k|AT&T 615; 80 column; 103key keyboard,
+ kLFT=\E[ A, kRIT=\E[ @, use=att610-103k,
+att615-103k-w|AT&T 615; 132 column; 103key keyboard,
+ kLFT=\E[ A, kRIT=\E[ @, use=att610-103k-w,
# (att620: I added <rmam>/<smam> based on the init string and
# <rin>/<indn> from a BSD termcap -- esr)
-att620|AT&T 620; 80 column; 98key keyboard,
- am, eslok, hs, mir, msgr, xenl, xon,
- cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- 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,
- 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,
- kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
- kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, kf17=\EOE,
- kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, kf21=\EOI,
- kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR,
- kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, kf30=\EOQ,
- kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, kf35=\EOy,
- kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, kf4=\EOf,
- kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, kf44=\EOp,
- kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
- kf9=\ENo, khome=\E[H, kind=\E[S, kri=\E[T, ll=\E[24H,
- 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%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\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,
-att620-w|AT&T 620; 132 column; 98key keyboard,
- cols#132, wsl#132,
- is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
- use=att620,
-att620-103k|AT&T 620; 80 column; 103key keyboard,
- kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
- kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
- kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH,
- 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,
- 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@,
- kf38@, kf39@, kf40@, kf41@, kf42@, kf43@, kf44@, kf45@, kf46@, 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, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb,
- kres=\EOq, krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB,
- ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, use=att620,
-
-att620-103k-w|AT&T 620; 132 column; 103key keyboard,
- cols#132, wsl#132,
- is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
- use=att620-103k,
+att620|AT&T 620; 80 column; 98key keyboard,
+ am, eslok, hs, mir, msgr, xenl, xon,
+ cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+ 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,
+ 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,
+ kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
+ kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, kf17=\EOE,
+ kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, kf21=\EOI,
+ kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR,
+ kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, kf30=\EOQ,
+ kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, kf35=\EOy,
+ kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, kf4=\EOf,
+ kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, kf44=\EOp,
+ kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj,
+ kf9=\ENo, khome=\E[H, kind=\E[S, kri=\E[T, ll=\E[24H,
+ 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%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\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,
+att620-w|AT&T 620; 132 column; 98key keyboard,
+ cols#132, wsl#132,
+ is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
+ use=att620,
+att620-103k|AT&T 620; 80 column; 103key keyboard,
+ kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON,
+ kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK,
+ kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH,
+ 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,
+ 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@,
+ kf38@, kf39@, kf40@, kf41@, kf42@, kf43@, kf44@, kf45@, kf46@, 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, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb,
+ kres=\EOq, krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB,
+ ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, use=att620,
+
+att620-103k-w|AT&T 620; 132 column; 103key keyboard,
+ cols#132, wsl#132,
+ is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h,
+ use=att620-103k,
# AT&T (formerly Teletype) 630 Multi-Tasking Graphics terminal
# The following SETUP modes are assumed for normal operation:
@@ -8662,29 +10139,29 @@ att620-103k-w|AT&T 620; 132 column; 103key keyboard,
# port. This termcap description is for the Fixed Non-Layers Window. No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# (att630: added <ich1>, <blink> and <dim> from a BSD termcap file -- esr)
-att630|AT&T 630 windowing terminal,
- OTbs, am, da, db, mir, msgr, npc, xon,
- cols#80, it#8, lines#60, lm#0,
- bel=^G, blink=\E[5m, cbt=\E[Z, clear=\E[H\E[J, cr=^M,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
- 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%?%p2%t;4%;%?%p1%p3%|%p4%|%p5%|%t;7%;m,
- sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
-att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
- lines#24, use=att630,
+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,
+ 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%?%p2%t;4%;%?%p1%p3%|%p4%|%p5%|%t;7%;m,
+ sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
+ lines#24, use=att630,
# This is the att700 entry for 700 native emulation of the AT&T 700
# terminal. Comments are relative to changes from the 605V2 entry and
@@ -8695,9 +10172,9 @@ att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
# ESC [ 50;4| set 700 native mode (really is 605)
# x ESC [ 56;ps| set lines to 24: ps=0; 40: ps=1 (plus status line)
# ESC [ 53;0| set GenFlow to Xon/Xoff
-# ESC [ 8 ;0| set CR on NL
+# ESC [ 8 ;0| set CR on NL
# x ESC [ ? 3 l/h set workspace: 80 col(l); 132 col(h)
-# ESC [ ? 4 l jump scroll
+# ESC [ ? 4 l jump scroll
# ESC [ ? 5 l/h video: normal (l); reverse (h)
# ESC [ ?13 l Labels on
# ESC [ ?15 l parity check = no
@@ -8719,7 +10196,7 @@ att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
# and the rmso/smso settings from the 730.
#
# Note: For the same reason as above in rmso I changed exit under-score mode
-# to specifically turn off underscore, rather than return to all normal
+# to specifically turn off underscore, rather than return to all normal
# attributes
#
# Note: The following pkey_xmit is taken from the 605V2 which contained the
@@ -8763,44 +10240,44 @@ att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
# etc..... Available from AT&T CIC 800-432-6600...
# ask for Document number 999-300-660..
#
-att700|AT&T 700 24x80 column display w/102key keyboard,
- am, eslok, hs, mir, msgr, xenl, xon,
- cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4,
- fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
- il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m,
- is2=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0\E[?31l\E[0m\017,
- is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z,
- kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp,
- kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC,
- kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd,
- kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP,
- kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOq,
- kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt, kf33=\EOu,
- kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy, kf38=\EOu,
- kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr,
- kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg,
- kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
- kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H,
- mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
- pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s,
- pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8,
- rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, rmacs=^O,
- rmir=\E[4l, rmln=\E[2p, rmso=\E[27m, rmul=\E[24m,
- rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, smir=\E[4h, smln=\E[p, smso=\E[7m,
- smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g,
- tsl=\E7\E[99;%i%p1%dx,
+att700|AT&T 700 24x80 column display w/102key keyboard,
+ am, eslok, hs, mir, msgr, xenl, xon,
+ cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
+ clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+ enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4,
+ fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+ il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m,
+ is2=\E[50;4|\E[53;0|\E[8;0|\E[?4;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0\E[?31l\E[0m\017,
+ is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z,
+ kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp,
+ kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC,
+ kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd,
+ kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP,
+ kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOq,
+ kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt, kf33=\EOu,
+ kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy, kf38=\EOu,
+ kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr,
+ kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg,
+ kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H,
+ kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H,
+ mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE,
+ pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s,
+ pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8,
+ rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, rmacs=^O,
+ rmir=\E[4l, rmln=\E[2p, rmso=\E[27m, rmul=\E[24m,
+ rmxon=\E[53;3|, rs1=\Ec\E[?3;5l\E[56;0|, sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smir=\E[4h, smln=\E[p, smso=\E[7m,
+ smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g,
+ tsl=\E7\E[99;%i%p1%dx,
# This entry was modified 3/13/90 by JWE.
# fixes include additions of <enacs>, correcting <rep>, and modification
@@ -8808,64 +10285,64 @@ att700|AT&T 700 24x80 column display w/102key keyboard,
# att730 has status line of 80 chars
# These were commented out: <indn=\E[%p1%dS>, <rin=\E[%p1%dT>,
# the <kf25> and up keys are used for shifted system Fkeys
-# NOTE: JWE 3/13/90 The 98 key keyboard translation for shift/HOME is
+# NOTE: JWE 3/13/90 The 98 key keyboard translation for shift/HOME is
# currently the same as <khome> (unshifted HOME or \E[H). On the 102, 102+1
# and 122 key keyboards, the 730's translation is \E[2J. For consistency
# <kHOM> has been commented out. The user can uncomment <kHOM> if using the
# 102, 102+1, or 122 key keyboards
# kHOM=\E[2J,
# (att730: I added <rmam>/<smam> based on the init string -- esr)
-att730|AT&T 730 windowing terminal,
- am, da, db, eslok, hs, mir, msgr, npc, xenl, xon,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fsl=\E8,
- home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
- ind=\ED, invis=\E[8m,
- is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B,
- 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,
- kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
- kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw,
- kf18=\ENx, kf19=\ENy, kf2=\EOd, kf20=\ENz, kf21=\EN{,
- kf22=\EN|, kf23=\EN}, kf24=\EN~, kf25=\EOC, kf26=\EOD,
- kf27=\EOE, kf28=\EOF, kf29=\EOG, kf3=\EOe, kf30=\EOH,
- kf31=\EOI, kf32=\EOJ, kf33=\ENO, kf34=\ENP, kf35=\ENQ,
- kf36=\ENR, kf37=\ENS, kf38=\ENT, kf39=\EOU, kf4=\EOf,
- kf40=\EOV, kf41=\EOW, kf42=\EOX, kf43=\EOY, kf44=\EOZ,
- kf45=\EO[, kf46=\EO\s, kf47=\EO], kf48=\EO\^, kf5=\EOg,
- 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,
- 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%;,
- 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,
-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,
-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,
- lines#24, use=att730r,
+att730|AT&T 730 windowing terminal,
+ am, da, db, eslok, hs, mir, msgr, npc, xenl, xon,
+ 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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+ enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fsl=\E8,
+ home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L,
+ ind=\ED, invis=\E[8m,
+ is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B,
+ 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,
+ kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr,
+ kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw,
+ kf18=\ENx, kf19=\ENy, kf2=\EOd, kf20=\ENz, kf21=\EN{,
+ kf22=\EN|, kf23=\EN}, kf24=\EN~, kf25=\EOC, kf26=\EOD,
+ kf27=\EOE, kf28=\EOF, kf29=\EOG, kf3=\EOe, kf30=\EOH,
+ kf31=\EOI, kf32=\EOJ, kf33=\ENO, kf34=\ENP, kf35=\ENQ,
+ kf36=\ENR, kf37=\ENS, kf38=\ENT, kf39=\EOU, kf4=\EOf,
+ kf40=\EOV, kf41=\EOW, kf42=\EOX, kf43=\EOY, kf44=\EOZ,
+ kf45=\EO[, kf46=\EO\s, kf47=\EO], kf48=\EO\^, kf5=\EOg,
+ 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,
+ 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%;,
+ 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,
+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,
+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,
+ lines#24, use=att730r,
# The following represents the screen layout along with the associated
# bezel buttons for the 5430/pt505 terminal. The "kf" designations do
@@ -8910,7 +10387,7 @@ att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version,
#
# MAIL
#
-# version 1 note:
+# version 1 note:
# The character string sent by key 'kf26' may be user programmable
# to send either \E[16s, or \E[26s.
# The character string sent by key 'krfr' may be user programmable
@@ -9029,35 +10506,35 @@ att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version,
# 05-Aug-86:
# The following Terminfo entry describes functions which are supported by
# the AT&T 5430/pt505 terminal software version 2 and later.
-att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal,
- am, xon,
- 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,
- 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,
- is1=\EPr\\E[0u\E[2J\E[0;0H\E[m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l,
- kbs=^H, kcmd=\E!, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, kf0=\E[00s, kf1=\E[01s, kf18=\E[18s,
- kf19=\E[19s, kf2=\E[02s, kf20=\E[20s, kf21=\E[21s,
- kf22=\E[22s, kf23=\E[23s, kf24=\E[24s, kf26=\E[26s,
- kf3=\E[03s, kf4=\E[04s, kf5=\E[05s, kf6=\E[06s,
- krfr=\E[27s, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
- rmacs=\E[10m, rmam=\E[11;1j, rmir=\E[4l, rmso=\E[m,
- rmul=\E[m, rs1=\Ec, sc=\E7, sgr0=\E[m, smacs=\E[11m,
- smam=\E[11;0j, smir=\E[4h, smso=\E[1m, smul=\E[4m,
+att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal,
+ am, xon,
+ 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,
+ 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,
+ is1=\EPr\\E[0u\E[2J\E[0;0H\E[m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l,
+ kbs=^H, kcmd=\E!, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, kf0=\E[00s, kf1=\E[01s, kf18=\E[18s,
+ kf19=\E[19s, kf2=\E[02s, kf20=\E[20s, kf21=\E[21s,
+ kf22=\E[22s, kf23=\E[23s, kf24=\E[24s, kf26=\E[26s,
+ kf3=\E[03s, kf4=\E[04s, kf5=\E[05s, kf6=\E[06s,
+ krfr=\E[27s, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m,
+ rmacs=\E[10m, rmam=\E[11;1j, rmir=\E[4l, rmso=\E[m,
+ rmul=\E[m, rs1=\Ec, sc=\E7, sgr0=\E[m, smacs=\E[11m,
+ smam=\E[11;0j, smir=\E[4h, smso=\E[1m, smul=\E[4m,
# The following Terminfo entry describes functions which are supported by
# the AT&T 5430/pt505 terminal software version 1.
-att505-24|pt505-24|gs5430-24|AT&T PT505 or 5430 GETSET version 1 24 lines,
- lines#24,
- mc4@, mc5@, rc@, rmam@, sc@, smam@, use=att505,
-tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines,
- lines#22, use=att505,
+att505-24|pt505-24|gs5430-24|AT&T PT505 or 5430 GETSET version 1 24 lines,
+ lines#24,
+ mc4@, mc5@, rc@, rmam@, sc@, smam@, use=att505,
+tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines,
+ lines#22, use=att505,
#
#### ------------------ TERMINFO FILE CAN BE SPLIT HERE ---------------------
# This cut mark helps make life less painful for people running ncurses tic
@@ -9074,86 +10551,86 @@ tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines,
# From: <cbosg!ucbvax!SRC:george> Fri Sep 11 22:38:32 1981
# (ampex80: some capabilities merged in from SCO's entry -- esr)
-ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80,
- OTbs, am, bw, ul,
- cols#80, it#8, lines#24,
- bel=^G, cbt=\EI, clear=\E*$<75>, cr=^M, cub1=^H, cud1=^J,
- cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
- 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,
- smso=\Ej, smul=\El, tbc=\E3,
+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,
+ 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,
+ 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,
- 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,
- kdch1=\EW, kdl1=\ER, khome=^^, kich1=\EQ, kil1=\EE, ll=^^^K,
- rmcup=\EF, rmso=\Ek, rmul=\Em, smcup=\EN, smso=\Ej, smul=\El,
+ampex175|ampex d175,
+ am,
+ cols#80, lines#24,
+ bel=^G, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+ 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,
+ 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
# NEWLINE/PAGE key just above RETURN that sends a strange single-character
# code. Given a suitable Unix (one that lets you set an echo-erase-as-BS-SP-BS
# mode), this key can be used as the erase key; I find I like this. Because
# some people and some systems may not, there is another termcap ("ampex175")
# that suppresses this little eccentricity by omitting the relevant capability.
-ampex175-b|ampex d175 using left arrow for erase,
- kbs=^_, use=ampex175,
+ampex175-b|ampex d175 using left arrow for erase,
+ kbs=^_, use=ampex175,
# From: Richard Bascove <atd!dsd!rcb@ucbvax.berkeley.edu>
# (ampex210: removed obsolete ":kn#10:" -- esr)
-ampex210|a210|ampex a210,
- OTbs, am, hs, xenl,
- cols#80, it#8, lines#24, xmc#1,
- cbt=\EI, clear=\E*, cub1=^H, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dl1=\ER, ed=\Ey, el=\Et, flash=\EU\EX\EU\EX\EU\EX\EU\EX,
- fsl=\E.2, home=^^, ht=^I, ich1=\EQ,
- if=/usr/share/tabset/std, il1=\EE, invis@,
- is2=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En, kcub1=^H,
- kcud1=^V, 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, khome=^^,
- tsl=\E.0\Eg\E}\Ef, use=adm+sgr,
+ampex210|a210|ampex a210,
+ OTbs, am, hs, xenl,
+ cols#80, it#8, lines#24, xmc#1,
+ cbt=\EI, clear=\E*, cub1=^H, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+ dl1=\ER, ed=\Ey, el=\Et, flash=\EU\EX\EU\EX\EU\EX\EU\EX,
+ fsl=\E.2, home=^^, ht=^I, ich1=\EQ,
+ if=/usr/share/tabset/std, il1=\EE, invis@,
+ is2=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En, kcub1=^H,
+ kcud1=^V, 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, khome=^^,
+ tsl=\E.0\Eg\E}\Ef, use=adm+sgr,
# (ampex219: I added <rmam>/<smam> based on the init string, added <cvvis>
# from ampex219w, added <cnorm>=\E[?3l, irresistibly suggested by <cvvis>,
# and moved the padding to be *after* the caps -- esr)
-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,
- 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,
- 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~,
- kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
- rev=\E[7m, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E>,
- rmso=\E[m$<2>, rmul=\E[m$<2>, sgr0=\E[m$<2>, smam=\E[?7h,
- 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,
- 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,
- am,
- cols#80, lines#24, xmc#1,
- cbt=\EI, civis=\E.0, clear=\E+, cnorm=\E.4, cub1=^H, cud1=^V,
- cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
- dch1=\EW, dl1=\ER$<5*/>, ed=\EY, el=\ET,
- flash=\Eb$<200/>\Ed, ht=^I, ich1=\EQ, il1=\EE$<5*/>,
- invis@, is2=\Eg\El, kbs=^H, kcub1=^H, kcud1=^V, kcuf1=^L,
- kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r,
- kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r,
- kf9=^AI\r, khome=^^, use=adm+sgr,
-# (ampex: removed <if=/usr/share/tabset/amp-132>, no file and no <hts> -- esr)
-ampex232w|Ampex Model 232 / 132 columns,
- cols#132, lines#24,
- is2=\E\034Eg\El, use=ampex232,
+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,
+ 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,
+ 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~,
+ kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
+ rev=\E[7m, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E>,
+ rmso=\E[m$<2>, rmul=\E[m$<2>, sgr0=\E[m$<2>, smam=\E[?7h,
+ 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,
+ 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,
+ am,
+ cols#80, lines#24, xmc#1,
+ cbt=\EI, civis=\E.0, clear=\E+, cnorm=\E.4, cub1=^H, cud1=^V,
+ cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
+ dch1=\EW, dl1=\ER$<5*/>, ed=\EY, el=\ET,
+ flash=\Eb$<200/>\Ed, ht=^I, ich1=\EQ, il1=\EE$<5*/>,
+ invis@, is2=\Eg\El, kbs=^H, kcub1=^H, kcud1=^V, kcuf1=^L,
+ kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r,
+ kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r,
+ kf9=^AI\r, khome=^^, use=adm+sgr,
+# (ampex: removed <if=/usr/share/tabset/amp-132>, no file and no <hts> -- esr)
+ampex232w|Ampex Model 232 / 132 columns,
+ cols#132, lines#24,
+ is2=\E\034Eg\El, use=ampex232,
#### Ann Arbor (aa)
#
@@ -9283,21 +10760,21 @@ ampex232w|Ampex Model 232 / 132 columns,
# unused
#
-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,
+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,
# 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,
+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,
# If you're using the GNU termcap library, add
# :cS=\E[%p1%d;%p2%d;%p3%d;%p4%dp:
@@ -9308,214 +10785,214 @@ aas1901|Ann Arbor K4080 w/S1901 mod,
# 3. Number of lines below (outside of) desired scroll region.
# 4. Total number of lines on the screen, the same as the first parameter.
# The generic Ann Arbor entry is the only one that uses this.
-aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly),
- 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,
- 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,
- el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I,
- hts=\EH, ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il=\E[%p1%dL,
- il1=\E[L$<3>, ind=^K, invis=\E[8m, is1=\E[m\E7\E[H\E9\E8,
- is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, 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=\EOA, kf10=\EOJ, kf11=\EOK,
- kf12=\EOL, kf13=\EOM, kf14=\EON, kf15=\EOO, kf16=\EOP,
- kf17=\EOQ, kf18=\EOR, kf19=\EOS, kf2=\EOB, kf20=\EOT,
- 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\\,
- rmm=\E[>52l, rmso=\E[m, rmul=\E[m, sc=\E7,
- sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
- sgr0=\E[m,
- smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E\\,
- smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[2g,
- vpa=\E[%p1%{1}%+%dd,
-
-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[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
- sgr0=\E[7m\016, smso=\E[m, smul=\E[4;7m,
+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,
+ 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,
+ el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I,
+ hts=\EH, ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il=\E[%p1%dL,
+ il1=\E[L$<3>, ind=^K, invis=\E[8m, is1=\E[m\E7\E[H\E9\E8,
+ is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, 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=\EOA, kf10=\EOJ, kf11=\EOK,
+ kf12=\EOL, kf13=\EOM, kf14=\EON, kf15=\EOO, kf16=\EOP,
+ kf17=\EOQ, kf18=\EOR, kf19=\EOS, kf2=\EOB, kf20=\EOT,
+ 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\\,
+ rmm=\E[>52l, rmso=\E[m, rmul=\E[m, sc=\E7,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
+ sgr0=\E[m,
+ smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E\\,
+ smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[2g,
+ vpa=\E[%p1%{1}%+%dd,
+
+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[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
+ 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[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;,
- smacs=^O,
-aaa-18|ann arbor ambassador/18 lines,
- lines#18,
- is2=\E7\E[60;0;0;18p\E8,
- rmcup=\E[60;0;0;18p\E[60;1H\E[K, smcup=\E[18;0;0;18p,
- use=aaa+unk,
-aaa-18-rv|ann arbor ambassador/18 lines+reverse video,
- use=aaa+rv, use=aaa-18,
-aaa-20|ann arbor ambassador/20 lines,
- lines#20,
- is2=\E7\E[60;0;0;20p\E8,
- rmcup=\E[60;0;0;20p\E[60;1H\E[K, smcup=\E[20;0;0;20p,
- use=aaa+unk,
-aaa-22|ann arbor ambassador/22 lines,
- lines#22,
- is2=\E7\E[60;0;0;22p\E8,
- rmcup=\E[60;0;0;22p\E[60;1H\E[K, smcup=\E[22;0;0;22p,
- use=aaa+unk,
-aaa-24|ann arbor ambassador/24 lines,
- lines#24,
- is2=\E7\E[60;0;0;24p\E8,
- rmcup=\E[60;0;0;24p\E[60;1H\E[K, smcup=\E[24;0;0;24p,
- use=aaa+unk,
-aaa-24-rv|ann arbor ambassador/24 lines+reverse video,
- use=aaa+rv, use=aaa-24,
-aaa-26|ann arbor ambassador/26 lines,
- lines#26,
- is2=\E7\E[60;0;0;26p\E8,
- rmcup=\E[60;0;0;26p\E[26;1H\E[K,
- smcup=\E[H\E[J$<156>\E[26;0;0;26p, use=aaa+unk,
-aaa-28|ann arbor ambassador/28 lines,
- lines#28,
- is2=\E7\E[60;0;0;28p\E8,
- rmcup=\E[60;0;0;28p\E[28;1H\E[K,
- smcup=\E[H\E[J$<156>\E[28;0;0;28p, use=aaa+unk,
-aaa-30-s|aaa-s|ann arbor ambassador/30 lines w/status,
- eslok, hs,
- lines#29,
- dsl=\E7\E[60;0;0;30p\E[1;1H\E[K\E[H\E8\r\n\E[K,
- fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;30p\E8,
- rmcup=\E[60;1;0;30p\E[29;1H\E[K,
- smcup=\E[H\E[J$<156>\E[30;1;0;30p\E[30;1H\E[K,
- tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk,
-aaa-30-s-rv|aaa-s-rv|ann arbor ambassador/30 lines+status+reverse video,
- use=aaa+rv, use=aaa-30-s,
-aaa-s-ctxt|aaa-30-s-ctxt|ann arbor ambassador/30 lines+status+save context,
- rmcup=\E[60;1;0;30p\E[59;1H\E[K,
- smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s,
-aaa-s-rv-ctxt|aaa-30-s-rv-ct|ann arbor ambassador/30 lines+status+save context+reverse video,
- rmcup=\E[60;1;0;30p\E[59;1H\E[K,
- smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s-rv,
-aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines,
- lines#30,
- is2=\E7\E[60;0;0;30p\E8,
- rmcup=\E[60;0;0;30p\E[30;1H\E[K,
- smcup=\E[H\E[J$<156>\E[30;0;0;30p, use=aaa+unk,
-aaa-30-rv|aaa-rv|ann arbor ambassador/30 lines in reverse video,
- use=aaa+rv, use=aaa-30,
-aaa-30-ctxt|aaa-ctxt|ann arbor ambassador/30 lines; saving context,
- rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p,
- use=aaa-30,
-aaa-30-rv-ctxt|aaa-rv-ctxt|ann arbor ambassador/30 lines reverse video; saving context,
- rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p,
- use=aaa+rv, use=aaa-30,
-aaa-36|ann arbor ambassador/36 lines,
- lines#36,
- is2=\E7\E[60;0;0;36p\E8,
- rmcup=\E[60;0;0;36p\E[36;1H\E[K,
- smcup=\E[H\E[J$<156>\E[36;0;0;36p, use=aaa+unk,
-aaa-36-rv|ann arbor ambassador/36 lines+reverse video,
- use=aaa+rv, use=aaa-36,
-aaa-40|ann arbor ambassador/40 lines,
- lines#40,
- is2=\E7\E[60;0;0;40p\E8,
- rmcup=\E[60;0;0;40p\E[40;1H\E[K,
- smcup=\E[H\E[J$<156>\E[40;0;0;40p, use=aaa+unk,
-aaa-40-rv|ann arbor ambassador/40 lines+reverse video,
- use=aaa+rv, use=aaa-40,
-aaa-48|ann arbor ambassador/48 lines,
- lines#48,
- is2=\E7\E[60;0;0;48p\E8,
- rmcup=\E[60;0;0;48p\E[48;1H\E[K,
- smcup=\E[H\E[J$<156>\E[48;0;0;48p, use=aaa+unk,
-aaa-48-rv|ann arbor ambassador/48 lines+reverse video,
- use=aaa+rv, use=aaa-48,
-aaa-60-s|ann arbor ambassador/59 lines+status,
- eslok, hs,
- lines#59,
- dsl=\E7\E[60;0;0;60p\E[1;1H\E[K\E[H\E8\r\n\E[K,
- fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;60p\E8,
- tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk,
-aaa-60-s-rv|ann arbor ambassador/59 lines+status+reverse video,
- use=aaa+rv, use=aaa-60-s,
-aaa-60-dec-rv|ann arbor ambassador/dec mode+59 lines+status+rev video,
- use=aaa+dec, use=aaa+rv, use=aaa-60-s,
-aaa-60|ann arbor ambassador/60 lines,
- lines#60,
- is2=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8,
- use=aaa+unk,
-aaa-60-rv|ann arbor ambassador/60 lines+reverse video,
- use=aaa+rv, use=aaa-60,
-aaa-db|ann arbor ambassador 30/destructive backspace,
- OTbs@,
- cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h, use=aaa-30,
-
-guru|guru-33|guru+unk|ann arbor guru/33 lines 80 cols,
- lines#33,
- flash=\E[>59h$<100>\E[>59l,
- is2=\E7\E[255;0;0;33;80;80p\E8\E[J, is3=\E[>59l,
- rmcup=\E[255p\E[255;1H\E[K, smcup=\E[33p, use=aaa+unk,
-guru+rv|guru changes for reverse video,
- flash=\E[>59l$<100>\E[>59h, is3=\E[>59h,
-guru-rv|guru-33-rv|ann arbor guru/33 lines+reverse video,
- use=guru+rv, use=guru-33,
-guru+s|guru status line,
- eslok, hs,
- dsl=\E7\E[;0p\E[1;1H\E[K\E[H\E8\r\n\E[K, fsl=\E[>51l,
- rmcup=\E[255;1p\E[255;1H\E[K, smcup=,
- tsl=\E[>51h\E[1;%p1%dH\E[2K,
-guru-nctxt|guru with no saved context,
- smcup=\E[H\E[J$<156>\E[33p\E[255;1H\E[K, use=guru,
-guru-s|guru-33-s|ann arbor guru/33 lines+status,
- lines#32,
- is2=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J,
- smcup=\E[33;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
-guru-24|ann arbor guru 24 lines,
- cols#80, lines#24,
- is2=\E7\E[255;0;0;24;80;80p\E8\E[J, smcup=\E[24p,
- use=guru+unk,
-guru-44|ann arbor guru 44 lines,
- cols#97, lines#44,
- is2=\E7\E[255;0;0;44;97;100p\E8\E[J, smcup=\E[44p,
- use=guru+unk,
-guru-44-s|ann arbor guru/44 lines+status,
- lines#43,
- is2=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J,
- smcup=\E[44;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
-guru-76|guru with 76 lines by 89 cols,
- cols#89, lines#76,
- is2=\E7\E[255;0;0;76;89;100p\E8\E[J, smcup=\E[76p,
- use=guru+unk,
-guru-76-s|ann arbor guru/76 lines+status,
- cols#89, lines#75,
- is2=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J,
- smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
-guru-76-lp|guru-lp|guru with page bigger than line printer,
- cols#134, lines#76,
- is2=\E7\E[255;0;0;76;134;134p\E8\E[J, smcup=\E[76p,
- use=guru+unk,
-guru-76-w|guru 76 lines by 178 cols,
- cols#178, lines#76,
- is2=\E7\E[255;0;0;76;178;178p\E8\E[J, smcup=\E[76p,
- use=guru+unk,
-guru-76-w-s|ann arbor guru/76 lines+status+wide,
- cols#178, lines#75,
- is2=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J,
- smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
-guru-76-wm|guru 76 lines by 178 cols with 255 cols memory,
- cols#178, lines#76,
- is2=\E7\E[255;0;0;76;178;255p\E8\E[J, smcup=\E[76p,
- use=guru+unk,
-aaa-rv-unk|ann arbor unknown type,
- lh#0, lw#0, nlab#0,
- blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m,
- 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[%?%p1%!%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
- sgr0=\E[7m, smso=\E[m, smul=\E[4;7m,
+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[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;,
+ smacs=^O,
+aaa-18|ann arbor ambassador/18 lines,
+ lines#18,
+ is2=\E7\E[60;0;0;18p\E8,
+ rmcup=\E[60;0;0;18p\E[60;1H\E[K, smcup=\E[18;0;0;18p,
+ use=aaa+unk,
+aaa-18-rv|ann arbor ambassador/18 lines+reverse video,
+ use=aaa+rv, use=aaa-18,
+aaa-20|ann arbor ambassador/20 lines,
+ lines#20,
+ is2=\E7\E[60;0;0;20p\E8,
+ rmcup=\E[60;0;0;20p\E[60;1H\E[K, smcup=\E[20;0;0;20p,
+ use=aaa+unk,
+aaa-22|ann arbor ambassador/22 lines,
+ lines#22,
+ is2=\E7\E[60;0;0;22p\E8,
+ rmcup=\E[60;0;0;22p\E[60;1H\E[K, smcup=\E[22;0;0;22p,
+ use=aaa+unk,
+aaa-24|ann arbor ambassador/24 lines,
+ lines#24,
+ is2=\E7\E[60;0;0;24p\E8,
+ rmcup=\E[60;0;0;24p\E[60;1H\E[K, smcup=\E[24;0;0;24p,
+ use=aaa+unk,
+aaa-24-rv|ann arbor ambassador/24 lines+reverse video,
+ use=aaa+rv, use=aaa-24,
+aaa-26|ann arbor ambassador/26 lines,
+ lines#26,
+ is2=\E7\E[60;0;0;26p\E8,
+ rmcup=\E[60;0;0;26p\E[26;1H\E[K,
+ smcup=\E[H\E[J$<156>\E[26;0;0;26p, use=aaa+unk,
+aaa-28|ann arbor ambassador/28 lines,
+ lines#28,
+ is2=\E7\E[60;0;0;28p\E8,
+ rmcup=\E[60;0;0;28p\E[28;1H\E[K,
+ smcup=\E[H\E[J$<156>\E[28;0;0;28p, use=aaa+unk,
+aaa-30-s|aaa-s|ann arbor ambassador/30 lines w/status,
+ eslok, hs,
+ lines#29,
+ dsl=\E7\E[60;0;0;30p\E[1;1H\E[K\E[H\E8\r\n\E[K,
+ fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;30p\E8,
+ rmcup=\E[60;1;0;30p\E[29;1H\E[K,
+ smcup=\E[H\E[J$<156>\E[30;1;0;30p\E[30;1H\E[K,
+ tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk,
+aaa-30-s-rv|aaa-s-rv|ann arbor ambassador/30 lines+status+reverse video,
+ use=aaa+rv, use=aaa-30-s,
+aaa-s-ctxt|aaa-30-s-ctxt|ann arbor ambassador/30 lines+status+save context,
+ rmcup=\E[60;1;0;30p\E[59;1H\E[K,
+ smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s,
+aaa-s-rv-ctxt|aaa-30-s-rv-ct|ann arbor ambassador/30 lines+status+save context+reverse video,
+ rmcup=\E[60;1;0;30p\E[59;1H\E[K,
+ smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s-rv,
+aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines,
+ lines#30,
+ is2=\E7\E[60;0;0;30p\E8,
+ rmcup=\E[60;0;0;30p\E[30;1H\E[K,
+ smcup=\E[H\E[J$<156>\E[30;0;0;30p, use=aaa+unk,
+aaa-30-rv|aaa-rv|ann arbor ambassador/30 lines in reverse video,
+ use=aaa+rv, use=aaa-30,
+aaa-30-ctxt|aaa-ctxt|ann arbor ambassador/30 lines; saving context,
+ rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p,
+ use=aaa-30,
+aaa-30-rv-ctxt|aaa-rv-ctxt|ann arbor ambassador/30 lines reverse video; saving context,
+ rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p,
+ use=aaa+rv, use=aaa-30,
+aaa-36|ann arbor ambassador/36 lines,
+ lines#36,
+ is2=\E7\E[60;0;0;36p\E8,
+ rmcup=\E[60;0;0;36p\E[36;1H\E[K,
+ smcup=\E[H\E[J$<156>\E[36;0;0;36p, use=aaa+unk,
+aaa-36-rv|ann arbor ambassador/36 lines+reverse video,
+ use=aaa+rv, use=aaa-36,
+aaa-40|ann arbor ambassador/40 lines,
+ lines#40,
+ is2=\E7\E[60;0;0;40p\E8,
+ rmcup=\E[60;0;0;40p\E[40;1H\E[K,
+ smcup=\E[H\E[J$<156>\E[40;0;0;40p, use=aaa+unk,
+aaa-40-rv|ann arbor ambassador/40 lines+reverse video,
+ use=aaa+rv, use=aaa-40,
+aaa-48|ann arbor ambassador/48 lines,
+ lines#48,
+ is2=\E7\E[60;0;0;48p\E8,
+ rmcup=\E[60;0;0;48p\E[48;1H\E[K,
+ smcup=\E[H\E[J$<156>\E[48;0;0;48p, use=aaa+unk,
+aaa-48-rv|ann arbor ambassador/48 lines+reverse video,
+ use=aaa+rv, use=aaa-48,
+aaa-60-s|ann arbor ambassador/59 lines+status,
+ eslok, hs,
+ lines#59,
+ dsl=\E7\E[60;0;0;60p\E[1;1H\E[K\E[H\E8\r\n\E[K,
+ fsl=\E[>51l, is2=\r\n\E[A\E7\E[60;1;0;60p\E8,
+ tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk,
+aaa-60-s-rv|ann arbor ambassador/59 lines+status+reverse video,
+ use=aaa+rv, use=aaa-60-s,
+aaa-60-dec-rv|ann arbor ambassador/dec mode+59 lines+status+rev video,
+ use=aaa+dec, use=aaa+rv, use=aaa-60-s,
+aaa-60|ann arbor ambassador/60 lines,
+ lines#60,
+ is2=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8,
+ use=aaa+unk,
+aaa-60-rv|ann arbor ambassador/60 lines+reverse video,
+ use=aaa+rv, use=aaa-60,
+aaa-db|ann arbor ambassador 30/destructive backspace,
+ OTbs@,
+ cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h, use=aaa-30,
+
+guru|guru-33|guru+unk|ann arbor guru/33 lines 80 cols,
+ lines#33,
+ flash=\E[>59h$<100>\E[>59l,
+ is2=\E7\E[255;0;0;33;80;80p\E8\E[J, is3=\E[>59l,
+ rmcup=\E[255p\E[255;1H\E[K, smcup=\E[33p, use=aaa+unk,
+guru+rv|guru changes for reverse video,
+ flash=\E[>59l$<100>\E[>59h, is3=\E[>59h,
+guru-rv|guru-33-rv|ann arbor guru/33 lines+reverse video,
+ use=guru+rv, use=guru-33,
+guru+s|guru status line,
+ eslok, hs,
+ dsl=\E7\E[;0p\E[1;1H\E[K\E[H\E8\r\n\E[K, fsl=\E[>51l,
+ rmcup=\E[255;1p\E[255;1H\E[K, smcup=,
+ tsl=\E[>51h\E[1;%p1%dH\E[2K,
+guru-nctxt|guru with no saved context,
+ smcup=\E[H\E[J$<156>\E[33p\E[255;1H\E[K, use=guru,
+guru-s|guru-33-s|ann arbor guru/33 lines+status,
+ lines#32,
+ is2=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J,
+ smcup=\E[33;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
+guru-24|ann arbor guru 24 lines,
+ cols#80, lines#24,
+ is2=\E7\E[255;0;0;24;80;80p\E8\E[J, smcup=\E[24p,
+ use=guru+unk,
+guru-44|ann arbor guru 44 lines,
+ cols#97, lines#44,
+ is2=\E7\E[255;0;0;44;97;100p\E8\E[J, smcup=\E[44p,
+ use=guru+unk,
+guru-44-s|ann arbor guru/44 lines+status,
+ lines#43,
+ is2=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J,
+ smcup=\E[44;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
+guru-76|guru with 76 lines by 89 cols,
+ cols#89, lines#76,
+ is2=\E7\E[255;0;0;76;89;100p\E8\E[J, smcup=\E[76p,
+ use=guru+unk,
+guru-76-s|ann arbor guru/76 lines+status,
+ cols#89, lines#75,
+ is2=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J,
+ smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
+guru-76-lp|guru-lp|guru with page bigger than line printer,
+ cols#134, lines#76,
+ is2=\E7\E[255;0;0;76;134;134p\E8\E[J, smcup=\E[76p,
+ use=guru+unk,
+guru-76-w|guru 76 lines by 178 cols,
+ cols#178, lines#76,
+ is2=\E7\E[255;0;0;76;178;178p\E8\E[J, smcup=\E[76p,
+ use=guru+unk,
+guru-76-w-s|ann arbor guru/76 lines+status+wide,
+ cols#178, lines#75,
+ is2=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J,
+ smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk,
+guru-76-wm|guru 76 lines by 178 cols with 255 cols memory,
+ cols#178, lines#76,
+ is2=\E7\E[255;0;0;76;178;255p\E8\E[J, smcup=\E[76p,
+ use=guru+unk,
+aaa-rv-unk|ann arbor unknown type,
+ lh#0, lw#0, nlab#0,
+ blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m,
+ 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[%?%p1%!%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
+ sgr0=\E[7m, smso=\E[m, smul=\E[4;7m,
#### Applied Digital Data Systems (adds)
#
@@ -9533,78 +11010,129 @@ aaa-rv-unk|ann arbor unknown type,
# Fax: (516)-342-7378
# Web: http://boundless.com
#
-# Their voice mail used to describe the place as "SunRiver (formerly ADDS)".
-# In 1995 Boundless acquired DEC's terminals business.
+# Their voice mail used to describe the place as "SunRiver (formerly ADDS)".
+# In 1995 Boundless acquired DEC's terminals business.
#
# Regent: lowest common denominator, works on all regents.
# (regent: renamed ":bc:" to ":le:" -- esr)
-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,
+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,
# 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,
- kf0=^B1\r, kf1=^B2\r, kf2=^B3\r, kf3=^B4\r, kf4=^B5\r,
- kf5=^B6\r, kf6=^B7\r, kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3,
- lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@,
- sgr0=\E0@, smso=\E0P, smul=\E0`, use=regent,
-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,
- use=regent20,
-regent40|Adds Regent 40,
- xmc#1,
- bel=^G, dl1=\El$<2*>, il1=\EM$<2*>, kf0=^B1\r, kf1=^B2\r,
- kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r,
- kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6,
- lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, sgr0=\E0@, smso=\E0P,
- smul=\E0`, use=regent25,
-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,
- use=regent40+,
+regent100|Adds Regent 100,
+ xmc#1,
+ bel=^G,
+ cup=\013%p1%' '%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c,
+ kf0=^B1\r, kf1=^B2\r, kf2=^B3\r, kf3=^B4\r, kf4=^B5\r,
+ kf5=^B6\r, kf6=^B7\r, kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3,
+ lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@,
+ sgr0=\E0@, smso=\E0P, smul=\E0`, use=regent,
+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,
+ use=regent20,
+regent40|Adds Regent 40,
+ xmc#1,
+ bel=^G, dl1=\El$<2*>, il1=\EM$<2*>, kf0=^B1\r, kf1=^B2\r,
+ kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r,
+ kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6,
+ lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, sgr0=\E0@, smso=\E0P,
+ smul=\E0`, use=regent25,
+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,
+ 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,
- 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,
- kf0=^B1, kf2=^B2, kf3=^B!, kf4=^B", kf5=^B#, khome=^A, ll=^A,
- rmso=^O, rmul=^O, sgr0=^O, smso=^N, smul=^N,
+viewpoint|addsviewpoint|adds viewpoint,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=^L, cnorm=\017\E0`, cr=^M, cub1=^H, cud1=^J,
+ cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
+ 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,
+ 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
-screwpoint|adds viewpoint with ^O bug,
- cvvis@, rmso@, rmul@, smso@, smul@, use=viewpoint,
+screwpoint|adds viewpoint with ^O bug,
+ cvvis@, rmso@, rmul@, smso@, smul@, use=viewpoint,
# From: Jay S. Rouman <jsr@dexter.mi.org> 5 Jul 92
-# The <civis>/<cnorm>/<sgr>/<sgr0> strings were added by ESR from specs.
+# The <civis>/<cnorm>/<sgr>/<sgr0> strings were added by ESR from specs.
# Theory; the vp3a+ wants \E0%c to set highlights, where normal=01000000,
# underline=01100000, rev=01010000, blink=01000010,dim=01000001,
# invis=01000100 and %c is the logical or of desired attributes.
# There is also a `tag bit' enabling attributes, set by \E) and unset by \E(.
-vp3a+|viewpoint3a+|adds viewpoint 3a+,
- am, bw,
- cols#80, it#8, lines#24,
- civis=^W, clear=\E*$<80>, cnorm=^X, cr=^M, cub1=^H, cud1=^J,
- cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
- ed=\EY$<80>, el=\ET, home=^^, ht=^I, ind=^J, kbs=^H, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, nel=^M^J, rmso=\E(,
- sgr=\E0%{64}%?%p1%tQ%|%;%?%p2%t%{96}%|%;%?%p3%tP%|%;%?%p4%t%{2}%|%;%?%p5%t%{1}%|%;%?%p7%tD%|%;%c\E),
- sgr0=\E(, smso=\E0Q\E),
-vp60|viewpoint60|addsvp60|adds viewpoint60,
- use=regent40,
+#
+# Update by TD - 2004:
+# Adapted from
+# http://www.cs.utk.edu/~shuford/terminal/adds_viewpoint_news.txt
+#
+# COMMANDS ASCII CODE
+#
+# Address, Absolute ESC,=,row,column
+# Beep BEL
+# Aux Port Enable ESC,@
+# Aux Port Disable ESC,A
+# Backspace BS
+# Cursor back BS
+# Cursor down LF
+# Cursor forward FF
+# Cursor home RS
+# Cursor up VT
+# Cursor supress ETB
+# Cursor enable CAN
+# Erase to end of line ESC,T
+# Erase to end of page ESC,Y
+# Erase screen SUB
+# Keyboard lock SI
+# Keyboard unlock SO
+# Read current cursor position ESC,?
+# Set Attribute ESC,0,x (see below for values of x)
+# Tag bit reset ESC,(
+# Tag bit set ESC,)
+# Transparent Print on ESC,3
+# Transparent Print off ESC,4
+#
+#
+# ATTRIBUTES
+#
+# Normal @ 0100
+# Half Intensity A 0101
+# Blinking B 0102
+# Half Intensity Blinking C 0103
+# Reverse Video P 0120
+# Reverse Video Half Intensity Q 0121
+# Reverse Video Blinking R 0122
+# Reverse Video Half Intensity
+# Blinking S 0123
+# Underlined ` 0140
+# Underlined Half Intensity a 0141
+# Underlined Blinking b 0142
+# Underlined Half Intensity
+# Blinking c 0143
+# Video suppress D 0104
+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,
+ 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(%;,
+ sgr0=\E(, smso=\E0Q\E), smul=\E0`\E),
+vp60|viewpoint60|addsvp60|adds viewpoint60,
+ use=regent40,
#
# adds viewpoint 90 - from cornell
# Note: emacs sends ei occasionally to insure the terminal is out of
@@ -9616,29 +11144,29 @@ vp60|viewpoint60|addsvp60|adds viewpoint60,
# - <clear=\EG\Ek>: clears screen and visual attributes without affecting
# the status line
# Function key and label capabilities merged in from SCO.
-vp90|viewpoint90|adds viewpoint 90,
- OTbs, bw, msgr, xhp,
- cols#80, lines#24,
- clear=\EG\Ek, cub1=^H, cud1=^J, cuf1=^F,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EE,
- dl1=\El, ed=\Ek, el=\EK, home=\EY\s\s, ht=^I,
- ich1=\EF \EF\025, ind=^J, kbs=^H, kcub1=^U, kcud1=^J,
- 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,
- 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,
+vp90|viewpoint90|adds viewpoint 90,
+ OTbs, bw, msgr, xhp,
+ cols#80, lines#24,
+ clear=\EG\Ek, cub1=^H, cud1=^J, cuf1=^F,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EE,
+ dl1=\El, ed=\Ek, el=\EK, home=\EY\s\s, ht=^I,
+ ich1=\EF \EF\025, ind=^J, kbs=^H, kcub1=^U, kcud1=^J,
+ 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,
+ 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,
# Note: if return acts weird on a980, check internal switch #2
# on the top chip on the CONTROL pc board.
-adds980|a980|adds consul 980,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\014$<1>\013@, cr=^M, cub1=^H, cud1=^J,
- cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d,
- dl1=\E\017$<13>, il1=\E\016$<13>, ind=^J, kf0=\E0, kf1=\E1,
- kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8,
- kf9=\E9, rmso=^O, sgr0=^O, smso=^Y^^^N,
+adds980|a980|adds consul 980,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\014$<1>\013@, cr=^M, cub1=^H, cud1=^J,
+ cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d,
+ dl1=\E\017$<13>, il1=\E\016$<13>, ind=^J, kf0=\E0, kf1=\E1,
+ kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8,
+ kf9=\E9, rmso=^O, sgr0=^O, smso=^Y^^^N,
#### C. Itoh Electronics
#
@@ -9650,27 +11178,27 @@ adds980|a980|adds consul 980,
# CIT 80 - vt-52 emulator, the termcap has been modified to remove
# the delay times and do an auto tab set rather than the indirect
# file used in vt100.
-cit80|cit-80|citoh 80,
- OTbs, am,
- cols#80, lines#24,
- clear=\E[H\EJ, cr=^M, cub1=^H, cuf1=\E[C,
- cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L,
- ind=^J, is2=\E>, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, rmkx=\E[?1l\E>, smkx=\E[?1h\E=,
+cit80|cit-80|citoh 80,
+ OTbs, am,
+ cols#80, lines#24,
+ clear=\E[H\EJ, cr=^M, cub1=^H, cuf1=\E[C,
+ cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L,
+ ind=^J, 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)
-cit101|citc|C.itoh fast vt100,
- OTbs, am, xenl,
- cols#80, lines#24,
- bel=^G, clear=\E[H\E[2J, cnorm=\E[V\E8, cub1=^H, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E7\E[U,
- dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K,
- flash=\E[?5h$<200/>\E[?5l, ich1=\E[@, il1=\E[L,
- is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
- sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
- smul=\E[4m,
+cit101|citc|C.itoh fast vt100,
+ OTbs, am, xenl,
+ cols#80, lines#24,
+ bel=^G, clear=\E[H\E[2J, cnorm=\E[V\E8, cub1=^H, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E7\E[U,
+ dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K,
+ flash=\E[?5h$<200/>\E[?5l, ich1=\E[@, il1=\E[L,
+ is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+ sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
+ smul=\E[4m,
# CIE Terminals CIT-101e from Geoff Kuenning <callan!geoff> via BRL
# The following termcap entry was created from the Callan cd100 entry. The
# last two lines (with the capabilities in caps) are used by RM-cobol to allow
@@ -9678,18 +11206,18 @@ cit101|citc|C.itoh fast vt100,
# (cit101e: removed unknown :f0=\EOp:f1=\EOq:f2=\EOr:f3=\EOs:f4=\EOt:f5=\EOu:\
# f6=\EOv:f7=\EOw:f8=\EOx:f9=\EOy:AB=\E[0;5m:AL=\E[m:AR=\E[0;7m:AS=\E[0;5;7m:\
# :NB=\E[0;1;5m:NM=\E[0;1m:NR=\E[0;1;7m:NS=\E[0;1;5;7m: -- esr)
-cit101e|C. Itoh CIT-101e,
- OTbs, OTpt, am, mir, msgr,
- cols#80, it#8, lines#24,
- acsc=, clear=\E[H\E[J, cnorm=, csr=\E[%i%p1%2d;%p2%2dr,
- cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A,
- cvvis=\E[?1l\E[?4l\E[?7h, dch1=\E[P, dl1=\E[M, ed=\E[J,
- el=\E[K, if=/usr/share/tabset/vt100, il1=\E[L,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOT,
- kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOm, kf6=\EOl,
- kf7=\EOM, kf8=\EOn, rc=\E8, ri=\EM, rmacs=^O, rmir=\E[4l,
- rmkx=\E>, rmso=\E[m, rmul=\E[m, sc=\E7, smacs=^N, smir=\E[4h,
- smkx=\E=, smso=\E[7m, smul=\E[4m,
+cit101e|C. Itoh CIT-101e,
+ OTbs, OTpt, am, mir, msgr,
+ cols#80, it#8, lines#24,
+ acsc=, clear=\E[H\E[J, cnorm=, csr=\E[%i%p1%2d;%p2%2dr,
+ cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A,
+ cvvis=\E[?1l\E[?4l\E[?7h, dch1=\E[P, dl1=\E[M, ed=\E[J,
+ el=\E[K, if=/usr/share/tabset/vt100, il1=\E[L,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOT,
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOm, kf6=\EOl,
+ kf7=\EOM, kf8=\EOn, rc=\E8, ri=\EM, rmacs=^O, rmir=\E[4l,
+ rmkx=\E>, rmso=\E[m, rmul=\E[m, sc=\E7, smacs=^N, smir=\E[4h,
+ smkx=\E=, smso=\E[7m, smul=\E[4m,
# From: David S. Lawyer, June 1997:
# The CIT 101-e was made in Japan in 1983-4 and imported by CIE
# Terminals in Irvine, CA. It was part of CITOH Electronics. In the
@@ -9704,41 +11232,41 @@ cit101e|C. Itoh CIT-101e,
# terminal. Then change any options you want (provided that they are
# compatible with the termcap). For my terminal I set: Screen
# Background: light; Keyclicks: silent; Auto wraparound: on; CRT saver:
-# on. I also set up mine for parity (but you may not need it). Then
+# on. I also set up mine for parity (but you may not need it). Then
# save the setup with ^S.
# (cit101e-rv: added empty <rmcup> to suppress a tic warning. --esr)
-cit101e-rv|Citoh CIT-101e (sets reverse video),
- am, eo, mir, msgr, xenl, xon,
- cols#80, it#8, lines#24,
- OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
- civis=\E[1v, clear=\E[H\E[J, cnorm=\E[0;3;4v, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- 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/>,
- 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,
- 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,
-cit101e-n|CIT-101e w/o am,
- am@,
- cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J,
- use=cit101e,
-cit101e-132|CIT-101e with 132 cols,
- cols#132,
- kbs=^H, kcub1=^H, kcud1=^J, use=cit101e,
-cit101e-n132|CIT-101e with 132 cols w/o am,
- am@,
- cols#132,
- cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J,
- use=cit101e,
+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,
+ 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/>,
+ 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,
+ 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,
+cit101e-n|CIT-101e w/o am,
+ am@,
+ cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J,
+ use=cit101e,
+cit101e-132|CIT-101e with 132 cols,
+ cols#132,
+ kbs=^H, kcub1=^H, kcud1=^J, use=cit101e,
+cit101e-n132|CIT-101e with 132 cols w/o am,
+ am@,
+ cols#132,
+ cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J,
+ use=cit101e,
# CIE Terminals CIT-500 from BRL
# The following SET-UP modes are assumed for normal operation:
# GENERATE_XON/XOFF:YES DUPLEX:FULL NEWLINE:OFF
@@ -9750,110 +11278,110 @@ cit101e-n132|CIT-101e with 132 cols w/o am,
# by the "reset", "tset", or "tabs" utilities. No delays are specified; use
# "stty ixon -ixany" to enable DC3/DC1 flow control!
# (cit500: I added <rmam>/<smam> based on the init string -- esr)
-cit500|CIE Terminals CIT-500,
- 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,
- 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,
- 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,
- khome=\E[H, kich1=\E[4h, kil1=\E[L, krmir=\E[4l, lf0=PF1,
- lf1=PF2, lf2=PF3, lf3=PF4, lf4=F15, lf5=F16, lf6=F17, lf7=F18,
- lf8=F19, lf9=F20, ll=\E[64H, nel=\EE, rc=\E8, rev=\E[7m,
- ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
- rmso=\E[m, rmul=\E[m,
- rs1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>,
- sc=\E7, sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
- smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+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,
+ 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,
+ 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,
+ khome=\E[H, kich1=\E[4h, kil1=\E[L, krmir=\E[4l, lf0=PF1,
+ lf1=PF2, lf2=PF3, lf3=PF4, lf4=F15, lf5=F16, lf6=F17, lf7=F18,
+ lf8=F19, lf9=F20, ll=\E[64H, nel=\EE, rc=\E8, rev=\E[7m,
+ ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>,
+ rmso=\E[m, rmul=\E[m,
+ rs1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>,
+ sc=\E7, sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h,
+ smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
# C. Itoh printers begin here
-citoh|ci8510|8510|c.itoh 8510a,
- cols#80, it#8,
- bold=\E!, cub1@,
- is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073.,
- rep=\ER%p2%03d%p1%c, ri=\Er, rmul=\EY, sgr0=\E"\EY,
- smul=\EX, use=lpr,
-citoh-pica|citoh in pica,
- is1=\EN, use=citoh,
-citoh-elite|citoh in elite,
- cols#96,
- is1=\EE,
- is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089.,
- use=citoh,
-citoh-comp|citoh in compressed,
- cols#136,
- is1=\EQ,
- is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089\,097\,105\,113\,121\,129.,
- use=citoh,
+citoh|ci8510|8510|c.itoh 8510a,
+ cols#80, it#8,
+ bold=\E!, cub1@,
+ is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073.,
+ rep=\ER%p2%03d%p1%c, ri=\Er, rmul=\EY, sgr0=\E"\EY,
+ smul=\EX, use=lpr,
+citoh-pica|citoh in pica,
+ is1=\EN, use=citoh,
+citoh-elite|citoh in elite,
+ cols#96,
+ is1=\EE,
+ is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089.,
+ use=citoh,
+citoh-comp|citoh in compressed,
+ cols#136,
+ is1=\EQ,
+ is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089\,097\,105\,113\,121\,129.,
+ use=citoh,
# 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,
- is1=\EP, use=citoh,
-citoh-6lpi|citoh in 6 lines per inch mode,
- is3=\EA, use=citoh,
-citoh-8lpi|citoh in 8 lines per inch mode,
- lines#88,
- is3=\EB, use=citoh,
+citoh-prop|citoh-ps|ips|citoh in proportional spacing mode,
+ cols#32767,
+ is1=\EP, use=citoh,
+citoh-6lpi|citoh in 6 lines per inch mode,
+ is3=\EA, use=citoh,
+citoh-8lpi|citoh in 8 lines per inch mode,
+ lines#88,
+ is3=\EB, use=citoh,
#### Control Data (cdc)
#
-cdc456|cdc 456 terminal,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X,
- el=^V, home=^Y, il1=\EL, ind=^J,
+cdc456|cdc 456 terminal,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X,
+ el=^V, home=^Y, il1=\EL, ind=^J,
# 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,
- kcuu1=^W, khome=^Y,
-cdc721ll|CDC Vikingll,
- OTbs, am,
- cols#132, lines#24,
- clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c,
- cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I,
- kcuu1=^W, khome=^Y,
+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,
+ kcuu1=^W, khome=^Y,
+cdc721ll|CDC Vikingll,
+ OTbs, am,
+ cols#132, lines#24,
+ clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c,
+ cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I,
+ kcuu1=^W, khome=^Y,
# (cdc752: the BRL entry had :ll=\E1 ^Z: commented out
-cdc752|CDC 752,
- OTbs, am, bw, xhp,
- cols#80, lines#24,
- bel=^G, clear=\030\E1\s\s, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
- cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, el=^V,
- home=\E1\s\s, ind=^J, ll=^Y, rs1=\E1 \030\002\003\017,
+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,
+ 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,
# CDC 756
# The following switch/key settings are assumed for normal operation:
# 96 chars SCROLL FULL duplex not BLOCK
# Other switches may be set according to communication requirements.
# Insert/delete-character cannot be used, as the whole display is affected.
# "so" & "se" are commented out until jove handles "sg" correctly.
-cdc756|CDC 756,
- OTbs, am, bw,
- OTkn#10, cols#80, lines#24,
- bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
- cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z,
- dl1=\EJ$<6*/>, ed=^X, el=^V, home=^Y, il1=\EL$<6*/>, ind=^J,
- kbs=^H, kcub1=^H, kcud1=^J, 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,
+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,
+ 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,
+ 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,
#
# CDC 721 from Robert Viduya, Ga. Tech. <ihnp4!gatech!gitpyr!robert> via BRL.
#
# Part of the long initialization string defines the "DOWN" key to the left
-# of the tab key to send an ESC. The real ESC key is positioned way out
+# of the tab key to send an ESC. The real ESC key is positioned way out
# in right field.
#
# The termcap won't work in 132 column mode due to the way it it moves the
@@ -9861,24 +11389,24 @@ cdc756|CDC 756,
# handle the 721 in 132 column mode.
#
# (cdc721: changed :ri: to :sr: -- esr)
-cdc721-esc|Control Data 721,
- OTbs, OTpt, am, bw, msgr, xon,
- OTkn#10, cols#80, it#8, lines#30,
- bel=^G, blink=^N, cbt=^^^K, clear=^L, cub1=^H, cud1=^Z,
- cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, cuu1=^W,
- dch1=^^N, dim=^\, dl1=^^Q, ed=^^P, el=^K, home=^Y, hts=^^^RW,
- 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,
- 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,
+cdc721-esc|Control Data 721,
+ OTbs, OTpt, am, bw, msgr, xon,
+ OTkn#10, cols#80, it#8, lines#30,
+ bel=^G, blink=^N, cbt=^^^K, clear=^L, cub1=^H, cud1=^Z,
+ cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, cuu1=^W,
+ dch1=^^N, dim=^\, dl1=^^Q, ed=^^P, el=^K, home=^Y, hts=^^^RW,
+ 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,
+ 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,
#### Getronics
#
-# Getronics is a Dutch electronics company that at one time was called
+# Getronics is a Dutch electronics company that at one time was called
# `Geveke' and made async terminals; but (according to the company itself!)
# they've lost all their documentation on the command set. The hardware
# documentation suggests the terminals were actually manufactured by a
@@ -9898,31 +11426,31 @@ cdc721-esc|Control Data 721,
# non-conformant (but more featureful) ANSI mode.
#
# From: Stephen Peterson <stv@utrecht.ow.nl>, 27 May 1995
-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,
- 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,
- 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,
- 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,
- 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,
- vpa=\E[%i%p1%dd,
+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,
+ 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,
+ 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,
+ 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,
+ 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,
+ vpa=\E[%i%p1%dd,
#### Human Designed Systems (Concept)
#
@@ -9932,7 +11460,7 @@ visa50|geveke visa 50 terminal in ansi 80 character mode,
# Vox: (610)-277-8300
# Fax: (610)-275-5739
# Net: support@hds.com
-#
+#
# John Martin <john@hds.com> is their termcap expert. They're mostly out of
# the character-terminal business now (1995) and making X terminals. In
# particular, the whole `Concept' line described here was discontinued long
@@ -9945,125 +11473,125 @@ visa50|geveke visa 50 terminal in ansi 80 character mode,
#
# There seem to be a number of different versions of the C108 PROMS
# (with bug fixes in its Z-80 program).
-#
+#
# The first one that we had would lock out the keyboard of you
# sent lots of short lines (like /usr/dict/words) at 9600 baud.
# Try that on your C108 and see if it sends a ^S when you type it.
# If so, you have an old version of the PROMs.
-#
+#
# You should configure the C108 to send ^S/^Q before running this.
# It is much faster (at 9600 baud) than the c100 because the delays
# are not fixed.
# new status line display entries for c108-8p:
-# <is3> - init str #3 - setup term for status display -
-# set programmer mode, select window 2, define window at last
+# <is3> - init str #3 - setup term for status display -
+# set programmer mode, select window 2, define window at last
# line of memory, set bkgnd stat mesg there, select window 0.
-#
-# <tsl> - to status line - select window 2, home cursor, erase to
+#
+# <tsl> - to status line - select window 2, home cursor, erase to
# end-of-window, 1/2 bright on, goto(line#0, col#?)
-#
+#
# <fsl> - from status line - 1/2 bright off, select window 0
-#
-# <dsl> - disable status display - set bkgnd status mesg with
+#
+# <dsl> - disable status display - set bkgnd status mesg with
# illegal window #
-#
-# There are probably more function keys that should be added but
+#
+# There are probably more function keys that should be added but
# I don't know what they are.
#
# 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,
- 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,
- cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s,
- ind=^J, 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,
- tsl=\E z"\E?\E\005\EE\Ea %+\s, use=c100,
-c108-rv|c108-rv-8p|concept 108 w/8 pages in reverse video,
- rmcup=\Ev \002 p\Ep\r\n, smcup=\EU\Ev 8p\Ep\r,
- use=c108-rv-4p,
-c108-rv-4p|concept108rv4p|concept 108 w/4 pages in reverse video,
- flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, smso=\EE,
- use=c108-4p,
-c108-w|c108-w-8p|concept108-w-8|concept108-w8p|concept 108 w/8 pages in wide mode,
- cols#132,
- is1=\E F\E", rmcup=\Ev ^A0\001D\Ep\r\n,
- smcup=\EU\Ev 8\001D\Ep\r, use=c108-8p,
+c108|concept108|c108-8p|concept108-8p|concept 108 w/8 pages,
+ is3=\EU\E z"\Ev\001\177 !p\E ;"\E z \Ev \001\177p\Ep\n,
+ rmcup=\Ev \001\177p\Ep\r\n, use=c108-4p,
+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,
+ cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s,
+ ind=^J, 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,
+ tsl=\E z"\E?\E\005\EE\Ea %+\s, use=c100,
+c108-rv|c108-rv-8p|concept 108 w/8 pages in reverse video,
+ rmcup=\Ev \002 p\Ep\r\n, smcup=\EU\Ev 8p\Ep\r,
+ use=c108-rv-4p,
+c108-rv-4p|concept108rv4p|concept 108 w/4 pages in reverse video,
+ flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, smso=\EE,
+ use=c108-4p,
+c108-w|c108-w-8p|concept108-w-8|concept108-w8p|concept 108 w/8 pages in wide mode,
+ cols#132,
+ is1=\E F\E", rmcup=\Ev ^A0\001D\Ep\r\n,
+ smcup=\EU\Ev 8\001D\Ep\r, use=c108-8p,
# Concept 100:
-# These have only window relative cursor addressing, not screen
-# relative. To get it to work right here, smcup/rmcup (which
-# were invented for the concept) lock you into a one page
+# These have only window relative cursor addressing, not screen
+# relative. To get it to work right here, smcup/rmcup (which
+# were invented for the concept) lock you into a one page
# window for screen style programs.
-#
+#
# To get out of the one page window, we use a clever trick:
-# we set the window size to zero ("\Ev " in rmcup) which the
-# terminal recognizes as an error and resets the window to all
+# we set the window size to zero ("\Ev " in rmcup) which the
+# terminal recognizes as an error and resets the window to all
# of memory.
-#
+#
# This trick works on c100 but does not on c108, sigh.
-#
-# Some tty drivers use cr3 for concept, others use nl3, hence
-# the delays on cr and ind below. This padding is only needed at
-# 9600 baud and up. One or the other is commented out depending on
+#
+# Some tty drivers use cr3 for concept, others use nl3, hence
+# the delays on cr and ind below. This padding is only needed at
+# 9600 baud and up. One or the other is commented out depending on
# local conventions.
-#
-# 2 ms padding on <rmcup> isn't always enough. 6 works fine. Maybe
+#
+# 2 ms padding on <rmcup> isn't always enough. 6 works fine. Maybe
# less than 6 but more than 2 will work.
-#
-# Note: can't use function keys f7-f10 because they are
-# indistinguishable from arrow keys (!), also, del char and
+#
+# Note: can't use function keys f7-f10 because they are
+# indistinguishable from arrow keys (!), also, del char and
# clear eol use xon/xoff so they probably won't work very well.
-#
-# Also note that we don't define insrt/del char/delline/eop/send
-# because they don't transmit unless we reset them - I figured
+#
+# Also note that we don't define insrt/del char/delline/eop/send
+# because they don't transmit unless we reset them - I figured
# it was a bad idea to clobber their definitions.
-#
-# The <mc5> sequence changes the escape character to ^^ so that
-# escapes will be passed through to the printer. Only trouble
-# is that ^^ won't be - ^^ was chosen to be unlikely.
-# Unfortunately, if you're sending raster bits through to be
+#
+# The <mc5> sequence changes the escape character to ^^ so that
+# escapes will be passed through to the printer. Only trouble
+# is that ^^ won't be - ^^ was chosen to be unlikely.
+# Unfortunately, if you're sending raster bits through to be
# plotted, any character you choose will be likely, so we lose.
#
-# \EQ"\EY(^W (send anything from printer to host, for xon/xoff)
-# cannot be # in is2 because it will hang a c100 with no printer
+# \EQ"\EY(^W (send anything from printer to host, for xon/xoff)
+# cannot be # in is2 because it will hang a c100 with no printer
# if sent twice.
-c100|concept100|concept|c104|c100-4p|hds concept 100,
- 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=,
- 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*>,
- 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,
- 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,
- kf4=\E8, kf5=\E9, kf6=\E\:a, kf7=\E\:b, kf8=\E\:c, khome=\E?,
- khts=\E], kich1=\E^P, kil1=\E^R, kind=\E[, knp=\E-, kpp=\E.,
- kri=\E\\, krmir=\E\0, mc4=\036o \E\EQ!\EYP\027,
- mc5=\EQ"\EY(\027\EYD\Eo \036, prot=\EI,
- rep=\Er%p1%c%p2%{32}%+%c$<.2*>, rev=\ED,
- rmcup=\Ev $<6>\Ep\r\n, rmir=\E\s\s, rmkx=\Ex,
- rmso=\Ed, rmul=\Eg, sgr0=\EN@,
- smcup=\EU\Ev 8p\Ep\r\E\025$<16>, smir=\E^P, smkx=\EX,
- smso=\ED, smul=\EG,
-c100-rv|c100-rv-4p|concept100-rv|c100 rev video,
- cnorm@, cvvis@, flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee,
- smso=\EE, use=c100,
-oc100|oconcept|c100-1p|old 1 page concept 100,
- in,
- is3@, use=c100,
+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=,
+ 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*>,
+ 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,
+ 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,
+ kf4=\E8, kf5=\E9, kf6=\E\:a, kf7=\E\:b, kf8=\E\:c, khome=\E?,
+ khts=\E], kich1=\E^P, kil1=\E^R, kind=\E[, knp=\E-, kpp=\E.,
+ kri=\E\\, krmir=\E\0, mc4=\036o \E\EQ!\EYP\027,
+ mc5=\EQ"\EY(\027\EYD\Eo \036, prot=\EI,
+ rep=\Er%p1%c%p2%{32}%+%c$<.2*>, rev=\ED,
+ rmcup=\Ev $<6>\Ep\r\n, rmir=\E\s\s, rmkx=\Ex,
+ rmso=\Ed, rmul=\Eg, sgr0=\EN@,
+ smcup=\EU\Ev 8p\Ep\r\E\025$<16>, smir=\E^P, smkx=\EX,
+ smso=\ED, smul=\EG,
+c100-rv|c100-rv-4p|concept100-rv|c100 rev video,
+ cnorm@, cvvis@, flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee,
+ smso=\EE, use=c100,
+oc100|oconcept|c100-1p|old 1 page concept 100,
+ in,
+ is3@, use=c100,
# From: Walter Skorski <walt@genetics1.JMP.TJU.EDU>, 16-oct-1996.
# Lots of notes, originally inline, but ncurses doesn't grok that.
@@ -10217,7 +11745,7 @@ oc100|oconcept|c100-1p|old 1 page concept 100,
#
#------- flash=\E[8;3!}^G\E[3;3!}
#------- flash=\E[?5h$<100>\E[?5l
-# There are two ways to flash the screen, both of which have their drawbacks.
+# There are two ways to flash the screen, both of which have their drawbacks.
# The first is to set the bell mode to video, transmit a bell character, and
# set the bell mode back - but to what? There is no way of knowing what the
# user's old bell setting was before we messed with it. Worse, the command to
@@ -10241,7 +11769,7 @@ oc100|oconcept|c100-1p|old 1 page concept 100,
#
#------- dim= Not available in power on mode.
# You have a choice of defining low intensity characters as "half bright" and
-# high intensity as "normal", or defining low as "normal" and high as "bold".
+# high intensity as "normal", or defining low as "normal" and high as "bold".
# No matter which you choose, only one of either "half bright" or "bold" is
# available at any time, so taking the time to override the default is
# pointless.
@@ -10270,7 +11798,7 @@ oc100|oconcept|c100-1p|old 1 page concept 100,
# [DEL chosen as delimiter, but could be any character]
# [implied: ELSE do nothing]
# %; ENDIF
-#
+#
#------- rs2=
# Not defined since anything it might do could be done faster and easier with
# either Meta-Shift-Reset or the main power switch.
@@ -10304,82 +11832,82 @@ oc100|oconcept|c100-1p|old 1 page concept 100,
# (which does duplicate printed data on the screen, in which case mc4=
# and mc5= should use the \E[?4i and \E[?5i strings instead).
-hds200|Human Designed Systems HDS200,
- am, bw, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
- 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,
- 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,
- dsl=\E[2!w\r\n\E[!w, ed=\E[J, el=\E[K, el1=\E[1K,
- 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,
- 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,
- mc0=\E[i, mc4=\E[4i, mc5=\E[5i, 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,
+hds200|Human Designed Systems HDS200,
+ am, bw, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
+ 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,
+ 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,
+ dsl=\E[2!w\r\n\E[!w, ed=\E[J, el=\E[K, el1=\E[1K,
+ 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,
+ 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,
+ mc0=\E[i, mc4=\E[4i, mc5=\E[5i, 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,
# <ht> through <el> included to specify padding needed in raw mode.
# (avt-ns: added empty <acsc> to suppress a tic warning --esr)
-avt-ns|concept avt no status line,
- 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,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[=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,
- 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,
- 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;%;m,
- sgr0=\E[m, 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[2g, vpa=\E[%p1%{1}%+%dd,
-avt-rv-ns|concept avt in reverse video mode/no status line,
- flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
- use=avt-ns,
-avt-w-ns|concept avt in 132 column mode/no status line,
- is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w,
- use=avt-ns,
-avt-w-rv-ns|concept avt in 132 column mode/no status line/reverse video,
- flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h,
- smcup=\E[H\E[1;24;1;132w, use=avt-ns,
+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,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ cvvis=\E[=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,
+ 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,
+ 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;%;m,
+ sgr0=\E[m, 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[2g, vpa=\E[%p1%{1}%+%dd,
+avt-rv-ns|concept avt in reverse video mode/no status line,
+ flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
+ use=avt-ns,
+avt-w-ns|concept avt in 132 column mode/no status line,
+ is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w,
+ use=avt-ns,
+avt-w-rv-ns|concept avt in 132 column mode/no status line/reverse video,
+ flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h,
+ smcup=\E[H\E[1;24;1;132w, use=avt-ns,
# Concept AVT with status line. We get the status line using the
# "Background status line" feature of the terminal. We swipe the
@@ -10389,44 +11917,44 @@ avt-w-rv-ns|concept avt in 132 column mode/no status line/reverse video,
# on both 4 and 8 page AVTs. (Note the lm#191 or 192 - this
# assumes an 8 page AVT but lm isn't currently used anywhere.)
#
-avt+s|concept avt status line changes,
- eslok, hs,
- lm#191,
- dsl=\E[0*w, fsl=\E[1;1!w,
- is3=\E[2w\E[2!w\E[1;1;1;80w\E[H\E[2*w\E[1!w\E2\r\n,
- rmcup=\E[2w\E2\r\n, smcup=\E[2;25w\E2\r,
- tsl=\E[2;1!w\E[;%p1%dH\E[2K,
-avt|avt-s|concept-avt|avt w/80 columns,
- use=avt+s, use=avt-ns,
-avt-rv|avt-rv-s|avt reverse video w/sl,
- flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
- use=avt+s, use=avt-ns,
-avt-w|avt-w-s|concept avt 132 cols+status,
- is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w,
- use=avt+s, use=avt-ns,
-avt-w-rv|avt-w-rv-s|avt wide+status+rv,
- flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h,
- smcup=\E[H\E[1;24;1;132w, use=avt+s, use=avt-ns,
-
-#### Contel Business Systems.
-#
-
-# Contel c300 and c320 terminals.
-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,
- 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*>,
- 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,
+avt+s|concept avt status line changes,
+ eslok, hs,
+ lm#191,
+ dsl=\E[0*w, fsl=\E[1;1!w,
+ is3=\E[2w\E[2!w\E[1;1;1;80w\E[H\E[2*w\E[1!w\E2\r\n,
+ rmcup=\E[2w\E2\r\n, smcup=\E[2;25w\E2\r,
+ tsl=\E[2;1!w\E[;%p1%dH\E[2K,
+avt|avt-s|concept-avt|avt w/80 columns,
+ use=avt+s, use=avt-ns,
+avt-rv|avt-rv-s|avt reverse video w/sl,
+ flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h,
+ use=avt+s, use=avt-ns,
+avt-w|avt-w-s|concept avt 132 cols+status,
+ is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w,
+ use=avt+s, use=avt-ns,
+avt-w-rv|avt-w-rv-s|avt wide+status+rv,
+ flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h,
+ smcup=\E[H\E[1;24;1;132w, use=avt+s, use=avt-ns,
+
+#### Contel Business Systems.
+#
+
+# Contel c300 and c320 terminals.
+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,
+ 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*>,
+ 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,
# Contel c301 and c321 terminals.
-contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321,
- flash@, ich1@, ip@, rmso=\E!\0$<20>, smso=\E!\r$<20>,
- use=contel300,
+contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321,
+ flash@, ich1@, ip@, rmso=\E!\0$<20>, smso=\E!\r$<20>,
+ use=contel300,
#### Data General (dg)
#
@@ -10436,7 +11964,7 @@ contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321,
#
# DG terminals have function keys that respond to the SHIFT and CTRL keys,
# e.g., SHIFT-F1 generates a different code from F1. To number the keys
-# sequentially, first the unmodified key codes are listed as F1 through F15.
+# sequentially, first the unmodified key codes are listed as F1 through F15.
# Then their SHIFT versions are listed as F16 through F30, their CTRL versions
# are listed as F31 through F45, and their CTRL-SHIFT versions are listed as
# F46 through F60. This is done in the private "includes" below whose names
@@ -10452,75 +11980,75 @@ contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321,
# Unmodified fkeys (kf1-kf11), Shift fkeys (kf12-kf22), Ctrl fkeys (kf23-kf33),
# Ctrl/Shift fdkeys (kf34-kf44).
-dgkeys+8b|Private entry describing DG terminal 8-bit ANSI mode special keys,
- ka1=\233020z, ka3=\233021z, kc1=\233022z, kc3=\233023z,
- kclr=\2332J, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
- kcuu1=\233A, kel=\233K, kf1=\233001z, kf10=\233010z,
- kf11=\233011z, kf12=\233012z, kf13=\233013z,
- kf14=\233014z, kf15=\233000z, kf16=\233101z,
- kf17=\233102z, kf18=\233103z, kf19=\233104z,
- kf2=\233002z, kf20=\233105z, kf21=\233106z,
- kf22=\233107z, kf23=\233108z, kf24=\233109z,
- kf25=\233110z, kf26=\233111z, kf27=\233112z,
- kf28=\233113z, kf29=\233114z, kf3=\233003z,
- kf30=\233100z, kf31=\233201z, kf32=\233202z,
- kf33=\233203z, kf34=\233204z, kf35=\233205z,
- kf36=\233206z, kf37=\233207z, kf38=\233208z,
- kf39=\233209z, kf4=\233004z, kf40=\233210z,
- kf41=\233211z, kf42=\233212z, kf43=\233213z,
- kf44=\233214z, kf45=\233200z, kf46=\233301z,
- kf47=\233302z, kf48=\233303z, kf49=\233304z,
- kf5=\233005z, kf50=\233305z, kf51=\233306z,
- kf52=\233307z, kf53=\233308z, kf54=\233309z,
- kf55=\233310z, kf56=\233311z, kf57=\233312z,
- kf58=\233313z, kf59=\233314z, kf6=\233006z,
- kf60=\233300z, kf7=\233007z, kf8=\233008z, kf9=\233009z,
- khome=\233H, kprt=\233i,
-
-dgkeys+7b|Private entry describing DG terminal 7-bit ANSI mode special keys,
- ka1=\E[020z, ka3=\E[021z, kc1=\E[022z, kc3=\E[023z,
- kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kel=\E[K, kf1=\E[001z, kf10=\E[010z, kf11=\E[011z,
- kf12=\E[012z, kf13=\E[013z, kf14=\E[014z, kf15=\E[000z,
- kf16=\E[101z, kf17=\E[102z, kf18=\E[103z, kf19=\E[104z,
- kf2=\E[002z, kf20=\E[105z, kf21=\E[106z, kf22=\E[107z,
- kf23=\E[108z, kf24=\E[109z, kf25=\E[110z, kf26=\E[111z,
- kf27=\E[112z, kf28=\E[113z, kf29=\E[114z, kf3=\E[003z,
- kf30=\E[100z, kf31=\E[201z, kf32=\E[202z, kf33=\E[203z,
- kf34=\E[204z, kf35=\E[205z, kf36=\E[206z, kf37=\E[207z,
- kf38=\E[208z, kf39=\E[209z, kf4=\E[004z, kf40=\E[210z,
- kf41=\E[211z, kf42=\E[212z, kf43=\E[213z, kf44=\E[214z,
- kf45=\E[200z, kf46=\E[301z, kf47=\E[302z, kf48=\E[303z,
- kf49=\E[304z, kf5=\E[005z, kf50=\E[305z, kf51=\E[306z,
- kf52=\E[307z, kf53=\E[308z, kf54=\E[309z, kf55=\E[310z,
- kf56=\E[311z, kf57=\E[312z, kf58=\E[313z, kf59=\E[314z,
- kf6=\E[006z, kf60=\E[300z, kf7=\E[007z, kf8=\E[008z,
- kf9=\E[009z, khome=\E[H, kprt=\E[i,
-
-dgkeys+11|Private entry describing 11 minimal-subset DG mode special keys,
- kclr=^L, kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kel=^K,
- kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^a, kf13=^^b, kf14=^^c,
- kf15=^^d, kf16=^^e, kf17=^^f, kf18=^^g, kf19=^^h, kf2=^^r,
- kf20=^^i, kf21=^^j, kf22=^^k, kf23=^^1, kf24=^^2, kf25=^^3,
- kf26=^^4, kf27=^^5, kf28=^^6, kf29=^^7, kf3=^^s, kf30=^^8,
- kf31=^^9, kf32=^^\:, kf33=^^;, kf34=^^!, kf35=^^", kf36=^^#,
- kf37=^^$, kf38=^^%%, kf39=^^&, kf4=^^t, kf40=^^', kf41=^^(,
- kf42=^^), kf43=^^*, kf44=^^+, kf5=^^u, kf6=^^v, kf7=^^w,
- kf8=^^x, kf9=^^y, khome=^H,
-
-dgkeys+15|Private entry describing 15 DG mode special keys,
- kHOM=^^^H, kLFT=^^^Y, kRIT=^^^X, ka1=^^\\, ka3=^^], kc1=^^\^,
- kc3=^^_, kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^|, kf13=^^},
- kf14=^^~, kf15=^^p, kf16=^^a, kf17=^^b, kf18=^^c, kf19=^^d,
- kf2=^^r, kf20=^^e, kf21=^^f, kf22=^^g, kf23=^^h, kf24=^^i,
- kf25=^^j, kf26=^^k, kf27=^^l, kf28=^^m, kf29=^^n, kf3=^^s,
- kf30=^^`, kf31=^^1, kf32=^^2, kf33=^^3, kf34=^^4, kf35=^^5,
- kf36=^^6, kf37=^^7, kf38=^^8, kf39=^^9, kf4=^^t, kf40=^^\:,
- kf41=^^;, kf42=^^<, kf43=^^=, kf44=^^>, kf45=^^0, kf46=^^!,
- kf47=^^", kf48=^^#, kf49=^^$, kf5=^^u, kf50=^^%%, kf51=^^&,
- kf52=^^', kf53=^^(, kf54=^^), kf55=^^*, kf56=^^+, kf57=^^\,,
- kf58=^^-, kf59=^^., kf6=^^v, kf60=^^\s, kf7=^^w, kf8=^^x,
- kf9=^^y,
+dgkeys+8b|Private entry describing DG terminal 8-bit ANSI mode special keys,
+ ka1=\233020z, ka3=\233021z, kc1=\233022z, kc3=\233023z,
+ kclr=\2332J, kcub1=\233D, kcud1=\233B, kcuf1=\233C,
+ kcuu1=\233A, kel=\233K, kf1=\233001z, kf10=\233010z,
+ kf11=\233011z, kf12=\233012z, kf13=\233013z,
+ kf14=\233014z, kf15=\233000z, kf16=\233101z,
+ kf17=\233102z, kf18=\233103z, kf19=\233104z,
+ kf2=\233002z, kf20=\233105z, kf21=\233106z,
+ kf22=\233107z, kf23=\233108z, kf24=\233109z,
+ kf25=\233110z, kf26=\233111z, kf27=\233112z,
+ kf28=\233113z, kf29=\233114z, kf3=\233003z,
+ kf30=\233100z, kf31=\233201z, kf32=\233202z,
+ kf33=\233203z, kf34=\233204z, kf35=\233205z,
+ kf36=\233206z, kf37=\233207z, kf38=\233208z,
+ kf39=\233209z, kf4=\233004z, kf40=\233210z,
+ kf41=\233211z, kf42=\233212z, kf43=\233213z,
+ kf44=\233214z, kf45=\233200z, kf46=\233301z,
+ kf47=\233302z, kf48=\233303z, kf49=\233304z,
+ kf5=\233005z, kf50=\233305z, kf51=\233306z,
+ kf52=\233307z, kf53=\233308z, kf54=\233309z,
+ kf55=\233310z, kf56=\233311z, kf57=\233312z,
+ kf58=\233313z, kf59=\233314z, kf6=\233006z,
+ kf60=\233300z, kf7=\233007z, kf8=\233008z, kf9=\233009z,
+ khome=\233H, kprt=\233i,
+
+dgkeys+7b|Private entry describing DG terminal 7-bit ANSI mode special keys,
+ ka1=\E[020z, ka3=\E[021z, kc1=\E[022z, kc3=\E[023z,
+ kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kel=\E[K, kf1=\E[001z, kf10=\E[010z, kf11=\E[011z,
+ kf12=\E[012z, kf13=\E[013z, kf14=\E[014z, kf15=\E[000z,
+ kf16=\E[101z, kf17=\E[102z, kf18=\E[103z, kf19=\E[104z,
+ kf2=\E[002z, kf20=\E[105z, kf21=\E[106z, kf22=\E[107z,
+ kf23=\E[108z, kf24=\E[109z, kf25=\E[110z, kf26=\E[111z,
+ kf27=\E[112z, kf28=\E[113z, kf29=\E[114z, kf3=\E[003z,
+ kf30=\E[100z, kf31=\E[201z, kf32=\E[202z, kf33=\E[203z,
+ kf34=\E[204z, kf35=\E[205z, kf36=\E[206z, kf37=\E[207z,
+ kf38=\E[208z, kf39=\E[209z, kf4=\E[004z, kf40=\E[210z,
+ kf41=\E[211z, kf42=\E[212z, kf43=\E[213z, kf44=\E[214z,
+ kf45=\E[200z, kf46=\E[301z, kf47=\E[302z, kf48=\E[303z,
+ kf49=\E[304z, kf5=\E[005z, kf50=\E[305z, kf51=\E[306z,
+ kf52=\E[307z, kf53=\E[308z, kf54=\E[309z, kf55=\E[310z,
+ kf56=\E[311z, kf57=\E[312z, kf58=\E[313z, kf59=\E[314z,
+ kf6=\E[006z, kf60=\E[300z, kf7=\E[007z, kf8=\E[008z,
+ kf9=\E[009z, khome=\E[H, kprt=\E[i,
+
+dgkeys+11|Private entry describing 11 minimal-subset DG mode special keys,
+ kclr=^L, kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kel=^K,
+ kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^a, kf13=^^b, kf14=^^c,
+ kf15=^^d, kf16=^^e, kf17=^^f, kf18=^^g, kf19=^^h, kf2=^^r,
+ kf20=^^i, kf21=^^j, kf22=^^k, kf23=^^1, kf24=^^2, kf25=^^3,
+ kf26=^^4, kf27=^^5, kf28=^^6, kf29=^^7, kf3=^^s, kf30=^^8,
+ kf31=^^9, kf32=^^\:, kf33=^^;, kf34=^^!, kf35=^^", kf36=^^#,
+ kf37=^^$, kf38=^^%%, kf39=^^&, kf4=^^t, kf40=^^', kf41=^^(,
+ kf42=^^), kf43=^^*, kf44=^^+, kf5=^^u, kf6=^^v, kf7=^^w,
+ kf8=^^x, kf9=^^y, khome=^H,
+
+dgkeys+15|Private entry describing 15 DG mode special keys,
+ kHOM=^^^H, kLFT=^^^Y, kRIT=^^^X, ka1=^^\\, ka3=^^], kc1=^^\^,
+ kc3=^^_, kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^|, kf13=^^},
+ kf14=^^~, kf15=^^p, kf16=^^a, kf17=^^b, kf18=^^c, kf19=^^d,
+ kf2=^^r, kf20=^^e, kf21=^^f, kf22=^^g, kf23=^^h, kf24=^^i,
+ kf25=^^j, kf26=^^k, kf27=^^l, kf28=^^m, kf29=^^n, kf3=^^s,
+ kf30=^^`, kf31=^^1, kf32=^^2, kf33=^^3, kf34=^^4, kf35=^^5,
+ kf36=^^6, kf37=^^7, kf38=^^8, kf39=^^9, kf4=^^t, kf40=^^\:,
+ kf41=^^;, kf42=^^<, kf43=^^=, kf44=^^>, kf45=^^0, kf46=^^!,
+ kf47=^^", kf48=^^#, kf49=^^$, kf5=^^u, kf50=^^%%, kf51=^^&,
+ kf52=^^', kf53=^^(, kf54=^^), kf55=^^*, kf56=^^+, kf57=^^\,,
+ kf58=^^-, kf59=^^., kf6=^^v, kf60=^^\s, kf7=^^w, kf8=^^x,
+ kf9=^^y,
# Data General color terminals use the "Tektronix" color model. The total
# number of colors varies with the terminal model, as does support for
@@ -10532,116 +12060,116 @@ dgkeys+15|Private entry describing 15 DG mode special keys,
# Default is ACM mode.
# u8=^^F}20^^Fi^^F}21,
#
-dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode,
- bce,
- colors#16, ncv#53, pairs#256,
- op=\036Ad\036Bd,
- setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
- setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
- setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,
+dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode,
+ bce,
+ colors#16, ncv#53, pairs#256,
+ op=\036Ad\036Bd,
+ setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+ setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+ setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,
-dg+fixed|Fixed color info for DG D430C terminals in DG mode,
- use=dgunix+fixed,
+dg+fixed|Fixed color info for DG D430C terminals in DG mode,
+ use=dgunix+fixed,
# Video attributes are coordinated using static variables set by "sgr", then
-# checked by "op", "seta[bf]", and "set[bf]" to refresh the attribute settings.
+# checked by "op", "seta[bf]", and "set[bf]" to refresh the attribute settings.
# (D=dim, U=underline, B=blink, R=reverse.)
-dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode,
- bce,
- colors#8, ncv#16, pairs#64,
- op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m,
- setab=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setaf=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
-
-dg+color|Color info for Data General D470C terminals in ANSI mode,
- colors#16, ncv#53, pairs#256,
- setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
- use=dg+color8,
-
-dgmode+color8|Color info for Data General D220/D230C terminals in DG mode,
- bce,
- colors#8, ncv#16, pairs#64,
- op=\036Ad\036Bd,
- setab=\036B%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c,
- setaf=\036A%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c,
- setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,
-
-dgmode+color|Color info for Data General D470C terminals in DG mode,
- colors#16, pairs#256,
- setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
- setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
- use=dgmode+color8,
-
-dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode,
- bce, ccc,
- colors#52, ncv#53, pairs#26,
- initp=\036RG0%p1%02X%p2%{256}%*%{1001}%/%02X%p3%{256}%*%{1001}%/%02X%p4%{256}%*%{1001}%/%02X%p5%{256}%*%{1001}%/%02X%p6%{256}%*%{1001}%/%02X%p7%{256}%*%{1001}%/%02X,
- oc=\036RG01A00FF00000000\036RG01B00000000FF00\036RG01C007F00000000\036RG01D000000007F00,
- op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D,
- scp=\036RG2%p1%02X,
+dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode,
+ bce,
+ colors#8, ncv#16, pairs#64,
+ op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m,
+ setab=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ setaf=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+
+dg+color|Color info for Data General D470C terminals in ANSI mode,
+ colors#16, ncv#53, pairs#256,
+ setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m,
+ use=dg+color8,
+
+dgmode+color8|Color info for Data General D220/D230C terminals in DG mode,
+ bce,
+ colors#8, ncv#16, pairs#64,
+ op=\036Ad\036Bd,
+ setab=\036B%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c,
+ setaf=\036A%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%{48}%+%c,
+ setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c,
+
+dgmode+color|Color info for Data General D470C terminals in DG mode,
+ colors#16, pairs#256,
+ setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+ setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c,
+ use=dgmode+color8,
+
+dgunix+ccc|Configurable color info for DG D430C terminals in DG-UNIX mode,
+ bce, ccc,
+ colors#52, ncv#53, pairs#26,
+ initp=\036RG0%p1%02X%p2%{256}%*%{1001}%/%02X%p3%{256}%*%{1001}%/%02X%p4%{256}%*%{1001}%/%02X%p5%{256}%*%{1001}%/%02X%p6%{256}%*%{1001}%/%02X%p7%{256}%*%{1001}%/%02X,
+ oc=\036RG01A00FF00000000\036RG01B00000000FF00\036RG01C007F00000000\036RG01D000000007F00,
+ op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D,
+ scp=\036RG2%p1%02X,
# Colors are in the order: normal, reverse, dim, dim + reverse.
-dg+ccc|Configurable color info for DG D430C terminals in DG mode,
- bce, ccc,
- colors#52, ncv#53, pairs#26,
- initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p3%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p4%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p5%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p6%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c,
- oc=\036RG01\:00??00000000\036RG01;00000000??00\036RG01<007?00000000\036RG01=000000007?00,
- op=\036RF4831\:\036RF2>31;\036RF1=31<\036RF3?31=,
- scp=\036RG2%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c,
+dg+ccc|Configurable color info for DG D430C terminals in DG mode,
+ bce, ccc,
+ colors#52, ncv#53, pairs#26,
+ initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p3%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p4%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p5%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p6%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{256}%*%{1001}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c,
+ oc=\036RG01\:00??00000000\036RG01;00000000??00\036RG01<007?00000000\036RG01=000000007?00,
+ op=\036RF4831\:\036RF2>31;\036RF1=31<\036RF3?31=,
+ scp=\036RG2%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c,
# The generic DG terminal type (an 8-bit-clean subset of the 6053)
# Initialization string 1 sets:
# ^R - vertical scrolling enabled
# ^C - blinking enabled
-dg-generic|Generic Data General terminal in DG mode,
- am, bw, msgr, xon,
- cols#80, lines#24,
- bel=^G, blink=^N, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X,
- cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=^J, is1=^R^C,
- mc0=^Q, nel=^J, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\,
- smul=^T, use=dgkeys+11,
+dg-generic|Generic Data General terminal in DG mode,
+ am, bw, msgr, xon,
+ cols#80, lines#24,
+ bel=^G, blink=^N, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X,
+ cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=^J, is1=^R^C,
+ mc0=^Q, nel=^J, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\,
+ smul=^T, use=dgkeys+11,
# According to the 4.4BSD termcap file, the dg200 <cup> should be the
# termcap equivalent of \020%p2%{128}%+%c%p1%{128}%+%c (in termcap
# notation that's "^P%r%+\200%+\200"). Those \200s are suspicious,
# maybe they were originally nuls (which would fit).
-dg200|data general dasher 200,
- 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,
- 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,
- smso=^^D, smul=^T,
+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,
+ 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,
+ smso=^^D, smul=^T,
# Data General 210/211 (and 410?) from Lee Pearson (umich!lp) via BRL
-dg210|dg-ansi|Data General 210/211,
- am,
- cols#80, lines#24,
- OTnl=\E[B, clear=\E[2J, cud1=\E[B, cup=\E[%i%p1%d;%p2%dH,
- cuu1=\E[A, ed=\E[J, el=\E[K, home=\E[H, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
- nel=\r\E[H\E[A\n, rmso=\E[0;m, rmul=\E[0;m, smso=\E[7;m,
- smul=\E[4;m,
+dg210|dg-ansi|Data General 210/211,
+ am,
+ cols#80, lines#24,
+ OTnl=\E[B, clear=\E[2J, cud1=\E[B, cup=\E[%i%p1%d;%p2%dH,
+ cuu1=\E[A, ed=\E[J, el=\E[K, home=\E[H, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H,
+ nel=\r\E[H\E[A\n, rmso=\E[0;m, rmul=\E[0;m, smso=\E[7;m,
+ smul=\E[4;m,
# From: Peter N. Wan <ihnp4!gatech!gacsr!wan>
# courtesy of Carlos Rucalde of Vantage Software, Inc.
# (dg211: this had <cup=\020%r%.%>., which was an ancient termcap hangover.
# 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,
+dg211|Data General d211,
+ cnorm=^L, cvvis=^L^R, ht=^I, ind@, kbs=^Y, kf0@, kf1@, kf2@, kf3@,
+ kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, lf0@, nel=^M^Z, rmcup=^L,
+ rmso=\036E$<\0/>, smcup=^L^R, smso=\036D$<5/>, use=dg200,
# dg450 from Cornell (not official)
-dg450|dg6134|data general 6134,
- cub1@, cuf1=^X, use=dg200,
+dg450|dg6134|data general 6134,
+ cub1@, cuf1=^X, use=dg200,
# Not official...
# Note: lesser Dasher terminals will not work with vi because vi insists upon
@@ -10653,49 +12181,49 @@ dg450|dg6134|data general 6134,
# (dg460-ansi: removed obsolete ":kn#6:"; also removed ":mu=\EW:", on the
# grounds that there is no matching ":ml:"
# fixed garbled ":k9=\E[00\:z:" capability -- esr)
-dg460-ansi|Data General Dasher 460 in ANSI-mode,
- OTbs, am, msgr, ul,
- cols#80, it#8, lines#24,
- OTnl=\ED, blink=\E[5m, clear=\E[2J, cub1=^H, cud1=\E[B,
- cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P,
- dim=\E[2m, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
- ich1=\E[@, il1=\E[L, ind=\E[S, is2=^^F@, kbs=\E[D,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kf0=\E[001z, kf1=\E[002z, kf2=\E[003z, kf3=\E[004z,
- kf4=\E[005z, kf5=\E[006z, kf6=\E[007z, kf7=\E[008z,
- kf8=\E[009z, kf9=\E[010z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3,
- lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, rev=\E[7m,
- ri=\E[T, rmso=\E[m, rmul=\E[05, sgr0=\E[m, smso=\E[7m,
- smul=\E[4m,
+dg460-ansi|Data General Dasher 460 in ANSI-mode,
+ OTbs, am, msgr, ul,
+ cols#80, it#8, lines#24,
+ OTnl=\ED, blink=\E[5m, clear=\E[2J, cub1=^H, cud1=\E[B,
+ cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P,
+ dim=\E[2m, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I,
+ ich1=\E[@, il1=\E[L, ind=\E[S, is2=^^F@, kbs=\E[D,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kf0=\E[001z, kf1=\E[002z, kf2=\E[003z, kf3=\E[004z,
+ kf4=\E[005z, kf5=\E[006z, kf6=\E[007z, kf7=\E[008z,
+ kf8=\E[009z, kf9=\E[010z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3,
+ lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, rev=\E[7m,
+ ri=\E[T, rmso=\E[m, rmul=\E[05, sgr0=\E[m, smso=\E[7m,
+ smul=\E[4m,
# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official)
-# Data General 605x
+# Data General 605x
# Ought to work for a Model 6242, Type D210 as well as a 605x.
# Note that the cursor-down key transmits ^Z. Job control users, beware!
# This also matches a posted description of something called a `Dasher 100'
-# so there's a dg100 alias here.
-# (dg6053: the 4.4BSD file had <cub1=^H>, <cud1=^J>, <cuf1=^S>. -- esr)
-dg6053-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,
- cuf1=^X, cup=\020%p2%c%p1%c, cuu1=^W, cvvis=^L^R, el=^K,
- home=^H, ht=^I, is2=^R, kbs=^Y, kcub1=^Y, kcud1=^Z, kcuf1=^X,
- kcuu1=^W, kf0=^^q, kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v,
- kf6=^^w, kf7=^^x, kf8=^^y, kf9=^^z, khome=^H, rmcup=^L,
- rmso=\0^^E, rmul=^U, smcup=^L^R, smso=\0\0\0\0\0\036D,
- smul=^T,
+# so there's a dg100 alias here.
+# (dg6053: the 4.4BSD file had <cub1=^H>, <cud1=^J>, <cuf1=^S>. -- esr)
+dg6053-old|dg100|data general 6053,
+ OTbs, am, bw, ul,
+ cols#80, lines#24,
+ OTbc=^Y, bel=^G, clear=^L, cnorm=^L, cr=^M, cub1=^Y, cud1=^Z,
+ cuf1=^X, cup=\020%p2%c%p1%c, cuu1=^W, cvvis=^L^R, el=^K,
+ home=^H, ht=^I, is2=^R, kbs=^Y, kcub1=^Y, kcud1=^Z, kcuf1=^X,
+ kcuu1=^W, kf0=^^q, kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v,
+ kf6=^^w, kf7=^^x, kf8=^^y, kf9=^^z, khome=^H, rmcup=^L,
+ rmso=\0^^E, rmul=^U, smcup=^L^R, smso=\0\0\0\0\0\036D,
+ smul=^T,
# (Some performance can be gained over the generic DG terminal type)
-dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053,
- xon@,
- home=^P\0\0, ll=^P\0^W, use=dg-generic,
+dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053,
+ xon@,
+ home=^P\0\0, ll=^P\0^W, use=dg-generic,
# Like 6053, but adds reverse video and more keypad and function keys.
-d200|d200-dg|Data General DASHER D200,
- bold=^^D^T, home@, ll@, rev=^^D, rmso=^^E^],
- sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;,
- sgr0=\017\025\035\036E, smso=^^D^\, use=dgkeys+15,
- use=dg6053,
+d200|d200-dg|Data General DASHER D200,
+ bold=^^D^T, home@, ll@, rev=^^D, rmso=^^E^],
+ sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;,
+ sgr0=\017\025\035\036E, smso=^^D^\, use=dgkeys+15,
+ use=dg6053,
# DASHER D210 series terminals in ANSI mode.
# Reverse video, no insert/delete character/line, 7 bits/character only.
@@ -10704,23 +12232,23 @@ d200|d200-dg|Data General DASHER D200,
# <0 - scrolling enabled
# <1 - blink enabled
# <4 - print characters regardless of attributes
-d210|d214|Data General DASHER D210 series,
- am, bw, msgr, xon,
- cols#80, lines#24,
- bel=^G, blink=\E[5m, bold=\E[4;7m, clear=\E[2J, cr=^M,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[2m, ed=\E[J, el=\E[K,
- el1=\E[1K, home=\E[H, ind=^J, is1=\E[<0;<1;<4l,
- ll=\E[H\E[A, nel=^J, rev=\E[7m, rmso=\E[m, rmul=\E[m,
- sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m,
- sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b,
+d210|d214|Data General DASHER D210 series,
+ am, bw, msgr, xon,
+ cols#80, lines#24,
+ bel=^G, blink=\E[5m, bold=\E[4;7m, clear=\E[2J, cr=^M,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B,
+ cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[2m, ed=\E[J, el=\E[K,
+ el1=\E[1K, home=\E[H, ind=^J, is1=\E[<0;<1;<4l,
+ ll=\E[H\E[A, nel=^J, rev=\E[7m, rmso=\E[m, rmul=\E[m,
+ sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m,
+ sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b,
# DASHER D210 series terminals in DG mode.
# Like D200, but adds clear to end-of-screen and needs XON/XOFF.
-d210-dg|d214-dg|Data General DASHER D210 series in DG mode,
- xon,
- ed=^^FF, use=d200-dg,
+d210-dg|d214-dg|Data General DASHER D210 series in DG mode,
+ xon,
+ ed=^^FF, use=d200-dg,
# DASHER D211 series terminals in ANSI mode.
# Like the D210, but with 8-bit characters and local printer support.
@@ -10733,10 +12261,10 @@ d210-dg|d214-dg|Data General DASHER D210 series in DG mode,
# \E)4 - default secondary character set (international)
# ^O - primary character set
#
-d211|d215|Data General DASHER D211 series,
- km,
- is2=\E[2;1;1;1v\E(B\E)4\017, mc0=\E[i, use=dgkeys+8b,
- use=d210,
+d211|d215|Data General DASHER D211 series,
+ km,
+ is2=\E[2;1;1;1v\E(B\E)4\017, mc0=\E[i, use=dgkeys+8b,
+ use=d210,
# Initialization string 2 sets:
# \E[2;0;1;0v
@@ -10744,9 +12272,9 @@ d211|d215|Data General DASHER D211 series,
# 1;0 - 7 bit (native) keyboard language
# \E(0 - default character set (the keyboard native language)
# ^O - primary character set
-d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode,
- km@,
- is2=\E[2;0;1;0v\E(0\017, use=dgkeys+7b, use=d211,
+d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode,
+ km@,
+ is2=\E[2;0;1;0v\E(0\017, use=dgkeys+7b, use=d211,
# Like the D210 series, but adds support for 8-bit characters.
#
@@ -10756,36 +12284,36 @@ d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode,
# ^^O - primary character set
# ^^FS00 - default character set (matching the native keyboard language)
#
-d211-dg|d215-dg|Data General DASHER D211 series in DG mode,
- km,
- rs2=\036N\036FS0>\036O\036FS00, use=d210-dg,
+d211-dg|d215-dg|Data General DASHER D211 series in DG mode,
+ km,
+ rs2=\036N\036FS0>\036O\036FS00, use=d210-dg,
-d216-dg|d216e-dg|d216+dg|d216e+dg|d217-dg|Data General DASHER D216 series in DG mode,
- use=d211-dg,
+d216-dg|d216e-dg|d216+dg|d216e+dg|d217-dg|Data General DASHER D216 series in DG mode,
+ use=d211-dg,
# Enhanced DG mode with changes to be more UNIX compatible.
-d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode,
- mc5i,
- it#8,
- acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI,
- clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA,
- el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=^J,
- is1=\022\003\036P@1, is3=\036Fz0, kHOM=^^Pf, kLFT=^^Pd,
- kPRT=^^P1, kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB,
- kcuf1=^^PC, kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0,
- mc0=\036F?9, mc4=^^Fa, mc5=^^F`, rmacs=\036FS00,
- rs2=\036N\036FS0E\036O\036FS00,
- sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;\036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;,
- sgr0=\036PJ\025\035\036E\036FS00, smacs=\036FS11,
- vpa=\020\177%p1%c, use=dgkeys+15, use=d216-dg,
-d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines,
- lines#25,
- is3=\036Fz2, use=d216+,
-
-d217-unix|Data General DASHER D217 in DG-UNIX mode,
- use=d216-unix,
-d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines,
- use=d216-unix-25,
+d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode,
+ mc5i,
+ it#8,
+ acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI,
+ clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA,
+ el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=^J,
+ is1=\022\003\036P@1, is3=\036Fz0, kHOM=^^Pf, kLFT=^^Pd,
+ kPRT=^^P1, kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB,
+ kcuf1=^^PC, kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0,
+ mc0=\036F?9, mc4=^^Fa, mc5=^^F`, rmacs=\036FS00,
+ rs2=\036N\036FS0E\036O\036FS00,
+ sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;\036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;,
+ sgr0=\036PJ\025\035\036E\036FS00, smacs=\036FS11,
+ vpa=\020\177%p1%c, use=dgkeys+15, use=d216-dg,
+d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines,
+ lines#25,
+ is3=\036Fz2, use=d216+,
+
+d217-unix|Data General DASHER D217 in DG-UNIX mode,
+ use=d216-unix,
+d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines,
+ use=d216-unix-25,
# DASHER D220 color terminal in ANSI mode.
# Like the D470C but with fewer colors and screen editing features.
@@ -10799,15 +12327,15 @@ d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines,
# Reset string 1 sets:
# \Ec - initial mode defaults (RIS)
#
-d220|Data General DASHER D220,
- mc5i@,
- dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec,
- use=dg+color8, use=d470c,
+d220|Data General DASHER D220,
+ mc5i@,
+ dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec,
+ use=dg+color8, use=d470c,
-d220-7b|Data General DASHER D220 in 7 bit mode,
- mc5i@,
- dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec,
- use=dg+color8, use=d470c-7b,
+d220-7b|Data General DASHER D220 in 7 bit mode,
+ mc5i@,
+ dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec,
+ use=dg+color8, use=d470c-7b,
# Initialization string 3 sets:
# - default cursor (solid rectangle)
@@ -10817,24 +12345,24 @@ d220-7b|Data General DASHER D220 in 7 bit mode,
# ^^O - primary character set
# ^^FS00 - default character set (matching the native keyboard language)
#
-d220-dg|Data General DASHER D220 color terminal in DG mode,
- mc5i@,
- dl1@, home@, il1@, is2@, is3=\036FQ2, ll@, mc4@, mc5@, rs1@,
- rs2=\036N\036FS0>\036O\036FS00, use=dgmode+color8,
- use=d470c-dg,
+d220-dg|Data General DASHER D220 color terminal in DG mode,
+ mc5i@,
+ dl1@, home@, il1@, is2@, is3=\036FQ2, ll@, mc4@, mc5@, rs1@,
+ rs2=\036N\036FS0>\036O\036FS00, use=dgmode+color8,
+ use=d470c-dg,
# DASHER D230C color terminal in ANSI mode.
# Like the D220 but with minor ANSI compatibility improvements.
#
-d230c|d230|Data General DASHER D230C,
- blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=^M^J,
- rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m,
- sgr=\E[50%?%p1%p3%|%p6%|%t;7%{1}%e%{0}%;%PR%?%p4%t;5%{1}%e%{0}%;%PB%?%p2%p6%|%t;4%{1}%e%{0}%;%PU%?%p1%p5%|%t;2%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;,
- sgr0=\E[50m\E)4\017, smkx=\E[2;0v, smso=\E[2;7;50m,
- smul=\E[4;50m, use=dgkeys+7b, use=d220,
+d230c|d230|Data General DASHER D230C,
+ blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=^M^J,
+ rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m,
+ sgr=\E[50%?%p1%p3%|%p6%|%t;7%{1}%e%{0}%;%PR%?%p4%t;5%{1}%e%{0}%;%PB%?%p2%p6%|%t;4%{1}%e%{0}%;%PU%?%p1%p5%|%t;2%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;,
+ sgr0=\E[50m\E)4\017, smkx=\E[2;0v, smso=\E[2;7;50m,
+ smul=\E[4;50m, use=dgkeys+7b, use=d220,
-d230c-dg|d230-dg|Data General DASHER D230C in DG mode,
- use=d220-dg,
+d230c-dg|d230-dg|Data General DASHER D230C in DG mode,
+ use=d220-dg,
# DASHER D400/D450 series terminals.
# These add intelligent features like insert/delete to the D200 series.
@@ -10855,18 +12383,18 @@ d230c-dg|d230-dg|Data General DASHER D230C in DG mode,
# ^^F] - horizontal scrolling disabled
# ^^FT0 - jump scrolling
#
-d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series,
- mc5i,
- acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\036FQ0,
- cnorm=\036FQ2, dch1=^^K, dl1=^^FI,
- enacs=\036N\036FS11\036O, home=^^FG, hpa=\020%p1%c\177,
- ich1=^^J, il1=^^FH,
- is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O\036FS00,
- ll=\036FG\027, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O,
- rs1=^^FA, rs2=\036F]\036FT0,
- sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;,
- sgr0=\017\025\035\036E\036O, smacs=^^N,
- vpa=\020\177%p1%c, use=d210-dg,
+d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series,
+ mc5i,
+ acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\036FQ0,
+ cnorm=\036FQ2, dch1=^^K, dl1=^^FI,
+ enacs=\036N\036FS11\036O, home=^^FG, hpa=\020%p1%c\177,
+ ich1=^^J, il1=^^FH,
+ is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O\036FS00,
+ ll=\036FG\027, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O,
+ rs1=^^FA, rs2=\036F]\036FT0,
+ sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;,
+ sgr0=\017\025\035\036E\036O, smacs=^^N,
+ vpa=\020\177%p1%c, use=d210-dg,
# DASHER D410/D460 series terminals in ANSI mode.
# These add a large number of intelligent terminal features.
@@ -10906,17 +12434,17 @@ d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series,
# \E(B - default primary character set (U.S. ASCII)
# \E)4 - default secondary character set (international)
#
-d410|d411|d460|d461|Data General DASHER D410/D460 series,
- mc5i,
- acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\E[3;0v,
- cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
- is1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h,
- is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i,
- ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h,
- rs2=\E[4;0;2;1;1;1v\E(B\E)4,
- sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m\E)%?%p9%t6\016%e4\017%;,
- sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211,
+d410|d411|d460|d461|Data General DASHER D410/D460 series,
+ mc5i,
+ acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\E[3;0v,
+ cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+ dl1=\E[M, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L,
+ is1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h,
+ is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i,
+ ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h,
+ rs2=\E[4;0;2;1;1;1v\E(B\E)4,
+ sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m\E)%?%p9%t6\016%e4\017%;,
+ sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211,
# Initialization string 2 sets:
# \E[3;2;2;0;1;0v
@@ -10933,19 +12461,19 @@ d410|d411|d460|d461|Data General DASHER D410/D460 series,
# 1;0 - 7 bit (native) keyboard language
# \E(0 - default character set (the keyboard native language)
#
-d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode,
- km@,
- enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O,
- rs2=\E[4;0;2;0;1;0v\E(0,
- sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, use=dgkeys+7b, use=d410,
+d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode,
+ km@,
+ enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O,
+ rs2=\E[4;0;2;0;1;0v\E(0,
+ sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, use=dgkeys+7b, use=d410,
-d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode,
- km,
- enacs@, rmacs=\036FS00,
- sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;,
- sgr0=\017\025\035\036E\036FS00, smacs=\036FS11,
- use=d400-dg,
+d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode,
+ km,
+ enacs@, rmacs=\036FS00,
+ sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;,
+ sgr0=\017\025\035\036E\036FS00, smacs=\036FS11,
+ use=d400-dg,
# DASHER D410/D460 series terminals in wide (126 columns) ANSI mode.
#
@@ -10969,103 +12497,103 @@ d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode,
# \E[1;1;126w - margins at columns 1 and 126
# \E[<2h - horizontal scrolling disabled
#
-d410-w|d411-w|d460-w|d461-w|Data General DASHER D410/D460 series in wide mode,
- cols#126,
- is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h,
- rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410,
+d410-w|d411-w|d460-w|d461-w|Data General DASHER D410/D460 series in wide mode,
+ cols#126,
+ is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h,
+ rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410,
-d410-7b-w|d411-7b-w|d460-7b-w|d461-7b-w|Data General DASHER D410/D460 series in wide 7 bit mode,
- cols#126,
- is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h,
- rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410-7b,
+d410-7b-w|d411-7b-w|d460-7b-w|d461-7b-w|Data General DASHER D410/D460 series in wide 7 bit mode,
+ cols#126,
+ is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h,
+ rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410-7b,
-d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D412/D462 series in DG mode,
- use=d410-dg,
+d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D412/D462 series in DG mode,
+ use=d410-dg,
# These add intelligent features like scrolling regions.
-d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode,
- civis=\036FQ0, clear=^^FE, cnorm=\036FQ5,
- cup=\036FP%p2%2.2X%p1%2.2X, dch1=^^K, dl1=^^FI,
- home=^^FG, hpa=\036FP%p1%2.2XFF, ich1=^^J, il1=^^FH,
- is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O\036FS00,
- ll=\036FG\036PA, mc0=^A, rc=\036F}11, ri=^^I,
- rs1=\036FA\036FT0, rs2=\036P@1, sc=\036F}10,
- vpa=\036FPFF%p1%2.2X,
- wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X,
- use=d216+,
-d412-unix-w|d462-unix-w|d412+w|d462+w|Data General DASHER D412+/D462+ series in wide Unix mode,
- cols#132,
- is2=\036FQ5\036FW\036FK\036F\^\036FX0083\036O\036FS00,
- rs2=\036P@1\036FK\036FX0083,
- wind=\036FB%?%p1%t%p1%2.2X1%;%p2%p1%-%{1}%+%2.2X1%?%{23}%p2%>%t001%;\036FX%p3%2.2X%p4%2.2X,
- use=d412-unix,
-d412-unix-25|d462-unix-25|d412+25|d462+25|Data General DASHER D412+/D462+ series in Unix mode with 25 lines,
- lines#25,
- is3=\036Fz2,
- wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{24}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X,
- use=d462+,
-d412-unix-s|d462-unix-s|d412+s|d462+s|Data General DASHER D412+/D462+ in Unix mode with status line,
- eslok, hs,
- clear=\036FG\036PH, fsl=\036F}01\022,
- is3=\036Fz2\036F}00\036FB180000\036F}01, ll@,
- tsl=\036F}00\036FP%p1%2.2X18\036PG,
- wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t%{23}%p2%-%2.2X0%;000\036FX%p3%2.2X%p4%2.2X,
- use=d462+,
+d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode,
+ civis=\036FQ0, clear=^^FE, cnorm=\036FQ5,
+ cup=\036FP%p2%2.2X%p1%2.2X, dch1=^^K, dl1=^^FI,
+ home=^^FG, hpa=\036FP%p1%2.2XFF, ich1=^^J, il1=^^FH,
+ is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O\036FS00,
+ ll=\036FG\036PA, mc0=^A, rc=\036F}11, ri=^^I,
+ rs1=\036FA\036FT0, rs2=\036P@1, sc=\036F}10,
+ vpa=\036FPFF%p1%2.2X,
+ wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X,
+ use=d216+,
+d412-unix-w|d462-unix-w|d412+w|d462+w|Data General DASHER D412+/D462+ series in wide Unix mode,
+ cols#132,
+ is2=\036FQ5\036FW\036FK\036F\^\036FX0083\036O\036FS00,
+ rs2=\036P@1\036FK\036FX0083,
+ wind=\036FB%?%p1%t%p1%2.2X1%;%p2%p1%-%{1}%+%2.2X1%?%{23}%p2%>%t001%;\036FX%p3%2.2X%p4%2.2X,
+ use=d412-unix,
+d412-unix-25|d462-unix-25|d412+25|d462+25|Data General DASHER D412+/D462+ series in Unix mode with 25 lines,
+ lines#25,
+ is3=\036Fz2,
+ wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{24}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X,
+ use=d462+,
+d412-unix-s|d462-unix-s|d412+s|d462+s|Data General DASHER D412+/D462+ in Unix mode with status line,
+ eslok, hs,
+ clear=\036FG\036PH, fsl=\036F}01\022,
+ is3=\036Fz2\036F}00\036FB180000\036F}01, ll@,
+ tsl=\036F}00\036FP%p1%2.2X18\036PG,
+ wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t%{23}%p2%-%2.2X0%;000\036FX%p3%2.2X%p4%2.2X,
+ use=d462+,
# Relative cursor motions are confined to the current window,
# which is not what the scrolling region specification expects.
# Thus, relative vertical cursor positioning must be deleted.
-d412-unix-sr|d462-unix-sr|d412+sr|d462+sr|Data General DASHER D412+/D462+ in Unix mode with scrolling region,
- csr=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;,
- cud1@, cuu1@, ll@, use=d462+,
-
-d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode,
- use=d412-unix,
-d413-unix-w|d463-unix-w|Data General DASHER D413/D463 series in wide DG-UNIX mode,
- use=d412-unix-w,
-d413-unix-25|d463-unix-25|Data General DASHER D413/D463 series in DG-UNIX mode with 25 lines,
- use=d412-unix-25,
-d413-unix-s|d463-unix-s|Data General DASHER D413/D463 in DG-UNIX mode with status line,
- use=d412-unix-s,
-d413-unix-sr|d463-unix-sr|Data General DASHER D413/D463 in DG-UNIX mode with scrolling region,
- use=d412-unix-sr,
-
-d414-unix|d464-unix|Data General D414/D464 in DG-UNIX mode,
- use=d413-unix,
-d414-unix-w|d464-unix-w|Data General D414/D464 in wide DG-UNIX mode,
- use=d413-unix-w,
-d414-unix-25|d464-unix-25|Data General D414/D464 in DG-UNIX mode with 25 lines,
- use=d413-unix-25,
-d414-unix-s|d464-unix-s|Data General D414/D464 in DG-UNIX mode with status line,
- use=d413-unix-s,
-d414-unix-sr|d464-unix-sr|Data General D414/D464 in DG-UNIX mode with scrolling region,
- use=d413-unix-sr,
-
-d430c-dg|d430-dg|Data General D430C in DG mode,
- use=d413-dg, use=dg+fixed,
-d430c-dg-ccc|d430-dg-ccc|Data General D430C in DG mode with configurable colors,
- use=d413-dg, use=dg+ccc,
-
-d430c-unix|d430-unix|Data General D430C in DG-UNIX mode,
- use=d413-unix, use=dgunix+fixed,
-d430c-unix-w|d430-unix-w|Data General D430C in wide DG-UNIX mode,
- use=d413-unix-w, use=dgunix+fixed,
-d430c-unix-25|d430-unix-25|Data General D430C in DG-UNIX mode with 25 lines,
- use=d413-unix-25, use=dgunix+fixed,
-d430c-unix-s|d430-unix-s|Data General D430C in DG-UNIX mode with status line,
- use=d413-unix-s, use=dgunix+fixed,
-d430c-unix-sr|d430-unix-sr|Data General D430C in DG-UNIX mode with scrolling region,
- use=d413-unix-sr, use=dgunix+fixed,
-d430c-unix-ccc|d430-unix-ccc|Data General D430C in DG-UNIX mode with configurable colors,
- use=d413-unix, use=dgunix+ccc,
-d430c-unix-w-ccc|d430-unix-w-ccc|Data General D430C in wide DG-UNIX mode with configurable colors,
- use=d413-unix-w, use=dgunix+ccc,
-d430c-unix-25-ccc|d430-unix-25-ccc|Data General D430C in DG-UNIX mode with 25 lines and configurable colors,
- use=d413-unix-25, use=dgunix+ccc,
-d430c-unix-s-ccc|d430-unix-s-ccc|Data General D430C in DG-UNIX mode with status line and configurable colors,
- use=d413-unix-s, use=dgunix+ccc,
-d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrolling region and configurable colors,
- use=d413-unix-sr, use=dgunix+ccc,
+d412-unix-sr|d462-unix-sr|d412+sr|d462+sr|Data General DASHER D412+/D462+ in Unix mode with scrolling region,
+ csr=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;,
+ cud1@, cuu1@, ll@, use=d462+,
+
+d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode,
+ use=d412-unix,
+d413-unix-w|d463-unix-w|Data General DASHER D413/D463 series in wide DG-UNIX mode,
+ use=d412-unix-w,
+d413-unix-25|d463-unix-25|Data General DASHER D413/D463 series in DG-UNIX mode with 25 lines,
+ use=d412-unix-25,
+d413-unix-s|d463-unix-s|Data General DASHER D413/D463 in DG-UNIX mode with status line,
+ use=d412-unix-s,
+d413-unix-sr|d463-unix-sr|Data General DASHER D413/D463 in DG-UNIX mode with scrolling region,
+ use=d412-unix-sr,
+
+d414-unix|d464-unix|Data General D414/D464 in DG-UNIX mode,
+ use=d413-unix,
+d414-unix-w|d464-unix-w|Data General D414/D464 in wide DG-UNIX mode,
+ use=d413-unix-w,
+d414-unix-25|d464-unix-25|Data General D414/D464 in DG-UNIX mode with 25 lines,
+ use=d413-unix-25,
+d414-unix-s|d464-unix-s|Data General D414/D464 in DG-UNIX mode with status line,
+ use=d413-unix-s,
+d414-unix-sr|d464-unix-sr|Data General D414/D464 in DG-UNIX mode with scrolling region,
+ use=d413-unix-sr,
+
+d430c-dg|d430-dg|Data General D430C in DG mode,
+ use=d413-dg, use=dg+fixed,
+d430c-dg-ccc|d430-dg-ccc|Data General D430C in DG mode with configurable colors,
+ use=d413-dg, use=dg+ccc,
+
+d430c-unix|d430-unix|Data General D430C in DG-UNIX mode,
+ use=d413-unix, use=dgunix+fixed,
+d430c-unix-w|d430-unix-w|Data General D430C in wide DG-UNIX mode,
+ use=d413-unix-w, use=dgunix+fixed,
+d430c-unix-25|d430-unix-25|Data General D430C in DG-UNIX mode with 25 lines,
+ use=d413-unix-25, use=dgunix+fixed,
+d430c-unix-s|d430-unix-s|Data General D430C in DG-UNIX mode with status line,
+ use=d413-unix-s, use=dgunix+fixed,
+d430c-unix-sr|d430-unix-sr|Data General D430C in DG-UNIX mode with scrolling region,
+ use=d413-unix-sr, use=dgunix+fixed,
+d430c-unix-ccc|d430-unix-ccc|Data General D430C in DG-UNIX mode with configurable colors,
+ use=d413-unix, use=dgunix+ccc,
+d430c-unix-w-ccc|d430-unix-w-ccc|Data General D430C in wide DG-UNIX mode with configurable colors,
+ use=d413-unix-w, use=dgunix+ccc,
+d430c-unix-25-ccc|d430-unix-25-ccc|Data General D430C in DG-UNIX mode with 25 lines and configurable colors,
+ use=d413-unix-25, use=dgunix+ccc,
+d430c-unix-s-ccc|d430-unix-s-ccc|Data General D430C in DG-UNIX mode with status line and configurable colors,
+ use=d413-unix-s, use=dgunix+ccc,
+d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrolling region and configurable colors,
+ use=d413-unix-sr, use=dgunix+ccc,
# DASHER D470C color terminal in ANSI mode.
# Like the D460 but with 16 colors and without a compressed mode.
@@ -11083,15 +12611,15 @@ d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrol
# <2 - horizontal scrolling disabled
# - (should reset scrolling regions, but that glitches the screen)
#
-d470c|d470|Data General DASHER D470C,
- is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
- sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;,
- use=dg+color, use=d460,
+d470c|d470|Data General DASHER D470C,
+ is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
+ sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;,
+ use=dg+color, use=d460,
-d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode,
- is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
- sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm%?%p9%t\016%e\017%;,
- use=dg+color, use=d460-7b,
+d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode,
+ is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
+ sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm%?%p9%t\016%e\017%;,
+ use=dg+color, use=d460-7b,
# Initialization string 2 sets:
# ^^FQ2 - default cursor (solid rectangle)
@@ -11103,36 +12631,36 @@ d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode,
# ^^FS00 - default character set (the keyboard native language)
# - (should reset scrolling regions, but that glitches the screen)
#
-d470c-dg|d470-dg|Data General DASHER D470C in DG mode,
- is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O\036FS00,
- use=dgmode+color, use=d460-dg,
+d470c-dg|d470-dg|Data General DASHER D470C in DG mode,
+ is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O\036FS00,
+ use=dgmode+color, use=d460-dg,
# DASHER D555 terminal in ANSI mode.
# Like a D411, but has an integrated phone.
-d555|Data General DASHER D555,
- use=d411,
-d555-7b|Data General DASHER D555 in 7-bit mode,
- use=d411-7b,
-d555-w|Data General DASHER D555 in wide mode,
- use=d411-w,
-d555-7b-w|Data General DASHER D555 in wide 7-bit mode,
- use=d411-7b-w,
-d555-dg|Data General DASHER D555 series in DG mode,
- use=d411-dg,
+d555|Data General DASHER D555,
+ use=d411,
+d555-7b|Data General DASHER D555 in 7-bit mode,
+ use=d411-7b,
+d555-w|Data General DASHER D555 in wide mode,
+ use=d411-w,
+d555-7b-w|Data General DASHER D555 in wide 7-bit mode,
+ use=d411-7b-w,
+d555-dg|Data General DASHER D555 series in DG mode,
+ use=d411-dg,
# DASHER D577 terminal in ANSI mode.
# Like a D411, but acts as a keyboard for serial printers ("KSR" modes).
-d577|Data General DASHER D577,
- use=d411,
-d577-7b|Data General DASHER D577 in 7-bit mode,
- use=d411-7b,
-d577-w|Data General DASHER D577 in wide mode,
- use=d411-w,
-d577-7b-w|Data General DASHER D577 in wide 7-bit mode,
- use=d411-7b-w,
-
-d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode,
- use=d411-dg,
+d577|Data General DASHER D577,
+ use=d411,
+d577-7b|Data General DASHER D577 in 7-bit mode,
+ use=d411-7b,
+d577-w|Data General DASHER D577 in wide mode,
+ use=d411-w,
+d577-7b-w|Data General DASHER D577 in wide 7-bit mode,
+ use=d411-7b-w,
+
+d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode,
+ use=d411-dg,
# DASHER D578 terminal.
# Like a D577, but without compressed mode; like a D470C in this respect.
@@ -11150,137 +12678,137 @@ d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode,
# <2 - horizontal scrolling disabled
# - (should reset scrolling regions, but that glitches the screen)
#
-d578|Data General DASHER D578,
- is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577,
-d578-7b|Data General DASHER D578 in 7-bit mode,
- is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577-7b,
+d578|Data General DASHER D578,
+ is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577,
+d578-7b|Data General DASHER D578 in 7-bit mode,
+ is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577-7b,
#### Datamedia (dm)
#
-# Datamedia was headquartered in Nashua, New Hampshire until it went
+# Datamedia was headquartered in Nashua, New Hampshire until it went
# out of business in 1993, but the ID plates on the terminals referred
# to the factory in Pennsauken, NJ. The factory was sold to a PCB board
# manufacturer which threw out all information about the terminals.
#
-cs10|colorscan|Datamedia Color Scan 10,
- msgr,
- cols#80, lines#24,
- bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, 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,
- 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,
- cols#132,
- cup=\E[%i%p1%02d;%p2%03dH, use=cs10,
+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,
+ 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,
+ 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,
+ cols#132,
+ cup=\E[%i%p1%02d;%p2%03dH, use=cs10,
# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr)
-dm1520|dm1521|datamedia 1520,
- OTbs, am, xenl,
- cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\,
- cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- home=^Y, ht=^I, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_,
- khome=^Y,
-# dm2500: this terminal has both <ich> and <smir>. Applications using
+dm1520|dm1521|datamedia 1520,
+ OTbs, am, xenl,
+ cols#80, it#8, lines#24,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\,
+ cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+ home=^Y, ht=^I, ind=^J, kcub1=^H, kcud1=^J, 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=^\,
- 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,
- rmdc=^X^], rmir=\377\377\030\035$<10>, rmso=^X^],
- smdc=^P, smir=^P, smso=^N,
+dm2500|datamedia2500|datamedia 2500,
+ OTbs, OTnc,
+ cols#80, lines#24,
+ bel=^G, clear=^^^^\177, cub1=^H, cud1=^J, cuf1=^\,
+ cup=\014%p2%{96}%^%c%p1%{96}%^%c, cuu1=^Z,
+ 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,
+ 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)
# also, has a meta-key.
# From: <goldberger@su-csli.arpa>
# (dmchat: ":MT:" changed to ":km:" -- esr)
-dmchat|dmchat version of datamedia 2500,
- km,
- dl1=\020\032\030\035$<2/>,
- il1=\020\n\030\035\030\035$<1*/>, use=dm2500,
+dmchat|dmchat version of datamedia 2500,
+ km,
+ dl1=\020\032\030\035$<2/>,
+ il1=\020\n\030\035\030\035$<1*/>, use=dm2500,
# (dm3025: ":MT:" changed to ":km:" -- esr)
-dm3025|datamedia 3025a,
- OTbs, km,
- cols#80, it#8, lines#24,
- bel=^G, clear=\EM$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA,
- 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>,
- is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP,
- smir=\EP, smso=\EO1,
-dm3045|datamedia 3045a,
- OTbs, am, eo, km@, ul, xenl,
- dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA,
- kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r,
- kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r,
- khome=\EH, pad=\177, rmdc@, rmir=\EP, rmso@, smdc@, smso@,
- use=dm3025,
+dm3025|datamedia 3025a,
+ OTbs, km,
+ cols#80, it#8, lines#24,
+ bel=^G, clear=\EM$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA,
+ 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>,
+ is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP,
+ smir=\EP, smso=\EO1,
+dm3045|datamedia 3045a,
+ OTbs, am, eo, km@, ul, xenl,
+ dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA,
+ kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r,
+ kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r,
+ khome=\EH, pad=\177, 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
-#
+#
# 2 Margin Bell 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
-#
+#
# 4 Parity 0=Odd 1=Even
# 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
+# 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
# 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,
- 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,
+dm80|dmdt80|dt80|datamedia dt80/1,
+ clear=\E[2J\E[H, cud1=^J, 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,
# 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,
- cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<5/>,
- ed=\E[0J$<20/>, el=\E[0K$<20/>, use=dm80,
+dm80w|dmdt80w|dt80w|datamedia dt80/1 in 132 char mode,
+ cols#132,
+ clear=\E[H\E[2J$<50/>, cud1=^J,
+ cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<5/>,
+ ed=\E[0J$<20/>, el=\E[0K$<20/>, use=dm80,
# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
-dt80-sas|Datamedia DT803/DTX for SAS usage,
- am, bw,
- cols#80, lines#24,
- acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
- bel=^G, clear=^L, cr=^M,
- 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,
- 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,
+dt80-sas|Datamedia DT803/DTX for SAS usage,
+ am, bw,
+ cols#80, lines#24,
+ acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
+ bel=^G, clear=^L, cr=^M,
+ 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,
+ 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,
# Datamedia Excel 62, 64 from Gould/SEL UTX/32 via BRL
# These aren't end-all Excel termcaps; but do insert/delete char/line
@@ -11290,18 +12818,18 @@ dt80-sas|Datamedia DT803/DTX for SAS usage,
# from the other Datamedias in use here, and yet to associate a model of
# 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,
- 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,
- 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,
- kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l,
- smir=\E[4h, use=dt80,
+excel62|excel64|datamedia Excel 62,
+ dch1=\E[P, kbs=^H, kcub1=^H, kcud1=^J, 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,
+ 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,
+ kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l,
+ smir=\E[4h, use=dt80,
#### Falco
#
@@ -11319,50 +12847,48 @@ excel62-rv|excel64-rv|datamedia Excel 62 in reverse video mode,
# Test version for Falco ts-1. See <arpavax.hickman@ucb> for info
# This terminal was released around 1983 and was discontinued long ago.
# The standout and underline highlights are the same.
-falco|ts1|ts-1|falco ts-1,
- OTbs, am,
- cols#80, it#8, lines#24,
- bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- 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,
- 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,
- 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,
- 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,
+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,
+ 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,
+ 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,
+ 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,
+ 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,
# (ts100: I added <rmam>/<smam> based on the init string -- esr)
-ts100|ts100-sp|falco ts100-sp,
- am, mir, msgr, xenl, xon,
- 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,
- 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,
- ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM,
- kf0=\EOy, kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
- kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, 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[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
-ts100-ctxt|falco ts-100 saving context,
- rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100,
+ts100|ts100-sp|falco ts100-sp,
+ am, mir, msgr, xenl, xon,
+ 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,
+ 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,
+ 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>,
+ 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,
+ts100-ctxt|falco ts-100 saving context,
+ rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100,
#### Florida Computer Graphics
#
@@ -11373,35 +12899,35 @@ ts100-ctxt|falco ts-100 saving context,
# commented out.
# From: David Bryant <cbosg!djb> 1/7/83
-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,
- 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=,
- 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>,
- smcup=\ESTART\r\E2\,0\r\E12\r\EEND\r$<10>,
- smso=\ESTART\r\E70\,6\r\EEND\r$<20>,
- smul=\ESTART\r\E60\,1\r\EEND\r,
+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,
+ 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=,
+ 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>,
+ smcup=\ESTART\r\E2\,0\r\E12\r\EEND\r$<10>,
+ smso=\ESTART\r\E70\,6\r\EEND\r$<20>,
+ smul=\ESTART\r\E60\,1\r\EEND\r,
#### Fluke
#
-# The f1720a differences from ANSI: no auto margin, destructive
+# The f1720a differences from ANSI: no auto margin, destructive
# tabs, # of lines, funny highlighting and underlining
-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,
- 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,
- smso=\E[7m, smul=\E[4m,
+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,
+ 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,
+ smso=\E[7m, smul=\E[4m,
#### Liberty Electronics (Freedom)
#
@@ -11415,75 +12941,75 @@ f1720|f1720a|fluke 1720A,
# (f100: added empty <acsc> to suppress a tic warning;
# made this relative to adm+sgr -- note that <invis> isn't
# known to work for f100 but does on the f110. --esr)
-f100|freedom|freedom100|freedom model 100,
- OTbs, am, bw, hs, mir, msgr, xon,
- cols#80, lines#24,
- acsc=, bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J,
- cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
- 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>,
- 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,
- kf8=^AG\r, kf9=^AH\r, khome=^^, ri=\Ej, rmacs=\E$, rmir=\Er,
- smacs=\E%%, smir=\Eq, tbc=\E3, tsl=\Eg\Ef,
- vpa=\E[%p1%{32}%+%c, use=adm+sgr,
-f100-rv|freedom-rv|freedom 100 in reverse video,
- flash=\Ed$<200>\Eb, is2=\Eg\Ef\r\Eb, use=f100,
+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,
+ 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>,
+ 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,
+ kf8=^AG\r, kf9=^AH\r, khome=^^, ri=\Ej, rmacs=\E$, rmir=\Er,
+ smacs=\E%%, smir=\Eq, tbc=\E3, tsl=\Eg\Ef,
+ vpa=\E[%p1%{32}%+%c, use=adm+sgr,
+f100-rv|freedom-rv|freedom 100 in reverse video,
+ flash=\Ed$<200>\Eb, is2=\Eg\Ef\r\Eb, use=f100,
# The f110 and f200 have problems with vi(1). They use the ^V
# code for the down cursor key. When kcud1 is defined in terminfo
# as ^V, the Control Character Quoting capability (^V in insert mode)
# is lost! It cannot be remapped in vi because it is necessary to enter
# a ^V to to quote the ^V that is being remapped!!!
-#
+#
# f110/f200 users will have to decide whether
# to lose the down cursor key or the quoting capability. We will opt
# initially for leaving the quoting capability out, since use of VI
# is not generally applicable to most interactive applications
# (f110: added <ht>, <khome> & <kcbt> from f100 -- esr)
-f110|freedom110|Liberty Freedom 110,
- bw@, eslok,
- it#8, wsl#80,
- blink=\EG2, bold=\EG0, civis=\E.1, cnorm=\E.2, cud1=^V,
- cvvis=\E.2, dim=\EG@, dl1=\ER, dsl=\Ef\r,
- flash=\Eb$<200/>\Ed, il1=\EE, ip@, is2@, kclr=^^, kdch1=\EW,
- kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, kf10@, kich1=\EQ,
- kil1=\EE, mc4=\Ea, mc5=\E`, ri=\EJ, rmacs=\E%%, rmir=\Er\EO,
- smacs=\E$, smir=\EO\Eq, smso=\EG<, tsl=\Ef, use=f100,
-f110-14|Liberty Freedom 110 14inch,
- dch1@, use=f110,
-f110-w|Liberty Freedom 110 - 132 cols,
- cols#132, use=f110,
-f110-14w|Liberty Freedom 110 14in/132 cols,
- cols#132,
- dch1@, use=f110,
+f110|freedom110|Liberty Freedom 110,
+ bw@, eslok,
+ it#8, wsl#80,
+ blink=\EG2, bold=\EG0, civis=\E.1, cnorm=\E.2, cud1=^V,
+ dim=\EG@, dl1=\ER, dsl=\Ef\r, flash=\Eb$<200/>\Ed, il1=\EE,
+ ip@, is2@, kclr=^^, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET,
+ kf0=^AI\r, kf10@, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`,
+ ri=\EJ, rmacs=\E%%, rmir=\Er\EO, smacs=\E$, smir=\EO\Eq,
+ smso=\EG<, tsl=\Ef, use=f100,
+f110-14|Liberty Freedom 110 14inch,
+ dch1@, use=f110,
+f110-w|Liberty Freedom 110 - 132 cols,
+ cols#132, use=f110,
+f110-14w|Liberty Freedom 110 14in/132 cols,
+ cols#132,
+ dch1@, use=f110,
# (f200: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
-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,
- csr=\Em0%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, 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,
- 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,
- kf8=^AG\r, kf9=^AH\r, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`,
- ri=\EJ, rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, smso=\EG<,
- tbc=\E3, tsl=\Ef, vpa=\E[%p1%{32}%+%c, use=adm+sgr,
-f200-w|Liberty Freedom 200 - 132 cols,
- cols#132, use=f200,
+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,
+ 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,
+ 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,
+ kf8=^AG\r, kf9=^AH\r, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`,
+ ri=\EJ, rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, smso=\EG<,
+ tbc=\E3, tsl=\Ef, vpa=\E[%p1%{32}%+%c, use=adm+sgr,
+f200-w|Liberty Freedom 200 - 132 cols,
+ cols#132, use=f200,
# The f200 has the ability to reprogram the down cursor key. The key is
# 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,
-f200vi-w|Liberty Freedom 200 - 132 cols for vi,
- cols#132, use=f200vi,
+f200vi|Liberty Freedom 200 for vi,
+ flash=\Eb$<200/>\Ed, kcud1=^J, use=f200,
+f200vi-w|Liberty Freedom 200 - 132 cols for vi,
+ cols#132, use=f200vi,
#### GraphOn (go)
#
@@ -11500,42 +13026,42 @@ f200vi-w|Liberty Freedom 200 - 132 cols for vi,
# terminal, than can be switched to X graphics mode (driven over the serial
# line) by an escape sequence. No info on this beast yet.
# (go140: I added <rmam>/<smam> based on the init string -- esr)
-go140|graphon go-140,
- OTbs,
- cols#80, it#8, lines#24,
- clear=\E[H\E[2J$<10/>, cub1=^H, cuf1=\E[C,
- cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
- ed=\E[J$<10/>, el=\E[K, ht=^I,
- if=/usr/share/tabset/vt100, il1=\E[L,
- is2=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
- kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
- rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
- rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
- smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
-go140w|graphon go-140 in 132 column mode,
- am,
- cols#132,
- is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q,
- use=go140,
+go140|graphon go-140,
+ OTbs,
+ cols#80, it#8, lines#24,
+ clear=\E[H\E[2J$<10/>, cub1=^H, cuf1=\E[C,
+ cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+ ed=\E[J$<10/>, el=\E[K, ht=^I,
+ if=/usr/share/tabset/vt100, il1=\E[L,
+ is2=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP,
+ kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, ri=\EM,
+ rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m,
+ rmul=\E[m, sgr0=\E[m, smam=\E[?7h, smir=\E[4h,
+ smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+go140w|graphon go-140 in 132 column mode,
+ am,
+ cols#132,
+ is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q,
+ use=go140,
# Hacked up vt200 termcap to handle GO-225/VT220
# From: <edm@nwnexus.WA.COM>
# (go225: I added <rmam>/<smam> based on the init string -- esr)
-go225|go-225|Graphon 225,
- 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,
- 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,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
- kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, rc=\E8, rev=\E[7m,
- rf=/usr/share/tabset/vt100, ri=\EM, rmam=\E[?7l,
- rmcup=\E[!p\E[?7h\E[2;1;1#w, rmir=\E[4l, rmkx=\E>,
- rmso=\E[27m, rmul=\E[24m, rs1=\E[!p\E[?7h\E[2;1;1#w,
- sc=\E7, sgr0=\E[m, smam=\E[?7h, smcup=\E[2;0#w\E[1;25r,
- smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
+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,
+ 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,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
+ kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, rc=\E8, rev=\E[7m,
+ rf=/usr/share/tabset/vt100, ri=\EM, rmam=\E[?7l,
+ rmcup=\E[!p\E[?7h\E[2;1;1#w, rmir=\E[4l, rmkx=\E>,
+ rmso=\E[27m, rmul=\E[24m, rs1=\E[!p\E[?7h\E[2;1;1#w,
+ sc=\E7, sgr0=\E[m, smam=\E[?7h, smcup=\E[2;0#w\E[1;25r,
+ smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
#### Harris (Beehive)
#
@@ -11548,79 +13074,79 @@ go225|go-225|Graphon 225,
# so we must have early Superbee2 (Model 600, according to phone conversation
# with mfr.). It has proved reliable except for some missing padding
# (notably after \EK and <nl> at bottom of screen).
-#
-# The key idea is that AEP mode is poison for <cup> & that US's in
-# the local memory should be avoided like the plague. That means
-# that the 2048 character local buffer is used as 25 lines of 80
-# characters, period. No scrolling local memory, folks. It also
+#
+# The key idea is that AEP mode is poison for <cup> & that US's in
+# the local memory should be avoided like the plague. That means
+# that the 2048 character local buffer is used as 25 lines of 80
+# characters, period. No scrolling local memory, folks. It also
# appears that we cannot use naked INS LINE feature since it uses
-# US. The sbi fakes <il1> with an 80-space insert that may be too
-# slow at low speeds; also spaces get converted to \040 which is
+# US. The sbi fakes <il1> with an 80-space insert that may be too
+# slow at low speeds; also spaces get converted to \040 which is
# too long for some programs (not vi). DEL LINE is ok but slow.
-#
-# The <nl> string is designed for last line of screen ONLY; cup to
+#
+# The <nl> string is designed for last line of screen ONLY; cup to
# 25th line corrects the motion inherent in scrolling to Page 1.
-#
+#
# There is one understood bug. It is that the screen appears to
-# pop to a new (blank) page after a <nel>, or leave a half-line
-# ellipsis to a quad that is the extra 48 memory locations. The
-# data received is dumped into memory but not displayed. Not to
-# worry if <cup> is being used; the lines not displayed will be,
-# whenever the cursor is moved up there. Since <cup> is addressed
-# relative to MEMORY of window, nothing is lost; but beware of
+# pop to a new (blank) page after a <nel>, or leave a half-line
+# ellipsis to a quad that is the extra 48 memory locations. The
+# data received is dumped into memory but not displayed. Not to
+# worry if <cup> is being used; the lines not displayed will be,
+# whenever the cursor is moved up there. Since <cup> is addressed
+# relative to MEMORY of window, nothing is lost; but beware of
# relative cursor motion (<cuu1>,<cud1>,<cuf1>,<cub1>). Recommended,
# therefore, is setenv MORE -c .
-#
+#
# WARNING: Not all features tested.
-#
-# Timings are assembled from 3 sources. Some timings may reflect
+#
+# Timings are assembled from 3 sources. Some timings may reflect
# SB2/Model 300 that were used if more conservative.
# Tested on a Model 600 at 1200 and 9600 bd.
-#
-# The BACKSPACEkb option is cute. The NEWLINE key, so cleverly
-# placed on the keyboard and useless because of AEP, is made
+#
+# The BACKSPACEkb option is cute. The NEWLINE key, so cleverly
+# placed on the keyboard and useless because of AEP, is made
# into a backspace key. In use ESC must be pressed twice (to send)
-# and sending ^C must be prefixed by ESC to avoid that weird
+# and sending ^C must be prefixed by ESC to avoid that weird
# transmit mode associated with ENTER key.
-#
-# IF TERMINAL EVER GOES CATATONIC with the cursor buzzing across
-# the screen, then it has dropped into ENTER mode; hit
+#
+# IF TERMINAL EVER GOES CATATONIC with the cursor buzzing across
+# the screen, then it has dropped into ENTER mode; hit
# RESET--ONLINE--!tset.
-#
-# As delivered this machine has a FATAL feature that will throw
-# it into that strange transmit state (SPOW) if the space bar is
-# hit after a CR is received, but before receiving a LF (or a
+#
+# As delivered this machine has a FATAL feature that will throw
+# it into that strange transmit state (SPOW) if the space bar is
+# hit after a CR is received, but before receiving a LF (or a
# few others).
-#
-# The circuits MUST be modified to eliminate the SPOW latch.
-# This is done by strapping on chip A46 of the I/O board; cut
-# the p.c. connection to Pin 5 and strap Pin 5 to Pin 8 of that
+#
+# The circuits MUST be modified to eliminate the SPOW latch.
+# This is done by strapping on chip A46 of the I/O board; cut
+# the p.c. connection to Pin 5 and strap Pin 5 to Pin 8 of that
# chip. This mod has been checked out on a Mod 600 of Superbee II.
-# With this modification absurdly high timings on cr are
+# With this modification absurdly high timings on cr are
# unnecessary.
-#
-# NOTE WELL that the rear panel switch should be set to CR/LF,
+#
+# NOTE WELL that the rear panel switch should be set to CR/LF,
# not AEP!
#
-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,
- 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,
- 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,
- krmir=\ER, lf0=TAB CLEAR, lf9=TAB SET, rmcup=, rmir=\ER,
- rmso=\E_3, rmul=\E_3, sgr0=\E_3, smcup=\EO, smir=\EQ\EO,
- smso=\E_1, smul=\E_0, tbc=\E3,
-sbi|superbee|beehive superbee at Indiana U.,
- xsb,
- cr=\r$<1>, il1=1\EN\EL$<9>\EQ \EP$<9> \EO\ER\EA,
- use=sb1,
+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,
+ 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,
+ 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,
+ krmir=\ER, lf0=TAB CLEAR, lf9=TAB SET, rmcup=, rmir=\ER,
+ rmso=\E_3, rmul=\E_3, sgr0=\E_3, smcup=\EO, smir=\EQ\EO,
+ smso=\E_1, smul=\E_0, tbc=\E3,
+sbi|superbee|beehive superbee at Indiana U.,
+ xsb,
+ cr=\r$<1>, il1=1\EN\EL$<9>\EQ \EP$<9> \EO\ER\EA,
+ use=sb1,
# Alternate (older) description of Superbee - f1=escape, f2=^C.
# Note: there are at least 3 kinds of superbees in the world. The sb1
# holds onto escapes and botches ^C's. The sb2 is the best of the 3.
@@ -11631,22 +13157,22 @@ sbi|superbee|beehive superbee at Indiana U.,
# the other two if you want to try to hit that tiny escape key.
# This description is tricky: being able to use cup depends on there being
# 2048 bytes of memory and the hairy <nl> string.
-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,
- 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,
- ind=\n\0\0\0\n\0\0\0\EA\EK\0\0\0\ET\ET, is2=\EH\EJ,
- kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ep, kf2=\Eq,
- kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
- khome=\EH, rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3,
+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,
+ 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,
+ ind=\n\0\0\0\n\0\0\0\EA\EK\0\0\0\ET\ET, is2=\EH\EJ,
+ kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ep, kf2=\Eq,
+ kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew,
+ khome=\EH, rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3,
# This loses on lines > 80 chars long, use at your own risk
-superbeeic|super bee with insert char,
- ich1=, rmir=\ER, smir=\EQ, use=superbee-xsb,
-sb2|sb3|fixed superbee,
- xsb@, use=superbee,
+superbeeic|super bee with insert char,
+ ich1=, rmir=\ER, smir=\EQ, use=superbee-xsb,
+sb2|sb3|fixed superbee,
+ xsb@, use=superbee,
#### Beehive Medical Electronics
#
@@ -11662,61 +13188,61 @@ sb2|sb3|fixed superbee,
# been tested and do not work right. <rmso> is a trouble spot. Be warned.
# (bee: <ich1> was empty, which is obviously bogus -- esr)
-beehive|bee|harris beehive,
- OTbs, am, mir,
- cols#80, lines#24,
- cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
- cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
- dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, kbs=^H, kcbt=\E>,
- kclr=\EE, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
- kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ, kil1=\EL,
- krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@, sgr0=\Ed@,
- smir=\EQ, smso=\EdP, smul=\Ed`,
+beehive|bee|harris beehive,
+ OTbs, am, mir,
+ cols#80, lines#24,
+ cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC,
+ cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
+ dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, kbs=^H, kcbt=\E>,
+ kclr=\EE, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+ kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ, kil1=\EL,
+ krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@, sgr0=\Ed@,
+ smir=\EQ, smso=\EdP, smul=\Ed`,
# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs.
# good grief - does this entry make :sg:/:ug: when it doesn't have to?
# look at those spaces in <rmso>/<smso>. Seems strange to me...
# (beehive: <if=/usr/share/tabset/beehive> removed, no such file. If you
# really care, cook up one using ^F -- esr)
-beehive3|bh3m|beehiveIIIm|harris beehive 3m,
- OTbs, am,
- cols#80, it#8, lines#20,
- bel=^G, clear=^E^R, cr=^M, cub1=^H, cud1=^J, cuf1=^L, cuu1=^K,
- dl1=\021$<350>, ed=^R, el=^P, home=^E, ht=^I, hts=^F,
- il1=\023$<160>, ind=^J, 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,
+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,
+ 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,
+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,
# 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,
- cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, ht=^I, ind=^J, 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`,
+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,
+ cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+ el=\EK, ht=^I, ind=^J, 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`,
# 8675, 8686, and bee from Cyrus Rahman
# (8675: changed k10, k11...k16 to k;, F1...F6 -- esr)
-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,
+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,
# (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,
+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,
#### Hazeltine
#
@@ -11747,448 +13273,458 @@ ha8686|harris 8686,
# redraw the screen. h1000 is untested. It doesn't work in
# vi - this terminal is too dumb for even vi. (The code is
# there but it isn't debugged for this case.)
-hz1000|hazeltine 1000,
- OTbs,
- cols#80, lines#12,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, home=^K,
- ind=^J,
+hz1000|hazeltine 1000,
+ OTbs,
+ cols#80, lines#12,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, home=^K,
+ ind=^J,
# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
-hz1420|hazeltine 1420,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=^J, cuf1=^P,
- cup=\E\021%p2%c%p1%{32}%+%c, cuu1=\E^L, dl1=\E^S,
- ed=\E^X, el=\E^O, ht=^N, il1=\E^Z, ind=^J, rmso=\E^Y,
- smso=\E^_,
+hz1420|hazeltine 1420,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=^J, cuf1=^P,
+ cup=\E\021%p2%c%p1%{32}%+%c, cuu1=\E^L, dl1=\E^S,
+ ed=\E^X, el=\E^O, ht=^N, il1=\E^Z, ind=^J, 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
# receive tildes.
-hz1500|hazeltine 1500,
- OTbs, am, hz,
- cols#80, lines#24,
- bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
- cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c,
- cuu1=~^L, dl1=~\023$<40>, ed=~\030$<10>, el=~^O, home=~^R,
- il1=~\032$<40>, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^P,
- kcuu1=~^L, khome=~^R, rmso=~^Y, smso=~^_,
+hz1500|hazeltine 1500,
+ OTbs, am, hz,
+ cols#80, lines#24,
+ bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
+ cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c,
+ cuu1=~^L, dl1=~\023$<40>, ed=~\030$<10>, el=~^O, home=~^R,
+ il1=~\032$<40>, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^P,
+ kcuu1=~^L, khome=~^R, rmso=~^Y, smso=~^_,
# h1510 assumed to be in sane escape mode. Else use h1500.
-# (h1510: early versions of this entry apparently had "<rmso=\E^_>,
+# (h1510: early versions of this entry apparently had "<rmso=\E^_>,
# <smso=\E^Y>, but these caps were commented out in 8.3; also,
# removed incorrect and overridden ":do=^J:" -- esr)
-hz1510|hazeltine 1510,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, cuf1=^P,
- cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, ed=\E^X,
- el=\E^O, il1=\E^Z, ind=^J,
+hz1510|hazeltine 1510,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, cuf1=^P,
+ cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, ed=\E^X,
+ el=\E^O, il1=\E^Z, ind=^J,
# Hazeltine 1520
# The following switch settings are assumed for normal operation:
# FULL CR U/L_CASE ESCAPE
# FORMAT_OFF EOM_A_OFF EOM_B_OFF WRAPAROUND_ON
# Other switches may be set for operator convenience or communication
# requirements.
-hz1520|Hazeltine 1520,
- OTbs, am, bw, msgr,
- cols#80, lines#24,
- bel=^G, bold=\E^_, clear=\E^\, cr=^M, cub1=^H, cud1=^J,
- cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S,
- ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, 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^_,
+hz1520|Hazeltine 1520,
+ OTbs, am, bw, msgr,
+ cols#80, lines#24,
+ bel=^G, bold=\E^_, clear=\E^\, cr=^M, cub1=^H, cud1=^J,
+ cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S,
+ ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, 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^_,
# This version works with the escape switch off
# (h1520: removed incorrect and overridden ":do=^J:" -- esr)
-hz1520-noesc|hazeltine 1520,
- am, hz,
- cols#80, lines#24,
- bel=^G, clear=~^\, cr=^M, 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=~^_,
+hz1520-noesc|hazeltine 1520,
+ am, hz,
+ cols#80, lines#24,
+ bel=^G, clear=~^\, cr=^M, 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=~^_,
# 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,
- lf2=red, lf3=green, use=vt52,
-hz1552-rv|hazeltine 1552 reverse video,
- cud1=^J, rmso=\ET, smso=\ES, use=hz1552,
+hz1552|hazeltine 1552,
+ OTbs,
+ cud1=^J, 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,
# 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,
- cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R,
- il1=~\032$<6>, ind=^J, pad=\177,
+hz2000|hazeltine 2000,
+ OTbs, OTnc, am,
+ cols#74, lines#27,
+ bel=^G, clear=~\034$<6>, cub1=^H, cud1=^J,
+ cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R,
+ il1=~\032$<6>, ind=^J, pad=\177,
# 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
# characters very fast vi seems not able to keep up and hangs while trying
# to insert. That's in insert mode while trying to insert in the middle of
# a line. It might be because the Esprit doesn't have insert char and delete
-# char as a built in function. Vi has to delete to end of line and then
+# char as a built in function. Vi has to delete to end of line and then
# redraw the rest of the line.
-esprit|Hazeltine Esprit I,
- OTbs, am, bw,
- cols#80, lines#24,
- bel=^G, cbt=\E^T, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K,
- cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S,
- 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,
- 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,
- am, use=esprit,
+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,
+ 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,
+ 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,
+ am, use=esprit,
# Hazeltine Modular-1 from Cliff Shackelton <ittvax!ittral!shackelt> via BRL
# Vi it seems always wants to send a control J for "do" and it turned out
# that the terminal would work somewhat if the auto LF/CR was turned off.
# (hmod1: removed :dn=~^K: -- esr)
-hmod1|Hazeltine Modular 1,
- OTbs, am, hz,
- cols#80, lines#24,
- bel=^G, cbt=~^T, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
- cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z,
- ind=^J, kcub1=^H, kcud1=~^K, kcuf1=^P, kcuu1=~^L, khome=~^R,
- rc=~^Q, rmso=~^Y, sc=~^E, sgr0=~^Y, smso=~^_,
+hmod1|Hazeltine Modular 1,
+ OTbs, am, hz,
+ cols#80, lines#24,
+ bel=^G, cbt=~^T, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P,
+ cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z,
+ ind=^J, 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?)
# from Will Martin <control@ALMSA-1.ARPA> via BRL
# Like VT100, except for different "am" behavior.
-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/>,
- 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, rc=\E8, rev=\E[7m$<2/>,
- rf=/usr/share/tabset/vt100, ri=\EM$<5/>,
- 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,
- sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>,
- smul=\E[4m$<2/>,
+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/>,
+ 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, rc=\E8, rev=\E[7m$<2/>,
+ rf=/usr/share/tabset/vt100, ri=\EM$<5/>,
+ 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,
+ sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>,
+ smul=\E[4m$<2/>,
#### IBM
#
-ibm327x|line mode IBM 3270 style,
- gn,
- clear=^M^J, el=^M, home=^M,
-
-ibm3101|i3101|IBM 3101-10,
- OTbs, am, xon,
- cols#80, lines#24,
- bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EI, home=\EH, hts=\E0, ind=^J, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\EH,
-ibm3151|IBM 3151 display,
- is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B,
- sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;,
- sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162,
-# From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992
+ibm327x|line mode IBM 3270 style,
+ gn,
+ clear=^M^J, el=^M, home=^M,
+
+ibm3101|i3101|IBM 3101-10,
+ OTbs, am, xon,
+ cols#80, lines#24,
+ bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+ el=\EI, home=\EH, hts=\E0, ind=^J, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\EH,
+ibm3151|IBM 3151 display,
+ is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B,
+ sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;,
+ sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162,
+# From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992
# removed kend, knp, kpp -TD
-ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
- OTbs, am, mir, msgr,
- cols#80, it#8, lines#24,
- acsc=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x\370,
- bel=^G, blink=\E4D, bold=\E4H, clear=\EH\EJ, cr=^M, cub1=\ED,
- 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<@%;,
- 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,
-ibm3162|IBM 3162 display,
- blink=\E4$a, bold=\E4(a, il1=\EN, invis=\E40a, rev=\E4!a,
- rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a,
- use=ibm3161-C,
+ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
+ OTbs, am, mir, msgr,
+ cols#80, it#8, lines#24,
+ acsc=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x\370,
+ bel=^G, blink=\E4D, bold=\E4H, clear=\EH\EJ, cr=^M, cub1=\ED,
+ 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<@%;,
+ 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,
+ibm3162|IBM 3162 display,
+ blink=\E4$a, bold=\E4(a, il1=\EN, invis=\E40a, rev=\E4!a,
+ rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a,
+ use=ibm3161-C,
# This really should not use setab/setaf, but it is clear that the
# original terminfo does not toggle red/blue colors as in setb/setf.
-ibm3164|i3164|IBM 3164,
- msgr,
- colors#8, pairs#64,
- op=\E4 "@, rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A,
- setab=\E4 %p1%{64}%+%c,
- setaf=\E4%?%p1%t %p1%{32}%+%c%e!'%;@,
- smcup=\E!9/N\E>B, use=ibm3161,
-
-ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display,
- am, bw, msgr, xon,
- cols#80, it#8, lines#25,
- acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
- 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,
- sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
-
-ibmaed|IBM Experimental display,
- OTbs, am, eo, msgr,
- cols#80, it#8, lines#52,
- clear=\EH\EK, cub1=^H, cud1=\EB, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
- dl1=\EO, ed=\EJ, el=\EI, flash=\EG, home=\EH, ht=^I, ich1=\EP,
- il1=\EN, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
- rmso=\E0, sgr0=\E0, smso=\E0,
-ibm-apl|apl|IBM apl terminal simulator,
- lines#25, use=dm1520,
-# (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'.
+ibm3164|i3164|IBM 3164,
+ msgr,
+ colors#8, pairs#64,
+ op=\E4 "@, rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A,
+ setab=\E4 %p1%{64}%+%c,
+ setaf=\E4%?%p1%t %p1%{32}%+%c%e!'%;@,
+ smcup=\E!9/N\E>B, use=ibm3161,
+
+ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display,
+ am, bw, msgr, xon,
+ cols#80, it#8, lines#25,
+ acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM,
+ 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,
+ sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+
+ibmaed|IBM Experimental display,
+ OTbs, am, eo, msgr,
+ cols#80, it#8, lines#52,
+ clear=\EH\EK, cub1=^H, cud1=\EB, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
+ dl1=\EO, ed=\EJ, el=\EI, flash=\EG, home=\EH, ht=^I, ich1=\EP,
+ il1=\EN, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
+ rmso=\E0, sgr0=\E0, smso=\E0,
+ibm-apl|apl|IBM apl terminal simulator,
+ lines#25, use=dm1520,
+# (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'.
# Also it had ":I0=f10:" which pretty obviously should be "l0=f10" -- esr)
-ibmmono|IBM workstation monochrome,
- eslok, hs,
- bold=\EZ, dl1=\EM, dsl=\Ej\EY8 \EI\Ek, fsl=\Ek, il1=\EL,
- invis=\EF\Ef0;\Eb0;, kbs=^H, kf0=\E<, kf1=\ES, kf2=\ET,
- kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EY,
- khome=\EH, kich1=\0, kind=\EE, knp=\EE, kpp=\Eg, kri=\EG,
- lf0=f10, rev=\Ep, ri=\EA, rmso=\Ez, rmul=\Ew,
- sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo,
- use=ibm3101,
-ibmega|IBM Enhanced Color Display,
- cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
- nel=^M^J, use=ibmmono,
+ibmmono|IBM workstation monochrome,
+ eslok, hs,
+ bold=\EZ, dl1=\EM, dsl=\Ej\EY8 \EI\Ek, fsl=\Ek, il1=\EL,
+ invis=\EF\Ef0;\Eb0;, kbs=^H, kf0=\E<, kf1=\ES, kf2=\ET,
+ kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EY,
+ khome=\EH, kich1=\0, kind=\EE, knp=\EE, kpp=\Eg, kri=\EG,
+ lf0=f10, rev=\Ep, ri=\EA, rmso=\Ez, rmul=\Ew,
+ sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo,
+ use=ibm3101,
+ibmega|IBM Enhanced Color Display,
+ cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
+ nel=^M^J, use=ibmmono,
# This color scheme is assumed in some recent IBM terminal descriptions
# (green on black, emulated on a 16-color terminal).
-ibm+color|IBM color definitions,
- colors#8, ncv#3, pairs#64,
- op=\E[32m\E[40m,
- setb=\E[%?%p1%{0}%=%t40m%e%p1%{1}%=%t41m%e%p1%{2}%=%t42m%e%p1%{3}%=%t43m%e%p1%{4}%=%t44m%e%p1%{5}%=%t45m%e%p1%{6}%=%t46m%e%p1%{7}%=%t107m%;,
- setf=\E[%?%p1%{0}%=%t30m%e%p1%{1}%=%t31m%e%p1%{2}%=%t32m%e%p1%{3}%=%t33m%e%p1%{4}%=%t34m%e%p1%{5}%=%t35m%e%p1%{6}%=%t36m%e%p1%{7}%=%t97m%;,
-ibm5154|IBM 5154 Color display,
- colors#8, ncv@, pairs#64,
- bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
- use=ibm+color,
-ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline,
- rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;,
- use=ibmmono,
-ibmvga-c|IBM VGA display color termcap,
- cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
- nel=^M^J, use=ibmega-c,
-ibmvga|IBM VGA display,
- cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
- nel=^M^J, use=ibmega,
+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%;,
+ibm+16color|IBM aixterm color definitions,
+ colors#16, pairs#256,
+ setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm,
+ setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm,
+ setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
+ setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m,
+ibm5154|IBM 5154 Color display,
+ colors#8, ncv@, pairs#64,
+ bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
+ use=ibm+color,
+ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline,
+ rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;,
+ use=ibmmono,
+ibmvga-c|IBM VGA display color termcap,
+ cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
+ nel=^M^J, use=ibmega-c,
+ibmvga|IBM VGA display,
+ cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J,
+ nel=^M^J, use=ibmega,
# ibmapa* and ibmmono entries come from ACIS 4.3 distribution
-rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display,
- lines#32,
- dsl=\Ej\EY@ \EI\Ek, tsl=\Ej\EY@%+ \Eo, use=ibmmono,
-ibm6155|IBM 6155 Black & White display,
- blink@, bold@, use=ibm5151,
+rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display,
+ lines#32,
+ dsl=\Ej\EY@ \EI\Ek, tsl=\Ej\EY@%+ \Eo, use=ibmmono,
+ibm6155|IBM 6155 Black & White display,
+ blink@, bold@, use=ibm5151,
# Advanced Monochrome (6153) and Color (6154) Graphics Display:
-ibmapa8c|ibmapa8|IBM 6154 Advanced Graphics Display,
- lines#31,
- dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, use=ibmmono,
-ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display,
- lines#31,
- dim=\EF\Ef7;, dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo,
- use=ibmega-c,
-ibm6154|IBM 6154 Color displays,
- blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m,
- sgr0=\E[0;10m, use=ibm5154,
-ibm6153|IBM 6153 Black & White display,
- blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m,
- sgr0=\E[0;10m, use=ibm5151,
-ibm6153-90|IBM 6153 Black & White display,
- cols#90, lines#36,
- blink@, bold@, use=ibm5151,
-ibm6153-40|IBM 6153 Black & White display,
- cols#40, lines#12, use=ibm6153-90,
-ibm8512|ibm8513|IBM color VGA Terminal,
- am, mir, msgr,
- cols#80, it#8, lines#25,
- acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m,
- clear=\E[H\E[J, cub1=\E[D, cud1=^J, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M,
- ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, il=\E[%p1%dL,
- il1=\E[L, is2=\Eb\E[m\017\E[?7h, kcud1=\E[B, kcuu1=\E[A,
- kf0=\E[010q, kf1=\E[001q, kf2=\E[002q, kf3=\E[003q,
- kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
- kf8=\E[008q, kf9=\E[009q, khome=\E[H, rc=\E[u, rev=\E[7m,
- rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l,
- rmir=\E[4l, rmso=\E[m, rmul=\E[m,
- rs1=\Eb\E[m\017\E[?7h\E[H\E[J, sc=\E[s, sgr0=\E[m,
- smacs=^N, smam=\E[?7h, smcup=\E[20;4l\E[?7h\Eb,
- smdc=\E[4h, smir=\E[4h, smso=\E[7m, smul=\E[4m,
- use=ibm8503,
-hft-c|HFT with Color,
- colors#8, pairs#64,
- acsc=jjkkllmmnnqqttuuvvwwxx, s0ds=\E(B, s1ds=\E(0,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m\E(B,
- use=ibm5151, use=ibm+color,
-hft-c-old|HFT with Color PC850,
- colors#8, pairs#64,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
- use=ibm+color,
-hft-old|AIWS High Function Terminal,
- am, xon,
- cols#80, lines#25,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
- cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
- ht=^I, ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, kbs=^H,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
- kf1=\E[001q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q,
- kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
- kf9=\E[009q, khome=\E[H, knp=\E[153q, kpp=\E[159q,
- ktbc=\E[010q, rev=\E[7m, rmir=\E6, rmso=\E[m, rmul=\E[m,
- sgr0=\E[m, smir=\E6, smso=\E[7m, smul=\E[4m, use=ibm+color,
-ibm-system1|system1|ibm system/1 computer,
- am, xt,
- cols#80, lines#24,
- bel=^G, clear=^Z, cub1=^H, cuf1=^\,
- cup=\005%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, home=^K,
- ind=^J,
+ibmapa8c|ibmapa8|IBM 6154 Advanced Graphics Display,
+ lines#31,
+ dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, use=ibmmono,
+ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display,
+ lines#31,
+ dim=\EF\Ef7;, dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo,
+ use=ibmega-c,
+ibm6154|IBM 6154 Color displays,
+ blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m,
+ sgr0=\E[0;10m, use=ibm5154,
+ibm6153|IBM 6153 Black & White display,
+ blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m,
+ sgr0=\E[0;10m, use=ibm5151,
+ibm6153-90|IBM 6153 Black & White display,
+ cols#90, lines#36,
+ blink@, bold@, use=ibm5151,
+ibm6153-40|IBM 6153 Black & White display,
+ cols#40, lines#12, use=ibm6153-90,
+ibm8512|ibm8513|IBM color VGA Terminal,
+ am, mir, msgr,
+ cols#80, it#8, lines#25,
+ acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m,
+ clear=\E[H\E[J, cub1=\E[D, cud1=^J, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, il=\E[%p1%dL,
+ il1=\E[L, is2=\Eb\E[m\017\E[?7h, kcud1=\E[B, kcuu1=\E[A,
+ kf0=\E[010q, kf1=\E[001q, kf2=\E[002q, kf3=\E[003q,
+ kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
+ kf8=\E[008q, kf9=\E[009q, khome=\E[H, rc=\E[u, rev=\E[7m,
+ rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l,
+ rmir=\E[4l, rmso=\E[m, rmul=\E[m,
+ rs1=\Eb\E[m\017\E[?7h\E[H\E[J, sc=\E[s, sgr0=\E[m,
+ smacs=^N, smam=\E[?7h, smcup=\E[20;4l\E[?7h\Eb,
+ smdc=\E[4h, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+ use=ibm8503,
+hft-c|HFT with Color,
+ colors#8, pairs#64,
+ acsc=jjkkllmmnnqqttuuvvwwxx, s0ds=\E(B, s1ds=\E(0,
+ setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m\E(B,
+ use=ibm5151, use=ibm+color,
+hft-c-old|HFT with Color PC850,
+ colors#8, pairs#64,
+ setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151,
+ use=ibm+color,
+hft-old|AIWS High Function Terminal,
+ am, xon,
+ cols#80, lines#25,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+ cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H,
+ ht=^I, ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, kbs=^H,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kf1=\E[001q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q,
+ kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q,
+ kf9=\E[009q, khome=\E[H, knp=\E[153q, kpp=\E[159q,
+ ktbc=\E[010q, rev=\E[7m, rmir=\E6, rmso=\E[m, rmul=\E[m,
+ sgr0=\E[m, smir=\E6, smso=\E[7m, smul=\E[4m, use=ibm+color,
+ibm-system1|system1|ibm system/1 computer,
+ am, xt,
+ cols#80, lines#24,
+ bel=^G, clear=^Z, cub1=^H, cuf1=^\,
+ cup=\005%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, home=^K,
+ ind=^J,
# lft-pc850 : IBM Low Function Terminal Device
# lft "supports" underline, bold, and blink in the sense that the lft code
# sets all the right bits. HOWEVER, depending upon the adapter, these
# attributes may or may not be supported by the device driver.
-lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device,
- am, bw, msgr, xon,
- cols#80, it#8, lines#25,
- acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
- bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
- cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
- dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[2J, el=\E[0K,
- home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, il=\E[%p1%dL,
- il1=\E[L, ind=\ED, indn=\E[%p1%dS, invis=\E[8m, is2=\Ec,
- kbs=^H, kcbt=\E[Z, kclr=\E[144q, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, ked=\E[148q,
- kel=\E[142q, kend=\E[146q, kf1=\E[001q, kf10=\E[010q,
- kf11=\E[011q, kf12=\E[012q, kf13=\E[013q, kf14=\E[014q,
- kf15=\E[015q, kf16=\E[016q, kf17=\E[017q, kf18=\E[018q,
- kf19=\E[019q, kf2=\E[002q, kf20=\E[020q, kf21=\E[021q,
- kf22=\E[022q, kf23=\E[023q, kf24=\E[024q, kf25=\E[025q,
- kf26=\E[026q, kf27=\E[027q, kf28=\E[028q, kf29=\E[029q,
- kf3=\E[003q, kf30=\E[030q, kf31=\E[031q, kf32=\E[032q,
- kf33=\E[033q, kf34=\E[034q, kf35=\E[035q, kf36=\E[036q,
- kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
- kf8=\E[008q, kf9=\E[009q, khome=\E[H, kich1=\E[139q,
- kil1=\E[140q, kind=\E[151q, knp=\E[154q, kpp=\E[150q,
- kri=\E[155q, krmir=\E[4l, rev=\E[7m, ri=\EL, rin=\E[%p1%dT,
- rmacs=\E(B, rmir=\E[4l, rmso=\E[0m, rmul=\E[0m, rs2=\Ec,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
- sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m,
- tbc=\E[3g,
-ibm5081|hft|IBM Megapel Color display,
- acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B,
- s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154,
-ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display,
- eslok, hs,
- lines#33,
- dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo,
- use=ibmega-c,
-ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display,
- use=hft-c,
-ibm8514|IBM 8514/a color VGA display,
- eslok, hs,
- dsl=\Ej\EYI \EI\Ek, fsl=\Ek, tsl=\Ej\EYI%+ \Eo, use=hft,
-ibm8514-c|IBM 8514 color display with standout and underline,
- eslok, hs,
- lines#41,
- cr=^M, cud1=^J, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=^J,
- kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, tsl=\Ej\EYI%+ \Eo,
- use=ibmega-c,
-
-#
-# AIX entries. IBM ships these with AIX 3.2.5.
+lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device,
+ am, bw, msgr, xon,
+ cols#80, it#8, lines#25,
+ acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263,
+ bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+ cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+ dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[2J, el=\E[0K,
+ home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, il=\E[%p1%dL,
+ il1=\E[L, ind=\ED, indn=\E[%p1%dS, invis=\E[8m, is2=\Ec,
+ kbs=^H, kcbt=\E[Z, kclr=\E[144q, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, ked=\E[148q,
+ kel=\E[142q, kend=\E[146q, kf1=\E[001q, kf10=\E[010q,
+ kf11=\E[011q, kf12=\E[012q, kf13=\E[013q, kf14=\E[014q,
+ kf15=\E[015q, kf16=\E[016q, kf17=\E[017q, kf18=\E[018q,
+ kf19=\E[019q, kf2=\E[002q, kf20=\E[020q, kf21=\E[021q,
+ kf22=\E[022q, kf23=\E[023q, kf24=\E[024q, kf25=\E[025q,
+ kf26=\E[026q, kf27=\E[027q, kf28=\E[028q, kf29=\E[029q,
+ kf3=\E[003q, kf30=\E[030q, kf31=\E[031q, kf32=\E[032q,
+ kf33=\E[033q, kf34=\E[034q, kf35=\E[035q, kf36=\E[036q,
+ kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q,
+ kf8=\E[008q, kf9=\E[009q, khome=\E[H, kich1=\E[139q,
+ kil1=\E[140q, kind=\E[151q, knp=\E[154q, kpp=\E[150q,
+ kri=\E[155q, krmir=\E[4l, rev=\E[7m, ri=\EL, rin=\E[%p1%dT,
+ rmacs=\E(B, rmir=\E[4l, rmso=\E[0m, rmul=\E[0m, rs2=\Ec,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
+ sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+ tbc=\E[3g,
+ibm5081|hft|IBM Megapel Color display,
+ acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B,
+ s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154,
+ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display,
+ eslok, hs,
+ lines#33,
+ dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo,
+ use=ibmega-c,
+ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display,
+ use=hft-c,
+ibm8514|IBM 8514/a color VGA display,
+ eslok, hs,
+ dsl=\Ej\EYI \EI\Ek, fsl=\Ek, tsl=\Ej\EYI%+ \Eo, use=hft,
+ibm8514-c|IBM 8514 color display with standout and underline,
+ eslok, hs,
+ lines#41,
+ cr=^M, cud1=^J, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=^J,
+ kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, tsl=\Ej\EYI%+ \Eo,
+ use=ibmega-c,
+
+#
+# AIX entries. IBM ships these with AIX 3.2.5.
# -- added rc, sc based on manpage -TD
-aixterm|IBM Aixterm Terminal Emulator,
- eslok, hs,
- acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
- fsl=\E[?F, rc=\E8, ri@, s0ds=\E(B, s1ds=\E(0, sc=\E7,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
- sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6154,
-aixterm-m|IBM AIXterm Monochrome Terminal Emulator,
- eslok, hs,
- acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
- fsl=\E[?F, ri@, s0ds=\E(B, s1ds=\E(0,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
- sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6153,
-aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator,
- eslok, hs,
- bold=\E[1m, dsl=\E[?E, fsl=\E[?F, ri@,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
- tsl=\E[?%p1%dT, use=ibm6153,
-jaixterm|IBM Kanji Aixterm Terminal Eemulator,
- acsc@, use=aixterm,
-jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator,
- acsc@, use=aixterm-m,
+# 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,
+aixterm-m|IBM AIXterm Monochrome Terminal Emulator,
+ eslok, hs,
+ acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E,
+ fsl=\E[?F, ri@, s0ds=\E(B, s1ds=\E(0,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
+ sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6153,
+aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator,
+ eslok, hs,
+ bold=\E[1m, dsl=\E[?E, fsl=\E[?F, ri@,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
+ tsl=\E[?%p1%dT, use=ibm6153,
+jaixterm|IBM Kanji Aixterm Terminal Eemulator,
+ acsc@, use=aixterm,
+jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator,
+ acsc@, use=aixterm-m,
+
+# This flavor is adapted from xterm, in turn from aixterm documentation -TD
+aixterm-16color|IBM Aixterm Terminal Emulator with 16 colors,
+ use=ibm+16color, use=aixterm,
#### Infoton/General Terminal Corp.
#
# gt100 sounds like something DEC would come out with. Let's hope they don't.
-i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100),
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\Ef%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dl1=\EM,
- ed=\EJ, el=\EK, flash=\Eb$<200/>\Ea, home=\EH, il1=\EL,
- ind=^J, rmso=\Ea, smso=\Eb,
-i400|infoton 400,
- OTbs, am,
- cols#80, lines#25,
- bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
- cup=%i\E[%p1%3d;%p2%3dH, cuu1=\E[A,
- 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,
+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,
+ cup=\Ef%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dl1=\EM,
+ ed=\EJ, el=\EK, flash=\Eb$<200/>\Ea, home=\EH, il1=\EL,
+ ind=^J, rmso=\Ea, smso=\Eb,
+i400|infoton 400,
+ OTbs, am,
+ cols#80, lines#25,
+ bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, 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,
# (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%{1}%-%c%p2%{1}%-%c, cuu1=^\, ed=^K, home=^H,
- ind=^J, ll=^H^\,
+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^\,
# (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^\,
+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^\,
# The ICL6402 was actually the Kokusai Display System 6402.
# The 6404 was the KDS7372 (color version of the 6402).
-#
+#
# ICL6404 control codes follow:
#
#code function
@@ -12447,22 +13983,22 @@ infoton,
# full duplex, parallel attribute mode, display user status line, white
# foreground, black background, normal highlight.
#
-icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372,
- 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,
- 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%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;ZZ,
- sgr0=\E[0ZZ, smir=\Eq, smso=\E[8ZZ, smul=\E[8ZZ, tbc=\E3,
-icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols,
- rs2=\Eo1, use=icl6404,
+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,
+ 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%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;ZZ,
+ sgr0=\E[0ZZ, smir=\Eq, smso=\E[8ZZ, smul=\E[8ZZ, tbc=\E3,
+icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols,
+ rs2=\Eo1, use=icl6404,
#### Interactive Systems Corp
#
@@ -12474,43 +14010,43 @@ icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols,
# From: <cithep!eric> Wed Sep 16 08:06:44 1981
# (intext: removed obsolete ":ma=^K^P^R^L^L ::bc=^_:", also the
# ":le=^_:" later overridden -- esr)
-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,
- 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,
- 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%%,
- smso=^V$\,,
-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, 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,
- hpa=\E[%p1%{1}%+%dG, ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S,
- kbs=^H, kcub1=\ED\r, kcud1=\EB\r, kcuf1=\EC\r, kcuu1=\EA\r,
- kf0=\E@\r, kf1=\EP\r, kf2=\EQ\r, kf3=\ES\r, kf4=\ET\r,
- kf5=\EU\r, kf6=\EV\r, kf7=\EW\r, kf8=\EX\r, kf9=\EY\r,
- khome=\ER\r, lf0=REFRSH, lf1=DEL CH, lf2=TABSET, lf3=GOTO,
- lf4=+PAGE, lf5=+SRCH, lf6=-PAGE, lf7=-SRCH, lf8=LEFT,
- lf9=RIGHT, ri=\E[T, rmso=\E[2 D, rmul=\E[2 D, smso=\E[6 D,
- smul=\E[18 D,
+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,
+ 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,
+ 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%%,
+ smso=^V$\,,
+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, 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,
+ hpa=\E[%p1%{1}%+%dG, ht=^I, ich1=\E[@, il1=\E[L, ind=\E[S,
+ kbs=^H, kcub1=\ED\r, kcud1=\EB\r, kcuf1=\EC\r, kcuu1=\EA\r,
+ kf0=\E@\r, kf1=\EP\r, kf2=\EQ\r, kf3=\ES\r, kf4=\ET\r,
+ kf5=\EU\r, kf6=\EV\r, kf7=\EW\r, kf8=\EX\r, kf9=\EY\r,
+ khome=\ER\r, lf0=REFRSH, lf1=DEL CH, lf2=TABSET, lf3=GOTO,
+ lf4=+PAGE, lf5=+SRCH, lf6=-PAGE, lf7=-SRCH, lf8=LEFT,
+ lf9=RIGHT, ri=\E[T, rmso=\E[2 D, rmul=\E[2 D, smso=\E[6 D,
+ smul=\E[18 D,
#### Kimtron (abm, kt)
#
-# Kimtron seems to be history, but as March 1998 these people are still
+# Kimtron seems to be history, but as March 1998 these people are still
# offering repair services for Kimtron equipment:
#
# Com/Pair Monitor Service
# 1105 N. Cliff Ave.
# Sioux Falls, South Dakota 57103
-#
+#
# WATS voice: 1-800/398-4946
# POTS fax: +1 605/338-8709
# POTS voice: +1 605/338-9650
@@ -12523,16 +14059,16 @@ intext2|intextii|INTERACTIVE modified owl 1251,
# Kimtron ABM 85 added by Dual Systems
# (abm85: removed duplicated ":kd=^J:" -- esr)
-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,
- 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,
- rmul=\Em, smir=\EQ, smso=\Ej, smul=\El,
+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,
+ 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,
+ rmul=\Em, smir=\EQ, smso=\Ej, smul=\El,
# Kimtron ABM 85H added by Dual Systems.
# Some notes about the abm85h entries:
# 1) there are several firmware revs of 85H in the world. Use abm85h-old for
@@ -12555,64 +14091,64 @@ abm85|Kimtron ABM 85,
# 6) auto new-line should be on (selectable from setup mode only)
#
# From: Erik Fair <fair@ucbarpa> Sun Oct 27 07:21:05 1985
-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,
- kcud1=^V, sgr0=\E(\EG0, smir=\EZ, tsl=\Eg\Ef, use=adm+sgr,
- use=abm85,
-abm85e|Kimtron ABM 85H in 920E mode,
- xmc@,
- bel=^G, dim=\E), flash@,
- is2=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq\Em,
- rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85,
-abm85h-old|oabm85h|o85h|Kimtron ABM 85H with old firmware rev.,
- xmc@,
- bel=^G, dim=\E),
- is2=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF,
- rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85,
+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,
+ kcud1=^V, sgr0=\E(\EG0, smir=\EZ, tsl=\Eg\Ef, use=adm+sgr,
+ use=abm85,
+abm85e|Kimtron ABM 85H in 920E mode,
+ xmc@,
+ bel=^G, dim=\E), flash@,
+ is2=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq\Em,
+ rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85,
+abm85h-old|oabm85h|o85h|Kimtron ABM 85H with old firmware rev.,
+ xmc@,
+ bel=^G, dim=\E),
+ is2=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF,
+ rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85,
# From: <malman@bbn-vax.arpa>
# (kt7: removed obsolete :ma=^V^J^L :" -- esr)
-kt7|kimtron model kt-7,
- OTbs, am,
- cols#80, it#8, lines#24,
- cbt=\EI, clear=^Z, cub1=^H, cud1=^V, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dl1=\ER, ed=\EY, el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ,
- if=/usr/share/tabset/stdcrt, il1=\EE, invis@, is2=\El\E",
- kbs=^H, kcbt=\EI, 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, kf9=^AH\r, khome=^^,
- kich1=\EQ, kil1=\EE, tsl=\Ef, use=adm+sgr,
+kt7|kimtron model kt-7,
+ OTbs, am,
+ cols#80, it#8, lines#24,
+ cbt=\EI, clear=^Z, cub1=^H, cud1=^V, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+ dl1=\ER, ed=\EY, el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ,
+ if=/usr/share/tabset/stdcrt, il1=\EE, invis@, is2=\El\E",
+ kbs=^H, kcbt=\EI, 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, kf9=^AH\r, khome=^^,
+ kich1=\EQ, kil1=\EE, tsl=\Ef, use=adm+sgr,
# Renamed TB=^I to :ta:, BE=^G to :bl:, BS=^H to :kb:, N to :kS: (based on the
# other kt7 entry and the adjacent key capabilities). Removed EE which is
# identical to :mh:. Removed :ES=\EGD: which is some kind of highlight
# but we can't figure out what.
-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,
- 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,
- 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,
- sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef,
+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,
+ 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,
+ 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,
+ sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef,
#### Microdata/MDIS
#
# This was a line of terminals made by McDonnell-Douglas Information Systems.
# These entries come direct from MDIS documentation. I have edited them only
# to move primary names of the form p[0-9] * to aliases, and to comment out
-# <rmacs>/<smacs> in a couple of entries without <acsc> strings. I have
+# <rmacs>/<smacs> in a couple of entries without <acsc> strings. I have
# also removed the change history; the last version indicates this is
# version 4.3 by A.Barkus, September 1990 (earliest entry is October 1989).
#
@@ -12677,14 +14213,14 @@ kt7ix|kimtron model kt-7 or 70 in IX mode,
# Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next
# value up, followed by backspace.
#
-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,
- 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,
+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,
+ 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,
# p4: Prism-4
# -----------
@@ -12696,20 +14232,20 @@ prism2|MDC Prism-2,
# value up, followed by backspace.
# Cursor key definitions removed because they interfere with vi and csh keys.
#
-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,
- cuu1=^Z, dim=^CA, dsl=\035\343\035\345, ed=\EJ, el=\EK,
- fsl=^]\345, home=^A,
- hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
- ind=^J, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER,
- rev=^CD, rmso=^C\s, rmul=^C\s,
- sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}%+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;,
- sgr0=^C\s, smso=^CD, smul=^CP, tsl=^]\343,
- vpa=\013%p1%{32}%+%c,
+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,
+ cuu1=^Z, dim=^CA, dsl=\035\343\035\345, ed=\EJ, el=\EK,
+ fsl=^]\345, home=^A,
+ hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c,
+ ind=^J, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER,
+ rev=^CD, rmso=^C\s, rmul=^C\s,
+ sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}%+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;,
+ sgr0=^C\s, smso=^CD, smul=^CP, tsl=^]\343,
+ vpa=\013%p1%{32}%+%c,
# p5: Prism-5
# -----------
@@ -12717,8 +14253,8 @@ prism4|p4|P4|MDC Prism-4,
# Same definition as p4. Includes Prism-6 (not tested!).
# Does not use any multi-page features.
#
-prism5|p5|P5|MDC Prism-5,
- use=p4,
+prism5|p5|P5|MDC Prism-5,
+ use=p4,
# p7: Prism-7
# -----------
@@ -12728,8 +14264,8 @@ prism5|p5|P5|MDC Prism-5,
# Use p4 for very early models of P7.
# Rev-index removed; can't send nulls to terminal in 8-bit modes.
#
-prism7|p7|P7|MDC Prism-7,
- cup=\E[%i%p1%d;%p2%dH, hpa@, vpa@, use=p4,
+prism7|p7|P7|MDC Prism-7,
+ cup=\E[%i%p1%d;%p2%dH, hpa@, vpa@, use=p4,
# p8: Prism-8
# -----------
@@ -12742,9 +14278,9 @@ prism7|p7|P7|MDC Prism-7,
# Rev-index removed; can't send nulls to terminal in 8-bit modes.
# (esr: commented out <smacs>/<rmacs> because there's no <acsc>)
#
-prism8|p8|P8|MDC Prism-8,
- cup=\E[%i%p1%d;%p2%dH, hpa=\E[%i%p1%d`, is2=\E[<12h,
- vpa=\E[%i%p1%dd, use=p4,
+prism8|p8|P8|MDC Prism-8,
+ cup=\E[%i%p1%d;%p2%dH, hpa=\E[%i%p1%d`, is2=\E[<12h,
+ vpa=\E[%i%p1%dd, use=p4,
# p8-w: Prism-8 in 132 column mode
# --------------------------------
@@ -12753,9 +14289,9 @@ prism8|p8|P8|MDC Prism-8,
# Notes:
# Rev-index removed; can't send nulls to terminal in 8-bit modes.
#
-prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode,
- cols#132,
- is2=\E[<12h\E[<14h, use=p8,
+prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode,
+ cols#132,
+ is2=\E[<12h\E[<14h, use=p8,
# p9: Prism-9 in ANSI mode
# -------------------------
@@ -12775,41 +14311,41 @@ prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode,
# . Padding values (sets xon)
# (esr: commented out <smacs>/<rmacs> because there's no <acsc>)
#
-prism9|p9|P9|MDC Prism-9 in ANSII mode,
- am, bw, hs, mc5i, 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,
- 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,
- 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, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=^M^J,
- 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,
- sc=\E[%y,
- sgr=\E[%{0}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{2}%+%;%?%p4%t%{1}%+%;%?%p6%t%{8}%+%;%?%p8%t%{32}%+%;%d%%{%?%p9%t\016%e\017%;,
- sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[2g,
- tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd,
+prism9|p9|P9|MDC Prism-9 in ANSII mode,
+ am, bw, hs, mc5i, 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,
+ 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,
+ 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, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=^M^J,
+ 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,
+ sc=\E[%y,
+ sgr=\E[%{0}%?%p1%p3%|%t%{7}%+%;%?%p2%t%{2}%+%;%?%p4%t%{5}%+%;%?%p6%t%{1}%+%;m%?%p8%t\E[%{32}%+%d%%{%;%?%p9%t\016%e\017%;,
+ sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m,
+ tbc=\E[2g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd,
# p9-w: Prism-9 in 132 column mode
# --------------------------------
#
# 'Wide' version of p9.
#
-prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode,
- cols#132,
- is2=\E[&p\E[<12l\E F\E[<14h,
- rs2=\E[&p\E[<12l\E F\E[<14h, use=p9,
+prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode,
+ cols#132,
+ is2=\E[&p\E[<12l\E F\E[<14h,
+ rs2=\E[&p\E[<12l\E F\E[<14h, use=p9,
# p9-8: Prism-9 in P8 mode
# ------------------------
@@ -12818,34 +14354,34 @@ prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode,
# Similar to p8 definition.
# Insertion and deletion operations possible.
#
-prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8,
+prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8,
# p9-8-w: Prism-9 in P8 and 132 column modes
# ------------------------------------------
#
# P9 terminal in P8 emulation mode and 132 column mode.
#
-prism9-8-w|p9-8-w|P9-8-W|MDC Prism-9 in Prism 8 emulation and 132 column mode,
- dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
- ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8-w,
+prism9-8-w|p9-8-w|P9-8-W|MDC Prism-9 in Prism 8 emulation and 132 column mode,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8-w,
# p12: Prism-12 in ANSI mode
# ---------------------------
#
# See p9 definition.
#
-prism12|p12|P12|MDC Prism-12 in ANSI mode,
- use=p9,
+prism12|p12|P12|MDC Prism-12 in ANSI mode,
+ use=p9,
# p12-w: Prism-12 in 132 column mode
# ----------------------------------
#
# 'Wide' version of p12.
#
-prism12-w|p12-w|P12-W|MDC Prism-12 in 132 column mode,
- use=p9-w,
+prism12-w|p12-w|P12-W|MDC Prism-12 in 132 column mode,
+ use=p9-w,
# p12-m: Prism-12 in MDC emulation mode
# -------------------------------------
@@ -12854,32 +14390,32 @@ prism12-w|p12-w|P12-W|MDC Prism-12 in 132 column mode,
# Similar to p8 definition.
# Insertion and deletion operations possible.
#
-prism12-m|p12-m|P12-M|MDC Prism-12 in MDC emulation mode,
- use=p9-8,
+prism12-m|p12-m|P12-M|MDC Prism-12 in MDC emulation mode,
+ use=p9-8,
# p12-m-w: Prism-12 in MDC emulation and 132 column modes
# -------------------------------------------------------
#
# P12 terminal in MDC emulation mode and 132 column mode.
#
-prism12-m-w|p12-m-w|P12-M-W|MDC Prism-12 in MDC emulation and 132 column mode,
- use=p9-8-w,
+prism12-m-w|p12-m-w|P12-M-W|MDC Prism-12 in MDC emulation and 132 column mode,
+ use=p9-8-w,
# p14: Prism-14 in ANSII mode
# ---------------------------
#
# See p9 definition.
#
-prism14|p14|P14|MDC Prism-14 in ANSII mode,
- use=p9,
+prism14|p14|P14|MDC Prism-14 in ANSII mode,
+ use=p9,
# p14-w: Prism-14 in 132 column mode
# ----------------------------------
#
# 'Wide' version of p14.
#
-prism14-w|p14-w|P14-W|MDC Prism-14 in 132 column mode,
- use=p9-w,
+prism14-w|p14-w|P14-W|MDC Prism-14 in 132 column mode,
+ use=p9-w,
# p14-m: Prism-14 in MDC emulation mode
# -------------------------------------
@@ -12888,35 +14424,35 @@ prism14-w|p14-w|P14-W|MDC Prism-14 in 132 column mode,
# Similar to p8 definition.
# Insertion and deletion operations possible.
#
-prism14-m|p14-m|P14-M|MDC Prism-14 in MDC emulation mode,
- use=p9-8,
+prism14-m|p14-m|P14-M|MDC Prism-14 in MDC emulation mode,
+ use=p9-8,
# p14-m-w: Prism-14 in MDC emulation and 132 column modes
# -------------------------------------------------------
#
# P14 terminal in MDC emulation mode and 132 column mode.
#
-prism14-m-w|p14-m-w|P14-M-W|MDC Prism-14 in MDC emulation and 132 column mode,
- use=p9-8-w,
+prism14-m-w|p14-m-w|P14-M-W|MDC Prism-14 in MDC emulation and 132 column mode,
+ use=p9-8-w,
# End of McDonnell Information Systems Prism definitions
# These things were popular in the Pick database community at one time
# From: George Land <georgeland@aol.com> 24 Sep 1996
-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,
- 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,
- 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,
- pad=\0, rev=^CD, rmso=^C\s, rmul=^C\s, sgr0=^C\s, smso=^CE,
- smul=^C0,
+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,
+ 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,
+ 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,
+ pad=\0, rev=^CD, rmso=^C\s, rmul=^C\s, sgr0=^C\s, smso=^CE,
+ smul=^C0,
#### Microterm (act, mime)
#
@@ -12929,137 +14465,137 @@ p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition,
# <rmso=^N> since it gets confused and it's too dim anyway. No <ich1>
# since Sytek insists ^S means xoff.
# (act4: found ":ic=2^S:ei=:im=:ip=.1*^V:" commented out in 8.3 -- esr)
-act4|microterm|microterm act iv,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\014$<12/>, cr=^M, cub1=^H, cud1=^K, cuf1=^X,
- cup=\024%p1%{24}%+%c%p2%p2%?%{47}%>%t%{48}%+%;%{80}%+%c,
- 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,
- kcuu1=^Z,
+act4|microterm|microterm act iv,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\014$<12/>, cr=^M, cub1=^H, cud1=^K, cuf1=^X,
+ cup=\024%p1%{24}%+%c%p2%p2%?%{47}%>%t%{48}%+%;%{80}%+%c,
+ 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,
+ 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 (!)...
# (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr)
-act5|microterm5|microterm act v,
- kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA,
- use=act4,
+act5|microterm5|microterm act v,
+ kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA,
+ use=act4,
# Mimes using brightness for standout. Half bright is really dim unless
# you turn up the brightness so far that lines show up on the screen.
-mime-fb|full bright mime1,
- is2=^S\E, rmso=^S, smso=^Y, use=mime,
-mime-hb|half bright mime1,
- is2=^Y\E, rmso=^Y, smso=^S, use=mime,
+mime-fb|full bright mime1,
+ is2=^S\E, rmso=^S, smso=^Y, use=mime,
+mime-hb|half bright mime1,
+ is2=^Y\E, rmso=^Y, smso=^S, use=mime,
# (mime: removed obsolete ":ma=^X ^K^J^Z^P:"; removed ":do=^K:" that overrode
# the more plausible ":do=^J:" -- esr)
# uc was at one time disabled to get around a curses bug, be wary of it
-mime|mime1|mime2|mimei|mimeii|microterm mime1,
- OTbs, am,
- cols#80, it#8, lines#24, vt#9,
- bel=^G, clear=^]^C, cr=^M, cub1=^H, cud1=^J, cuf1=^X,
- cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%{48}%+%;%{80}%+%c,
- cuu1=^Z, dl1=\027$<80>, ed=^_, el=^^, home=^], ht=\011$<2>,
- il1=\001$<80>, ind=^J, is2=^S\E^Q, kcub1=^H, kcud1=^K,
- kcuf1=^X, kcuu1=^Z, ri=\022$<3>, uc=^U,
+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,
+ cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%{48}%+%;%{80}%+%c,
+ cuu1=^Z, dl1=\027$<80>, ed=^_, el=^^, home=^], ht=\011$<2>,
+ il1=\001$<80>, ind=^J, is2=^S\E^Q, kcub1=^H, kcud1=^K,
+ kcuf1=^X, kcuu1=^Z, ri=\022$<3>, uc=^U,
# 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,
- 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,
- kcuf1=^L, kcuu1=^K, ri=\EI, rmir=^Z, rmso=\E;, rmul=\E7,
- smir=\EE, smso=\E\:, smul=\E6,
+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,
+ 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,
+ 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,
- 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,
- kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EA, rmir=^Z, rmso=\E9,
- rmul=\E5, smir=^O, smso=\E8, smul=\E4,
+mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52),
+ OTbs,
+ cols#80, it#8, lines#24,
+ bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=^N,
+ dl1=\027$<20*>, ed=\EQ$<20*>, el=\EP, home=\EH, ht=^I,
+ il1=\001$<20*>, ind=^J, 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)
-mime3a|mime1 emulating 3a,
- am@,
- kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a,
-mime3ax|mime-3ax|mime1 emulating enhanced 3a,
- it#8,
- dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>,
- use=mime3a,
+mime3a|mime1 emulating 3a,
+ am@,
+ kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a,
+mime3ax|mime-3ax|mime1 emulating enhanced 3a,
+ it#8,
+ dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>,
+ use=mime3a,
# Wed Mar 9 18:53:21 1983
# We run our terminals at 2400 baud, so there might be some timing problems at
-# higher speeds. The major improvements in this model are the terminal now
+# higher speeds. The major improvements in this model are the terminal now
# scrolls down and insert mode works without redrawing the rest of the line
# to the right of the cursor. This is done with a bit of a kludge using the
# exit graphics mode to get out of insert, but it does not appear to hurt
# anything when using vi at least. If you have some users using act4s with
# programs that use curses and graphics mode this could be a problem.
-mime314|mm314|mime 314,
- am,
- cols#80, lines#24,
- clear=^L, cub1=^H, cuf1=^X, cup=\024%p1%c%p2%c, cuu1=^Z,
- dch1=^D, dl1=^W, ed=^_, el=^^, home=^], ht=^I, il1=^A, kcub1=^H,
- kcud1=^K, kcuf1=^X, kcuu1=^Z, rmir=^V, smir=^S,
+mime314|mm314|mime 314,
+ am,
+ cols#80, lines#24,
+ clear=^L, cub1=^H, cuf1=^X, cup=\024%p1%c%p2%c, cuu1=^Z,
+ dch1=^D, dl1=^W, ed=^_, el=^^, home=^], ht=^I, il1=^A, kcub1=^H,
+ kcud1=^K, kcuf1=^X, kcuu1=^Z, rmir=^V, smir=^S,
# 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,
- 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,
+mm340|mime340|mime 340,
+ cols#80, lines#24,
+ clear=\032$<12/>, cr=^M, cub1=^H, cud1=^J, 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,
# 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,
- 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=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- 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,
- 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,
- ri=\EM, rmam=\E[?7l, rmso=\E[0m, rmul=\E[24m,
- rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J,
- sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m,
- tbc=\E[g, tsl=\E[25;1H,
+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,
+ 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=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+ 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,
+ 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,
+ ri=\EM, rmam=\E[?7l, rmso=\E[0m, rmul=\E[24m,
+ rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J,
+ sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m,
+ tbc=\E[g, tsl=\E[25;1H,
# Fri Aug 5 08:11:57 1983
# This entry works for the ergo 4000 with the following setups:
# ansi,wraparound,newline disabled, xon/xoff disabled in both
# setup a & c.
-#
+#
# WARNING!!! There are multiple versions of ERGO 4000 microcode
-# Be advised that very early versions DO NOT WORK RIGHT !!
+# Be advised that very early versions DO NOT WORK RIGHT !!
# Microterm does have a ROM exchange program- use it or lose big
# (ergo400: added <rmam>/<smam> based on the init string -- esr)
-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,
- 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*>,
- is2=\E<\E=\E[?1l\E[?4l\E[?5l\E[?7h\E[?8h$<300>,
- kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
- kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=pf1, lf2=pf2, lf3=pf3,
- lf4=pf4, ri=\EM$<20*>, rmam=\E[?7l, rmir=\E[4l,
- rmkx=\E=$<4>, rmso=\E[m$<20>, sgr0=\E[m$<20>,
- smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>,
- smso=\E[7m$<20>,
-
-#### NCR
+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,
+ 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*>,
+ is2=\E<\E=\E[?1l\E[?4l\E[?5l\E[?7h\E[?8h$<300>,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP,
+ kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=pf1, lf2=pf2, lf3=pf3,
+ lf4=pf4, ri=\EM$<20*>, rmam=\E[?7l, rmir=\E[4l,
+ rmkx=\E=$<4>, rmso=\E[m$<20>, sgr0=\E[m$<20>,
+ smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>,
+ smso=\E[7m$<20>,
+
+#### NCR
#
# NCR's terminal group was merged with AT&T's when AT&T bought the company.
# For what happened to that group, see the ADDS section.
@@ -13074,487 +14610,485 @@ ergo4000|microterm ergo 4000,
#
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
-ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
- colors#8, pairs#64,
- op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- use=ncr260vt300an,
+ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
+ colors#8, pairs#64,
+ op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ use=ncr260vt300an,
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
-ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
- colors#8, pairs#64,
- op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- use=ncr260vt300wan,
+ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard,
+ colors#8, pairs#64,
+ op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ use=ncr260vt300wan,
# The Intecolor emulation of the NCR 2900/260C color terminal is basically a
# DEC vt200/300 with color capabilities added.
-ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard,
- colors#8, pairs#64,
- op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- use=ncr260vt300pp,
+ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard,
+ colors#8, pairs#64,
+ op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ use=ncr260vt300pp,
# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a
# DEC vt200/300 with color capabilities added.
-ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode,
- colors#8, pairs#64,
- op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
- use=ncr260vt300wpp,
+ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode,
+ colors#8, pairs#64,
+ op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ use=ncr260vt300wpp,
# This definition for ViewPoint supports several attributes. This means
# that it has magic cookies (extra spaces where the attributes begin).
# Some applications do not function well with magic cookies. The System
-# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
# If supporting various attributes is not vital, 'xmc#1' and the extra
-# attributes can be removed.
-# Mapping to ASCII character set ('acsc' capability) can also be
+# attributes can be removed.
+# Mapping to ASCII character set ('acsc' capability) can also be
# restored if needed.
-ncr260vppp|NCR 2900_260 viewpoint,
- am, bw, hs, km, mc5i, mir, msgr, xon,
- cols#80, lines#24, nlab#32, xmc#1,
- acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
- cbt=\EI, civis=\E`0, clear=\014$<40>, cnorm=\E`5,
- cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>,
- cvvis=\E`5, dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c,
- ed=\Ek$<2>, el=\EK$<2>, fsl=^M, home=\036$<2>, ht=^I,
- hts=\E1, il1=\EM$<2>, ind=\n$<2>, invis=\EG1,
- is2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
- kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ,
- kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=^J, kcuf1=^F,
- kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=^B\:\r,
- kf11=^B;\r, kf12=^B<\r, kf13=^B=\r, kf14=^B>\r, kf15=^B?\r,
- kf16=^B@\r, kf17=^B!\r, kf18=^B"\r, kf19=^B#\r, kf2=^B2\r,
- kf20=^B$\r, kf21=\002%^M, kf22=^B&\r, kf23=^B'\r,
- kf24=^B(\r, kf25=^B)\r, kf26=^B*\r, kf27=^B+\r,
- kf28=^B\,\r, kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r,
- kf32=^B0\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r,
- kf8=^B8\r, kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ,
- kprt=\EP, ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R,
- mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>,
- nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003,
- rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
- sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq,
- smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF,
-ncr260vpwpp|NCR 2900_260 viewpoint wide mode,
- cols#132,
- cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
- rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
- use=ncr260vppp,
-ncr260vt100an|NCR 2900_260 vt100 with ansi kybd,
- am, hs, mir, msgr, xenl, xon,
- cols#80, lines#24, nlab#32,
- acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
- blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>,
- cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
- cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
- cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
- cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
- dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
- ech=\E[%p1%dX, ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>,
- fsl=\E[0$}, home=\E[H$<1>, hpa=\E[%p1%dG$<40>, ht=^I,
- hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>,
- il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>,
- invis=\E[8m,
- is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- ka1=\EOw, ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kdch1=\E[3~, kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR,
- kf4=\EOS, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~,
- kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, nel=\EE$<5>, rc=\E8,
- rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l,
- rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m,
- rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
- sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h,
- smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g,
- tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
-ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd,
- cols#132,
- cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- use=ncr260vt100an,
-ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd,
- is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
- kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~,
- lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>,
- rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- smkx=\E=, use=ncr260vt100an,
-ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+ kybd,
- cols#132,
- cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- use=ncr260vt100pp,
-ncr260vt200an|NCR 2900_260 vt200 with ansi kybd,
- am, hs, mir, msgr, xenl, xon,
- cols#80, lines#24, nlab#32,
- acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
- blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
- csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
- cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
- cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
- cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
- cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
- dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
- ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
- fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
- ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
- ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
- is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- ka1=\EOw, ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kdch1=\E[3~, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
- kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
- kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf21=\E[31~,
- kf22=\E[32~, kf23=\E[33~, kf24=\E[34~, kf25=\E[35~,
- kf26=\E[1~, kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR,
- kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~,
- kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
- kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~,
- mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
- ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l,
- rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
- rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
- sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
- smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
- tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
-ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd,
- cols#132,
- cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
- use=ncr260vt200an,
-ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd,
- ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
- kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
- use=ncr260vt200an,
-ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+ kybd,
- cols#132,
- cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- use=ncr260vt200pp,
-ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
- am, hs, mir, msgr, xenl, xon,
- cols#80, lines#24, nlab#32,
- acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
- blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
- csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
- cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
- cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
- cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
- cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
- dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
- ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
- fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
- ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
- ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
- is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- ka1=\EOw, ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kdch1=\E[3~, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
- kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
- kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf21=\E[31~,
- kf22=\E[32~, kf23=\E[33~, kf24=\E[34~, kf25=\E[35~,
- kf26=\E[1~, kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR,
- kf30=\E[5~, kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~,
- kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
- kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~,
- mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
- ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l,
- rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
- rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
- sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
- smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
- tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
-ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd,
- cols#132,
- cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
- use=ncr260vt300an,
-ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd,
- ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
- kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
- use=ncr260vt300an,
-NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+ kybd,
- cols#132,
- cup=\E[%i%p1%d;%p2%dH$<30>,
- is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
- use=ncr260vt300pp,
-# This terminfo file contains color capabilities for the Wyse325 emulation of
+ncr260vppp|NCR 2900_260 viewpoint,
+ am, bw, hs, km, mc5i, mir, msgr, xon,
+ cols#80, lines#24, nlab#32, xmc#1,
+ acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
+ cbt=\EI, civis=\E`0, clear=\014$<40>, cnorm=\E`5,
+ cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>,
+ dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c, ed=\Ek$<2>,
+ el=\EK$<2>, fsl=^M, home=\036$<2>, ht=^I, hts=\E1,
+ il1=\EM$<2>, ind=\n$<2>, invis=\EG1,
+ is2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+ kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ,
+ kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=^J, kcuf1=^F,
+ kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=^B\:\r,
+ kf11=^B;\r, kf12=^B<\r, kf13=^B=\r, kf14=^B>\r, kf15=^B?\r,
+ kf16=^B@\r, kf17=^B!\r, kf18=^B"\r, kf19=^B#\r, kf2=^B2\r,
+ kf20=^B$\r, kf21=\002%^M, kf22=^B&\r, kf23=^B'\r,
+ kf24=^B(\r, kf25=^B)\r, kf26=^B*\r, kf27=^B+\r,
+ kf28=^B\,\r, kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r,
+ kf32=^B0\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r,
+ kf8=^B8\r, kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ,
+ kprt=\EP, ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R,
+ mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>,
+ nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003,
+ rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+ rs2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+ sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq,
+ smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF,
+ncr260vpwpp|NCR 2900_260 viewpoint wide mode,
+ cols#132,
+ cup=\Ea%i%p1%dR%p2%dC$<30>,
+ is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+ rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>,
+ use=ncr260vppp,
+ncr260vt100an|NCR 2900_260 vt100 with ansi kybd,
+ am, hs, mir, msgr, xenl, xon,
+ cols#80, lines#24, nlab#32,
+ acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
+ blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>,
+ cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
+ cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
+ cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
+ cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
+ dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
+ ech=\E[%p1%dX, ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>,
+ fsl=\E[0$}, home=\E[H$<1>, hpa=\E[%p1%dG$<40>, ht=^I,
+ hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>,
+ il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>,
+ invis=\E[8m,
+ is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ 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>,
+ sc=\E7,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
+ sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h,
+ smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g,
+ tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, 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>,
+ use=ncr260vt100an,
+ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd,
+ is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
+ kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~,
+ lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>,
+ rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ smkx=\E=, use=ncr260vt100an,
+ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+ kybd,
+ cols#132,
+ cup=\E[%i%p1%d;%p2%dH$<30>,
+ is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ use=ncr260vt100pp,
+ncr260vt200an|NCR 2900_260 vt200 with ansi kybd,
+ am, hs, mir, msgr, xenl, xon,
+ cols#80, lines#24, nlab#32,
+ acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
+ blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
+ csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
+ cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
+ cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
+ cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
+ cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
+ dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
+ ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
+ fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
+ ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
+ ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
+ is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ 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~,
+ kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+ kf2=\EOQ, kf20=\E[34~, kf21=\E[31~, kf22=\E[32~,
+ kf23=\E[33~, kf24=\E[34~, kf25=\E[35~, kf26=\E[1~,
+ kf27=\E[2~, kf28=\E[3~, kf29=\E[4~, kf3=\EOR, kf30=\E[5~,
+ kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~,
+ kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~,
+ kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~,
+ mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
+ ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l,
+ rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m,
+ rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ sc=\E7,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
+ sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
+ smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+ tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
+ use=vt220+keypad,
+ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd,
+ cols#132,
+ cup=\E[%i%p1%d;%p2%dH$<30>,
+ is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>,
+ use=ncr260vt200an,
+ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd,
+ ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
+ kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
+ use=ncr260vt200an,
+ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+ kybd,
+ cols#132,
+ cup=\E[%i%p1%d;%p2%dH$<30>,
+ is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ use=ncr260vt200pp,
+ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
+ am, hs, mir, msgr, xenl, xon,
+ cols#80, lines#24, nlab#32,
+ acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G,
+ blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>,
+ csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>,
+ cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>,
+ cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>,
+ cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>,
+ cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>,
+ dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~,
+ ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>,
+ fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH,
+ ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>,
+ ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m,
+ is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ 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~,
+ kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, kf19=\E[33~,
+ kf20=\E[34~, kf21=\E[31~, kf22=\E[32~, kf23=\E[33~,
+ kf24=\E[34~, kf25=\E[35~, kf26=\E[1~, kf27=\E[2~,
+ kf28=\E[3~, kf29=\E[4~, kf30=\E[5~, kf31=\E[6~, kf32=\E[7~,
+ kf33=\E[8~, kf34=\E[9~, kf35=\E[10~, kf5=\E[M, kf6=\E[17~,
+ kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
+ khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ krdo=\E[29~, kslt=\E[4~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
+ nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>,
+ rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m,
+ rmul=\E[24m,
+ rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ sc=\E7,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>,
+ sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
+ smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+ tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
+ use=vt220+keypad,
+ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd,
+ cols#132,
+ cup=\E[%i%p1%d;%p2%dH$<30>,
+ is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>,
+ use=ncr260vt300an,
+ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd,
+ ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~,
+ kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=,
+ use=ncr260vt300an,
+NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+ kybd,
+ cols#132,
+ cup=\E[%i%p1%d;%p2%dH$<30>,
+ is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>,
+ use=ncr260vt300pp,
+# This terminfo file contains color capabilities for the Wyse325 emulation of
# the NCR 2900/260C color terminal. Because of the structure of the command
# (escape sequence) used to set color attributes, one of the fore/background
# colors must be preset to a given value. I have set the background color to
# black. The user can change this setup by altering the last section of the
-# 'setf' definition. The escape sequence to set color attributes is
-# ESC d y <foreground_color> <background_color> 1
+# '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 capablitiy 'op' sets colors to green on black (default combination).
#
# NOTE: The NCR Unix System Administrator's Shell will not function properly
# if the 'pairs' capability is defined. Un-Comment the 'pairs'
-# capability and recompile if you wish to have it included.
-#
-ncr260wy325pp|NCR 2900_260 wyse 325,
- am, bw, hs, km, mc5i, mir, msgr, xon,
- colors#16, cols#80, lines#24, ncv#33, nlab#32,
- acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
- cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=^M,
- cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
- cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
- ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<5>, ht=^I,
- hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
- is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
- kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET,
- kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r,
- kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r,
- kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r,
- kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r,
- kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r, kf30=^Am\r, kf31=^An\r,
- kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
- kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ,
- kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
- mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
- nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
- rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- setb=\s,
- setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}%e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t%{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=%t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>,
- sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH\002\EcB1, smam=\Ed/,
- smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
- tsl=\EF,
-ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode,
- cols#132,
- cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- use=ncr260wy325pp,
+# capability and recompile if you wish to have it included.
+#
+ncr260wy325pp|NCR 2900_260 wyse 325,
+ am, bw, hs, km, mc5i, mir, msgr, xon,
+ colors#16, cols#80, lines#24, ncv#33, nlab#32,
+ acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
+ cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=^M,
+ cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
+ cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
+ ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<5>, ht=^I,
+ hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
+ is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
+ kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI,
+ kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kend=\ET,
+ kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r,
+ kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r,
+ kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r,
+ kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r,
+ kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r, kf30=^Am\r, kf31=^An\r,
+ kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r,
+ kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ,
+ kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
+ mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
+ nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
+ rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+ rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ setb=\s,
+ setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}%e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t%{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=%t%{63}%e%p1%{15}%=%t%{56}%;\Edy%c11$<100>,
+ sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH\002\EcB1, smam=\Ed/,
+ smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
+ tsl=\EF,
+ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode,
+ cols#132,
+ cup=\Ea%i%p1%dR%p2%dC$<30>,
+ is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ use=ncr260wy325pp,
# This definition for Wyse 350 supports several attributes. This means
# that it has magic cookies (extra spaces where the attributes begin).
# Some applications do not function well with magic cookies. The System
-# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
# If supporting various attributes is not vital, 'xmc#1' and the extra
-# attributes can be removed.
-# Mapping to ASCII character set ('acsc' capability) can also be
+# attributes can be removed.
+# Mapping to ASCII character set ('acsc' capability) can also be
# restored if needed.
# In addition, color capabilities have been added to this file. The drawback,
# however, is that the background color has to be black. The foreground colors
-# are numbered 0 through 15.
+# are numbered 0 through 15.
#
# NOTE: The NCR Unix System Administrator's Shell does not function properly
# with the 'pairs' capability defined as below. If you wish to
-# have it included, Un-comment it and recompile (using 'tic').
-#
-ncr260wy350pp|NCR 2900_260 wyse 350,
- am, bw, hs, km, mc5i, mir, msgr, xon,
- colors#16, cols#80, lines#24, ncv#33, nlab#32, xmc#1,
- acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
- cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
- cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>,
- cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
- ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<10>, ht=^I,
- hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
- is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
- kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
- kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
- kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
- kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
- kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
- kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
- kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
- kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
- khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
- mc0=\EP$<10>, mc4=^T, mc5=^R,
- mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>,
- nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
- rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- setb=\s,
- setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}%e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t%{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1%{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>,
- sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/,
- smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
- tsl=\EF,
-ncr260wy350wpp|NCR 2900_260 wyse 350 wide mode,
- cols#132,
- cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
- rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
- use=ncr260wy350pp,
+# 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,
+ cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>,
+ cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
+ ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<10>, ht=^I,
+ hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1,
+ is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
+ kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
+ kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
+ kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
+ kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
+ kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
+ kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
+ kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
+ kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
+ khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
+ mc0=\EP$<10>, mc4=^T, mc5=^R,
+ mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>,
+ nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0,
+ rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+ rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ setb=\s,
+ setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}%e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t%{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1%{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>,
+ sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/,
+ smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0,
+ tsl=\EF,
+ncr260wy350wpp|NCR 2900_260 wyse 350 wide mode,
+ cols#132,
+ cup=\Ea%i%p1%dR%p2%dC$<30>,
+ is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+ rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+ use=ncr260wy350pp,
# This definition for Wyse 50+ supports several attributes. This means
# that it has magic cookies (extra spaces where the attributes begin).
# Some applications do not function well with magic cookies. The System
-# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
+# Administrator's Shell in NCR Unix SVR4 1.03 is one such application.
# If supporting various attributes is not vital, 'xmc#1' and the extra
-# attributes can be removed.
-# Mapping to ASCII character set ('acsc' capability) can also be
+# attributes can be removed.
+# Mapping to ASCII character set ('acsc' capability) can also be
# restored if needed.
-# (ncr260wy50+pp: originally contained commented-out
+# (ncr260wy50+pp: originally contained commented-out
# <acsc=j5k3l2m1n8q:t4u9v=w0x6>, as well as the commented-out one there -- esr)
-ncr260wy50+pp|NCR 2900_260 wyse 50+,
- am, bw, hs, km, mc5i, mir, msgr, xon,
- cols#80, lines#24, nlab#32, xmc#1,
- acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
- cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
- cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>,
- cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
- ed=\EY$<5>, el=\ET$<5>, fsl=^M, home=\036$<10>,
- ht=\011$<5>, hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>,
- invis=\EG1,
- is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
- kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
- kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
- kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
- kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
- kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
- kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
- kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
- kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
- khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
- mc0=\EP$<10>, mc4=^T, mc5=^R,
- mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
- nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
- rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq,
- smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF,
-ncr260wy50+wpp|NCR 2900_260 wyse 50+ wide mode,
- cols#132,
- cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
- rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
- use=ncr260wy50+pp,
-ncr260wy60pp|NCR 2900_260 wyse 60,
- am, bw, hs, km, mc5i, mir, msgr, xon,
- cols#80, lines#24, nlab#32,
- acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
- cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1,
- cr=^M, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
- cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
- ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<25>,
- ht=\011$<15>, hts=\E1$<15>, il1=\EE$<5>, ind=\n$<5>,
- invis=\EG1,
- is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
- kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK,
- kcbt=\EI$<15>, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
- kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
- kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
- kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r,
- kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r,
- kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r,
- kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r,
- kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
- kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
- mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>,
- nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
- rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
- rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/,
- smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>,
- tsl=\EF,
-ncr260wy60wpp|NCR 2900_260 wyse 60 wide mode,
- cols#132,
- cup=\Ea%i%p1%dR%p2%dC$<30>,
- is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
- use=ncr260wy60pp,
-ncr160vppp|NCR 2900_160 viewpoint,
- use=ncr260vppp,
-ncr160vpwpp|NCR 2900_160 viewpoint wide mode,
- use=ncr260vpwpp,
-ncr160vt100an|NCR 2900_160 vt100 with ansi kybd,
- use=ncr260vt100an,
-ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd,
- use=ncr260vt100pp,
-ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd,
- use=ncr260vt100wan,
-ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+ kybd,
- use=ncr260vt100wpp,
-ncr160vt200an|NCR 2900_160 vt200 with ansi kybd,
- use=ncr260vt200an,
-ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd,
- use=ncr260vt200pp,
-ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd,
- use=ncr260vt200wan,
-ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+ kybd,
- use=ncr260vt200wpp,
-ncr160vt300an|NCR 2900_160 vt300 with ansi kybd,
- use=ncr260vt300an,
-ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd,
- use=ncr260vt300pp,
-ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd,
- use=ncr260vt300wan,
-ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+ kybd,
- use=ncr260vt300wpp,
-ncr160wy50+pp|NCR 2900_160 wyse 50+,
- use=ncr260wy50+pp,
-ncr160wy50+wpp|NCR 2900_160 wyse 50+ wide mode,
- use=ncr260wy50+wpp,
-ncr160wy60pp|NCR 2900_160 wyse 60,
- use=ncr260wy60pp,
-ncr160wy60wpp|NCR 2900_160 wyse 60 wide mode,
- use=ncr260wy60wpp,
-ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal,
- am, hs, mc5i, mir, msgr, xon,
- cols#80, it#8, lines#24, nlab#32,
- acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~,
- bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>,
- clear=\E[2J\E[1;1H$<300>, cr=^M,
- csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>,
- cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>,
- cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>,
- cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>,
- cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>,
- dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>,
- ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>,
- enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>,
- ht=^I, hts=\EH, il=\E[%p1%dL$<80>, il1=\E[B\E[L$<80>,
- ind=\ED,
- is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0$<200>,
- kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kbs=^H, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=^M, kf1=\EOP,
- kf2=\EOQ, kf3=\EOR, kf4=\EOS, mc0=\E[i$<100>, nel=\EE,
- rc=\E8, rev=\E[7m$<30>, ri=\EM$<50>, rmacs=\017$<90>,
- rmir=\E[4l$<80>, rmso=\E[0m$<30>, rmul=\E[0m$<30>,
- rs2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>,
- sc=\E7,
- sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<100>,
- sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>,
- smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>,
- tsl=\E[>+1$<70>,
-ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
- cols#132,
- is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0$<200>,
- rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>,
- use=ncrvt100an,
+ncr260wy50+pp|NCR 2900_260 wyse 50+,
+ am, bw, hs, km, mc5i, mir, msgr, xon,
+ cols#80, lines#24, nlab#32, xmc#1,
+ acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2,
+ cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M,
+ cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>,
+ cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c,
+ ed=\EY$<5>, el=\ET$<5>, fsl=^M, home=\036$<10>,
+ ht=\011$<5>, hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>,
+ invis=\EG1,
+ is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H,
+ kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L,
+ kcuu1=^K, kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r,
+ kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r,
+ kf16=^AO\r, kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r,
+ kf20=^Ac\r, kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r,
+ kf25=^Ah\r, kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r,
+ kf3=^AB\r, kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r,
+ kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r,
+ khome=^^, kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP,
+ mc0=\EP$<10>, mc4=^T, mc5=^R,
+ mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<10>,
+ nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
+ rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+ rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq,
+ smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF,
+ncr260wy50+wpp|NCR 2900_260 wyse 50+ wide mode,
+ cols#132,
+ cup=\Ea%i%p1%dR%p2%dC$<30>,
+ is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+ rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>,
+ use=ncr260wy50+pp,
+ncr260wy60pp|NCR 2900_260 wyse 60,
+ am, bw, hs, km, mc5i, mir, msgr, xon,
+ cols#80, lines#24, nlab#32,
+ acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2,
+ cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1,
+ cr=^M, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>,
+ cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c,
+ ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<25>,
+ ht=\011$<15>, hts=\E1$<15>, il1=\EE$<5>, ind=\n$<5>,
+ invis=\EG1,
+ is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ kDC=\ER, kEND=\EY, kHOM=\E{, kNXT=\EK, kPRT=\E7, kPRV=\EJ,
+ kRIT=^L, ka1=^^, kb2=\EJ, kbs=^H, kc1=\ET, kc3=\EK,
+ kcbt=\EI$<15>, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K,
+ kdch1=\EW, kend=\ET, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r,
+ kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r,
+ kf17=^A`\r, kf18=^Aa\r, kf19=^Ab\r, kf2=^AA\r, kf20=^Ac\r,
+ kf21=^Ad\r, kf22=^Ae\r, kf23=^Af\r, kf24=^Ag\r, kf25=^Ah\r,
+ kf26=^Ai\r, kf27=^Aj\r, kf28=^Ak\r, kf29=^Al\r, kf3=^AB\r,
+ kf30=^Am\r, kf31=^An\r, kf32=^Ao\r, kf4=^AC\r, kf5=^AD\r,
+ kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^,
+ kich1=\Eq, knp=\EK, kpp=\EJ, kprt=\EP, mc0=\EP, mc4=^T, mc5=^R,
+ mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>,
+ nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed.,
+ rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20,
+ rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/,
+ smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>,
+ tsl=\EF,
+ncr260wy60wpp|NCR 2900_260 wyse 60 wide mode,
+ cols#132,
+ cup=\Ea%i%p1%dR%p2%dC$<30>,
+ is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>,
+ use=ncr260wy60pp,
+ncr160vppp|NCR 2900_160 viewpoint,
+ use=ncr260vppp,
+ncr160vpwpp|NCR 2900_160 viewpoint wide mode,
+ use=ncr260vpwpp,
+ncr160vt100an|NCR 2900_160 vt100 with ansi kybd,
+ use=ncr260vt100an,
+ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd,
+ use=ncr260vt100pp,
+ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd,
+ use=ncr260vt100wan,
+ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+ kybd,
+ use=ncr260vt100wpp,
+ncr160vt200an|NCR 2900_160 vt200 with ansi kybd,
+ use=ncr260vt200an,
+ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd,
+ use=ncr260vt200pp,
+ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd,
+ use=ncr260vt200wan,
+ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+ kybd,
+ use=ncr260vt200wpp,
+ncr160vt300an|NCR 2900_160 vt300 with ansi kybd,
+ use=ncr260vt300an,
+ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd,
+ use=ncr260vt300pp,
+ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd,
+ use=ncr260vt300wan,
+ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+ kybd,
+ use=ncr260vt300wpp,
+ncr160wy50+pp|NCR 2900_160 wyse 50+,
+ use=ncr260wy50+pp,
+ncr160wy50+wpp|NCR 2900_160 wyse 50+ wide mode,
+ use=ncr260wy50+wpp,
+ncr160wy60pp|NCR 2900_160 wyse 60,
+ use=ncr260wy60pp,
+ncr160wy60wpp|NCR 2900_160 wyse 60 wide mode,
+ use=ncr260wy60wpp,
+ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal,
+ am, hs, mc5i, mir, msgr, xon,
+ cols#80, it#8, lines#24, nlab#32,
+ acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~,
+ bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>,
+ clear=\E[2J\E[1;1H$<300>, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>,
+ cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>,
+ cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>,
+ cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>,
+ cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>,
+ dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>,
+ ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>,
+ enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>,
+ ht=^I, hts=\EH, il=\E[%p1%dL$<80>, il1=\E[B\E[L$<80>,
+ ind=\ED,
+ is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3l\E(B\E)0$<200>,
+ kLFT=\E[D, kRIT=\E[C, ka1=\E[H, kbs=^H, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=^M, kf1=\EOP,
+ kf2=\EOQ, kf3=\EOR, kf4=\EOS, mc0=\E[i$<100>, nel=\EE,
+ rc=\E8, rev=\E[7m$<30>, ri=\EM$<50>, rmacs=\017$<90>,
+ rmir=\E[4l$<80>, rmso=\E[0m$<30>, rmul=\E[0m$<30>,
+ rs2=\Ec\E[12;31h\E[?3;4;5;10l\E[?6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>,
+ sc=\E7,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<100>,
+ sgr0=\017\E[0m$<120>, smacs=\016$<90>, smir=\E[4h$<80>,
+ smso=\E[7m$<30>, smul=\E[4m$<30>, tbc=\E[3g$<40>,
+ tsl=\E[>+1$<70>,
+ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
+ cols#132,
+ is2=\E[12h\E[?10l\E%/0n\E[P\031\E[?3h\E(B\E)0$<200>,
+ rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>,
+ use=ncrvt100an,
#
# Vendor-supplied NCR termcaps end here
@@ -13566,7 +15100,7 @@ ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
# 6 - Don't Send or Do Send Spaces
# 7 - Parity Enable
# 8 - Stop Bits (One/Two)
-#
+#
# Switch B:
# 1 - Upper/Lower Shift
# 2 - Typewriter Shift
@@ -13575,7 +15109,7 @@ ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
# 5-6 - Carriage Return Without / With Line Feed
# 7 - Extended Mode
# 8 - Suppress Keyboard Display
-#
+#
# Switch C:
# 1 - End of line entry disabled/enabled
# 2 - Conversational mode / (Local?) Mode
@@ -13585,7 +15119,7 @@ ncrvt100wan|NCRVT100WPP|ncrvt100wpp|NCR VT100 emulation of the 2900 terminal,
# 6 - (50Hz?) / 60 Hz
# 7 - Exit after level zero diagnostics
# 8 - RS-232 interface
-#
+#
# Switch D:
# 1 - Reverse Channel (yes / no)
# 2 - Manual answer (no / yes)
@@ -13611,126 +15145,126 @@ 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,
- 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,
- 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,
- sgr0=\E0@, smso=\E0Q, smul=\E0`,
-ncr7900iv|ncr 7900 model 4,
- am, bw, eslok, hs,
- cols#80, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J,
- cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1,
- fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=^J, kbs=^H,
- kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET,
- kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
- khome=\EH, lf6=blue, lf7=red, lf8=white, nel=^M^J,
- tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo,
+ncr7900i|ncr7900|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,
+ 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,
+ sgr0=\E0@, smso=\E0Q, smul=\E0`,
+ncr7900iv|ncr 7900 model 4,
+ am, bw, eslok, hs,
+ cols#80, lines#24,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J,
+ cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1,
+ fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=^J, kbs=^H,
+ kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET,
+ kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
+ khome=\EH, lf6=blue, lf7=red, lf8=white, nel=^M^J,
+ tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo,
# Warning: This terminal will lock out the keyboard when it receives a CTRL-D.
# The user can enter a CTRL-B to get out of this locked state.
# In <hpa>, we want to output the character given by the formula:
# ((col / 10) * 16) + (col % 10) where "col" is "p1"
-ncr7901|ncr 7901 model,
- am, bw, ul,
- cols#80, lines#24,
- bel=^G, blink=\E0B, civis=^W, clear=^L, cnorm=^X, cr=^M,
- cub1=^H, cud1=^J, 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,
- 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,
- sgr0=^O, smso=\E0Q\016, smul=\E0`\016,
- vpa=\013%p1%{64}%+%c,
+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,
+ 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,
+ 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,
+ sgr0=^O, smso=\E0Q\016, smul=\E0`\016,
+ vpa=\013%p1%{64}%+%c,
#### Perkin-Elmer (Owl)
#
# These are official terminfo entries from within Perkin-Elmer.
#
-bantam|pe550|pe6100|perkin elmer 550,
- OTbs,
- cols#80, lines#24,
- bel=^G, clear=\EK$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
- el=\EI$<20>, home=\EH, ind=^J, ll=\EH\EA,
-fox|pe1100|perkin elmer 1100,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
- cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
- ed=\EJ$<5.5*>, el=\EI, flash=\020\002$<200/>\020\003,
- home=\EH, hts=\E1, ind=^J, ll=\EH\EA, tbc=\E3,
-owl|pe1200|perkin elmer 1200,
- OTbs, am, in,
- cols#80, lines#24,
- bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
- cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
- 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*>,
- 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,
- cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
- ed=\EJ$<20*>, el=\EI$<10*>, home=\EH, hts=\E1, ind=^J,
- kf0=\ERA, kf1=\ERB, kf10=\ERK, kf2=\ERC, kf3=\ERD, kf4=\ERE,
- kf5=\ERF, kf6=\ERG, kf7=\ERH, kf8=\ERI, kf9=\ERJ, tbc=\E3,
+bantam|pe550|pe6100|perkin elmer 550,
+ OTbs,
+ cols#80, lines#24,
+ bel=^G, clear=\EK$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
+ el=\EI$<20>, home=\EH, ind=^J, ll=\EH\EA,
+fox|pe1100|perkin elmer 1100,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
+ cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
+ ed=\EJ$<5.5*>, el=\EI, flash=\020\002$<200/>\020\003,
+ home=\EH, hts=\E1, ind=^J, ll=\EH\EA, tbc=\E3,
+owl|pe1200|perkin elmer 1200,
+ OTbs, am, in,
+ cols#80, lines#24,
+ bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J,
+ cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
+ 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*>,
+ 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,
+ cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA,
+ ed=\EJ$<20*>, el=\EI$<10*>, home=\EH, hts=\E1, ind=^J,
+ 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,
- cuf1=\EC, cup=\ES%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
- ed=\EJ, el=\EI, home=\EH, ind=^J,
- 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,
- 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,
- is1=\E!\0\EW 7o\Egf\Eb0\Ec7\ES7\s, rmso=\Eb0,
- rmul=\E!\0, smso=\Eb2, smul=\E!\s, use=pe7000m,
+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,
+ cuf1=\EC, cup=\ES%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
+ ed=\EJ, el=\EI, home=\EH, ind=^J,
+ 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,
+ 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,
+ is1=\E!\0\EW 7o\Egf\Eb0\Ec7\ES7\s, rmso=\Eb0,
+ rmul=\E!\0, smso=\Eb2, smul=\E!\s, use=pe7000m,
#### Sperry Univac
#
# Sperry Univac has merged with Burroughs to form Unisys.
#
-# This entry is for the Sperry UTS30 terminal running the TTY
-# utility under control of CP/M Plus 1R1. The functionality
+# This entry is for the Sperry UTS30 terminal running the TTY
+# utility under control of CP/M Plus 1R1. The functionality
# provided is comparable to the DEC vt100.
# (uts30: I added <rmam>/<smam> based on the init string -- esr)
-uts30|sperry uts30 with cp/m@1R1,
- am, bw, hs,
- 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,
- 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=\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,
- 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,
- 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,
- rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
- sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, smso=\E[7m,
- smul=\E[4m, tsl=\E], uc=\EPB,
+uts30|sperry uts30 with cp/m@1R1,
+ am, bw, hs,
+ 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,
+ 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=\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,
+ 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,
+ 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,
+ rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+ sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, smso=\E[7m,
+ smul=\E[4m, tsl=\E], uc=\EPB,
#### Tandem
#
@@ -13739,8 +15273,8 @@ uts30|sperry uts30 with cp/m@1R1,
# on the merchant market, and so are fairly uncommon.
#
-tandem6510|adm3a repackaged by Tandem,
- use=adm3a,
+tandem6510|adm3a repackaged by Tandem,
+ use=adm3a,
# A funny series of terminal that TANDEM uses. The actual model numbers
# have a fourth digit after 653 that designates minor variants. These are
@@ -13748,97 +15282,97 @@ tandem6510|adm3a repackaged by Tandem,
# this doubtless(?) exploits. There is a 6520 that is slightly dumber.
# (tandem653: had ":sb=\ES:", probably someone's mistake for sf; also,
# removed <if=/usr/share/tabset/tandem653>, no such file -- esr)
-tandem653|t653x|Tandem 653x multipage terminal,
- OTbs, am, da, db, hs,
- cols#80, lines#24, wsl#64, xmc#1,
- clear=\EI, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\023%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dsl=\Eo\r,
- ed=\EJ, el=\EK, fsl=^M, home=\EH, ind=\ES, ri=\ET, rmso=\E6\s,
- rmul=\E6\s, sgr0=\E6\s, smso=\E6$, smul=\E60, tsl=\Eo,
+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,
+ 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,
+ rmul=\E6\s, sgr0=\E6\s, smso=\E6$, smul=\E60, tsl=\Eo,
#### Tandy/Radio Shack
#
# Tandy has a line of VDTs distinct from its microcomputers.
#
-dmterm|deskmate terminal,
- am, bw,
- cols#80, lines#24,
- bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=^M, 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,
- kcuf1=\EC, kcuu1=\EA, kf0=\E1, kf1=\E2, kf2=\E3, kf3=\E4,
- kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0,
- khome=\EH, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6,
- lf6=f7, lf7=f8, lf8=f9, lf9=f10, ll=\EE, rmul@, smul@,
- use=adm+sgr,
-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,
- 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,
- 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,
- knp=\E[29~, kpp=\E[28~, lf1=f1, lf2=f2, lf3=f3, lf4=f4, lf5=f5,
- lf6=f6, lf7=f7, lf8=f8, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m,
- sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m,
-dt100w|dt-100w|Tandy DT-100 terminal (wide mode),
- cols#132, use=dt100,
-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,
- csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[0B, cuf1=\E[C,
- cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[0A, 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,
- 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~,
- khome=\E[G, kich1=\E[@, knp=\E[26~, kpp=\E[25~, lf0=f1,
- lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf8=f9,
- lf9=f10, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
- smacs=^N, smso=\E[7m, smul=\E[4m,
-pt210|TRS-80 PT-210 printing terminal,
- hc, os,
- cols#80,
- bel=^G, cr=^M, cud1=^J, ind=^J,
+dmterm|deskmate terminal,
+ am, bw,
+ cols#80, lines#24,
+ bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=^M, 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,
+ kcuf1=\EC, kcuu1=\EA, kf0=\E1, kf1=\E2, kf2=\E3, kf3=\E4,
+ kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0,
+ khome=\EH, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6,
+ lf6=f7, lf7=f8, lf8=f9, lf9=f10, ll=\EE, rmul@, smul@,
+ use=adm+sgr,
+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,
+ 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,
+ 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,
+ knp=\E[29~, kpp=\E[28~, lf1=f1, lf2=f2, lf3=f3, lf4=f4, lf5=f5,
+ lf6=f6, lf7=f7, lf8=f8, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m,
+ sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m,
+dt100w|dt-100w|Tandy DT-100 terminal (wide mode),
+ cols#132, use=dt100,
+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,
+ csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[0B, cuf1=\E[C,
+ cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[0A, 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,
+ 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~,
+ khome=\E[G, kich1=\E[@, knp=\E[26~, kpp=\E[25~, lf0=f1,
+ lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf8=f9,
+ lf9=f10, ri=\EM, rmacs=^O, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+ smacs=^N, smso=\E[7m, smul=\E[4m,
+pt210|TRS-80 PT-210 printing terminal,
+ hc, os,
+ cols#80,
+ bel=^G, cr=^M, cud1=^J, ind=^J,
#### Tektronix (tek)
#
-# Tektronix tubes are graphics terminals. Most of them use modified
+# Tektronix tubes are graphics terminals. Most of them use modified
# oscilloscope technology incorporating a long-persistence green phosphor,
# and support vector graphics on a main screen with an attached "dialogue
# area" for interactive text.
#
-tek|tek4012|tektronix 4012,
- OTbs, os,
- cols#75, lines#35,
- bel=^G, clear=\E\014$<1000>, cr=^M, cub1=^H, cud1=^J,
- ff=\014$<1000>, is2=\E^O,
+tek|tek4012|tektronix 4012,
+ OTbs, os,
+ cols#75, lines#35,
+ bel=^G, clear=\E\014$<1000>, cr=^M, cub1=^H, cud1=^J,
+ ff=\014$<1000>, is2=\E^O,
# (tek4013: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
-tek4013|tektronix 4013,
- acsc=, rmacs=\E^O, smacs=\E^N, use=tek4012,
-tek4014|tektronix 4014,
- cols#81, lines#38,
- is2=\E\017\E9, use=tek4012,
+tek4013|tektronix 4013,
+ acsc=, rmacs=\E^O, smacs=\E^N, use=tek4012,
+tek4014|tektronix 4014,
+ cols#81, lines#38,
+ is2=\E\017\E9, use=tek4012,
# (tek4015: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
-tek4015|tektronix 4015,
- acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014,
-tek4014-sm|tektronix 4014 in small font,
- cols#121, lines#58,
- is2=\E\017\E\:, use=tek4014,
+tek4015|tektronix 4015,
+ acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014,
+tek4014-sm|tektronix 4014 in small font,
+ cols#121, lines#58,
+ is2=\E\017\E\:, use=tek4014,
# (tek4015-sm: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
-tek4015-sm|tektronix 4015 in small font,
- acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014-sm,
+tek4015-sm|tektronix 4015 in small font,
+ acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014-sm,
# Tektronix 4023 from Andrew Klossner <orca!andrew.tektronix@csnet-relay>
#
# You need to have "stty nl2" in effect. Some versions of tset(1) know
@@ -13848,50 +15382,50 @@ tek4015-sm|tektronix 4015 in small font,
# live with Magic Cookie, remove the :so: and :se: fields and do without
# reverse video. If you like reverse video stand-out mode but don't want
# it to flash, change the letter 'H' to 'P' in the :so: field.
-tek4023|tektronix 4023,
- OTbs, am,
- OTdN#4, cols#80, lines#24, vt#4, xmc#1,
- OTnl=^J, bel=^G, clear=\E\014$<4/>, cr=^M, cub1=^H, cud1=^J,
- cuf1=^I, cup=\034%p2%{32}%+%c%p1%{32}%+%c, kbs=^H,
- rmso=^_@, smso=^_P,
+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,
+ cuf1=^I, cup=\034%p2%{32}%+%c%p1%{32}%+%c, kbs=^H,
+ rmso=^_@, smso=^_P,
# It is recommended that you run the 4025 at 4800 baud or less;
# various bugs in the terminal appear at 9600. It wedges at the
# bottom of memory (try "cat /usr/dict/words"); ^S and ^Q typed
# on keyboard don't work. You have to hit BREAK twice to get
# one break at any speed - this is a documented feature.
-# Can't use cursor motion because it's memory relative, and
-# because it only works in the workspace, not the monitor.
+# Can't use cursor motion because it's memory relative, and
+# because it only works in the workspace, not the monitor.
# Same for home. Likewise, standout only works in the workspace.
-#
-# <el> was commented out since vi and rogue seem to work better
+#
+# <el> was commented out since vi and rogue seem to work better
# simulating it with lots of spaces!
-#
-# <il1> and <il> had 145ms of padding, but that slowed down vi's ^U
+#
+# <il1> and <il> had 145ms of padding, but that slowed down vi's ^U
# and didn't seem necessary.
#
-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,
- cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r,
- cud1=^F^J, 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,
- 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,
-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,
- 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/!,
- is2=\037com 33\r\n!sto 9 17 25 33 41 49 57 65 73\r,
- rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025,
+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,
+ cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r,
+ cud1=^F^J, 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,
+ 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,
+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,
+ 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/!,
+ is2=\037com 33\r\n!sto 9 17 25 33 41 49 57 65 73\r,
+ rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025,
# Tektronix 4025a
# From: Doug Gwyn <gwyn@brl-smoke.ARPA>
# The following status modes are assumed for normal operation (replace the
@@ -13912,74 +15446,72 @@ tek4025-ex|tek4027-ex|tek 4025/4027 w/!,
# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# (tek4025a: removed obsolete ":xx:". This may mean the tek4025a entry won't
# work any more. -- esr)
-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;,
- 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;,
- tbc=\035sto;,
+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;,
+ 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;,
+ 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.
# It should work with any program using the old curses (e.g. it better
# not try to scroll, or cursor addressing won't work. Also, you can't
# see the cursor.)
# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh)
-tek4025-cr|tek 4025 for curses and rogue,
- 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,
- is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r,
- rmcup=\037wor 0, smcup=\037wor 33h,
+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,
+ 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,
- 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, 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,
- is2=\E%!1\E[?6141\E[m, kbs=^H, kcub1=\E[1D, kcud1=\E[1B,
- kcuf1=\E[1C, kcuu1=\E[1A, rev=\E[=1;<3m, ri=\E[T,
- rmacs=\E[m, rmcup=, rmir=\E[4l, rmso=\E[=0;<1m,
- rmul=\E[=0;<1m, sgr0=\E[=0;<1m, smacs=\E[1m,
- smcup=\E%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m,
- smul=\E[=5;<2m, tbc=\E[1g,
+tek4025ex|4025ex|4027ex|tek 4025 w/!,
+ is2=\037com 33\r\n!sto 9\,17\,25\,33\,41\,49\,57\,65\,73\r,
+ rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025,
+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, 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,
+ is2=\E%!1\E[?6141\E[m, kbs=^H, kcub1=\E[1D, kcud1=\E[1B,
+ kcuf1=\E[1C, kcuu1=\E[1A, rev=\E[=1;<3m, ri=\E[T,
+ rmacs=\E[m, rmcup=, rmir=\E[4l, rmso=\E[=0;<1m,
+ rmul=\E[=0;<1m, sgr0=\E[=0;<1m, smacs=\E[1m,
+ smcup=\E%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m,
+ smul=\E[=5;<2m, tbc=\E[1g,
# (tek4105-30: I added <rmam>/<smam> based on the init string -- esr)
-tek4105-30|4015 emulating 30 line vt100,
- am, mir, msgr, xenl, xon,
- 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,
- 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, ka1=\EOq,
- ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD,
- kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, kf0=\EOy,
- kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt,
- kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, 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[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
+tek4105-30|4015 emulating 30 line vt100,
+ am, mir, msgr, xenl, xon,
+ 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,
+ 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, 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[1;7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
+ use=vt100+fnkeys,
# Tektronix 4105 from BRL
# The following setup modes are assumed for normal operation:
@@ -14002,27 +15534,27 @@ tek4105-30|4015 emulating 30 line vt100,
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# "IC" cannot be used in combination with "im" & "ei".
# "tek4105a" is just a guess:
-tek4105a|Tektronix 4105,
- OTbs, OTpt, msgr, xon,
- OTkn#8, cols#80, it#8, lines#30, vt#3,
- acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
- civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
- cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!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>,
- 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,
+tek4105a|Tektronix 4105,
+ OTbs, OTpt, msgr, xon,
+ OTkn#8, cols#80, it#8, lines#30, vt#3,
+ acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
+ civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J,
+ cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!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>,
+ 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,
#
# Tektronix 4106/4107/4109 from BRL
@@ -14046,142 +15578,142 @@ tek4105a|Tektronix 4105,
# and factory color maps. After setting these modes, save them with NVSAVE. No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
# "IC" cannot be used in combination with "im" & "ei".
-tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109,
- msgr, xon,
- 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,
- 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>,
- 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,
-
-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,
- 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,
- 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%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%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,
+tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109,
+ msgr, xon,
+ 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,
+ 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>,
+ 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,
+
+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,
+ 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,
+ 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%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%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;
# see the note attached to tek4207.
-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,
- is2=\E7\E[?6l\E[2K\E[?6h\E8,
- tsl=\E7\E[?6l\E[2K\E[;%i%df, use=tek4107,
+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,
+ is2=\E7\E[?6l\E[2K\E[?6h\E8,
+ tsl=\E7\E[?6l\E[2K\E[;%i%df, use=tek4107,
# The 4110 series may be a wonderful graphics series, but they make the 4025
# look good for screen editing. In the dialog area, you can't move the cursor
# off the bottom line. Out of the dialog area, ^K moves it up, but there
# is no way to scroll.
-#
-# Note that there is a floppy for free from Tek that makes the
+#
+# Note that there is a floppy for free from Tek that makes the
# 4112 emulate the vt52 (use the vt52 termcap). There is also
# an expected enhancement that will use ANSI standard sequences.
-#
-# 4112 in non-dialog area pretending to scroll. It really wraps
+#
+# 4112 in non-dialog area pretending to scroll. It really wraps
# but vi is said to work (more or less) in this mode.
-#
+#
# 'vi' works reasonably well with this entry.
#
-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,
- rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0,
+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,
+ rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0,
# The 4112 with the ANSI compatibility enhancement
-tek4112|tek4114|tektronix 4110 series,
- OTbs, am, db,
- cols#80, lines#34,
- cbt=\E[Z, clear=\E[2J\E[0;0H, cub1=^H, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch1=\E[P, dl1=\E[M,
- ed=\E[0J, el=\E[0K, ich1=\E[@, il1=\E[L,
- ind=\E7\E[0;0H\E[M\E8, is2=\E3!1, ri=\E7\E[0;0H\E[L\E8,
- rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
-tek4112-nd|4112 not in dialog area,
- OTns,
- cuu1=^K, use=tek4112,
-tek4112-5|4112 in 5 line dialog area,
- lines#5, use=tek4112,
+tek4112|tek4114|tektronix 4110 series,
+ OTbs, am, db,
+ cols#80, lines#34,
+ cbt=\E[Z, clear=\E[2J\E[0;0H, cub1=^H, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch1=\E[P, dl1=\E[M,
+ ed=\E[0J, el=\E[0K, ich1=\E[@, il1=\E[L,
+ ind=\E7\E[0;0H\E[M\E8, is2=\E3!1, ri=\E7\E[0;0H\E[L\E8,
+ rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+tek4112-nd|4112 not in dialog area,
+ OTns,
+ cuu1=^K, use=tek4112,
+tek4112-5|4112 in 5 line dialog area,
+ lines#5, use=tek4112,
# (tek4113: this used to have "<cuf1=\LM1\s\LM0>", someone's mistake;
# removed "<smacs=\E^N>, <rmacs=\E^O>", which had been commented out in 8.3.
# Note, the !0 and !1 sequences in <rmcup>/<smcup>/<cnorm>/<civis> were
# previously \0410 and \0411 sequences...I don't *think* they were supposed
# to be 4-digit octal -- esr)
-tek4113|tektronix 4113 color graphics with 5 line dialog area,
- 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,
- is2=\EKA1\ELL5\ELV0\ELV1, uc=\010\ELM1_\ELM0,
-tek4113-34|tektronix 4113 color graphics with 34 line dialog area,
- lines#34,
- is2=\EKA1\ELLB2\ELV0\ELV1, use=tek4113,
-# :ns: left off to allow vi visual mode. APL font (:as=\E^N:/:ae=\E^O:) not
+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,
+ is2=\EKA1\ELL5\ELV0\ELV1, uc=\010\ELM1_\ELM0,
+tek4113-34|tektronix 4113 color graphics with 34 line dialog area,
+ lines#34,
+ is2=\EKA1\ELLB2\ELV0\ELV1, use=tek4113,
+# :ns: left off to allow vi visual mode. APL font (:as=\E^N:/:ae=\E^O:) not
# supported here. :uc: is slow, but looks nice. Suggest setenv MORE -up .
# :vb: needs enough delay to let you see the background color being toggled.
-tek4113-nd|tektronix 4113 color graphics with no dialog area,
- OTbs, am, eo,
- cols#80, it#8, lines#34,
- clear=\E^L, cub1=^H, cud1=^J, cuf1=^I, cuu1=^K,
- cvvis=\ELZ\EKA0,
- 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,
+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,
+ cvvis=\ELZ\EKA0,
+ 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)
# (tek4115: :bc: renamed to :le:, <rmam>/<smam> added based on init string -- esr)
-otek4115|Tektronix 4115,
- OTbs, am, da, db, eo,
- cols#80, it#8, lines#34,
- cbt=\E[Z, clear=\E[H\E[2J,
- cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B,
- cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
- 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,
- 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,
- smcup=\E%!0\ELBB2\E%!1, smir=\E[4h, smkx=\E=, smso=\E[7m,
- smul=\E[4m,
-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,
- 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;%;m,
- sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[2g,
- vpa=\E[%p1%{1}%+%dd,
+otek4115|Tektronix 4115,
+ OTbs, am, da, db, eo,
+ cols#80, it#8, lines#34,
+ cbt=\E[Z, clear=\E[H\E[2J,
+ cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B,
+ cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A,
+ 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,
+ 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,
+ smcup=\E%!0\ELBB2\E%!1, smir=\E[4h, smkx=\E=, smso=\E[7m,
+ smul=\E[4m,
+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,
+ 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;%;m,
+ sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[2g,
+ vpa=\E[%p1%{1}%+%dd,
# 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
@@ -14190,60 +15722,60 @@ tek4115|newer tektronix 4115 entry with more ANSI capabilities,
# Steve Jacobson 8/85
# (tek4125: there were two "\!"s in the is that I replaced with "\E!";
# commented out, <smir>=\E1 because there's no <rmir> -- esr)
-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,
+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,
# From: <jcoker@ucbic>
# (tek4207: This was the termcap file's entry for the 4107/4207, but SCO
# supplied another, less capable 4107 entry. So we'll use that for 4107 and
# note that if jcoker wasn't confused you may be able to use this one.
# I merged in <msgr>,<ind>,<ri>,<invis>,<tbc> from a BRL entry -- esr)
-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,
- 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,
- 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,
- rmul=\E[m, sgr0=\E[m, smcup=\E[?6l\E[H\E[J, smso=\E[7m,
- smul=\E[4m, tbc=\E[1g,
+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,
+ 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,
+ 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,
+ rmul=\E[m, sgr0=\E[m, smcup=\E[?6l\E[H\E[J, smso=\E[7m,
+ smul=\E[4m, tbc=\E[1g,
# From: <carolyn@dali.berkeley.edu> Thu Oct 31 12:54:27 1985
# (tek4404: There was a "\!" in <smcup> that I replaced with "\E!".
# Tab had been given as \E2I,that must be the tab-set capability -- esr)
-tek4404|tektronix 4404,
- OTbs,
- cols#80, it#8, lines#32,
- blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J,
- csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C,
- 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,
- rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l,
- rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sc=\E7, sgr0=\E[m,
- smcup=\E%\E!1\E[1;32r\E[?6l\E>, smir=\E[4h,
- smkx=\E[?1l, smso=\E[7m, smul=\E[4m,
+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,
+ 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,
+ rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l,
+ rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sc=\E7, sgr0=\E[m,
+ smcup=\E%\E!1\E[1;32r\E[?6l\E>, smir=\E[4h,
+ smkx=\E[?1l, smso=\E[7m, smul=\E[4m,
# Some unknown person wrote:
-# I added the is string - straight Unix has ESC ; in the login
-# string which sets a ct8500 into monitor mode (aka 4025 snoopy
-# mode). The is string here cleans up a few things (but not
+# I added the is string - straight Unix has ESC ; in the login
+# string which sets a ct8500 into monitor mode (aka 4025 snoopy
+# mode). The is string here cleans up a few things (but not
# everything).
-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,
- 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,
- rmul=\E\s, sgr0=\E\s, smso=\E$, smul=\E!,
+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,
+ 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,
+ rmul=\E\s, sgr0=\E\s, smso=\E$, smul=\E!,
# Tektronix 4205 terminal.
#
@@ -14255,33 +15787,33 @@ ct8500|tektronix ct8500,
# Bold, dim, and standout are simulated by colors and thus not allowed
# with colors. The tektronix color table is mapped into the RGB color
# table by setf/setb. All colors are reset to factory specifications by oc.
-# The <initc> cap uses RGB notation to define colors. for arguments 1-3 the
+# The <initc> cap uses RGB notation to define colors. for arguments 1-3 the
# interval (0-1000) is broken into 8 smaller sub-intervals (125). Each sub-
# interval then maps into pre-defined value.
-tek4205|tektronix 4205,
- ccc, mir, msgr,
- 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,
- 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, 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,
- 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,
- 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%;,
- 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,
+tek4205|tektronix 4205,
+ ccc, mir, msgr,
+ 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,
+ 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, 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,
+ 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,
+ 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%;,
+ 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,
#### Teletype (tty)
#
@@ -14294,14 +15826,14 @@ tek4205|tektronix 4205,
# other programs still default to emitting codes for the Model 37.
#
-tty33|tty35|model 33 or 35 teletype,
- hc, os, xon,
- cols#72,
- bel=^G, cr=^M, cud1=^J, ind=^J,
-tty37|model 37 teletype,
- OTbs, hc, os, xon,
- bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
- ind=^J,
+tty33|tty35|model 33 or 35 teletype,
+ hc, os, xon,
+ cols#72,
+ bel=^G, cr=^M, cud1=^J, ind=^J,
+tty37|model 37 teletype,
+ OTbs, hc, os, xon,
+ bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
+ ind=^J,
# 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
@@ -14314,33 +15846,33 @@ tty37|model 37 teletype,
# a "newline" style terminal (-crmode) vi figures all it needs is nl
# to get crlf, even if <cr> is not ^M.)
# (tty40: removed obsolete ":nl=\EG\EB:", it's just do+cr -- esr)
-tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2,
- OTbs, xon,
- cols#80, lines#24,
- clear=\EH$<20>\EJ$<80>, cr=\EG, cub1=^H, cud1=\EB,
- cuf1=\EC, cuu1=\E7, dch1=\EP$<50>, dl1=\EM$<50>,
- ed=\EJ$<75>, home=\EH$<10>, ht=\E@$<10>, hts=\E1,
- ich1=\E\^$<50>, il1=\EL$<50>, ind=\ES$<20>, kbs=^],
- kcub1=^H, mc4=^T, mc5=\022$<2000>, ri=\ET$<10>, rmso=\E4,
- rs2=\023\ER$<60>, smso=\E3, tbc=\EH\E2$<80>,
-tty43|model 43 teletype,
- OTbs, am, hc, os, xon,
- cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H,
+tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2,
+ OTbs, xon,
+ cols#80, lines#24,
+ clear=\EH$<20>\EJ$<80>, cr=\EG, cub1=^H, cud1=\EB,
+ cuf1=\EC, cuu1=\E7, dch1=\EP$<50>, dl1=\EM$<50>,
+ ed=\EJ$<75>, home=\EH$<10>, ht=\E@$<10>, hts=\E1,
+ ich1=\E\^$<50>, il1=\EL$<50>, ind=\ES$<20>, kbs=^],
+ kcub1=^H, mc4=^T, mc5=\022$<2000>, ri=\ET$<10>, rmso=\E4,
+ rs2=\023\ER$<60>, smso=\E3, tbc=\EH\E2$<80>,
+tty43|model 43 teletype,
+ OTbs, am, hc, os, xon,
+ cols#132,
+ bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H,
#### Tymshare
#
# You can add <is2=\E<> to put this 40-column mode, though I can't
# for the life of me think why anyone would want to.
-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,
- 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,
+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,
+ 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,
#### Volker-Craig (vc)
#
@@ -14352,40 +15884,40 @@ scanset|sc410|sc415|Tymshare Scan Set,
# Missing in vc303a and vc303 descriptions: they scroll 2 lines at a time
# every other linefeed.
-vc303|vc103|vc203|volker-craig 303,
- 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,
- kcuu1=^N, ll=\017$<1>W,
-vc303a|vc403a|volker-craig 303a,
- clear=\030$<40>, cuf1=^U, cuu1=^Z, el=\026$<20>,
- home=\031$<40>, kcuf1=^U, kcuu1=^Z, ll=^P, use=vc303,
+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,
+ kcuu1=^N, ll=\017$<1>W,
+vc303a|vc403a|volker-craig 303a,
+ clear=\030$<40>, cuf1=^U, cuu1=^Z, el=\026$<20>,
+ home=\031$<40>, kcuf1=^U, kcuu1=^Z, ll=^P, use=vc303,
# (vc404: removed obsolete ":ma=^Z^P^U :" -- esr)
-vc404|volker-craig 404,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\030$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
- cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
- ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=^J,
- kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z,
-vc404-s|volker-craig 404 w/standout mode,
- cud1=^J, rmso=^O, smso=^N, use=vc404,
+vc404|volker-craig 404,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\030$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+ cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
+ ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=^J,
+ kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z,
+vc404-s|volker-craig 404 w/standout mode,
+ cud1=^J, 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.,
- OTbs, am,
- cols#80, lines#24,
- clear=\E\034$<40>, cud1=\E^K, cuf1=^P,
- cup=\E\021%p2%c%p1%c$<40>, cuu1=\E^L, dch1=\E3,
- dl1=\E\023$<40>, ed=\E^X, el=\E\017$<10/>, home=\E^R,
- ich1=\E\:, il1=\E\032$<40>, kcub1=^H, kcud1=\E^K, kcuf1=^P,
- kcuu1=\E^L, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, kf4=\EE,
- kf5=\EF, kf6=\EG, kf7=\EH, khome=\E^R, lf0=PF1, lf1=PF2,
- lf2=PF3, lf3=PF4, lf4=PF5, lf5=PF6, lf6=PF7, lf7=PF8,
- rmso=\E^_, smso=\E^Y,
-vc415|volker-craig 415,
- clear=^L, use=vc404,
+vc414|vc414h|Volker-Craig 414H in sane escape mode.,
+ OTbs, am,
+ cols#80, lines#24,
+ clear=\E\034$<40>, cud1=\E^K, cuf1=^P,
+ cup=\E\021%p2%c%p1%c$<40>, cuu1=\E^L, dch1=\E3,
+ dl1=\E\023$<40>, ed=\E^X, el=\E\017$<10/>, home=\E^R,
+ ich1=\E\:, il1=\E\032$<40>, kcub1=^H, kcud1=\E^K, kcuf1=^P,
+ kcuu1=\E^L, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, kf4=\EE,
+ kf5=\EF, kf6=\EG, kf7=\EH, khome=\E^R, lf0=PF1, lf1=PF2,
+ lf2=PF3, lf3=PF4, lf4=PF5, lf5=PF6, lf6=PF7, lf7=PF8,
+ rmso=\E^_, smso=\E^Y,
+vc415|volker-craig 415,
+ clear=^L, use=vc404,
######## OBSOLETE PERSONAL-MICRO CONSOLES AND EMULATIONS
#
@@ -14399,52 +15931,52 @@ vc415|volker-craig 415,
# delete line commands. Consequently, the resulting behavior looks like a
# crude adm3a-type terminal.
# Steve Jacobson 8/85
-pcplot|pc-plot terminal emulation program,
- xenl@,
- csr@, dl@, dl1@, il@, il1@, rc@, sc@, use=vt100,
+pcplot|pc-plot terminal emulation program,
+ xenl@,
+ csr@, dl@, dl1@, il@, il1@, rc@, sc@, use=vt100,
# 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
# system the following termcap entry works well:
# I have noticed a couple of minor glitches, but nothing I can't work
# around. (I added two capabilities from the BRL entry -- esr)
-kaypro|kaypro2|kaypro II,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\032$<1/>, cr=^M, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER, ed=^W,
- el=^X, home=^^, il1=\EE, ind=^J, kcud1=^J, kcuf1=^L, kcuu1=^K,
+kaypro|kaypro2|kaypro II,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\032$<1/>, cr=^M, cud1=^J, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER, ed=^W,
+ el=^X, home=^^, il1=\EE, ind=^J, kcud1=^J, kcuf1=^L, kcuu1=^K,
# From IBM, Thu May 5 19:35:27 1983
# (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=^\,
- 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,
- 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%;m,
- sgr0=\E[m, smso=\E[7m, smul=\E[4m,
+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=^\,
+ 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,
+ 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%;m,
+ sgr0=\E[m, smso=\E[7m, smul=\E[4m,
#### Apple II
#
-# Apple II firmware console first, then various 80-column cards and
+# Apple II firmware console first, then various 80-column cards and
# terminal emulators. For two cents I'd toss all these in the UFO file
# along with the 40-column apple entries.
#
@@ -14452,16 +15984,16 @@ ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
# From: brsmith@umn-cs.cs.umn.edu (Brian R. Smith) via BRL
# 'it#8' tells UNIX that you have tabs every 8 columns. This is a
# function of TIC, not the firmware.
-# The clear key on a IIgs will do something like clear-screen,
+# The clear key on a IIgs will do something like clear-screen,
# depending on what you're in.
-appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface,
- OTbs, am, bw, eo, msgr,
- cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\,
- cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- 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,
- smso=^O,
+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=^\,
+ 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,
+ smso=^O,
# Apple //e with 80-column card, entry from BRL
# The modem interface is permitted to discard LF (maybe DC1), otherwise
# passing characters to the 80-column firmware via COUT (PR#3 assumed).
@@ -14470,82 +16002,82 @@ appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface,
# Note: Cursor addressing is only available via the Pascal V1.1 entry,
# not via the BASIC PR#3 hook. All this nonsense can be avoided only by
# using a terminal emulation program instead of the built-in firmware.
-apple2e|Apple //e,
- bw, msgr,
- cols#80, lines#24,
- bel=^G, clear=\014$<100/>, cub1=^H, cud1=^J, 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,
- nel=\r$<100/>, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N,
- smso=^O,
+apple2e|Apple //e,
+ bw, msgr,
+ cols#80, lines#24,
+ bel=^G, clear=\014$<100/>, cub1=^H, cud1=^J, 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,
+ 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,
+apple2e-p|Apple //e via Pascal,
+ cup=\036%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, kcub1=^H,
+ kcud1=^J, use=apple2e,
# (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL
# Enable DC3/DC1 flow control with "stty ixon -ixany".
-apple-ae|ASCII Express,
- OTbs, am, bw, msgr, nxon, xon,
- cols#80, it#8, lines#24,
- bel=\007$<500/>, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
- cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- home=^Y, ind=^W, is2=^R^N, kclr=^X, kcub1=^H, kcud1=^J,
- 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=^\,
- 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,
+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,
+ 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,
+ 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=^\,
+ 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,
# 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,
- 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,
- 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,
+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,
+ 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,
+ 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,
# From Peter Harrison, Computer Graphics Lab, San Francisco
# ucbvax!ucsfmis!harrison .....uucp
# ucbvax!ucsfmis!harrison@BERKELEY .......ARPA
# "These two work. If you don't have the inverse video chip for the
# Apple with videx then remove the :so: and :se: fields."
# (apple-videx: this used to be called DaleApple -- esr)
-apple-videx|Apple with videx videoterm 80 column board with inverse video,
- OTbs, am, xenl,
- cols#80, it#8, lines#24,
- clear=\014$<300/>, cub1=^H, cud1=^J, cuf1=^\,
- cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- home=^Y, ht=^I, kcub1=^H, kcud1=^J, kcuf1=^U, khome=^Y,
- rmso=^Z2, sgr0=^Z2, smso=^Z3,
+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=^\,
+ cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+ home=^Y, ht=^I, kcub1=^H, kcud1=^J, 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
# controlled by ASCII Express: Pro.
# From Dave Shaver <isucs1!shaver>
-apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell,
- OTbs, am, eo, xt,
- cols#80, lines#24,
- acsc=, clear=^L, cuf1=^\,
- cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- flash=^W35^W06, home=^Y,
- is2=^V4^W06\017\rVisible Bell Installed.\016\r\n,
- rmso=^N, smso=^O,
-apple-uterm|Ultraterm for Apple micros,
- OTbs, am, eo, xt,
- cols#80, lines#24,
- acsc=, clear=^L, cuf1=^\,
- cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- home=^Y, is2=^V4^W06\016, rmso=^N, smso=^O,
+apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell,
+ OTbs, am, eo, xt,
+ cols#80, lines#24,
+ acsc=, clear=^L, cuf1=^\,
+ cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+ flash=^W35^W06, home=^Y,
+ is2=^V4^W06\017\rVisible Bell Installed.\016\r\n,
+ rmso=^N, smso=^O,
+apple-uterm|Ultraterm for Apple micros,
+ OTbs, am, eo, xt,
+ cols#80, lines#24,
+ acsc=, clear=^L, cuf1=^\,
+ cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+ home=^Y, is2=^V4^W06\016, rmso=^N, smso=^O,
# from trwrba!bwong (Bradley W. Wong):
#
# This entry assumes that you are using an apple with the UCSD Pascal
@@ -14556,12 +16088,12 @@ apple-uterm|Ultraterm for Apple micros,
# a ^U and would thus preempt the more useful "up" function of vi.
#
# HMH 2/23/81
-apple80p|80-column apple with Pascal card,
- am, bw,
- cols#80, lines#24,
- clear=^Y^L, cuf1=^\\:,
- cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
- home=^Y, kcub1=^H,
+apple80p|80-column apple with Pascal card,
+ am, bw,
+ cols#80, lines#24,
+ clear=^Y^L, cuf1=^\\:,
+ cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
+ home=^Y, kcub1=^H,
#
# Apple II+ equipped with Videx 80 column card
#
@@ -14576,53 +16108,53 @@ apple80p|80-column apple with Pascal card,
# For inverse alternate character set add:
# <smacs>=^O:<rmacs>=^N:
# (apple-v: added it#8 -- esr)
-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,
- cuu1=^_, ed=\013$<16*/>, el=^], home=^Y, ht=\011$<8/>,
- ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_,
- khome=^Y, rmso=^Z2, smso=^Z3,
-apple-videx3|vapple|Apple II with 80 col card,
- OTbs, am,
- cols#80, lines#24,
- clear=\Ev, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
- cuu1=\EA, el=\Ex, home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!,
- kf5=\E", kf6=\E#, kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH,
+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,
+ cuu1=^_, ed=\013$<16*/>, el=^], home=^Y, ht=\011$<8/>,
+ ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_,
+ khome=^Y, rmso=^Z2, smso=^Z3,
+apple-videx3|vapple|Apple II with 80 col card,
+ OTbs, am,
+ cols#80, lines#24,
+ clear=\Ev, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+ cuu1=\EA, el=\Ex, home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!,
+ kf5=\E", kf6=\E#, kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH,
#From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL
-aepro|Apple II+ running ASCII Express Pro--vt52,
- OTbs,
- cols#80, lines#24,
- clear=\014$<300/>, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, home=\EH,
+aepro|Apple II+ running ASCII Express Pro--vt52,
+ OTbs,
+ cols#80, lines#24,
+ clear=\014$<300/>, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+ el=\EK, home=\EH,
# UCSD addition: Yet another termcap from Brian Kantor's Micro Munger Factory
-apple-vm80|ap-vm80|apple with viewmax-80,
- OTbs,
- cols#80, lines#24,
- clear=\014$<300/>, cuf1=^\\:,
- cup=\036%p1%{32}%+%c%p2%{32}%+%c$<100/>, cuu1=^_,
- ed=\013$<300/>, el=^], home=\031$<200/>,
+apple-vm80|ap-vm80|apple with viewmax-80,
+ OTbs,
+ cols#80, lines#24,
+ clear=\014$<300/>, cuf1=^\\:,
+ cup=\036%p1%{32}%+%c%p2%{32}%+%c$<100/>, cuu1=^_,
+ ed=\013$<300/>, el=^], home=\031$<200/>,
#### Apple Lisa & Macintosh
#
# (lisa: changed <cvvis> to <cnorm> -- esr)
-lisa|apple lisa console display (black on white),
- OTbs, am, eo, msgr,
- cols#88, it#8, lines#32,
- acsc=jdkclfmenbqattuvvuwsx`, civis=\E[5h, clear=^L,
- cnorm=\E[5l, cub1=^H, cud1=\E[B, cuf1=\E[C,
- 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,
- is2=\E>\E[m\014, kbs=^H, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
- sgr0=\E[m, smacs=\E[11m, smso=\E[7m, smul=\E[4m,
-liswb|apple lisa console display (white on black),
- is2=\E>\E[0;7m\014, rmso=\E[0;7m, rmul=\E[0;7m,
- smso=\E[m, smul=\E[4m, use=lisa,
+lisa|apple lisa console display (black on white),
+ OTbs, am, eo, msgr,
+ cols#88, it#8, lines#32,
+ acsc=jdkclfmenbqattuvvuwsx`, civis=\E[5h, clear=^L,
+ cnorm=\E[5l, cub1=^H, cud1=\E[B, cuf1=\E[C,
+ 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,
+ is2=\E>\E[m\014, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
+ sgr0=\E[m, smacs=\E[11m, smso=\E[7m, smul=\E[4m,
+liswb|apple lisa console display (white on black),
+ is2=\E>\E[0;7m\014, rmso=\E[0;7m, rmul=\E[0;7m,
+ smso=\E[m, smul=\E[4m, use=lisa,
# lisaterm from ulysses!gamma!epsilon!mb2c!jed (John E. Duncan III) via BRL;
# <is2> revised by Ferd Brundick <fsbrn@BRL.ARPA>
@@ -14635,37 +16167,37 @@ liswb|apple lisa console display (white on black),
# Also setting the number of columns glitches the screen annoyingly.
# You can type "reset" to get them set.
#
-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,
- 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, ed=\E[J,
- el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=^J, 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,
- rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r,
- sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
- tbc=\E[3g,
+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,
+ 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, ed=\E[J,
+ el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=^J, 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,
+ rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r,
+ sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+ tbc=\E[3g,
# 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,
+lisaterm-w|Apple Lisa with Lisaterm in 132 column mode,
+ cols#132,
+ kbs=^H, kcub1=^H, kcud1=^J, 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.
# Also, the "Insert/delete ch" strings have an extra character appended to them
# due to a bug in MacTerminal V1.1. Blink is disabled since it is not
# supported by MacTerminal.
-mac|macintosh|Macintosh with MacTerminal,
- xenl,
- OTdN#30,
- blink@, dch1=\E[P$<7/>, ich1=\E[@$<9/>, ip=$<7/>, use=lisa,
+mac|macintosh|Macintosh with MacTerminal,
+ xenl,
+ OTdN#30,
+ blink@, dch1=\E[P$<7/>, ich1=\E[@$<9/>, ip=$<7/>, use=lisa,
# Lisaterm in 132 column ("wide") mode.
-mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode,
- cols#132, use=mac,
+mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode,
+ cols#132, use=mac,
# The AppKit Terminal.app descriptions all have names beginning with
# "nsterm". Note that the statusline (-s) versions use the window
@@ -14678,20 +16210,20 @@ mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode,
# 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.
-#
+#
# * 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.
@@ -14786,110 +16318,117 @@ mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode,
# 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,
- ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=\177, kc1=\EOp, kc3=\EOn,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM,
- kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, 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%;m,
- sgr0=\E[m\017, smam=\E[?7h, 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,
-
-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%;m%?%p9%t\016%e\017%;,
- smacs=^N, use=nsterm+7,
-
-nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset,
- acsc=0#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245+\335-\366\,\334.\377,
- enacs=\E(B\E)0, rmacs=^O,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
- smacs=^N, use=nsterm+7,
-
-nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
- hs,
- wsl#50,
- dsl=\E]2;\007, fsl=^G, tsl=\E]2;,
-
-nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors),
- colors#16, pairs#256,
- op=\E[0m,
- setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm,
- setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm,
-
-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,
+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,
+ 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%;m,
+ sgr0=\E[m\017, 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%;m%?%p9%t\016%e\017%;,
+ smacs=^N, use=nsterm+7,
+
+nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset,
+ acsc=0#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245+\335-\366\,\334.\377,
+ enacs=\E(B\E)0, rmacs=^O,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;,
+ smacs=^N, use=nsterm+7,
+
+nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
+ hs,
+ wsl#50,
+ dsl=\E]2;\007, fsl=^G, tsl=\E]2;,
+
+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-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-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|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-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-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,
+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-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-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-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-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-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,
+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|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-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline),
- use=nsterm+s, use=nsterm+mac,
+nsterm|Apple_Terminal|AppKit Terminal.app v41+ w/MacRoman charset (color),
+ use=nsterm+c41, use=nsterm+mac,
-nsterm|Apple_Terminal|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-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-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,
-nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline),
- use=nsterm+s, use=nsterm+c, use=nsterm+mac,
+
+# This entry is based on newsgroup comments by Alain Bench, Christian Ebert,
+# and D P Schreber comparing to nsterm-c-s-acs.
+#
+# D P Schreber notes that $TERM can be set in Terminal.app, e.g.,
+# defaults write com.apple.Terminal TermCapString nsterm-c-s-acs
+# and that it is not set in Terminal's preferences dialog.
+nsterm-16color|AppKit Terminal.app v100.1.8 with MacOS X 10.3.9,
+ kdch1=\E[3~, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ knp=\E[6~, kpp=\E[5~, use=nsterm-c-s-acs,
# xnuppc - Darwin PowerPC Console (a.k.a. "darwin")
#
@@ -14986,178 +16525,178 @@ nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline)
# 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, ka1=\EOq,
- ka3=\EOs, kb2=\EOr, kbs=\177, kc1=\EOp, kc3=\EOn, 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\017, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g,
-
-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,
+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\017, 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+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+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+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+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+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+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+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+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+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+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+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,
+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-m|darwin-m|Darwin PowerPC Console (monochrome),
+ use=xnuppc+basic,
-xnuppc|darwin|Darwin PowerPC Console (color),
- use=xnuppc+c, 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-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-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-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-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-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,
+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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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,
+xnuppc-256x96|darwin-256x96|Darwin PowerPC Console (color) 256x96,
+ use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic,
#### Radio Shack/Tandy
#
@@ -15165,77 +16704,77 @@ xnuppc-256x96|darwin-256x96|Darwin PowerPC Console (color) 256x96,
# (coco3: This had "ta" used incorrectly as a boolean and bl given as "bl#7".
# I read these as mistakes for ":it#8:" and ":bl=\007:" respectively -- esr)
# From: <{pbrown,ctl}@ocf.berkeley.edu> 12 Mar 90
-coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II,
- 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,
- 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,
- kcuf1=^I, kcuu1=^L, rev=^_\s, rmso=^_!, rmul=^_#,
- sgr0=\037!\E\:\0, smso=^_\s, smul=^_",
+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,
+ 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,
+ 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=^],
- 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=^\,
- kcud1=^_, kcuf1=^], kcuu1=^^, rmso=^O, sgr0=^O, smso=^N,
+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=^],
+ 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=^\,
+ kcud1=^_, kcuf1=^], kcuu1=^^, rmso=^O, sgr0=^O, smso=^N,
# From: Kevin Braunsdorf <ksb@mentor.cc.purdue.edu>
# (This had extension capabilities
# :BN=\E[?33h:BF=\E[?33l:UC=\E[_ q:BC=\E[\177 q:\
# :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@:
# I also deleted the unnecessary ":kn#2:", ":sg#0:" -- esr)
-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,
- 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,
- 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@,
- smacs=\ERG, smso=\ERD,
+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,
+ 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,
+ 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@,
+ smacs=\ERG, smso=\ERD,
#### Atari ST
#
# From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
-atari|atari st,
- OTbs, am,
- cols#80, it#8, lines#25,
- clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
- ed=\EJ, el=\EK, ht=^I, il1=\EL, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, ri=\EI, rmso=\Eq, sgr0=\Eq, smso=\Ep,
+atari|atari st,
+ OTbs, am,
+ cols#80, it#8, lines#25,
+ clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM,
+ ed=\EJ, el=\EK, ht=^I, il1=\EL, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, ri=\EI, rmso=\Eq, sgr0=\Eq, smso=\Ep,
# UniTerm terminal program for the Atari ST: 49-line VT220 emulation mode
# 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,
+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,
# 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
# under tcsh/zsh/bash/sh/ksh/ash/csh when you run MiNT in `console' mode
# From: Per Persson <pp@gnu.ai.mit.edu>, 27 Feb 1996
-st52|Atari ST with VT52 emulation,
- am, km,
- cols#80, lines#25,
- bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=^M, 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,
- 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,
- ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq,
- smcup=\Ee, smso=\Ep,
-
+st52|Atari ST with VT52 emulation,
+ am, km,
+ cols#80, lines#25,
+ bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=^M, 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,
+ 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,
+ ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq,
+ smcup=\Ee, smso=\Ep,
+
#### Commodore Business Machines
#
# Formerly located in West Chester, PA; went spectacularly bust in 1994
@@ -15263,78 +16802,93 @@ st52|Atari ST with VT52 emulation,
# :k0=\E9~: map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;'
# (amiga: removed obsolete :kn#10:,
# also added empty <acsc> to suppress a warning --esr)
-amiga|Amiga ANSI,
- OTbs, am, bw, xenl,
- cols#80, lines#24,
- acsc=, bel=^G, blink=\E[7;2m, bold=\E[1m, cbt=\E[Z,
- civis=\E[0 p, clear=\E[H\E[J, cnorm=\E[ p, cub=\E[%p1%dD,
- 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, 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,
+amiga|Amiga ANSI,
+ OTbs, am, bw, xenl,
+ cols#80, lines#24,
+ acsc=, bel=^G, blink=\E[7;2m, bold=\E[1m, cbt=\E[Z,
+ civis=\E[0 p, clear=\E[H\E[J, cnorm=\E[ p, cub=\E[%p1%dD,
+ 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, 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,
# From: Hans Verkuil <hans@wyst.hobby.nl>, 4 Dec 1995
# (amiga: added empty <acsc> to suppress a warning.
# I'm told this entry screws up badly with AS225, the Amiga
# TCP/IP package once from Commodore, and now sold by InterWorks.--esr)
-amiga-h|Hans Verkuil's Amiga ANSI,
- 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,
- 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, ech=\233%p1%dP, ed=\233J, el=\233K, flash=^G,
- 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~,
- 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,
- rmul=\2330m, rs1=\Ec, sgr0=\2330m, smacs=^N, smcup=\233?7l,
- smso=\2337m, smul=\2334m,
+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,
+ 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, ech=\233%p1%dP, ed=\233J, el=\233K, flash=^G,
+ 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~,
+ 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,
+ rmul=\2330m, rs1=\Ec, sgr0=\2330m, smacs=^N, smcup=\233?7l,
+ smso=\2337m, smul=\2334m,
# From: Henning 'Faroul' Peters <Faroul@beyond.kn-bremen.de>, 25 Sep 1999
-amiga-8bit|Amiga ANSI using 8-bit controls,
- acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L,
- ind=\204, indn@, ri=\215, rin@, use=amiga-h,
+#
+# Pavel Fedin added
+# Home Shift+Left
+# End Shift+Right
+# PgUp Shift+Up
+# PgDn Shift+Down
+amiga-8bit|Amiga ANSI using 8-bit controls,
+ acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L,
+ ind=\204, indn@, kend=\233 @, khome=\233 A, knp=\233S,
+ kpp=\233T, ri=\215, rin@, use=amiga-h,
# From: Ruediger Kuhlmann <terminfo@ruediger-kuhlmann.de>, 18 Jul 2000
# 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,
- bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p,
- clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[>?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,
- 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~,
- 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,
- 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,
+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,
+ bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p,
+ clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
+ cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ cvvis=\E[>?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,
+ 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~,
+ 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,
+ 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,
+
+# MorphOS on Genesi Pegasos
+# By Pavel Fedin <sonic_amiga@rambler.ru>
+morphos,
+ 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
@@ -15348,71 +16902,71 @@ amiga-vnc|Amiga using VNC console (black on light gray),
# 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,
- 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=,
- smir=,
+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,
+ 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=,
+ smir=,
#### North Star
#
# North Star Advantage from Lt. Fickie <brl-ibd!fickie> via BRL
-northstar|North Star Advantage,
- OTbs,
- cols#80, lines#24,
- clear=\004$<200/>,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1/>, ed=\017$<200/>,
- el=\016$<200/>, home=\034\032$<200/>,
+northstar|North Star Advantage,
+ OTbs,
+ cols#80, lines#24,
+ clear=\004$<200/>,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1/>, ed=\017$<200/>,
+ el=\016$<200/>, home=\034\032$<200/>,
#### Osborne
#
# Thu Jul 7 03:55:16 1983
-#
-# As an aside, be careful; it may sound like an anomaly on the
-# Osborne, but with the 80-column upgrade, it's too easy to
+#
+# As an aside, be careful; it may sound like an anomaly on the
+# Osborne, but with the 80-column upgrade, it's too easy to
# enter lines >80 columns!
-#
+#
# I've already had several comments...
-# The Osborne-1 with the 80-col option is capable of being
-# 52, 80, or 104 characters wide; default to 80 for compatibility
+# The Osborne-1 with the 80-col option is capable of being
+# 52, 80, or 104 characters wide; default to 80 for compatibility
# with most systems.
-#
+#
# The tab is destructive on the Ozzie; make sure to 'stty -tabs'.
-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,
- 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,
- kcuf1=^L, kcuu1=^K, rmso=\E(, rmul=\Em, smso=\E), smul=\El,
+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,
+ 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,
+ 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,
- 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),
- rmul=\Em, smir=\EQ, smso=\E(, smul=\El,
+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,
+ 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),
+ rmul=\Em, smir=\EQ, smso=\E(, smul=\El,
#
# Osborne Executive definition from BRL
# Similar to tvi920
# Added by David Milligan and Tom Smith (SMU)
-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,
- 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,
- 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,
- smul=\El, tbc=\E3,
+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,
+ 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,
+ 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,
+ smul=\El, tbc=\E3,
#### Console types for obsolete UNIX clones
#
@@ -15422,74 +16976,74 @@ osexec|Osborne executive,
# Memory-segmentation limits and a strong tendency to look like V7 long after
# it was obsolete made all three pretty lame. Venix croaked early. Coherent
# and Minix were ported to 32-bit Intel boxes, only to be run over by a
-# steamroller named `Linux' (which, to be fair, traces some lineage to Minix).
+# steamroller named `Linux' (which, to be fair, traces some lineage to Minix).
# Coherent's vendor, the Mark Williams Company, went belly-up in 1994. There
# are also, I'm told, Minix ports that ran on Amiga and Atari machines and
# even as single processes under SunOS and the Macintosh OS.
#
# This is the entry provided with minix 1.7.4, with bogus :ri: removed.
-minix|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,
- 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,
- 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, rev=\E[7m, ri=\EM,
- rmso=\E[0m, rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
+minix|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,
+ 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,
+ 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, 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 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,
- 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,
- 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,
- rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m,
+minix-old|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,
+ 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,
+ 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,
+ 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.
-minix-old-am|minix console with linewrap,
- am, use=minix-old,
+minix-old-am|minix console with linewrap,
+ am, use=minix-old,
-pc-minix|minix console on an Intel box,
- use=klone+acs, use=minix,
+pc-minix|minix console on an Intel box,
+ use=klone+acs, use=minix,
# According to the Coherent 2.3 manual, the PC console is similar
# to a z19. The differences seem to be (1) 25 lines, (2) no status
# line, (3) standout is broken, (4) ins/del line is broken, (5)
# has blinking and bold.
-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,
- 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,
- kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO,
- rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep,
+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,
+ 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,
+ kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO,
+ rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep,
# According to the Venix 1.1 manual, the PC console is similar
-# to a DEC vt52. Differences seem to be (1) arrow keys send
+# to a DEC vt52. Differences seem to be (1) arrow keys send
# different strings, (2) enhanced standout, (3) added insert/delete line.
# Note in particular that it doesn't have automatic margins.
# There are other keys (f1-f10, kpp, knp, kcbt, kich1, kdch1) but they
# 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,
- 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,
- kcud1=\EP, kcuf1=\EM, kcuu1=\EH, khome=\EG, ri=\EI,
+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,
+ 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,
+ kcud1=\EP, kcuf1=\EM, kcuu1=\EH, khome=\EG, ri=\EI,
#### Miscellaneous microcomputer consoles
#
@@ -15497,33 +17051,33 @@ pc-venix|venix|IBM PC console running Venix,
#
# The MAI Basic Four computer was obsolete at the end of the 1980s.
-# It may be used as a terminal by putting it in "line" mode as seen on
+# It may be used as a terminal by putting it in "line" mode as seen on
# one of the status lines.
-# Initialization is similar to CIT80. <is2> will set ANSI mode for you.
+# Initialization is similar to CIT80. <is2> will set ANSI mode for you.
# Hardware tabs set by <if> at 8-spacing. Auto line wrap causes glitches so
-# wrap mode is reset by <cvvis>. Using <ind>=\E[S caused errors so I
+# wrap mode is reset by <cvvis>. Using <ind>=\E[S caused errors so I
# used \ED instead.
# From: bf347@lafn.org (David Lawyer), 28 Jun 1997
-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,
- 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,
- rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m,
- smir=\E[4h, smso=\E[7m, smul=\E[4m,
+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,
+ 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,
+ 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
# ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA
#
# On Sat, 7 Aug 1999, Torsten Jerzembeck <toje@nightingale.ms.sub.org> wrote:
# The Basis 108 was a Apple II clone, manufactured by the "Basis
-# Mikrocomputer GmbH" in Munster, Germany (the company still exists today,
+# Mikrocomputer GmbH" in Munster, Germany (the company still exists today,
# about 1,5 km from where I live, but doesn't build own computers any
# more). A Basis 108 featured a really heavy (cast aluminium?) case, was
# equipped with one or two 5.25" disk drives, had a monochrome and colour
@@ -15534,24 +17088,24 @@ mai|basic4|MAI Basic Four in ansi mode,
# and data recording for our school's experimental solar panel :), Apple DOS
# or CP/M.
# (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr)
-basis|BASIS108 computer with terminal translation table active,
- clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H,
- kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E),
- smso=\E(, use=adm3a,
+basis|BASIS108 computer with terminal translation table active,
+ clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H,
+ kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E),
+ smso=\E(, use=adm3a,
# luna's BMC terminal emulator
-luna|luna68k|LUNA68K Bitmap console,
- cols#88, lines#46, use=ansi-mini,
-megatek|pegasus workstation terminal emulator,
- am, os,
- cols#83, lines#60,
-# The Xerox 820 was a Z80 micro with a snazzy XEROX PARC-derived
+luna|luna68k|LUNA68K Bitmap console,
+ cols#88, lines#46, use=ansi-mini,
+megatek|pegasus workstation terminal emulator,
+ am, os,
+ cols#83, lines#60,
+# The Xerox 820 was a Z80 micro with a snazzy XEROX PARC-derived
# interface (pre-Macintosh by several years) that went nowhere.
-xerox820|x820|Xerox 820,
- am,
- cols#80, lines#24,
- bel=^G, clear=1^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^Q, el=^X,
- home=^^, ind=^J,
+xerox820|x820|Xerox 820,
+ am,
+ cols#80, lines#24,
+ bel=^G, clear=1^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^Q, el=^X,
+ home=^^, ind=^J,
#### Videotex and teletext
#
@@ -15564,66 +17118,66 @@ xerox820|x820|Xerox 820,
# \E)0 G1 DEC set (line graphics)
#
# From: Igor Tamitegama <igor@ppp1493-ft.teaser.fr>, 18 Jan 1997
-m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique,
- OTbs, eslok, hs, xenl,
- cols#80, it#8, lines#24, wsl#72, xmc#0,
- acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G,
- blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J,
- cnorm=\E[<1l, 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, 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/>,
- 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,
- 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,
- 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,
+m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique,
+ OTbs, eslok, hs, xenl,
+ cols#80, it#8, lines#24, wsl#72, xmc#0,
+ acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G,
+ blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J,
+ cnorm=\E[<1l, 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, 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/>,
+ 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,
+ 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,
+ 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
#
-minitel1|minitel 1,
- am, bw, eslok, hs, hz, msgr,
- colors#8, cols#40, lines#24, pairs#8,
- acsc=+.\,\,./f0g1, bel=^G, blink=\EH, civis=^T, clear=^L,
- cnorm=^Q, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
- cup=\037%p1%{65}%+%c%p2%{65}%+%c, cuu1=^K, el=^X,
- enacs=^Y, fsl=^J, home=^^, ind=^J,
- is2=\E;`ZQ\E\:iC\E\:iE\021, nel=^M^J, op=\EG,
- rep=%p1%c\022%p2%{63}%+%c, rev=\E], ri=^K, rmso=\E\\,
- setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=%tC%e%p1%{64}%+%c%;,
- sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;,
- sgr0=\EI\E\\, smso=\E], tsl=\037@%p1%{65}%+%c,
+minitel1|minitel 1,
+ am, bw, eslok, hs, hz, msgr,
+ colors#8, cols#40, lines#24, pairs#8,
+ acsc=+.\,\,./f0g1, bel=^G, blink=\EH, civis=^T, clear=^L,
+ cnorm=^Q, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
+ cup=\037%p1%{65}%+%c%p2%{65}%+%c, cuu1=^K, el=^X,
+ enacs=^Y, fsl=^J, home=^^, ind=^J,
+ is2=\E;`ZQ\E\:iC\E\:iE\021, nel=^M^J, op=\EG,
+ rep=%p1%c\022%p2%{63}%+%c, rev=\E], ri=^K, rmso=\E\\,
+ setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=%tC%e%p1%{64}%+%c%;,
+ sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;,
+ sgr0=\EI\E\\, smso=\E], tsl=\037@%p1%{65}%+%c,
# is2=Fnct TE, Fnct MR, Fnct CM et pour finir: curseur ON.
-minitel1b|minitel 1-bistandard (in 40cols mode),
- mir,
- cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
- cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L,
- is1=\E;iYA\E;jYC, kclr=\E[2J, kctab=^I, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
- kel=^X, khome=\E[H, kich1=\E[4h, kil1=\E[L, rmir=\E[4l,
- smir=\E[4h, smkx=\E;iYA\E;jYC, use=minitel1,
+minitel1b|minitel 1-bistandard (in 40cols mode),
+ mir,
+ cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
+ cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
+ dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L,
+ is1=\E;iYA\E;jYC, kclr=\E[2J, kctab=^I, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
+ kel=^X, khome=\E[H, kich1=\E[4h, kil1=\E[L, rmir=\E[4l,
+ smir=\E[4h, smkx=\E;iYA\E;jYC, use=minitel1,
# <rmkx> posait des problemes (logout en sortant de vi).
-minitel1b-80|minitel 1-bistandard (standard teleinformatique),
- am@, bw@, hz@,
- colors@, cols#80, it#8, pairs@,
- blink=\E[5m, bold=\E[1m, civis=\037@A\024\n,
- clear=\E[H\E[2J, cnorm=\037@A\021\n, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
- ht=^I, ind=\ED, is1@, is2@, kent=\EOM, kf0=\EOp, kf1=\EOq,
- kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw,
- kf8=\EOx, kf9=\EOy, nel=\EE, op@, rc=\E8, rep@, rev=\E[7m,
- ri=\EM, rmkx@, rmso=\E[27m, rmul=\E[24m, sc=\E7, setf@,
- sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
- sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, use=minitel1b,
+minitel1b-80|minitel 1-bistandard (standard teleinformatique),
+ am@, bw@, hz@,
+ colors@, cols#80, it#8, pairs@,
+ blink=\E[5m, bold=\E[1m, civis=\037@A\024\n,
+ clear=\E[H\E[2J, cnorm=\037@A\021\n, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H,
+ ht=^I, ind=\ED, is1@, is2@, kent=\EOM, kf0=\EOp, kf1=\EOq,
+ kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw,
+ kf8=\EOx, kf9=\EOy, nel=\EE, op@, rc=\E8, rep@, rev=\E[7m,
+ ri=\EM, rmkx@, rmso=\E[27m, rmul=\E[24m, sc=\E7, setf@,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m,
+ sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, use=minitel1b,
######## OBSOLETE VDT TYPES
#
@@ -15636,16 +17190,16 @@ minitel1b-80|minitel 1-bistandard (standard teleinformatique),
# (abm80: early versions of this entry apparently had ":se=\E^_:so=\E^Y",
# but these caps were commented out in 8.3; also, removed overridden
# ":do=^J:" -- esr)
-abm80|amtek business machines 80,
- OTbs, am, bw,
- cols#80, lines#24,
- cbt=^T, clear=\E^\, cub1=^H, cud1=\E^K, cuf1=^P,
- cup=\E\021%p2%{32}%+%c%p1%{32}%+%c, cuu1=\E^L,
- dl1=\E^S, ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z,
+abm80|amtek business machines 80,
+ OTbs, am, bw,
+ cols#80, lines#24,
+ cbt=^T, clear=\E^\, cub1=^H, cud1=\E^K, cuf1=^P,
+ cup=\E\021%p2%{32}%+%c%p1%{32}%+%c, cuu1=\E^L,
+ dl1=\E^S, ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z,
#### Bell Labs blit terminals
#
-# These were AT&T's official entries. The 5620 FAQ maintained by
+# These were AT&T's official entries. The 5620 FAQ maintained by
# David Breneman <daveb@dgtl.com> has this to say:
#
# Actually, in the beginning was the Jerq, and the Jerq was white with a
@@ -15666,31 +17220,31 @@ abm80|amtek business machines 80,
# 730, and 730+.)
#
-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,
- 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,
- kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez,
+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,
+ 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,
+ kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez,
# (cbblit: here's a BSD termcap that says <cud1=\EG> -- esr)
-cbblit|fixterm|blit running columbus code,
- cols#88,
- ed=\EJ, flash=\E^G, ich1@, mc4=^T, mc5=^R, mc5p=\EP%p1%03d,
- rmir=\ER, rmso=\EV!, rmul=\EV", smir=\EQ, smso=\EU!,
- smul=\EU", use=blit,
-
-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,
- 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,
- smir=\EQ,
+cbblit|fixterm|blit running columbus code,
+ cols#88,
+ ed=\EJ, flash=\E^G, ich1@, mc4=^T, mc5=^R, mc5p=\EP%p1%03d,
+ rmir=\ER, rmso=\EV!, rmul=\EV", smir=\EQ, smso=\EU!,
+ smul=\EU", use=blit,
+
+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,
+ 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,
+ smir=\EQ,
#### Bolt, Beranek & Newman (bbn)
#
@@ -15709,54 +17263,54 @@ oblit|ojerq|first version of blit rom,
# small screen (it had a 17" crisp beauty) and a real OS. They (Bolt
# Beranek and Neuman) sold at most a few hundred of them to the real
# world. DOD may have bought more...
-#
+#
-# Entries for the BitGraph terminals. The problem
-# with scrolling in vi can only be fixed by getting BBN to put
-# smarter scroll logic in the terminal or changing vi or padding
+# Entries for the BitGraph terminals. The problem
+# with scrolling in vi can only be fixed by getting BBN to put
+# smarter scroll logic in the terminal or changing vi or padding
# scrolls with about 500 ms delay.
-#
-# I always thought the problem was related to the terminal
-# counting newlines in its input buffer before scrolling and
-# then moving the screen that much. Then vi comes along and
-# paints lines in on the bottom line of the screen, so you get
+#
+# I always thought the problem was related to the terminal
+# counting newlines in its input buffer before scrolling and
+# then moving the screen that much. Then vi comes along and
+# paints lines in on the bottom line of the screen, so you get
# this big white gap.
-bitgraph|bg2.0nv|bg3.10nv|bbn bitgraph 2.0 or later (normal video),
- flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h,
- use=bg2.0,
-bg2.0rv|bg3.10rv|bbn bitgraph 2.0 (reverse video),
- flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
- use=bg2.0,
-bg2.0|bg3.10|bbn bitgraph 2.0 or later (no init),
- OTbs, xenl,
- cols#85, lines#64,
- bel=^G, clear=\E[H\E[J$<150>, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
- 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=\E[D, kcud1=\E[B, kcuf1=\E[C,
- kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=PF1,
- lf2=PF2, lf3=PF3, lf4=PF4, rc=\E8, rmkx=\E>, rmso=\E[m, sc=\E7,
- sgr0=\E[m, smkx=\E=, smso=\E[7m,
-
-bg1.25rv|bbn bitgraph 1.25 (reverse video),
- flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
- use=bg1.25,
-bg1.25nv|bbn bitgraph 1.25 (normal video),
- flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h,
- use=bg1.25,
+bitgraph|bg2.0nv|bg3.10nv|bbn bitgraph 2.0 or later (normal video),
+ flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h,
+ use=bg2.0,
+bg2.0rv|bg3.10rv|bbn bitgraph 2.0 (reverse video),
+ flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
+ use=bg2.0,
+bg2.0|bg3.10|bbn bitgraph 2.0 or later (no init),
+ OTbs, xenl,
+ cols#85, lines#64,
+ bel=^G, clear=\E[H\E[J$<150>, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C,
+ 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=\E[D, kcud1=\E[B, kcuf1=\E[C,
+ kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, lf1=PF1,
+ lf2=PF2, lf3=PF3, lf4=PF4, rc=\E8, rmkx=\E>, rmso=\E[m, sc=\E7,
+ sgr0=\E[m, smkx=\E=, smso=\E[7m,
+
+bg1.25rv|bbn bitgraph 1.25 (reverse video),
+ flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h,
+ use=bg1.25,
+bg1.25nv|bbn bitgraph 1.25 (normal video),
+ flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h,
+ use=bg1.25,
# (bg1.25: I added <rmam>/<smam> based on the init string -- esr)
-bg1.25|bbn bitgraph 1.25,
- cols#85, lines#64,
- bel=^G, clear=\E[H\E[J$<150>, cr=^M, 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,
- kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\ES,
- lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, ll=\E[64;1H, rmam=\E[?7l,
- rmkx=\E>, rmso=\E[m, sgr0=\E[m, smam=\E[?7h, smkx=\E=,
- smso=\E[7m,
+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,
+ 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,
+ kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\ES,
+ lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, ll=\E[64;1H, rmam=\E[?7l,
+ rmkx=\E>, rmso=\E[m, sgr0=\E[m, smam=\E[?7h, smkx=\E=,
+ smso=\E[7m,
#### Bull (bq, dku, vip)
#
@@ -15825,48 +17379,48 @@ bg1.25|bbn bitgraph 1.25,
# This entry covers the following terminals:
# dku7102, tws2102, and tws models 2105 to 2112
-tws-generic|dku7102|Bull Questar tws terminals,
- am, eslok, hs, mir, msgr, xenl, xhp@, xon,
- cols#80, it#8, lines#24, wsl#80,
- acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~,
- bel=^G, blink=\E[0;5m, cbt=\E[Z, civis=\E[1r, clear=\E[2J,
- cnorm=\E[r, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
- cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
- cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
- dim=\E[0;2m, dl=\E[%p1%dM, dl1=\E[M,
- dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[v, ed=\E[J, el=\E[K,
- fsl=\E[v, home=\E[H, ht=\E[I, hts=\EH, il=\E[%p1%dL,
- il1=\E[L, ind=^J, invis=\E[0;8m,
- is1=\E[?=h\Ec\E`\E[?>h\EPY99\:98\E\\,
- is2=\E[5;>;12;18;?<l\E[=h\EP1s\E\\\E[\027p,
- is3=\Eb\E[?<h, kbs=^H, kcbt=\E[Z, kctab=\E[g, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
- ked=\E[J, kel=\E[K, kf1=\E[1u\027, kf2=\E[2u\027,
- kf3=\E[3u\027, kf4=\E[4u\027, kf5=\E[5u\027,
- kf6=\E[6u\027, kf7=\E[7u\027, kf8=\E[8u\027, khome=\E[H,
- khts=\EH, kil1=\E[L, krmir=\E[4l, ll=\E[H\E[A, mc0=\E[0i,
- mc4=\r\E[4i, mc5=\E[5i, rev=\E[0;7m, rmacs=^O,
- rmcup=\E[0;98v\E[2J\E[v, rmir=\E[4l, rmso=\E[m,
- rmul=\E[m, rs2=\E[?=h\Ec, s0ds=^O, s1ds=^N,
- sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, smcup=\E[?>h\EPY99\:98\E\\,
- smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[2g,
- tsl=\EPY99\:98\E\\\E[0;98v\E[2;7m,
-tws2102-sna|dku7102-sna|BULL Questar tws2102 for SNA,
- dsl=\E[0;98v\E[2J\E[v, fsl=\E[v, is3=\Eb, tsl=\E[0;98v,
- use=tws-generic,
-tws2103|xdku|BULL Questar tws2103,
- ht=^I, use=tws-generic,
-tws2103-sna|dku7103-sna|BULL Questar tws2103 for SNA,
- ht=^I, use=tws2102-sna,
-dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6),
- clear=\E[2J\E[H, cup@, dl@, dl1@,
- dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[H\E[v, el=\E[K\E[m,
- il@, il1@, tsl=\EPY99\:98\E\\\E[0;98v\E[H\E[2;7m,
- use=tws-generic,
-dku7202|BULL Questar 200 DKU7202 (colour/character attributes),
- blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb,
- smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic,
+tws-generic|dku7102|Bull Questar tws terminals,
+ am, eslok, hs, mir, msgr, xenl, xhp@, xon,
+ cols#80, it#8, lines#24, wsl#80,
+ acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~,
+ bel=^G, blink=\E[0;5m, cbt=\E[Z, civis=\E[1r, clear=\E[2J,
+ cnorm=\E[r, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB,
+ cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df,
+ cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+ dim=\E[0;2m, dl=\E[%p1%dM, dl1=\E[M,
+ dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[v, ed=\E[J, el=\E[K,
+ fsl=\E[v, home=\E[H, ht=\E[I, hts=\EH, il=\E[%p1%dL,
+ il1=\E[L, ind=^J, invis=\E[0;8m,
+ is1=\E[?=h\Ec\E`\E[?>h\EPY99\:98\E\\,
+ is2=\E[5;>;12;18;?<l\E[=h\EP1s\E\\\E[\027p,
+ is3=\Eb\E[?<h, kbs=^H, kcbt=\E[Z, kctab=\E[g, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M,
+ ked=\E[J, kel=\E[K, kf1=\E[1u\027, kf2=\E[2u\027,
+ kf3=\E[3u\027, kf4=\E[4u\027, kf5=\E[5u\027,
+ kf6=\E[6u\027, kf7=\E[7u\027, kf8=\E[8u\027, khome=\E[H,
+ khts=\EH, kil1=\E[L, krmir=\E[4l, ll=\E[H\E[A, mc0=\E[0i,
+ mc4=\r\E[4i, mc5=\E[5i, rev=\E[0;7m, rmacs=^O,
+ rmcup=\E[0;98v\E[2J\E[v, rmir=\E[4l, rmso=\E[m,
+ rmul=\E[m, rs2=\E[?=h\Ec, s0ds=^O, s1ds=^N,
+ sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, smcup=\E[?>h\EPY99\:98\E\\,
+ smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[2g,
+ tsl=\EPY99\:98\E\\\E[0;98v\E[2;7m,
+tws2102-sna|dku7102-sna|BULL Questar tws2102 for SNA,
+ dsl=\E[0;98v\E[2J\E[v, fsl=\E[v, is3=\Eb, tsl=\E[0;98v,
+ use=tws-generic,
+tws2103|xdku|BULL Questar tws2103,
+ ht=^I, use=tws-generic,
+tws2103-sna|dku7103-sna|BULL Questar tws2103 for SNA,
+ ht=^I, use=tws2102-sna,
+dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6),
+ clear=\E[2J\E[H, cup@, dl@, dl1@,
+ dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[H\E[v, el=\E[K\E[m,
+ il@, il1@, tsl=\EPY99\:98\E\\\E[0;98v\E[H\E[2;7m,
+ use=tws-generic,
+dku7202|BULL Questar 200 DKU7202 (colour/character attributes),
+ blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb,
+ smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic,
#=========================================================#
# BULL QUESTAR 303 & 310 `DEC VT 320' terminals emulation #
@@ -15876,17 +17430,17 @@ dku7202|BULL Questar 200 DKU7202 (colour/character attributes),
# Copyright (c) 1989 BULL SA
#---------------------------------------------------------------------------
# This entry is used for terminals with vt320 emulation mode
-# and following set-up :
+# and following set-up :
# 8 bit ISO Latin Character Set (ISO 8859-1),
-# 7 bit Control Characters,
-# 80 columns screen.
+# 7 bit Control Characters,
+# 80 columns screen.
# Hereafter are some DEC vt terminals' commands. (valid on vt200 and 300)
# They are used in string capabilities with vt220-320 emulation mode.
# In the following DEC definitions, two kinds of terminfo databases are
# provided :
-# 1. the first with Command Sequence Introducer starting with escape
+# 1. the first with Command Sequence Introducer starting with escape
# sequence in 7 bits characters ex. ESC [ : 2 chars. in 7-bit mode.
-# 2. the second with Command Sequence Introducer starting with escape
+# 2. the second with Command Sequence Introducer starting with escape
# sequence in 8 bits characters ex. ESC [ : 1 char. 'CSI' =x9B.
# Soft Terminal Reset esc [ ! p
# RIS (erases screen): esc c
@@ -15921,11 +17475,11 @@ dku7202|BULL Questar 200 DKU7202 (colour/character attributes),
# RM DECAWM auto right margin: esc [ ? 7 l
# SM DECARM auto repeat: esc [ ? 8 h
# RM DECARM auto repeat: esc [ ? 8 l
-# DECSASD Select active main: esc [ 0 $ }
-# DECSASD Select active status: esc [ 1 $ }
-# DECSSDT Select status none: esc [ 0 $ ~
-# DECSSDT Select status indic.: esc [ 1 $ ~
-# DECSSDT Select status host-wr: esc [ 2 $ ~
+# DECSASD Select active main: esc [ 0 $ }
+# DECSASD Select active status: esc [ 1 $ }
+# DECSSDT Select status none: esc [ 0 $ ~
+# DECSSDT Select status indic.: esc [ 1 $ ~
+# DECSSDT Select status host-wr: esc [ 2 $ ~
# SM DECTCEM Visible cursor: esc [ ? 2 5 h
# RM DECTCEM Invisible cursor: esc [ ? 2 5 l
# SM DECNCRM 7 bits NCR set: esc [ ? 4 2 h
@@ -15944,58 +17498,58 @@ dku7202|BULL Questar 200 DKU7202 (colour/character attributes),
#
# This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310
-bq300|Bull vt320 ISO Latin 1 80 columns terminal,
- am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
- cols#80, it#8, lines#24, vt#3, wsl#80,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
- clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
- cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- cvvis=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM,
- dl1=\E[M, dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX,
- ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
- flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I,
- hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
- is1=\E[63;1"p\E[2h,
- is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
- is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy,
- kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP, kf10=\E[21~,
- kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
- kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
- kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS,
- kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
- khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- krdo=\E[29~, kslt=\E[4~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
- mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
- ri=\EM, rmacs=^O, rmam=\E[?7l, rmcup=\E[?7h, rmir=\E[4l,
- rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\E[!p,
- rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7,
- sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;,
- sgr0=\E[0m\E(B, smacs=^N, smam=\E[?7h,
- smcup=\E[?7l\E[?1l\E(B, smir=\E[4h, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g, tsl=\E[1$}\E[2$~,
-bq300-rv|Bull vt320 reverse 80 columns,
- flash=\E[?5l$<50>\E[?5h,
- is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
- use=bq300,
-bq300-w|Bull vt320 132 columns,
- cols#132, wsl#132,
- is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
- rs2=\E[?3h, use=bq300,
-bq300-w-rv|Bull vt320 reverse mode 132 columns,
- cols#132, wsl#132,
- flash=\E[?5l$<50>\E[?5h,
- is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
- rs2=\E[?3h, use=bq300,
+bq300|Bull vt320 ISO Latin 1 80 columns terminal,
+ am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
+ cols#80, it#8, lines#24, vt#3, wsl#80,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
+ clear=\E[H\E[J, cnorm=\E[?25h, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D,
+ cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX, ed=\E[J,
+ el=\E[K, el1=\E[1K, enacs=\E(B\E)0,
+ flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I,
+ hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
+ is1=\E[63;1"p\E[2h,
+ is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+ is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy,
+ kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kf1=\EOP, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+ kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~,
+ kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS,
+ kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~,
+ khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ krdo=\E[29~, kslt=\E[4~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4,
+ mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m,
+ ri=\EM, rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?7h, rmir=\E[4l,
+ rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, rs1=\E[!p,
+ rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;,
+ sgr0=\E[0m\E(B, smacs=\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$~,
+bq300-rv|Bull vt320 reverse 80 columns,
+ flash=\E[?5l$<50>\E[?5h,
+ is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+ use=bq300,
+bq300-w|Bull vt320 132 columns,
+ cols#132, wsl#132,
+ is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+ rs2=\E[?3h, use=bq300,
+bq300-w-rv|Bull vt320 reverse mode 132 columns,
+ cols#132, wsl#132,
+ flash=\E[?5l$<50>\E[?5h,
+ is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+ rs2=\E[?3h, use=bq300,
# This entry is used for terminals with vt320 emulation mode
-# and following set-up :
+# and following set-up :
# 8 bit ISO Latin Character Set (ISO 8859-1),
# 8 bit Control Characters, (CSI coded as x9B for ESC [)
-# 80 columns screen.
+# 80 columns screen.
# Soft Terminal Reset csi ! p
# RIS (erases screen): esc c
# DECKPNM numeric keypad mode: esc >
@@ -16029,11 +17583,11 @@ bq300-w-rv|Bull vt320 reverse mode 132 columns,
# RM DECAWM auto right margin: csi ? 7 l
# SM DECARM auto repeat: csi ? 8 h
# RM DECARM auto repeat: csi ? 8 l
-# DECSASD Select active main: csi 0 $ }
-# DECSASD Select active status: csi 1 $ }
-# DECSSDT Select status none: csi 0 $ ~
-# DECSSDT Select status indic.: csi 1 $ ~
-# DECSSDT Select status host-wr: csi 2 $ ~
+# DECSASD Select active main: csi 0 $ }
+# DECSASD Select active status: csi 1 $ }
+# DECSSDT Select status none: csi 0 $ ~
+# DECSSDT Select status indic.: csi 1 $ ~
+# DECSSDT Select status host-wr: csi 2 $ ~
# SM DECTCEM Visible cursor: csi ? 2 5 h
# RM DECTCEM Invisible cursor: csi ? 2 5 l
# SM DECNCRM 7 bits NCR set: csi ? 4 2 h
@@ -16045,102 +17599,102 @@ bq300-w-rv|Bull vt320 reverse mode 132 columns,
# with: 0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse
# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off
# (bq300-8: <cub1>,<cuf1>,<cuu1>,<cud1>,<dl1>,<il1> to get under 1024 --esr)
-bq300-8|Bull vt320 full 8 bits 80 columns,
- am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
- cols#80, it#8, lines#24, vt#3, wsl#80,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- bel=^G, blink=\2335m, bold=\2331m, civis=\233?25l,
- clear=\233H\233J, cnorm=\233?25h, cr=^M,
- csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cud=\233%p1%dB,
- cuf=\233%p1%dC, cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA,
- cvvis=\233?25h, dch=\233%p1%dP, dch1=\233P,
- dl=\233%p1%dM, dsl=\2331$}\2332$~\n\2330$},
- ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K,
- enacs=\E(B\E)0, flash=\233?5h$<50>\233?5l, fsl=\2330$},
- home=\233H, ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL,
- ind=\ED, is1=\E[63;2"p\E[2h,
- is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
- is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w,
- ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s,
- kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
- kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~,
- kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
- kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
- kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~,
- kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~,
- khlp=\23328~, kich1=\2332~, knp=\2336~, kpp=\2335~,
- krdo=\23329~, kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3,
- lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8,
- rev=\2337m, ri=\EM, rmacs=^O, rmam=\233?7l, rmcup=\233?7h,
- rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m,
- rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7,
- sgr=\233%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;,
- sgr0=\2330m\E(B, smacs=^N, smam=\233?7h,
- smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m,
- smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~,
-bq300-8rv|Bull vt320 8-bit reverse mode 80 columns,
- flash=\233?5l$<50>\233?5h,
- is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
- use=bq300-8,
-bq300-8w|Bull vt320 8-bit 132 columns,
- cols#132, wsl#132,
- is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
- rs2=\233?3h, use=bq300-8,
-bq300-w-8rv|Bull vt320 8-bit reverse mode 132 columns,
- cols#132, wsl#132,
- flash=\233?5l$<50>\233?5h,
- is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
- rs2=\233?3h, use=bq300-8,
+bq300-8|Bull vt320 full 8 bits 80 columns,
+ am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon,
+ cols#80, it#8, lines#24, vt#3, wsl#80,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, blink=\2335m, bold=\2331m, civis=\233?25l,
+ clear=\233H\233J, cnorm=\233?25h, cr=^M,
+ csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cud=\233%p1%dB,
+ cuf=\233%p1%dC, cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA,
+ dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM,
+ dsl=\2331$}\2332$~\n\2330$}, ech=\233%p1%dX, ed=\233J,
+ el=\233K, el1=\2331K, enacs=\E(B\E)0,
+ flash=\233?5h$<50>\233?5l, fsl=\2330$}, home=\233H,
+ ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, ind=\ED,
+ is1=\E[63;2"p\E[2h,
+ is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+ is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w,
+ ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s,
+ kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A,
+ kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~,
+ kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
+ kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~,
+ kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~,
+ kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~,
+ khlp=\23328~, kich1=\2332~, knp=\2336~, kpp=\2335~,
+ krdo=\23329~, kslt=\2334~, lf1=pf1, lf2=pf2, lf3=pf3,
+ lf4=pf4, mc0=\233i, mc4=\2334i, mc5=\2335i, nel=\EE, rc=\E8,
+ rev=\2337m, ri=\EM, rmacs=^O, rmam=\233?7l, rmcup=\233?7h,
+ rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m,
+ rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7,
+ sgr=\233%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;,
+ sgr0=\2330m\E(B, smacs=^N, smam=\233?7h,
+ smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m,
+ smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~,
+bq300-8rv|Bull vt320 8-bit reverse mode 80 columns,
+ flash=\233?5l$<50>\233?5h,
+ is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+ use=bq300-8,
+bq300-8w|Bull vt320 8-bit 132 columns,
+ cols#132, wsl#132,
+ is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+ rs2=\233?3h, use=bq300-8,
+bq300-w-8rv|Bull vt320 8-bit reverse mode 132 columns,
+ cols#132, wsl#132,
+ flash=\233?5l$<50>\233?5h,
+ is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+ rs2=\233?3h, use=bq300-8,
# This entry is used for terminals with vt320 emulation mode
-# a 102 keys keyboard (PC scancode !) and following set-up :
+# a 102 keys keyboard (PC scancode !) and following set-up :
# 8 bit ISO Latin Character Set (ISO 8859-1),
-# 7 bit Control Characters,
-# 80 columns screen.
-bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns,
- kbs=^H, kdch1=\E[3~, kend=\E[4~, kf1=\E[17~, kf10=\E[28~,
- kf11=\E[29~, kf12=\E[31~, kf13@, kf14@, kf15@, kf16@, kf17@,
- kf18@, kf19@, kf2=\E[18~, kf20@, kf3=\E[19~, kf4=\E[20~,
- kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~,
- kfnd@, khlp@, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
- krdo@, kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300,
-bq300-pc-rv|Questar 303 with PC keyboard reverse mode 80 columns,
- flash=\E[?5l$<50>\E[?5h,
- is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
- use=bq300-pc,
-bq300-pc-w|Questar 303 with PC keyboard 132 columns terminal,
- cols#132, wsl#132,
- is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
- rs2=\E[?3h, use=bq300-pc,
-bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns,
- cols#132, wsl#132,
- flash=\E[?5l$<50>\E[?5h,
- is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
- rs2=\E[?3h, use=bq300-pc,
+# 7 bit Control Characters,
+# 80 columns screen.
+bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns,
+ kbs=^H, kdch1=\E[3~, kend=\E[4~, kf1=\E[17~, kf10=\E[28~,
+ kf11=\E[29~, kf12=\E[31~, kf13@, kf14@, kf15@, kf16@, kf17@,
+ kf18@, kf19@, kf2=\E[18~, kf20@, kf3=\E[19~, kf4=\E[20~,
+ kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~,
+ kfnd@, khlp@, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ krdo@, kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300,
+bq300-pc-rv|Questar 303 with PC keyboard reverse mode 80 columns,
+ flash=\E[?5l$<50>\E[?5h,
+ is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+ use=bq300-pc,
+bq300-pc-w|Questar 303 with PC keyboard 132 columns terminal,
+ cols#132, wsl#132,
+ is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+ rs2=\E[?3h, use=bq300-pc,
+bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns,
+ cols#132, wsl#132,
+ flash=\E[?5l$<50>\E[?5h,
+ is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
+ rs2=\E[?3h, use=bq300-pc,
# 8 bit ISO Latin Character Set (ISO 8859-1),
-# 8 bit Control Characters,
-# 80 columns screen.
-bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns,
- kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~,
- kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@,
- kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@,
- kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
- kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@,
- khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@,
- kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8,
-bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns,
- flash=\E[?5l$<50>\E[?5h,
- is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
- use=bq300-8-pc,
-bq300-8-pc-w|Questar 303 with PC keyboard full 8 bits 132 columns,
- cols#132, wsl#132,
- is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
- rs2=\E[?3h, use=bq300-8-pc,
-bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns,
- cols#132, wsl#132,
- flash=\E[?5l$<50>\E[?5h,
- is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
- rs2=\E[?3h, use=bq300-8-pc,
+# 8 bit Control Characters,
+# 80 columns screen.
+bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns,
+ kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~,
+ kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@,
+ kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@,
+ kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
+ kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@,
+ khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@,
+ kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8,
+bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns,
+ flash=\E[?5l$<50>\E[?5h,
+ is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+ use=bq300-8-pc,
+bq300-8-pc-w|Questar 303 with PC keyboard full 8 bits 132 columns,
+ cols#132, wsl#132,
+ is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+ rs2=\E[?3h, use=bq300-8-pc,
+bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns,
+ cols#132, wsl#132,
+ flash=\E[?5l$<50>\E[?5h,
+ is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
+ rs2=\E[?3h, use=bq300-8-pc,
#======================================================#
# BULL QUESTAR 310 `VIP 7800/8800' terminals emulation #
@@ -16195,95 +17749,95 @@ bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns,
# reset : ^{
#
# This covers the vip7800 and BQ3155-vip7800
-vip|Bull Questar 3155-7800,
- am, eslok, hs, km, mc5i, msgr, xenl, xon,
- cols#80, it#8, lines#24, vt#3, wsl#80,
- acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB,
- cbt=\E[Z, clear=\E`, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL,
- dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK,
- flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I,
- hts=\Ep, ich1=\E[I, ind=^J, invis=\EsH,
- is2=\E[00u\E[<>001001024080024080u\E[01u,
- is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H,
- kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ,
- kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@,
- kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1,
- kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?,
- kf28=\EQ, kf29=\ES, kf3=\E6, kf30=\EV, kf31=\E], kf32=\E_,
- kf4=\E8, kf5=\E\:, kf6=\E<, kf7=\E>, kf8=\EP, kf9=\ER,
- khome=\EH, khts=\Ep, kich1=\E[I, kil1=\E[L, kind=\E[0s,
- kll=\EH\EA, kri=\E[1s, krmir=\E[J, ktbc=\E[N, lf1=pf1,
- lf2=pf2, lf3=pf3, lf4=pf4, ll=\EH\EA, mc0=\E[0p, mc4=\E[<p,
- mc5=\E[3p, nel=^M, prot=\EsP, rev=\EsI,
- ri=\EA\EJ\EH\E[L$<10>, rmacs=\EF, rmir=\E[J, rmso=\EsR,
- rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG,
- sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI,
- smul=\Es_, tbc=\E[N, tsl=\Ew,
+vip|Bull Questar 3155-7800,
+ am, eslok, hs, km, mc5i, msgr, xenl, xon,
+ cols#80, it#8, lines#24, vt#3, wsl#80,
+ acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB,
+ cbt=\E[Z, clear=\E`, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL,
+ dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK,
+ flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I,
+ hts=\Ep, ich1=\E[I, ind=^J, invis=\EsH,
+ is2=\E[00u\E[<>001001024080024080u\E[01u,
+ is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H,
+ kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ,
+ kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@,
+ kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1,
+ kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?,
+ kf28=\EQ, kf29=\ES, kf3=\E6, kf30=\EV, kf31=\E], kf32=\E_,
+ kf4=\E8, kf5=\E\:, kf6=\E<, kf7=\E>, kf8=\EP, kf9=\ER,
+ khome=\EH, khts=\Ep, kich1=\E[I, kil1=\E[L, kind=\E[0s,
+ kll=\EH\EA, kri=\E[1s, krmir=\E[J, ktbc=\E[N, lf1=pf1,
+ lf2=pf2, lf3=pf3, lf4=pf4, ll=\EH\EA, mc0=\E[0p, mc4=\E[<p,
+ mc5=\E[3p, nel=^M, prot=\EsP, rev=\EsI,
+ ri=\EA\EJ\EH\E[L$<10>, rmacs=\EF, rmir=\E[J, rmso=\EsR,
+ rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG,
+ sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI,
+ smul=\Es_, tbc=\E[N, tsl=\Ew,
# normal screen, 8 bits, 132 columns terminal.
-vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide,
- cols#132, wsl#132,
- is2=\E[00u\E[<>001001024132024132u\E[01u, use=vip,
-vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines,
- lines#72,
- is2=\E[00u\E[<>001001024080072080u\E[01u, use=vip,
-vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines,
- cols#132, lines#72, wsl#132,
- is2=\E[00u\E[<>001001024132072132u\E[01u, use=vip,
+vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide,
+ cols#132, wsl#132,
+ is2=\E[00u\E[<>001001024132024132u\E[01u, use=vip,
+vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines,
+ lines#72,
+ is2=\E[00u\E[<>001001024080072080u\E[01u, use=vip,
+vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines,
+ cols#132, lines#72, wsl#132,
+ is2=\E[00u\E[<>001001024132072132u\E[01u, use=vip,
#### Chromatics
#
-# I have put the long strings in <smcup>/<rmcup>. Ti sets up a window
-# that is smaller than the screen, and puts up a warning message
-# outside the window. Te erases the warning message, puts the
+# I have put the long strings in <smcup>/<rmcup>. Ti sets up a window
+# that is smaller than the screen, and puts up a warning message
+# outside the window. Te erases the warning message, puts the
# window back to be the whole screen, and puts the cursor at just
-# below the small window. I defined <cnorm> and <civis> to really turn
-# the cursor on and off, but I have taken this out since I don't
-# like the cursor being turned off when vi exits.
-cg7900|chromatics|chromatics 7900,
- am,
- cols#80, lines#40,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, 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\,,
- 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,
+# below the small window. I defined <cnorm> and <civis> to really turn
+# the cursor on and off, but I have taken this out since I don't
+# like the cursor being turned off when vi exits.
+cg7900|chromatics|chromatics 7900,
+ am,
+ cols#80, lines#40,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, 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\,,
+ 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,
#### Computer Automation
#
-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,
- kcub1=^U, kcud1=^W, kcuu1=^V, khome=^^,
+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,
+ kcub1=^U, kcud1=^W, kcuu1=^V, khome=^^,
#### Cybernex
#
# This entry has correct padding and the undocumented "ri" capability
-cyb83|xl83|cybernex xl-83,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\014$<62>, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
- cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N,
- ed=\020$<62>, el=\017$<3>, home=^K, ind=^J, kcub1=^H,
- kcud1=^J, kcuf1=^I, kcuu1=^N, ri=^N,
+cyb83|xl83|cybernex xl-83,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\014$<62>, cr=^M, cub1=^H, cud1=^J, cuf1=^I,
+ cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N,
+ ed=\020$<62>, el=\017$<3>, home=^K, ind=^J, kcub1=^H,
+ kcud1=^J, kcuf1=^I, kcuu1=^N, ri=^N,
# (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr)
-cyb110|mdl110|cybernex mdl-110,
- OTbs, am,
- cols#80, lines#24,
- bel=^G, clear=\030$<70>, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
- cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
- 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,
+cyb110|mdl110|cybernex mdl-110,
+ OTbs, am,
+ cols#80, lines#24,
+ bel=^G, clear=\030$<70>, cr=^M, cub1=^H, cud1=^J, cuf1=^U,
+ cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z,
+ 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,
#### Datapoint
#
@@ -16293,24 +17847,24 @@ cyb110|mdl110|cybernex mdl-110,
# side of Datapoint still lives (1995) in the form of Intelogic Trace.
#
-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,
+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,
# From: Jan Willem Stumpel <jw.stumpel@inter.nl.net>, 11 May 1997
-# The Datapoint 8242 Workstation was sold at least between 1985
-# and 1989. To make the terminal work with this entry, press
-# CONTROL-INT-INT to take the terminal off-line, and type (opt).
-# Set the options AUTO ROLL, ROLL DN, and ESC KBD on, and AUTO
-# CR/LF off. Use control-shift-[] as escape key, control-I as tab,
+# The Datapoint 8242 Workstation was sold at least between 1985
+# and 1989. To make the terminal work with this entry, press
+# CONTROL-INT-INT to take the terminal off-line, and type (opt).
+# Set the options AUTO ROLL, ROLL DN, and ESC KBD on, and AUTO
+# CR/LF off. Use control-shift-[] as escape key, control-I as tab,
# shift-F1 to shift-F5 as F6 to F10 (unshifted F1 to F5 are in
# fact unusable because the strings sent by the terminal conflict
# with other keys).
# The terminal is capable of displaying "box draw" characters.
-# For each graphic character you must send 2 ESC's (\E\E) followed
-# by a control character as follows:
+# For each graphic character you must send 2 ESC's (\E\E) followed
+# by a control character as follows:
# character meaning
# ========= =======
# ctrl-E top tee
@@ -16324,100 +17878,100 @@ dp3360|datapoint|datapoint 3360,
# ctrl-M bottom right corner
# ctrl-N horizontal line
# ctrl-O vertical line
-# Unfortunately this cannot be fitted into the termcap/terminfo
-# description scheme.
-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,
- 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,
- 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,
+# Unfortunately this cannot be fitted into the termcap/terminfo
+# description scheme.
+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,
+ 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,
+ 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,
#### DEC terminals (Obsolete types: DECwriter and vt40/42/50)
#
# These entries are DEC's official terminfos for its older terminals.
# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
-# Engineering for more information. Updated terminfos and termcaps
+# Engineering for more information. Updated terminfos and termcaps
# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
#
-gt40|dec gt40,
- OTbs, os,
- cols#72, lines#30,
- bel=^G, cr=^M, cub1=^H, cud1=^J,
-gt42|dec gt42,
- OTbs, os,
- cols#72, lines#40,
- bel=^G, cr=^M, cub1=^H, cud1=^J,
-vt50|dec vt50,
- OTbs,
- cols#80, lines#12,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=^J,
-vt50h|dec vt50h,
- OTbs,
- cols#80, lines#12,
- bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, ht=^I, ind=^J, ri=\EI,
+gt40|dec gt40,
+ OTbs, os,
+ cols#72, lines#30,
+ bel=^G, cr=^M, cub1=^H, cud1=^J,
+gt42|dec gt42,
+ OTbs, os,
+ cols#72, lines#40,
+ bel=^G, cr=^M, cub1=^H, cud1=^J,
+vt50|dec vt50,
+ OTbs,
+ cols#80, lines#12,
+ bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=^J,
+vt50h|dec vt50h,
+ OTbs,
+ cols#80, lines#12,
+ bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+ el=\EK, ht=^I, ind=^J, 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,
- 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,
- ri=\E$<20>I,
+vt61|vt-61|vt61.5|dec vt61,
+ cols#80, lines#24,
+ bel=^G, clear=\EH\EJ$<120>, cr=\r$<20>, cub1=^H, cud1=^J,
+ 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,
+ ri=\E$<20>I,
# The gigi does standout with red!
# (gigi: I added <rmam>/<smam> based on the init string, corrected cub1 -- esr)
-gigi|vk100|dec gigi graphics terminal,
- 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,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
- el=\E[K, ht=^I, ind=^J,
- 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,
- rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
- sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7;31m,
- smul=\E[4m,
+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,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J,
+ el=\E[K, ht=^I, ind=^J,
+ 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,
+ rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+ sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7;31m,
+ smul=\E[4m,
# DEC PRO-350 console (VT220-style). The 350 was DEC's attempt to produce
# a PC differentiated from the IBM clones. It was a total, ludicrous,
# grossly-overpriced failure (among other things, DEC's OS didn't include
# a format program, so you had to buy pre-formatted floppies from DEC at
# a hefty premium!).
-pro350|decpro|dec pro console,
- OTbs,
- cols#80, it#8, lines#24,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, home=\EH, ht=^I, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH, kf4=\EI,
- kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI, rmacs=\EG,
- rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D,
-
-dw1|decwriter I,
- OTbs, hc, os,
- cols#72,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J,
-dw2|decwriter|dw|decwriter II,
- OTbs, hc, os,
- cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H,
+pro350|decpro|dec pro console,
+ OTbs,
+ cols#80, it#8, lines#24,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
+ el=\EK, home=\EH, ht=^I, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH, kf4=\EI,
+ kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI, rmacs=\EG,
+ rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D,
+
+dw1|decwriter I,
+ OTbs, hc, os,
+ cols#72,
+ bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J,
+dw2|decwriter|dw|decwriter II,
+ OTbs, hc, os,
+ cols#132,
+ bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H,
# \E(B Use U.S. character set (otherwise # => british pound !)
# \E[20l Disable "linefeed newline" mode (else puts \r after \n,\f,\v)
# \E[w 10 char/in pitch
@@ -16429,35 +17983,35 @@ dw2|decwriter|dw|decwriter II,
# \E[4g clear vertical tab stops
# \E> disable alternate keypad mode (so it transmits numbers!)
# \E[%i%p1%du set tab stop at column %d (origin == 1)
-# (Full syntax is \E[n;n;n;n;n;...;nu where each 'n' is
+# (Full syntax is \E[n;n;n;n;n;...;nu where each 'n' is
# a tab stop)
#
# The dw3 does standout with wide characters.
#
-dw3|la120|decwriter III,
- OTbs, hc, os,
- cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J,
- is1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>,
- is2=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\r,
- kbs=^H, rmso=\E[w, sgr0=\E[w, smso=\E[6w,
-dw4|decwriter IV,
- OTbs, am, hc, os,
- cols#132,
- bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, is2=\Ec, kbs=^H,
- kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS,
+dw3|la120|decwriter III,
+ OTbs, hc, os,
+ cols#132,
+ bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J,
+ is1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>,
+ is2=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\r,
+ kbs=^H, rmso=\E[w, sgr0=\E[w, smso=\E[6w,
+dw4|decwriter IV,
+ OTbs, am, hc, os,
+ cols#132,
+ bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, is2=\Ec, kbs=^H,
+ kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS,
# 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,
- 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,
+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,
+ 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,
#### Delta Data (dd)
#
@@ -16466,32 +18020,32 @@ ln03-w|dec ln03 laser printer 132 cols,
# The idea is ctrl(O), dd(row), dd(col), where dd(x) is x - 2*(x%16) + '9'.
# There are BSD-derived termcap entries floating around for this puppy
# that are *certainly* wrong.
-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,
+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,
#### Digital Data Research (ddr)
#
# (ddr: I added <rmam>/<smam> based on the init string -- esr)
-ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
- OTbs, am, xenl,
- cols#80, it#8, lines#24, vt#3,
- blink=\E[5m$<2/>, bold=\E[1m$<2/>,
- clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
- cud1=^J, cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
- cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
- ht=^I, 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,
- kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
- rf=/usr/share/tabset/vt100, ri=\EM$<5/>, rmam=\E[7l,
- rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m$<2/>,
- rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m,
- smul=\E[4m$<2/>,
+ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
+ OTbs, am, xenl,
+ cols#80, it#8, lines#24, vt#3,
+ blink=\E[5m$<2/>, bold=\E[1m$<2/>,
+ clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H,
+ cud1=^J, cuf1=\E[C$<2/>, cup=\E[%i%p1%d;%p2%dH$<5/>,
+ cuu1=\E[A$<2/>, ed=\E[J$<50/>, el=\E[K$<3/>, home=\E[H,
+ ht=^I, 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,
+ kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m$<2/>,
+ rf=/usr/share/tabset/vt100, ri=\EM$<5/>, rmam=\E[7l,
+ rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m$<2/>,
+ rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+ sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m,
+ smul=\E[4m$<2/>,
#### Evans & Sutherland
#
@@ -16507,18 +18061,18 @@ ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
# are out of production, though of course E&S is very much alive (in 1996).
# (ps300: changed ":pt@:" to "it@" -- esr)
#
-ps300|Picture System 300,
- xt,
- it@,
- rmso@, rmul@, smso@, smul@, use=vt100,
+ps300|Picture System 300,
+ xt,
+ it@,
+ rmso@, rmul@, smso@, smul@, use=vt100,
#### General Electric (ge)
#
-terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
- OTbs, hc, os,
- cols#120,
- bel=^G, cr=^M, cud1=^J, ind=^J,
+terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
+ OTbs, hc, os,
+ cols#120,
+ bel=^G, cr=^M, cud1=^J, ind=^J,
#### Heathkit/Zenith
#
@@ -16527,22 +18081,22 @@ terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
#
# S401
# 0-3 = baud rate as follows:
-#
+#
# 3 2 1 0
-# --- --- --- ---
+# --- --- --- ---
# 0 0 1 1 300 baud
# 0 1 0 1 1200 baud
# 1 0 0 0 2400 baud
# 1 0 1 0 4800 baud
# 1 1 0 0 9600 baud
# 1 1 0 1 19.2K baud
-#
+#
# 4 = parity (0 = no parity)
# 5 = even parity (0 = odd parity)
# 6 = stick parity (0 = normal parity)
# 7 = full duplex (0 = half duplex)
-#
-# S402
+#
+# S402
# 0 = block cursor (0 = underscore cursor)
# 1 = no key click (0 = keyclick)
# 2 = wrap at end of line (0 = no wrap)
@@ -16551,64 +18105,64 @@ terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
# 5 = ANSI mode (0 = VT52 mode)
# 6 = keypad shifted (0 = keypad unshifted)
# 7 = 50Hz refresh (1 = 60Hz refresh)
-#
+#
# Factory Default settings are as follows:
# 7 6 5 4 3 2 1 0
# S401 1 0 0 0 1 1 0 0
# S402 0 0 0 0 0 0 0 0
# (h19: I added <rmam>/<smam> based on the init string;
# also added empty <acsc> to suppress a tic warning -- esr)
-h19-a|h19a|heath-ansi|heathkit-a|heathkit h19 ansi mode,
- OTbs, am, mir, msgr,
- cols#80, it#8, lines#24,
- acsc=, bel=^G, clear=\E[2J, cnorm=\E[>4l, cr=^M, cub1=^H,
- cud1=\E[1B, cuf1=\E[1C, cup=\E[%i%p1%d;%p2%dH,
- 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,
- 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,
- kf7=\EOQ, kf8=\EOR, khome=\E[H, lf6=blue, lf7=red, lf8=white,
- ri=\EM, rmacs=\E[11m, rmam=\E[?7l, rmir=\E[4l, rmso=\E[m,
- smacs=\E[10m, smam=\E[?7h, smir=\E[4h, smso=\E[7m,
-h19-bs|heathkit w/keypad shifted,
- rmkx=\Eu, smkx=\Et, use=h19-b,
-h19-us|h19us|h19-smul|heathkit w/keypad shifted/underscore cursor,
- rmkx=\Eu, smkx=\Et, use=h19-u,
+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,
+ 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,
+ 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,
+ kf7=\EOQ, kf8=\EOR, khome=\E[H, lf6=blue, lf7=red, lf8=white,
+ ri=\EM, rmacs=\E[11m, rmam=\E[?7l, rmir=\E[4l, rmso=\E[m,
+ smacs=\E[10m, smam=\E[?7h, smir=\E[4h, smso=\E[7m,
+h19-bs|heathkit w/keypad shifted,
+ rmkx=\Eu, smkx=\Et, use=h19-b,
+h19-us|h19us|h19-smul|heathkit w/keypad shifted/underscore cursor,
+ rmkx=\Eu, smkx=\Et, use=h19-u,
# (h19: merged in <ip> from BSDI hp19-e entry>;
# also added empty <acsc> to suppress a tic warning --esr)
-# From: Tim Pierce <twp@skepsis.com>, 23 Feb 1998
+# From: Tim Pierce <twp@skepsis.com>, 23 Feb 1998
# Tim tells us that:
# I have an old Zenith-19 terminal at home that still gets a lot of use.
# This terminal suffers from the same famous insert-mode padding lossage
# that has been acknowledged for the Z29 terminal. Emacs is nearly
# unusable on this box, since even a half-scroll up or down the window
# causes flaming terminal death.
-#
+#
# On the Z19, the only way I have found around this problem is to remove
# the :al: and :dl: entries entirely. No amount of extra padding will
# help (I have tried up to 20000). Removing <il1=\EL$> and <dl1=\EM$>
# makes Emacs a little slower, but it remains in the land of the living.
# Big win.
-h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19,
- OTbs, am, eslok, hs, mir, msgr,
- cols#80, it#8, lines#24,
- acsc=, bel=^G, clear=\EE, cnorm=\Ey4, cr=^M, cub1=^H, cud1=\EB,
- cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
- 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, 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, smir=\E@, smso=\Ep,
- tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo,
-h19-u|heathkit with underscore cursor,
- cnorm@, cvvis@, use=h19-b,
-h19-g|h19g|heathkit w/block cursor,
- cnorm=\Ex4, use=h19-b,
-alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19,
- lines#60,
- dl1=\EM, il1=\EL, use=h19,
+h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19,
+ OTbs, am, eslok, hs, mir, msgr,
+ cols#80, it#8, lines#24,
+ acsc=, bel=^G, clear=\EE, cnorm=\Ey4, cr=^M, cub1=^H, cud1=\EB,
+ cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
+ 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, 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, smir=\E@, smso=\Ep,
+ tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo,
+h19-u|heathkit with underscore cursor,
+ cnorm@, cvvis@, use=h19-b,
+h19-g|h19g|heathkit w/block cursor,
+ cnorm=\Ex4, use=h19-b,
+alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19,
+ lines#60,
+ dl1=\EM, il1=\EL, use=h19,
# The major problem with the Z29 is that it requires more padding than the Z19.
#
@@ -16616,55 +18170,55 @@ alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19,
# it needs more padding. It especially loses if a program attempts
# to put the Z29 into insert mode and insert text at 9600 baud. It
# even loses worse if the program attempts to insert tabs at 9600
-# baud. Adding padding to text that is inserted loses because in
+# baud. Adding padding to text that is inserted loses because in
# order to make the Z29 not die, one must add so much padding that
-# whenever the program tries to use insert mode, the effective
+# whenever the program tries to use insert mode, the effective
# rate is about 110 baud.
-#
-# What program would want to put the terminal into insert mode
-# and shove stuff at it at 9600 baud you ask?
-#
-# Emacs. Emacs seems to want to do the mathematically optimal
+#
+# What program would want to put the terminal into insert mode
+# and shove stuff at it at 9600 baud you ask?
+#
+# Emacs. Emacs seems to want to do the mathematically optimal
# thing in doing a redisplay rather than the practical thing.
-# When it is about to output a line on top of a line that is
-# already on the screen, instead of just killing to the end of
-# the line and outputting the new line, it compares the old line
-# and the new line and if there are any similarities, it
-# constructs the new line by deleting the text on the old line
+# When it is about to output a line on top of a line that is
+# already on the screen, instead of just killing to the end of
+# the line and outputting the new line, it compares the old line
+# and the new line and if there are any similarities, it
+# constructs the new line by deleting the text on the old line
# on the terminal that is already there and then inserting new
-# text into the line to transform it into the new line that is
+# text into the line to transform it into the new line that is
# to be displayed. The Z29 does not react kindly to this.
-#
+#
# But don't cry for too long.... There is a solution. You can make
# a termcap entry for the Z29 that says the Z29 has no insert mode.
-# Then Emacs cannot use it. "Oh, no, but now inserting into a
+# Then Emacs cannot use it. "Oh, no, but now inserting into a
# line will be really slow", you say. Well there is a sort of a
-# solution to that too. There is an insert character option on
-# the Z29 that will insert one character. Unfortunately, it
-# involves putting the terminal into ansi mode, inserting the
-# character, and changing it back to H19 mode. All this takes 12
-# characters. Pretty expensive to insert one character, but it
-# works. Either Emacs doesn't try to use its inserting hack when
-# it's only given an insert character ability or the Z29 doesn't
-# require padding with this (the former is probably more likely,
+# solution to that too. There is an insert character option on
+# the Z29 that will insert one character. Unfortunately, it
+# involves putting the terminal into ansi mode, inserting the
+# character, and changing it back to H19 mode. All this takes 12
+# characters. Pretty expensive to insert one character, but it
+# works. Either Emacs doesn't try to use its inserting hack when
+# it's only given an insert character ability or the Z29 doesn't
+# require padding with this (the former is probably more likely,
# but I haven't checked it out).
# (z29: added empty <acsc> to suppress a tic warning, merged in
# status line capabilities from BRL entry --esr)
-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,
- 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,
- ich1=\E<\E[1@\E[?2h$<1>, il1=\EL$<1/>, ind=\n$<2>,
- is2=\E<\E[?2h\Ev, 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,
- lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO, rmso=\Eq,
- rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep, smul=\Es8,
- tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
+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,
+ 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,
+ ich1=\E<\E[1@\E[?2h$<1>, il1=\EL$<1/>, ind=\n$<2>,
+ is2=\E<\E[?2h\Ev, 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,
+ lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO, rmso=\Eq,
+ rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep, smul=\Es8,
+ tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
# z29 in ansi mode. Assumes that the cursor is in the correct state, and that
# the world is stable. <rs1> causes the terminal to be reset to the state
# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore
@@ -16672,119 +18226,119 @@ z29|zenith29|z29b|zenith z29b,
# From: Mike Meyers
# (z29a: replaced nonexistent <if=/usr/share/tabset/zenith29> befause <hts>
# looks vt100-compatible -- esr)
-z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode,
- OTbs, OTpt, am, eslok, hs, mir, msgr,
- OTkn#10, cols#80, it#8, lines#24,
- OTbc=\ED, bel=^G, blink=\E[5m, bold=\E[2m, clear=\E[2J,
- cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM,
- dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l, home=\E[H,
- ht=^I, hts=\EH, if=/usr/share/tabset/vt100, il=\E[%p1%dL,
- ind=\ED, kbs=^H, kclr=\E[J, 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, 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,
- 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,
- 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,
- 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,
- use=z29a,
+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,
+ 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,
+ dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l, home=\E[H,
+ ht=^I, hts=\EH, if=/usr/share/tabset/vt100, il=\E[%p1%dL,
+ ind=\ED, kbs=^H, kclr=\E[J, 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, 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,
+ 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,
+ 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,
+ 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,
+ 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,
- am, eslok, hs, mc5i, mir, msgr, xon,
- 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,
- 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,
- 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,
- kf8=\EOR, kf9=\EOX, khlp=\E[~, khome=\E[H, ll=\E[24;1H,
- mc0=\E[?19h\E[i, mc4=\E[4i, mc5=\E[5i, rc=\E[u, rev=\E[7m,
- rmacs=\E(B, rmir=\E[4l, rmkx=\E[>7l, rmso=\E[0m,
- rmul=\E[0m, rs2=\E<\Ec\0, sc=\E[s, sgr0=\E[0m, smacs=\E(0,
- smir=\E[4h, smkx=\E[>7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
- tsl=\E[s\E[>1h\E[25;%i%p1%dH,
+z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode,
+ am, eslok, hs, mc5i, mir, msgr, xon,
+ 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,
+ 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,
+ 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,
+ kf8=\EOR, kf9=\EOX, khlp=\E[~, khome=\E[H, ll=\E[24;1H,
+ mc0=\E[?19h\E[i, mc4=\E[4i, mc5=\E[5i, rc=\E[u, rev=\E[7m,
+ rmacs=\E(B, rmir=\E[4l, rmkx=\E[>7l, rmso=\E[0m,
+ rmul=\E[0m, rs2=\E<\Ec\0, sc=\E[s, sgr0=\E[0m, smacs=\E(0,
+ smir=\E[4h, smkx=\E[>7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+ tsl=\E[s\E[>1h\E[25;%i%p1%dH,
# From: Brad Brahms <Brahms@USC-ECLC>
-z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor,
- cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, use=z100bw,
+z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor,
+ cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, use=z100bw,
# (z100bw: removed obsolete ":kn#10:", added empty <acsc> -- esr)
-z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc,
- OTbs, OTpt, mir, msgr,
- OTkn#10, cols#80, it#8, lines#24,
- acsc=, clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB,
- cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>,
- cuu1=\EA, cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>,
- ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H,
- kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\EJ, kf1=\ES,
- kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
- kf9=\EOI, khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq,
- smacs=\EF, smir=\E@, smso=\Ep,
-p19|h19-b with il1/dl1,
- dl1=\EM$<2*/>, il1=\EL$<2*/>, use=h19-b,
+z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc,
+ OTbs, OTpt, mir, msgr,
+ OTkn#10, cols#80, it#8, lines#24,
+ acsc=, clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB,
+ cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>,
+ cuu1=\EA, cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>,
+ ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H,
+ kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\EJ, kf1=\ES,
+ kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER,
+ kf9=\EOI, khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq,
+ smacs=\EF, smir=\E@, smso=\Ep,
+p19|h19-b with il1/dl1,
+ dl1=\EM$<2*/>, il1=\EL$<2*/>, use=h19-b,
# From: <ucscc!B.fiatlux@ucbvax.berkeley.edu>
# (ztx: removed duplicate :sr: -- esr)
-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,
- 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>,
- kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\ES,
- kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP, kf6=\EQ, kf7=\ER,
- ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5, smul=\Es2,
- tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
+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,
+ 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>,
+ kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\ES,
+ kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP, kf6=\EQ, kf7=\ER,
+ ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5, smul=\Es2,
+ tsl=\Ej\Ex5\Ex1\EY8%+ \Eo,
#### IMS International (ims)
#
-# There was a company called IMS International located in Carson City,
+# There was a company called IMS International located in Carson City,
# Nevada, that flourished from the mid-70s to mid-80s. They made S-100
-# bus/Z80 hardware and a line of terminals called Ultimas.
+# bus/Z80 hardware and a line of terminals called Ultimas.
#
# From: Erik Fair <fair@ucbarpa.berkeley.edu> Sun Oct 27 07:21:05 1985
-ims950-b|bare ims950 no init string,
- is2@, use=ims950,
+ims950-b|bare ims950 no init string,
+ is2@, use=ims950,
# (ims950: removed obsolete ":ko@:" -- esr)
-ims950|ims televideo 950 emulation,
- xenl@,
- flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
- kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950,
+ims950|ims televideo 950 emulation,
+ xenl@,
+ flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
+ kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950,
# (ims950-rv: removed obsolete ":ko@:" -- esr)
-ims950-rv|ims tvi950 rev video,
- xenl@,
- flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
- kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv,
-ims-ansi|ultima2|ultimaII|IMS Ultima II,
- OTbs, am,
- cols#80, it#8, lines#24,
- clear=\E[H\E[2J, cub1=^H, cud1=\ED,
- cup=\E[%i%p1%2d;%p2%2dH, cuu1=\EM, ed=\E[0J, el=\E[0K,
- ht=^I, if=/usr/share/tabset/vt100,
- is2=\E[m\E[>14l\E[?1;?5;20l\E>\E[1m\r, kcub1=\E[D,
- kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, ri=\EM,
- rmso=\E[m\E[1m, rmul=\E[m\E[1m, sgr0=\E[m, smso=\E[7m,
- smul=\E[4m,
+ims950-rv|ims tvi950 rev video,
+ xenl@,
+ flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@,
+ kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv,
+ims-ansi|ultima2|ultimaII|IMS Ultima II,
+ OTbs, am,
+ cols#80, it#8, lines#24,
+ clear=\E[H\E[2J, cub1=^H, cud1=\ED,
+ cup=\E[%i%p1%2d;%p2%2dH, cuu1=\EM, ed=\E[0J, el=\E[0K,
+ ht=^I, if=/usr/share/tabset/vt100,
+ is2=\E[m\E[>14l\E[?1;?5;20l\E>\E[1m\r, kcub1=\E[D,
+ kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, ri=\EM,
+ rmso=\E[m\E[1m, rmul=\E[m\E[1m, sgr0=\E[m, smso=\E[7m,
+ smul=\E[4m,
#### Intertec Data Systems
#
@@ -16793,30 +18347,30 @@ ims-ansi|ultima2|ultimaII|IMS Ultima II,
# then sank out of sight.
#
-superbrain|intertec superbrain,
- OTbs, am, bw,
- cols#80, lines#24,
- OTbc=^U, bel=^G, clear=\014$<5*>, cr=^M, cub1=^H, cud1=^J,
- cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K,
- ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=^J, kcub1=^U,
- kcud1=^J, kcuf1=^F, kcuu1=^K, rmcup=^L, smcup=^L,
-# (intertube: a Gould entry via BRL asserted smul=\E0@$<200/>,
+superbrain|intertec superbrain,
+ OTbs, am, bw,
+ cols#80, lines#24,
+ OTbc=^U, bel=^G, clear=\014$<5*>, cr=^M, cub1=^H, cud1=^J,
+ cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K,
+ ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=^J, kcub1=^U,
+ kcud1=^J, kcuf1=^F, kcuu1=^K, rmcup=^L, smcup=^L,
+# (intertube: a Gould entry via BRL asserted smul=\E0@$<200/>,
# rmul=\E0A$<200/>; my guess is the highlight letter is bit-coded like an ADM,
# and the reverse is actually true. Try it. -- esr)
-intertube|intertec|Intertec InterTube,
- OTbs, am,
- cols#80, lines#25,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A,
- ind=^J, rmso=\E0@, smso=\E0P,
+intertube|intertec|Intertec InterTube,
+ OTbs, am,
+ cols#80, lines#25,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A,
+ ind=^J, 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
-intertube2|intertec data systems intertube 2,
- OTbs,
- cup=\016%p1%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c,
- el=\EK, hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c,
- ll=^K^X\r, vpa=\013%p1%c, use=intertube,
+intertube2|intertec data systems intertube 2,
+ OTbs,
+ cup=\016%p1%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c,
+ el=\EK, hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c,
+ ll=^K^X\r, vpa=\013%p1%c, use=intertube,
#### Ithaca Intersystems
#
@@ -16831,30 +18385,30 @@ intertube2|intertec data systems intertube 2,
#
# The Graphos III was a color graphics terminal from Ithaca Intersystems.
-# These entries were written (originally in termcap syntax) by Brian Yandell
-# <yandell@stat.wisc.edu> and Mike Meyer <mikem@stat.wisc.edu> at the
+# These entries were written (originally in termcap syntax) by Brian Yandell
+# <yandell@stat.wisc.edu> and Mike Meyer <mikem@stat.wisc.edu> at the
# University of Wisconsin.
-# (graphos: removed obsolete and syntactically incorrect :kn=4:,
-# removed <if=/usr/share/tabset/init.graphos> and
+# (graphos: removed obsolete and syntactically incorrect :kn=4:,
+# removed <if=/usr/share/tabset/init.graphos> and
# <rf=/usr/share/tabset/init.graphos> no such file & no <hts> -- esr)
-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,
- 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,
- 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,
- lines#30,
- cvvis=\Ez4;2;1z\Ez56;2;80;30z, use=graphos,
+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,
+ 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,
+ 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,
+ lines#30,
+ cvvis=\Ez4;2;1z\Ez56;2;80;30z, use=graphos,
#### Modgraph
#
@@ -16866,7 +18420,7 @@ graphos-30|graphos III with 30 lines,
# Vox: (617)-890-5796.
#
# However, if you call that number today you'll get an insurance company.
-# I have mail from "Michael Berman, V.P. Sales, Modgraph" dated
+# I have mail from "Michael Berman, V.P. Sales, Modgraph" dated
# 26 Feb 1997 that says:
#
# Modgraph GX-1000, replaced by GX-2000. Both are out of production, have been
@@ -16879,21 +18433,21 @@ graphos-30|graphos III with 30 lines,
# graphics and DEC VT100/VT52 + ADM-3A emulation with a VT220-style keyboard.
#
-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,
+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,
# 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,
- cols#80, it#8, lines#24,
- clear=\EH\EJ$<50/>, cub1=^H, 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,
- ri=\EI$<5/>,
+modgraph2|modgraph gx-1000 80x24 with keypad not enabled,
+ am, da, db,
+ cols#80, it#8, lines#24,
+ clear=\EH\EJ$<50/>, cub1=^H, 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,
+ ri=\EI$<5/>,
#
# Modgraph from Nancy L. Cider <nancyc@brl-tbd>
# BUG NOTE from Barbara E. Ringers <barb@brl-tbd>:
@@ -16907,22 +18461,22 @@ modgraph2|modgraph gx-1000 80x24 with keypad not enabled,
# with TERM=mod and screen set to 80x48 but it's not obvious. Only
# the first line disappears but a ctrl-l shows that it did work
# correctly.
-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,
- 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,
- kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m,
- ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
- rs1=\E=\E[0q\E>, sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=,
- smso=\E[7m, smul=\E[4m,
+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,
+ 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,
+ kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m,
+ ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+ rs1=\E=\E[0q\E>, sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=,
+ smso=\E[7m, smul=\E[4m,
#### Morrow Designs
-#
+#
# This was George Morrow's company. They started in the late 1970s making
# S100-bus machines. They used to be reachable at:
#
@@ -16933,51 +18487,51 @@ modgraph48|mod|Modgraph w/48 lines,
# but they're long gone now (1995).
#
-# The mt70 terminal was shipped with the Morrow MD-3 microcomputer.
+# The mt70 terminal was shipped with the Morrow MD-3 microcomputer.
# Jeff's specimen was dated June 1984.
# From: Jeff Wieland <wieland@acn.purdue.edu> 24 Feb 1995
-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>,
- 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,
- 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,
- 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,
- kf8=^AG\r, kf9=^AH\r, khlp=^AO\r, khome=^AN\r, nel=^_,
- rmacs=\E%%, rmcup=, smacs=\E$, smcup=\E"2\EG0\E],
- smul=\EG1, tbc=\E0, use=adm+sgr,
+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>,
+ 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,
+ 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,
+ 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,
+ kf8=^AG\r, kf9=^AH\r, khlp=^AO\r, khome=^AN\r, nel=^_,
+ rmacs=\E%%, rmcup=, smacs=\E$, smcup=\E"2\EG0\E],
+ smul=\EG1, tbc=\E0, use=adm+sgr,
#### Motorola
#
# Motorola EXORterm 155 from {decvax, ihnp4}!philabs!sbcs!megad!seth via BRL
# (Seth H Zirin)
-ex155|Motorola Exorterm 155,
- OTbs, am, bw,
- OTkn#5, OTug#1, cols#80, lines#24,
- cbt=\E[, clear=\EX, cud1=\EB, cuf1=\ED,
- cup=\EE%p1%{32}%+%c%p2%{32}%+%c, ed=\ET, el=\EU,
- home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H,
- kcud1=^J, kcuf1=^L, kcuu1=^K, ked=\ET, kel=\EU, khome=\E@,
- rmso=\Ec\ED, rmul=\Eg\ED, smso=\Eb\ED, smul=\Ef\ED,
+ex155|Motorola Exorterm 155,
+ OTbs, am, bw,
+ OTkn#5, OTug#1, cols#80, lines#24,
+ cbt=\E[, clear=\EX, cud1=\EB, cuf1=\ED,
+ cup=\EE%p1%{32}%+%c%p2%{32}%+%c, ed=\ET, el=\EU,
+ home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H,
+ kcud1=^J, kcuf1=^L, kcuu1=^K, ked=\ET, kel=\EU, khome=\E@,
+ rmso=\Ec\ED, rmul=\Eg\ED, smso=\Eb\ED, smul=\Ef\ED,
#### Omron
#
# This company is still around in 1995, manufacturing point-of-sale systems.
-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,
- cvvis=\EN, dch1=\EP, dl1=\EM, ed=\ER, el=\EK, home=\EH,
- il1=\EL, ind=\ES, ri=\ET, rmso=\E4, smso=\Ef,
+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,
+ cvvis=\EN, dch1=\EP, dl1=\EM, ed=\ER, el=\EK, home=\EH,
+ il1=\EL, ind=\ES, ri=\ET, rmso=\E4, smso=\Ef,
#### Ramtek
#
@@ -16996,37 +18550,37 @@ omron|Omron 8025AG,
# "reset", "tset", or "tabs" utilities (use rt6221-w, 160 columns, for this).
# Note that the Control-E key is useless on this brain-damaged terminal. No
# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
-rt6221|Ramtek 6221 80x24,
- OTbs, OTpt, msgr, xon,
- OTkn#4, cols#80, it#8, lines#24, vt#3,
- acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[>5l,
- clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- 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,
- 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>,
- sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g,
+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,
+ 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,
+ 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>,
+ 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)].
-rt6221-w|Ramtek 6221 160x48,
- cols#160, lines#48,
- ll=\E[48;1H, use=rt6221,
+rt6221-w|Ramtek 6221 160x48,
+ cols#160, lines#48,
+ ll=\E[48;1H, use=rt6221,
#### RCA
#
# RCA VP3301 or VP3501
-rca|rca vp3301/vp3501,
- OTbs,
- cols#40, lines#24,
- clear=^L, cuf1=^U, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
- cuu1=^K, home=^Z, rmso=\E\ES0, smso=\E\ES1,
+rca|rca vp3301/vp3501,
+ OTbs,
+ cols#40, lines#24,
+ clear=^L, cuf1=^U, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+ cuu1=^K, home=^Z, rmso=\E\ES0, smso=\E\ES1,
#### Selanar
@@ -17044,37 +18598,37 @@ rca|rca vp3301/vp3501,
# communication requirements. No delays are specified; use "stty ixon -ixany"
# to enable DC3/DC1 flow control!
# I commented out the scrolling capabilities since they are too slow.
-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,
- 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, il=\E[%p1%dL, il1=\E[L, is2=\E<\E)0, kbs=^H,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP,
- kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3,
- 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>,
- 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,
- cols#132, use=hirez100,
+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,
+ 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, il=\E[%p1%dL, il1=\E[L, is2=\E<\E)0, kbs=^H,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOP,
+ kf1=\EOQ, kf2=\EOR, kf3=\EOS, lf0=PF1, lf1=PF2, lf2=PF3,
+ 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>,
+ 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,
+ cols#132, use=hirez100,
#### Signetics
#
# From University of Wisconsin
-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,
- 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,
- rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, smul=^_",
+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,
+ 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,
+ rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, smul=^_",
#### Soroc
#
@@ -17085,48 +18639,48 @@ vsc|Signetics Vsc Video driver by RMC,
# consisted of a circle with a slightly smaller 15 degree (approx.)
# wedge with rounded corners inside it. The color was sort of
# a metallic gold/yellow.
-#
+#
# If I had been more of a beer drinker it might have been obvious
# to me, but it took a clue from their service department to make
# me exclaim, "Of course!" The circular object was the top of
# a beer can (the old removable pop-top style) and "Soroc" was an
# anagram for "Coors".
-#
+#
# I can just imagine the founders of the company sitting around
# one evening, tossing back a few and trying to decide what to
# call their new company and what to use for a logo.
-#
+#
# (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr)
-soroc120|iq120|soroc|soroc iq120,
- clear=\E*$<2>, cud1=^J, ed=\EY, el=\ET, kcub1=^H, kcud1=^J,
- kcuf1=^L, kcuu1=^K, use=adm3a,
-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,
- 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,
- 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,
+soroc120|iq120|soroc|soroc iq120,
+ clear=\E*$<2>, cud1=^J, ed=\EY, el=\ET, kcub1=^H, kcud1=^J,
+ 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,
+ 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,
+ 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,
#### Southwest Technical Products
#
-# These guys made an early personal micro called the M6800.
+# These guys made an early personal micro called the M6800.
# The ct82 was probably its console terminal.
#
# (swtp: removed obsolete ":bc=^D:" -- esr)
-swtp|ct82|southwest technical products ct82,
- am,
- cols#82, lines#20,
- bel=^G, clear=^L, cr=^M, cub1=^D, cud1=^J, 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,
- ll=^C, ri=^O, rmso=^^^F, smso=^^^V,
+swtp|ct82|southwest technical products ct82,
+ am,
+ cols#82, lines#20,
+ bel=^G, clear=^L, cr=^M, cub1=^D, cud1=^J, 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,
+ ll=^C, ri=^O, rmso=^^^F, smso=^^^V,
#### Synertek
#
@@ -17154,7 +18708,7 @@ swtp|ct82|southwest technical products ct82,
# CRT). It wasn't much different from the KTM-2 hardware-wise, but the
# control and escape sequences are very different. The KTM-3 was always
# real broken, at least according to the folks I've talked to about it.
-#
+#
# The padding in the entry is probably off--these terminals were very
# slow (it takes like 100ms for the KTM-2 to clear the screen...) And
# anyone with any sanity replaced the ROMs with something that provided
@@ -17162,7 +18716,7 @@ swtp|ct82|southwest technical products ct82,
# obviously very primitive... oh, you could get an upgraded ROM from
# Synertek for some incredible amount of money, but what hacker with an
# EPROM burner would do that? :)
-#
+#
# Sorry I don't have any contact info; I believe they were located in
# Sunnyvale, and I'm fairly sure they are still manufacturing ICs
# (they've gone to ASICs and FPGAs), but I doubt they're in the computer
@@ -17170,11 +18724,11 @@ swtp|ct82|southwest technical products ct82,
#
# Tested, seems to work fine with vi.
-synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal,
- am,
- cols#80, lines#24,
- clear=^Z, cub1=^H, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,
+synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal,
+ am,
+ cols#80, lines#24,
+ clear=^Z, cub1=^H, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,
#### Tab Office Products
#
@@ -17191,19 +18745,19 @@ synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal,
# Seems to be no way to get rid of status line.
# The manual for this puppy was dated June 1981. It claims to be VT52-
# compatible but looks more vt100-like.
-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,
- 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,
-tab132-w|tab132 in wide mode,
- cols#132,
- is2=\E[?7h\E[?3h\E[?5l, use=tab132,
-tab132-rv|tab132 in reverse-video mode,
- is2=\E[?7h\E[?3l\E[?5h, use=tab132,
-tab132-w-rv|tab132 in reverse-video/wide mode,
- is2=\E[?7h\E[?3h\E[?5h, use=tab132-w,
+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,
+ 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,
+tab132-w|tab132 in wide mode,
+ cols#132,
+ is2=\E[?7h\E[?3h\E[?5l, use=tab132,
+tab132-rv|tab132 in reverse-video mode,
+ is2=\E[?7h\E[?3l\E[?5h, use=tab132,
+tab132-w-rv|tab132 in reverse-video/wide mode,
+ is2=\E[?7h\E[?3h\E[?5h, use=tab132-w,
#### Teleray
@@ -17224,29 +18778,29 @@ tab132-w-rv|tab132 in reverse-video/wide mode,
# on the bottom and no obvious model number is probably a 3700.
#
-t3700|dumb teleray 3700,
- OTbs,
- cols#80, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ind=^J,
-t3800|teleray 3800 series,
- OTbs,
- cols#80, it#8, lines#24,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,
- home=\EH, ht=^I, ind=^J, ll=\EY7\s,
-t1061|teleray|teleray 1061,
- OTbs, am, km, xhp, xt,
- cols#80, it#8, lines#24, xmc#1,
- bel=^G, clear=\014$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
- 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,
- 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,
-t1061f|teleray 1061 with fast PROMs,
- dl1=\EM, il1=\EL, ip@, use=t1061,
+t3700|dumb teleray 3700,
+ OTbs,
+ cols#80, lines#24,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ind=^J,
+t3800|teleray 3800 series,
+ OTbs,
+ cols#80, it#8, lines#24,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK,
+ home=\EH, ht=^I, ind=^J, ll=\EY7\s,
+t1061|teleray|teleray 1061,
+ OTbs, am, km, xhp, xt,
+ cols#80, it#8, lines#24, xmc#1,
+ bel=^G, clear=\014$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
+ 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,
+ 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,
+t1061f|teleray 1061 with fast PROMs,
+ dl1=\EM, il1=\EL, ip@, use=t1061,
# "Teleray Arpa Special", officially designated as
# "Teleray Arpa network model 10" with "Special feature 720".
# This is the new (1981) fast microcode updating the older "arpa" proms
@@ -17257,30 +18811,30 @@ t1061f|teleray 1061 with fast PROMs,
# Note: this is NOT the old termcap's "t1061f with fast proms."
# From: J. Lepreau <lepreau@utah-cs> Tue Feb 1 06:39:37 1983, Univ of Utah
# (t10: removed overridden ":so@:se@:us@:ue@:" -- esr)
-t10|teleray 10 special,
- OTbs, km, xhp, xt,
- cols#80, it#8, lines#24, xmc#2,
- clear=\Ej$<30/>, cub1=^H, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
- dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL,
- ind=\Eq, pad=\0, ri=\Ep, rmso=\ER@, rmul=\ER@, smso=\ERD,
- smul=\ERH,
+t10|teleray 10 special,
+ OTbs, km, xhp, xt,
+ cols#80, it#8, lines#24, xmc#2,
+ clear=\Ej$<30/>, cub1=^H, cuf1=\EC,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
+ dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL,
+ ind=\Eq, pad=\0, ri=\Ep, rmso=\ER@, rmul=\ER@, smso=\ERD,
+ smul=\ERH,
# teleray 16 - map the arrow keys for vi/rogue, shifted to up/down page, and
# back/forth words. Put the function keys (f1-f10) where they can be
# found, and turn off the other magic keys along the top row, except
# for line/local. Do the magic appropriate to make the page shifts work.
# Also toggle ^S/^Q for those of us who use Emacs.
-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,
- 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,
- 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,
- smso=\E[7m, smul=\E[4m,
+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,
+ 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,
+ 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,
+ smso=\E[7m, smul=\E[4m,
#### Texas Instruments (ti)
#
@@ -17288,204 +18842,204 @@ t16|teleray 16,
# The Silent 700 was so called because it was built around a quiet thermal
# printer. It was portable, equipped with an acoustic coupler, and pretty
# neat for its day.
-ti700|ti733|ti735|ti745|ti800|ti silent 700/733/735/745 or omni 800,
- OTbs, hc, os,
- cols#80,
- bel=^G, cr=\r$<162>, cub1=^H, cud1=^J, ind=^J,
+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,
#
# Texas Instruments 916 VDT 7 bit control mode
#
-ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL,
- da, db, in, msgr,
- cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[2J$<6>,
- cnorm=\E[?25h, cub=\E[%p1%dD, cud=\E[%p1%dB,
- cuf=\E[%p1%dC, cup=\E[%p1%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
- cvvis=\E[?25h, dch=\E[%p1%dP$<250>, dch1=\E[P,
- dl=\E[%p1%dM, ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K,
- el1=\E[1K, 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~,
- 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,
- kprt=^X, prot=\E&, rmacs=\017$<2>, rs2=\E[!p,
- smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
- use=vt220,
+ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL,
+ da, db, in, msgr,
+ cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[2J$<6>,
+ cnorm=\E[?25h, cub=\E[%p1%dD, cud=\E[%p1%dB,
+ cuf=\E[%p1%dC, cup=\E[%p1%i%p1%d;%p2%dH, cuu=\E[%p1%dA,
+ dch=\E[%p1%dP$<250>, dch1=\E[P, dl=\E[%p1%dM,
+ ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K, el1=\E[1K,
+ 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~,
+ 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,
+ kprt=^X, prot=\E&, rmacs=\017$<2>, rs2=\E[!p, sgr@,
+ smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
+ use=vt220,
#
# Texas Instruments 916 VDT 8 bit control mode
#
-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~,
- kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~,
- kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
- kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H,
- kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916,
+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~,
+ kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~,
+ kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~,
+ kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H,
+ kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916,
#
# Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode
#
-ti916-132|Texas Instruments 916 VDT vt220 132 column,
- cols#132, use=ti916,
+ti916-132|Texas Instruments 916 VDT vt220 132 column,
+ cols#132, use=ti916,
#
# Texas Instruments 916 VDT 8859/1 8 bit control 132 column mode
#
-ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column,
- cols#132, use=ti916-8,
-ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL,
- 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,
- 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=\E[P, kf1=\EOP, kf2=\EOQ,
- kf3=\EOR, kf4=\EOS, kf5=\E[16~, kf6=\E[17~, kf7=\E[18~,
- kf8=\E[19~, kf9=\E[20~, kich1=\E[@, 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,
-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,
- 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,
-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,
- cols#132, use=ti924-8,
-ti931|Texas Instruments 931 VDT,
- OTbs, am, xon,
- cols#80, lines#24,
- bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=^M, cub1=\ED,
- cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
- cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
- ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H,
- is2=\EGB\E(@B@@\E), kcub1=\ED, kcud1=\EB, kcuf1=\EC,
- kcuu1=\EA, kdch1=\EQ, kdl1=\EO, kf1=\Ei1, kf2=\Ei2, kf3=\Ei3,
- kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7, kf8=\Ei8, kf9=\Ei9,
- kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@,
- sgr0=\E4@, smso=\E4A, smul=\E4D,
-ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL,
- csr@, ind=\E[1S, ri=\E[1T, use=ti924,
+ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column,
+ cols#132, use=ti916-8,
+ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL,
+ 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,
+ 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=\E[P, kf1=\EOP, kf2=\EOQ,
+ kf3=\EOR, kf4=\EOS, kf5=\E[16~, kf6=\E[17~, kf7=\E[18~,
+ kf8=\E[19~, kf9=\E[20~, kich1=\E[@, 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,
+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,
+ 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,
+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,
+ cols#132, use=ti924-8,
+ti931|Texas Instruments 931 VDT,
+ OTbs, am, xon,
+ cols#80, lines#24,
+ bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=^M, cub1=\ED,
+ cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+ cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH,
+ ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H,
+ is2=\EGB\E(@B@@\E), kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, kdch1=\EQ, kdl1=\EO, kf1=\Ei1, kf2=\Ei2, kf3=\Ei3,
+ kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7, kf8=\Ei8, kf9=\Ei9,
+ kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@,
+ sgr0=\E4@, smso=\E4A, smul=\E4D,
+ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL,
+ csr@, ind=\E[1S, ri=\E[1T, use=ti924,
# (ti926-8: I corrected this from the broken SCO entry -- esr)
-ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL,
- csr@, ind=\2331S, ri=\2331T, use=ti924-8,
-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,
- cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
- dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
- il1=\E[L, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kend=\E[F, kf0=\E[V, kf1=\E[M,
- kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S,
- kf8=\E[T, kf9=\E[U, khome=\E[H, knp=\E[G, kpp=\E[I,
- op=\E[37;40m, ri=\E[T, rmso=\E[m, rmul=\E[m,
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
- smso=\E[7m, smul=\E[4m,
+ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL,
+ csr@, ind=\2331S, ri=\2331T, use=ti924-8,
+ti_ansi|basic entry for ti928,
+ am, bce, eo, xenl, xon,
+ colors#8, cols#80, it#8, lines#25, pairs#64,
+ 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,
+ cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P,
+ dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@,
+ il1=\E[L, ind=\E[S, kbs=^H, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kend=\E[F, kf0=\E[V, kf1=\E[M,
+ kf2=\E[N, kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S,
+ kf8=\E[T, kf9=\E[U, khome=\E[H, knp=\E[G, kpp=\E[I,
+ op=\E[37;40m, ri=\E[T, rmso=\E[m, rmul=\E[m,
+ setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
+ smso=\E[7m, smul=\E[4m,
#
# 928 VDT 7 bit control mode
#
-ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL,
- kdch1=\E[P, kend=\E_1\E\\, kent=\E[8~, kf1=\E[17~,
- kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, kf13=\E[32~,
- kf15=\E[34~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~,
- kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~,
- kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi,
+ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL,
+ kdch1=\E[P, kend=\E_1\E\\, kent=\E[8~, kf1=\E[17~,
+ kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, kf13=\E[32~,
+ kf15=\E[34~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~,
+ kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~,
+ kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi,
#
# 928 VDT 8 bit control mode
#
-ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL,
- kdch1=\233P, kend=\2371\234, kent=\2338~, kf1=\23317~,
- kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13=\23332~,
- kf15=\23334~, kf2=\23318~, kf3=\23319~, kf4=\23320~,
- kf5=\23321~, kf6=\23323~, kf7=\23324~, kf8=\23325~,
- kf9=\23326~, khome=\233H, kich1=\233@, knp=\233S,
- kpp=\233T, kprt=\23335~, use=ti_ansi,
+ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL,
+ kdch1=\233P, kend=\2371\234, kent=\2338~, kf1=\23317~,
+ kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13=\23332~,
+ kf15=\23334~, kf2=\23318~, kf3=\23319~, kf4=\23320~,
+ kf5=\23321~, kf6=\23323~, kf7=\23324~, kf8=\23325~,
+ kf9=\23326~, khome=\233H, kich1=\233@, knp=\233S,
+ kpp=\233T, kprt=\23335~, use=ti_ansi,
#### Zentec (zen)
#
# (zen30: removed obsolete :ma=^L ^R^L^K^P:. This entry originally
-# had just <smso>=\EG6 which I think means standout was supposed to be
+# had just <smso>=\EG6 which I think means standout was supposed to be
# dim-reverse using ADM12-style attributes. ADM12 <smul>/<rmul> and
# <invis> might work-- esr)
-zen30|z30|zentec 30,
- OTbs, am, mir, ul,
- cols#80, lines#24,
- bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
- dim=\EG2, dl1=\ER$<1.5*>, ed=\EY, el=\ET$<1.0*>, home=^^,
- il1=\EE$<1.5*>, ind=^J, rmir=\Er, rmul@, smir=\Eq, smso=\EG6,
- smul@, use=adm+sgr,
+zen30|z30|zentec 30,
+ OTbs, am, mir, ul,
+ cols#80, lines#24,
+ bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW,
+ dim=\EG2, dl1=\ER$<1.5*>, ed=\EY, el=\ET$<1.0*>, home=^^,
+ il1=\EE$<1.5*>, ind=^J, rmir=\Er, rmul@, smir=\Eq, smso=\EG6,
+ smul@, use=adm+sgr,
# (zen50: this had extension capabilities
# :BS=^U:CL=^V:CR=^B:
# UK/DK/RK/LK/HM were someone's aliases for ku/kd/kl/kr/kh,
# which were also in the original entry -- esr)
# (zen50: removed obsolete ":ma=^Hh^Ll^Jj^Kk:" -- esr)
-zen50|z50|zentec zephyr,
- OTbs, am,
- cols#80, lines#24, xmc#1,
- clear=\E+, cub1=^H, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
- cuu1=^K, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ich1=\EQ, il1=\EE,
- invis@, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
- rmul@, smul@, use=adm+sgr,
+zen50|z50|zentec zephyr,
+ OTbs, am,
+ cols#80, lines#24, xmc#1,
+ clear=\E+, cub1=^H, cup=\E=%p1%{32}%+%c%p2%{32}%+%c,
+ cuu1=^K, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ich1=\EQ, il1=\EE,
+ invis@, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
+ rmul@, smul@, use=adm+sgr,
# CCI 4574 (Office Power) from Will Martin <wmartin@BRL.ARPA> via BRL
-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,
- 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,
- kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, mc4=^T, mc5=^R,
- rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s, sgr0=\EM\s,
- smso=\EM$, smul=\EM0,
+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,
+ 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,
+ kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, mc4=^T, mc5=^R,
+ rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s, sgr0=\EM\s,
+ smso=\EM$, smul=\EM0,
######## OBSOLETE UNIX CONSOLES
#
#### Apollo consoles
#
-# Apollo got bought by Hewlett-Packard. The Apollo workstations are
+# Apollo got bought by Hewlett-Packard. The Apollo workstations are
# labeled HP700s now.
#
# From: Gary Darland <goodmanc@garnet.berkeley.edu>
-apollo|apollo console,
- OTbs, am, mir,
- cols#88, lines#53,
- clear=^L, cub1=^H, cud1=\EB, cuf1=\EC,
- cup=\EM%p1%{32}%+%c%p2%d), cuu1=\EA, dch1=\EP, dl1=\EL,
- ed=\EJ, el=\EK, hpa=\EN%p1%d, il1=\EI, ind=\EE, ri=\ED,
- rmcup=\EX, rmir=\ER, rmso=\ET, rmul=\EV, smcup=\EW, smir=\EQ,
- smso=\ES, smul=\EU, vpa=\EO+\s,
+apollo|apollo console,
+ OTbs, am, mir,
+ cols#88, lines#53,
+ clear=^L, cub1=^H, cud1=\EB, cuf1=\EC,
+ cup=\EM%p1%{32}%+%c%p2%d), cuu1=\EA, dch1=\EP, dl1=\EL,
+ ed=\EJ, el=\EK, hpa=\EN%p1%d, il1=\EI, ind=\EE, ri=\ED,
+ rmcup=\EX, rmir=\ER, rmso=\ET, rmul=\EV, smcup=\EW, smir=\EQ,
+ smso=\ES, smul=\EU, vpa=\EO+\s,
# We don't know whether or not the apollo guys replicated DEC's firmware bug
# in the VT132 that reversed <rmir>/<smir>. To be on the safe side, disable
# both these capabilities.
-apollo_15P|apollo 15 inch display,
- rmir@, smir@, use=vt132,
-apollo_19L|apollo 19 inch display,
- rmir@, smir@, use=vt132,
-apollo_color|apollo color display,
- rmir@, smir@, use=vt132,
+apollo_15P|apollo 15 inch display,
+ rmir@, smir@, use=vt132,
+apollo_19L|apollo 19 inch display,
+ rmir@, smir@, use=vt132,
+apollo_color|apollo color display,
+ rmir@, smir@, use=vt132,
#### Convergent Technology
#
@@ -17496,24 +19050,24 @@ apollo_color|apollo color display,
# Convergent AWS workstation from Gould/SEL UTX/32 via BRL
# (aws: removed unknown :dn=^K: -- esr)
-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=,
- clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A,
- dch1=\EDC, dl1=\EDL, ed=\EEF, el=\EEL, hpa=\EH%p1%c,
- ich1=\EIC, il1=\EIL, ind=\ESU, kbs=^H, kcub1=^N, kcud1=^K,
- kcuf1=^R, kcuu1=^A, ri=\ESD, rmacs=\EAAF, rmso=\EARF,
- rmul=\EAUF, smacs=\EAAN, smso=\EARN, smul=\EAUN,
- vpa=\EV%p1%c,
-awsc|Convergent Technologies AWS workstation under CTOS,
- am,
- OTug#0, cols#80, lines#24, xmc#0,
- OTbc=^N, OTma=\016h\013j\001k\022l\002m, acsc=, clear=^L,
- cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, ed=\EEF,
- el=\EEL, kbs=^H, kcub1=^N, kcud1=^K, kcuf1=^R, kcuu1=^A,
- rmacs=\EAAF, rmso=\EAA, rmul=\EAA, smacs=\EAAN, smso=\EAE,
- smul=\EAC,
+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=,
+ clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A,
+ dch1=\EDC, dl1=\EDL, ed=\EEF, el=\EEL, hpa=\EH%p1%c,
+ ich1=\EIC, il1=\EIL, ind=\ESU, kbs=^H, kcub1=^N, kcud1=^K,
+ kcuf1=^R, kcuu1=^A, ri=\ESD, rmacs=\EAAF, rmso=\EARF,
+ rmul=\EAUF, smacs=\EAAN, smso=\EARN, smul=\EAUN,
+ vpa=\EV%p1%c,
+awsc|Convergent Technologies AWS workstation under CTOS,
+ am,
+ OTug#0, cols#80, lines#24, xmc#0,
+ OTbc=^N, OTma=\016h\013j\001k\022l\002m, acsc=, clear=^L,
+ cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, ed=\EEF,
+ el=\EEL, kbs=^H, kcub1=^N, kcud1=^K, kcuf1=^R, kcuu1=^A,
+ rmacs=\EAAF, rmso=\EAA, rmul=\EAA, smacs=\EAAN, smso=\EAE,
+ smul=\EAC,
#### DEC consoles
#
@@ -17526,11 +19080,11 @@ awsc|Convergent Technologies AWS workstation under CTOS,
# during bootup, it was in text mode, and probably had a terminal emulator
# within it. And that is what your termcap entry is for. In graphics
# mode the screen size is 1024x864 pixels.
-qdss|qdcons|qdss glass tty,
- OTbs, am,
- cols#128, lines#57,
- clear=\032$<1/>, cub1=^H, cud1=^J, cuf1=^L,
- cup=\E=%p1%c%p2%c, cuu1=^K,
+qdss|qdcons|qdss glass tty,
+ OTbs, am,
+ cols#128, lines#57,
+ clear=\032$<1/>, cub1=^H, cud1=^J, cuf1=^L,
+ cup=\E=%p1%c%p2%c, cuu1=^K,
#### Fortune Systems consoles
#
@@ -17551,25 +19105,25 @@ qdss|qdcons|qdss glass tty,
# to force both magic cookie glitches off. Once upon a time, I
# used a Fortune myself, so I know the capabilities of the form ^A[a-z]\r are
# function keys; thus the "Al" value for HM was certainly an error. I renamed
-# EN/PD/PU/CO/CF/RT according to the XENIX/TC mappings, but not HM/DL/RF/RC.
+# EN/PD/PU/CO/CF/RT according to the XENIX/TC mappings, but not HM/DL/RF/RC.
# I think :rv: and :re: are start/end reverse video and :rg: is a nonexistent
# "reverse-video-glitch" capability; I have put :rv: and :re: in with standard
# names below. I've removed obsolete ":nl=5^J:" as there is a :do: -- esr)
-fos|fortune|Fortune system,
- 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>,
- 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,
- 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,
- rmacs=^O, rmso=^\I`, rmul=^\IP, sgr0=\EI, smacs=\Eo,
- smso=^\H`, smul=^\HP,
+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>,
+ 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,
+ 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,
+ rmacs=^O, rmso=^\I`, rmul=^\IP, sgr0=\EI, smacs=\Eo,
+ smso=^\H`, smul=^\HP,
#### Masscomp consoles
#
@@ -17579,18 +19133,18 @@ fos|fortune|Fortune system,
#
# (masscomp: ":MT:" changed to ":km:"; -- esr)
-masscomp|masscomp workstation console,
- OTbs, km, mir,
- cols#80, it#8, lines#24,
- clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
- ed=\E[J, el=\E[K, ht=^I, il1=\E[L, is2=\EGc\EGb\EGw, kbs=^H,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmir=\E[4l,
- rmso=\E[m, rmul=\EGau, smir=\E[4h, smso=\E[7m, smul=\EGu,
-masscomp1|masscomp large screen version 1,
- cols#104, lines#36, use=masscomp,
-masscomp2|masscomp large screen version 2,
- cols#64, lines#21, use=masscomp,
+masscomp|masscomp workstation console,
+ OTbs, km, mir,
+ cols#80, it#8, lines#24,
+ clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+ ed=\E[J, el=\E[K, ht=^I, il1=\E[L, is2=\EGc\EGb\EGw, kbs=^H,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rmir=\E[4l,
+ rmso=\E[m, rmul=\EGau, smir=\E[4h, smso=\E[7m, smul=\EGu,
+masscomp1|masscomp large screen version 1,
+ cols#104, lines#36, use=masscomp,
+masscomp2|masscomp large screen version 2,
+ cols#64, lines#21, use=masscomp,
######## OTHER OBSOLETE TYPES
#
@@ -17602,15 +19156,15 @@ masscomp2|masscomp large screen version 2,
#
# CTRM terminal emulator
-# 1. underlining is not allowed with colors: first, is is simulated by
+# 1. underlining is not allowed with colors: first, is is simulated by
# black on white, second, it disables background color manipulations.
# 2. BLINKING, REVERSE and BOLD are allowed with colors,
# so we have to save their status in the static registers A, B and H
# respectively, to be able to restore them when color changes
# (because any color change turns off ALL attributes)
# 3. <bold> and <rev> sequences alternate modes,
-# rather then simply entering them. Thus we have to check the
-# static register B and H to determine the status, before sending the
+# rather than simply entering them. Thus we have to check the
+# static register B and H to determine the status, before sending the
# escape sequence.
# 4. <sgr0> now must set the status of all 3 register (A,B,H) to zero
# and then reset colors
@@ -17628,108 +19182,105 @@ masscomp2|masscomp large screen version 2,
# 3) turn on foreground attributes
# 4) store information about foreground into U,V,W static registers
# 8. turn on background: similar to turn on foreground above
-ctrm|C terminal emulator,
- am, bce, xon,
- colors#8, cols#80, lh#0, lines#24, lm#0, lw#0, ncv#2, nlab#0,
- 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,
- 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,
- 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,
- 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%;,
- 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,
+ctrm|C terminal emulator,
+ am, bce, xon,
+ colors#8, cols#80, lh#0, lines#24, lm#0, lw#0, ncv#2, nlab#0,
+ 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,
+ 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,
+ 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,
+ 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%;,
+ 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,
# gs6300 - can't use blue foreground, it clashes with underline;
# it's simulated with cyan
# Bug: The <op> capability probably resets attributes.
# (gs6300: commented out <rmln> (no <smln>) --esr)
-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,
- 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,
- 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,
- khome=\E[H, mc4=\E[4i, mc5=\E[5i, op=\E[?;m, rev=\E[7m,
- ri=\E[L, rmacs=\E[10m, rs1=\Ec, setb=\E[?;%p1%dm,
- setf=\E[?%?%p1%{0}%=%t0%e%p1%{1}%=%t2%e%p1%{1}%-%d%;m,
- sgr0=\E[m\E[10m, smacs=\E[11m, smso=\E[1m, smul=\E[4m,
+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,
+ 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,
+ 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,
+ khome=\E[H, mc4=\E[4i, mc5=\E[5i, op=\E[?;m, rev=\E[7m,
+ ri=\E[L, rmacs=\E[10m, rs1=\Ec, setb=\E[?;%p1%dm,
+ setf=\E[?%?%p1%{0}%=%t0%e%p1%{1}%=%t2%e%p1%{1}%-%d%;m,
+ sgr0=\E[m\E[10m, smacs=\E[11m, smso=\E[1m, smul=\E[4m,
# From: <earle@smeagol.UUCP> 29 Oct 85 05:40:18 GMT
# MS-Kermit with Heath-19 emulation mode enabled
# (h19k: changed ":pt@:" to ":it@"
-h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin),
- am@, da, db, xt,
- it@,
- ht@, use=h19-u,
+h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin),
+ am@, da, db, xt,
+ it@,
+ ht@, use=h19-u,
# Apple Macintosh with Versaterm, a terminal emulator distributed by Synergy
# 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,
- 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/>,
- 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/>,
- 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/>,
- smul=\E[4m$<2/>,
+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/>,
+ 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/>,
+ 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/>,
+ smul=\E[4m$<2/>,
# From: Rick Thomas <ihnp4!btlunix!rbt>
# (xtalk: I added <rmam>/<smam> based on the init string.
-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>,
- 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, ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=^H,
- kc1=\EOp, kc3=\EOn, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\EOx,
- kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt, kf6=\EOu, kf7=\EOv,
- kf8=\EOl, kf9=\EOw, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l,
- rmkx=\E[?1l\E>, rmso=\E[m\s,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m,
- smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s,
- tbc=\E[3g,
+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>,
+ 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,
+ 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,
+ smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s,
+ tbc=\E[3g, use=vt100+fnkeys,
# The official PC terminal emulator program of the AT&T Product Centers.
# Note - insert mode commented out - doesn't seem to work on AT&T PC.
-simterm|attpc running simterm,
- am,
- cols#80, lines#24,
- bel=^G, clear=\EH\EJ, cr=^M, 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,
- rmso=\E&d@, sgr0=\E&d@, smcup=\EVS, smso=\E&dB,
+simterm|attpc running simterm,
+ am,
+ cols#80, lines#24,
+ bel=^G, clear=\EH\EJ, cr=^M, 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,
+ rmso=\E&d@, sgr0=\E&d@, smcup=\EVS, smso=\E&dB,
#### Daisy wheel printers
#
@@ -17738,28 +19289,28 @@ simterm|attpc running simterm,
#
# (diablo1620: removed <if=/usr/share/tabset/xerox1720>, no such file -- esr)
-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,
- ht=^I, hts=\E1, hu=\EU, kbs=^H, tbc=\E2,
-diablo1620-m8|diablo1640-m8|diablo 1620 w/8 column left margin,
- cols#124,
- is2=\r \E9, use=diablo1620,
+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,
+ ht=^I, hts=\E1, hu=\EU, kbs=^H, tbc=\E2,
+diablo1620-m8|diablo1640-m8|diablo 1620 w/8 column left margin,
+ cols#124,
+ is2=\r \E9, use=diablo1620,
# (diablo1640: removed <if=/usr/share/tabset/xerox1730>, no such file -- esr)
-diablo1640|diablo1730|diablo1740|diablo630|x1700|diablo|xerox|diablo 1640,
- bel=^G, rmso=\E&, rmul=\ER, smso=\EW, smul=\EE,
- use=diablo1620,
-# (diablo1640-lm: removed <if=/usr/share/tabset/xerox1730-lm>, no such
+diablo1640|diablo1730|diablo1740|diablo630|x1700|diablo|xerox|diablo 1640,
+ bel=^G, rmso=\E&, rmul=\ER, smso=\EW, smul=\EE,
+ use=diablo1620,
+# (diablo1640-lm: removed <if=/usr/share/tabset/xerox1730-lm>, no such
# file -- esr)
-diablo1640-lm|diablo-lm|xerox-lm|diablo 1640 with indented left margin,
- cols#124,
- rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, use=diablo1620,
-diablo1740-lm|630-lm|1730-lm|x1700-lm|diablo 1740 printer,
- use=diablo1640-lm,
+diablo1640-lm|diablo-lm|xerox-lm|diablo 1640 with indented left margin,
+ cols#124,
+ rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, use=diablo1620,
+diablo1740-lm|630-lm|1730-lm|x1700-lm|diablo 1740 printer,
+ use=diablo1640-lm,
# DTC 382 with VDU. Has no <ed> so we fake it with <el>. Standout
# <smso=^P\s\002^PF> works but won't go away without dynamite <rmso=^P\s\0>.
-# The terminal has tabs, but I'm getting tired of fighting the braindamage.
+# The terminal has tabs, but I'm getting tired of fighting the braindamage.
# If no tab is set or the terminal's in a bad mood, it glitches the screen
# around all of memory. Note that return puts a blank ("a return character")
# in the space the cursor was at, so we use ^P return (and thus ^P newline for
@@ -17770,137 +19321,137 @@ diablo1740-lm|630-lm|1730-lm|x1700-lm|diablo 1740 printer,
# least one line with no tabs in it, and once you tab through that line,
# it completely weirds out.
# (dtc382: change <rmcup> to <smcup> -- it just does a clear --esr)
-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,
- 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,
-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,
-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,
-aj830|aj832|aj|anderson jacobson,
- hc, os,
- bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
- ind=^J,
+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,
+ 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,
+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,
+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,
+aj830|aj832|aj|anderson jacobson,
+ hc, os,
+ bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
+ ind=^J,
# 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=,
- il1=\E&I$<2*/>, ip=$<.1*/>, kcub1=\EW, kcud1=\EZ,
- kcuf1=\EX, kcuu1=\EY, pad=\177, rmcup=\E"N, rmir=\E'J,
- rmso=\E"I, rmul=\E"U, smcup=\E"N, smir=\E'I, smso=\E"I,
- smul=\E"U,
+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=,
+ il1=\E&I$<2*/>, ip=$<.1*/>, kcub1=\EW, kcud1=\EZ,
+ kcuf1=\EX, kcuu1=\EY, pad=\177, 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
# This is incomplete, but it's a start.
-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,
- 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,
+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,
+ 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,
# 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,
- tbc=\E2,
+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,
+ tbc=\E2,
#### Miscellaneous obsolete terminals, manufacturers unknown
#
-# If you have any information about these (like, a manufacturer's name,
+# If you have any information about these (like, a manufacturer's name,
# and a date on the serial-number plate) please send it!
-cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars,
- OTbs, am,
- cols#73, lines#36,
- clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^,
-cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars,
- OTbs, am,
- cols#85, lines#39,
- clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, kcub1=\E3,
- kcud1=\E2, kcuf1=\E4, kcuu1=\E1, kf1=\E5, kf2=\E6, kf3=\E7,
- kf4=\E8, rmso=\Em^C, smso=\Em^L,
-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,
- 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,
- khome=^Y,
+cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars,
+ OTbs, am,
+ cols#73, lines#36,
+ clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^,
+cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars,
+ OTbs, am,
+ cols#85, lines#39,
+ clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, kcub1=\E3,
+ kcud1=\E2, kcuf1=\E4, kcuu1=\E1, kf1=\E5, kf2=\E6, kf3=\E7,
+ kf4=\E8, rmso=\Em^C, smso=\Em^L,
+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,
+ 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,
+ 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,
- 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,
+d132|datagraphix|datagraphix 132a,
+ da, db, in,
+ cols#80, lines#30,
+ bel=^G, clear=^L, cnorm=\Em\En, cr=^M, cub1=^H, cud1=^J,
+ 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,
# 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
# emulations.
-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,
- 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,
- ri=\EM, rmacs=\E[m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
- smacs=\E[1m, smso=\E[7m, smul=\E[4m,
-digilog|digilog 333,
- OTbs,
- cols#80, lines#16,
- bel=^G, cr=^M, cub1=^H, cud1=^J, cuf1=^I, cuu1=^O, el=^X,
- home=^N, ind=^J,
+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,
+ 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,
+ ri=\EM, rmacs=\E[m, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+ smacs=\E[1m, smso=\E[7m, smul=\E[4m,
+digilog|digilog 333,
+ OTbs,
+ cols#80, lines#16,
+ bel=^G, cr=^M, cub1=^H, cud1=^J, cuf1=^I, cuu1=^O, el=^X,
+ home=^N, ind=^J,
# 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,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
- ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=^J, kbs=\177,
- kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee,
- kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5,
- 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,
- sgr0=\EX, smacs=\EF, smso=\ET,
-env230|envision230|envision 230 graphics terminal,
- xenl@,
- mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
- sgr=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>,
- use=vt100,
+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,
+ cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP,
+ ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=^J, kbs=\177,
+ kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee,
+ kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5,
+ 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,
+ sgr0=\EX, smacs=\EF, smso=\ET,
+env230|envision230|envision 230 graphics terminal,
+ xenl@,
+ mc0=\E[0i, mc4=\E[4i, mc5=\E[5i,
+ sgr=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>,
+ use=vt100,
# These execuports were impact-printer ttys with a 30- or maybe 15-cps acoustic
# coupler attached, the whole rig fitting in a suitcase and more or less
# portable. Hot stuff for c.1977 :-) -- esr
-ep48|ep4080|execuport 4080,
- OTbs, am, os,
- cols#80,
- bel=^G, cr=^M, cub1=^H, cud1=^J, hd=^\, hu=^^, ind=^J,
-ep40|ep4000|execuport 4000,
- cols#136, use=ep4080,
+ep48|ep4080|execuport 4080,
+ OTbs, am, os,
+ cols#80,
+ bel=^G, cr=^M, cub1=^H, cud1=^J, hd=^\, hu=^^, ind=^J,
+ep40|ep4000|execuport 4000,
+ cols#136, use=ep4080,
# Adam Thompson <athompso@pangea.ca> tells us:
# Informer series - these are all portable units, resembling older
# automatic bread-baking machines. The terminal looks like a `clamshell'
@@ -17913,49 +19464,49 @@ ep40|ep4000|execuport 4000,
# The 305 was a color version of the 304; the 306 and 307 were mono and
# color terminals built for IBM bisync protocols.
# From: Paul Leondis <unllab@amber.berkeley.edu>
-ifmr|Informer D304,
- OTbs, am,
- cols#80, lines#24,
- clear=\EZ, cub1=^H, cud1=^J, cuf1=\EC,
- cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\E\\,
- ed=\E/, el=\EQ, home=\EH, ich1=\E[, ri=\En, rmso=\EK, sgr0=\EK,
- smso=\EJ,
+ifmr|Informer D304,
+ OTbs, am,
+ cols#80, lines#24,
+ clear=\EZ, cub1=^H, cud1=^J, cuf1=\EC,
+ cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\E\\,
+ ed=\E/, el=\EQ, home=\EH, ich1=\E[, ri=\En, rmso=\EK, sgr0=\EK,
+ smso=\EJ,
# Entry largely based on wy60 and has the features of wy60ak.
-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,
- 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,
- 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,
- 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,
- 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,
- mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>,
- pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
- pfx=\EZ1%p1%{63}%+%c%p2%s\177,
- pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
- rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11,
- rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>,
- rs3=\EwG\Ee($<150>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
- sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/,
- smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177,
- smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(,
- 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,
+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,
+ 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,
+ 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,
+ 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,
+ 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,
+ mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>,
+ pfloc=\EZ2%p1%{63}%+%c%p2%s\177,
+ pfx=\EZ1%p1%{63}%+%c%p2%s\177,
+ pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>,
+ rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11,
+ rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>,
+ rs3=\EwG\Ee($<150>,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+ sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/,
+ smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177,
+ smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(,
+ 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,
# 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
@@ -17964,7 +19515,7 @@ teletec|Teletec Datascreen,
#
# Kenneth Randell <kenr@datametrics.com> writes on 31 Dec 1998:
# I had a couple of scopes (3221) like this once where I used to work, around
-# the 1987 time frame if memory serves me correctly. These scopes were made
+# the 1987 time frame if memory serves me correctly. These scopes were made
# by an outfit called LANPAR Technologies, and were meant to me DEC VT 220
# compatible. The 3220 was a plain text terminal like the VT-220, the 3221
# was a like the VT-240 (monochrome with Regis + Sixel graphics), and the 3222
@@ -17982,18 +19533,18 @@ teletec|Teletec Datascreen,
#
# (v3220: removed obsolete ":kn#10:",
# I added <rmam>/<smam> based on the init string -- esr)
-v3220|LANPAR Vision II model 3220/3221/3222,
- OTbs, am, mir, xenl,
- cols#80, it#8, lines#24,
- clear=\E[H\E[J, cub1=^H, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
- ed=\E[J, el=\E[K, ht=^I, il1=\E[L,
- is2=\E>\E[?3l\E[?7h\E[?8h\E[p, kcub1=\E[D, kcud1=\E[B,
- kcuf1=\E[C, kcuu1=\E[A, kf0=\E[1~, kf1=\E[2~, kf2=\E[3~,
- kf3=\E[4~, kf4=\E[5~, kf5=\E[6~, kf6=\E[OP, kf7=\E[OQ,
- kf8=\E[OR, kf9=\E[OS, khome=\E[H, ri=\EM, rmam=\E[?7l,
- rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
- smam=\E[?7h, smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
+v3220|LANPAR Vision II model 3220/3221/3222,
+ OTbs, am, mir, xenl,
+ cols#80, it#8, lines#24,
+ clear=\E[H\E[J, cub1=^H, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
+ ed=\E[J, el=\E[K, ht=^I, il1=\E[L,
+ is2=\E>\E[?3l\E[?7h\E[?8h\E[p, kcub1=\E[D, kcud1=\E[B,
+ kcuf1=\E[C, kcuu1=\E[A, kf0=\E[1~, kf1=\E[2~, kf2=\E[3~,
+ kf3=\E[4~, kf4=\E[5~, kf5=\E[6~, kf6=\E[OP, kf7=\E[OQ,
+ kf8=\E[OR, kf9=\E[OS, khome=\E[H, ri=\EM, rmam=\E[?7l,
+ rmir=\E[4l, rmkx=\E>, rmso=\E[m, rmul=\E[m, sgr0=\E[m,
+ smam=\E[?7h, smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m,
######## ICH/ICH1 VERSUS RMIR/SMIR
#
# Some non-curses applications get confused if both ich/ich1 and rmir/smir
@@ -18022,18 +19573,18 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# receive the document in due course. Don't expect an email acknowledgement.
#
# Related standards include "X3.4-1977: American National Standard Code for
-# Information Interchange" (the ASCII standard) and "X3.41.1974:
+# Information Interchange" (the ASCII standard) and "X3.41.1974:
# Code-Extension Techniques for Use with the 7-Bit Coded Character Set of
# American National Standard for Information Interchange." I believe (but
# am not certain) that these are effectively identical to ECMA-6 and ECMA-35
-# respectively.
+# respectively.
#
#### VT100/ANSI/ECMA-48
#
# ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals
# and ECMA-48 Control Functions for Coded Character Sets.
-#
+#
# Much of the content of this comment is adapted from a table prepared by
# Richard Shuford, based on a 1984 Byte article. Terminfo correspondences,
# discussion of some terminfo-related issues, and updates to capture ECMA-48
@@ -18204,13 +19755,13 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# VPR Vert. Position Relative \E [ Pn e 1 FE - (R)
# VT Vertical Tabulation * ^K - FE -
# VTS Vertical Tabulation Set \E J - FE -
-#
+#
# ---------------------------------------------------------------------------
#
# Notes:
#
-# Some control characters are listed in the ECMA-48 standard without
-# being assigned functions relevant to terminal control there (they
+# Some control characters are listed in the ECMA-48 standard without
+# being assigned functions relevant to terminal control there (they
# referred to other standards such as ISO 1745 or ECMA-35). They are listed
# here anyway for completeness.
#
@@ -18228,11 +19779,11 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# (D) terminfo (nel) is usually \r\n rather than ANSI \EE.
#
-# (E) ECMA-48 calls this "Active Position Report" but preserves the CPR
+# (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,
+# 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
@@ -18248,7 +19799,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# (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.
#
# (L) The GSM parameters are vertical and horizontal parameters to scale by.
@@ -18285,25 +19836,25 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# (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 =
+# 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.
#
-# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLD
+# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLU
# abbreviation.
#
# (V) ECMA-48 calls this "Reverse Line Feed" but retains the RI abbreviation.
#
-# (W) RM/SM modes are as follows: 1 = Guarder Area Transfer Mode (GATM),
-# 2 = Keyboard Action Mode (KAM), 3 = Control Representation Mode (CRM),
+# (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),
+# 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),
+# 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
@@ -18320,68 +19871,68 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# abbreviation.
#
# ---------------------------------------------------------------------------
-#
+#
# Abbreviations:
#
# Intro an Introducer of some kind of defined sequence; the normal 7-bit
# X3.64 Control Sequence Introducer is the two characters "Escape ["
-#
+#
# Delim a Delimiter
-#
+#
# x/y identifies a character by position in the ASCII table (column/row)
-#
+#
# eF editor function (see explanation)
-#
+#
# FE format effector (see explanation)
#
# F is a Final character in
# an Escape sequence (F from 3/0 to 7/14 in the ASCII table)
# a control sequence (F from 4/0 to 7/14)
-#
+#
# Gs is a graphic character appearing in strings (Gs ranges from
# 2/0 to 7/14) in the ASCII table
-#
+#
# Ce is a control represented as a single bit combination in the C1 set
# of controls in an 8-bit character set
-#
+#
# C0 the familiar set of 7-bit ASCII control characters
-#
+#
# C1 roughly, the set of control chars available only in 8-bit systems.
# This is too complicated to explain fully here, so read Jim Fleming's
# article in the February 1983 BYTE, especially pages 214 through 224.
-#
+#
# Fe is a Final character of a 2-character Escape sequence that has an
# equivalent representation in an 8-bit environment as a Ce-type
# (Fe ranges from 4/0 to 5/15)
-#
+#
# Fs is a Final character of a 2-character Escape sequence that is
# standardized internationally with identical representation in 7-bit
# and 8-bit environments and is independent of the currently
# designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14)
-#
+#
# I is an Intermediate character from 2/0 to 2/15 (inclusive) in the
# ASCII table
-#
+#
# P is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII
# table
-#
+#
# Pn is a numeric parameter in a control sequence, a string of zero or
# more characters ranging from 3/0 to 3/9 in the ASCII table
-#
+#
# Ps is a variable number of selective parameters in a control sequence
# with each selective parameter separated from the other by the code
# 3/11 (which usually represents a semicolon); Ps ranges from
# 3/0 to 3/9 and includes 3/11
#
# * Not relevant to terminal control, listed for completeness only.
-#
+#
# Format Effectors versus Editor Functions
-#
+#
# A format effector specifies how following output is to be displayed.
# An editor function allows you to modify the display. Informally
# format effectors may be destructive; format effectors should not be.
-#
-# For instance, a format effector that moves the "active position" (the
+#
+# For instance, a format effector that moves the "active position" (the
# cursor or equivalent) one space to the left would be useful when you want to
# create an overstrike, a compound character made of two standard characters
# overlaid. Control-H, the Backspace character, is actually supposed to be a
@@ -18395,16 +19946,16 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# return, linefeed, formfeed, etc., are defined as format effectors.
#
# NOTES ON THE DEC VT100 IMPLEMENTATION
-#
+#
# Control sequences implemented in the VT100 are as follows:
-#
+#
# CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND,
# LNM, NEL, RI, RIS, RM, SGR, SM, TBC
-#
+#
# plus several private DEC commands.
-#
+#
# Erasing parts of the display (EL and ED) in the VT100 is performed thus:
-#
+#
# Erase from cursor to end of line Esc [ 0 K or Esc [ K
# Erase from beginning of line to cursor Esc [ 1 K
# Erase line containing cursor Esc [ 2 K
@@ -18414,32 +19965,32 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# Some brain-damaged terminal/emulators respond to Esc [ J as if it were
# Esc [ 2 J, but this is wrong; the default is 0.
-#
+#
# The VT100 responds to receiving the DA (Device Attributes) control
-#
+#
# Esc [ c (or Esc [ 0 c)
-#
+#
# by transmitting the sequence
-#
+#
# Esc [ ? l ; Ps c
-#
+#
# where Ps is a character that describes installed options.
-#
+#
# The VT100's cursor location can be read with the DSR (Device Status
# Report) control
-#
+#
# Esc [ 6 n
-#
+#
# The VT100 reports by transmitting the CPR sequence
-#
+#
# Esc [ Pl ; Pc R
-#
+#
# where Pl is the line number and Pc is the column number (in decimal).
-#
+#
# The specification for the DEC VT100 is document EK-VT100-UG-003.
#### ANSI.SYS
-#
+#
# Here is a description of the color and attribute controls supported in the
# the ANSI.SYS driver under MS-DOS. Most console drivers and ANSI
# terminal emulators for Intel boxes obey these. They are a proper subset
@@ -18476,7 +20027,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#### Intel Binary Compatibility Standard
#
-# For comparison, here are the capabilities implied by the Intel Binary
+# For comparison, here are the capabilities implied by the Intel Binary
# Compatibility Standard for UNIX systems (Intel order number 468366-001).
# These recommendations are optional. IBCS2 allows the leading escape to
# be either the 7-bit \E[ or 8-bit \0233 introducer, in accordance with
@@ -18539,7 +20090,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# 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
+# makes this a wretchedly weak standard. The table above is literally
# everything iBSC2 has to say about terminal escape sequences; there is
# no further discussion of their meaning or how to set the parameters
# in these sequences at all.
@@ -18598,12 +20149,12 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# Finally, XENIX also used the following forms-drawing capabilities:
#
-# single double type ASCII approximation
+# single double type ASCII approximation
# ------ ------ ------------- -------------------
# GV Gv vertical line |
# GH Gv horizontal line - _
# G1 G5 top right corner _ |
-# G2 G6 top left corner |
+# G2 G6 top left corner |
# G3 G7 bottom left corner |_
# G4 G8 bottom right corner _|
# GD Gd down-tick character T
@@ -18652,7 +20203,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# correspond to acsc chars, here is 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
@@ -18690,7 +20241,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# project.
#
# This file contains all the capability information present in John Kunze's
-# last version of the termcap master file, except as noted in the change
+# last version of the termcap master file, except as noted in the change
# comments at end of file. Some information about very ancient obsolete
# capabilities has been moved to comments. Some all-numeric names of older
# terminals have been retired.
@@ -18758,7 +20309,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * 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.
+# * Added teleray 16, vc415, cops10.
# * Merged in many individual capabilities from SCO terminfo files.
# 9.4.3 (Mon Mar 13 02:37:53 EST 1995):
# * Typo fixes.
@@ -18782,7 +20333,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# 9.4.7 (Tue Apr 4 11:27:11 EDT 1995)
# * Added apple (Videx card), adm1a, oadm31.
# * Fixed malformed ampex csr.
-# * Fixed act4, cyb110; they had old-style prefix padding left in.
+# * Fixed act4, cyb110; they had old-style prefix padding left in.
# * Changed mandatory to advisory padding in many entries.
# * Replaced HP entries up to hpsub with purpose-built ones.
# * Blank rmir/smir/rmdc/smdc capabilities removed.
@@ -18812,7 +20363,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Comment fixes from David MacKenzie.
# * Added the new BSDI pc3 entry.
# 9.5.2 (Tue Apr 25 17:27:52 EDT 1995)
-# * A change in the tic -C logic now ensures that all entries in
+# * A change in the tic -C logic now ensures that all entries in
# the termcap translation will fit in < 1024 bytes.
# * Added `bobcat' and `gator' HP consoles and the Nu machine entries
# from GNU termcap file. This merges in all their local information.
@@ -18863,7 +20414,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Added csr capability to linux entry.
# * Peter Wemm says the at386 hpa should be \E[%i%p1%dG, not \E[%p1%dG.
# * Added vt102-nsgr to cope with stupid IBM PC `VT100' emulators.
-# * Some commented-out caps in long entries come back in, my code
+# * Some commented-out caps in long entries come back in, my code
# for computing string-table lengths had a bug in it.
# * pcansi series modified to fit comm-program reality better.
# 9.8.2 (Sat Sep 9 23:35:00 EDT 1995):
@@ -18900,7 +20451,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * fixed cup in adm22 entry and parametrized strings in vt320-k3.
# * added it#8 to entries that used to have :pt: -- tvi912, vi200,
# ampex80,
-# * Translate all home=\E[;H capabilities to home=\E[H, they're
+# * Translate all home=\E[;H capabilities to home=\E[H, they're
# equivalent.
# * Translate \E[0m -> \E[m in [rs]mso, [rs]mul, and init strings of
# vt100 and ANSI-like terminals.
@@ -18909,7 +20460,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# does this now, too.
# * fviewpoint is gone, it duplicated screwpoint.
# * Added hp2627, graphos, graphos-30, hpex, ibmega, ibm8514, ibm8514-c,
-# ibmvga, ibmvga-c, minix, mm340, mt4520-rv, screen2, screen3,
+# ibmvga, ibmvga-c, minix, mm340, mt4520-rv, screen2, screen3,
# versaterm, vi500, vsc, vt131, vt340, vt400 entries from UW.
# The UW vi50 replaces the old one, which becomes vi50adm,
# * No more embedded commas in name fields.
@@ -18934,7 +20485,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Hand-translate more XENIX capabilities.
# * Added hpterm entry for HP's X terminal emulator.
# * Added aixterm entries.
-# * Shortened four names so everything fits in 14 chars.
+# * Shortened four names so everything fits in 14 chars.
#
# 9.11.0 (Thu Nov 2 17:29:35 EST 1995):
# * Added ibcs2 entry and info on iBCS2 standard.
@@ -18958,23 +20509,23 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Exiled some utterly unidentifiable custom and homebrew types to the
# UFO file; also, obsolete small-screen hardware; also, entries which
# look flat-out incorrect, garbled, or redundant. These include the
-# following entries: carlock, cdc456tst, microkit, qdss, ramtek, tec,
+# following entries: carlock, cdc456tst, microkit, qdss, ramtek, tec,
# tec400, tec500, ubell, wind, wind16, wind40, wind50, plasma, agile,
# apple, bch, daleblit, nucterm, ttywilliams, nuterminal, nu24, bnu,
-# fnu, nunix-30, nunix-61, exidy, ex3000, sexidy, pc52, sanyo55,
-# yterm10, yterm11, yterm10nat, aed, aed-ucb, compucolor, compucolor2,
-# vic20, dg1, act5s, netx, smartvid, smarterm, sol, sol2, dt200,
-# trs80, trs100, trs200, trs600, xitex, rsvidtx, vid, att2300-x40,
-# att2350-x40, att4410-nfk, att5410-ns, otty5410, att5425-nl-w,
-# tty5425-fk, tty5425-w-fk, cita, c108-na, c108-rv-na, c100-rv-na,
-# c108-na-acs, c108-rv-na-acs, ims950-ns, infotonKAS, ncr7900i-na,
-# regent60na, scanset-n, tvi921-g, tvi925n, tvi925vbn, tvi925vb,
-# vc404-na, vc404-s-na, vt420nam, vt420f-nam, vt420pc-nam, vt510nam,
+# fnu, nunix-30, nunix-61, exidy, ex3000, sexidy, pc52, sanyo55,
+# yterm10, yterm11, yterm10nat, aed, aed-ucb, compucolor, compucolor2,
+# vic20, dg1, act5s, netx, smartvid, smarterm, sol, sol2, dt200,
+# trs80, trs100, trs200, trs600, xitex, rsvidtx, vid, att2300-x40,
+# att2350-x40, att4410-nfk, att5410-ns, otty5410, att5425-nl-w,
+# tty5425-fk, tty5425-w-fk, cita, c108-na, c108-rv-na, c100-rv-na,
+# c108-na-acs, c108-rv-na-acs, ims950-ns, infotonKAS, ncr7900i-na,
+# regent60na, scanset-n, tvi921-g, tvi925n, tvi925vbn, tvi925vb,
+# vc404-na, vc404-s-na, vt420nam, vt420f-nam, vt420pc-nam, vt510nam,
# vt510pc-nam, vt520nam, vt525nam, xterm25, xterm50, xterm65, xterms.
# * Corrected pcvt25h as suggested by Brian C. Grayson
# <bgrayson@pine.ece.utexas.edu>.
# 9.11.3 (Thu Nov 9 12:14:40 EST 1995):
-# * Added kspd=\E[P, kcbt=\E[Z, to linux entry, changed kbs back to ^H.
+# * Added kspd=\E[P, kcbt=\E[Z, to linux entry, changed kbs back to ^H.
# * Added kent=\EOM to xterm entry.
#
# 9.11.4 (Fri Nov 10 08:31:35 EST 1995):
@@ -18994,13 +20545,13 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Improved iris-ansi and sun entries.
# * More flash string improvements.
# * Corrected wy160 & wy160 as suggested by Robert Dunn
-# * Added dim to at386.
+# * Added dim to at386.
# * Reconciled pc3 and ibmpc3 with the BSDI termcap file. Keith says
# he's ready to start using the termcap generated from this one.
# * Added vt102-w, vt220-w, xterm-bold, wyse-vp, wy75ap, att4424m,
# ln03, lno3-w, h19-g, z29a*, qdss. Made vt200 an alias of vt220.
# * Improved hpterm, apollo consoles, fos, qvt101, tvi924. tvi925,
-# att610, att620, att630,
+# att610, att620, att630,
# * Changed hazeltine name prefix from h to hz.
# * Sent t500 to the UFI file.
# * I think we've sucked all the juice out of BSDI's termcap file now.
@@ -19057,7 +20608,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Added x68k console
# * Added OTbs to several VT-series entries.
# 9.13.4 (Wed May 22 10:54:09 EDT 1996):
-# * screen entry update for 3.7.1 from Michael Alan Dorfman.
+# * screen entry update for 3.7.1 from Michael Alan Dorman.
# 9.13.5 (Wed Jun 5 11:22:41 EDT 1996):
# * kterm correction due to Kenji Rikitake.
# * ACS correction in vt320-kll due to Phillippe De Muyter.
@@ -19065,7 +20616,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Sun console entry correction from J.T. Conklin.
# * Changed all DEC VT300 and up terminals to use VT300 tab set
# 9.13.7 (Mon Jul 8 20:14:32 EDT 1996):
-# * Added smul to linux entry (we never noticed it was missing
+# * Added smul to linux entry (we never noticed it was missing
# because of sgr!).
# * Added rmln to hp+labels (deduced from other HP entries).
# * Added vt100 acsc capability to vt220, vt340, vt400, d800, dt80-sas,
@@ -19078,7 +20629,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# adm12, adm20, adm21, adm22, adm31, adm36, adm42, pt100, pt200,
# qvt101, tvi910, tvi921, tvi92B, tvi925, tvi950, tvi970, wy30-mc,
# wy50-mc, wy100, wyse-vp, ampex232, regent100, viewpoint, vp90,
-# adds980, cit101, cit500, contel300, cs10, dm80, falco, falco-p,
+# adds980, cit101, cit500, contel300, cs10, dm80, falco, falco-p,
# f1720a, go140, sb1, superbeeic, microb, ibm8512, kt7, ergo4000,
# owl, uts30, dmterm, dt100, dt100, dt110, appleII, apple-videx,
# lisa, trsII, atari, st52, pc-coherent, basis, m2-man, bg2.0, bg1.25,
@@ -19095,7 +20646,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Aha! The BRL terminals file told us what the Iris extensions mean.
# * Added, from the BRL termcap file: rt6221, rt6221-w, northstar,
# commodore, cdc721-esc, excel62, osexec. Replaced from the BRL file:
-# cit500, adm11.
+# cit500, adm11.
# 9.13.9 (Mon Jul 15 00:32:51 EDT 1996):
# * Added, from the BRL termcap file: cdc721, cdc721l, cdc752, cdc756,
# aws, awsc, zentec8001, modgraph48, rca vp3301/vp3501, ex155.
@@ -19122,7 +20673,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * corrected pairs#8 typo in dtterm entry.
# * added tvi9065.
# 9.13.15 (Sun Sep 15 02:47:05 EDT 1996):
-# * updated xterm entry to cover 3.1.2E's new features.
+# * updated xterm entry to cover 3.1.2E's new features.
# 9.13.16 (Tue Sep 24 12:47:43 EDT 1996):
# * Added new minix entry
# * Removed aliases of the form ^[0-9]* for obsolete terminals.
@@ -19397,7 +20948,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * add rc/sc to aixterm based on manpage -TD
#
# 2000/5/13
-# * remove ncv from xterm-16color, xterm-256 color
+# * remove ncv from xterm-16color, xterm-256color
#
# 2000/6/10
# * add kmous capability to linux to use Joerg Schoen's gpm patch.
@@ -19493,6 +21044,271 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# 2002-06-15
# * add kcbt to screen entry -TD
#
+# 2002-06-22
+# * add rxvt-16color, ibm+16color, mvterm entries -TD
+#
+# 2002-09-28
+# * split out linux-basic entry, making linux-c inherit from that, and
+# in turn linux (with cnorm, etc) inherit from linux-c-nc to reflect
+# the history of this console type -TD
+# * scaled the linux-c terminfo entry to match linux-c-nc, i.e., the
+# r/g/b parameters of initc are in the range 0 to 1000 -TD
+#
+# 2002-10-05
+# * minor fix for scale-factor of linux-c and linux-c-nc -TD
+#
+# 2002-11-09
+# * split-out vt100+keypad and vt220+keypad, fix interchanged ka3/kb2
+# in the latter -TD
+#
+# 2002-11-16
+# * 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
+# * add screen-bce, screen-s entries -TD
+# * add xterm-1002, xterm-1003 entries -TD
+#
+# 2003-01-11
+# * update homepage for Top Gun Telnet/SSH
+#
+# 2003-01-25
+# * reduce duplication in emx entries, added emx-base -TD
+#
+# 2003-05-24
+# * corrected acs for screen.teraterm -TD
+# * add tkterm entry -TD
+#
+# 2003-07-15
+# * cygwin changes from Charles Wilson:
+# misc/terminfo.src (nxterm|xterm-color): make xterm-color
+# primary instead of nxterm, to match XFree86's xterm.terminfo
+# usage and to prevent circular links.
+# (rxvt): add additional codes from rxvt.org.
+# (rxvt-color): new alias
+# (rxvt-xpm): new alias
+# (rxvt-cygwin): like rxvt, but with special acsc codes.
+# (rxvt-cygwin-native): ditto. rxvt may be run under XWindows, or
+# with a "native" MSWin GUI. Each takes different acsc codes,
+# which are both different from the "normal" rxvt's acsc.
+# (cygwin): cygwin-in-cmd.exe window. Lots of fixes.
+# (cygwinDBG): ditto.
+#
+# 2003-09-27
+# * update gnome terminal entries -TD
+#
+# 2003-10-04
+# * add entries for djgpp 2.03 and 2.04 -TD
+#
+# 2003-10-25
+# * add alias for vtnt -TD
+# * update xterm-xfree86 for XFree86 4.4 -TD
+#
+# 2003-11-22
+# * add linux-vt (Andrey V Lukyanov)
+#
+# 2003-12-20
+# * add screen.linux -TD
+#
+# 2004-01-10
+# * revised/improved entries for tvi912b, tvi920b (Benjamin Sittler)
+#
+# 2004-01-17
+# * add OpenNT/Interix/SFU entries (Federico Bianchi)
+# * add vt100+ and vt-utf8 entries -TD
+# * add uwin entry -TD
+#
+# 2004-03-27
+# * add sgr strings to several common entries lacking them, e.g.,
+# screen, to make the entries more portable -TD
+# * remove cvvis from rxvt entry, since it is the same as cnorm -TD
+# * similar fixups for cvvis/cnorm various entries -TD
+#
+# 2004-05-22
+# * remove 'ncv' from xterm-256color (patch 188) -TD
+#
+# 2004-06-26
+# * add mlterm -TD
+# * add xterm-xf86-v44 -TD
+# * modify xterm-new aka xterm-xfree86 to accommodate luit, which relies
+# on G1 being used via an ISO-2022 escape sequence (report by
+# Juliusz Chroboczek) -TD
+# * add 'hurd' entry -TD
+#
+# 2004-07-03
+# * make xterm-xf86-v43 derived from xterm-xf86-v40 rather than
+# xterm-basic -TD
+# * align with xterm #192's use of xterm-new -TD
+# * update xterm-new and xterm-8bit for cvvis/cnorm strings -TD
+# * make xterm-new the default "xterm" -TD
+#
+# 2004-07-10
+# * minor fixes for emu -TD
+# * add emu-220
+# * add rmam/smam to linux (Trevor Van Bremen)
+# * change wyse acsc strings to use 'i' map rather than 'I' -TD
+# * fixes for avatar0 -TD
+# * fixes for vp3a+ -TD
+#
+# 2004-07-17
+# * add xterm-pc-fkeys -TD
+# * review/update gnome and gnome-rh90 entries (prompted by
+# Redhat Bugzilla #122815) -TD
+# * review/update konsole entries -TD
+# * add sgr, correct sgr0 for kterm and mlterm -TD
+# * correct tsl string in kterm -TD
+#
+# 2004-07-24
+# * make ncsa-m rmacs/smacs consistent with sgr -TD
+# * add sgr, rc/sc and ech to syscons entries -TD
+# * add function-keys to decansi -TD
+# * add sgr to mterm-ansi -TD
+# * add sgr, civis, cnorm to emu -TD
+# * correct/simplify cup in addrinfo -TD
+# * corrections for gnome and konsole entries
+# (Redhat Bugzilla #122815) -Hans de Goede
+# * modify DEC entries (vt220, etc), to add sgr string, and to use
+# ISO-2022 strings for rmacs/smacs -TD
+#
+# 2004-07-31
+# * rename xterm-pc-fkeys to xterm+pcfkeys -TD
+#
+# 2004-08-07
+# * improved putty entry -Robert de Bath
+#
+# 2004-08-14
+# * remove dch/dch1 from rxvt because they are implemented inconsistently
+# with the common usage of bce/ech -TD
+# * remove khome from vt220 (vt220's have no home key) -TD
+# * add rxvt+pcfkeys -TD
+#
+# 2004-08-21
+# * modify several entries to ensure xterm mouse and cursor visibility
+# are reset in rs2 string: hurd, putty, gnome, konsole-base, mlterm,
+# Eterm, screen. (The xterm entries are left alone - old ones for
+# compatibility, and the new ones do not require this change) -TD
+#
+# 2004-08-28
+# * add morphos entry -Pavel Fedin
+# * modify amiga-8bit to add khome/kend/knp/kpp -Pavel Fedin
+# * corrected \E[5?l to \E[?5l in vt320 entries -TD
+#
+# 2004-11-20
+# * update wsvt25 entry -TD
+#
+# 2005-01-29
+# * update pairs for xterm-88color and xterm-256color to reflect the
+# ncurses extended-color support -TD
+#
+# 2005-02-26
+# * modify sgr/sgr0 in xterm-new to improve tgetent's derived "me" -TD
+# * add aixterm-16color to demonstrate 16-color capability -TD
+#
+# 2005-04-23
+# * add media-copy to vt100 -TD
+# * corrected acsc string for vt52 -TD
+#
+# 2005-04-30
+# * add kUP, kDN (user-defined shifted up/down arrow) definitions for
+# xterm-new -TD
+# * add kUP5, kUP6, etc., for xterm-new and rxvt -TD
+#
+# 2005-05-07
+# * re-corrected acsc string for vt52 -TD
+#
+# 2005-05-28
+# * corrected sun-il sgr string which referred to bold and underline -TD
+# * add sun-color entry -TD
+#
+# 2005-07-23
+# * modify sgr0 in several entries to reset alternate-charset as in the
+# sgr string -TD
+# * modify sgr string of prism9 to better match the individual
+# attributes -TD
+#
+# 2005-10-15
+# * correct order of use= in rxvt-basic -TD
+#
+# 2005-10-26
+# * use kind/kri as shifted up/down cursor keys for xterm-new -TD
+#
+# 2005-11-12
+# * other minor fixes to cygwin based on tack -TD
+# * correct smacs in cygwin (report by Baurzhan Ismagulov).
+#
+# 2006-02-18
+# * add nsterm-16color entry -TD
+# * remove ncv flag from xterm-16color -TD
+# * remove setf/setb from xterm-256color to match xterm #209 -TD
+# * update mlterm entry to 2.9.2 -TD
+#
+# 2006-02-25
+# * fixes to make nsterm-16color match report
+# by Christian Ebert -Alain Bench
+#
+# 2006-04-22
+# * add xterm+256color building block -TD
+# * add gnome-256color, putty-256color, rxvt-256color -TD
+#
+# 2006-05-06
+# * add hpterm-color -TD
+#
+# 2006-06-24
+# * add xterm+pcc0, xterm+pcc1, xterm+pcc2, xterm+pcc3 -TD
+# * add gnome-fc5 (prompted by GenToo #122566) -TD
+# * remove obsolete/misleading comments about kcbt on Linux -Alain Bench
+# * improve xterm-256color by combining the ibm+16color setaf/setab
+# strings with SGR 48. The setf/setb strings also are cancelled here
+# rather than omitted so derived entries will cancel those also -Alain
+# Bench
+#
+# 2006-07-01
+# * add some notes regarding copyright to terminfo.src -TD
+# * use rxvt+pcfkeys in Eterm -TD
+# * remove km and flash from gnome, Eterm and rxvt since they do not work
+# as one would expect (km sends ESC rather than setting the 8th bit
+# of the key) -TD
+# * add/use ansi+enq, vt100+enq and vt102+enq -TD
+# * add konsole-solaris -TD
+#
+# 2006-07-22
+# * update xterm-sun and xterm-sco entries to match xterm #216 -TD
+# * modify is2/rs2 strings for xterm-r6 as per fix in xterm #148 -TD
+# * modify xterm-24 to inherit from "xterm" -TD
+# * add xiterm entry -TD
+# * add putty-vt100 entry -TD
+# * corrected spelling of Michael A Dorman's name, prompted by
+# http://www.advogato.org/person/mdorman/diary.html -TD
+#
+# 2006-08-05
+# * add xterm+pcf0, xterm+pcf2 from xterm #216 -TD
+# * update xterm+pcfkeys to match xterm #216 -TD
+#
+# 2006-08-17
+# * make descriptions of xterm entries consistent with its terminfo -TD
+#
+# 2006-08-26
+# * add xfce, mgt -TD
+#
+# 2006-09-02
+# * correct acsc string in kterm -TD
+#
+# 2006-09-09
+# * add kon entry -TD
+# * remove invis from linux and related entries, add klone+sgr8 for those
+# that implement the feature (or have not been shown to lack it) -TD
+#
+# 2006-09-23
+# * add ka2, kb1, kb3, kc2 to vt220-keypad as an extension -TD
+# * minor improvements to rxvt+pcfkeys -TD
+#
+# 2006-09-30
+# * fix a few typos in if/then/else expressions -TD
+#
+# 2006-10-07
+# * add several GNU Screen variations with 16- and 256-colors, and
+# status line (Alain Bench).
+#
# The following sets edit modes for GNU EMACS.
# Local Variables:
# fill-prefix:"\t"
diff --git a/contrib/ncurses/mk-0th.awk b/contrib/ncurses/mk-0th.awk
index b71d66ae971b..fe91cca689f6 100644
--- a/contrib/ncurses/mk-0th.awk
+++ b/contrib/ncurses/mk-0th.awk
@@ -1,6 +1,6 @@
-# $Id: mk-0th.awk,v 1.13 2002/02/23 20:38:11 tom Exp $
+# $Id: mk-0th.awk,v 1.17 2005/01/22 16:31:40 tom Exp $
##############################################################################
-# Copyright (c) 1998-2001 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2004,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 "Software"), #
@@ -33,23 +33,31 @@
#
# Variables:
# libname (library name, e.g., "ncurses", "panel", "forms", "menus")
+# subsets (is used here to decide if wide-character code is used)
#
BEGIN {
- print ""
- print "# generated by mk-0th.awk"
- print ""
- print ".SUFFIXES: .c .cc .h .i .ii"
- print ".c.i :"
- printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
- print ".cc.ii :"
- printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
- print ".h.i :"
- printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
- print ""
+ using = 0;
found = 0;
}
!/^[@#]/ {
- if ( $0 != "" )
+ if (using == 0)
+ {
+ print ""
+ print "# generated by mk-0th.awk"
+ printf "# libname: %s\n", libname
+ printf "# subsets: %s\n", subsets
+ print ""
+ print ".SUFFIXES: .c .cc .h .i .ii"
+ print ".c.i :"
+ printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
+ print ".cc.ii :"
+ printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
+ print ".h.i :"
+ printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
+ print ""
+ using = 1;
+ }
+ if ( $0 != "" && $1 != "link_test" )
{
if ( found == 0 )
{
@@ -84,7 +92,7 @@ END {
printf "\trm -f llib-l%s\n", libname
print ""
printf "llib-l%s : $(C_SRC)\n", libname
- printf "\tcproto -a -l -DLINT $(CPPFLAGS) $(C_SRC) >$@\n"
+ printf "\tcproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@\n"
print ""
print "lintlib :"
printf "\tsh $(srcdir)/../misc/makellib %s $(CPPFLAGS)", libname
diff --git a/contrib/ncurses/mk-1st.awk b/contrib/ncurses/mk-1st.awk
index bbd7c40efa56..371042ccce99 100644
--- a/contrib/ncurses/mk-1st.awk
+++ b/contrib/ncurses/mk-1st.awk
@@ -1,6 +1,6 @@
-# $Id: mk-1st.awk,v 1.55 2002/04/20 17:32:47 tom Exp $
+# $Id: mk-1st.awk,v 1.68 2006/10/08 00:14:08 tom Exp $
##############################################################################
-# Copyright (c) 1998,2000,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -27,27 +27,29 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,2000
+# Author: Thomas E. Dickey
#
# Generate list of objects for a given model library
# Variables:
-# name (library name, e.g., "ncurses", "panel", "forms", "menus")
-# model (directory into which we compile, e.g., "obj")
-# prefix (e.g., "lib", for Unix-style libraries)
-# suffix (e.g., "_g.a", for debug libraries)
-# MODEL (e.g., "DEBUG", uppercase; toupper is not portable)
-# depend (optional dependencies for all objects, e.g, ncurses_cfg.h)
-# subset ("none", "base", "base+ext_funcs" or "termlib")
-# target (cross-compile target, if any)
-# ShlibVer ("rel", "abi" or "auto", to augment DoLinks variable)
+# name (library name, e.g., "ncurses", "panel", "forms", "menus")
+# traces ("all" or "DEBUG", to control whether tracing is compiled in)
+# MODEL (e.g., "DEBUG", uppercase; toupper is not portable)
+# model (directory into which we compile, e.g., "obj")
+# prefix (e.g., "lib", for Unix-style libraries)
+# suffix (e.g., "_g.a", for debug libraries)
+# subset ("none", "base", "base+ext_funcs" or "termlib")
+# ShlibVer ("rel", "abi" or "auto", to augment DoLinks variable)
# ShlibVerInfix ("yes" or "no", determines location of version #)
-# DoLinks ("yes", "reverse" or "no", flag to add symbolic links)
-# rmSoLocs ("yes" or "no", flag to add extra clean target)
-# overwrite ("yes" or "no", flag to add link to libcurses.a
+# 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)
+# overwrite ("yes" or "no", flag to add link to libcurses.a
+# depend (optional dependencies for all objects, e.g, ncurses_cfg.h)
+# host (cross-compile host, if any)
#
# Notes:
# CLIXs nawk does not like underscores in command-line variable names.
-# Mixed-case is ok.
+# Mixed-case variable names are ok.
# HP/UX requires shared libraries to have executable permissions.
#
function symlink(src,dst) {
@@ -58,7 +60,7 @@ function symlink(src,dst) {
}
function rmlink(directory, dst) {
printf "\t-rm -f %s/%s\n", directory, dst
-}
+ }
function removelinks(directory) {
rmlink(directory, end_name);
if ( DoLinks == "reverse" ) {
@@ -77,6 +79,9 @@ function removelinks(directory) {
}
}
}
+function make_shlib(objs, shlib_list) {
+ printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(%s) $(LDFLAGS)\n", objs, shlib_list
+ }
function sharedlinks(directory) {
if ( ShlibVer != "auto" && ShlibVer != "cygdll" ) {
printf "\tcd %s && (", directory
@@ -98,6 +103,34 @@ function sharedlinks(directory) {
printf ")\n"
}
}
+function shlib_rule(directory) {
+ if ( ShlibVer == "cygdll" ) {
+ dst_libs = sprintf("%s/$(SHARED_LIB) %s/$(IMPORT_LIB)", directory, directory);
+ } else {
+ dst_libs = sprintf("%s/%s", directory, end_name);
+ }
+ printf "%s : %s $(%s_OBJS)\n", dst_libs, directory, OBJS
+ printf "\t@echo linking $@\n"
+ print "\t-@rm -f %s", dst_libs;
+ if ( subset == "termlib" || subset == "termlib+ext_tinfo" ) {
+ make_shlib(OBJS, "TINFO_LIST")
+ } else {
+ make_shlib(OBJS, "SHLIB_LIST")
+ }
+ sharedlinks(directory)
+ }
+function install_dll(directory,filename) {
+ src_name = sprintf("../lib/%s", filename);
+ dst_name = sprintf("$(DESTDIR)%s/%s", directory, filename);
+ printf "\t@echo installing %s as %s\n", src_name, dst_name
+ printf "\t-@rm -f %s\n", dst_name
+ if ( directory == "$(bindir)" ) {
+ program = "$(INSTALL) -m 755";
+ } else {
+ program = "$(INSTALL_LIB)";
+ }
+ printf "\t%s %s %s\n", program, src_name, dst_name
+ }
BEGIN {
found = 0
using = 0
@@ -110,13 +143,27 @@ BEGIN {
if (using == 0) {
if (found == 0) {
print ""
- print "# generated by mk-1st.awk"
+ printf "# generated by mk-1st.awk (subset=%s)\n", subset
+ printf "# name: %s\n", name
+ printf "# traces: %s\n", traces
+ printf "# MODEL: %s\n", MODEL
+ printf "# model: %s\n", model
+ printf "# prefix: %s\n", prefix
+ printf "# suffix: %s\n", suffix
+ printf "# subset: %s\n", subset
+ printf "# ShlibVer: %s\n", ShlibVer
+ printf "# ShlibVerInfix: %s\n", ShlibVerInfix
+ printf "# DoLinks: %s\n", DoLinks
+ printf "# rmSoLocs: %s\n", rmSoLocs
+ printf "# ldconfig: %s\n", ldconfig
+ printf "# overwrite: %s\n", overwrite
+ printf "# depend: %s\n", depend
+ printf "# host: %s\n", host
print ""
}
using = 1
}
- if ( subset == "termlib") {
- name = "tinfo"
+ if ( subset == "termlib" || subset == "termlib+ext_tinfo" ) {
OBJS = MODEL "_T"
} else {
OBJS = MODEL
@@ -146,7 +193,7 @@ BEGIN {
else
found = 2
}
- printf " \\\n\t../%s/%s.o", model, $1
+ printf " \\\n\t../%s/%s$o", model, $1
}
}
END {
@@ -162,8 +209,8 @@ END {
if ( MODEL == "SHARED" )
{
if (ShlibVerInfix == "cygdll") {
- abi_name = sprintf("%s%s$(ABI_VERSION)%s", prefix, name, suffix);
- rel_name = sprintf("%s%s$(REL_VERSION)%s", prefix, name, suffix);
+ abi_name = sprintf("%s%s$(ABI_VERSION)%s", "cyg", name, suffix);
+ rel_name = sprintf("%s%s$(REL_VERSION)%s", "cyg", name, suffix);
imp_name = sprintf("%s%s%s.a", prefix, name, suffix);
} else if (ShlibVerInfix == "yes") {
abi_name = sprintf("%s%s.$(ABI_VERSION)%s", prefix, name, suffix);
@@ -184,60 +231,40 @@ END {
}
}
- if ( ShlibVer == "cygdll" ) {
- dst_dirs = "$(DESTDIR)$(bindir) $(DESTDIR)$(libdir)";
- printf "$(SHARED_LIB) $(IMPORT_LIB) : $(%s_OBJS)\n", OBJS;
- print "\t-@rm -f $(SHARED_LIB) $(IMPORT_LIB)";
- } else {
- dst_dirs = "$(DESTDIR)$(libdir)";
- printf "../lib/%s : $(%s_OBJS)\n", end_name, OBJS
- print "\t-@rm -f $@";
- }
- if ( subset == "termlib") {
- printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(TINFO_LIST)\n", OBJS
- } else {
- printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(SHLIB_LIST) $(LDFLAGS)\n", OBJS
- }
- sharedlinks("../lib")
+ shlib_rule("../lib")
print ""
print "install \\"
print "install.libs \\"
- printf "install.%s :: %s $(LIBRARIES)\n", name, dst_dirs
if ( ShlibVer == "cygdll" ) {
- src_name = sprintf("../lib/%s", end_name);
- dst_name = sprintf("$(DESTDIR)$(bindir)/%s", end_name);
- printf "\t@echo installing %s as %s\n", src_name, dst_name
- printf "\t-@rm -f %s\n", dst_name
- printf "\t$(INSTALL_LIB) %s %s\n", src_name, dst_name
-
- src_name = sprintf("../lib/%s", imp_name);
- dst_name = sprintf("$(DESTDIR)$(libdir)/%s", imp_name);
- printf "\t@echo installing %s as %s\n", src_name, dst_name
- printf "\t-@rm -f %s\n", dst_name
- printf "\t$(INSTALL_LIB) %s %s\n", src_name, dst_name
+ dst_dirs = "$(DESTDIR)$(bindir) $(DESTDIR)$(libdir)";
+ printf "install.%s :: %s $(LIBRARIES)\n", name, dst_dirs
+ install_dll("$(bindir)",end_name);
+ install_dll("$(libdir)",imp_name);
} else {
- src_name = sprintf("../lib/%s", end_name);
- dst_name = sprintf("$(DESTDIR)$(libdir)/%s", end_name);
- printf "\t@echo installing %s as %s\n", src_name, dst_name
- printf "\t-@rm -f %s\n", dst_name
- printf "\t$(INSTALL_LIB) %s %s\n", src_name, dst_name
-
- sharedlinks("$(DESTDIR)$(libdir)")
-
+ lib_dir = "$(DESTDIR)$(libdir)";
+ printf "install.%s :: %s/%s\n", name, lib_dir, end_name
+ print ""
+ shlib_rule(lib_dir)
}
if ( overwrite == "yes" && name == "ncurses" )
{
- ovr_name = sprintf("libcurses%s", suffix)
- printf "\t@echo linking %s to %s\n", end_name, ovr_name
- printf "\tcd $(DESTDIR)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, end_name, ovr_name
+ if ( ShlibVer == "cygdll" ) {
+ ovr_name = sprintf("libcurses%s.a", suffix)
+ printf "\t@echo linking %s to %s\n", imp_name, ovr_name
+ printf "\tcd $(DESTDIR)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, imp_name, ovr_name
+ } else {
+ ovr_name = sprintf("libcurses%s", suffix)
+ printf "\t@echo linking %s to %s\n", end_name, ovr_name
+ printf "\tcd $(DESTDIR)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, end_name, ovr_name
+ }
}
- if ( ldconfig != "" ) {
+ if ( ldconfig != "" && ldconfig != ":" ) {
printf "\t- test -z \"$(DESTDIR)\" && %s\n", ldconfig
}
print ""
@@ -257,7 +284,11 @@ END {
removelinks("$(DESTDIR)$(libdir)")
if ( overwrite == "yes" && name == "ncurses" )
{
- ovr_name = sprintf("libcurses%s", suffix)
+ if ( ShlibVer == "cygdll" ) {
+ ovr_name = sprintf("libcurses%s.a", suffix)
+ } else {
+ ovr_name = sprintf("libcurses%s", suffix)
+ }
printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", ovr_name
}
}
@@ -277,19 +308,19 @@ END {
}
end_name = lib_name;
printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
- printf "\tcd ../lib && $(LIBTOOL) $(%s) -o %s $(%s_OBJS:.o=.lo) -rpath $(DESTDIR)$(libdir) -version-info $(NCURSES_MAJOR):$(NCURSES_MINOR)\n", compile, lib_name, OBJS
+ printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) -version-info $(NCURSES_MAJOR):$(NCURSES_MINOR) $(SHLIB_LIST)\n", compile, lib_name, OBJS
print ""
print "install \\"
print "install.libs \\"
printf "install.%s :: $(DESTDIR)$(libdir) ../lib/%s\n", name, lib_name
printf "\t@echo installing ../lib/%s as $(DESTDIR)$(libdir)/%s\n", lib_name, lib_name
- printf "\tcd ../lib; $(LIBTOOL) $(INSTALL_DATA) %s $(DESTDIR)$(libdir)\n", lib_name
+ printf "\tcd ../lib; $(LIBTOOL_INSTALL) $(INSTALL) %s $(DESTDIR)$(libdir)\n", lib_name
print ""
print "uninstall \\"
print "uninstall.libs \\"
printf "uninstall.%s ::\n", name
printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", lib_name
- printf "\t-@$(LIBTOOL) rm -f $(DESTDIR)$(libdir)/%s\n", lib_name
+ printf "\t-@$(LIBTOOL_UNINSTALL) rm -f $(DESTDIR)$(libdir)/%s\n", lib_name
}
else
{
@@ -297,9 +328,9 @@ END {
printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
printf "\t$(AR) $(AR_OPTS) $@ $?\n"
printf "\t$(RANLIB) $@\n"
- if ( target == "vxworks" )
+ if ( host == "vxworks" )
{
- printf "\t$(LD) $(LD_OPTS) $? -o $(@:.a=.o)\n"
+ printf "\t$(LD) $(LD_OPTS) $? -o $(@:.a=$o)\n"
}
print ""
print "install \\"
@@ -314,10 +345,10 @@ END {
printf "\t(cd $(DESTDIR)$(libdir) && $(LN_S) libncurses.a libcurses.a)\n"
}
printf "\t$(RANLIB) $(DESTDIR)$(libdir)/%s\n", lib_name
- if ( target == "vxworks" )
+ if ( host == "vxworks" )
{
- printf "\t@echo installing ../lib/lib%s.o as $(DESTDIR)$(libdir)/lib%s.o\n", name, name
- printf "\t$(INSTALL_DATA) ../lib/lib%s.o $(DESTDIR)$(libdir)/lib%s.o\n", name, name
+ printf "\t@echo installing ../lib/lib%s$o as $(DESTDIR)$(libdir)/lib%s$o\n", name, name
+ printf "\t$(INSTALL_DATA) ../lib/lib%s$o $(DESTDIR)$(libdir)/lib%s$o\n", name, name
}
print ""
print "uninstall \\"
@@ -330,10 +361,10 @@ END {
printf "\t@echo linking libcurses.a to libncurses.a\n"
printf "\t-@rm -f $(DESTDIR)$(libdir)/libcurses.a\n"
}
- if ( target == "vxworks" )
+ if ( host == "vxworks" )
{
- printf "\t@echo uninstalling $(DESTDIR)$(libdir)/lib%s.o\n", name
- printf "\t-@rm -f $(DESTDIR)$(libdir)/lib%s.o\n", name
+ printf "\t@echo uninstalling $(DESTDIR)$(libdir)/lib%s$o\n", name
+ printf "\t-@rm -f $(DESTDIR)$(libdir)/lib%s$o\n", name
}
}
print ""
@@ -343,7 +374,7 @@ END {
print "mostlyclean::"
printf "\t-rm -f $(%s_OBJS)\n", OBJS
if ( MODEL == "LIBTOOL" ) {
- printf "\t-rm -f $(%s_OBJS:.o=.lo)\n", OBJS
+ printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS
}
}
else if ( found == 2 )
@@ -352,13 +383,13 @@ END {
print "mostlyclean::"
printf "\t-rm -f $(%s_OBJS)\n", OBJS
if ( MODEL == "LIBTOOL" ) {
- printf "\t-rm -f $(%s_OBJS:.o=.lo)\n", OBJS
+ printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS
}
print ""
print "clean ::"
printf "\t-rm -f $(%s_OBJS)\n", OBJS
if ( MODEL == "LIBTOOL" ) {
- printf "\t-rm -f $(%s_OBJS:.o=.lo)\n", OBJS
+ printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS
}
}
}
diff --git a/contrib/ncurses/mk-2nd.awk b/contrib/ncurses/mk-2nd.awk
index 45def01202e3..1f637635228a 100644
--- a/contrib/ncurses/mk-2nd.awk
+++ b/contrib/ncurses/mk-2nd.awk
@@ -1,6 +1,6 @@
-# $Id: mk-2nd.awk,v 1.13 2000/10/14 17:57:02 Johnny.C.Lam Exp $
+# $Id: mk-2nd.awk,v 1.19 2005/01/22 16:30:04 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2004,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 "Software"), #
@@ -27,7 +27,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey
#
# Generate compile-rules for the modules that we are using in libraries or
# programs. We are listing them explicitly because we have turned off the
@@ -36,10 +36,14 @@
# development.
#
# Variables:
-# model
+# model directory into which objects are compiled.
# MODEL (uppercase version of "model"; toupper is not portable)
# echo (yes iff we will show the $(CC) lines)
# subset ("none", "base", "base+ext_funcs" or "termlib")
+# crenames ("yes" or "no", flag to control whether -c & -o options are used)
+# cxxrenames ("yes" or "no", flag to control whether -c & -o options are used)
+# traces ("all" or "DEBUG", to control whether tracing is compiled in)
+# srcdir is expanded when "configure --srcdir" was used
#
# Fields in src/modules:
# $1 = module name
@@ -61,7 +65,14 @@ BEGIN {
if (found == 0) {
print ""
print "# generated by mk-2nd.awk"
- print ""
+ printf "# model: %s\n", model
+ printf "# MODEL: %s\n", MODEL
+ printf "# echo: %s\n", echo
+ printf "# subset: %s\n", subset
+ printf "# crenames: %s\n", crenames
+ printf "# cxxrenames: %s\n", cxxrenames
+ printf "# traces: %s\n", traces
+ printf "# srcdir: %s\n", srcdir
}
using = 1
}
@@ -83,11 +94,13 @@ BEGIN {
if ( $2 == "c++" ) {
compile="CXX"
suffix=".cc"
+ use_c_o=cxxrenames
} else {
compile="CC"
suffix=".c"
+ use_c_o=crenames
}
- printf "../%s/%s.o :\t%s/%s%s", model, $1, $3, $1, suffix
+ printf "../%s/%s$o :\t%s/%s%s", model, $1, $3, $1, suffix
for (n = 4; n <= NF; n++) printf " \\\n\t\t\t%s", $n
print ""
if ( echo == "yes" )
@@ -96,13 +109,31 @@ BEGIN {
atsign="@"
printf "\t@echo 'compiling %s (%s)'\n", $1, model
}
+ printf "\t%s", atsign;
+ if ( use_c_o != "yes" ) {
+ printf "cd ../%s; ", model;
+ }
+ # The choice here is between
+ # base+ext_funcs and
+ # termlib+ext_tinfo
+ # but they may appear in the same value.
+ if ( subset ~ /base/ ) {
+ mycflags=""
+ } else if ( subset ~ /termlib/ ) {
+ mycflags=" -DUSE_TERMLIB"
+ }
+ printf "$(LIBTOOL_COMPILE) $(%s) $(CFLAGS_%s)%s -c ", compile, MODEL, mycflags
if ( $3 == "." || srcdir == "." ) {
dir = $3 "/"
sub("^\\$\\(srcdir\\)/","",dir);
sub("^\\./","",dir);
- printf "\t%scd ../%s; $(LIBTOOL) $(%s) $(CFLAGS_%s) -c ../%s/%s%s%s", atsign, model, compile, MODEL, name, dir, $1, suffix
- } else
- printf "\t%scd ../%s; $(LIBTOOL) $(%s) $(CFLAGS_%s) -c %s/%s%s", atsign, model, compile, MODEL, $3, $1, suffix
+ printf "../%s/%s%s%s", name, dir, $1, suffix
+ } else {
+ printf "%s/%s%s", $3, $1, suffix
+ }
+ if ( use_c_o == "yes" ) {
+ printf " -o ../%s/%s$o", model, $1
+ }
} else {
printf "%s", $1
for (n = 2; n <= NF; n++) printf " %s", $n
diff --git a/contrib/ncurses/mkinstalldirs b/contrib/ncurses/mkinstalldirs
index 8f0503e0382f..ffe7494c4073 100755
--- a/contrib/ncurses/mkinstalldirs
+++ b/contrib/ncurses/mkinstalldirs
@@ -23,7 +23,8 @@ for file in ${1+"$@"} ; do
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp" 1>&2
case "$pathcomp" in
- [a-zA-Z]: ) ;; # DOSISH systems
+ [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]: )
+ ;; # DOSISH systems
* ) mkdir "$pathcomp" || errstatus=$? ;;
esac
fi
diff --git a/contrib/ncurses/ncurses/Makefile.in b/contrib/ncurses/ncurses/Makefile.in
index 9b9a39eb173c..ce35c0340195 100644
--- a/contrib/ncurses/ncurses/Makefile.in
+++ b/contrib/ncurses/ncurses/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.83 2002/04/20 22:02:39 tom Exp $
+# $Id: Makefile.in,v 1.101 2006/10/14 19:08:11 tom Exp $
##############################################################################
-# Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -27,7 +27,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey 1996-2001
+# Author: Thomas E. Dickey 1996-on
#
# Makefile for ncurses source code.
#
@@ -48,11 +48,12 @@
SHELL = /bin/sh
THIS = Makefile
-x = @PROG_EXT@
-
CF_MFLAGS = @cf_cv_makeflags@
@SET_MAKE@
+x = @EXEEXT@
+o = .@OBJEXT@
+
MODEL = @DFT_LWR_MODEL@
DESTDIR = @DESTDIR@
top_srcdir = @top_srcdir@
@@ -65,10 +66,15 @@ includedir = @includedir@
datadir = @datadir@
LIBTOOL = @LIBTOOL@
+LIBTOOL_CLEAN = @LIB_CLEAN@
+LIBTOOL_COMPILE = @LIB_COMPILE@
+LIBTOOL_LINK = @LIB_LINK@
+LIBTOOL_INSTALL = @LIB_INSTALL@
+LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
-INSTALL_PROG = @INSTALL_PROG@
+INSTALL_PROG = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
AR = @AR@
@@ -82,15 +88,21 @@ CPP = @CPP@
CFLAGS = @CFLAGS@
INCDIR = $(srcdir)/../include
-CPPFLAGS = -I../ncurses -I$(srcdir) @CPPFLAGS@ \
- -DHAVE_CONFIG_H
+CPPFLAGS = -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
-HOSTCC = @BUILD_CC@
-HOSTCCFLAGS = @BUILD_CFLAGS@ $(CPPFLAGS)
-HOSTLDFLAGS = @BUILD_LDFLAGS@
-HOSTLIBS = @BUILD_LIBS@
+BUILD_CPPFLAGS = -I../include @BUILD_CPPFLAGS@
+BUILD_CC = @BUILD_CC@
+BUILD_CCFLAGS = -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) -I$(INCDIR) $(BUILD_CPPFLAGS) @BUILD_CFLAGS@
+BUILD_LDFLAGS = @BUILD_LDFLAGS@
+BUILD_LIBS = @BUILD_LIBS@
+
+# The executables built in this directory are used for generating source that
+# is compiled into the build, or are test-programs that are not installed.
+
+BUILD_EXEEXT = @BUILD_EXEEXT@
+x = @PROG_EXT@
CFLAGS_LIBTOOL = $(CCFLAGS)
CFLAGS_NORMAL = $(CCFLAGS)
@@ -114,7 +126,7 @@ NCURSES_MINOR = @NCURSES_MINOR@
REL_VERSION = @cf_cv_rel_version@
ABI_VERSION = @cf_cv_abi_version@
-RANLIB = @RANLIB@
+RANLIB = @LIB_PREP@
IMPORT_LIB = @IMPORT_LIB@
SHARED_LIB = @SHARED_LIB@
@@ -129,22 +141,22 @@ FALLBACK_LIST = @FALLBACK_LIST@
TERMINFO_CAPS = $(top_srcdir)/include/@TERMINFO_CAPS@
AUTO_SRC = \
- ../include/nomacros.h \
- codes.c \
- comp_captab.c \
- expanded.c \
- fallback.c \
+ ./codes.c \
+ ./comp_captab.c \
+ ./expanded.c \
+ ./fallback.c \
+ ./lib_gen.c \
+ ./lib_keyname.c \
+ ./link_test.c \
+ ./names.c \
+ ./unctrl.c \
init_keytry.h \
keys.list \
- lib_gen.c \
- lib_keyname.c \
- link_test.c \
- names.c \
- unctrl.c
+ names-stamp
TEST_DEPS = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
TEST_ARGS = -L../lib -lncurses@DFT_ARG_SUFFIX@
-TEST_LDFLAGS = @LD_MODEL@ $(TEST_ARGS) @LIBS@ @EXTRA_LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@
+TEST_LDFLAGS = @LD_MODEL@ $(TEST_ARGS) @LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@
TEST_PROGS = \
captoinfo$x \
@@ -171,58 +183,61 @@ $(DESTDIR)$(libdir) :
../lib : ; mkdir $@
-fallback.c : $(tinfo)/MKfallback.sh
+./fallback.c : $(tinfo)/MKfallback.sh
sh $(tinfo)/MKfallback.sh @TERMINFO@ @TERMINFO_SRC@ $(FALLBACK_LIST) >$@
-lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h
+./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h
sh $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@
-../include/nomacros.h : $(base)/MKlib_gen.sh ../include/curses.h
- sh $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h | \
- fgrep undef >$@
-
-init_keytry.h: make_keys$x keys.list
- ./make_keys keys.list > $@
+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 >$@
-make_keys$x : \
+make_keys$(BUILD_EXEEXT) : \
$(tinfo)/make_keys.c \
- names.c
- $(HOSTCC) -o $@ $(HOSTCCFLAGS) $(tinfo)/make_keys.c $(HOSTLDFLAGS) $(HOSTLIBS)
+ names-stamp
+ $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
-make_hash$x : \
+make_hash$(BUILD_EXEEXT) : \
$(tinfo)/comp_hash.c \
../include/hashsize.h
- $(HOSTCC) -o $@ $(HOSTCCFLAGS) -DMAIN_PROGRAM $(tinfo)/comp_hash.c $(HOSTLDFLAGS) $(HOSTLIBS)
+ $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) -DMAIN_PROGRAM $(tinfo)/comp_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS)
-expanded.c : $(serial)/MKexpanded.sh
+./expanded.c : $(serial)/MKexpanded.sh
sh $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@
-comp_captab.c: \
- make_hash$x \
+./comp_captab.c: \
+ make_hash$(BUILD_EXEEXT) \
../include/hashsize.h \
$(tinfo)/MKcaptab.awk
sh $(tinfo)/MKcaptab.awk $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ > $@
-lib_keyname.c: keys.list $(base)/MKkeyname.awk
+./lib_keyname.c: keys.list $(base)/MKkeyname.awk
$(AWK) -f $(base)/MKkeyname.awk keys.list > $@
-names.c codes.c: $(tinfo)/MKnames.awk
+names-stamp: $(tinfo)/MKnames.awk
$(AWK) -f $(tinfo)/MKnames.awk $(srcdir)/../include/@TERMINFO_CAPS@
cat namehdr boolnames boolfnames numnames numfnames strnames strfnames nameftr >names.c
cat namehdr boolcodes numcodes strcodes codeftr >codes.c
-rm -f namehdr nameftr codeftr boolnames boolfnames boolcodes numnames numfnames numcodes strnames strfnames strcodes
+ @echo >$@
+
+./names.c: names-stamp
+ @echo made $@
+
+./codes.c: names-stamp
+ @echo made $@
-unctrl.c: $(base)/MKunctrl.awk
+./unctrl.c: $(base)/MKunctrl.awk
echo | $(AWK) -f $(base)/MKunctrl.awk >$@
tags:
- ctags *.[ch]
+ ctags *.[ch] */*.[ch]
@MAKE_UPPER_TAGS@TAGS:
-@MAKE_UPPER_TAGS@ etags *.[ch]
+@MAKE_UPPER_TAGS@ etags *.[ch] */*.[ch]
mostlyclean ::
-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
@@ -230,8 +245,8 @@ mostlyclean ::
clean :: mostlyclean
-rm -f $(AUTO_SRC)
- -rm -f make_keys$x
- -rm -f make_hash$x
+ -rm -f make_keys$(BUILD_EXEEXT)
+ -rm -f make_hash$(BUILD_EXEEXT)
-rm -rf .libs
distclean :: clean
@@ -248,7 +263,7 @@ realclean :: distclean
# These rules build test-programs for the modules that have test-drivers
test_progs : $(TEST_PROGS)
-link_test.c : $(base)/MKlib_gen.sh ../include/curses.h
+./link_test.c : $(base)/MKlib_gen.sh ../include/curses.h
sh $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@
captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS)
@@ -261,15 +276,15 @@ hashmap$x : $(serial)/hashmap.c $(TEST_DEPS)
@ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(TEST_LDFLAGS)
lib_mvcur$x : $(serial)/lib_mvcur.c $(TEST_DEPS) \
- ../@DFT_OBJ_SUBDIR@/dump_entry.o
- @ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../@DFT_OBJ_SUBDIR@/dump_entry.o $(TEST_LDFLAGS)
+ ../@DFT_OBJ_SUBDIR@/dump_entry$o
+ @ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../@DFT_OBJ_SUBDIR@/dump_entry$o $(TEST_LDFLAGS)
-link_test$x : link_test.c $(TEST_DEPS) \
- ../@DFT_OBJ_SUBDIR@/link_test.o
- @ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) ../@DFT_OBJ_SUBDIR@/link_test.o $(TEST_LDFLAGS)
+link_test$x : ./link_test.c $(TEST_DEPS) \
+ ../@DFT_OBJ_SUBDIR@/link_test$o
+ @ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) ../@DFT_OBJ_SUBDIR@/link_test$o $(TEST_LDFLAGS)
-../@DFT_OBJ_SUBDIR@/dump_entry.o:
- cd ../progs && $(MAKE) ../@DFT_OBJ_SUBDIR@/dump_entry.o
+../@DFT_OBJ_SUBDIR@/dump_entry$o:
+ cd ../progs && $(MAKE) ../@DFT_OBJ_SUBDIR@/dump_entry$o
###############################################################################
# The remainder of this file is automatically generated during configuration
diff --git a/contrib/ncurses/ncurses/README b/contrib/ncurses/ncurses/README
index 20c94d3c2895..120aa5b82c1d 100644
--- a/contrib/ncurses/ncurses/README
+++ b/contrib/ncurses/ncurses/README
@@ -1,2 +1,31 @@
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998-2000,2006 Free Software 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: README,v 1.9 2006/04/22 22:19:37 tom Exp $
+-------------------------------------------------------------------------------
For discussion of the package internals, see hackguide.html in the doc/html
directory.
diff --git a/contrib/ncurses/ncurses/README.IZ b/contrib/ncurses/ncurses/README.IZ
new file mode 100644
index 000000000000..78206cdfd712
--- /dev/null
+++ b/contrib/ncurses/ncurses/README.IZ
@@ -0,0 +1,95 @@
+-------------------------------------------------------------------------------
+-- Copyright (c) 2002,2006 Free Software 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: README.IZ,v 1.2 2006/04/22 23:13:05 tom Exp $
+---------------------------------------------------------------------
+
+Here is the patch. I did no testing whatsoever with event watching
+requests present (I need some applications which exersize 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...
+
+Here is the API:
+
+*) two new functions wgetch_events() wgetstrn_event() are introduced,
+ which allow an event-watch specification given as the last argument;
+
+*) if the last argument is NULL, they behave as wgetch() and
+ wgetstrn() (TESTED!);
+
+*) the event specification is a pointer to _nc_eventlist, which
+ contains bookkeeping elements (count and the summary of results),
+ and an array of pointers to _nc_event;
+
+*) each _nc_event is a typed union, with two types supported "as
+ shipped": _NC_EVENT_TIMEOUT_MSEC, _NC_EVENT_FILE. For
+ _NC_EVENT_FILE the fields are fd, flag, and the output field.
+
+*) The only supported flag "as shipped" is _NC_EVENT_FILE_READABLE.
+ If the file was found readable, the return field is set to this,
+ otherwise to 0;
+
+*) If these functions return KEY_EVENT, this means that the return
+ fields in both the _nc_eventlist and _nc_event structures make
+ sense. The field result_flags of _nc_eventlist may have a
+ combination of bits _NC_EVENT_TIMEOUT_MSEC and _NC_EVENT_FILE_READABLE
+ set;
+
+*) The timeout_msec field of _NC_EVENT_TIMEOUT_MSEC _nc_event's is
+ updated on return, even if the return is not KEY_EVENT. However,
+ the change in the value represents only the amount of time spent in
+ waiting for events, not the amount of time spent bookkeeping;
+
+*) the return KEY_EVENT of wgetstrn_event() means that the output
+ string includes the user input typed so far, but the user did not have
+ a chance to press ENTER (or whatever). This call should be
+ repeated (with "shifted" pointer to a buffer, of course) to
+ complete the input;
+
+*) The presence of this extension can be checked via inspecting
+ #ifdef NCURSES_EVENT_VERSION. This symbol is not defined on BeOS,
+ since there is no support for this on BeOS.
+
+Known issues: calls interrupted by KEY_EVENT reset the ESCDELAY
+timer. This is not entirely new, since other synthetic events behave
+the same (see "if (ch >= KEY_MIN)" branch of kgetch()). However,
+KEY_EVENT may be generated in a continuous stream (say, when
+downloading a file), thus this may be more important than with other
+synthetic keys. An additional field in window structure which keeps
+timestamp of the first raw key in the queue may be needed to
+circumvent this.
+
+Another possible issue: KEY_EVENT has a preference over a user input,
+so a stream of KEY_EVENT's can make input hard. Maybe use
+result_flags as in input parameter too, which specifies whether the
+user input should have higher precedence?
+
+Also: I took an opportunity to document kgetch() better.
+
+Enjoy,
+Ilya
diff --git a/contrib/ncurses/ncurses/SigAction.h b/contrib/ncurses/ncurses/SigAction.h
index 53d12bfd42bc..5dfde643f6a1 100644
--- a/contrib/ncurses/ncurses/SigAction.h
+++ b/contrib/ncurses/ncurses/SigAction.h
@@ -32,7 +32,7 @@
****************************************************************************/
/*
- * $Id: SigAction.h,v 1.6 2000/12/10 02:36:10 tom Exp $
+ * $Id: SigAction.h,v 1.8 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>
@@ -59,10 +59,6 @@ typedef struct sigaction sigaction_t;
#if HAVE_SIGVEC
-#if HAVE_LIBC_H
-#include <libc.h>
-#endif
-
#undef SIG_BLOCK
#define SIG_BLOCK 00
@@ -105,12 +101,8 @@ typedef unsigned long sigset_t;
#undef sigaddset
#define sigaddset _nc_sigaddset
-extern NCURSES_EXPORT(int) sigaction (int sig, sigaction_t * sigact, sigaction_t * osigact);
-extern NCURSES_EXPORT(int) sigprocmask (int how, sigset_t *mask, sigset_t *omask);
-extern NCURSES_EXPORT(int) sigemptyset (sigset_t *mask);
-extern NCURSES_EXPORT(int) sigsuspend (sigset_t *mask);
-extern NCURSES_EXPORT(int) sigdelset (sigset_t *mask, int sig);
-extern NCURSES_EXPORT(int) sigaddset (sigset_t *mask, int sig);
+/* tty/lib_tstp.c is the only user */
+#include <base/sigaction.c>
#endif /* HAVE_SIGVEC */
#endif /* HAVE_SIGACTION */
diff --git a/contrib/ncurses/ncurses/base/MKkeyname.awk b/contrib/ncurses/ncurses/base/MKkeyname.awk
index b8cd5da256a2..11dcfe5c2375 100644
--- a/contrib/ncurses/ncurses/base/MKkeyname.awk
+++ b/contrib/ncurses/ncurses/base/MKkeyname.awk
@@ -1,6 +1,6 @@
-# $Id: MKkeyname.awk,v 1.22 2002/05/25 22:25:06 tom Exp $
+# $Id: MKkeyname.awk,v 1.30 2006/05/20 17:35:30 tom Exp $
##############################################################################
-# Copyright (c) 1999-2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1999-2005,2006 Free Software 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,6 +31,7 @@ BEGIN {
print ""
print "#include <curses.priv.h>"
print "#include <tic.h>"
+ print "#include <term_entry.h>"
print ""
print "const struct kn _nc_key_names[] = {"
}
@@ -42,49 +43,93 @@ BEGIN {
END {
printf "\t{ 0, 0 }};\n"
print ""
+ print "#define SIZEOF_TABLE 256"
+ print "static char **keyname_table;"
+ print ""
print "NCURSES_EXPORT(NCURSES_CONST char *) keyname (int c)"
print "{"
- print "static char **table;"
- print "int i;"
- print "char name[20];"
- print "char *p;"
- print ""
- print "\tif (c == -1) return \"-1\";"
+ print " int i;"
+ print " char name[20];"
+ print " char *p;"
+ print " NCURSES_CONST char *result = 0;"
print ""
- print "\tfor (i = 0; _nc_key_names[i].name != 0; i++)"
- print "\t\tif (_nc_key_names[i].code == c)"
- print "\t\t\treturn (NCURSES_CONST char *)_nc_key_names[i].name;"
- print "\tif (c < 0 || c >= 256) return \"UNKNOWN KEY\";"
+ print " if (c == -1) {"
+ print " result = \"-1\";"
+ print " } else {"
+ print " for (i = 0; _nc_key_names[i].name != 0; i++) {"
+ print " if (_nc_key_names[i].code == c) {"
+ print " result = (NCURSES_CONST char *)_nc_key_names[i].name;"
+ print " break;"
+ print " }"
+ print " }"
print ""
- print "\tif (table == 0)"
- print "\t\ttable = typeCalloc(char *, 256);"
- print "\tif (table == 0)"
- print "\t\treturn keyname(256);"
+ print " if (result == 0 && (c >= 0 && c < SIZEOF_TABLE)) {"
+ print " if (keyname_table == 0)"
+ print " keyname_table = typeCalloc(char *, SIZEOF_TABLE);"
+ print " if (keyname_table != 0) {"
+ print " if (keyname_table[c] == 0) {"
+ print " int cc = c;"
+ print " p = name;"
+ print " if (cc >= 128) {"
+ print " strcpy(p, \"M-\");"
+ print " p += 2;"
+ print " cc -= 128;"
+ print " }"
+ print " if (cc < 32)"
+ print " sprintf(p, \"^%c\", cc + '@');"
+ print " else if (cc == 127)"
+ print " strcpy(p, \"^?\");"
+ print " else"
+ print " sprintf(p, \"%c\", cc);"
+ print " keyname_table[c] = strdup(name);"
+ print " }"
+ print " result = keyname_table[c];"
+ print " }"
+ print "#if NCURSES_EXT_FUNCS && NCURSES_XNAMES"
+ print " } else if (result == 0 && cur_term != 0) {"
+ print " int j, k;"
+ print " char * bound;"
+ print " TERMTYPE *tp = &(cur_term->type);"
+ print " int save_trace = _nc_tracing;"
print ""
- print "\tif (table[c] == 0) {"
- print "\t\tp = name;"
- print "\t\tif (c >= 128) {"
- print "\t\t\tstrcpy(p, \"M-\");"
- print "\t\t\tp += 2;"
- print "\t\t\tc -= 128;"
- print "\t\t}"
- print "\t\tif (c < 32)"
- print "\t\t\tsprintf(p, \"^%c\", c + '@');"
- print "\t\telse if (c == 127)"
- print "\t\t\tstrcpy(p, \"^?\");"
- print "\t\telse"
- print "\t\t\tsprintf(p, \"%c\", c);"
- print "\t\ttable[c] = strdup(name);"
- print "\t}"
- print "\treturn (NCURSES_CONST char *)table[c];"
+ print " _nc_tracing = 0; /* prevent recursion via keybound() */"
+ print " for (j = 0; (bound = keybound(c, j)) != 0; ++j) {"
+ print " for(k = STRCOUNT; k < NUM_STRINGS(tp); k++) {"
+ print " if (tp->Strings[k] != 0 && !strcmp(bound, tp->Strings[k])) {"
+ print " result = ExtStrname(tp, k, strnames);"
+ print " break;"
+ print " }"
+ print " }"
+ print " free(bound);"
+ print " if (result != 0)"
+ print " break;"
+ print " }"
+ print " _nc_tracing = save_trace;"
+ print "#endif"
+ print " }"
+ print " }"
+ print " return result;"
print "}"
print ""
print "#if USE_WIDEC_SUPPORT"
print "NCURSES_EXPORT(NCURSES_CONST char *) key_name (wchar_t c)"
print "{"
- print "\tchar *result = keyname((int)c);"
- print "\tif (!strncmp(result, \"M-\", 2)) result = \"UNKNOWN KEY\";"
- print "\treturn result;"
+ print " NCURSES_CONST char *result = keyname((int)c);"
+ print " if (!strncmp(result, \"M-\", 2)) result = 0;"
+ print " return result;"
print "}"
print "#endif"
+ print ""
+ print "#if NO_LEAKS"
+ print "void _nc_keyname_leaks(void)"
+ print "{"
+ print " int j;"
+ print " if (keyname_table != 0) {"
+ print " for (j = 0; j < SIZEOF_TABLE; ++j) {"
+ print " FreeIfNeeded(keyname_table[j]);"
+ print " }"
+ print " FreeAndNull(keyname_table);"
+ print " }"
+ print "}"
+ print "#endif /* NO_LEAKS */"
}
diff --git a/contrib/ncurses/ncurses/base/MKlib_gen.sh b/contrib/ncurses/ncurses/base/MKlib_gen.sh
index e172feb3baaf..30c44fff6f83 100755
--- a/contrib/ncurses/ncurses/base/MKlib_gen.sh
+++ b/contrib/ncurses/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.18 2002/04/30 00:37:55 tom Exp $)
+# ($Id: MKlib_gen.sh,v 1.27 2006/07/01 21:25:39 tom Exp $)
#
##############################################################################
-# Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2005,2006 Free Software 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,14 +39,14 @@
#
# This script accepts a file of prototypes on standard input. It discards
# any that don't have a `generated' comment attached. It then parses each
-# prototype (relying on the fact that none of the macros take function
+# prototype (relying on the fact that none of the macros take function
# pointer or array arguments) and generates C source from it.
#
# Here is what the pipeline stages are doing:
#
# 1. sed: extract prototypes of generated functions
# 2. sed: decorate prototypes with generated arguments a1. a2,...z
-# 3. awk: generate the calls with args matching the formals
+# 3. awk: generate the calls with args matching the formals
# 4. sed: prefix function names in prototypes so the preprocessor won't expand
# them.
# 5. cpp: macro-expand the file so the macro calls turn into C calls
@@ -54,6 +54,14 @@
# 7. sed: squeeze spaces, strip off gen_ prefix, create needed #undef
#
+# keep the editing independent of locale:
+if test "${LANGUAGE+set}" = set; then LANGUAGE=C; export LANGUAGE; fi
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+if test "${LC_COLLATE+set}" = set; then LC_COLLATE=C; export LC_COLLATE; fi
+
preprocessor="$1 -I../include"
AWK="$2"
USE="$3"
@@ -74,19 +82,19 @@ if test "$USE" = implemented ; then
cat >$ED1 <<EOF1
/^extern.*implemented/{
h
- s/^.*implemented:\([^ *]*\).*/P_#if_USE_\1_SUPPORT/p
+ s/^.*implemented:\([^ *]*\).*/P_POUNDCif_USE_\1_SUPPORT/p
g
s/^extern \([^;]*\);.*/\1/p
g
- s/^.*implemented:\([^ *]*\).*/P_#endif/p
+ s/^.*implemented:\([^ *]*\).*/P_POUNDCendif/p
}
/^extern.*generated/{
h
- s/^.*generated:\([^ *]*\).*/P_#if_USE_\1_SUPPORT/p
+ s/^.*generated:\([^ *]*\).*/P_POUNDCif_USE_\1_SUPPORT/p
g
s/^extern \([^;]*\);.*/\1/p
g
- s/^.*generated:\([^ *]*\).*/P_#endif/p
+ s/^.*generated:\([^ *]*\).*/P_POUNDCendif/p
}
EOF1
else
@@ -94,11 +102,11 @@ else
cat >$ED1 <<EOF1
/^extern.*${ALL}/{
h
- s/^.*${ALL}:\([^ *]*\).*/P_#if_USE_\1_SUPPORT/p
+ s/^.*${ALL}:\([^ *]*\).*/P_POUNDCif_USE_\1_SUPPORT/p
g
s/^extern \([^;]*\);.*/\1/p
g
- s/^.*${ALL}:\([^ *]*\).*/P_#endif/p
+ s/^.*${ALL}:\([^ *]*\).*/P_POUNDCendif/p
}
EOF1
fi
@@ -126,13 +134,14 @@ cat >$ED2 <<EOF2
s/)/ z)/
s/\.\.\. z)/...)/
:nc
- /(/s// ( /
+ s/(/ ( /
s/)/ )/
EOF2
cat >$ED3 <<EOF3
/^P_/{
- s/^P_#if_/#if /
+ s/^P_POUNDCif_/#if /
+ s/^P_POUNDCendif/#endif/
s/^P_//
b done
}
@@ -143,7 +152,7 @@ cat >$ED3 <<EOF3
s/ )/)/g
s/ gen_/ /
s/^M_/#undef /
- /^%%/s// /
+ s/^[ ]*%[ ]*%[ ]*/ /
:done
EOF3
@@ -167,12 +176,12 @@ cat >$AW1 <<\EOF1
BEGIN {
skip=0;
}
-/^P_#if/ {
+/^P_POUNDCif/ {
print "\n"
print $0
skip=0;
}
-/^P_#endif/ {
+/^P_POUNDCendif/ {
print $0
skip=1;
}
@@ -195,6 +204,10 @@ $0 !~ /^P_/ {
returnType = "SP";
} else if ( $first == "WINDOW" ) {
returnType = "Win";
+ } else if ( $first == "attr_t" || $second == "attrset" || $second == "standout" || $second == "standend" || $second == "wattrset" || $second == "wstandout" || $second == "wstandend" ) {
+ returnType = "Attr";
+ } else if ( $first == "bool" || $first == "NCURSES_BOOL" ) {
+ returnType = "Bool";
} else if ( $second == "*" ) {
returnType = "Ptr";
} else {
@@ -244,13 +257,17 @@ $0 !~ /^P_/ {
comma = ""
num = 0;
pointer = 0;
+ va_list = 0;
+ varargs = 0;
argtype = ""
for (i = myfunc; i <= NF; i++) {
ch = $i;
if ( ch == "*" )
pointer = 1;
else if ( ch == "va_list" )
- pointer = 1;
+ va_list = 1;
+ else if ( ch == "..." )
+ varargs = 1;
else if ( ch == "char" )
argtype = "char";
else if ( ch == "int" )
@@ -263,7 +280,11 @@ $0 !~ /^P_/ {
argtype = "attr";
if ( ch == "," || ch == ")" ) {
- if (pointer) {
+ if (va_list) {
+ call = call "%s"
+ } else if (varargs) {
+ call = call "%s"
+ } else if (pointer) {
if ( argtype == "char" ) {
call = call "%s"
comma = comma "_nc_visbuf2(" num ","
@@ -282,10 +303,17 @@ $0 !~ /^P_/ {
comma = comma "(long)"
}
}
- if (ch == ",")
+ if (ch == ",") {
args = args comma "a" ++num;
- else if ( argcount != 0 && $check != "..." )
- args = args comma "z"
+ } else if ( argcount != 0 ) {
+ if ( va_list ) {
+ args = args comma "\"va_list\""
+ } else if ( varargs ) {
+ args = args comma "\"...\""
+ } else {
+ args = args comma "z"
+ }
+ }
call = call ch
if (pointer == 0 && argcount != 0 && argtype != "" )
args = args ")"
@@ -352,6 +380,7 @@ BEGIN {
print " * pull most of the rest of the library into your link image."
}
print " */"
+ print "#define NCURSES_ATTR_T int"
print "#include <curses.priv.h>"
print ""
}
@@ -366,6 +395,7 @@ EOF1
cat >$TMP <<EOF
#include <ncurses_cfg.h>
+#undef NCURSES_NOMACROS
#include <curses.h>
DECLARATIONS
@@ -379,7 +409,10 @@ sed -n -f $ED1 \
| sed -e 's/^\([a-z_][a-z_]*[ *]*\)/\1 gen_/' -e 's/ / /g' >>$TMP
$preprocessor $TMP 2>/dev/null \
-| sed -e 's/ / /g' -e 's/^ //' \
+| sed \
+ -e 's/ / /g' \
+ -e 's/^ //' \
+ -e 's/^_Bool/bool/' \
| $AWK -f $AW2 \
| sed -f $ED3 \
| sed \
diff --git a/contrib/ncurses/ncurses/base/MKunctrl.awk b/contrib/ncurses/ncurses/base/MKunctrl.awk
index d8a6587e2c69..e153fa8c95c4 100644
--- a/contrib/ncurses/ncurses/base/MKunctrl.awk
+++ b/contrib/ncurses/ncurses/base/MKunctrl.awk
@@ -1,6 +1,6 @@
-# $Id: MKunctrl.awk,v 1.9 2001/06/02 23:59:20 skimo Exp $
+# $Id: MKunctrl.awk,v 1.11 2005/12/17 22:48:37 tom Exp $
##############################################################################
-# Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2004,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 "Software"), #
@@ -41,6 +41,7 @@ BEGIN {
END {
print "NCURSES_EXPORT(NCURSES_CONST char *) unctrl (register chtype ch)"
print "{"
+
printf "static const char* const table[] = {"
for ( ch = 0; ch < 256; ch++ ) {
gap = ","
@@ -63,7 +64,44 @@ END {
printf "%s", gap
}
print "};"
+
+ print ""
+ print "#if NCURSES_EXT_FUNCS"
+ printf "static const char* const table2[] = {"
+ for ( ch = 128; ch < 160; ch++ ) {
+ gap = ","
+ if ((ch % 8) == 0)
+ printf "\n "
+ if (ch >= 128 && ch < 160) {
+ printf "\"\\%03o\"", ch
+ gap = gap " "
+ }
+ if (ch == 255)
+ gap = "\n"
+ else if (((ch + 1) % 8) != 0)
+ gap = gap " "
+ printf "%s", gap
+ }
+ print "};"
+ print "#endif /* NCURSES_EXT_FUNCS */"
+
+ print ""
+ print "\tint check = ChCharOf(ch);"
+ print "\tconst char *result;"
print ""
- print "\treturn (NCURSES_CONST char *)table[ChCharOf(ch)];"
+ print "\tif (check >= 0 && check < (int)SIZEOF(table)) {"
+ print "#if NCURSES_EXT_FUNCS"
+ print "\t\tif ((SP != 0)"
+ print "\t\t && (SP->_legacy_coding > 1)"
+ print "\t\t && (check >= 128)"
+ print "\t\t && (check < 160))"
+ print "\t\t\tresult = table2[check - 128];"
+ print "\t\telse"
+ print "#endif /* NCURSES_EXT_FUNCS */"
+ print "\t\t\tresult = table[check];"
+ print "\t} else {"
+ print "\t\tresult = 0;"
+ print "\t}"
+ print "\treturn (NCURSES_CONST char *)result;"
print "}"
}
diff --git a/contrib/ncurses/ncurses/base/README b/contrib/ncurses/ncurses/base/README
index ffa16963e9e3..4677e42e6176 100644
--- a/contrib/ncurses/ncurses/base/README
+++ b/contrib/ncurses/ncurses/base/README
@@ -1,4 +1,32 @@
--- $Id: README,v 1.1 1998/11/14 22:58:22 tom Exp $
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software 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: README,v 1.2 2006/04/22 22:19:37 tom Exp $
+-------------------------------------------------------------------------------
The functions in this directory are the generic (not device-specific) modules
of ncurses.
diff --git a/contrib/ncurses/ncurses/base/define_key.c b/contrib/ncurses/ncurses/base/define_key.c
index 7fc885f8d9b3..3b5299a338e4 100644
--- a/contrib/ncurses/ncurses/base/define_key.c
+++ b/contrib/ncurses/ncurses/base/define_key.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,30 +27,35 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1997 *
+ * Author: Thomas E. Dickey 1997-on *
****************************************************************************/
#include <curses.priv.h>
-MODULE_ID("$Id: define_key.c,v 1.6 2000/12/10 02:43:26 tom Exp $")
+MODULE_ID("$Id: define_key.c,v 1.10 2006/06/17 18:19:48 tom Exp $")
NCURSES_EXPORT(int)
-define_key
-(char *str, int keycode)
+define_key(const char *str, int keycode)
{
int code = ERR;
T((T_CALLED("define_key(%s,%d)"), _nc_visbuf(str), keycode));
- if (keycode > 0) {
+ if (SP == 0) {
+ code = ERR;
+ } else if (keycode > 0) {
if (str != 0) {
define_key(str, 0);
} else if (has_key(keycode)) {
- while (_nc_remove_key(&(SP->_keytry), keycode))
+ while (_nc_remove_key(&(SP->_keytry), (unsigned) keycode))
code = OK;
}
if (str != 0) {
- (void) _nc_add_to_try(&(SP->_keytry), str, keycode);
- code = OK;
+ if (key_defined(str) == 0) {
+ (void) _nc_add_to_try(&(SP->_keytry), str, (unsigned) keycode);
+ code = OK;
+ } else {
+ code = ERR;
+ }
}
} else {
while (_nc_remove_string(&(SP->_keytry), str))
diff --git a/contrib/ncurses/ncurses/base/key_defined.c b/contrib/ncurses/ncurses/base/key_defined.c
new file mode 100644
index 000000000000..dac188748770
--- /dev/null
+++ b/contrib/ncurses/ncurses/base/key_defined.c
@@ -0,0 +1,76 @@
+/****************************************************************************
+ * Copyright (c) 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"), 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, 2003 *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: key_defined.c,v 1.3 2003/05/17 23:12:27 tom Exp $")
+
+static int
+find_definition(struct tries *tree, const char *str)
+{
+ struct tries *ptr;
+ int result = 0;
+
+ if (str != 0 && *str != '\0') {
+ for (ptr = tree; ptr != 0; ptr = ptr->sibling) {
+ if (UChar(*str) == UChar(ptr->ch)) {
+ if (str[1] == '\0' && ptr->child != 0) {
+ result = -1;
+ } else if ((result = find_definition(ptr->child, str + 1)) == 0) {
+ result = ptr->value;
+ } else if (str[1] == '\0') {
+ result = -1;
+ }
+ }
+ if (result != 0)
+ break;
+ }
+ }
+ return (result);
+}
+
+/*
+ * Returns the keycode associated with the given string. If none is found,
+ * return 0. If the string is only a prefix to other strings, return -1.
+ */
+NCURSES_EXPORT(int)
+key_defined(const char *str)
+{
+ int code = ERR;
+
+ T((T_CALLED("key_defined(%s)"), _nc_visbuf(str)));
+ if (SP != 0 && str != 0) {
+ code = find_definition(SP->_keytry, str);
+ }
+
+ returnCode(code);
+}
diff --git a/contrib/ncurses/ncurses/base/keybound.c b/contrib/ncurses/ncurses/base/keybound.c
index c8ca2856bb97..2995714ba936 100644
--- a/contrib/ncurses/ncurses/base/keybound.c
+++ b/contrib/ncurses/ncurses/base/keybound.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2005,2006 Free 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,20 +27,25 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1999 *
+ * Author: Thomas E. Dickey 1999-on *
****************************************************************************/
#include <curses.priv.h>
-MODULE_ID("$Id: keybound.c,v 1.3 2000/12/10 02:43:26 tom Exp $")
+MODULE_ID("$Id: keybound.c,v 1.7 2006/06/17 18:19:24 tom Exp $")
/*
* Returns the count'th string definition which is associated with the
* given keycode. The result is malloc'd, must be freed by the caller.
*/
-
NCURSES_EXPORT(char *)
keybound(int code, int count)
{
- return _nc_expand_try(SP->_key_ok, code, &count, 0);
+ char *result = 0;
+
+ T((T_CALLED("keybound(%d,%d)"), code, count));
+ if (SP != 0 && code >= 0) {
+ result = _nc_expand_try(SP->_keytry, (unsigned) code, &count, 0);
+ }
+ returnPtr(result);
}
diff --git a/contrib/ncurses/ncurses/base/keyok.c b/contrib/ncurses/ncurses/base/keyok.c
index e3b4be297c17..4c9950600c33 100644
--- a/contrib/ncurses/ncurses/base/keyok.c
+++ b/contrib/ncurses/ncurses/base/keyok.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2000,2006 Free 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: keyok.c,v 1.5 2000/12/10 02:43:26 tom Exp $")
+MODULE_ID("$Id: keyok.c,v 1.6 2006/06/17 18:18:43 tom Exp $")
/*
* Enable (or disable) ncurses' interpretation of a keycode by adding (or
@@ -52,21 +52,24 @@ keyok(int c, bool flag)
char *s;
T((T_CALLED("keyok(%d,%d)"), c, flag));
- if (flag) {
- while ((s = _nc_expand_try(SP->_key_ok, c, &count, 0)) != 0
- && _nc_remove_key(&(SP->_key_ok), c)) {
- _nc_add_to_try(&(SP->_keytry), s, c);
- free(s);
- code = OK;
- count = 0;
- }
- } else {
- while ((s = _nc_expand_try(SP->_keytry, c, &count, 0)) != 0
- && _nc_remove_key(&(SP->_keytry), c)) {
- _nc_add_to_try(&(SP->_key_ok), s, c);
- free(s);
- code = OK;
- count = 0;
+ if (c >= 0) {
+ unsigned ch = (unsigned) c;
+ if (flag) {
+ while ((s = _nc_expand_try(SP->_key_ok, ch, &count, 0)) != 0
+ && _nc_remove_key(&(SP->_key_ok), ch)) {
+ _nc_add_to_try(&(SP->_keytry), s, ch);
+ free(s);
+ code = OK;
+ count = 0;
+ }
+ } else {
+ while ((s = _nc_expand_try(SP->_keytry, ch, &count, 0)) != 0
+ && _nc_remove_key(&(SP->_keytry), ch)) {
+ _nc_add_to_try(&(SP->_key_ok), s, ch);
+ free(s);
+ code = OK;
+ count = 0;
+ }
}
}
returnCode(code);
diff --git a/contrib/ncurses/ncurses/base/legacy_coding.c b/contrib/ncurses/ncurses/base/legacy_coding.c
new file mode 100644
index 000000000000..1c2f160a605d
--- /dev/null
+++ b/contrib/ncurses/ncurses/base/legacy_coding.c
@@ -0,0 +1,48 @@
+/****************************************************************************
+ * Copyright (c) 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 *
+ * "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: legacy_coding.c,v 1.2 2005/12/17 23:38:17 tom Exp $")
+
+NCURSES_EXPORT(int)
+use_legacy_coding(int level)
+{
+ int result = ERR;
+
+ T((T_CALLED("use_legacy_coding(%d)"), level));
+ if (level >= 0 && level <= 2 && SP != 0) {
+ result = SP->_legacy_coding;
+ SP->_legacy_coding = level;
+ }
+ returnCode(result);
+}
diff --git a/contrib/ncurses/ncurses/base/lib_addch.c b/contrib/ncurses/ncurses/base/lib_addch.c
index 423a45e6abe4..9d73edfde5de 100644
--- a/contrib/ncurses/ncurses/base/lib_addch.c
+++ b/contrib/ncurses/ncurses/base/lib_addch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,9 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_addch.c,v 1.64 2002/05/11 18:16:43 tom Exp $")
+MODULE_ID("$Id: lib_addch.c,v 1.104 2006/10/14 20:31:19 tom Exp $")
+
+static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
/*
* Ugly microtweaking alert. Everything from here to end of module is
@@ -49,29 +51,50 @@ MODULE_ID("$Id: lib_addch.c,v 1.64 2002/05/11 18:16:43 tom Exp $")
*/
/* 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 inline NCURSES_CH_T
+static NCURSES_INLINE NCURSES_CH_T
render_char(WINDOW *win, NCURSES_CH_T ch)
/* compute a rendition of the given char correct for the current context */
{
- attr_t a = win->_attrs;
+ attr_t a = WINDOW_ATTRS(win);
+ int pair = GetPair(ch);
- if (ISBLANK(ch) && AttrOf(ch) == A_NORMAL) {
- /* color in attrs has precedence over bkgrnd */
+ if (ISBLANK(ch)
+ && AttrOf(ch) == A_NORMAL
+ && pair == 0) {
+ /* color/pair in attrs has precedence over bkgrnd */
ch = win->_nc_bkgd;
- SetAttr(ch, a | (AttrOf(win->_nc_bkgd) & COLOR_MASK(a)));
+ SetAttr(ch, a | AttrOf(win->_nc_bkgd));
+ if ((pair = GET_WINDOW_PAIR(win)) == 0)
+ pair = GetPair(win->_nc_bkgd);
+ SetPair(ch, pair);
} else {
/* color in attrs has precedence over bkgrnd */
- a |= (AttrOf(win->_nc_bkgd) & A_ATTRIBUTES) & COLOR_MASK(a);
+ a |= AttrOf(win->_nc_bkgd) & COLOR_MASK(a);
/* color in ch has precedence */
+ if (pair == 0) {
+ if ((pair = GET_WINDOW_PAIR(win)) == 0)
+ pair = GetPair(win->_nc_bkgd);
+ }
+#if 0
+ if (pair > 255) {
+ NCURSES_CH_T fixme = ch;
+ SetPair(fixme, pair);
+ }
+#endif
AddAttr(ch, (a & COLOR_MASK(AttrOf(ch))));
+ SetPair(ch, pair);
}
- TR(TRACE_VIRTPUT, ("bkg = %s, attrs = %s -> ch = %s",
- _tracech_t2(1, CHREF(win->_nc_bkgd)),
- _traceattr(win->_attrs),
- _tracech_t2(3, CHREF(ch))));
+ TR(TRACE_VIRTPUT,
+ ("render_char bkg %s (%d), attrs %s (%d) -> ch %s (%d)",
+ _tracech_t2(1, CHREF(win->_nc_bkgd)),
+ GetPair(win->_nc_bkgd),
+ _traceattr(WINDOW_ATTRS(win)),
+ GET_WINDOW_PAIR(win),
+ _tracech_t2(3, CHREF(ch)),
+ GetPair(ch)));
return (ch);
}
@@ -99,81 +122,300 @@ _nc_render(WINDOW *win, NCURSES_CH_T ch)
#define CHECK_POSITION(win, x, y) /* nothing */
#endif
-static inline int
+static bool
+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 {
+ *ypos += 1;
+ }
+ return result;
+}
+
+/*
+ * The _WRAPPED flag is useful only for telling an application that we've just
+ * wrapped the cursor. We don't do anything with this flag except set it when
+ * wrapping, and clear it whenever we move the cursor. If we try to wrap at
+ * the lower-right corner of a window, we cannot move the cursor (since that
+ * wouldn't be legal). So we return an error (which is what SVr4 does).
+ * Unlike SVr4, we can successfully add a character to the lower-right corner
+ * (Solaris 2.6 does this also, however).
+ */
+static int
+wrap_to_next_line(WINDOW *win)
+{
+ win->_flags |= _WRAPPED;
+ if (newline_forces_scroll(win, &(win->_cury))) {
+ win->_curx = win->_maxx;
+ if (!win->_scroll)
+ return (ERR);
+ scroll(win);
+ }
+ win->_curx = 0;
+ return (OK);
+}
+
+#if USE_WIDEC_SUPPORT
+static int waddch_literal(WINDOW *, NCURSES_CH_T);
+/*
+ * Fill the given number of cells with blanks using the current background
+ * rendition. This saves/restores the current x-position.
+ */
+static void
+fill_cells(WINDOW *win, int count)
+{
+ NCURSES_CH_T blank = blankchar;
+ int save_x = win->_curx;
+ int save_y = win->_cury;
+
+ while (count-- > 0) {
+ if (waddch_literal(win, blank) == ERR)
+ break;
+ }
+ win->_curx = save_x;
+ win->_cury = save_y;
+}
+#endif
+
+/*
+ * Build up the bytes for a multibyte character, returning the length when
+ * complete (a positive number), -1 for error and -2 for incomplete.
+ */
+#if USE_WIDEC_SUPPORT
+NCURSES_EXPORT(int)
+_nc_build_wch(WINDOW *win, ARG_CH_T ch)
+{
+ char *buffer = WINDOW_EXT(win, addch_work);
+ int len;
+ int x = win->_curx;
+ int y = win->_cury;
+ mbstate_t state;
+ wchar_t result;
+
+ if ((WINDOW_EXT(win, addch_used) != 0) &&
+ (WINDOW_EXT(win, addch_x) != x ||
+ WINDOW_EXT(win, addch_y) != y)) {
+ /* discard the incomplete multibyte character */
+ WINDOW_EXT(win, addch_used) = 0;
+ TR(TRACE_VIRTPUT,
+ ("Alert discarded multibyte on move (%d,%d) -> (%d,%d)",
+ WINDOW_EXT(win, addch_y), WINDOW_EXT(win, addch_x),
+ y, x));
+ }
+ WINDOW_EXT(win, addch_x) = x;
+ WINDOW_EXT(win, addch_y) = y;
+
+ init_mb(state);
+ buffer[WINDOW_EXT(win, addch_used)] = CharOf(CHDEREF(ch));
+ WINDOW_EXT(win, addch_used) += 1;
+ buffer[WINDOW_EXT(win, addch_used)] = '\0';
+ if ((len = mbrtowc(&result,
+ buffer,
+ WINDOW_EXT(win, addch_used), &state)) > 0) {
+ attr_t attrs = AttrOf(CHDEREF(ch));
+ SetChar(CHDEREF(ch), result, attrs);
+ WINDOW_EXT(win, addch_used) = 0;
+ } else {
+ if (len == -1) {
+ /*
+ * An error occurred. We could either discard everything,
+ * or assume that the error was in the previous input.
+ * Try the latter.
+ */
+ TR(TRACE_VIRTPUT, ("Alert! mbrtowc returns error"));
+ buffer[0] = CharOf(CHDEREF(ch));
+ WINDOW_EXT(win, addch_used) = 1;
+ }
+ }
+ return len;
+}
+#endif /* USE_WIDEC_SUPPORT */
+
+static
+#if !USE_WIDEC_SUPPORT /* cannot be inline if it is recursive */
+NCURSES_INLINE
+#endif
+int
waddch_literal(WINDOW *win, NCURSES_CH_T ch)
{
int x;
+ int y;
struct ldat *line;
x = win->_curx;
+ y = win->_cury;
- CHECK_POSITION(win, x, win->_cury);
-
- /*
- * If we're trying to add a character at the lower-right corner more
- * than once, fail. (Moving the cursor will clear the flag).
- */
-#if 0 /* Solaris 2.6 allows updating the corner more than once */
- if (win->_flags & _WRAPPED) {
- if (x >= win->_maxx)
- return (ERR);
- win->_flags &= ~_WRAPPED;
- }
-#endif
+ CHECK_POSITION(win, x, y);
ch = render_char(win, ch);
- TR(TRACE_VIRTPUT, ("win attr = %s", _traceattr(win->_attrs)));
- line = win->_line + win->_cury;
+ line = win->_line + y;
CHANGED_CELL(line, x);
- line->text[x++] = ch;
+ /*
+ * Build up multibyte characters until we have a wide-character.
+ */
if_WIDEC({
- if (wcwidth(CharOf(ch)) > 1)
- AddAttr(line->text[x++], WA_NAC);
+ if (WINDOW_EXT(win, addch_used) != 0 || !Charable(ch)) {
+ int len = _nc_build_wch(win, CHREF(ch));
+
+ if (len > 0) {
+ if (is8bits(CharOf(ch))) {
+ const char *s = unctrl((chtype) CharOf(ch));
+ if (s[1] != 0) {
+ return waddstr(win, s);
+ }
+ }
+ } else {
+ return OK;
+ }
+ }
});
- TR(TRACE_VIRTPUT, ("(%d, %d) = %s", win->_cury, x, _tracech_t(CHREF(ch))));
- if (x > win->_maxx) {
- /*
- * The _WRAPPED flag is useful only for telling an application that
- * we've just wrapped the cursor. We don't do anything with this flag
- * except set it when wrapping, and clear it whenever we move the
- * cursor. If we try to wrap at the lower-right corner of a window, we
- * cannot move the cursor (since that wouldn't be legal). So we return
- * an error (which is what SVr4 does). Unlike SVr4, we can
- * successfully add a character to the lower-right corner (Solaris 2.6
- * does this also, however).
- */
- win->_flags |= _WRAPPED;
- if (++win->_cury > win->_regbottom) {
- win->_cury = win->_regbottom;
- win->_curx = win->_maxx;
- if (!win->_scroll)
- return (ERR);
- scroll(win);
+ /*
+ * Non-spacing characters are added to the current cell.
+ *
+ * Spacing characters that are wider than one column require some display
+ * adjustments.
+ */
+ if_WIDEC({
+ int len = wcwidth(CharOf(ch));
+ int i;
+ int j;
+
+ if (len == 0) { /* non-spacing */
+ if ((x > 0 && y >= 0)
+ || ((y = win->_cury - 1) >= 0 &&
+ (x = win->_maxx) > 0)) {
+ wchar_t *chars = (win->_line[y].text[x - 1].chars);
+ for (i = 0; i < CCHARW_MAX; ++i) {
+ if (chars[i] == 0) {
+ TR(TRACE_VIRTPUT,
+ ("added non-spacing %d: %x",
+ x, (int) CharOf(ch)));
+ chars[i] = CharOf(ch);
+ break;
+ }
+ }
+ }
+ goto testwrapping;
+ } else if (len > 1) { /* multi-column characters */
+ /*
+ * Check if the character will fit on the current line. If it does
+ * not fit, fill in the remainder of the line with blanks. and
+ * move to the next line.
+ */
+ if (len > win->_maxx + 1) {
+ TR(TRACE_VIRTPUT, ("character will not fit"));
+ return ERR;
+ } else if (x + len > win->_maxx + 1) {
+ int count = win->_maxx + 1 - x;
+ TR(TRACE_VIRTPUT, ("fill %d remaining cells", count));
+ fill_cells(win, count);
+ if (wrap_to_next_line(win) == ERR)
+ return ERR;
+ x = win->_curx;
+ y = win->_cury;
+ }
+ /*
+ * Check for cells which are orphaned by adding this character, set
+ * those to blanks.
+ *
+ * FIXME: this actually could fill j-i cells, more complicated to
+ * setup though.
+ */
+ for (i = 0; i < len; ++i) {
+ if (isWidecBase(win->_line[y].text[x + i])) {
+ break;
+ } else if (isWidecExt(win->_line[y].text[x + i])) {
+ for (j = i; x + j <= win->_maxx; ++j) {
+ if (!isWidecExt(win->_line[y].text[x + j])) {
+ TR(TRACE_VIRTPUT, ("fill %d orphan cells", j));
+ fill_cells(win, j);
+ break;
+ }
+ }
+ break;
+ }
+ }
+ /*
+ * Finally, add the cells for this character.
+ */
+ for (i = 0; i < len; ++i) {
+ NCURSES_CH_T value = ch;
+ SetWidecExt(value, i);
+ TR(TRACE_VIRTPUT, ("multicolumn %d:%d (%d,%d)",
+ i + 1, len,
+ win->_begy + y, win->_begx + x));
+ line->text[x] = value;
+ CHANGED_CELL(line, x);
+ ++x;
+ }
+ goto testwrapping;
}
- win->_curx = 0;
- return (OK);
+ });
+
+ /*
+ * Single-column characters.
+ */
+ line->text[x++] = ch;
+ /*
+ * This label is used only for wide-characters.
+ */
+ if_WIDEC(
+ testwrapping:
+ );
+
+ TR(TRACE_VIRTPUT, ("cell (%ld, %ld..%d) = %s",
+ (long) win->_cury, (long) win->_curx, x - 1,
+ _tracech_t(CHREF(ch))));
+
+ if (x > win->_maxx) {
+ return wrap_to_next_line(win);
}
win->_curx = x;
return OK;
}
-static inline int
+static NCURSES_INLINE int
waddch_nosync(WINDOW *win, const NCURSES_CH_T ch)
/* the workhorse function -- add a character to the given window */
{
- int x, y;
- chtype t = 0;
- const char *s = 0;
+ NCURSES_SIZE_T x, y;
+ chtype t = CharOf(ch);
+ const char *s = unctrl(t);
+ /*
+ * If we are using the alternate character set, forget about locale.
+ * Otherwise, if unctrl() returns a single-character or the locale
+ * claims the code is printable, treat it that way.
+ */
if ((AttrOf(ch) & A_ALTCHARSET)
- || ((t = CharOf(ch)) > 127)
- || ((s = unctrl(t))[1] == 0))
+ || (
+#if USE_WIDEC_SUPPORT
+ (SP != 0 && SP->_legacy_coding) &&
+#endif
+ s[1] == 0
+ )
+ || (
+ isprint(t)
+#if USE_WIDEC_SUPPORT
+ || ((SP == 0 || !SP->_legacy_coding) &&
+ (WINDOW_EXT(win, addch_used)
+ || !_nc_is_charable(CharOf(ch))))
+#endif
+ ))
return waddch_literal(win, ch);
+ /*
+ * Handle carriage control and other codes that are not printable, or are
+ * known to expand to more than one character according to unctrl().
+ */
x = win->_curx;
y = win->_cury;
@@ -187,7 +429,7 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch)
*/
if ((!win->_scroll && (y == win->_regbottom))
|| (x <= win->_maxx)) {
- NCURSES_CH_T blank = NewChar2(BLANK_TEXT, BLANK_ATTR);
+ NCURSES_CH_T blank = blankchar;
AddAttr(blank, AttrOf(ch));
while (win->_curx < x) {
if (waddch_literal(win, blank) == ERR)
@@ -197,9 +439,8 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch)
} else {
wclrtoeol(win);
win->_flags |= _WRAPPED;
- if (++y > win->_regbottom) {
+ if (newline_forces_scroll(win, &y)) {
x = win->_maxx;
- y--;
if (win->_scroll) {
scroll(win);
x = 0;
@@ -211,8 +452,7 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch)
break;
case '\n':
wclrtoeol(win);
- if (++y > win->_regbottom) {
- y--;
+ if (newline_forces_scroll(win, &y)) {
if (win->_scroll)
scroll(win);
else
@@ -253,7 +493,7 @@ _nc_waddch_nosync(WINDOW *win, const NCURSES_CH_T c)
}
/*
- * The versions below call _nc_synhook(). We wanted to avoid this in the
+ * The versions below call _nc_synchook(). We wanted to avoid this in the
* version exported for string puts; they'll call _nc_synchook once at end
* of run.
*/
@@ -299,41 +539,3 @@ wechochar(WINDOW *win, const chtype ch)
TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
return (code);
}
-
-#if USE_WIDEC_SUPPORT
-NCURSES_EXPORT(int)
-wadd_wch(WINDOW *win, const cchar_t * wch)
-{
- int code = ERR;
-
- TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("wadd_wch(%p, %s)"), win,
- _tracech_t(wch)));
-
- if (win && (waddch_nosync(win, *wch) != ERR)) {
- _nc_synchook(win);
- code = OK;
- }
-
- TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
- return (code);
-}
-
-NCURSES_EXPORT(int)
-wecho_wchar(WINDOW *win, const cchar_t * wch)
-{
- int code = ERR;
-
- TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("wecho_wchar(%p, %s)"), win,
- _tracech_t(wch)));
-
- if (win && (waddch_nosync(win, *wch) != ERR)) {
- bool save_immed = win->_immed;
- win->_immed = TRUE;
- _nc_synchook(win);
- win->_immed = save_immed;
- code = OK;
- }
- TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
- return (code);
-}
-#endif /* USE_WIDEC_SUPPORT */
diff --git a/contrib/ncurses/ncurses/base/lib_addstr.c b/contrib/ncurses/ncurses/base/lib_addstr.c
index 343555a39aff..b7a0b40ef948 100644
--- a/contrib/ncurses/ncurses/base/lib_addstr.c
+++ b/contrib/ncurses/ncurses/base/lib_addstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2006 Free 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,10 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * *
+ * Rewritten 2001-2004 to support wide-characters by *
+ * Sven Verdoolaege *
+ * Thomas Dickey *
****************************************************************************/
/*
@@ -40,68 +44,28 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_addstr.c,v 1.31 2001/12/19 01:05:52 tom Exp $")
-
-#if USE_WIDEC_SUPPORT
-#define CONV_DATA mbstate_t state; wchar_t cached; int clen = 0
-#define CONV_INIT memset (&state, '\0', sizeof (state)); cached = (wchar_t)WEOF
-#define NEXT_CHAR(s,ch, n) \
- { \
- int len, i = 0; \
- memset(&ch, 0, sizeof(cchar_t)); \
- if (cached != (wchar_t) WEOF) { \
- ch.chars[i++] = cached; \
- cached = (wchar_t) WEOF; \
- n -= clen; \
- s += clen; \
- } \
- for (; i < CCHARW_MAX && n > 0; ++i) { \
- if ((len = mbrtowc(&ch.chars[i], s, n, &state)) < 0) { \
- code = ERR; \
- break; \
- } \
- if (i == 0 || wcwidth(ch.chars[i]) == 0) { \
- n -= len; \
- s += len; \
- } else { \
- cached = ch.chars[i]; \
- clen = len; \
- ch.chars[i] = L'\0'; \
- break; \
- } \
- } \
- if (code == ERR) \
- break; \
- }
-#else
-#define CONV_DATA
-#define CONV_INIT
-#define NEXT_CHAR(s,ch, n) \
- ch = *s++; \
- --n
-#endif
+MODULE_ID("$Id: lib_addstr.c,v 1.46 2006/05/27 19:22:19 tom Exp $")
NCURSES_EXPORT(int)
-waddnstr(WINDOW *win, const char *const astr, int n)
+waddnstr(WINDOW *win, const char *astr, int n)
{
- unsigned const char *str = (unsigned const char *) astr;
+ const char *str = astr;
int code = ERR;
- CONV_DATA;
- T((T_CALLED("waddnstr(%p,%s,%d)"), win, _nc_visbuf(astr), n));
+ T((T_CALLED("waddnstr(%p,%s,%d)"), win, _nc_visbufn(astr, n), n));
if (win && (str != 0)) {
- TR(TRACE_VIRTPUT | TRACE_ATTRS, ("... current %s", _traceattr(win->_attrs)));
+ TR(TRACE_VIRTPUT | TRACE_ATTRS,
+ ("... current %s", _traceattr(WINDOW_ATTRS(win))));
code = OK;
if (n < 0)
n = (int) strlen(astr);
TR(TRACE_VIRTPUT, ("str is not null, length = %d", n));
- CONV_INIT;
- while ((n > 0) && (*str != '\0')) {
+ while ((n-- > 0) && (*str != '\0')) {
NCURSES_CH_T ch;
- TR(TRACE_VIRTPUT, ("*str = %#x", *str));
- NEXT_CHAR(str, ch, n);
+ TR(TRACE_VIRTPUT, ("*str = %#o", UChar(*str)));
+ SetChar(ch, UChar(*str++), A_NORMAL);
if (_nc_waddch_nosync(win, ch) == ERR) {
code = ERR;
break;
@@ -114,11 +78,12 @@ waddnstr(WINDOW *win, const char *const astr, int n)
}
NCURSES_EXPORT(int)
-waddchnstr(WINDOW *win, const chtype * const astr, int n)
+waddchnstr(WINDOW *win, const chtype *astr, int n)
{
NCURSES_SIZE_T y = win->_cury;
NCURSES_SIZE_T x = win->_curx;
int code = OK;
+ int i;
struct ldat *line;
T((T_CALLED("waddchnstr(%p,%p,%d)"), win, astr, n));
@@ -138,15 +103,9 @@ waddchnstr(WINDOW *win, const chtype * const astr, int n)
returnCode(code);
line = &(win->_line[y]);
-#if USE_WIDEC_SUPPORT
- {
- int i;
- for (i = 0; i < n; ++i)
- SetChar(line->text[i + x], ChCharOf(astr[i]), ChAttrOf(astr[i]));
+ for (i = 0; i < n && ChCharOf(astr[i]) != '\0'; ++i) {
+ SetChar2(line->text[i + x], astr[i]);
}
-#else
- memcpy(line->text + x, astr, n * sizeof(*astr));
-#endif
CHANGED_RANGE(line, x, x + n - 1);
_nc_synchook(win);
@@ -155,8 +114,8 @@ waddchnstr(WINDOW *win, const chtype * const astr, int n)
#if USE_WIDEC_SUPPORT
-int
-_nc_wchstrlen(const cchar_t * s)
+NCURSES_EXPORT(int)
+_nc_wchstrlen(const cchar_t *s)
{
int result = 0;
while (CharOf(s[result]) != L'\0') {
@@ -166,13 +125,14 @@ _nc_wchstrlen(const cchar_t * s)
}
NCURSES_EXPORT(int)
-wadd_wchnstr(WINDOW *win, const cchar_t * const astr, int n)
+wadd_wchnstr(WINDOW *win, const cchar_t *astr, int n)
{
+ static const NCURSES_CH_T blank = NewChar(BLANK_TEXT);
NCURSES_SIZE_T y = win->_cury;
NCURSES_SIZE_T x = win->_curx;
int code = OK;
struct ldat *line;
- int i, start, end;
+ int i, j, start, len, end;
T((T_CALLED("wadd_wchnstr(%p,%s,%d)"), win, _nc_viscbuf(astr, n), n));
@@ -190,22 +150,58 @@ wadd_wchnstr(WINDOW *win, const cchar_t * const astr, int n)
line = &(win->_line[y]);
start = x;
end = x + n - 1;
- if (isnac(line->text[x])) {
- line->text[x - 1] = win->_nc_bkgd;
- --start;
+
+ /*
+ * Reset orphaned cells of multi-column characters that extend up to the
+ * new string's location to blanks.
+ */
+ if (x > 0 && isWidecExt(line->text[x])) {
+ for (i = 0; i <= x; ++i) {
+ if (!isWidecExt(line->text[x - i])) {
+ /* must be isWidecBase() */
+ start -= i;
+ while (i > 0) {
+ line->text[x - i--] = _nc_render(win, blank);
+ }
+ break;
+ }
+ }
}
- for (i = 0; i < n && x <= win->_maxx; ++i) {
- line->text[x++] = astr[i];
- if (wcwidth(CharOf(astr[i])) > 1) {
- if (x <= win->_maxx)
- AddAttr(line->text[x++], WA_NAC);
- else
- line->text[x - 1] = win->_nc_bkgd;
+
+ /*
+ * Copy the new string to the window.
+ */
+ for (i = 0; i < n && CharOf(astr[i]) != L'\0' && x <= win->_maxx; ++i) {
+ if (isWidecExt(astr[i]))
+ continue;
+
+ len = wcwidth(CharOf(astr[i]));
+
+ if (x + len - 1 <= win->_maxx) {
+ line->text[x] = _nc_render(win, astr[i]);
+ if (len > 1) {
+ for (j = 0; j < len; ++j) {
+ if (j != 0) {
+ line->text[x + j] = line->text[x];
+ }
+ SetWidecExt(line->text[x + j], j);
+ }
+ }
+ x += len;
+ end += len - 1;
+ } else {
+ break;
}
}
- if (x <= win->_maxx && isnac(line->text[x])) {
- line->text[x] = win->_nc_bkgd;
+
+ /*
+ * Set orphaned cells of multi-column characters which lie after the new
+ * string to blanks.
+ */
+ while (x <= win->_maxx && isWidecExt(line->text[x])) {
+ line->text[x] = _nc_render(win, blank);
++end;
+ ++x;
}
CHANGED_RANGE(line, start, end);
@@ -214,15 +210,15 @@ wadd_wchnstr(WINDOW *win, const cchar_t * const astr, int n)
}
NCURSES_EXPORT(int)
-waddnwstr(WINDOW *win, const wchar_t * str, int n)
+waddnwstr(WINDOW *win, const wchar_t *str, int n)
{
int code = ERR;
- int i;
- T((T_CALLED("waddnwstr(%p,%s,%d)"), win, _nc_viswbuf(str), n));
+ T((T_CALLED("waddnwstr(%p,%s,%d)"), win, _nc_viswbufn(str, n), n));
if (win && (str != 0)) {
- TR(TRACE_VIRTPUT | TRACE_ATTRS, ("... current %s", _traceattr(win->_attrs)));
+ TR(TRACE_VIRTPUT | TRACE_ATTRS,
+ ("... current %s", _traceattr(WINDOW_ATTRS(win))));
code = OK;
if (n < 0)
n = (int) wcslen(str);
@@ -230,16 +226,9 @@ waddnwstr(WINDOW *win, const wchar_t * str, int n)
TR(TRACE_VIRTPUT, ("str is not null, length = %d", n));
while ((n-- > 0) && (*str != L('\0'))) {
NCURSES_CH_T ch;
- TR(TRACE_VIRTPUT, ("*str[0] = %#lx", *str));
+ TR(TRACE_VIRTPUT, ("*str[0] = %#lx", (unsigned long) *str));
SetChar(ch, *str++, A_NORMAL);
- i = 1;
- while (i < CCHARW_MAX && n > 0 && (*str != L('\0'))
- && wcwidth(*str) == 0) {
- TR(TRACE_VIRTPUT, ("*str[%d] = %#lx", i, *str));
- ch.chars[i++] = *str++;
- --n;
- }
- if (_nc_waddch_nosync(win, ch) == ERR) {
+ if (wadd_wch(win, &ch) == ERR) {
code = ERR;
break;
}
diff --git a/contrib/ncurses/ncurses/base/lib_beep.c b/contrib/ncurses/ncurses/base/lib_beep.c
index c23d0a1d2ff1..b478f251a1bb 100644
--- a/contrib/ncurses/ncurses/base/lib_beep.c
+++ b/contrib/ncurses/ncurses/base/lib_beep.c
@@ -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 *
@@ -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 *
****************************************************************************/
/*
@@ -41,7 +42,7 @@
#include <curses.priv.h>
#include <term.h> /* beep, flash */
-MODULE_ID("$Id: lib_beep.c,v 1.9 2000/12/10 02:43:26 tom Exp $")
+MODULE_ID("$Id: lib_beep.c,v 1.10 2005/04/09 15:20:04 tom Exp $")
/*
* beep()
@@ -59,7 +60,9 @@ beep(void)
T((T_CALLED("beep()")));
/* FIXME: should make sure that we are not in altchar mode */
- if (bell) {
+ if (cur_term == 0) {
+ res = ERR;
+ } else if (bell) {
TPUTS_TRACE("bell");
res = putp(bell);
_nc_flush();
diff --git a/contrib/ncurses/ncurses/base/lib_bkgd.c b/contrib/ncurses/ncurses/base/lib_bkgd.c
index a3d7c306e29d..e6a0cb000b15 100644
--- a/contrib/ncurses/ncurses/base/lib_bkgd.c
+++ b/contrib/ncurses/ncurses/base/lib_bkgd.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,11 +29,14 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Juergen Pfeifer 1997 *
+ * and: Sven Verdoolaege 2000 *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_bkgd.c,v 1.26 2001/12/19 01:36:58 tom Exp $")
+MODULE_ID("$Id: lib_bkgd.c,v 1.35 2006/05/27 19:20:11 tom Exp $")
/*
* Set the window's background information.
@@ -41,7 +44,7 @@ MODULE_ID("$Id: lib_bkgd.c,v 1.26 2001/12/19 01:36:58 tom Exp $")
#if USE_WIDEC_SUPPORT
NCURSES_EXPORT(void)
#else
-static inline void
+static NCURSES_INLINE void
#endif
wbkgrndset(WINDOW *win, const ARG_CH_T ch)
{
@@ -51,13 +54,26 @@ wbkgrndset(WINDOW *win, const ARG_CH_T ch)
attr_t off = AttrOf(win->_nc_bkgd);
attr_t on = AttrOf(CHDEREF(ch));
- toggle_attr_off(win->_attrs, off);
- toggle_attr_on(win->_attrs, on);
+ toggle_attr_off(WINDOW_ATTRS(win), off);
+ toggle_attr_on(WINDOW_ATTRS(win), on);
- if (CharOf(CHDEREF(ch)) == L('\0'))
+#if NCURSES_EXT_COLORS
+ {
+ int pair;
+
+ if ((pair = GetPair(win->_nc_bkgd)) != 0)
+ SET_WINDOW_PAIR(win, 0);
+ if ((pair = GetPair(CHDEREF(ch))) != 0)
+ SET_WINDOW_PAIR(win, pair);
+ }
+#endif
+
+ if (CharOf(CHDEREF(ch)) == L('\0')) {
SetChar(win->_nc_bkgd, BLANK_TEXT, AttrOf(CHDEREF(ch)));
- else
+ SetPair(win->_nc_bkgd, GetPair(CHDEREF(ch)));
+ } else {
win->_nc_bkgd = CHDEREF(ch);
+ }
#if USE_WIDEC_SUPPORT
/*
* If we're compiled for wide-character support, _bkgrnd is the
@@ -70,9 +86,11 @@ wbkgrndset(WINDOW *win, const ARG_CH_T ch)
int tmp;
wgetbkgrnd(win, &wch);
- tmp = wctob(CharOf(wch));
+ tmp = _nc_to_char((wint_t) CharOf(wch));
- win->_bkgd = ((tmp == EOF) ? ' ' : (chtype) tmp) | AttrOf(wch);
+ win->_bkgd = (((tmp == EOF) ? ' ' : (chtype) tmp)
+ | (AttrOf(wch) & ALL_BUT_COLOR)
+ | COLOR_PAIR(GET_WINDOW_PAIR(win)));
}
#endif
}
@@ -93,7 +111,7 @@ wbkgdset(WINDOW *win, chtype ch)
#if USE_WIDEC_SUPPORT
NCURSES_EXPORT(int)
#else
-static inline int
+static NCURSES_INLINE int
#undef wbkgrnd
#endif
wbkgrnd(WINDOW *win, const ARG_CH_T ch)
@@ -113,11 +131,11 @@ wbkgrnd(WINDOW *win, const ARG_CH_T ch)
for (y = 0; y <= win->_maxy; y++) {
for (x = 0; x <= win->_maxx; x++) {
- if (CharEq(win->_line[y].text[x], old_bkgrnd))
+ if (CharEq(win->_line[y].text[x], old_bkgrnd)) {
win->_line[y].text[x] = win->_nc_bkgd;
- else {
+ } else {
NCURSES_CH_T wch = win->_line[y].text[x];
- RemAttr(wch, ~A_ALTCHARSET);
+ RemAttr(wch, (~(A_ALTCHARSET | A_CHARTEXT)));
win->_line[y].text[x] = _nc_render(win, wch);
}
}
@@ -130,7 +148,7 @@ wbkgrnd(WINDOW *win, const ARG_CH_T ch)
}
NCURSES_EXPORT(int)
-wbkgd(WINDOW *win, const chtype ch)
+wbkgd(WINDOW *win, chtype ch)
{
NCURSES_CH_T wch;
SetChar2(wch, ch);
diff --git a/contrib/ncurses/ncurses/base/lib_box.c b/contrib/ncurses/ncurses/base/lib_box.c
index 7181edb3ed34..d6cfc6cfe09c 100644
--- a/contrib/ncurses/ncurses/base/lib_box.c
+++ b/contrib/ncurses/ncurses/base/lib_box.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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 *
@@ -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,7 +42,21 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_box.c,v 1.18 2002/02/23 20:40:06 tom Exp $")
+MODULE_ID("$Id: lib_box.c,v 1.22 2005/11/26 15:39:42 tom Exp $")
+
+#if USE_WIDEC_SUPPORT
+static NCURSES_INLINE chtype
+_my_render(WINDOW *win, chtype ch)
+{
+ NCURSES_CH_T wch;
+ SetChar2(wch, ch);
+ wch = _nc_render(win, wch);
+ return CharOf(wch) | AttrOf(wch);
+}
+#define RENDER_WITH_DEFAULT(ch,def) w ## ch = _my_render(win, (ch == 0) ? def : ch)
+#else
+#define RENDER_WITH_DEFAULT(ch,def) w ## ch = _nc_render(win, (ch == 0) ? def : ch)
+#endif
NCURSES_EXPORT(int)
wborder(WINDOW *win,
@@ -67,8 +83,6 @@ wborder(WINDOW *win,
if (!win)
returnCode(ERR);
-#define RENDER_WITH_DEFAULT(ch,def) w ## ch = (ch == 0) ? def : ch
-
RENDER_WITH_DEFAULT(ls, ACS_VLINE);
RENDER_WITH_DEFAULT(rs, ACS_VLINE);
RENDER_WITH_DEFAULT(ts, ACS_HLINE);
@@ -92,22 +106,22 @@ wborder(WINDOW *win,
endy = win->_maxy;
for (i = 0; i <= endx; i++) {
- SetChar(win->_line[0].text[i], ChCharOf(wts), ChAttrOf(wts));
- SetChar(win->_line[endy].text[i], ChCharOf(wbs), ChAttrOf(wbs));
+ SetChar2(win->_line[0].text[i], wts);
+ SetChar2(win->_line[endy].text[i], wbs);
}
win->_line[endy].firstchar = win->_line[0].firstchar = 0;
win->_line[endy].lastchar = win->_line[0].lastchar = endx;
for (i = 0; i <= endy; i++) {
- SetChar(win->_line[i].text[0], ChCharOf(wls), ChAttrOf(wls));
- SetChar(win->_line[i].text[endx], ChCharOf(wrs), ChAttrOf(wrs));
+ SetChar2(win->_line[i].text[0], wls);
+ SetChar2(win->_line[i].text[endx], wrs);
win->_line[i].firstchar = 0;
win->_line[i].lastchar = endx;
}
- SetChar(win->_line[0].text[0], ChCharOf(wtl), ChAttrOf(wtl));
- SetChar(win->_line[0].text[endx], ChCharOf(wtr), ChAttrOf(wtr));
- SetChar(win->_line[endy].text[0], ChCharOf(wbl), ChAttrOf(wbl));
- SetChar(win->_line[endy].text[endx], ChCharOf(wbr), ChAttrOf(wbr));
+ SetChar2(win->_line[0].text[0], wtl);
+ SetChar2(win->_line[0].text[endx], wtr);
+ SetChar2(win->_line[endy].text[0], wbl);
+ SetChar2(win->_line[endy].text[endx], wbr);
_nc_synchook(win);
returnCode(OK);
diff --git a/contrib/ncurses/ncurses/base/lib_chgat.c b/contrib/ncurses/ncurses/base/lib_chgat.c
index 54e66ed1ffae..89eefa7e82fe 100644
--- a/contrib/ncurses/ncurses/base/lib_chgat.c
+++ b/contrib/ncurses/ncurses/base/lib_chgat.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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: Sven Verdoolaege 2001 *
+ * and: Thomas E. Dickey 2005 *
****************************************************************************/
/*
@@ -40,21 +42,25 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_chgat.c,v 1.5 2001/06/03 00:05:02 skimo Exp $")
+MODULE_ID("$Id: lib_chgat.c,v 1.7 2006/07/15 22:07:11 tom Exp $")
NCURSES_EXPORT(int)
-wchgat
-(WINDOW *win, int n, attr_t attr, short color, const void *opts GCC_UNUSED)
+wchgat(WINDOW *win, int n, attr_t attr, short color, const void *opts GCC_UNUSED)
{
int i;
T((T_CALLED("wchgat(%p,%d,%s,%d)"), win, n, _traceattr(attr), color));
if (win) {
+ struct ldat *line = &(win->_line[win->_cury]);
+
toggle_attr_on(attr, COLOR_PAIR(color));
- for (i = win->_curx; i <= win->_maxx && (n == -1 || (n-- > 0)); i++)
- SetAttr(win->_line[win->_cury].text[i], attr);
+ for (i = win->_curx; i <= win->_maxx && (n == -1 || (n-- > 0)); i++) {
+ SetAttr(line->text[i], attr);
+ SetPair(line->text[i], color);
+ CHANGED_CELL(line, i);
+ }
returnCode(OK);
} else
diff --git a/contrib/ncurses/ncurses/base/lib_clrbot.c b/contrib/ncurses/ncurses/base/lib_clrbot.c
index bc12960e48f0..df196e815f82 100644
--- a/contrib/ncurses/ncurses/base/lib_clrbot.c
+++ b/contrib/ncurses/ncurses/base/lib_clrbot.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2006 Free 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_clrbot.c,v 1.19 2001/12/19 01:05:59 tom Exp $")
+MODULE_ID("$Id: lib_clrbot.c,v 1.20 2006/10/14 20:43:31 tom Exp $")
NCURSES_EXPORT(int)
wclrtobot(WINDOW *win)
@@ -54,8 +54,8 @@ wclrtobot(WINDOW *win)
NCURSES_SIZE_T startx = win->_curx;
NCURSES_CH_T blank = win->_nc_bkgd;
- T(("clearing from y = %d to y = %d with maxx = %d",
- win->_cury, win->_maxy, win->_maxx));
+ T(("clearing from y = %ld to y = %ld with maxx = %ld",
+ (long) win->_cury, (long) win->_maxy, (long) win->_maxx));
for (y = win->_cury; y <= win->_maxy; y++) {
struct ldat *line = &(win->_line[y]);
diff --git a/contrib/ncurses/ncurses/base/lib_color.c b/contrib/ncurses/ncurses/base/lib_color.c
index 42d301d5e9ad..a90ca9d34308 100644
--- a/contrib/ncurses/ncurses/base/lib_color.c
+++ b/contrib/ncurses/ncurses/base/lib_color.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/* lib_color.c
@@ -41,7 +42,7 @@
#include <term.h>
#include <tic.h>
-MODULE_ID("$Id: lib_color.c,v 1.58 2001/09/01 21:42:59 tom Exp $")
+MODULE_ID("$Id: lib_color.c,v 1.80 2006/11/26 01:33:16 tom Exp $")
/*
* These should be screen structure members. They need to be globals for
@@ -51,6 +52,12 @@ MODULE_ID("$Id: lib_color.c,v 1.58 2001/09/01 21:42:59 tom Exp $")
NCURSES_EXPORT_VAR(int) COLOR_PAIRS = 0;
NCURSES_EXPORT_VAR(int) COLORS = 0;
+#define DATA(r,g,b) {r,g,b, 0,0,0, 0}
+
+#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts))
+
+#define OkColorHi(n) (((n) < COLORS) && ((n) < max_colors))
+
/*
* Given a RGB range of 0..1000, we'll normally set the individual values
* to about 2/3 of the maximum, leaving full-range for bold/bright colors.
@@ -61,27 +68,27 @@ NCURSES_EXPORT_VAR(int) COLORS = 0;
static const color_t cga_palette[] =
{
/* R G B */
- {RGB_OFF, RGB_OFF, RGB_OFF}, /* COLOR_BLACK */
- {RGB_ON, RGB_OFF, RGB_OFF}, /* COLOR_RED */
- {RGB_OFF, RGB_ON, RGB_OFF}, /* COLOR_GREEN */
- {RGB_ON, RGB_ON, RGB_OFF}, /* COLOR_YELLOW */
- {RGB_OFF, RGB_OFF, RGB_ON}, /* COLOR_BLUE */
- {RGB_ON, RGB_OFF, RGB_ON}, /* COLOR_MAGENTA */
- {RGB_OFF, RGB_ON, RGB_ON}, /* COLOR_CYAN */
- {RGB_ON, RGB_ON, RGB_ON}, /* COLOR_WHITE */
+ DATA(RGB_OFF, RGB_OFF, RGB_OFF), /* COLOR_BLACK */
+ DATA(RGB_ON, RGB_OFF, RGB_OFF), /* COLOR_RED */
+ DATA(RGB_OFF, RGB_ON, RGB_OFF), /* COLOR_GREEN */
+ DATA(RGB_ON, RGB_ON, RGB_OFF), /* COLOR_YELLOW */
+ DATA(RGB_OFF, RGB_OFF, RGB_ON), /* COLOR_BLUE */
+ DATA(RGB_ON, RGB_OFF, RGB_ON), /* COLOR_MAGENTA */
+ DATA(RGB_OFF, RGB_ON, RGB_ON), /* COLOR_CYAN */
+ DATA(RGB_ON, RGB_ON, RGB_ON), /* COLOR_WHITE */
};
static const color_t hls_palette[] =
{
- /* H L S */
- { 0, 0, 0}, /* COLOR_BLACK */
- { 120, 50, 100}, /* COLOR_RED */
- { 240, 50, 100}, /* COLOR_GREEN */
- { 180, 50, 100}, /* COLOR_YELLOW */
- { 330, 50, 100}, /* COLOR_BLUE */
- { 60, 50, 100}, /* COLOR_MAGENTA */
- { 300, 50, 100}, /* COLOR_CYAN */
- { 0, 50, 100}, /* COLOR_WHITE */
+ /* H L S */
+ DATA( 0, 0, 0), /* COLOR_BLACK */
+ DATA( 120, 50, 100), /* COLOR_RED */
+ DATA( 240, 50, 100), /* COLOR_GREEN */
+ DATA( 180, 50, 100), /* COLOR_YELLOW */
+ DATA( 330, 50, 100), /* COLOR_BLUE */
+ DATA( 60, 50, 100), /* COLOR_MAGENTA */
+ DATA( 300, 50, 100), /* COLOR_CYAN */
+ DATA( 0, 50, 100), /* COLOR_WHITE */
};
/* *INDENT-ON* */
@@ -128,10 +135,10 @@ set_background_color(int bg, int (*outc) (int))
{
if (set_a_background) {
TPUTS_TRACE("set_a_background");
- tputs(tparm(set_a_background, bg), 1, outc);
+ tputs(TPARM_1(set_a_background, bg), 1, outc);
} else {
TPUTS_TRACE("set_background");
- tputs(tparm(set_background, toggled_colors(bg)), 1, outc);
+ tputs(TPARM_1(set_background, toggled_colors(bg)), 1, outc);
}
}
@@ -140,56 +147,19 @@ set_foreground_color(int fg, int (*outc) (int))
{
if (set_a_foreground) {
TPUTS_TRACE("set_a_foreground");
- tputs(tparm(set_a_foreground, fg), 1, outc);
+ tputs(TPARM_1(set_a_foreground, fg), 1, outc);
} else {
TPUTS_TRACE("set_foreground");
- tputs(tparm(set_foreground, toggled_colors(fg)), 1, outc);
- }
-}
-
-static bool
-set_original_colors(void)
-{
- if (orig_pair != 0) {
- TPUTS_TRACE("orig_pair");
- putp(orig_pair);
- return TRUE;
- } else if (orig_colors != NULL) {
- TPUTS_TRACE("orig_colors");
- putp(orig_colors);
- return TRUE;
+ tputs(TPARM_1(set_foreground, toggled_colors(fg)), 1, outc);
}
- return FALSE;
}
-NCURSES_EXPORT(int)
-start_color(void)
+static void
+init_color_table(void)
{
- int n;
const color_t *tp;
+ int n;
- T((T_CALLED("start_color()")));
-
- if (set_original_colors() != TRUE) {
- set_foreground_color(default_fg(), _nc_outch);
- set_background_color(default_bg(), _nc_outch);
- }
-
- if (VALID_NUMERIC(max_pairs))
- COLOR_PAIRS = SP->_pair_count = max_pairs;
- else
- returnCode(ERR);
- if ((SP->_color_pairs = typeCalloc(unsigned short, max_pairs)) == 0)
- returnCode(ERR);
- SP->_color_pairs[0] = PAIR_OF(default_fg(), default_bg());
- if (VALID_NUMERIC(max_colors))
- COLORS = SP->_color_count = max_colors;
- else
- returnCode(ERR);
- SP->_coloron = 1;
-
- if ((SP->_color_table = typeMalloc(color_t, COLORS)) == 0)
- returnCode(ERR);
tp = (hue_lightness_saturation) ? hls_palette : cga_palette;
for (n = 0; n < COLORS; n++) {
if (n < 8) {
@@ -208,10 +178,91 @@ start_color(void)
}
}
}
+}
- T(("started color: COLORS = %d, COLOR_PAIRS = %d", COLORS, COLOR_PAIRS));
+/*
+ * Reset the color pair, e.g., to whatever color pair 0 is.
+ */
+static bool
+reset_color_pair(void)
+{
+ bool result = FALSE;
- returnCode(OK);
+ if (orig_pair != 0) {
+ TPUTS_TRACE("orig_pair");
+ putp(orig_pair);
+ result = TRUE;
+ }
+ return result;
+}
+
+/*
+ * Reset color pairs and definitions. Actually we do both more to accommodate
+ * badly-written terminal descriptions than for the relatively rare case where
+ * someone has changed the color definitions.
+ */
+bool
+_nc_reset_colors(void)
+{
+ int result = FALSE;
+
+ T((T_CALLED("_nc_reset_colors()")));
+ if (SP->_color_defs > 0)
+ SP->_color_defs = -(SP->_color_defs);
+
+ if (reset_color_pair())
+ result = TRUE;
+ if (orig_colors != 0) {
+ TPUTS_TRACE("orig_colors");
+ putp(orig_colors);
+ result = TRUE;
+ }
+ returnBool(result);
+}
+
+NCURSES_EXPORT(int)
+start_color(void)
+{
+ int result = ERR;
+
+ T((T_CALLED("start_color()")));
+
+ if (SP == 0) {
+ result = ERR;
+ } else if (SP->_coloron) {
+ result = OK;
+ } else {
+
+ if (reset_color_pair() != TRUE) {
+ set_foreground_color(default_fg(), _nc_outch);
+ set_background_color(default_bg(), _nc_outch);
+ }
+
+ if (max_pairs > 0 && max_colors > 0) {
+ COLOR_PAIRS = SP->_pair_count = max_pairs;
+ COLORS = SP->_color_count = max_colors;
+
+ if ((SP->_color_pairs = TYPE_CALLOC(colorpair_t,
+ max_pairs)) != 0) {
+ if ((SP->_color_table = TYPE_CALLOC(color_t,
+ max_colors)) != 0) {
+ SP->_color_pairs[0] = PAIR_OF(default_fg(), default_bg());
+ init_color_table();
+
+ T(("started color: COLORS = %d, COLOR_PAIRS = %d",
+ COLORS, COLOR_PAIRS));
+
+ SP->_coloron = 1;
+ result = OK;
+ } else if (SP->_color_pairs != 0) {
+ FreeAndNull(SP->_color_pairs);
+ }
+ }
+ } else {
+ result = OK;
+ }
+ }
+ returnCode(result);
}
/* This function was originally written by Daniel Weaver <danw@znyx.com> */
@@ -259,27 +310,27 @@ rgb2hls(short r, short g, short b, short *h, short *l, short *s)
NCURSES_EXPORT(int)
init_pair(short pair, short f, short b)
{
- unsigned result;
+ colorpair_t result;
T((T_CALLED("init_pair(%d,%d,%d)"), pair, f, b));
- if ((pair < 0) || (pair >= COLOR_PAIRS))
+ if ((pair < 0) || (pair >= COLOR_PAIRS) || SP == 0 || !SP->_coloron)
returnCode(ERR);
#if NCURSES_EXT_FUNCS
if (SP->_default_color) {
if (f < 0)
- f = C_MASK;
+ f = COLOR_DEFAULT;
if (b < 0)
- b = C_MASK;
- if (f >= COLORS && f != C_MASK)
+ b = COLOR_DEFAULT;
+ if (!OkColorHi(f) && !isDefaultColor(f))
returnCode(ERR);
- if (b >= COLORS && b != C_MASK)
+ if (!OkColorHi(b) && !isDefaultColor(b))
returnCode(ERR);
} else
#endif
{
- if ((f < 0) || (f >= COLORS)
- || (b < 0) || (b >= COLORS)
+ if ((f < 0) || !OkColorHi(f)
+ || (b < 0) || !OkColorHi(b)
|| (pair < 1))
returnCode(ERR);
}
@@ -293,13 +344,12 @@ init_pair(short pair, short f, short b)
if (SP->_color_pairs[pair] != 0
&& SP->_color_pairs[pair] != result) {
int y, x;
- attr_t z = COLOR_PAIR(pair);
for (y = 0; y <= curscr->_maxy; y++) {
struct ldat *ptr = &(curscr->_line[y]);
bool changed = FALSE;
for (x = 0; x <= curscr->_maxx; x++) {
- if ((AttrOf(ptr->text[x]) & A_COLOR) == z) {
+ 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);
@@ -312,8 +362,8 @@ init_pair(short pair, short f, short b)
}
}
SP->_color_pairs[pair] = result;
- if ((int) (SP->_current_attr & A_COLOR) == COLOR_PAIR(pair))
- SP->_current_attr |= A_COLOR; /* force attribute update */
+ if (GET_SCREEN_PAIR(SP) == pair)
+ SET_SCREEN_PAIR(SP, (chtype) (~0)); /* force attribute update */
if (initialize_pair) {
const color_t *tp = hue_lightness_saturation ? hls_palette : cga_palette;
@@ -323,47 +373,53 @@ init_pair(short pair, short f, short b)
tp[f].red, tp[f].green, tp[f].blue,
tp[b].red, tp[b].green, tp[b].blue));
- if (initialize_pair) {
- TPUTS_TRACE("initialize_pair");
- putp(tparm(initialize_pair,
- pair,
- tp[f].red, tp[f].green, tp[f].blue,
- tp[b].red, tp[b].green, tp[b].blue));
- }
+ TPUTS_TRACE("initialize_pair");
+ putp(TPARM_7(initialize_pair,
+ pair,
+ tp[f].red, tp[f].green, tp[f].blue,
+ tp[b].red, tp[b].green, tp[b].blue));
}
returnCode(OK);
}
+#define okRGB(n) ((n) >= 0 && (n) <= 1000)
+
NCURSES_EXPORT(int)
init_color(short color, short r, short g, short b)
{
- T((T_CALLED("init_color(%d,%d,%d,%d)"), color, r, g, b));
+ int result = ERR;
- if (initialize_color == NULL)
- returnCode(ERR);
-
- if (color < 0 || color >= COLORS)
- returnCode(ERR);
- if (r < 0 || r > 1000 || g < 0 || g > 1000 || b < 0 || b > 1000)
- returnCode(ERR);
+ T((T_CALLED("init_color(%d,%d,%d,%d)"), color, r, g, b));
- if (hue_lightness_saturation)
- rgb2hls(r, g, b,
- &SP->_color_table[color].red,
- &SP->_color_table[color].green,
- &SP->_color_table[color].blue);
- else {
- SP->_color_table[color].red = r;
- SP->_color_table[color].green = g;
- SP->_color_table[color].blue = b;
- }
+ if (initialize_color != NULL
+ && SP != 0
+ && SP->_coloron
+ && (color >= 0 && OkColorHi(color))
+ && (okRGB(r) && okRGB(g) && okRGB(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 (hue_lightness_saturation) {
+ rgb2hls(r, g, b,
+ &SP->_color_table[color].red,
+ &SP->_color_table[color].green,
+ &SP->_color_table[color].blue);
+ } else {
+ SP->_color_table[color].red = r;
+ SP->_color_table[color].green = g;
+ SP->_color_table[color].blue = b;
+ }
- if (initialize_color) {
TPUTS_TRACE("initialize_color");
- putp(tparm(initialize_color, color, r, g, b));
+ putp(TPARM_4(initialize_color, color, r, g, b));
+ SP->_color_defs = max(color + 1, SP->_color_defs);
+ result = OK;
}
- returnCode(OK);
+ returnCode(result);
}
NCURSES_EXPORT(bool)
@@ -388,38 +444,65 @@ has_colors(void)
NCURSES_EXPORT(int)
color_content(short color, short *r, short *g, short *b)
{
- T((T_CALLED("color_content(%d,%p,%p,%p)"), color, r, g, b));
- if (color < 0 || color >= COLORS)
- returnCode(ERR);
+ int result;
- if (r)
- *r = SP->_color_table[color].red;
- if (g)
- *g = SP->_color_table[color].green;
- if (b)
- *b = SP->_color_table[color].blue;
- returnCode(OK);
+ T((T_CALLED("color_content(%d,%p,%p,%p)"), color, r, g, b));
+ if (color < 0 || !OkColorHi(color) || SP == 0 || !SP->_coloron) {
+ result = ERR;
+ } else {
+ NCURSES_COLOR_T c_r = SP->_color_table[color].red;
+ NCURSES_COLOR_T c_g = SP->_color_table[color].green;
+ NCURSES_COLOR_T c_b = SP->_color_table[color].blue;
+
+ if (r)
+ *r = c_r;
+ if (g)
+ *g = c_g;
+ if (b)
+ *b = c_b;
+
+ T(("...color_content(%d,%d,%d,%d)", color, c_r, c_g, c_b));
+ result = OK;
+ }
+ returnCode(result);
}
NCURSES_EXPORT(int)
pair_content(short pair, short *f, short *b)
{
+ int result;
+
T((T_CALLED("pair_content(%d,%p,%p)"), pair, f, b));
- if ((pair < 0) || (pair >= COLOR_PAIRS))
- returnCode(ERR);
- if (f)
- *f = ((SP->_color_pairs[pair] >> C_SHIFT) & C_MASK);
- if (b)
- *b = (SP->_color_pairs[pair] & C_MASK);
+ if ((pair < 0) || (pair >= COLOR_PAIRS) || SP == 0 || !SP->_coloron) {
+ result = ERR;
+ } else {
+ NCURSES_COLOR_T fg = ((SP->_color_pairs[pair] >> C_SHIFT) & C_MASK);
+ NCURSES_COLOR_T bg = (SP->_color_pairs[pair] & C_MASK);
- returnCode(OK);
+#if NCURSES_EXT_FUNCS
+ if (fg == COLOR_DEFAULT)
+ fg = -1;
+ if (bg == COLOR_DEFAULT)
+ bg = -1;
+#endif
+
+ if (f)
+ *f = fg;
+ if (b)
+ *b = bg;
+
+ T(("...pair_content(%d,%d,%d)", pair, fg, bg));
+ result = OK;
+ }
+ returnCode(result);
}
NCURSES_EXPORT(void)
-_nc_do_color(int old_pair, int pair, bool reverse, int (*outc) (int))
+_nc_do_color(short old_pair, short pair, bool reverse, int (*outc) (int))
{
- NCURSES_COLOR_T fg = C_MASK, bg = C_MASK;
+ NCURSES_COLOR_T fg = COLOR_DEFAULT;
+ NCURSES_COLOR_T bg = COLOR_DEFAULT;
NCURSES_COLOR_T old_fg, old_bg;
if (pair < 0 || pair >= COLOR_PAIRS) {
@@ -427,41 +510,46 @@ _nc_do_color(int old_pair, int pair, bool reverse, int (*outc) (int))
} else if (pair != 0) {
if (set_color_pair) {
TPUTS_TRACE("set_color_pair");
- tputs(tparm(set_color_pair, pair), 1, outc);
+ tputs(TPARM_1(set_color_pair, pair), 1, outc);
return;
} else if (SP != 0) {
- pair_content(pair, &fg, &bg);
+ pair_content((short) pair, &fg, &bg);
}
}
- if (old_pair >= 0 && SP != 0) {
- pair_content(old_pair, &old_fg, &old_bg);
- if ((fg == C_MASK && old_fg != C_MASK)
- || (bg == C_MASK && old_bg != C_MASK)) {
+ if (old_pair >= 0
+ && SP != 0
+ && pair_content(old_pair, &old_fg, &old_bg) != ERR) {
+ if ((isDefaultColor(fg) && !isDefaultColor(old_fg))
+ || (isDefaultColor(bg) && !isDefaultColor(old_bg))) {
#if NCURSES_EXT_FUNCS
/*
* A minor optimization - but extension. If "AX" is specified in
* the terminal description, treat it as screen's indicator of ECMA
* SGR 39 and SGR 49, and assume the two sequences are independent.
*/
- if (SP->_has_sgr_39_49 && old_bg == C_MASK && old_fg != C_MASK) {
+ if (SP->_has_sgr_39_49
+ && isDefaultColor(old_bg)
+ && !isDefaultColor(old_fg)) {
tputs("\033[39m", 1, outc);
- } else if (SP->_has_sgr_39_49 && old_fg == C_MASK && old_bg != C_MASK) {
+ } else if (SP->_has_sgr_39_49
+ && isDefaultColor(old_fg)
+ && !isDefaultColor(old_bg)) {
tputs("\033[49m", 1, outc);
} else
#endif
- set_original_colors();
+ reset_color_pair();
}
} else {
- set_original_colors();
+ reset_color_pair();
if (old_pair < 0)
return;
}
#if NCURSES_EXT_FUNCS
- if (fg == C_MASK)
+ if (isDefaultColor(fg))
fg = default_fg();
- if (bg == C_MASK)
+ if (isDefaultColor(bg))
bg = default_bg();
#endif
@@ -474,10 +562,10 @@ _nc_do_color(int old_pair, int pair, bool reverse, int (*outc) (int))
TR(TRACE_ATTRS, ("setting colors: pair = %d, fg = %d, bg = %d", pair,
fg, bg));
- if (fg != C_MASK) {
+ if (!isDefaultColor(fg)) {
set_foreground_color(fg, outc);
}
- if (bg != C_MASK) {
+ if (!isDefaultColor(bg)) {
set_background_color(bg, outc);
}
}
diff --git a/contrib/ncurses/ncurses/base/lib_colorset.c b/contrib/ncurses/ncurses/base/lib_colorset.c
index b496c78c9e39..a973c5350c8f 100644
--- a/contrib/ncurses/ncurses/base/lib_colorset.c
+++ b/contrib/ncurses/ncurses/base/lib_colorset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,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 *
@@ -27,7 +27,8 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1998 *
+ * Author: Juergen Pfeifer, 1998 *
+ * and: Thomas E. Dickey, 2005 *
****************************************************************************/
/*
@@ -40,19 +41,19 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_colorset.c,v 1.7 2000/12/10 01:24:50 tom Exp $")
+MODULE_ID("$Id: lib_colorset.c,v 1.11 2005/01/29 21:40:51 tom Exp $")
NCURSES_EXPORT(int)
-wcolor_set
-(WINDOW *win, short color_pair_number, void *opts)
+wcolor_set(WINDOW *win, short color_pair_number, void *opts)
{
T((T_CALLED("wcolor_set(%p,%d)"), win, color_pair_number));
if (win
&& !opts
&& (color_pair_number >= 0)
&& (color_pair_number < COLOR_PAIRS)) {
- TR(TRACE_ATTRS, ("... current %ld", (long) PAIR_NUMBER(win->_attrs)));
- toggle_attr_on(win->_attrs, COLOR_PAIR(color_pair_number));
+ 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);
returnCode(OK);
} else
returnCode(ERR);
diff --git a/contrib/ncurses/ncurses/base/lib_dft_fgbg.c b/contrib/ncurses/ncurses/base/lib_dft_fgbg.c
index 24705c9615e9..8953c148b09e 100644
--- a/contrib/ncurses/ncurses/base/lib_dft_fgbg.c
+++ b/contrib/ncurses/ncurses/base/lib_dft_fgbg.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,13 +27,13 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1997,1999 *
+ * Author: Thomas E. Dickey *
****************************************************************************/
#include <curses.priv.h>
#include <term.h>
-MODULE_ID("$Id: lib_dft_fgbg.c,v 1.15 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_dft_fgbg.c,v 1.18 2005/11/26 20:03:38 tom Exp $")
/*
* Modify the behavior of color-pair 0 so that the library doesn't assume that
@@ -43,7 +43,7 @@ NCURSES_EXPORT(int)
use_default_colors(void)
{
T((T_CALLED("use_default_colors()")));
- returnCode(assume_default_colors(C_MASK, C_MASK));
+ returnCode(assume_default_colors(-1, -1));
}
/*
@@ -61,11 +61,15 @@ assume_default_colors(int fg, int bg)
if (initialize_pair) /* don't know how to handle this */
returnCode(ERR);
- SP->_default_color = (fg < 0 || fg == C_MASK) || (bg < 0 || bg == C_MASK);
+ SP->_default_color = isDefaultColor(fg) || isDefaultColor(bg);
SP->_has_sgr_39_49 = (tigetflag("AX") == TRUE);
- SP->_default_fg = (fg >= 0) ? (fg & C_MASK) : C_MASK;
- SP->_default_bg = (bg >= 0) ? (bg & C_MASK) : C_MASK;
- if (SP->_color_pairs != 0)
- init_pair(0, fg, bg);
+ SP->_default_fg = isDefaultColor(fg) ? COLOR_DEFAULT : (fg & C_MASK);
+ SP->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : (bg & C_MASK);
+ if (SP->_color_pairs != 0) {
+ bool save = SP->_default_color;
+ SP->_default_color = TRUE;
+ init_pair(0, (short) fg, (short) bg);
+ SP->_default_color = save;
+ }
returnCode(OK);
}
diff --git a/contrib/ncurses/ncurses/base/lib_erase.c b/contrib/ncurses/ncurses/base/lib_erase.c
index 5e397312ffe3..2566e8b39820 100644
--- a/contrib/ncurses/ncurses/base/lib_erase.c
+++ b/contrib/ncurses/ncurses/base/lib_erase.c
@@ -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 *
****************************************************************************/
/*
@@ -40,7 +41,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_erase.c,v 1.15 2001/12/19 01:06:13 tom Exp $")
+MODULE_ID("$Id: lib_erase.c,v 1.16 2005/10/30 00:36:36 tom Exp $")
NCURSES_EXPORT(int)
werase(WINDOW *win)
@@ -58,6 +59,24 @@ werase(WINDOW *win)
start = win->_line[y].text;
end = &start[win->_maxx];
+ /*
+ * If this is a derived window, we have to handle the case where
+ * a multicolumn character extends into the window that we are
+ * erasing.
+ */
+ if_WIDEC({
+ if (isWidecExt(start[0])) {
+ int x = (win->_parent != 0) ? (win->_begx) : 0;
+ while (x-- > 0) {
+ if (isWidecBase(start[-1])) {
+ --start;
+ break;
+ }
+ --start;
+ }
+ }
+ });
+
for (sp = start; sp <= end; sp++)
*sp = blank;
diff --git a/contrib/ncurses/ncurses/base/lib_freeall.c b/contrib/ncurses/ncurses/base/lib_freeall.c
index 2063c6fa593e..27897a9f6a2a 100644
--- a/contrib/ncurses/ncurses/base/lib_freeall.c
+++ b/contrib/ncurses/ncurses/base/lib_freeall.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 *
+ * Author: Thomas E. Dickey 1996,1997 *
****************************************************************************/
#include <curses.priv.h>
#include <term_entry.h>
+#include <tic.h>
#if HAVE_NC_FREEALL
@@ -39,31 +40,7 @@
extern int malloc_errfd; /* FIXME */
#endif
-MODULE_ID("$Id: lib_freeall.c,v 1.19 2001/09/15 21:32:48 tom Exp $")
-
-static void
-free_slk(SLK * p)
-{
- if (p != 0) {
- FreeIfNeeded(p->ent);
- FreeIfNeeded(p->buffer);
- free(p);
- }
-}
-
-static void
-free_tries(struct tries *p)
-{
- struct tries *q;
-
- while (p != 0) {
- q = p->sibling;
- if (p->child != 0)
- free_tries(p->child);
- free(p);
- p = q;
- }
-}
+MODULE_ID("$Id: lib_freeall.c,v 1.38 2006/12/02 22:36:43 tom Exp $")
/*
* Free all ncurses data. This is used for testing only (there's no practical
@@ -73,9 +50,15 @@ NCURSES_EXPORT(void)
_nc_freeall(void)
{
WINDOWLIST *p, *q;
+ char *s;
+ static va_list empty_va;
+ T((T_CALLED("_nc_freeall()")));
#if NO_LEAKS
_nc_free_tparm();
+ if (_nc_oldnums != 0) {
+ FreeAndNull(_nc_oldnums);
+ }
#endif
if (SP != 0) {
while (_nc_windows != 0) {
@@ -98,39 +81,57 @@ _nc_freeall(void)
}
}
}
-
- free_tries(SP->_keytry);
- free_tries(SP->_key_ok);
- free_slk(SP->_slk);
- FreeIfNeeded(SP->_color_pairs);
- FreeIfNeeded(SP->_color_table);
- FreeIfNeeded(SP->oldhash);
- FreeIfNeeded(SP->newhash);
- FreeIfNeeded(SP->hashtab);
-#if !BROKEN_LINKER
- FreeAndNull(SP);
-#endif
+ delscreen(SP);
}
+#if NO_LEAKS
+ _nc_tgetent_leaks();
+#endif
+ del_curterm(cur_term);
+ _nc_free_entries(_nc_head);
+ _nc_get_type(0);
+ _nc_first_name(0);
+#if USE_WIDEC_SUPPORT
+ FreeIfNeeded(_nc_wacs);
+#endif
+#if NO_LEAKS
+ _nc_alloc_entry_leaks();
+ _nc_captoinfo_leaks();
+ _nc_comp_scan_leaks();
+ _nc_keyname_leaks();
+ _nc_tic_expand(0, FALSE, 0);
+#endif
- if (cur_term != 0) {
- _nc_free_termtype(&(cur_term->type));
- free(cur_term);
- }
+ if ((s = _nc_home_terminfo()) != 0)
+ free(s);
+
+ (void) _nc_printf_string(0, empty_va);
#ifdef TRACE
(void) _nc_trace_buf(-1, 0);
#endif
+
#if HAVE_LIBDBMALLOC
malloc_dump(malloc_errfd);
#elif HAVE_LIBDMALLOC
+#elif HAVE_LIBMPATROL
+ __mp_summary();
#elif HAVE_PURIFY
purify_all_inuse();
#endif
+ returnVoid;
}
NCURSES_EXPORT(void)
_nc_free_and_exit(int code)
{
+ char *last_setbuf = (SP != 0) ? SP->_setbuf : 0;
+
_nc_freeall();
+#ifdef TRACE
+ trace(0); /* close trace file, freeing its setbuf */
+ free(_nc_varargs("?", 0));
+#endif
+ fclose(stdout);
+ FreeIfNeeded(last_setbuf);
exit(code);
}
diff --git a/contrib/ncurses/ncurses/base/lib_getch.c b/contrib/ncurses/ncurses/base/lib_getch.c
index af1be33a18d5..7891edf3b079 100644
--- a/contrib/ncurses/ncurses/base/lib_getch.c
+++ b/contrib/ncurses/ncurses/base/lib_getch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -40,14 +41,46 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_getch.c,v 1.61 2002/06/16 00:31:57 tom Exp $")
+MODULE_ID("$Id: lib_getch.c,v 1.75 2006/03/04 20:06:09 tom Exp $")
#include <fifo_defs.h>
NCURSES_EXPORT_VAR(int)
ESCDELAY = 1000; /* max interval betw. chars in funkeys, in millisecs */
-static inline int
+#ifdef NCURSES_WGETCH_EVENTS
+#define TWAIT_MASK 7
+#else
+#define TWAIT_MASK 3
+#endif
+
+/*
+ * Check for mouse activity, returning nonzero if we find any.
+ */
+static int
+check_mouse_activity(int delay EVENTLIST_2nd(_nc_eventlist * evl))
+{
+ int rc;
+
+#if USE_SYSMOUSE
+ if ((SP->_mouse_type == M_SYSMOUSE)
+ && (SP->_sysmouse_head < SP->_sysmouse_tail)) {
+ return 2;
+ }
+#endif
+ rc = _nc_timed_wait(TWAIT_MASK, delay, (int *) 0 EVENTLIST_2nd(evl));
+#if USE_SYSMOUSE
+ if ((SP->_mouse_type == M_SYSMOUSE)
+ && (SP->_sysmouse_head < SP->_sysmouse_tail)
+ && (rc == 0)
+ && (errno == EINTR)) {
+ rc |= 2;
+ }
+#endif
+ return rc;
+}
+
+static NCURSES_INLINE int
fifo_peek(void)
{
int ch = SP->_fifo[peek];
@@ -57,7 +90,7 @@ fifo_peek(void)
return ch;
}
-static inline int
+static NCURSES_INLINE int
fifo_pull(void)
{
int ch;
@@ -77,12 +110,14 @@ fifo_pull(void)
return ch;
}
-static inline int
-fifo_push(void)
+static NCURSES_INLINE int
+fifo_push(EVENTLIST_0th(_nc_eventlist * evl))
{
int n;
- int ch;
+ int ch = 0;
+ int mask = 0;
+ (void) mask;
if (tail == -1)
return ERR;
@@ -91,15 +126,48 @@ fifo_push(void)
errno = 0;
#endif
-#if USE_GPM_SUPPORT || defined(USE_EMX_MOUSE)
- if ((SP->_mouse_fd >= 0)
- && (_nc_timed_wait(3, -1, (int *) 0) & 2)) {
+#ifdef NCURSES_WGETCH_EVENTS
+ if (evl
+#if USE_GPM_SUPPORT || USE_EMX_MOUSE || USE_SYSMOUSE
+ || (SP->_mouse_fd >= 0)
+#endif
+ ) {
+ mask = check_mouse_activity(-1 EVENTLIST_2nd(evl));
+ } else
+ mask = 0;
+
+ if (mask & 4) {
+ T(("fifo_push: ungetch KEY_EVENT"));
+ ungetch(KEY_EVENT);
+ return KEY_EVENT;
+ }
+#elif USE_GPM_SUPPORT || USE_EMX_MOUSE || USE_SYSMOUSE
+ if (SP->_mouse_fd >= 0) {
+ mask = check_mouse_activity(-1 EVENTLIST_2nd(evl));
+ }
+#endif
+
+#if USE_GPM_SUPPORT || USE_EMX_MOUSE
+ if ((SP->_mouse_fd >= 0) && (mask & 2)) {
SP->_mouse_event(SP);
ch = KEY_MOUSE;
n = 1;
} else
#endif
- {
+#if USE_SYSMOUSE
+ if ((SP->_mouse_type == M_SYSMOUSE)
+ && (SP->_sysmouse_head < SP->_sysmouse_tail)) {
+ SP->_mouse_event(SP);
+ ch = KEY_MOUSE;
+ n = 1;
+ } else if ((SP->_mouse_type == M_SYSMOUSE)
+ && (mask <= 0) && errno == EINTR) {
+ SP->_mouse_event(SP);
+ ch = KEY_MOUSE;
+ n = 1;
+ } else
+#endif
+ { /* Can block... */
unsigned char c2 = 0;
n = read(SP->_ifd, &c2, 1);
ch = c2;
@@ -138,7 +206,7 @@ fifo_push(void)
return ch;
}
-static inline void
+static NCURSES_INLINE void
fifo_clear(void)
{
memset(SP->_fifo, 0, sizeof(SP->_fifo));
@@ -146,21 +214,27 @@ fifo_clear(void)
tail = peek = 0;
}
-static int kgetch(void);
+static int kgetch(EVENTLIST_0th(_nc_eventlist * evl));
#define wgetch_should_refresh(win) (\
(is_wintouched(win) || (win->_flags & _HASMOVED)) \
&& !(win->_flags & _ISPAD))
NCURSES_EXPORT(int)
-_nc_wgetch(WINDOW *win, unsigned long *result, int use_meta)
+_nc_wgetch(WINDOW *win,
+ unsigned long *result,
+ int use_meta
+ EVENTLIST_2nd(_nc_eventlist * evl))
{
int ch;
+#ifdef NCURSES_WGETCH_EVENTS
+ long event_delay = -1;
+#endif
- T((T_CALLED("wgetch(%p)"), win));
+ T((T_CALLED("_nc_wgetch(%p)"), win));
*result = 0;
- if (!win)
+ if (win == 0 || SP == 0)
returnCode(ERR);
if (cooked_key_in_fifo()) {
@@ -170,24 +244,47 @@ _nc_wgetch(WINDOW *win, unsigned long *result, int use_meta)
*result = fifo_pull();
returnCode(OK);
}
+#ifdef NCURSES_WGETCH_EVENTS
+ if (evl && (evl->count == 0))
+ evl = NULL;
+ event_delay = _nc_eventlist_timeout(evl);
+#endif
/*
* Handle cooked mode. Grab a string from the screen,
* stuff its contents in the FIFO queue, and pop off
* the first character to return it.
*/
- if (head == -1 && !SP->_raw && !SP->_cbreak) {
+ if (head == -1 &&
+ !SP->_notty &&
+ !SP->_raw &&
+ !SP->_cbreak &&
+ !SP->_called_wgetch) {
char buf[MAXCOLUMNS], *sp;
+ int rc;
TR(TRACE_IEVENT, ("filling queue in cooked mode"));
- wgetnstr(win, buf, MAXCOLUMNS);
+ SP->_called_wgetch = TRUE;
+ rc = wgetnstr(win, buf, MAXCOLUMNS);
+ SP->_called_wgetch = FALSE;
/* ungetch in reverse order */
- ungetch('\n');
+#ifdef NCURSES_WGETCH_EVENTS
+ if (rc != KEY_EVENT)
+#endif
+ ungetch('\n');
for (sp = buf + strlen(buf); sp > buf; sp--)
ungetch(sp[-1]);
+#ifdef NCURSES_WGETCH_EVENTS
+ /* Return it first */
+ if (rc == KEY_EVENT) {
+ *result = rc;
+ returnCode(OK);
+ }
+#endif
+
*result = fifo_pull();
returnCode(OK);
}
@@ -199,19 +296,34 @@ _nc_wgetch(WINDOW *win, unsigned long *result, int use_meta)
wrefresh(win);
if (!win->_notimeout && (win->_delay >= 0 || SP->_cbreak > 1)) {
- int delay;
+ if (head == -1) { /* fifo is empty */
+ int delay;
+ int rc;
+
+ TR(TRACE_IEVENT, ("timed delay in wgetch()"));
+ if (SP->_cbreak > 1)
+ delay = (SP->_cbreak - 1) * 100;
+ else
+ delay = win->_delay;
+
+#ifdef NCURSES_WGETCH_EVENTS
+ if (event_delay >= 0 && delay > event_delay)
+ delay = event_delay;
+#endif
- TR(TRACE_IEVENT, ("timed delay in wgetch()"));
- if (SP->_cbreak > 1)
- delay = (SP->_cbreak - 1) * 100;
- else
- delay = win->_delay;
+ TR(TRACE_IEVENT, ("delay is %d milliseconds", delay));
- TR(TRACE_IEVENT, ("delay is %d milliseconds", delay));
+ rc = check_mouse_activity(delay EVENTLIST_2nd(evl));
- if (head == -1) /* fifo is empty */
- if (!_nc_timed_wait(3, delay, (int *) 0))
+#ifdef NCURSES_WGETCH_EVENTS
+ if (rc & 4) {
+ *result = KEY_EVENT;
+ returnCode(OK);
+ }
+#endif
+ if (!rc)
returnCode(ERR);
+ }
/* else go on to read data available */
}
@@ -228,9 +340,10 @@ _nc_wgetch(WINDOW *win, unsigned long *result, int use_meta)
* increase the wait with mouseinterval().
*/
int runcount = 0;
+ int rc;
do {
- ch = kgetch();
+ ch = kgetch(EVENTLIST_1st(evl));
if (ch == KEY_MOUSE) {
++runcount;
if (SP->_mouse_inline(SP))
@@ -240,16 +353,32 @@ _nc_wgetch(WINDOW *win, unsigned long *result, int use_meta)
break;
} while
(ch == KEY_MOUSE
- && (_nc_timed_wait(3, SP->_maxclick, (int *) 0)
+ && (((rc = check_mouse_activity(SP->_maxclick
+ EVENTLIST_2nd(evl))) != 0
+ && !(rc & 4))
|| !SP->_mouse_parse(runcount)));
- if (runcount > 0 && ch != KEY_MOUSE) {
- /* mouse event sequence ended by keystroke, push it */
+#ifdef NCURSES_WGETCH_EVENTS
+ if ((rc & 4) && !ch == KEY_EVENT) {
ungetch(ch);
- ch = KEY_MOUSE;
+ ch = KEY_EVENT;
+ }
+#endif
+ if (runcount > 0 && ch != KEY_MOUSE) {
+#ifdef NCURSES_WGETCH_EVENTS
+ /* mouse event sequence ended by an event, report event */
+ if (ch == KEY_EVENT) {
+ ungetch(KEY_MOUSE); /* FIXME This interrupts a gesture... */
+ } else
+#endif
+ {
+ /* mouse event sequence ended by keystroke, store keystroke */
+ ungetch(ch);
+ ch = KEY_MOUSE;
+ }
}
} else {
if (head == -1)
- fifo_push();
+ fifo_push(EVENTLIST_1st(evl));
ch = fifo_pull();
}
@@ -312,6 +441,24 @@ _nc_wgetch(WINDOW *win, unsigned long *result, int use_meta)
returnCode(ch >= KEY_MIN ? KEY_CODE_YES : OK);
}
+#ifdef NCURSES_WGETCH_EVENTS
+NCURSES_EXPORT(int)
+wgetch_events(WINDOW *win, _nc_eventlist * evl)
+{
+ int code;
+ unsigned long value;
+
+ T((T_CALLED("wgetch_events(%p,%p)"), win, evl));
+ code = _nc_wgetch(win,
+ &value,
+ SP->_use_meta
+ EVENTLIST_2nd(evl));
+ if (code != ERR)
+ code = value;
+ returnCode(code);
+}
+#endif
+
NCURSES_EXPORT(int)
wgetch(WINDOW *win)
{
@@ -319,7 +466,10 @@ wgetch(WINDOW *win)
unsigned long value;
T((T_CALLED("wgetch(%p)"), win));
- code = _nc_wgetch(win, &value, SP->_use_meta);
+ code = _nc_wgetch(win,
+ &value,
+ (SP ? SP->_use_meta : 0)
+ EVENTLIST_2nd((_nc_eventlist *) 0));
if (code != ERR)
code = value;
returnCode(code);
@@ -341,7 +491,7 @@ wgetch(WINDOW *win)
*/
static int
-kgetch(void)
+kgetch(EVENTLIST_0th(_nc_eventlist * evl))
{
struct tries *ptr;
int ch = 0;
@@ -352,14 +502,28 @@ kgetch(void)
ptr = SP->_keytry;
for (;;) {
- if (!raw_key_in_fifo()) {
- if (fifo_push() == ERR) {
+ if (cooked_key_in_fifo() && SP->_fifo[head] >= KEY_MIN) {
+ break;
+ } else if (!raw_key_in_fifo()) {
+ ch = fifo_push(EVENTLIST_1st(evl));
+ if (ch == ERR) {
peek = head; /* the keys stay uninterpreted */
return ERR;
}
+#ifdef NCURSES_WGETCH_EVENTS
+ else if (ch == KEY_EVENT) {
+ peek = head; /* the keys stay uninterpreted */
+ return fifo_pull(); /* Remove KEY_EVENT from the queue */
+ }
+#endif
}
+
ch = fifo_peek();
if (ch >= KEY_MIN) {
+ /* If not first in queue, somebody put this key there on purpose in
+ * emergency. Consider it higher priority than the unfinished
+ * keysequence we are parsing.
+ */
peek = head;
/* assume the key is the last in fifo */
t_dec(); /* remove the key */
@@ -389,8 +553,19 @@ kgetch(void)
ptr = ptr->child;
if (!raw_key_in_fifo()) {
+ int rc;
+
TR(TRACE_IEVENT, ("waiting for rest of sequence"));
- if (!_nc_timed_wait(3, timeleft, &timeleft)) {
+ rc = check_mouse_activity(timeleft EVENTLIST_2nd(evl));
+#ifdef NCURSES_WGETCH_EVENTS
+ if (rc & 4) {
+ TR(TRACE_IEVENT, ("interrupted by a user event"));
+ /* FIXME Should have preserved remainder timeleft for reuse... */
+ peek = head; /* Restart interpreting later */
+ return KEY_EVENT;
+ }
+#endif
+ if (!rc) {
TR(TRACE_IEVENT, ("ran out of time"));
break;
}
diff --git a/contrib/ncurses/ncurses/base/lib_getstr.c b/contrib/ncurses/ncurses/base/lib_getstr.c
index cd58f1821a7f..274e87887371 100644
--- a/contrib/ncurses/ncurses/base/lib_getstr.c
+++ b/contrib/ncurses/ncurses/base/lib_getstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -41,7 +41,7 @@
#include <curses.priv.h>
#include <term.h>
-MODULE_ID("$Id: lib_getstr.c,v 1.23 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_getstr.c,v 1.25 2006/01/12 00:33:52 tom Exp $")
/*
* This wipes out the last character, no matter whether it was a tab, control
@@ -70,7 +70,10 @@ WipeOut(WINDOW *win, int y, int x, char *first, char *last, bool echoed)
}
NCURSES_EXPORT(int)
-wgetnstr(WINDOW *win, char *str, int maxlen)
+wgetnstr_events(WINDOW *win,
+ char *str,
+ int maxlen,
+ EVENTLIST_1st(_nc_eventlist * evl))
{
TTY buf;
bool oldnl, oldecho, oldraw, oldcbreak;
@@ -105,7 +108,7 @@ wgetnstr(WINDOW *win, char *str, int maxlen)
if (is_wintouched(win) || (win->_flags & _HASMOVED))
wrefresh(win);
- while ((ch = wgetch(win)) != ERR) {
+ while ((ch = wgetch_events(win, evl)) != ERR) {
/*
* Some terminals (the Wyse-50 is the most common) generate
* a \n from the down-arrow key. With this logic, it's the
@@ -122,6 +125,14 @@ wgetnstr(WINDOW *win, char *str, int maxlen)
wechochar(win, (chtype) '\n');
break;
}
+#ifdef KEY_EVENT
+ if (ch == KEY_EVENT)
+ break;
+#endif
+#ifdef KEY_RESIZE
+ if (ch == KEY_RESIZE)
+ break;
+#endif
if (ch == erasec || ch == KEY_LEFT || ch == KEY_BACKSPACE) {
if (str > oldstr) {
str = WipeOut(win, y, x, oldstr, str, oldecho);
@@ -185,9 +196,29 @@ wgetnstr(WINDOW *win, char *str, int maxlen)
*str = '\0';
if (ch == ERR)
- returnCode(ERR);
+ returnCode(ch);
T(("wgetnstr returns %s", _nc_visbuf(oldstr)));
+#ifdef KEY_EVENT
+ if (ch == KEY_EVENT)
+ returnCode(ch);
+#endif
+#ifdef KEY_RESIZE
+ if (ch == KEY_RESIZE)
+ returnCode(ch);
+#endif
+
returnCode(OK);
}
+
+#ifdef NCURSES_WGETCH_EVENTS
+NCURSES_EXPORT(int)
+wgetnstr(WINDOW *win, char *str, int maxlen)
+{
+ returnCode(wgetnstr_events(win,
+ str,
+ maxlen,
+ EVENTLIST_1st((_nc_eventlist *) 0)));
+}
+#endif
diff --git a/contrib/ncurses/ncurses/base/lib_hline.c b/contrib/ncurses/ncurses/base/lib_hline.c
index 2cb6cc5ce6fd..2ef2cc585e10 100644
--- a/contrib/ncurses/ncurses/base/lib_hline.c
+++ b/contrib/ncurses/ncurses/base/lib_hline.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2006 Free 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_hline.c,v 1.10 2001/06/03 00:39:24 skimo Exp $")
+MODULE_ID("$Id: lib_hline.c,v 1.11 2006/03/11 21:52:27 tom Exp $")
NCURSES_EXPORT(int)
whline(WINDOW *win, chtype ch, int n)
@@ -63,9 +63,9 @@ whline(WINDOW *win, chtype ch, int n)
CHANGED_RANGE(line, start, end);
if (ch == 0)
- SetChar(wch, ChCharOf(ACS_HLINE), ChAttrOf(ACS_HLINE));
+ SetChar2(wch, ACS_HLINE);
else
- SetChar(wch, ChCharOf(ch), ChAttrOf(ch));
+ SetChar2(wch, ch);
wch = _nc_render(win, wch);
while (end >= start) {
diff --git a/contrib/ncurses/ncurses/base/lib_initscr.c b/contrib/ncurses/ncurses/base/lib_initscr.c
index 832da742f47b..d2ae281972a9 100644
--- a/contrib/ncurses/ncurses/base/lib_initscr.c
+++ b/contrib/ncurses/ncurses/base/lib_initscr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,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 *
@@ -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-2003 *
****************************************************************************/
/*
@@ -39,27 +40,20 @@
*/
#include <curses.priv.h>
-#include <tic.h> /* for MAX_ALIAS */
#if HAVE_SYS_TERMIO_H
#include <sys/termio.h> /* needed for ISC */
#endif
-MODULE_ID("$Id: lib_initscr.c,v 1.29 2001/08/26 01:05:05 tom Exp $")
+MODULE_ID("$Id: lib_initscr.c,v 1.34 2005/10/22 20:30:38 tom Exp $")
NCURSES_EXPORT(WINDOW *)
initscr(void)
{
static bool initialized = FALSE;
NCURSES_CONST char *name;
- int value;
-#ifdef TRACE
- int t = _nc_getenv_num("NCURSES_TRACE");
-
- if (t >= 0)
- trace(t);
-#endif
+ START_TRACE();
T((T_CALLED("initscr()")));
/* Portable applications must not call initscr() more than once */
if (!initialized) {
@@ -68,16 +62,28 @@ initscr(void)
if ((name = getenv("TERM")) == 0
|| *name == '\0')
name = "unknown";
+#ifdef __CYGWIN__
+ /*
+ * 2002/9/21
+ * Work around a bug in Cygwin. Full-screen subprocesses run from
+ * bash, in turn spawned from another full-screen process, will dump
+ * core when attempting to write to stdout. Opening /dev/tty
+ * explicitly seems to fix the problem.
+ */
+ if (isatty(fileno(stdout))) {
+ FILE *fp = fopen("/dev/tty", "w");
+ if (fp != 0 && isatty(fileno(fp))) {
+ fclose(stdout);
+ dup2(fileno(fp), STDOUT_FILENO);
+ stdout = fdopen(STDOUT_FILENO, "w");
+ }
+ }
+#endif
if (newterm(name, stdout, stdin) == 0) {
fprintf(stderr, "Error opening terminal: %s.\n", name);
exit(EXIT_FAILURE);
}
- /* allow user to set maximum escape delay from the environment */
- if ((value = _nc_getenv_num("ESCDELAY")) >= 0) {
- ESCDELAY = value;
- }
-
/* def_shell_mode - done in newterm/_nc_setupscreen */
def_prog_mode();
}
diff --git a/contrib/ncurses/ncurses/base/lib_insch.c b/contrib/ncurses/ncurses/base/lib_insch.c
index c3671e5d235b..b8a856df3a82 100644
--- a/contrib/ncurses/ncurses/base/lib_insch.c
+++ b/contrib/ncurses/ncurses/base/lib_insch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -29,6 +29,8 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Sven Verdoolaege *
+ * and: Thomas E. Dickey *
****************************************************************************/
/*
@@ -39,30 +41,99 @@
*/
#include <curses.priv.h>
+#include <ctype.h>
-MODULE_ID("$Id: lib_insch.c,v 1.15 2001/06/09 23:47:38 skimo Exp $")
+MODULE_ID("$Id: lib_insch.c,v 1.24 2005/02/26 19:27:28 tom Exp $")
+
+/*
+ * Insert the given character, updating the current location to simplify
+ * inserting a string.
+ */
+NCURSES_EXPORT(int)
+_nc_insert_ch(WINDOW *win, chtype ch)
+{
+ int code = OK;
+ NCURSES_CH_T wch;
+ int count;
+ NCURSES_CONST char *s;
+
+ switch (ch) {
+ case '\t':
+ for (count = (TABSIZE - (win->_curx % TABSIZE)); count > 0; count--) {
+ if ((code = _nc_insert_ch(win, ' ')) != OK)
+ break;
+ }
+ break;
+ case '\n':
+ case '\r':
+ case '\b':
+ SetChar2(wch, ch);
+ _nc_waddch_nosync(win, wch);
+ break;
+ default:
+ if (
+#if USE_WIDEC_SUPPORT
+ WINDOW_EXT(win, addch_used) == 0 &&
+#endif
+ is8bits(ChCharOf(ch)) &&
+ isprint(ChCharOf(ch))) {
+ if (win->_curx <= win->_maxx) {
+ struct ldat *line = &(win->_line[win->_cury]);
+ NCURSES_CH_T *end = &(line->text[win->_curx]);
+ NCURSES_CH_T *temp1 = &(line->text[win->_maxx]);
+ NCURSES_CH_T *temp2 = temp1 - 1;
+
+ SetChar2(wch, ch);
+
+ CHANGED_TO_EOL(line, win->_curx, win->_maxx);
+ while (temp1 > end)
+ *temp1-- = *temp2--;
+
+ *temp1 = _nc_render(win, wch);
+ win->_curx++;
+ }
+ } else if (is8bits(ChCharOf(ch)) && iscntrl(ChCharOf(ch))) {
+ s = unctrl(ChCharOf(ch));
+ while (*s != '\0') {
+ if ((code = _nc_insert_ch(win, ChAttrOf(ch) | UChar(*s))) != OK)
+ break;
+ ++s;
+ }
+ }
+#if USE_WIDEC_SUPPORT
+ else {
+ /*
+ * Handle multibyte characters here
+ */
+ SetChar2(wch, ch);
+ wch = _nc_render(win, wch);
+ if (_nc_build_wch(win, &wch) >= 0)
+ code = wins_wch(win, &wch);
+ }
+#endif
+ break;
+ }
+ return code;
+}
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)"), win, _tracechtype(c)));
- if (win) {
- struct ldat *line = &(win->_line[win->_cury]);
- NCURSES_CH_T *end = &(line->text[win->_curx]);
- NCURSES_CH_T *temp1 = &(line->text[win->_maxx]);
- NCURSES_CH_T *temp2 = temp1 - 1;
- NCURSES_CH_T wch;
- SetChar2(wch, c);
+ if (win != 0) {
+ oy = win->_cury;
+ ox = win->_curx;
- CHANGED_TO_EOL(line, win->_curx, win->_maxx);
- while (temp1 > end)
- *temp1-- = *temp2--;
+ code = _nc_insert_ch(win, c);
- *temp1 = _nc_render(win, wch);
- code = OK;
+ win->_curx = ox;
+ win->_cury = oy;
+ _nc_synchook(win);
}
returnCode(code);
}
diff --git a/contrib/ncurses/ncurses/base/lib_insdel.c b/contrib/ncurses/ncurses/base/lib_insdel.c
index 432bcace9e6a..342c6541f95f 100644
--- a/contrib/ncurses/ncurses/base/lib_insdel.c
+++ b/contrib/ncurses/ncurses/base/lib_insdel.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,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 *
@@ -42,14 +42,14 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_insdel.c,v 1.11 2001/12/19 01:10:49 tom Exp $")
+MODULE_ID("$Id: lib_insdel.c,v 1.12 2003/07/26 22:40:06 tom Exp $")
NCURSES_EXPORT(int)
winsdelln(WINDOW *win, int n)
{
int code = ERR;
- T((T_CALLED("winsdel(%p,%d)"), win, n));
+ T((T_CALLED("winsdelln(%p,%d)"), win, n));
if (win) {
if (n != 0) {
diff --git a/contrib/ncurses/ncurses/base/lib_insnstr.c b/contrib/ncurses/ncurses/base/lib_insnstr.c
new file mode 100644
index 000000000000..b6ddfde3c52b
--- /dev/null
+++ b/contrib/ncurses/ncurses/base/lib_insnstr.c
@@ -0,0 +1,68 @@
+/****************************************************************************
+ * Copyright (c) 2004 Free Software 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 *
+ ****************************************************************************/
+
+/*
+** lib_insnstr.c
+**
+** The routine winsnstr().
+**
+*/
+
+#include <curses.priv.h>
+#include <ctype.h>
+
+MODULE_ID("$Id: lib_insnstr.c,v 1.1 2004/02/28 23:44:56 tom 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)"), win, _nc_visbufn(s, n), n));
+
+ if (win != 0 && str != 0) {
+ oy = win->_cury;
+ ox = win->_curx;
+ for (cp = str; *cp && (n <= 0 || (cp - str) < n); cp++) {
+ _nc_insert_ch(win, (chtype) UChar(*cp));
+ }
+ win->_curx = ox;
+ win->_cury = oy;
+ _nc_synchook(win);
+ code = OK;
+ }
+ returnCode(code);
+}
diff --git a/contrib/ncurses/ncurses/base/lib_instr.c b/contrib/ncurses/ncurses/base/lib_instr.c
index 3eaf9892b45b..809952fdf82f 100644
--- a/contrib/ncurses/ncurses/base/lib_instr.c
+++ b/contrib/ncurses/ncurses/base/lib_instr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -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 *
****************************************************************************/
/*
@@ -40,7 +41,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_instr.c,v 1.11 2001/06/02 23:42:06 skimo Exp $")
+MODULE_ID("$Id: lib_instr.c,v 1.15 2005/11/20 01:38:03 tom Exp $")
NCURSES_EXPORT(int)
winnstr(WINDOW *win, char *str, int n)
@@ -59,7 +60,47 @@ winnstr(WINDOW *win, char *str, int n)
n = win->_maxx - win->_curx + 1;
for (; i < n;) {
- str[i++] = CharOf(win->_line[row].text[col]);
+#if USE_WIDEC_SUPPORT
+ cchar_t *cell = &(win->_line[row].text[col]);
+ wchar_t *wch;
+ attr_t attrs;
+ short pair;
+ int n2;
+ bool done = FALSE;
+ mbstate_t state;
+ size_t i3, n3;
+ char *tmp;
+
+ if (!isWidecExt(*cell)) {
+ n2 = getcchar(cell, 0, 0, 0, 0);
+ if (n2 > 0
+ && (wch = typeCalloc(wchar_t, (unsigned) n2 + 1)) != 0) {
+ if (getcchar(cell, wch, &attrs, &pair, 0) == OK) {
+
+ init_mb(state);
+ n3 = wcstombs(0, wch, 0);
+ if (isEILSEQ(n3) || (n3 == 0)) {
+ ;
+ } else if ((int) (n3 + i) >= n) {
+ done = TRUE;
+ } else if ((tmp = typeCalloc(char, n3 + 10)) == 0) {
+ done = TRUE;
+ } else {
+ init_mb(state);
+ wcstombs(tmp, wch, n3);
+ for (i3 = 0; i3 < n3; ++i3)
+ str[i++] = tmp[i3];
+ free(tmp);
+ }
+ }
+ free(wch);
+ if (done)
+ break;
+ }
+ }
+#else
+ str[i++] = (char) CharOf(win->_line[row].text[col]);
+#endif
if (++col > win->_maxx) {
col = 0;
if (++row > win->_maxy)
@@ -68,5 +109,6 @@ winnstr(WINDOW *win, char *str, int n)
}
}
str[i] = '\0'; /* SVr4 does not seem to count the null */
+ T(("winnstr returns %s", _nc_visbuf(str)));
returnCode(i);
}
diff --git a/contrib/ncurses/ncurses/base/lib_mouse.c b/contrib/ncurses/ncurses/base/lib_mouse.c
index 69af58d5fe24..f30232795be4 100644
--- a/contrib/ncurses/ncurses/base/lib_mouse.c
+++ b/contrib/ncurses/ncurses/base/lib_mouse.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,18 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*
* This module is intended to encapsulate ncurses's interface to pointing
* devices.
*
- * The first method used is xterm's internal mouse-tracking facility.
- * The second is Alessandro Rubini's GPM server.
+ * The primary method used is xterm's internal mouse-tracking facility.
+ * Additional methods depend on the platform:
+ * Alessandro Rubini's GPM server (Linux)
+ * sysmouse (FreeBSD)
+ * special-purpose mouse interface for OS/2 EMX.
*
* Notes for implementors of new mouse-interface methods:
*
@@ -74,36 +78,81 @@
#endif
#include <curses.priv.h>
+
+MODULE_ID("$Id: lib_mouse.c,v 1.85 2006/11/25 22:30:28 tom Exp $")
+
#include <term.h>
+#include <tic.h>
#if USE_GPM_SUPPORT
-#ifndef LINT /* don't need this for llib-lncurses */
-#undef buttons /* term.h defines this, and gpm uses it! */
-#include <gpm.h>
#include <linux/keyboard.h> /* defines KG_* macros */
+
+#ifdef HAVE_LIBDL
+/* use dynamic loader to avoid linkage dependency */
+#include <dlfcn.h>
+
+#ifdef RTLD_NOW
+#define my_RTLD RTLD_NOW
+#else
+#ifdef RTLD_LAZY
+#define my_RTLD RTLD_LAZY
+#else
+make an error
#endif
+#endif /* RTLD_NOW */
+#endif /* HAVE_LIBDL */
+
+#endif /* USE_GPM_SUPPORT */
+
+#if USE_SYSMOUSE
+#undef buttons /* symbol conflict in consio.h */
+#undef mouse_info /* symbol conflict in consio.h */
+#include <osreldate.h>
+#if (__FreeBSD_version >= 400017)
+#include <sys/consio.h>
+#include <sys/fbio.h>
+#else
+#include <machine/console.h>
#endif
-
-MODULE_ID("$Id: lib_mouse.c,v 1.58 2002/01/12 22:38:07 tom Exp $")
+#endif /* use_SYSMOUSE */
#define MY_TRACE TRACE_ICALLS|TRACE_IEVENT
-#define INVALID_EVENT -1
+#define MASK_RELEASE(x) NCURSES_MOUSE_MASK(x, 001)
+#define MASK_PRESS(x) NCURSES_MOUSE_MASK(x, 002)
+#define MASK_CLICK(x) NCURSES_MOUSE_MASK(x, 004)
+#define MASK_DOUBLE_CLICK(x) NCURSES_MOUSE_MASK(x, 010)
+#define MASK_TRIPLE_CLICK(x) NCURSES_MOUSE_MASK(x, 020)
+#define MASK_RESERVED_EVENT(x) NCURSES_MOUSE_MASK(x, 040)
+
+#if NCURSES_MOUSE_VERSION == 1
+#define BUTTON_CLICKED (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED | BUTTON4_CLICKED)
+#define BUTTON_PRESSED (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED | BUTTON4_PRESSED)
+#define BUTTON_RELEASED (BUTTON1_RELEASED | BUTTON2_RELEASED | BUTTON3_RELEASED | BUTTON4_RELEASED)
+#define BUTTON_DOUBLE_CLICKED (BUTTON1_DOUBLE_CLICKED | BUTTON2_DOUBLE_CLICKED | BUTTON3_DOUBLE_CLICKED | BUTTON4_DOUBLE_CLICKED)
+#define BUTTON_TRIPLE_CLICKED (BUTTON1_TRIPLE_CLICKED | BUTTON2_TRIPLE_CLICKED | BUTTON3_TRIPLE_CLICKED | BUTTON4_TRIPLE_CLICKED)
+#define MAX_BUTTONS 4
+#else
+#define BUTTON_CLICKED (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED | BUTTON4_CLICKED | BUTTON5_CLICKED)
+#define BUTTON_PRESSED (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED | BUTTON4_PRESSED | BUTTON5_PRESSED)
+#define BUTTON_RELEASED (BUTTON1_RELEASED | BUTTON2_RELEASED | BUTTON3_RELEASED | BUTTON4_RELEASED | BUTTON5_RELEASED)
+#define BUTTON_DOUBLE_CLICKED (BUTTON1_DOUBLE_CLICKED | BUTTON2_DOUBLE_CLICKED | BUTTON3_DOUBLE_CLICKED | BUTTON4_DOUBLE_CLICKED | BUTTON5_DOUBLE_CLICKED)
+#define BUTTON_TRIPLE_CLICKED (BUTTON1_TRIPLE_CLICKED | BUTTON2_TRIPLE_CLICKED | BUTTON3_TRIPLE_CLICKED | BUTTON4_TRIPLE_CLICKED | BUTTON5_TRIPLE_CLICKED)
+#define MAX_BUTTONS 5
+#endif
-static int mousetype;
-#define M_XTERM -1 /* use xterm's mouse tracking? */
-#define M_NONE 0 /* no mouse device */
-#define M_GPM 1 /* use GPM */
-#define M_QNX 2 /* QNX mouse on console */
-#define M_QNX_TERM 3 /* QNX mouse on pterm/xterm (using qansi-m) */
+#define INVALID_EVENT -1
+#define NORMAL_EVENT 0
#if USE_GPM_SUPPORT
-#ifndef LINT
-static Gpm_Connect gpm_connect;
-#endif
+
+#ifndef LIBGPM_SONAME
+#define LIBGPM_SONAME "libgpm.so"
#endif
-static mmask_t eventmask; /* current event mask */
+#define GET_DLSYM(name) (my_##name = (TYPE_##name) dlsym(obj, #name))
+
+#endif /* USE_GPM_SUPPORT */
static bool _nc_mouse_parse(int);
static void _nc_mouse_resume(SCREEN *);
@@ -111,14 +160,15 @@ static void _nc_mouse_wrap(SCREEN *);
/* maintain a circular list of mouse events */
-/* The definition of the circular list size (EV_MAX), is in curses.priv.h, so
- * wgetch() may refer to the size and call _nc_mouse_parse() before circular
- * list overflow.
- */
-static MEVENT events[EV_MAX]; /* hold the last mouse event seen */
-static MEVENT *eventp = events; /* next free slot in event queue */
-#define NEXT(ep) ((ep == events + EV_MAX - 1) ? events : ep + 1)
-#define PREV(ep) ((ep == events) ? events + EV_MAX - 1 : ep - 1)
+#undef NEXT
+#define NEXT(ep) ((ep == SP->_mouse_events + EV_MAX - 1) \
+ ? SP->_mouse_events \
+ : ep + 1)
+
+#undef PREV
+#define PREV(ep) ((ep == SP->_mouse_events) \
+ ? SP->_mouse_events + EV_MAX - 1 \
+ : ep - 1)
#ifdef TRACE
static void
@@ -128,24 +178,18 @@ _trace_slot(const char *tag)
_tracef(tag);
- for (ep = events; ep < events + EV_MAX; ep++)
+ for (ep = SP->_mouse_events; ep < SP->_mouse_events + EV_MAX; ep++)
_tracef("mouse event queue slot %ld = %s",
- (long) (ep - events),
+ (long) (ep - SP->_mouse_events),
_tracemouse(ep));
}
#endif
-#ifdef USE_EMX_MOUSE
+#if USE_EMX_MOUSE
# define TOP_ROW 0
# define LEFT_COL 0
-static int mouse_wfd;
-static int mouse_thread;
-static int mouse_activated;
-static char mouse_buttons[] =
-{0, 1, 3, 2};
-
# define M_FD(sp) sp->_mouse_fd
static void
@@ -158,7 +202,7 @@ write_event(int down, int button, int x, int y)
buf[3] = ' ' + (button - 1) + (down ? 0 : 0x40);
buf[4] = ' ' + x - LEFT_COL + 1;
buf[5] = ' ' + y - TOP_ROW + 1;
- DosWrite(mouse_wfd, buf, 6, &ignore);
+ DosWrite(SP->_emxmouse_wfd, buf, 6, &ignore);
}
static void
@@ -190,7 +234,7 @@ mouse_server(unsigned long ignored GCC_UNUSED)
sprintf(err, "Error reading mouse queue, rc=%lu.\r\n", rc);
break;
}
- if (!mouse_activated)
+ if (!SP->_emxmouse_activated)
goto finish;
/*
@@ -202,13 +246,13 @@ mouse_server(unsigned long ignored GCC_UNUSED)
*/
if ((mouev.fs ^ oldstate) & MOUSE_BN1_DOWN)
write_event(mouev.fs & MOUSE_BN1_DOWN,
- mouse_buttons[1], mouev.col, mouev.row);
+ SP->_emxmouse_buttons[1], mouev.col, mouev.row);
if ((mouev.fs ^ oldstate) & MOUSE_BN2_DOWN)
write_event(mouev.fs & MOUSE_BN2_DOWN,
- mouse_buttons[3], mouev.col, mouev.row);
+ SP->_emxmouse_buttons[3], mouev.col, mouev.row);
if ((mouev.fs ^ oldstate) & MOUSE_BN3_DOWN)
write_event(mouev.fs & MOUSE_BN3_DOWN,
- mouse_buttons[2], mouev.col, mouev.row);
+ SP->_emxmouse_buttons[2], mouev.col, mouev.row);
finish:
oldstate = mouev.fs;
@@ -223,185 +267,455 @@ mouse_server(unsigned long ignored GCC_UNUSED)
DosExit(EXIT_THREAD, 0L);
}
+#endif /* USE_EMX_MOUSE */
+
+#if USE_SYSMOUSE
+static void
+handle_sysmouse(int sig GCC_UNUSED)
+{
+ struct mouse_info the_mouse;
+ MEVENT *work;
+
+ the_mouse.operation = MOUSE_GETINFO;
+ if (SP != 0
+ && SP->_mouse_fd >= 0
+ && SP->_sysmouse_tail < FIFO_SIZE
+ && ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse) != -1) {
+
+ if (SP->_sysmouse_head > SP->_sysmouse_tail) {
+ SP->_sysmouse_tail = 0;
+ SP->_sysmouse_head = 0;
+ }
+ work = &(SP->_sysmouse_fifo[SP->_sysmouse_tail]);
+ memset(work, 0, sizeof(*work));
+ work->id = NORMAL_EVENT; /* there's only one mouse... */
+
+ SP->_sysmouse_old_buttons = SP->_sysmouse_new_buttons;
+ SP->_sysmouse_new_buttons = the_mouse.u.data.buttons & 0x7;
+
+ if (SP->_sysmouse_new_buttons) {
+ if (SP->_sysmouse_new_buttons & 1)
+ work->bstate |= BUTTON1_PRESSED;
+ if (SP->_sysmouse_new_buttons & 2)
+ work->bstate |= BUTTON2_PRESSED;
+ if (SP->_sysmouse_new_buttons & 4)
+ work->bstate |= BUTTON3_PRESSED;
+ } else {
+ if (SP->_sysmouse_old_buttons & 1)
+ work->bstate |= BUTTON1_RELEASED;
+ if (SP->_sysmouse_old_buttons & 2)
+ work->bstate |= BUTTON2_RELEASED;
+ if (SP->_sysmouse_old_buttons & 4)
+ work->bstate |= BUTTON3_RELEASED;
+ }
+
+ /* for cosmetic bug in syscons.c on FreeBSD 3.[34] */
+ the_mouse.operation = MOUSE_HIDE;
+ ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse);
+ the_mouse.operation = MOUSE_SHOW;
+ ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse);
+
+ /*
+ * We're only interested if the button is pressed or released.
+ * FIXME: implement continuous event-tracking.
+ */
+ if (SP->_sysmouse_new_buttons != SP->_sysmouse_old_buttons) {
+ SP->_sysmouse_tail += 1;
+ }
+ work->x = the_mouse.u.data.x / SP->_sysmouse_char_width;
+ work->y = the_mouse.u.data.y / SP->_sysmouse_char_height;
+ }
+}
+#endif /* USE_SYSMOUSE */
+
static void
-server_state(const int state)
-{ /* It would be nice to implement pointer-off and stop looping... */
- mouse_activated = state;
+init_xterm_mouse(void)
+{
+ SP->_mouse_type = M_XTERM;
+ SP->_mouse_xtermcap = tigetstr("XM");
+ if (!VALID_STRING(SP->_mouse_xtermcap))
+ SP->_mouse_xtermcap = "\033[?1000%?%p1%{1}%=%th%el%;";
}
+static void
+enable_xterm_mouse(int enable)
+{
+#if USE_EMX_MOUSE
+ SP->_emxmouse_activated = enable;
+#else
+ putp(TPARM_1(SP->_mouse_xtermcap, enable));
#endif
+ SP->_mouse_active = enable;
+}
+
+#if USE_GPM_SUPPORT
+static int
+allow_gpm_mouse(void)
+{
+ /* GPM does printf's without checking if stdout is a terminal */
+ if (isatty(fileno(stdout))) {
+ char *env = getenv("TERM");
+ /* GPM checks the beginning of the $TERM variable to decide if
+ * it should pass xterm events through. There is no real advantage
+ * in allowing GPM to do this.
+ */
+ if (env == 0 || strncmp(env, "xterm", 5))
+ return TRUE;
+ }
+ return FALSE;
+}
-static int initialized;
+static bool
+enable_gpm_mouse(int enable)
+{
+ bool result;
+
+ T((T_CALLED("enable_gpm_mouse(%d)"), enable));
+
+ if (enable && !SP->_mouse_active) {
+ /* GPM: initialize connection to gpm server */
+ SP->_mouse_gpm_connect.eventMask = GPM_DOWN | GPM_UP;
+ SP->_mouse_gpm_connect.defaultMask =
+ ~(SP->_mouse_gpm_connect.eventMask | GPM_HARD);
+ SP->_mouse_gpm_connect.minMod = 0;
+ SP->_mouse_gpm_connect.maxMod =
+ (unsigned short) (~((1 << KG_SHIFT) |
+ (1 << KG_SHIFTL) |
+ (1 << KG_SHIFTR)));
+ /*
+ * Note: GPM hardcodes \E[?1001s and \E[?1000h during its open.
+ * The former is recognized by wscons (SunOS), and the latter by
+ * xterm. Those will not show up in ncurses' traces.
+ */
+ result = (my_Gpm_Open(&SP->_mouse_gpm_connect, 0) >= 0);
+ SP->_mouse_active = result;
+ T(("GPM open %s", result ? "succeeded" : "failed"));
+ } else {
+ if (!enable && SP->_mouse_active) {
+ /* GPM: close connection to gpm server */
+ my_Gpm_Close();
+ SP->_mouse_active = FALSE;
+ T(("GPM closed"));
+ }
+ result = FALSE;
+ }
+ returnBool(result);
+}
+#endif /* USE_GPM_SUPPORT */
static void
initialize_mousetype(void)
{
static const char *xterm_kmous = "\033[M";
+ T((T_CALLED("initialize_mousetype()")));
+
/* Try gpm first, because gpm may be configured to run in xterm */
#if USE_GPM_SUPPORT
- /* GPM: initialize connection to gpm server */
- gpm_connect.eventMask = GPM_DOWN | GPM_UP;
- gpm_connect.defaultMask = ~(gpm_connect.eventMask | GPM_HARD);
- gpm_connect.minMod = 0;
- gpm_connect.maxMod = ~((1 << KG_SHIFT) | (1 << KG_SHIFTL) | (1 << KG_SHIFTR));
- if (Gpm_Open(&gpm_connect, 0) >= 0) { /* returns the file-descriptor */
- mousetype = M_GPM;
- SP->_mouse_fd = gpm_fd;
- return;
- }
+ if (allow_gpm_mouse()) {
+ if (!SP->_mouse_gpm_loaded) {
+#ifdef HAVE_LIBDL
+ void *obj;
+
+ if ((obj = dlopen(LIBGPM_SONAME, my_RTLD)) != 0) {
+ if (GET_DLSYM(gpm_fd) == 0 ||
+ GET_DLSYM(Gpm_Open) == 0 ||
+ GET_DLSYM(Gpm_Close) == 0 ||
+ GET_DLSYM(Gpm_GetEvent) == 0) {
+ T(("GPM initialization failed: %s", dlerror()));
+ dlclose(obj);
+ } else {
+ SP->_mouse_gpm_found = TRUE;
+ }
+ }
+#else /* !HAVE_LIBDL */
+ SP->_mouse_gpm_found = TRUE;
#endif
+ SP->_mouse_gpm_loaded = TRUE;
+ }
+
+ /*
+ * The gpm_fd file-descriptor may be negative (xterm). So we have to
+ * maintain our notion of whether the mouse connection is active
+ * without testing the file-descriptor.
+ */
+ if (SP->_mouse_gpm_found && enable_gpm_mouse(TRUE)) {
+ SP->_mouse_type = M_GPM;
+ SP->_mouse_fd = *(my_gpm_fd);
+ T(("GPM mouse_fd %d", SP->_mouse_fd));
+ returnVoid;
+ }
+ }
+#endif /* USE_GPM_SUPPORT */
/* OS/2 VIO */
-#ifdef USE_EMX_MOUSE
- if (!mouse_thread
+#if USE_EMX_MOUSE
+ if (!SP->_emxmouse_thread
&& strstr(cur_term->type.term_names, "xterm") == 0
&& key_mouse) {
int handles[2];
if (pipe(handles) < 0) {
perror("mouse pipe error");
- return;
+ returnVoid;
} else {
int rc;
- if (!mouse_buttons[0]) {
+ if (!SP->_emxmouse_buttons[0]) {
char *s = getenv("MOUSE_BUTTONS_123");
- mouse_buttons[0] = 1;
+ SP->_emxmouse_buttons[0] = 1;
if (s && strlen(s) >= 3) {
- mouse_buttons[1] = s[0] - '0';
- mouse_buttons[2] = s[1] - '0';
- mouse_buttons[3] = s[2] - '0';
+ SP->_emxmouse_buttons[1] = s[0] - '0';
+ SP->_emxmouse_buttons[2] = s[1] - '0';
+ SP->_emxmouse_buttons[3] = s[2] - '0';
+ } else {
+ SP->_emxmouse_buttons[1] = 1;
+ SP->_emxmouse_buttons[2] = 3;
+ SP->_emxmouse_buttons[3] = 2;
}
}
- mouse_wfd = handles[1];
+ SP->_emxmouse_wfd = handles[1];
M_FD(SP) = handles[0];
/* Needed? */
setmode(handles[0], O_BINARY);
setmode(handles[1], O_BINARY);
/* Do not use CRT functions, we may single-threaded. */
- rc = DosCreateThread((unsigned long *) &mouse_thread,
+ rc = DosCreateThread((unsigned long *) &SP->_emxmouse_thread,
mouse_server, 0, 0, 8192);
if (rc) {
printf("mouse thread error %d=%#x", rc, rc);
- return;
} else {
- mousetype = M_XTERM;
- return;
+ SP->_mouse_type = M_XTERM;
}
+ returnVoid;
}
}
-#endif
+#endif /* USE_EMX_MOUSE */
+
+#if USE_SYSMOUSE
+ {
+ struct mouse_info the_mouse;
+ char *the_device = 0;
+
+ if (isatty(SP->_ifd))
+ the_device = ttyname(SP->_ifd);
+ if (the_device == 0)
+ the_device = "/dev/tty";
+
+ SP->_mouse_fd = open(the_device, O_RDWR);
+
+ if (SP->_mouse_fd >= 0) {
+ /*
+ * sysmouse does not have a usable user interface for obtaining
+ * mouse events. The logical way to proceed (reading data on a
+ * stream) only works if one opens the device as root. Even in
+ * that mode, careful examination shows we lose events
+ * occasionally. The interface provided for user programs is to
+ * establish a signal handler. really.
+ *
+ * Take over SIGUSR2 for this purpose since SIGUSR1 is more
+ * likely to be used by an application. getch() will have to
+ * handle the misleading EINTR's.
+ */
+ signal(SIGUSR2, SIG_IGN);
+ the_mouse.operation = MOUSE_MODE;
+ the_mouse.u.mode.mode = 0;
+ the_mouse.u.mode.signal = SIGUSR2;
+ if (ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse) != -1) {
+ signal(SIGUSR2, handle_sysmouse);
+ the_mouse.operation = MOUSE_SHOW;
+ ioctl(SP->_mouse_fd, CONS_MOUSECTL, &the_mouse);
+
+#if defined(FBIO_MODEINFO) || defined(CONS_MODEINFO) /* FreeBSD > 2.x */
+ {
+#ifndef FBIO_GETMODE /* FreeBSD 3.x */
+#define FBIO_GETMODE CONS_GET
+#define FBIO_MODEINFO CONS_MODEINFO
+#endif /* FBIO_GETMODE */
+ video_info_t the_video;
+
+ if (ioctl(SP->_mouse_fd,
+ FBIO_GETMODE,
+ &the_video.vi_mode) != -1
+ && ioctl(SP->_mouse_fd,
+ FBIO_MODEINFO,
+ &the_video) != -1) {
+ SP->_sysmouse_char_width = the_video.vi_cwidth;
+ SP->_sysmouse_char_height = the_video.vi_cheight;
+ }
+ }
+#endif /* defined(FBIO_MODEINFO) || defined(CONS_MODEINFO) */
+
+ if (SP->_sysmouse_char_width <= 0)
+ SP->_sysmouse_char_width = 8;
+ if (SP->_sysmouse_char_height <= 0)
+ SP->_sysmouse_char_height = 16;
+ SP->_mouse_type = M_SYSMOUSE;
+ returnVoid;
+ }
+ }
+ }
+#endif /* USE_SYSMOUSE */
/* we know how to recognize mouse events under "xterm" */
if (key_mouse != 0) {
- if (!strcmp(key_mouse, xterm_kmous)) {
- mousetype = M_XTERM;
- return;
+ if (!strcmp(key_mouse, xterm_kmous)
+ || strstr(cur_term->type.term_names, "xterm") != 0) {
+ init_xterm_mouse();
}
} else if (strstr(cur_term->type.term_names, "xterm") != 0) {
(void) _nc_add_to_try(&(SP->_keytry), xterm_kmous, KEY_MOUSE);
- mousetype = M_XTERM;
- return;
+ init_xterm_mouse();
}
+ returnVoid;
}
-static void
+static bool
_nc_mouse_init(void)
/* initialize the mouse */
{
+ bool result = FALSE;
int i;
- if (!initialized) {
- initialized = TRUE;
+ if (SP != 0) {
+ if (!SP->_mouse_initialized) {
+ SP->_mouse_initialized = TRUE;
- TR(MY_TRACE, ("_nc_mouse_init() called"));
+ TR(MY_TRACE, ("_nc_mouse_init() called"));
- for (i = 0; i < EV_MAX; i++)
- events[i].id = INVALID_EVENT;
+ SP->_mouse_eventp = SP->_mouse_events;
+ for (i = 0; i < EV_MAX; i++)
+ SP->_mouse_events[i].id = INVALID_EVENT;
- initialize_mousetype();
+ initialize_mousetype();
- T(("_nc_mouse_init() set mousetype to %d", mousetype));
+ T(("_nc_mouse_init() set mousetype to %d", SP->_mouse_type));
+ }
+ result = SP->_mouse_initialized;
}
+ return result;
}
+/*
+ * Query to see if there is a pending mouse event. This is called from
+ * fifo_push() in lib_getch.c
+ */
static bool
-_nc_mouse_event(SCREEN * sp GCC_UNUSED)
-/* query to see if there is a pending mouse event */
+_nc_mouse_event(SCREEN *sp GCC_UNUSED)
{
-#if USE_GPM_SUPPORT
- /* GPM: query server for event, return TRUE if we find one */
- Gpm_Event ev;
+ MEVENT *eventp = SP->_mouse_eventp;
+ bool result = FALSE;
- if (gpm_fd >= 0
- && (_nc_timed_wait(3, 0, (int *) 0) & 2) != 0
- && Gpm_GetEvent(&ev) == 1) {
- eventp->id = 0; /* there's only one mouse... */
+ (void) eventp;
- eventp->bstate = 0;
- switch (ev.type & 0x0f) {
- case (GPM_DOWN):
- if (ev.buttons & GPM_B_LEFT)
- eventp->bstate |= BUTTON1_PRESSED;
- if (ev.buttons & GPM_B_MIDDLE)
- eventp->bstate |= BUTTON2_PRESSED;
- if (ev.buttons & GPM_B_RIGHT)
- eventp->bstate |= BUTTON3_PRESSED;
- break;
- case (GPM_UP):
- if (ev.buttons & GPM_B_LEFT)
- eventp->bstate |= BUTTON1_RELEASED;
- if (ev.buttons & GPM_B_MIDDLE)
- eventp->bstate |= BUTTON2_RELEASED;
- if (ev.buttons & GPM_B_RIGHT)
- eventp->bstate |= BUTTON3_RELEASED;
- break;
- default:
- break;
+ switch (SP->_mouse_type) {
+ case M_XTERM:
+ /* xterm: never have to query, mouse events are in the keyboard stream */
+#if USE_EMX_MOUSE
+ {
+ char kbuf[3];
+
+ int i, res = read(M_FD(sp), &kbuf, 3); /* Eat the prefix */
+ if (res != 3)
+ printf("Got %d chars instead of 3 for prefix.\n", res);
+ for (i = 0; i < res; i++) {
+ if (kbuf[i] != key_mouse[i])
+ printf("Got char %d instead of %d for prefix.\n",
+ (int) kbuf[i], (int) key_mouse[i]);
+ }
+ result = TRUE;
}
+#endif /* USE_EMX_MOUSE */
+ break;
- eventp->x = ev.x - 1;
- eventp->y = ev.y - 1;
- eventp->z = 0;
+#if USE_GPM_SUPPORT
+ case M_GPM:
+ {
+ /* query server for event, return TRUE if we find one */
+ Gpm_Event ev;
+
+ if (my_Gpm_GetEvent(&ev) == 1) {
+ /* there's only one mouse... */
+ eventp->id = NORMAL_EVENT;
+
+ eventp->bstate = 0;
+ switch (ev.type & 0x0f) {
+ case (GPM_DOWN):
+ if (ev.buttons & GPM_B_LEFT)
+ eventp->bstate |= BUTTON1_PRESSED;
+ if (ev.buttons & GPM_B_MIDDLE)
+ eventp->bstate |= BUTTON2_PRESSED;
+ if (ev.buttons & GPM_B_RIGHT)
+ eventp->bstate |= BUTTON3_PRESSED;
+ break;
+ case (GPM_UP):
+ if (ev.buttons & GPM_B_LEFT)
+ eventp->bstate |= BUTTON1_RELEASED;
+ if (ev.buttons & GPM_B_MIDDLE)
+ eventp->bstate |= BUTTON2_RELEASED;
+ if (ev.buttons & GPM_B_RIGHT)
+ eventp->bstate |= BUTTON3_RELEASED;
+ break;
+ default:
+ break;
+ }
- /* bump the next-free pointer into the circular list */
- eventp = NEXT(eventp);
- return (TRUE);
- }
+ eventp->x = ev.x - 1;
+ eventp->y = ev.y - 1;
+ eventp->z = 0;
+
+ /* bump the next-free pointer into the circular list */
+ SP->_mouse_eventp = eventp = NEXT(eventp);
+ result = TRUE;
+ }
+ }
+ break;
#endif
-#ifdef USE_EMX_MOUSE
- if (SP->_mouse_fd >= 0
- && (_nc_timed_wait(3, 0, (int *) 0) & 2) != 0) {
- char kbuf[3];
-
- int i, res = read(M_FD(sp), &kbuf, 3); /* Eat the prefix */
- if (res != 3)
- printf("Got %d chars instead of 3 for prefix.\n", res);
- for (i = 0; i < res; i++) {
- if (kbuf[i] != key_mouse[i])
- printf("Got char %d instead of %d for prefix.\n",
- (int) kbuf[i], (int) key_mouse[i]);
+#if USE_SYSMOUSE
+ case M_SYSMOUSE:
+ if (SP->_sysmouse_head < SP->_sysmouse_tail) {
+ *eventp = SP->_sysmouse_fifo[SP->_sysmouse_head];
+
+ /*
+ * Point the fifo-head to the next possible location. If there
+ * are none, reset the indices. This may be interrupted by the
+ * signal handler, doing essentially the same reset.
+ */
+ SP->_sysmouse_head += 1;
+ if (SP->_sysmouse_head == SP->_sysmouse_tail) {
+ SP->_sysmouse_tail = 0;
+ SP->_sysmouse_head = 0;
+ }
+
+ /* bump the next-free pointer into the circular list */
+ SP->_mouse_eventp = eventp = NEXT(eventp);
+ result = TRUE;
}
- return TRUE;
+ break;
+#endif /* USE_SYSMOUSE */
+
+ case M_NONE:
+ break;
}
-#endif /* USE_EMX_MOUSE */
- /* xterm: never have to query, mouse events are in the keyboard stream */
- return (FALSE); /* no event waiting */
+ return result; /* true if we found an event */
}
static bool
-_nc_mouse_inline(SCREEN * sp)
+_nc_mouse_inline(SCREEN *sp)
/* mouse report received in the keyboard stream -- parse its info */
{
+ int b;
+ bool result = FALSE;
+ MEVENT *eventp = SP->_mouse_eventp;
+
TR(MY_TRACE, ("_nc_mouse_inline() called"));
- if (mousetype == M_XTERM) {
+ if (SP->_mouse_type == M_XTERM) {
unsigned char kbuf[4];
- MEVENT *prev;
+ mmask_t prev;
size_t grabbed;
int res;
@@ -432,13 +746,15 @@ _nc_mouse_inline(SCREEN * sp)
* (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. It always does under Linux but often
- * fails to under Solaris.
+ * single clist item.
+ *
+ * Wheel mice may return buttons 4 and 5 when the wheel is turned.
+ * We encode those as button presses.
*/
for (grabbed = 0; grabbed < 3; grabbed += res) {
/* For VIO mouse we add extra bit 64 to disambiguate button-up. */
-#ifdef USE_EMX_MOUSE
+#if USE_EMX_MOUSE
res = read(M_FD(sp) >= 0 ? M_FD(sp) : sp->_ifd, &kbuf, 3);
#else
res = read(sp->_ifd, kbuf + grabbed, 3 - grabbed);
@@ -451,59 +767,71 @@ _nc_mouse_inline(SCREEN * sp)
TR(TRACE_IEVENT,
("_nc_mouse_inline sees the following xterm data: '%s'", kbuf));
- eventp->id = 0; /* there's only one mouse... */
+ /* there's only one mouse... */
+ eventp->id = NORMAL_EVENT;
/* processing code goes here */
eventp->bstate = 0;
+ prev = PREV(eventp)->bstate;
+
+#if USE_EMX_MOUSE
+#define PRESS_POSITION(n) \
+ eventp->bstate = MASK_PRESS(n); \
+ if (kbuf[0] & 0x40) \
+ eventp->bstate = MASK_RELEASE(n)
+#else
+#define PRESS_POSITION(n) \
+ eventp->bstate = (prev & MASK_PRESS(n) \
+ ? REPORT_MOUSE_POSITION \
+ : MASK_PRESS(n))
+#endif
+
switch (kbuf[0] & 0x3) {
case 0x0:
- eventp->bstate = BUTTON1_PRESSED;
-#ifdef USE_EMX_MOUSE
- if (kbuf[0] & 0x40)
- eventp->bstate = BUTTON1_RELEASED;
-#endif
+ if (kbuf[0] & 64)
+ eventp->bstate = MASK_PRESS(4);
+ else
+ PRESS_POSITION(1);
break;
case 0x1:
- eventp->bstate = BUTTON2_PRESSED;
-#ifdef USE_EMX_MOUSE
- if (kbuf[0] & 0x40)
- eventp->bstate = BUTTON2_RELEASED;
+#if NCURSES_MOUSE_VERSION == 2
+ if (kbuf[0] & 64)
+ eventp->bstate = MASK_PRESS(5);
+ else
#endif
+ PRESS_POSITION(2);
break;
case 0x2:
- eventp->bstate = BUTTON3_PRESSED;
-#ifdef USE_EMX_MOUSE
- if (kbuf[0] & 0x40)
- eventp->bstate = BUTTON3_RELEASED;
-#endif
+ PRESS_POSITION(3);
break;
case 0x3:
/*
- * Release events aren't reported for individual buttons,
- * just for the button set as a whole...
+ * 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.
*/
- eventp->bstate =
- (BUTTON1_RELEASED |
- BUTTON2_RELEASED |
- BUTTON3_RELEASED);
- /*
- * ...however, because there are no kinds of mouse events under
- * xterm that can intervene between press and release, we can
- * deduce which buttons were actually released by looking at the
- * previous event.
- */
- prev = PREV(eventp);
- if (!(prev->bstate & BUTTON1_PRESSED))
- eventp->bstate &= ~BUTTON1_RELEASED;
- if (!(prev->bstate & BUTTON2_PRESSED))
- eventp->bstate &= ~BUTTON2_RELEASED;
- if (!(prev->bstate & BUTTON3_PRESSED))
- eventp->bstate &= ~BUTTON3_RELEASED;
+ if (prev & (BUTTON_PRESSED | BUTTON_RELEASED)) {
+ eventp->bstate = BUTTON_RELEASED;
+ for (b = 1; b <= MAX_BUTTONS; ++b) {
+ if (!(prev & MASK_PRESS(b)))
+ eventp->bstate &= ~MASK_RELEASE(b);
+ }
+ } else {
+ /*
+ * 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.
+ */
+ eventp->bstate = REPORT_MOUSE_POSITION;
+ }
break;
}
+ result = (eventp->bstate & REPORT_MOUSE_POSITION) ? TRUE : FALSE;
if (kbuf[0] & 4) {
eventp->bstate |= BUTTON_SHIFT;
@@ -520,45 +848,53 @@ _nc_mouse_inline(SCREEN * sp)
TR(MY_TRACE,
("_nc_mouse_inline: primitive mouse-event %s has slot %ld",
_tracemouse(eventp),
- (long) (eventp - events)));
+ (long) (eventp - SP->_mouse_events)));
/* bump the next-free pointer into the circular list */
- eventp = NEXT(eventp);
+ SP->_mouse_eventp = NEXT(eventp);
#if 0 /* this return would be needed for QNX's mods to lib_getch.c */
return (TRUE);
#endif
}
- return (FALSE);
+ return (result);
}
static void
mouse_activate(bool on)
{
- if (!on && !initialized)
+ if (!on && !SP->_mouse_initialized)
return;
- _nc_mouse_init();
+ if (!_nc_mouse_init())
+ return;
if (on) {
- switch (mousetype) {
+ switch (SP->_mouse_type) {
case M_XTERM:
#if NCURSES_EXT_FUNCS
keyok(KEY_MOUSE, on);
#endif
TPUTS_TRACE("xterm mouse initialization");
-#ifdef USE_EMX_MOUSE
- server_state(1);
-#else
- putp("\033[?1000h");
-#endif
+ enable_xterm_mouse(1);
break;
#if USE_GPM_SUPPORT
case M_GPM:
- SP->_mouse_fd = gpm_fd;
+ if (enable_gpm_mouse(1)) {
+ SP->_mouse_fd = *(my_gpm_fd);
+ T(("GPM mouse_fd %d", SP->_mouse_fd));
+ }
+ break;
+#endif
+#if USE_SYSMOUSE
+ case M_SYSMOUSE:
+ signal(SIGUSR2, handle_sysmouse);
+ SP->_mouse_active = TRUE;
break;
#endif
+ case M_NONE:
+ return;
}
/* Make runtime binding to cut down on object size of applications that
* do not use the mouse (e.g., 'clear').
@@ -568,22 +904,26 @@ mouse_activate(bool on)
SP->_mouse_parse = _nc_mouse_parse;
SP->_mouse_resume = _nc_mouse_resume;
SP->_mouse_wrap = _nc_mouse_wrap;
-
} else {
- switch (mousetype) {
+ switch (SP->_mouse_type) {
case M_XTERM:
TPUTS_TRACE("xterm mouse deinitialization");
-#ifdef USE_EMX_MOUSE
- server_state(0);
-#else
- putp("\033[?1000l");
-#endif
+ enable_xterm_mouse(0);
break;
#if USE_GPM_SUPPORT
case M_GPM:
+ enable_gpm_mouse(0);
+ break;
+#endif
+#if USE_SYSMOUSE
+ case M_SYSMOUSE:
+ signal(SIGUSR2, SIG_IGN);
+ SP->_mouse_active = FALSE;
break;
#endif
+ case M_NONE:
+ return;
}
}
_nc_flush();
@@ -599,8 +939,10 @@ static bool
_nc_mouse_parse(int runcount)
/* parse a run of atomic mouse events into a gesture */
{
+ MEVENT *eventp = SP->_mouse_eventp;
MEVENT *ep, *runp, *next, *prev = PREV(eventp);
int n;
+ int b;
bool merge;
TR(MY_TRACE, ("_nc_mouse_parse(%d) called", runcount));
@@ -609,7 +951,7 @@ _nc_mouse_parse(int runcount)
* When we enter this routine, the event list next-free pointer
* points just past a run of mouse events that we know were separated
* in time by less than the critical click interval. The job of this
- * routine is to collaps this run into a single higher-level event
+ * routine is to collapse this run into a single higher-level event
* or gesture.
*
* We accomplish this in two passes. The first pass merges press/release
@@ -630,9 +972,9 @@ _nc_mouse_parse(int runcount)
TR(MY_TRACE,
("_nc_mouse_parse: returning simple mouse event %s at slot %ld",
_tracemouse(prev),
- (long) (prev - events)));
- return (prev->id >= 0)
- ? ((prev->bstate & eventmask) ? TRUE : FALSE)
+ (long) (prev - SP->_mouse_events)));
+ return (prev->id >= NORMAL_EVENT)
+ ? ((prev->bstate & SP->_mouse_mask) ? TRUE : FALSE)
: FALSE;
}
@@ -646,8 +988,8 @@ _nc_mouse_parse(int runcount)
if (_nc_tracing & TRACE_IEVENT) {
_trace_slot("before mouse press/release merge:");
_tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
- (long) (runp - events),
- (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
+ (long) (runp - SP->_mouse_events),
+ (long) ((eventp - SP->_mouse_events) + (EV_MAX - 1)) % EV_MAX,
runcount);
}
#endif /* TRACE */
@@ -656,32 +998,27 @@ _nc_mouse_parse(int runcount)
do {
merge = FALSE;
for (ep = runp; (next = NEXT(ep)) != eventp; ep = next) {
+
+#define MASK_CHANGED(x) (!(ep->bstate & MASK_PRESS(x)) \
+ == !(next->bstate & MASK_RELEASE(x)))
+
if (ep->x == next->x && ep->y == next->y
- && (ep->bstate & (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED))
- && (!(ep->bstate & BUTTON1_PRESSED)
- == !(next->bstate & BUTTON1_RELEASED))
- && (!(ep->bstate & BUTTON2_PRESSED)
- == !(next->bstate & BUTTON2_RELEASED))
- && (!(ep->bstate & BUTTON3_PRESSED)
- == !(next->bstate & BUTTON3_RELEASED))
+ && (ep->bstate & BUTTON_PRESSED)
+ && MASK_CHANGED(1)
+ && MASK_CHANGED(2)
+ && MASK_CHANGED(3)
+ && MASK_CHANGED(4)
+#if NCURSES_MOUSE_VERSION == 2
+ && MASK_CHANGED(5)
+#endif
) {
- if ((eventmask & BUTTON1_CLICKED)
- && (ep->bstate & BUTTON1_PRESSED)) {
- ep->bstate &= ~BUTTON1_PRESSED;
- ep->bstate |= BUTTON1_CLICKED;
- merge = TRUE;
- }
- if ((eventmask & BUTTON2_CLICKED)
- && (ep->bstate & BUTTON2_PRESSED)) {
- ep->bstate &= ~BUTTON2_PRESSED;
- ep->bstate |= BUTTON2_CLICKED;
- merge = TRUE;
- }
- if ((eventmask & BUTTON3_CLICKED)
- && (ep->bstate & BUTTON3_PRESSED)) {
- ep->bstate &= ~BUTTON3_PRESSED;
- ep->bstate |= BUTTON3_CLICKED;
- merge = TRUE;
+ for (b = 1; b <= MAX_BUTTONS; ++b) {
+ if ((SP->_mouse_mask & MASK_CLICK(b))
+ && (ep->bstate & MASK_PRESS(b))) {
+ ep->bstate &= ~MASK_PRESS(b);
+ ep->bstate |= MASK_CLICK(b);
+ merge = TRUE;
+ }
}
if (merge)
next->id = INVALID_EVENT;
@@ -694,8 +1031,8 @@ _nc_mouse_parse(int runcount)
if (_nc_tracing & TRACE_IEVENT) {
_trace_slot("before mouse click merge:");
_tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
- (long) (runp - events),
- (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
+ (long) (runp - SP->_mouse_events),
+ (long) ((eventp - SP->_mouse_events) + (EV_MAX - 1)) % EV_MAX,
runcount);
}
#endif /* TRACE */
@@ -729,56 +1066,30 @@ _nc_mouse_parse(int runcount)
continue;
/* merge click events forward */
- if ((ep->bstate &
- (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))
- && (follower->bstate &
- (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))) {
- if ((eventmask & BUTTON1_DOUBLE_CLICKED)
- && (follower->bstate & BUTTON1_CLICKED)) {
- follower->bstate &= ~BUTTON1_CLICKED;
- follower->bstate |= BUTTON1_DOUBLE_CLICKED;
- merge = TRUE;
- }
- if ((eventmask & BUTTON2_DOUBLE_CLICKED)
- && (follower->bstate & BUTTON2_CLICKED)) {
- follower->bstate &= ~BUTTON2_CLICKED;
- follower->bstate |= BUTTON2_DOUBLE_CLICKED;
- merge = TRUE;
- }
- if ((eventmask & BUTTON3_DOUBLE_CLICKED)
- && (follower->bstate & BUTTON3_CLICKED)) {
- follower->bstate &= ~BUTTON3_CLICKED;
- follower->bstate |= BUTTON3_DOUBLE_CLICKED;
- merge = TRUE;
+ if ((ep->bstate & BUTTON_CLICKED)
+ && (follower->bstate & BUTTON_CLICKED)) {
+ for (b = 1; b <= MAX_BUTTONS; ++b) {
+ if ((SP->_mouse_mask & MASK_DOUBLE_CLICK(b))
+ && (follower->bstate & MASK_CLICK(b))) {
+ follower->bstate &= ~MASK_CLICK(b);
+ follower->bstate |= MASK_DOUBLE_CLICK(b);
+ merge = TRUE;
+ }
}
if (merge)
ep->id = INVALID_EVENT;
}
/* merge double-click events forward */
- if ((ep->bstate &
- (BUTTON1_DOUBLE_CLICKED
- | BUTTON2_DOUBLE_CLICKED
- | BUTTON3_DOUBLE_CLICKED))
- && (follower->bstate &
- (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))) {
- if ((eventmask & BUTTON1_TRIPLE_CLICKED)
- && (follower->bstate & BUTTON1_CLICKED)) {
- follower->bstate &= ~BUTTON1_CLICKED;
- follower->bstate |= BUTTON1_TRIPLE_CLICKED;
- merge = TRUE;
- }
- if ((eventmask & BUTTON2_TRIPLE_CLICKED)
- && (follower->bstate & BUTTON2_CLICKED)) {
- follower->bstate &= ~BUTTON2_CLICKED;
- follower->bstate |= BUTTON2_TRIPLE_CLICKED;
- merge = TRUE;
- }
- if ((eventmask & BUTTON3_TRIPLE_CLICKED)
- && (follower->bstate & BUTTON3_CLICKED)) {
- follower->bstate &= ~BUTTON3_CLICKED;
- follower->bstate |= BUTTON3_TRIPLE_CLICKED;
- merge = TRUE;
+ if ((ep->bstate & BUTTON_DOUBLE_CLICKED)
+ && (follower->bstate & BUTTON_CLICKED)) {
+ for (b = 1; b <= MAX_BUTTONS; ++b) {
+ if ((SP->_mouse_mask & MASK_TRIPLE_CLICK(b))
+ && (follower->bstate & MASK_CLICK(b))) {
+ follower->bstate &= ~MASK_CLICK(b);
+ follower->bstate |= MASK_TRIPLE_CLICK(b);
+ merge = TRUE;
+ }
}
if (merge)
ep->id = INVALID_EVENT;
@@ -791,8 +1102,8 @@ _nc_mouse_parse(int runcount)
if (_nc_tracing & TRACE_IEVENT) {
_trace_slot("before mouse event queue compaction:");
_tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
- (long) (runp - events),
- (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
+ (long) (runp - SP->_mouse_events),
+ (long) ((eventp - SP->_mouse_events) + (EV_MAX - 1)) % EV_MAX,
runcount);
}
#endif /* TRACE */
@@ -802,15 +1113,15 @@ _nc_mouse_parse(int runcount)
* don't match the current event mask.
*/
for (; runcount; prev = PREV(eventp), runcount--)
- if (prev->id == INVALID_EVENT || !(prev->bstate & eventmask)) {
- eventp = prev;
+ if (prev->id == INVALID_EVENT || !(prev->bstate & SP->_mouse_mask)) {
+ SP->_mouse_eventp = eventp = prev;
}
#ifdef TRACE
if (_nc_tracing & TRACE_IEVENT) {
_trace_slot("after mouse event queue compaction:");
_tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
- (long) (runp - events),
- (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
+ (long) (runp - SP->_mouse_events),
+ (long) ((eventp - SP->_mouse_events) + (EV_MAX - 1)) % EV_MAX,
runcount);
}
for (ep = runp; ep != eventp; ep = NEXT(ep))
@@ -818,7 +1129,7 @@ _nc_mouse_parse(int runcount)
TR(MY_TRACE,
("_nc_mouse_parse: returning composite mouse event %s at slot %ld",
_tracemouse(ep),
- (long) (ep - events)));
+ (long) (ep - SP->_mouse_events)));
#endif /* TRACE */
/* after all this, do we have a valid event? */
@@ -826,35 +1137,62 @@ _nc_mouse_parse(int runcount)
}
static void
-_nc_mouse_wrap(SCREEN * sp GCC_UNUSED)
+_nc_mouse_wrap(SCREEN *sp GCC_UNUSED)
/* release mouse -- called by endwin() before shellout/exit */
{
TR(MY_TRACE, ("_nc_mouse_wrap() called"));
- switch (mousetype) {
+ switch (SP->_mouse_type) {
case M_XTERM:
- if (eventmask)
+ if (SP->_mouse_mask)
mouse_activate(FALSE);
break;
#if USE_GPM_SUPPORT
/* GPM: pass all mouse events to next client */
case M_GPM:
+ if (SP->_mouse_mask)
+ mouse_activate(FALSE);
+ break;
+#endif
+#if USE_SYSMOUSE
+ case M_SYSMOUSE:
+ mouse_activate(FALSE);
break;
#endif
+ case M_NONE:
+ break;
}
}
static void
-_nc_mouse_resume(SCREEN * sp GCC_UNUSED)
+_nc_mouse_resume(SCREEN *sp GCC_UNUSED)
/* re-connect to mouse -- called by doupdate() after shellout */
{
TR(MY_TRACE, ("_nc_mouse_resume() called"));
- /* xterm: re-enable reporting */
- if (mousetype == M_XTERM && eventmask)
- mouse_activate(TRUE);
+ switch (SP->_mouse_type) {
+ case M_XTERM:
+ /* xterm: re-enable reporting */
+ if (SP->_mouse_mask)
+ mouse_activate(TRUE);
+ break;
- /* GPM: reclaim our event set */
+#if USE_GPM_SUPPORT
+ case M_GPM:
+ /* GPM: reclaim our event set */
+ if (SP->_mouse_mask)
+ mouse_activate(TRUE);
+ break;
+#endif
+
+#if USE_SYSMOUSE
+ case M_SYSMOUSE:
+ mouse_activate(TRUE);
+ break;
+#endif
+ case M_NONE:
+ break;
+ }
}
/**************************************************************************
@@ -869,7 +1207,8 @@ getmouse(MEVENT * aevent)
{
T((T_CALLED("getmouse(%p)"), aevent));
- if (aevent && (mousetype != M_NONE)) {
+ if ((aevent != 0) && (SP != 0) && (SP->_mouse_type != M_NONE)) {
+ MEVENT *eventp = SP->_mouse_eventp;
/* compute the current-event pointer */
MEVENT *prev = PREV(eventp);
@@ -878,7 +1217,7 @@ getmouse(MEVENT * aevent)
TR(TRACE_IEVENT, ("getmouse: returning event %s from slot %ld",
_tracemouse(prev),
- (long) (prev - events)));
+ (long) (prev - SP->_mouse_events)));
prev->id = INVALID_EVENT; /* so the queue slot becomes free */
returnCode(OK);
@@ -890,14 +1229,23 @@ NCURSES_EXPORT(int)
ungetmouse(MEVENT * aevent)
/* enqueue a synthesized mouse event to be seen by the next wgetch() */
{
- /* stick the given event in the next-free slot */
- *eventp = *aevent;
+ int result = ERR;
+
+ T((T_CALLED("ungetmouse(%p)"), aevent));
- /* bump the next-free pointer into the circular list */
- eventp = NEXT(eventp);
+ if (aevent != 0 && SP != 0) {
+ MEVENT *eventp = SP->_mouse_eventp;
- /* push back the notification event on the keyboard queue */
- return ungetch(KEY_MOUSE);
+ /* stick the given event in the next-free slot */
+ *eventp = *aevent;
+
+ /* bump the next-free pointer into the circular list */
+ SP->_mouse_eventp = NEXT(eventp);
+
+ /* push back the notification event on the keyboard queue */
+ result = ungetch(KEY_MOUSE);
+ }
+ returnCode(result);
}
NCURSES_EXPORT(mmask_t)
@@ -906,45 +1254,54 @@ mousemask(mmask_t newmask, mmask_t * oldmask)
{
mmask_t result = 0;
- T((T_CALLED("mousemask(%#lx,%p)"), newmask, oldmask));
+ T((T_CALLED("mousemask(%#lx,%p)"), (unsigned long) newmask, oldmask));
- if (oldmask)
- *oldmask = eventmask;
-
- if (!newmask && !initialized)
- returnCode(0);
-
- _nc_mouse_init();
- if (mousetype != M_NONE) {
- eventmask = newmask &
- (BUTTON_ALT | BUTTON_CTRL | BUTTON_SHIFT
- | BUTTON1_PRESSED | BUTTON1_RELEASED | BUTTON1_CLICKED
- | BUTTON1_DOUBLE_CLICKED | BUTTON1_TRIPLE_CLICKED
- | BUTTON2_PRESSED | BUTTON2_RELEASED | BUTTON2_CLICKED
- | BUTTON2_DOUBLE_CLICKED | BUTTON2_TRIPLE_CLICKED
- | BUTTON3_PRESSED | BUTTON3_RELEASED | BUTTON3_CLICKED
- | BUTTON3_DOUBLE_CLICKED | BUTTON3_TRIPLE_CLICKED);
-
- mouse_activate(eventmask != 0);
-
- result = eventmask;
+ if (SP != 0) {
+ if (oldmask)
+ *oldmask = SP->_mouse_mask;
+
+ if (newmask || SP->_mouse_initialized) {
+ _nc_mouse_init();
+ if (SP->_mouse_type != M_NONE) {
+ result = newmask &
+ (REPORT_MOUSE_POSITION
+ | BUTTON_ALT
+ | BUTTON_CTRL
+ | BUTTON_SHIFT
+ | BUTTON_PRESSED
+ | BUTTON_RELEASED
+ | BUTTON_CLICKED
+ | BUTTON_DOUBLE_CLICKED
+ | BUTTON_TRIPLE_CLICKED);
+
+ mouse_activate((bool) (result != 0));
+
+ SP->_mouse_mask = result;
+ }
+ }
+ } else {
+ if (oldmask)
+ *oldmask = SP->_mouse_mask;
}
-
- returnCode(result);
+ returnBits(result);
}
NCURSES_EXPORT(bool)
wenclose(const WINDOW *win, int y, int x)
/* check to see if given window encloses given screen location */
{
- if (win) {
+ bool result = FALSE;
+
+ T((T_CALLED("wenclose(%p,%d,%d)"), win, y, x));
+
+ if (win != 0) {
y -= win->_yoffset;
- return ((win->_begy <= y &&
- win->_begx <= x &&
- (win->_begx + win->_maxx) >= x &&
- (win->_begy + win->_maxy) >= y) ? TRUE : FALSE);
+ result = ((win->_begy <= y &&
+ win->_begx <= x &&
+ (win->_begx + win->_maxx) >= x &&
+ (win->_begy + win->_maxy) >= y) ? TRUE : FALSE);
}
- return FALSE;
+ returnBool(result);
}
NCURSES_EXPORT(int)
@@ -953,6 +1310,8 @@ mouseinterval(int maxclick)
{
int oldval;
+ T((T_CALLED("mouseinterval(%d)"), maxclick));
+
if (SP != 0) {
oldval = SP->_maxclick;
if (maxclick >= 0)
@@ -961,7 +1320,7 @@ mouseinterval(int maxclick)
oldval = DEFAULT_MAXCLICK;
}
- return (oldval);
+ returnCode(oldval);
}
/* This may be used by other routines to ask for the existence of mouse
@@ -969,15 +1328,16 @@ mouseinterval(int maxclick)
NCURSES_EXPORT(int)
_nc_has_mouse(void)
{
- return (mousetype == M_NONE ? 0 : 1);
+ return (SP->_mouse_type == M_NONE ? 0 : 1);
}
NCURSES_EXPORT(bool)
-wmouse_trafo
-(const WINDOW *win, int *pY, int *pX, bool to_screen)
+wmouse_trafo(const WINDOW *win, int *pY, int *pX, bool to_screen)
{
bool result = FALSE;
+ T((T_CALLED("wmouse_trafo(%p,%p,%p,%d)"), win, pY, pX, to_screen));
+
if (win && pY && pX) {
int y = *pY;
int x = *pX;
@@ -999,7 +1359,5 @@ wmouse_trafo
*pY = y;
}
}
- return (result);
+ returnBool(result);
}
-
-/* lib_mouse.c ends here */
diff --git a/contrib/ncurses/ncurses/base/lib_move.c b/contrib/ncurses/ncurses/base/lib_move.c
index e917eb780525..652c44d7b718 100644
--- a/contrib/ncurses/ncurses/base/lib_move.c
+++ b/contrib/ncurses/ncurses/base/lib_move.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2000,2004 Free 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 *
****************************************************************************/
/*
@@ -40,16 +41,14 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_move.c,v 1.11 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_move.c,v 1.12 2004/12/04 21:50:07 tom Exp $")
NCURSES_EXPORT(int)
wmove(WINDOW *win, int y, int x)
{
T((T_CALLED("wmove(%p,%d,%d)"), win, y, x));
- if (win &&
- x >= 0 && x <= win->_maxx &&
- y >= 0 && y <= win->_maxy) {
+ if (LEGALYX(win, y, x)) {
win->_curx = (NCURSES_SIZE_T) x;
win->_cury = (NCURSES_SIZE_T) y;
diff --git a/contrib/ncurses/ncurses/base/lib_mvwin.c b/contrib/ncurses/ncurses/base/lib_mvwin.c
index 63d54ccda574..e4dad4a746f0 100644
--- a/contrib/ncurses/ncurses/base/lib_mvwin.c
+++ b/contrib/ncurses/ncurses/base/lib_mvwin.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2006 Free 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_mvwin.c,v 1.12 2001/12/19 01:06:22 tom Exp $")
+MODULE_ID("$Id: lib_mvwin.c,v 1.14 2006/02/25 22:53:46 tom Exp $")
NCURSES_EXPORT(int)
mvwin(WINDOW *win, int by, int bx)
@@ -50,6 +50,11 @@ mvwin(WINDOW *win, int by, int bx)
if (!win || (win->_flags & _ISPAD))
returnCode(ERR);
+ /*
+ * mvwin() should only modify the indices. See test/demo_menus.c and
+ * test/movewindow.c for examples.
+ */
+#if 0
/* Copying subwindows is allowed, but it is expensive... */
if (win->_flags & _SUBWIN) {
int err = ERR;
@@ -89,6 +94,7 @@ mvwin(WINDOW *win, int by, int bx)
}
returnCode(err);
}
+#endif
if (by + win->_maxy > screen_lines - 1
|| bx + win->_maxx > screen_columns - 1
diff --git a/contrib/ncurses/ncurses/base/lib_newterm.c b/contrib/ncurses/ncurses/base/lib_newterm.c
index d95c4a9575c8..fe201d6b8e27 100644
--- a/contrib/ncurses/ncurses/base/lib_newterm.c
+++ b/contrib/ncurses/ncurses/base/lib_newterm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -47,7 +48,7 @@
#include <term.h> /* clear_screen, cup & friends, cur_term */
#include <tic.h>
-MODULE_ID("$Id: lib_newterm.c,v 1.52 2001/08/04 16:47:48 tom Exp $")
+MODULE_ID("$Id: lib_newterm.c,v 1.64 2006/01/14 15:36:24 tom Exp $")
#ifndef ONLCR /* Allows compilation under the QNX 4.2 OS */
#define ONLCR 0
@@ -61,21 +62,30 @@ MODULE_ID("$Id: lib_newterm.c,v 1.52 2001/08/04 16:47:48 tom Exp $")
* The newterm function also initializes terminal settings, and since initscr
* is supposed to behave as if it calls newterm, we do it here.
*/
-static inline int
+static NCURSES_INLINE int
_nc_initscr(void)
{
+ int result = ERR;
+
/* for extended XPG4 conformance requires cbreak() at this point */
/* (SVr4 curses does this anyway) */
- cbreak();
+ if (cbreak() == OK) {
+ TTY buf;
+ buf = cur_term->Nttyb;
#ifdef TERMIOS
- cur_term->Nttyb.c_lflag &= ~(ECHO | ECHONL);
- cur_term->Nttyb.c_iflag &= ~(ICRNL | INLCR | IGNCR);
- cur_term->Nttyb.c_oflag &= ~(ONLCR);
+ buf.c_lflag &= ~(ECHO | ECHONL);
+ buf.c_iflag &= ~(ICRNL | INLCR | IGNCR);
+ buf.c_oflag &= ~(ONLCR);
+#elif HAVE_SGTTY_H
+ buf.sg_flags &= ~(ECHO | CRMOD);
#else
- cur_term->Nttyb.sg_flags &= ~(ECHO | CRMOD);
+ memset(&buf, 0, sizeof(buf));
#endif
- return _nc_set_tty_mode(&cur_term->Nttyb);
+ if ((result = _nc_set_tty_mode(&buf)) == OK)
+ cur_term->Nttyb = buf;
+ }
+ return result;
}
/*
@@ -84,126 +94,123 @@ _nc_initscr(void)
* aside from possibly delaying a filter() call until some terminals have been
* initialized.
*/
-static int filter_mode = FALSE;
+static bool filter_mode = FALSE;
NCURSES_EXPORT(void)
filter(void)
{
+ START_TRACE();
T((T_CALLED("filter")));
filter_mode = TRUE;
returnVoid;
}
+#if NCURSES_EXT_FUNCS
+/*
+ * An extension, allowing the application to open a new screen without
+ * requiring it to also be filtered.
+ */
+NCURSES_EXPORT(void)
+nofilter(void)
+{
+ START_TRACE();
+ T((T_CALLED("nofilter")));
+ filter_mode = FALSE;
+ returnVoid;
+}
+#endif
+
NCURSES_EXPORT(SCREEN *)
-newterm
-(NCURSES_CONST char *name, FILE * ofp, FILE * ifp)
+newterm(NCURSES_CONST char *name, FILE *ofp, FILE *ifp)
{
+ int value;
int errret;
int slk_format = _nc_slk_format;
SCREEN *current;
-#ifdef TRACE
- int t = _nc_getenv_num("NCURSES_TRACE");
-
- if (t >= 0)
- trace(t);
-#endif
+ SCREEN *result = 0;
+ START_TRACE();
T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp));
- /* this loads the capability entry, then sets LINES and COLS */
- if (setupterm(name, fileno(ofp), &errret) == ERR)
- returnSP(0);
-
- /* implement filter mode */
- if (filter_mode) {
- LINES = 1;
-
- if (VALID_NUMERIC(init_tabs))
- TABSIZE = init_tabs;
- else
- TABSIZE = 8;
-
- T(("TABSIZE = %d", TABSIZE));
-
- clear_screen = 0;
- cursor_down = parm_down_cursor = 0;
- cursor_address = 0;
- cursor_up = parm_up_cursor = 0;
- row_address = 0;
-
- cursor_home = carriage_return;
- }
+ _nc_handle_sigwinch(0);
- /* If we must simulate soft labels, grab off the line to be used.
- We assume that we must simulate, if it is none of the standard
- formats (4-4 or 3-2-3) for which there may be some hardware
- support. */
- if (num_labels <= 0 || !SLK_STDFMT(slk_format))
- if (slk_format) {
- if (ERR == _nc_ripoffline(-SLK_LINES(slk_format),
- _nc_slk_initialize))
- returnSP(0);
- }
- /* this actually allocates the screen structure, and saves the
- * original terminal settings.
- */
- current = SP;
- _nc_set_screen(0);
- if (_nc_setupscreen(LINES, COLS, ofp) == ERR) {
- _nc_set_screen(current);
- returnSP(0);
+ /* allow user to set maximum escape delay from the environment */
+ if ((value = _nc_getenv_num("ESCDELAY")) >= 0) {
+ ESCDELAY = value;
}
- /* if the terminal type has real soft labels, set those up */
- if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
- _nc_slk_initialize(stdscr, COLS);
-
- SP->_ifd = fileno(ifp);
- SP->_checkfd = fileno(ifp);
- typeahead(fileno(ifp));
+ /* this loads the capability entry, then sets LINES and COLS */
+ if (setupterm(name, fileno(ofp), &errret) == ERR) {
+ result = 0;
+ } else {
+ /*
+ * This actually allocates the screen structure, and saves the original
+ * terminal settings.
+ */
+ current = SP;
+ _nc_set_screen(0);
+ if (_nc_setupscreen(LINES, COLS, ofp, filter_mode, slk_format) == ERR) {
+ _nc_set_screen(current);
+ result = 0;
+ } else {
+ /* if the terminal type has real soft labels, set those up */
+ if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
+ _nc_slk_initialize(stdscr, COLS);
+
+ SP->_ifd = fileno(ifp);
+ typeahead(fileno(ifp));
#ifdef TERMIOS
- SP->_use_meta = ((cur_term->Ottyb.c_cflag & CSIZE) == CS8 &&
- !(cur_term->Ottyb.c_iflag & ISTRIP));
+ SP->_use_meta = ((cur_term->Ottyb.c_cflag & CSIZE) == CS8 &&
+ !(cur_term->Ottyb.c_iflag & ISTRIP));
#else
- SP->_use_meta = FALSE;
+ SP->_use_meta = FALSE;
#endif
- SP->_endwin = FALSE;
-
- /* Check whether we can optimize scrolling under dumb terminals in case
- * we do not have any of these capabilities, scrolling optimization
- * will be useless.
- */
- SP->_scrolling = ((scroll_forward && scroll_reverse) ||
- ((parm_rindex || parm_insert_line || insert_line) &&
- (parm_index || parm_delete_line || delete_line)));
-
- baudrate(); /* sets a field in the SP structure */
-
- SP->_keytry = 0;
-
- /*
- * Check for mismatched graphic-rendition capabilities. Most SVr4
- * terminfo trees contain entries that have rmul or rmso equated to
- * sgr0 (Solaris curses copes with those entries). We do this only for
- * curses, since many termcap applications assume that smso/rmso and
- * smul/rmul are paired, and will not function properly if we remove
- * rmso or rmul. Curses applications shouldn't be looking at this
- * detail.
- */
+ SP->_endwin = FALSE;
+
+ /*
+ * Check whether we can optimize scrolling under dumb terminals in
+ * case we do not have any of these capabilities, scrolling
+ * optimization will be useless.
+ */
+ SP->_scrolling = ((scroll_forward && scroll_reverse) ||
+ ((parm_rindex ||
+ parm_insert_line ||
+ insert_line) &&
+ (parm_index ||
+ parm_delete_line ||
+ delete_line)));
+
+ baudrate(); /* sets a field in the SP structure */
+
+ SP->_keytry = 0;
+
+ /*
+ * Check for mismatched graphic-rendition capabilities. Most SVr4
+ * terminfo trees contain entries that have rmul or rmso equated to
+ * sgr0 (Solaris curses copes with those entries). We do this only
+ * for curses, since many termcap applications assume that
+ * smso/rmso and smul/rmul are paired, and will not function
+ * properly if we remove rmso or rmul. Curses applications
+ * shouldn't be looking at this detail.
+ */
#define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))
- SP->_use_rmso = SGR0_TEST(exit_standout_mode);
- SP->_use_rmul = SGR0_TEST(exit_underline_mode);
+ SP->_use_rmso = SGR0_TEST(exit_standout_mode);
+ SP->_use_rmul = SGR0_TEST(exit_underline_mode);
- /* compute movement costs so we can do better move optimization */
- _nc_mvcur_init();
+ /* compute movement costs so we can do better move optimization */
+ _nc_mvcur_init();
- /* initialize terminal to a sane state */
- _nc_screen_init();
+ /* initialize terminal to a sane state */
+ _nc_screen_init();
- /* Initialize the terminal line settings. */
- _nc_initscr();
+ /* Initialize the terminal line settings. */
+ _nc_initscr();
- _nc_signal_handler(TRUE);
+ _nc_signal_handler(TRUE);
- returnSP(SP);
+ result = SP;
+ }
+ }
+ _nc_handle_sigwinch(1);
+ returnSP(result);
}
diff --git a/contrib/ncurses/ncurses/base/lib_newwin.c b/contrib/ncurses/ncurses/base/lib_newwin.c
index 3cd8238b1e2e..ba516337b996 100644
--- a/contrib/ncurses/ncurses/base/lib_newwin.c
+++ b/contrib/ncurses/ncurses/base/lib_newwin.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -40,7 +41,36 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_newwin.c,v 1.33 2001/12/19 01:06:30 tom Exp $")
+MODULE_ID("$Id: lib_newwin.c,v 1.38 2006/10/14 20:31:19 tom Exp $")
+
+static WINDOW *
+remove_window_from_screen(WINDOW *win)
+{
+ SCREEN **scan = &_nc_screen_chain;
+
+ while (*scan) {
+ SCREEN *sp = *scan;
+ if (sp->_curscr == win) {
+ sp->_curscr = 0;
+ if (win == curscr)
+ curscr = 0;
+ } else if (sp->_stdscr == win) {
+ sp->_stdscr = 0;
+ if (win == stdscr)
+ stdscr = 0;
+ } else if (sp->_newscr == win) {
+ sp->_newscr = 0;
+ if (win == newscr)
+ newscr = 0;
+ } else {
+ scan = &(*scan)->_next_screen;
+ continue;
+ }
+ break;
+ }
+
+ return 0;
+}
NCURSES_EXPORT(int)
_nc_freewin(WINDOW *win)
@@ -52,6 +82,7 @@ _nc_freewin(WINDOW *win)
if (win != 0) {
for (p = _nc_windows, q = 0; p != 0; q = p, p = p->next) {
if (&(p->win) == win) {
+ remove_window_from_screen(win);
if (q == 0)
_nc_windows = p->next;
else
@@ -64,13 +95,6 @@ _nc_freewin(WINDOW *win)
free(win->_line);
free(p);
- if (win == curscr)
- curscr = 0;
- if (win == stdscr)
- stdscr = 0;
- if (win == newscr)
- newscr = 0;
-
result = OK;
T(("...deleted win=%p", win));
break;
@@ -97,9 +121,6 @@ newwin(int num_lines, int num_columns, int begy, int begx)
if (num_columns == 0)
num_columns = screen_columns - begx;
- if (num_columns + begx > SP->_columns || num_lines + begy > SP->_lines_avail)
- returnWin(0);
-
if ((win = _nc_makenew(num_lines, num_columns, begy, begx, 0)) == 0)
returnWin(0);
@@ -152,7 +173,7 @@ derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx)
win->_pary = begy;
win->_parx = begx;
- win->_attrs = orig->_attrs;
+ WINDOW_ATTRS(win) = WINDOW_ATTRS(orig);
win->_nc_bkgd = orig->_nc_bkgd;
for (i = 0; i < num_lines; i++)
@@ -167,7 +188,7 @@ NCURSES_EXPORT(WINDOW *)
subwin(WINDOW *w, int l, int c, int y, int x)
{
T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), w, l, c, y, x));
- T(("parent has begy = %d, begx = %d", w->_begy, w->_begx));
+ T(("parent has begy = %ld, begx = %ld", (long) w->_begy, (long) w->_begx));
returnWin(derwin(w, l, c, y - w->_begy, x - w->_begx));
}
@@ -189,6 +210,9 @@ _nc_makenew(int num_lines, int num_columns, int begy, int begx, int flags)
T(("_nc_makenew(%d,%d,%d,%d)", num_lines, num_columns, begy, begx));
+ if (SP == 0)
+ return 0;
+
if (!dimension_limit(num_lines) || !dimension_limit(num_columns))
return 0;
@@ -211,7 +235,7 @@ _nc_makenew(int num_lines, int num_columns, int begy, int begx, int flags)
win->_yoffset = SP->_topstolen;
win->_flags = flags;
- win->_attrs = A_NORMAL;
+ WINDOW_ATTRS(win) = A_NORMAL;
SetChar(win->_nc_bkgd, BLANK_TEXT, BLANK_ATTR);
win->_clear = is_pad ? FALSE : (num_lines == screen_lines
diff --git a/contrib/ncurses/ncurses/base/lib_overlay.c b/contrib/ncurses/ncurses/base/lib_overlay.c
index 010e6d18c861..9ecc45821591 100644
--- a/contrib/ncurses/ncurses/base/lib_overlay.c
+++ b/contrib/ncurses/ncurses/base/lib_overlay.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free 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,30 +40,60 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_overlay.c,v 1.20 2001/12/19 01:06:37 tom Exp $")
+MODULE_ID("$Id: lib_overlay.c,v 1.22 2006/10/14 20:43:31 tom Exp $")
static int
overlap(const WINDOW *const s, WINDOW *const d, int const flag)
{
- int sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol;
+ int sx1, sy1, sx2, sy2;
+ int dx1, dy1, dx2, dy2;
+ int sminrow, smincol;
+ int dminrow, dmincol;
+ int dmaxrow, dmaxcol;
- T(("overlap : sby %d, sbx %d, smy %d, smx %d, dby %d, dbx %d, dmy %d, dmx %d",
- s->_begy, s->_begx, s->_maxy, s->_maxx,
- d->_begy, d->_begx, d->_maxy, d->_maxx));
+ T((T_CALLED("overlap(%p,%p,%d)"), s, d, flag));
- if (!s || !d)
+ if (s == 0 || d == 0) {
returnCode(ERR);
-
- sminrow = max(s->_begy, d->_begy) - s->_begy;
- smincol = max(s->_begx, d->_begx) - s->_begx;
- dminrow = max(s->_begy, d->_begy) - d->_begy;
- dmincol = max(s->_begx, d->_begx) - d->_begx;
- dmaxrow = min(s->_maxy + s->_begy, d->_maxy + d->_begy) - d->_begy;
- dmaxcol = min(s->_maxx + s->_begx, d->_maxx + d->_begx) - d->_begx;
-
- return (copywin(s, d,
- sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol,
- flag));
+ } else {
+ T(("src : begy %ld, begx %ld, maxy %ld, maxx %ld",
+ (long) s->_begy,
+ (long) s->_begx,
+ (long) s->_maxy,
+ (long) s->_maxx));
+ T(("dst : begy %ld, begx %ld, maxy %ld, maxx %ld",
+ (long) d->_begy,
+ (long) d->_begx,
+ (long) d->_maxy,
+ (long) d->_maxx));
+
+ sx1 = s->_begx;
+ sy1 = s->_begy;
+ sx2 = sx1 + s->_maxx;
+ sy2 = sy1 + s->_maxy;
+
+ dx1 = d->_begx;
+ dy1 = d->_begy;
+ dx2 = dx1 + d->_maxx;
+ dy2 = dy1 + d->_maxy;
+
+ if (dx2 < sx1 || dx1 > sx2 || dy2 < sy1 || dy1 > sy2) {
+ returnCode(ERR); /* No intersection */
+ } else {
+ 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;
+
+ returnCode(copywin(s, d,
+ sminrow, smincol,
+ dminrow, dmincol,
+ dmaxrow, dmaxcol,
+ flag));
+ }
+ }
}
/*
@@ -101,11 +131,11 @@ overwrite(const WINDOW *win1, WINDOW *win2)
}
NCURSES_EXPORT(int)
-copywin
-(const WINDOW *src, WINDOW *dst,
- int sminrow, int smincol,
- int dminrow, int dmincol, int dmaxrow, int dmaxcol,
- int over)
+copywin(const WINDOW *src, WINDOW *dst,
+ int sminrow, int smincol,
+ int dminrow, int dmincol,
+ int dmaxrow, int dmaxcol,
+ int over)
{
int sx, sy, dx, dy;
bool touched;
@@ -152,7 +182,7 @@ copywin
}
}
if (touched) {
- touchline(dst, 0, getmaxy(dst));
+ touchline(dst, dminrow, (dmaxrow - dminrow + 1));
}
}
T(("finished copywin"));
diff --git a/contrib/ncurses/ncurses/base/lib_pad.c b/contrib/ncurses/ncurses/base/lib_pad.c
index 83983c3bbd1c..6cad9c54b064 100644
--- a/contrib/ncurses/ncurses/base/lib_pad.c
+++ b/contrib/ncurses/ncurses/base/lib_pad.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2006 Free 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_pad.c,v 1.37 2002/05/23 23:39:26 tom Exp $")
+MODULE_ID("$Id: lib_pad.c,v 1.41 2006/10/14 20:47:13 tom Exp $")
NCURSES_EXPORT(WINDOW *)
newpad(int l, int c)
@@ -71,8 +71,7 @@ newpad(int l, int c)
}
NCURSES_EXPORT(WINDOW *)
-subpad
-(WINDOW *orig, int l, int c, int begy, int begx)
+subpad(WINDOW *orig, int l, int c, int begy, int begx)
{
WINDOW *win = (WINDOW *) 0;
@@ -87,9 +86,13 @@ subpad
}
NCURSES_EXPORT(int)
-prefresh
-(WINDOW *win, int pminrow, int pmincol,
- int sminrow, int smincol, int smaxrow, int smaxcol)
+prefresh(WINDOW *win,
+ int pminrow,
+ int pmincol,
+ int sminrow,
+ int smincol,
+ int smaxrow,
+ int smaxcol)
{
T((T_CALLED("prefresh()")));
if (pnoutrefresh(win, pminrow, pmincol, sminrow, smincol, smaxrow,
@@ -101,9 +104,13 @@ prefresh
}
NCURSES_EXPORT(int)
-pnoutrefresh
-(WINDOW *win, int pminrow, int pmincol,
- int sminrow, int smincol, int smaxrow, int smaxcol)
+pnoutrefresh(WINDOW *win,
+ int pminrow,
+ int pmincol,
+ int sminrow,
+ int smincol,
+ int smaxrow,
+ int smaxcol)
{
NCURSES_SIZE_T i, j;
NCURSES_SIZE_T m, n;
@@ -138,8 +145,10 @@ pnoutrefresh
pmaxrow = pminrow + smaxrow - sminrow;
pmaxcol = pmincol + smaxcol - smincol;
- T((" pminrow + smaxrow - sminrow %d, win->_maxy %d", pmaxrow, win->_maxy));
- T((" pmincol + smaxcol - smincol %d, win->_maxx %d", pmaxcol, win->_maxx));
+ T((" pminrow + smaxrow - sminrow %ld, win->_maxy %ld",
+ (long) pmaxrow, (long) win->_maxy));
+ T((" pmincol + smaxcol - smincol %ld, win->_maxx %ld",
+ (long) pmaxcol, (long) win->_maxx));
/*
* Trim the caller's screen size back to the actual limits.
@@ -153,8 +162,8 @@ pnoutrefresh
pmaxcol = pmincol + smaxcol - smincol;
}
- if (smaxrow > screen_lines
- || smaxcol > screen_columns
+ if (smaxrow >= screen_lines
+ || smaxcol >= screen_columns
|| sminrow > smaxrow
|| smincol > smaxcol)
returnCode(ERR);
@@ -202,7 +211,7 @@ pnoutrefresh
*/
if (j == pmincol
&& j > 0
- && isnac(ch)) {
+ && isWidecExt(ch)) {
SetChar(ch, L(' '), AttrOf(oline->text[j - 1]));
}
#endif
diff --git a/contrib/ncurses/ncurses/base/lib_printw.c b/contrib/ncurses/ncurses/base/lib_printw.c
index f821a96ba7f0..62ae921e650d 100644
--- a/contrib/ncurses/ncurses/base/lib_printw.c
+++ b/contrib/ncurses/ncurses/base/lib_printw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,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 *
@@ -39,10 +39,10 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_printw.c,v 1.12 2001/10/20 20:33:46 tom Exp $")
+MODULE_ID("$Id: lib_printw.c,v 1.18 2006/12/17 19:21:39 tom Exp $")
NCURSES_EXPORT(int)
-printw(NCURSES_CONST char *fmt,...)
+printw(const char *fmt,...)
{
va_list argp;
int code;
@@ -62,7 +62,7 @@ printw(NCURSES_CONST char *fmt,...)
}
NCURSES_EXPORT(int)
-wprintw(WINDOW *win, NCURSES_CONST char *fmt,...)
+wprintw(WINDOW *win, const char *fmt,...)
{
va_list argp;
int code;
@@ -82,7 +82,7 @@ wprintw(WINDOW *win, NCURSES_CONST char *fmt,...)
}
NCURSES_EXPORT(int)
-mvprintw(int y, int x, NCURSES_CONST char *fmt,...)
+mvprintw(int y, int x, const char *fmt,...)
{
va_list argp;
int code;
@@ -103,7 +103,7 @@ mvprintw(int y, int x, NCURSES_CONST char *fmt,...)
}
NCURSES_EXPORT(int)
-mvwprintw(WINDOW *win, int y, int x, NCURSES_CONST char *fmt,...)
+mvwprintw(WINDOW *win, int y, int x, const char *fmt,...)
{
va_list argp;
int code;
@@ -124,19 +124,15 @@ mvwprintw(WINDOW *win, int y, int x, NCURSES_CONST char *fmt,...)
}
NCURSES_EXPORT(int)
-vwprintw(WINDOW *win, NCURSES_CONST char *fmt, va_list argp)
+vwprintw(WINDOW *win, const char *fmt, va_list argp)
{
char *buf;
int code = ERR;
- T((T_CALLED("wprintw(%p,%s,%p)"),
- win, _nc_visbuf(fmt), argp));
+ T((T_CALLED("vwprintw(%p,%s,va_list)"), win, _nc_visbuf(fmt)));
if ((buf = _nc_printf_string(fmt, argp)) != 0) {
code = waddstr(win, buf);
-#if USE_SAFE_SPRINTF
- free(buf);
-#endif
}
returnCode(code);
}
diff --git a/contrib/ncurses/ncurses/base/lib_redrawln.c b/contrib/ncurses/ncurses/base/lib_redrawln.c
index 91a03711de7c..548ca97e24c4 100644
--- a/contrib/ncurses/ncurses/base/lib_redrawln.c
+++ b/contrib/ncurses/ncurses/base/lib_redrawln.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2006 Free 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_redrawln.c,v 1.10 2001/09/29 17:41:31 tom Exp $")
+MODULE_ID("$Id: lib_redrawln.c,v 1.11 2006/11/04 23:08:47 tom Exp $")
NCURSES_EXPORT(int)
wredrawln(WINDOW *win, int beg, int num)
@@ -56,6 +56,9 @@ wredrawln(WINDOW *win, int beg, int num)
if (touchline(win, beg, num) == ERR)
returnCode(ERR);
+ if (touchline(curscr, beg + win->_begy, num) == ERR)
+ returnCode(ERR);
+
end = beg + num;
if (end > curscr->_maxy + 1)
end = curscr->_maxy + 1;
@@ -67,8 +70,10 @@ wredrawln(WINDOW *win, int beg, int num)
len *= sizeof(curscr->_line[0].text[0]);
for (i = beg; i < end; i++) {
- memset(curscr->_line[i + win->_begy].text + win->_begx, 0, len);
- _nc_make_oldhash(i + win->_begy);
+ int crow = i + win->_begy;
+
+ memset(curscr->_line[crow].text + win->_begx, 0, len);
+ _nc_make_oldhash(crow);
}
returnCode(OK);
diff --git a/contrib/ncurses/ncurses/base/lib_refresh.c b/contrib/ncurses/ncurses/base/lib_refresh.c
index 42c1f496c10a..27649df0669a 100644
--- a/contrib/ncurses/ncurses/base/lib_refresh.c
+++ b/contrib/ncurses/ncurses/base/lib_refresh.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -40,7 +41,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_refresh.c,v 1.31 2001/12/19 01:06:41 tom Exp $")
+MODULE_ID("$Id: lib_refresh.c,v 1.34 2006/05/27 19:21:19 tom Exp $")
NCURSES_EXPORT(int)
wrefresh(WINDOW *win)
@@ -49,7 +50,9 @@ wrefresh(WINDOW *win)
T((T_CALLED("wrefresh(%p)"), win));
- if (win == curscr) {
+ if (win == 0) {
+ code = ERR;
+ } else if (win == curscr) {
curscr->_clear = TRUE;
code = doupdate();
} else if ((code = wnoutrefresh(win)) == OK) {
@@ -97,7 +100,7 @@ wnoutrefresh(WINDOW *win)
begy = win->_begy;
newscr->_nc_bkgd = win->_nc_bkgd;
- newscr->_attrs = win->_attrs;
+ WINDOW_ATTRS(newscr) = WINDOW_ATTRS(win);
/* merge in change information from all subwindows of this window */
wsyncdown(win);
@@ -132,8 +135,8 @@ wnoutrefresh(WINDOW *win)
/* limit(n) */
limit_x = win->_maxx;
/* limit(j) */
- if (limit_x > win->_maxx)
- limit_x = win->_maxx;
+ if (limit_x > newscr->_maxx - begx)
+ limit_x = newscr->_maxx - begx;
for (i = 0, m = begy + win->_yoffset;
i <= win->_maxy && m <= newscr->_maxy;
diff --git a/contrib/ncurses/ncurses/base/lib_restart.c b/contrib/ncurses/ncurses/base/lib_restart.c
index 0068554cecb1..ca27a0fc4c60 100644
--- a/contrib/ncurses/ncurses/base/lib_restart.c
+++ b/contrib/ncurses/ncurses/base/lib_restart.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free 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 *
****************************************************************************/
/*
@@ -47,46 +48,52 @@
#include <term.h> /* lines, columns, cur_term */
-MODULE_ID("$Id: lib_restart.c,v 1.4 2000/12/10 01:26:52 tom Exp $")
+MODULE_ID("$Id: lib_restart.c,v 1.6 2006/01/14 15:58:23 tom Exp $")
NCURSES_EXPORT(int)
-restartterm
-(NCURSES_CONST char *termp, int filenum, int *errret)
+restartterm(NCURSES_CONST char *termp, int filenum, int *errret)
{
int saveecho = SP->_echo;
int savecbreak = SP->_cbreak;
int saveraw = SP->_raw;
int savenl = SP->_nl;
+ int result;
T((T_CALLED("restartterm(%s,%d,%p)"), termp, filenum, errret));
- setupterm(termp, filenum, errret);
+ _nc_handle_sigwinch(0);
+ if (setupterm(termp, filenum, errret) != OK) {
+ result = ERR;
+ } else {
- if (saveecho)
- echo();
- else
- noecho();
+ if (saveecho)
+ echo();
+ else
+ noecho();
- if (savecbreak) {
- cbreak();
- noraw();
- } else if (saveraw) {
- nocbreak();
- raw();
- } else {
- nocbreak();
- noraw();
- }
- if (savenl)
- nl();
- else
- nonl();
+ if (savecbreak) {
+ cbreak();
+ noraw();
+ } else if (saveraw) {
+ nocbreak();
+ raw();
+ } else {
+ nocbreak();
+ noraw();
+ }
+ if (savenl)
+ nl();
+ else
+ nonl();
- reset_prog_mode();
+ reset_prog_mode();
#if USE_SIZECHANGE
- _nc_update_screensize();
+ _nc_update_screensize();
#endif
- returnCode(OK);
+ result = OK;
+ }
+ _nc_handle_sigwinch(1);
+ returnCode(result);
}
diff --git a/contrib/ncurses/ncurses/base/lib_screen.c b/contrib/ncurses/ncurses/base/lib_screen.c
index 3b2d9296a59a..5d67e1993cd9 100644
--- a/contrib/ncurses/ncurses/base/lib_screen.c
+++ b/contrib/ncurses/ncurses/base/lib_screen.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free 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,92 +29,105 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996 on *
****************************************************************************/
#include <curses.priv.h>
-#include <sys/stat.h>
-#include <time.h>
-#include <term.h> /* exit_ca_mode, non_rev_rmcup */
-
-MODULE_ID("$Id: lib_screen.c,v 1.19 2001/12/19 00:55:28 tom Exp $")
-
-static time_t dumptime;
+MODULE_ID("$Id: lib_screen.c,v 1.29 2006/05/27 19:21:38 tom Exp $")
NCURSES_EXPORT(WINDOW *)
-getwin(FILE * filep)
+getwin(FILE *filep)
{
WINDOW tmp, *nwin;
int n;
T((T_CALLED("getwin(%p)"), filep));
+ clearerr(filep);
(void) fread(&tmp, sizeof(WINDOW), 1, filep);
if (ferror(filep))
returnWin(0);
- if ((nwin = newwin(tmp._maxy + 1, tmp._maxx + 1, 0, 0)) == 0)
- returnWin(0);
+ if (tmp._flags & _ISPAD) {
+ nwin = newpad(tmp._maxy + 1, tmp._maxx + 1);
+ } else {
+ nwin = newwin(tmp._maxy + 1, tmp._maxx + 1, 0, 0);
+ }
/*
* We deliberately do not restore the _parx, _pary, or _parent
* fields, because the window hierarchy within which they
* made sense is probably gone.
*/
- nwin->_curx = tmp._curx;
- nwin->_cury = tmp._cury;
- nwin->_maxy = tmp._maxy;
- nwin->_maxx = tmp._maxx;
- nwin->_begy = tmp._begy;
- nwin->_begx = tmp._begx;
- nwin->_yoffset = tmp._yoffset;
- nwin->_flags = tmp._flags & ~(_SUBWIN | _ISPAD);
-
- nwin->_attrs = tmp._attrs;
- nwin->_nc_bkgd = tmp._nc_bkgd;
-
- nwin->_clear = tmp._clear;
- nwin->_scroll = tmp._scroll;
- nwin->_leaveok = tmp._leaveok;
- nwin->_use_keypad = tmp._use_keypad;
- nwin->_delay = tmp._delay;
- nwin->_immed = tmp._immed;
- nwin->_sync = tmp._sync;
-
- nwin->_regtop = tmp._regtop;
- nwin->_regbottom = tmp._regbottom;
-
- for (n = 0; n < nwin->_maxy + 1; n++) {
- (void) fread(nwin->_line[n].text,
- sizeof(chtype), (size_t) (nwin->_maxx + 1), filep);
- if (ferror(filep)) {
- delwin(nwin);
- returnWin(0);
+ if (nwin != 0) {
+ nwin->_curx = tmp._curx;
+ nwin->_cury = tmp._cury;
+ nwin->_maxy = tmp._maxy;
+ nwin->_maxx = tmp._maxx;
+ nwin->_begy = tmp._begy;
+ nwin->_begx = tmp._begx;
+ nwin->_yoffset = tmp._yoffset;
+ nwin->_flags = tmp._flags & ~(_SUBWIN);
+
+ WINDOW_ATTRS(nwin) = WINDOW_ATTRS(&tmp);
+ nwin->_nc_bkgd = tmp._nc_bkgd;
+
+ nwin->_notimeout = tmp._notimeout;
+ nwin->_clear = tmp._clear;
+ nwin->_leaveok = tmp._leaveok;
+ nwin->_idlok = tmp._idlok;
+ nwin->_idcok = tmp._idcok;
+ nwin->_immed = tmp._immed;
+ nwin->_scroll = tmp._scroll;
+ nwin->_sync = tmp._sync;
+ nwin->_use_keypad = tmp._use_keypad;
+ nwin->_delay = tmp._delay;
+
+ nwin->_regtop = tmp._regtop;
+ nwin->_regbottom = tmp._regbottom;
+
+ if (tmp._flags & _ISPAD)
+ nwin->_pad = tmp._pad;
+
+ for (n = 0; n <= nwin->_maxy; n++) {
+ clearerr(filep);
+ (void) fread(nwin->_line[n].text,
+ sizeof(NCURSES_CH_T),
+ (size_t) (nwin->_maxx + 1),
+ filep);
+ if (ferror(filep)) {
+ delwin(nwin);
+ returnWin(0);
+ }
}
+ touchwin(nwin);
}
- touchwin(nwin);
-
returnWin(nwin);
}
NCURSES_EXPORT(int)
-putwin(WINDOW *win, FILE * filep)
+putwin(WINDOW *win, FILE *filep)
{
int code = ERR;
int n;
T((T_CALLED("putwin(%p,%p)"), win, filep));
- if (win) {
- (void) fwrite(win, sizeof(WINDOW), 1, filep);
- if (ferror(filep))
- returnCode(code);
+ if (win != 0) {
+ size_t len = (win->_maxx + 1);
+
+ clearerr(filep);
+ if (fwrite(win, sizeof(WINDOW), 1, filep) != 1
+ || ferror(filep))
+ returnCode(code);
- for (n = 0; n < win->_maxy + 1; n++) {
- (void) fwrite(win->_line[n].text,
- sizeof(chtype), (size_t) (win->_maxx + 1), filep);
- if (ferror(filep))
+ for (n = 0; n <= win->_maxy; n++) {
+ if (fwrite(win->_line[n].text,
+ sizeof(NCURSES_CH_T), len, filep) != len
+ || ferror(filep)) {
returnCode(code);
+ }
}
code = OK;
}
@@ -129,11 +142,11 @@ scr_restore(const char *file)
T((T_CALLED("scr_restore(%s)"), _nc_visbuf(file)));
if (_nc_access(file, R_OK) < 0
- || (fp = fopen(file, "rb")) == 0)
+ || (fp = fopen(file, "rb")) == 0) {
returnCode(ERR);
- else {
+ } else {
delwin(newscr);
- newscr = getwin(fp);
+ SP->_newscr = newscr = getwin(fp);
(void) fclose(fp);
returnCode(OK);
}
@@ -147,12 +160,11 @@ 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, "wb")) == 0) {
returnCode(ERR);
- else {
+ } else {
(void) putwin(newscr, fp);
(void) fclose(fp);
- dumptime = time((time_t *) 0);
returnCode(OK);
}
}
@@ -161,7 +173,6 @@ NCURSES_EXPORT(int)
scr_init(const char *file)
{
FILE *fp = 0;
- struct stat stb;
T((T_CALLED("scr_init(%s)"), _nc_visbuf(file)));
@@ -169,13 +180,11 @@ scr_init(const char *file)
returnCode(ERR);
if (_nc_access(file, R_OK) < 0
- || (fp = fopen(file, "rb")) == 0)
- returnCode(ERR);
- else if (fstat(STDOUT_FILENO, &stb) || stb.st_mtime > dumptime)
+ || (fp = fopen(file, "rb")) == 0) {
returnCode(ERR);
- else {
+ } else {
delwin(curscr);
- curscr = getwin(fp);
+ SP->_curscr = curscr = getwin(fp);
(void) fclose(fp);
returnCode(OK);
}
@@ -186,11 +195,11 @@ scr_set(const char *file)
{
T((T_CALLED("scr_set(%s)"), _nc_visbuf(file)));
- if (scr_init(file) == ERR)
+ if (scr_init(file) == ERR) {
returnCode(ERR);
- else {
+ } else {
delwin(newscr);
- newscr = dupwin(curscr);
+ SP->_newscr = newscr = dupwin(curscr);
returnCode(OK);
}
}
diff --git a/contrib/ncurses/ncurses/base/lib_scroll.c b/contrib/ncurses/ncurses/base/lib_scroll.c
index 39c62d0850e5..ac85bd55ea1d 100644
--- a/contrib/ncurses/ncurses/base/lib_scroll.c
+++ b/contrib/ncurses/ncurses/base/lib_scroll.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2006 Free 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-2001 *
+ * Author: Thomas E. Dickey 1996-2003 *
* and: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
@@ -43,18 +43,22 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_scroll.c,v 1.23 2001/12/19 01:06:55 tom Exp $")
+MODULE_ID("$Id: lib_scroll.c,v 1.26 2006/10/14 20:46:08 tom Exp $")
NCURSES_EXPORT(void)
-_nc_scroll_window(WINDOW *win, int const n, NCURSES_SIZE_T const top,
- NCURSES_SIZE_T const bottom, NCURSES_CH_T blank)
+_nc_scroll_window(WINDOW *win,
+ int const n,
+ NCURSES_SIZE_T const top,
+ NCURSES_SIZE_T const bottom,
+ NCURSES_CH_T blank)
{
int limit;
int line;
int j;
size_t to_copy = (size_t) (sizeof(NCURSES_CH_T) * (win->_maxx + 1));
- TR(TRACE_MOVE, ("_nc_scroll_window(%p, %d, %d, %d)", win, n, top, bottom));
+ TR(TRACE_MOVE, ("_nc_scroll_window(%p, %d, %ld, %ld)",
+ win, n, (long) top, (long) bottom));
if (top < 0
|| bottom < top
@@ -77,24 +81,15 @@ _nc_scroll_window(WINDOW *win, int const n, NCURSES_SIZE_T const top,
/* shift n lines downwards */
if (n < 0) {
limit = top - n;
- if (limit > win->_maxy)
- limit = win->_maxy;
- for (line = bottom; line >= limit; line--) {
- if (line + n >= 0) {
- TR(TRACE_MOVE, ("...copying %d to %d", line + n, line));
- memcpy(win->_line[line].text,
- win->_line[line + n].text,
- to_copy);
- if_USE_SCROLL_HINTS(win->_line[line].oldindex =
- win->_line[line + n].oldindex);
- } else {
- TR(TRACE_MOVE, ("...filling %d", line));
- for (j = 0; j <= win->_maxx; j++)
- win->_line[line].text[j] = blank;
- if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
- }
+ for (line = bottom; line >= limit && line >= 0; line--) {
+ TR(TRACE_MOVE, ("...copying %d to %d", line + n, line));
+ memcpy(win->_line[line].text,
+ win->_line[line + n].text,
+ to_copy);
+ if_USE_SCROLL_HINTS(win->_line[line].oldindex =
+ win->_line[line + n].oldindex);
}
- for (line = top; line < limit; line++) {
+ for (line = top; line < limit && line <= win->_maxy; line++) {
TR(TRACE_MOVE, ("...filling %d", line));
for (j = 0; j <= win->_maxx; j++)
win->_line[line].text[j] = blank;
@@ -105,31 +100,36 @@ _nc_scroll_window(WINDOW *win, int const n, NCURSES_SIZE_T const top,
/* shift n lines upwards */
if (n > 0) {
limit = bottom - n;
- if (limit < 0)
- limit = 0;
- for (line = top; line <= limit; line++) {
- if (line + n <= win->_maxy) {
- TR(TRACE_MOVE, ("...copying %d to %d", line + n, line));
- memcpy(win->_line[line].text,
- win->_line[line + n].text,
- to_copy);
- if_USE_SCROLL_HINTS(win->_line[line].oldindex =
- win->_line[line + n].oldindex);
- } else {
- TR(TRACE_MOVE, ("...filling %d", line));
- for (j = 0; j <= win->_maxx; j++)
- win->_line[line].text[j] = blank;
- if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
- }
+ for (line = top; line <= limit && line <= win->_maxy; 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--) {
- TR(TRACE_MOVE, ("...filling %d", line));
+ for (line = bottom; line > limit && line >= 0; line--) {
for (j = 0; j <= win->_maxx; j++)
win->_line[line].text[j] = blank;
if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
}
}
touchline(win, top, bottom - top + 1);
+
+ if_WIDEC({
+ if (WINDOW_EXT(win, addch_used) != 0) {
+ int next = WINDOW_EXT(win, addch_y) + n;
+ if (next < 0 || next > win->_maxy) {
+ TR(TRACE_VIRTPUT,
+ ("Alert discarded multibyte on scroll"));
+ WINDOW_EXT(win, addch_y) = 0;
+ } else {
+ TR(TRACE_VIRTPUT, ("scrolled working position to %d,%d",
+ WINDOW_EXT(win, addch_y),
+ WINDOW_EXT(win, addch_x)));
+ WINDOW_EXT(win, addch_y) = next;
+ }
+ }
+ })
}
NCURSES_EXPORT(int)
@@ -142,11 +142,9 @@ wscrl(WINDOW *win, int n)
returnCode(ERR);
}
- if (n == 0)
- returnCode(OK);
-
- _nc_scroll_window(win, n, win->_regtop, win->_regbottom, win->_nc_bkgd);
-
- _nc_synchook(win);
+ if (n != 0) {
+ _nc_scroll_window(win, n, win->_regtop, win->_regbottom, win->_nc_bkgd);
+ _nc_synchook(win);
+ }
returnCode(OK);
}
diff --git a/contrib/ncurses/ncurses/base/lib_set_term.c b/contrib/ncurses/ncurses/base/lib_set_term.c
index f3940fa03c1c..bcc42d12298c 100644
--- a/contrib/ncurses/ncurses/base/lib_set_term.c
+++ b/contrib/ncurses/ncurses/base/lib_set_term.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -43,10 +44,10 @@
#include <term.h> /* cur_term */
#include <tic.h>
-MODULE_ID("$Id: lib_set_term.c,v 1.65 2002/06/15 18:40:20 tom Exp $")
+MODULE_ID("$Id: lib_set_term.c,v 1.91 2006/05/20 14:58:02 tom Exp $")
NCURSES_EXPORT(SCREEN *)
-set_term(SCREEN * screenp)
+set_term(SCREEN *screenp)
{
SCREEN *oldSP;
@@ -61,7 +62,6 @@ set_term(SCREEN * screenp)
stdscr = SP->_stdscr;
COLORS = SP->_color_count;
COLOR_PAIRS = SP->_pair_count;
- memcpy(acs_map, SP->_acs_map, sizeof(chtype) * ACS_LEN);
T((T_RETURN("%p"), oldSP));
return (oldSP);
@@ -81,9 +81,10 @@ _nc_free_keytry(struct tries *kt)
* Free the storage associated with the given SCREEN sp.
*/
NCURSES_EXPORT(void)
-delscreen(SCREEN * sp)
+delscreen(SCREEN *sp)
{
SCREEN **scan = &_nc_screen_chain;
+ int i;
T((T_CALLED("delscreen(%p)"), sp));
@@ -98,14 +99,36 @@ delscreen(SCREEN * sp)
(void) _nc_freewin(sp->_curscr);
(void) _nc_freewin(sp->_newscr);
(void) _nc_freewin(sp->_stdscr);
+
+ if (sp->_slk != 0) {
+ if (sp->_slk->ent != 0) {
+ for (i = 0; i < sp->_slk->labcnt; ++i) {
+ FreeIfNeeded(sp->_slk->ent[i].ent_text);
+ FreeIfNeeded(sp->_slk->ent[i].form_text);
+ }
+ free(sp->_slk->ent);
+ }
+ free(sp->_slk);
+ sp->_slk = 0;
+ }
+
_nc_free_keytry(sp->_keytry);
+ sp->_keytry = 0;
+
_nc_free_keytry(sp->_key_ok);
+ sp->_key_ok = 0;
+
+ FreeIfNeeded(sp->_current_attr);
FreeIfNeeded(sp->_color_table);
FreeIfNeeded(sp->_color_pairs);
FreeIfNeeded(sp->oldhash);
FreeIfNeeded(sp->newhash);
+ FreeIfNeeded(sp->hashtab);
+
+ FreeIfNeeded(sp->_acs_map);
+ FreeIfNeeded(sp->_screen_acs_map);
del_curterm(sp->_term);
@@ -141,16 +164,16 @@ delscreen(SCREEN * sp)
static ripoff_t rippedoff[5];
static ripoff_t *rsp = rippedoff;
-#define N_RIPS SIZEOF(rippedoff)
+#define N_RIPS SIZEOF(SP->_rippedoff)
static bool
-no_mouse_event(SCREEN * sp GCC_UNUSED)
+no_mouse_event(SCREEN *sp GCC_UNUSED)
{
return FALSE;
}
static bool
-no_mouse_inline(SCREEN * sp GCC_UNUSED)
+no_mouse_inline(SCREEN *sp GCC_UNUSED)
{
return FALSE;
}
@@ -162,12 +185,12 @@ no_mouse_parse(int code GCC_UNUSED)
}
static void
-no_mouse_resume(SCREEN * sp GCC_UNUSED)
+no_mouse_resume(SCREEN *sp GCC_UNUSED)
{
}
static void
-no_mouse_wrap(SCREEN * sp GCC_UNUSED)
+no_mouse_wrap(SCREEN *sp GCC_UNUSED)
{
}
@@ -191,21 +214,67 @@ extract_fgbg(char *src, int *result)
}
#endif
-NCURSES_EXPORT(int)
-_nc_setupscreen
-(short slines, short const scolumns, FILE * output)
/* OS-independent screen initializations */
+NCURSES_EXPORT(int)
+_nc_setupscreen(int slines,
+ int scolumns,
+ FILE *output,
+ bool filtered,
+ int slk_format)
{
int bottom_stolen = 0;
- size_t i;
+ int i;
+ bool support_cookies = USE_XMC_SUPPORT;
+
+ T((T_CALLED("_nc_setupscreen(%d, %d, %p, %d, %d)"),
+ slines, scolumns, output, filtered, slk_format));
assert(SP == 0); /* has been reset in newterm() ! */
- if (!_nc_alloc_screen())
- return ERR;
+ if (!_nc_alloc_screen()
+ || ((SP->_acs_map = typeCalloc(chtype, ACS_LEN)) == 0)
+ || ((SP->_screen_acs_map = typeCalloc(bool, ACS_LEN)) == 0)) {
+ returnCode(ERR);
+ }
+ T(("created SP %p", SP));
SP->_next_screen = _nc_screen_chain;
_nc_screen_chain = SP;
+ if ((SP->_current_attr = typeCalloc(NCURSES_CH_T, 1)) == 0)
+ returnCode(ERR);
+
+ SP->_filtered = filtered;
+
+ /* implement filter mode */
+ if (filtered) {
+ slines = LINES = 1;
+
+ 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;
+ T(("filter screensize %dx%d", LINES, COLS));
+ }
+
+ /* If we must simulate soft labels, grab off the line to be used.
+ We assume that we must simulate, if it is none of the standard
+ formats (4-4 or 3-2-3) for which there may be some hardware
+ support. */
+ if (num_labels <= 0 || !SLK_STDFMT(slk_format)) {
+ if (slk_format) {
+ if (ERR == _nc_ripoffline(-SLK_LINES(slk_format),
+ _nc_slk_initialize))
+ returnCode(ERR);
+ }
+ }
+#ifdef __DJGPP__
+ T(("setting output mode to binary"));
+ fflush(output);
+ setmode(output, O_BINARY);
+#endif
_nc_set_buffer(output, TRUE);
SP->_term = cur_term;
SP->_lines = slines;
@@ -259,6 +328,26 @@ _nc_setupscreen
SP->_default_bg = C_MASK;
#endif
+ /*
+ * Allow those assumed/default color assumptions to be overridden at
+ * runtime:
+ */
+ if (getenv("NCURSES_ASSUMED_COLORS") != 0) {
+ char *p = getenv("NCURSES_ASSUMED_COLORS");
+ int fg, bg;
+ char sep1, sep2;
+ int count = sscanf(p, "%d%c%d%c", &fg, &sep1, &bg, &sep2);
+ if (count >= 1) {
+ SP->_default_fg = (fg >= 0 && fg < max_colors) ? fg : C_MASK;
+ if (count >= 3) {
+ SP->_default_bg = (bg >= 0 && bg < max_colors) ? bg : C_MASK;
+ }
+ TR(TRACE_CHARPUT | TRACE_MOVE,
+ ("from environment assumed fg=%d, bg=%d",
+ SP->_default_fg,
+ SP->_default_bg));
+ }
+ }
#if USE_COLORFGBG
/*
* If rxvt's $COLORFGBG variable is set, use it to specify the assumed
@@ -275,7 +364,7 @@ _nc_setupscreen
p = extract_fgbg(p, &(SP->_default_bg));
TR(TRACE_CHARPUT | TRACE_MOVE, ("decoded fg=%d, bg=%d",
SP->_default_fg, SP->_default_bg));
- if (SP->_default_fg > max_colors) {
+ if (SP->_default_fg >= max_colors) {
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";
@@ -283,7 +372,7 @@ _nc_setupscreen
SP->_default_fg %= max_colors;
}
}
- if (SP->_default_bg > max_colors) {
+ if (SP->_default_bg >= max_colors) {
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";
@@ -309,42 +398,104 @@ _nc_setupscreen
SP->_panelHook.stdscr_pseudo_panel = (struct panel *) 0;
/*
- * If we've no magic cookie support, we suppress attributes that xmc
- * would affect, i.e., the attributes that affect the rendition of a
- * space. Note that this impacts the alternate character set mapping
- * as well.
+ * If we've no magic cookie support, we suppress attributes that xmc would
+ * affect, i.e., the attributes that affect the rendition of a space.
+ */
+ SP->_ok_attributes = termattrs();
+ if (has_colors()) {
+ SP->_ok_attributes |= A_COLOR;
+ }
+#if USE_XMC_SUPPORT
+ /*
+ * If we have no magic-cookie support compiled-in, or if it is suppressed
+ * in the environment, reset the support-flag.
*/
- if (magic_cookie_glitch > 0) {
-
- SP->_xmc_triggers = termattrs() & (
- A_ALTCHARSET |
- A_BLINK |
- A_BOLD |
- A_REVERSE |
- A_STANDOUT |
- A_UNDERLINE
+ if (magic_cookie_glitch >= 0) {
+ if (getenv("NCURSES_NO_MAGIC_COOKIE") != 0) {
+ support_cookies = FALSE;
+ }
+ }
+#endif
+
+ if (!support_cookies && magic_cookie_glitch >= 0) {
+ T(("will disable attributes to work w/o magic cookies"));
+ }
+
+ if (magic_cookie_glitch > 0) { /* tvi, wyse */
+
+ SP->_xmc_triggers = SP->_ok_attributes & (
+ A_STANDOUT |
+ A_UNDERLINE |
+ A_REVERSE |
+ A_BLINK |
+ A_DIM |
+ A_BOLD |
+ A_INVIS |
+ A_PROTECT
);
- SP->_xmc_suppress = SP->_xmc_triggers & (chtype) ~ (A_BOLD);
+#if 0
+ /*
+ * We "should" treat colors as an attribute. The wyse350 (and its
+ * clones) appear to be the only ones that have both colors and magic
+ * cookies.
+ */
+ if (has_colors()) {
+ SP->_xmc_triggers |= A_COLOR;
+ }
+#endif
+ SP->_xmc_suppress = SP->_xmc_triggers & (chtype) ~(A_BOLD);
T(("magic cookie attributes %s", _traceattr(SP->_xmc_suppress)));
+ /*
+ * Supporting line-drawing may be possible. But make the regular
+ * video attributes work first.
+ */
+ acs_chars = ABSENT_STRING;
+ ena_acs = ABSENT_STRING;
+ enter_alt_charset_mode = ABSENT_STRING;
+ exit_alt_charset_mode = ABSENT_STRING;
#if USE_XMC_SUPPORT
/*
- * To keep this simple, suppress all of the optimization hooks
- * except for clear_screen and the cursor addressing.
+ * To keep the cookie support simple, suppress all of the optimization
+ * hooks except for clear_screen and the cursor addressing.
*/
- clr_eol = 0;
- clr_eos = 0;
- set_attributes = 0;
-#else
- magic_cookie_glitch = ABSENT_NUMERIC;
- acs_chars = 0;
+ if (support_cookies) {
+ clr_eol = ABSENT_STRING;
+ clr_eos = ABSENT_STRING;
+ set_attributes = ABSENT_STRING;
+ }
#endif
+ } else if (magic_cookie_glitch == 0) { /* hpterm */
}
+
+ /*
+ * If magic cookies are not supported, cancel the strings that set
+ * video attributes.
+ */
+ if (!support_cookies && magic_cookie_glitch >= 0) {
+ magic_cookie_glitch = ABSENT_NUMERIC;
+ set_attributes = ABSENT_STRING;
+ enter_blink_mode = ABSENT_STRING;
+ enter_bold_mode = ABSENT_STRING;
+ enter_dim_mode = ABSENT_STRING;
+ enter_reverse_mode = ABSENT_STRING;
+ enter_standout_mode = ABSENT_STRING;
+ enter_underline_mode = ABSENT_STRING;
+ }
+
+ /* initialize normal acs before wide, since we use mapping in the latter */
+ _nc_init_acs();
#if USE_WIDEC_SUPPORT
_nc_init_wacs();
+
+ SP->_screen_acs_fix = (_nc_unicode_locale() && _nc_locale_breaks_acs());
+ {
+ char *env = _nc_get_locale();
+ SP->_legacy_coding = ((env == 0)
+ || !strcmp(env, "C")
+ || !strcmp(env, "POSIX"));
+ }
#endif
- _nc_init_acs();
- memcpy(SP->_acs_map, acs_map, sizeof(chtype) * ACS_LEN);
_nc_idcok = TRUE;
_nc_idlok = FALSE;
@@ -356,11 +507,11 @@ _nc_setupscreen
T(("creating newscr"));
if ((newscr = newwin(slines, scolumns, 0, 0)) == 0)
- return ERR;
+ returnCode(ERR);
T(("creating curscr"));
if ((curscr = newwin(slines, scolumns, 0, 0)) == 0)
- return ERR;
+ returnCode(ERR);
SP->_newscr = newscr;
SP->_curscr = curscr;
@@ -374,42 +525,41 @@ _nc_setupscreen
def_shell_mode();
def_prog_mode();
- for (i = 0, rsp = rippedoff; rsp->line && (i < N_RIPS); rsp++, i++) {
+ for (i = 0, rsp = rippedoff; rsp->line && (i < (int) N_RIPS); rsp++, i++) {
+ T(("ripping off line %d at %s", i, rsp->line < 0 ? "bottom" : "top"));
+ SP->_rippedoff[i] = rippedoff[i];
if (rsp->hook) {
- WINDOW *w;
int count = (rsp->line < 0) ? -rsp->line : rsp->line;
- if (rsp->line < 0) {
- w = newwin(count, scolumns, SP->_lines_avail - count, 0);
- if (w) {
- rsp->w = w;
- rsp->hook(w, scolumns);
- bottom_stolen += count;
- } else
- return ERR;
- } else {
- w = newwin(count, scolumns, 0, 0);
- if (w) {
- rsp->w = w;
- rsp->hook(w, scolumns);
- SP->_topstolen += count;
- } else
- return ERR;
- }
+ SP->_rippedoff[i].w = newwin(count,
+ scolumns,
+ ((rsp->line < 0)
+ ? SP->_lines_avail - count
+ : 0),
+ 0);
+ if (SP->_rippedoff[i].w != 0)
+ SP->_rippedoff[i].hook(SP->_rippedoff[i].w, scolumns);
+ else
+ returnCode(ERR);
+ if (rsp->line < 0)
+ bottom_stolen += count;
+ else
+ SP->_topstolen += count;
SP->_lines_avail -= count;
}
rsp->line = 0;
}
+ SP->_rip_count = i;
/* reset the stack */
rsp = rippedoff;
T(("creating stdscr"));
assert((SP->_lines_avail + SP->_topstolen + bottom_stolen) == slines);
if ((stdscr = newwin(LINES = SP->_lines_avail, scolumns, 0, 0)) == 0)
- return ERR;
+ returnCode(ERR);
SP->_stdscr = stdscr;
- return OK;
+ returnCode(OK);
}
/* The internal implementation interprets line as the number of
@@ -418,18 +568,20 @@ _nc_setupscreen
NCURSES_EXPORT(int)
_nc_ripoffline(int line, int (*init) (WINDOW *, int))
{
- if (line == 0)
- return (OK);
+ T((T_CALLED("_nc_ripoffline(%d, %p)"), line, init));
+
+ if (line != 0) {
- if (rsp >= rippedoff + N_RIPS)
- return (ERR);
+ if (rsp >= rippedoff + N_RIPS)
+ returnCode(ERR);
- rsp->line = line;
- rsp->hook = init;
- rsp->w = 0;
- rsp++;
+ rsp->line = line;
+ rsp->hook = init;
+ rsp->w = 0;
+ rsp++;
+ }
- return (OK);
+ returnCode(OK);
}
NCURSES_EXPORT(int)
diff --git a/contrib/ncurses/ncurses/base/lib_slk.c b/contrib/ncurses/ncurses/base/lib_slk.c
index 020449383e6c..5609e3b59024 100644
--- a/contrib/ncurses/ncurses/base/lib_slk.c
+++ b/contrib/ncurses/ncurses/base/lib_slk.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,8 +27,12 @@
****************************************************************************/
/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * Authors: *
+ * Gerhard Fuernkranz 1993 (original) *
+ * Zeyd M. Ben-Halim 1992,1995 (sic) *
+ * Eric S. Raymond *
+ * Juergen Pfeifer 1996-on *
+ * Thomas E. Dickey *
****************************************************************************/
/*
@@ -41,7 +45,7 @@
#include <ctype.h>
#include <term.h> /* num_labels, label_*, plab_norm */
-MODULE_ID("$Id: lib_slk.c,v 1.20 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_slk.c,v 1.30 2005/01/08 21:56:36 tom Exp $")
/*
* We'd like to move these into the screen context structure, but cannot,
@@ -54,8 +58,8 @@ _nc_slk_format = 0; /* one more than format specified in slk_init() */
* Paint the info line for the PC style SLK emulation.
*
*/
- static void
- slk_paint_info(WINDOW *win)
+static void
+slk_paint_info(WINDOW *win)
{
if (win && SP->slk_format == 4) {
int i;
@@ -64,20 +68,26 @@ _nc_slk_format = 0; /* one more than format specified in slk_init() */
wmove(win, 0, 0);
for (i = 0; i < SP->_slk->maxlab; i++) {
- if (win && SP->slk_format == 4) {
- mvwaddch(win, 0, SP->_slk->ent[i].x, (chtype) 'F');
- if (i < 9)
- waddch(win, (chtype) '1' + i);
- else {
- waddch(win, (chtype) '1');
- waddch(win, (chtype) '0' + (i - 9));
- }
- }
+ mvwprintw(win, 0, SP->_slk->ent[i].ent_x, "F%d", i + 1);
}
}
}
/*
+ * Free any memory related to soft labels, return an error.
+ */
+static int
+slk_failed(void)
+{
+ if (SP->_slk) {
+ FreeIfNeeded(SP->_slk->ent);
+ free(SP->_slk);
+ SP->_slk = (SLK *) 0;
+ }
+ return ERR;
+}
+
+/*
* Initialize soft labels.
* Called from newterm()
*/
@@ -86,92 +96,100 @@ _nc_slk_initialize(WINDOW *stwin, int cols)
{
int i, x;
int res = OK;
- char *p;
+ unsigned max_length;
- T(("slk_initialize()"));
+ T((T_CALLED("_nc_slk_initialize()")));
if (SP->_slk) { /* we did this already, so simply return */
- return (OK);
+ returnCode(OK);
} else if ((SP->_slk = typeCalloc(SLK, 1)) == 0)
- return (ERR);
+ returnCode(ERR);
SP->_slk->ent = NULL;
- SP->_slk->buffer = NULL;
- SP->_slk->attr = A_STANDOUT;
- SP->_slk->maxlab = (num_labels > 0) ?
- num_labels : MAX_SKEY(_nc_slk_format);
- SP->_slk->maxlen = (num_labels > 0) ?
- label_width * label_height : MAX_SKEY_LEN(_nc_slk_format);
- SP->_slk->labcnt = (SP->_slk->maxlab < MAX_SKEY(_nc_slk_format)) ?
- MAX_SKEY(_nc_slk_format) : SP->_slk->maxlab;
+ /*
+ * If we use colors, vidputs() will suppress video attributes that conflict
+ * with colors. In that case, we're still guaranteed that "reverse" would
+ * work.
+ */
+ if ((no_color_video & 1) == 0)
+ SetAttr(SP->_slk->attr, A_STANDOUT);
+ else
+ SetAttr(SP->_slk->attr, A_REVERSE);
+
+ SP->_slk->maxlab = ((num_labels > 0)
+ ? num_labels
+ : MAX_SKEY(_nc_slk_format));
+ SP->_slk->maxlen = ((num_labels > 0)
+ ? label_width * label_height
+ : MAX_SKEY_LEN(_nc_slk_format));
+ SP->_slk->labcnt = ((SP->_slk->maxlab < MAX_SKEY(_nc_slk_format))
+ ? MAX_SKEY(_nc_slk_format)
+ : SP->_slk->maxlab);
+
+ if (SP->_slk->maxlen <= 0
+ || SP->_slk->labcnt <= 0
+ || (SP->_slk->ent = typeCalloc(slk_ent,
+ (unsigned) SP->_slk->labcnt)) == NULL)
+ returnCode(slk_failed());
+
+ max_length = SP->_slk->maxlen;
+ for (i = 0; i < SP->_slk->labcnt; i++) {
+ size_t used = max_length + 1;
- SP->_slk->ent = typeCalloc(slk_ent, SP->_slk->labcnt);
- if (SP->_slk->ent == NULL)
- goto exception;
+ if ((SP->_slk->ent[i].ent_text = (char *) _nc_doalloc(0, used)) == 0)
+ returnCode(slk_failed());
+ memset(SP->_slk->ent[i].ent_text, 0, used);
- p = SP->_slk->buffer = (char *) calloc(2 * SP->_slk->labcnt, (1 + SP->_slk->maxlen));
- if (SP->_slk->buffer == NULL)
- goto exception;
+ if ((SP->_slk->ent[i].form_text = (char *) _nc_doalloc(0, used)) == 0)
+ returnCode(slk_failed());
+ memset(SP->_slk->ent[i].form_text, 0, used);
- for (i = 0; i < SP->_slk->labcnt; i++) {
- SP->_slk->ent[i].text = p;
- p += (1 + SP->_slk->maxlen);
- SP->_slk->ent[i].form_text = p;
- p += (1 + SP->_slk->maxlen);
- memset(SP->_slk->ent[i].form_text, ' ', (unsigned) (SP->_slk->maxlen));
+ memset(SP->_slk->ent[i].form_text, ' ', max_length);
SP->_slk->ent[i].visible = (i < SP->_slk->maxlab);
}
if (_nc_slk_format >= 3) { /* PC style */
- int gap = (cols - 3 * (3 + 4 * SP->_slk->maxlen)) / 2;
+ int gap = (cols - 3 * (3 + 4 * max_length)) / 2;
if (gap < 1)
gap = 1;
for (i = x = 0; i < SP->_slk->maxlab; i++) {
- SP->_slk->ent[i].x = x;
- x += SP->_slk->maxlen;
+ SP->_slk->ent[i].ent_x = x;
+ x += max_length;
x += (i == 3 || i == 7) ? gap : 1;
}
- if (_nc_slk_format == 4)
- slk_paint_info(stwin);
+ slk_paint_info(stwin);
} else {
if (_nc_slk_format == 2) { /* 4-4 */
- int gap = cols - (SP->_slk->maxlab * SP->_slk->maxlen) - 6;
+ int gap = cols - (SP->_slk->maxlab * max_length) - 6;
if (gap < 1)
gap = 1;
for (i = x = 0; i < SP->_slk->maxlab; i++) {
- SP->_slk->ent[i].x = x;
- x += SP->_slk->maxlen;
+ SP->_slk->ent[i].ent_x = x;
+ x += max_length;
x += (i == 3) ? gap : 1;
}
} else {
if (_nc_slk_format == 1) { /* 1 -> 3-2-3 */
- int gap = (cols - (SP->_slk->maxlab * SP->_slk->maxlen) - 5)
+ int gap = (cols - (SP->_slk->maxlab * max_length) - 5)
/ 2;
if (gap < 1)
gap = 1;
for (i = x = 0; i < SP->_slk->maxlab; i++) {
- SP->_slk->ent[i].x = x;
- x += SP->_slk->maxlen;
+ SP->_slk->ent[i].ent_x = x;
+ x += max_length;
x += (i == 2 || i == 4) ? gap : 1;
}
} else
- goto exception;
+ returnCode(slk_failed());
}
}
SP->_slk->dirty = TRUE;
if ((SP->_slk->win = stwin) == NULL) {
- exception:
- if (SP->_slk) {
- FreeIfNeeded(SP->_slk->buffer);
- FreeIfNeeded(SP->_slk->ent);
- free(SP->_slk);
- SP->_slk = (SLK *) 0;
- res = (ERR);
- }
+ returnCode(slk_failed());
}
/* We now reset the format so that the next newterm has again
@@ -180,7 +198,7 @@ _nc_slk_initialize(WINDOW *stwin, int cols)
*/
SP->slk_format = _nc_slk_format;
_nc_slk_format = 0;
- return (res);
+ returnCode(res);
}
/*
diff --git a/contrib/ncurses/ncurses/base/lib_slkatr_set.c b/contrib/ncurses/ncurses/base/lib_slkatr_set.c
index 5df314c6dca8..f83616beaf17 100644
--- a/contrib/ncurses/ncurses/base/lib_slkatr_set.c
+++ b/contrib/ncurses/ncurses/base/lib_slkatr_set.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,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 *
@@ -27,28 +27,32 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1998 *
+ * Author: Juergen Pfeifer, 1998 *
+ * and: Thomas E. Dickey 2005 *
****************************************************************************/
/*
* lib_slkatr_set.c
* Soft key routines.
- * Set the labels attributes
+ * Set the label's attributes
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkatr_set.c,v 1.5 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_slkatr_set.c,v 1.10 2005/01/28 21:11:53 tom Exp $")
NCURSES_EXPORT(int)
-slk_attr_set
-(const attr_t attr, short color_pair_number, void *opts)
+slk_attr_set(const attr_t attr, short color_pair_number, void *opts)
{
T((T_CALLED("slk_attr_set(%s,%d)"), _traceattr(attr), color_pair_number));
if (SP != 0 && SP->_slk != 0 && !opts &&
color_pair_number >= 0 && color_pair_number < COLOR_PAIRS) {
- SP->_slk->attr = attr;
- toggle_attr_on(SP->_slk->attr, COLOR_PAIR(color_pair_number));
+ TR(TRACE_ATTRS, ("... current %s", _tracech_t(CHREF(SP->_slk->attr))));
+ SetAttr(SP->_slk->attr, attr);
+ if (color_pair_number > 0) {
+ SetPair(SP->_slk->attr, color_pair_number);
+ }
+ TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(SP->_slk->attr))));
returnCode(OK);
} else
returnCode(ERR);
diff --git a/contrib/ncurses/ncurses/base/lib_slkatrof.c b/contrib/ncurses/ncurses/base/lib_slkatrof.c
index c271c342101a..14b4c3bfadcc 100644
--- a/contrib/ncurses/ncurses/base/lib_slkatrof.c
+++ b/contrib/ncurses/ncurses/base/lib_slkatrof.c
@@ -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 *
@@ -27,8 +27,8 @@
****************************************************************************/
/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * Author: Juergen Pfeifer, 1997 *
+ * and: Thomas E. Dickey 2005 *
****************************************************************************/
/*
@@ -38,7 +38,7 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkatrof.c,v 1.6 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_slkatrof.c,v 1.8 2005/01/08 23:01:32 tom Exp $")
NCURSES_EXPORT(int)
slk_attroff(const chtype attr)
@@ -46,7 +46,12 @@ slk_attroff(const chtype attr)
T((T_CALLED("slk_attroff(%s)"), _traceattr(attr)));
if (SP != 0 && SP->_slk != 0) {
- toggle_attr_off(SP->_slk->attr, attr);
+ TR(TRACE_ATTRS, ("... current %s", _tracech_t(CHREF(SP->_slk->attr))));
+ RemAttr(SP->_slk->attr, attr);
+ if ((attr & A_COLOR) != 0) {
+ SetPair(SP->_slk->attr, 0);
+ }
+ TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(SP->_slk->attr))));
returnCode(OK);
} else
returnCode(ERR);
diff --git a/contrib/ncurses/ncurses/base/lib_slkatron.c b/contrib/ncurses/ncurses/base/lib_slkatron.c
index d174b0394926..90add86dc1c8 100644
--- a/contrib/ncurses/ncurses/base/lib_slkatron.c
+++ b/contrib/ncurses/ncurses/base/lib_slkatron.c
@@ -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 *
@@ -27,8 +27,8 @@
****************************************************************************/
/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * Author: Juergen Pfeifer, 1997 *
+ * and: Thomas E. Dickey 2005 *
****************************************************************************/
/*
@@ -38,7 +38,7 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkatron.c,v 1.6 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_slkatron.c,v 1.8 2005/01/08 23:02:01 tom Exp $")
NCURSES_EXPORT(int)
slk_attron(const chtype attr)
@@ -46,7 +46,12 @@ slk_attron(const chtype attr)
T((T_CALLED("slk_attron(%s)"), _traceattr(attr)));
if (SP != 0 && SP->_slk != 0) {
- toggle_attr_on(SP->_slk->attr, attr);
+ TR(TRACE_ATTRS, ("... current %s", _tracech_t(CHREF(SP->_slk->attr))));
+ AddAttr(SP->_slk->attr, attr);
+ if ((attr & A_COLOR) != 0) {
+ SetPair(SP->_slk->attr, PAIR_NUMBER(attr));
+ }
+ TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(SP->_slk->attr))));
returnCode(OK);
} else
returnCode(ERR);
diff --git a/contrib/ncurses/ncurses/base/lib_slkatrset.c b/contrib/ncurses/ncurses/base/lib_slkatrset.c
index cda74cad42d0..8da9981b3b3e 100644
--- a/contrib/ncurses/ncurses/base/lib_slkatrset.c
+++ b/contrib/ncurses/ncurses/base/lib_slkatrset.c
@@ -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 *
@@ -27,8 +27,8 @@
****************************************************************************/
/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * Author: Juergen Pfeifer, 1997 *
+ * and: Thomas E. Dickey 2005 *
****************************************************************************/
/*
@@ -38,7 +38,7 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkatrset.c,v 1.6 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_slkatrset.c,v 1.7 2005/01/08 21:46:47 tom Exp $")
NCURSES_EXPORT(int)
slk_attrset(const chtype attr)
@@ -46,7 +46,7 @@ slk_attrset(const chtype attr)
T((T_CALLED("slk_attrset(%s)"), _traceattr(attr)));
if (SP != 0 && SP->_slk != 0) {
- SP->_slk->attr = attr;
+ SetAttr(SP->_slk->attr, attr);
returnCode(OK);
} else
returnCode(ERR);
diff --git a/contrib/ncurses/ncurses/base/lib_slkattr.c b/contrib/ncurses/ncurses/base/lib_slkattr.c
index 5044a08d727a..da82ee5b623e 100644
--- a/contrib/ncurses/ncurses/base/lib_slkattr.c
+++ b/contrib/ncurses/ncurses/base/lib_slkattr.c
@@ -27,8 +27,8 @@
****************************************************************************/
/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * Author: Juergen Pfeifer, 1997 *
+ * and: Thomas E. Dickey 2005 *
****************************************************************************/
/*
@@ -38,7 +38,7 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkattr.c,v 1.5 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_slkattr.c,v 1.6 2005/01/08 21:44:28 tom Exp $")
NCURSES_EXPORT(attr_t)
slk_attr(void)
@@ -46,7 +46,11 @@ slk_attr(void)
T((T_CALLED("slk_attr()")));
if (SP != 0 && SP->_slk != 0) {
- returnAttr(SP->_slk->attr);
+ attr_t result = AttrOf(SP->_slk->attr) & ALL_BUT_COLOR;
+ int pair = GetPair(SP->_slk->attr);
+
+ result |= COLOR_PAIR(pair);
+ returnAttr(result);
} else
returnAttr(0);
}
diff --git a/contrib/ncurses/ncurses/base/lib_slkclear.c b/contrib/ncurses/ncurses/base/lib_slkclear.c
index 03e6721cbb29..99edcd538ec5 100644
--- a/contrib/ncurses/ncurses/base/lib_slkclear.c
+++ b/contrib/ncurses/ncurses/base/lib_slkclear.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2006 Free 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,7 +38,7 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkclear.c,v 1.8 2001/12/19 01:07:01 tom Exp $")
+MODULE_ID("$Id: lib_slkclear.c,v 1.9 2006/05/27 19:21:19 tom Exp $")
NCURSES_EXPORT(int)
slk_clear(void)
@@ -51,7 +51,7 @@ slk_clear(void)
/* For simulated SLK's it's looks much more natural to
inherit those attributes from the standard screen */
SP->_slk->win->_nc_bkgd = stdscr->_nc_bkgd;
- SP->_slk->win->_attrs = stdscr->_attrs;
+ WINDOW_ATTRS(SP->_slk->win) = WINDOW_ATTRS(stdscr);
if (SP->_slk->win == stdscr) {
returnCode(OK);
} else {
diff --git a/contrib/ncurses/ncurses/base/lib_slkcolor.c b/contrib/ncurses/ncurses/base/lib_slkcolor.c
index 3e878e0024b2..b677b65a529a 100644
--- a/contrib/ncurses/ncurses/base/lib_slkcolor.c
+++ b/contrib/ncurses/ncurses/base/lib_slkcolor.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,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 *
@@ -27,15 +27,18 @@
****************************************************************************/
/****************************************************************************
- * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1998 *
+ * Author: Juergen Pfeifer, 1998 *
+ * and: Thomas E. Dickey 2005 *
****************************************************************************/
/*
* lib_slkcolor.c
+ * Soft key routines.
+ * Set the label's color
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkcolor.c,v 1.7 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_slkcolor.c,v 1.12 2005/01/28 21:11:53 tom Exp $")
NCURSES_EXPORT(int)
slk_color(short color_pair_number)
@@ -44,8 +47,9 @@ slk_color(short color_pair_number)
if (SP != 0 && SP->_slk != 0 &&
color_pair_number >= 0 && color_pair_number < COLOR_PAIRS) {
- T(("... current %ld", (long) PAIR_NUMBER(SP->_slk->attr)));
- toggle_attr_on(SP->_slk->attr, COLOR_PAIR(color_pair_number));
+ TR(TRACE_ATTRS, ("... current is %s", _tracech_t(CHREF(SP->_slk->attr))));
+ SetPair(SP->_slk->attr, color_pair_number);
+ TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(SP->_slk->attr))));
returnCode(OK);
} else
returnCode(ERR);
diff --git a/contrib/ncurses/ncurses/base/lib_slklab.c b/contrib/ncurses/ncurses/base/lib_slklab.c
index 0224e9b0c863..42bb4ac1425d 100644
--- a/contrib/ncurses/ncurses/base/lib_slklab.c
+++ b/contrib/ncurses/ncurses/base/lib_slklab.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-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 *
@@ -38,7 +38,7 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slklab.c,v 1.6 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_slklab.c,v 1.7 2003/03/29 22:53:48 tom Exp $")
NCURSES_EXPORT(char *)
slk_label(int n)
@@ -47,5 +47,5 @@ slk_label(int n)
if (SP == NULL || SP->_slk == NULL || n < 1 || n > SP->_slk->labcnt)
returnPtr(0);
- returnPtr(SP->_slk->ent[n - 1].text);
+ returnPtr(SP->_slk->ent[n - 1].ent_text);
}
diff --git a/contrib/ncurses/ncurses/base/lib_slkrefr.c b/contrib/ncurses/ncurses/base/lib_slkrefr.c
index 18e5b0c1c2f7..c8ca28b9dd84 100644
--- a/contrib/ncurses/ncurses/base/lib_slkrefr.c
+++ b/contrib/ncurses/ncurses/base/lib_slkrefr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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: Juergen Pfeifer 1996-on *
+ * and: Thomas E. Dickey *
****************************************************************************/
/*
@@ -38,7 +40,7 @@
#include <curses.priv.h>
#include <term.h> /* num_labels, label_*, plab_norm */
-MODULE_ID("$Id: lib_slkrefr.c,v 1.10 2000/12/10 02:43:27 tom Exp $")
+MODULE_ID("$Id: lib_slkrefr.c,v 1.15 2006/11/25 22:32:15 tom Exp $")
/*
* Write the soft labels to the soft-key window.
@@ -55,18 +57,18 @@ slk_intern_refresh(SLK * slk)
if (num_labels > 0 && SLK_STDFMT(fmt)) {
if (i < num_labels) {
TPUTS_TRACE("plab_norm");
- putp(tparm(plab_norm, i + 1, slk->ent[i].form_text));
+ putp(TPARM_2(plab_norm, i + 1, slk->ent[i].form_text));
}
} else {
- wmove(slk->win, SLK_LINES(fmt) - 1, slk->ent[i].x);
- if (SP && SP->_slk)
- wattrset(slk->win, SP->_slk->attr);
- waddnstr(slk->win, slk->ent[i].form_text,
- MAX_SKEY_LEN(fmt));
+ wmove(slk->win, SLK_LINES(fmt) - 1, slk->ent[i].ent_x);
+ if (SP && SP->_slk) {
+ wattrset(slk->win, AttrOf(SP->_slk->attr));
+ }
+ waddstr(slk->win, slk->ent[i].form_text);
/* if we simulate SLK's, it's looking much more
natural to use the current ATTRIBUTE also
for the label window */
- wattrset(slk->win, stdscr->_attrs);
+ wattrset(slk->win, WINDOW_ATTRS(stdscr));
}
}
slk->ent[i].dirty = FALSE;
diff --git a/contrib/ncurses/ncurses/base/lib_slkset.c b/contrib/ncurses/ncurses/base/lib_slkset.c
index d15002f17dba..9379b36322e2 100644
--- a/contrib/ncurses/ncurses/base/lib_slkset.c
+++ b/contrib/ncurses/ncurses/base/lib_slkset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,8 +27,8 @@
****************************************************************************/
/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * Author: Juergen Pfeifer *
+ * and: Thomas E. Dickey *
****************************************************************************/
/*
@@ -38,13 +38,22 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_slkset.c,v 1.7 2001/06/02 22:50:29 skimo Exp $")
+#if USE_WIDEC_SUPPORT
+#if HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
+#endif
+
+MODULE_ID("$Id: lib_slkset.c,v 1.16 2006/12/17 19:47:09 tom Exp $")
NCURSES_EXPORT(int)
slk_set(int i, const char *astr, int format)
{
SLK *slk = SP->_slk;
- size_t len;
+ int offset;
+ int numchrs;
+ int numcols;
+ int limit;
const char *str = astr;
const char *p;
@@ -54,44 +63,82 @@ slk_set(int i, const char *astr, int format)
returnCode(ERR);
if (str == NULL)
str = "";
+ --i; /* Adjust numbering of labels */
+ limit = MAX_SKEY_LEN(SP->slk_format);
while (isspace(UChar(*str)))
str++; /* skip over leading spaces */
p = str;
+
+#if USE_WIDEC_SUPPORT
+ numcols = 0;
+ while (*p != 0) {
+ mbstate_t state;
+ wchar_t wc;
+ size_t need;
+
+ init_mb(state);
+ need = mbrtowc(0, p, strlen(p), &state);
+ if (need == (size_t) -1)
+ break;
+ mbrtowc(&wc, p, need, &state);
+ if (!iswprint((wint_t) wc))
+ break;
+ if (wcwidth(wc) + numcols > limit)
+ break;
+ numcols += wcwidth(wc);
+ p += need;
+ }
+ numchrs = (p - str);
+#else
while (isprint(UChar(*p)))
p++; /* The first non-print stops */
- --i; /* Adjust numbering of labels */
+ numcols = (p - str);
+ if (numcols > limit)
+ numcols = limit;
+ numchrs = numcols;
+#endif
- len = (size_t) (p - str);
- if (len > (unsigned) slk->maxlen)
- len = slk->maxlen;
- if (len == 0)
- slk->ent[i].text[0] = 0;
- else
- (void) strncpy(slk->ent[i].text, str, len);
- memset(slk->ent[i].form_text, ' ', (unsigned) slk->maxlen);
- slk->ent[i].text[slk->maxlen] = 0;
- /* len = strlen(slk->ent[i].text); */
+ FreeIfNeeded(slk->ent[i].ent_text);
+ if ((slk->ent[i].ent_text = strdup(str)) == 0)
+ returnCode(ERR);
+ slk->ent[i].ent_text[numchrs] = '\0';
+
+ if ((slk->ent[i].form_text = (char *) _nc_doalloc(slk->ent[i].form_text,
+ (unsigned) (limit +
+ numchrs + 1))
+ ) == 0)
+ returnCode(ERR);
switch (format) {
+ default:
case 0: /* left-justified */
- memcpy(slk->ent[i].form_text,
- slk->ent[i].text,
- len);
+ offset = 0;
break;
case 1: /* centered */
- memcpy(slk->ent[i].form_text + (slk->maxlen - len) / 2,
- slk->ent[i].text,
- len);
+ offset = (limit - numcols) / 2;
break;
case 2: /* right-justified */
- memcpy(slk->ent[i].form_text + slk->maxlen - len,
- slk->ent[i].text,
- len);
+ offset = limit - numcols;
break;
}
- slk->ent[i].form_text[slk->maxlen] = 0;
+ if (offset <= 0)
+ offset = 0;
+ else
+ memset(slk->ent[i].form_text, ' ', (unsigned) offset);
+
+ memcpy(slk->ent[i].form_text + offset,
+ slk->ent[i].ent_text,
+ (unsigned) numchrs);
+
+ if (offset < limit) {
+ memset(slk->ent[i].form_text + offset + numchrs,
+ ' ',
+ (unsigned) (limit - (offset + numcols)));
+ }
+
+ slk->ent[i].form_text[numchrs - numcols + limit] = 0;
slk->ent[i].dirty = TRUE;
returnCode(OK);
}
diff --git a/contrib/ncurses/ncurses/base/lib_ungetch.c b/contrib/ncurses/ncurses/base/lib_ungetch.c
index ba057c043901..a6164df5edc1 100644
--- a/contrib/ncurses/ncurses/base/lib_ungetch.c
+++ b/contrib/ncurses/ncurses/base/lib_ungetch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2002 Free 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_ungetch.c,v 1.7 2001/12/29 23:01:09 tom Exp $")
+MODULE_ID("$Id: lib_ungetch.c,v 1.8 2002/08/24 22:08:48 tom Exp $")
#include <fifo_defs.h>
@@ -58,7 +58,7 @@ _nc_fifo_dump(void)
NCURSES_EXPORT(int)
ungetch(int ch)
{
- T((T_CALLED("ungetch(%d)"), ch));
+ T((T_CALLED("ungetch(%s)"), _tracechar(ch)));
if (tail == -1)
returnCode(ERR);
@@ -70,7 +70,7 @@ ungetch(int ch)
h_dec();
SP->_fifo[head] = ch;
- T(("ungetch %#x ok", ch));
+ T(("ungetch %s ok", _tracechar(ch)));
#ifdef TRACE
if (_nc_tracing & TRACE_IEVENT)
_nc_fifo_dump();
diff --git a/contrib/ncurses/ncurses/base/lib_vline.c b/contrib/ncurses/ncurses/base/lib_vline.c
index c19570b66265..1a2537e7eb6a 100644
--- a/contrib/ncurses/ncurses/base/lib_vline.c
+++ b/contrib/ncurses/ncurses/base/lib_vline.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2006 Free 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_vline.c,v 1.9 2001/06/03 00:39:24 skimo Exp $")
+MODULE_ID("$Id: lib_vline.c,v 1.10 2006/03/11 21:52:19 tom Exp $")
NCURSES_EXPORT(int)
wvline(WINDOW *win, chtype ch, int n)
@@ -60,9 +60,9 @@ wvline(WINDOW *win, chtype ch, int n)
end = win->_maxy;
if (ch == 0)
- SetChar(wch, ChCharOf(ACS_VLINE), ChAttrOf(ACS_VLINE));
+ SetChar2(wch, ACS_VLINE);
else
- SetChar(wch, ChCharOf(ch), ChAttrOf(ch));
+ SetChar2(wch, ch);
wch = _nc_render(win, wch);
while (end >= row) {
diff --git a/contrib/ncurses/ncurses/base/lib_wattroff.c b/contrib/ncurses/ncurses/base/lib_wattroff.c
index fa29b1a759a6..bf2020e06027 100644
--- a/contrib/ncurses/ncurses/base/lib_wattroff.c
+++ b/contrib/ncurses/ncurses/base/lib_wattroff.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -41,16 +42,22 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_wattroff.c,v 1.6 2000/12/10 02:43:28 tom Exp $")
+MODULE_ID("$Id: lib_wattroff.c,v 1.9 2006/05/27 19:30:33 tom Exp $")
NCURSES_EXPORT(int)
-wattr_off
-(WINDOW *win, NCURSES_CONST attr_t at, void *opts GCC_UNUSED)
+wattr_off(WINDOW *win, attr_t at, void *opts GCC_UNUSED)
{
T((T_CALLED("wattr_off(%p,%s)"), win, _traceattr(at)));
if (win) {
- T(("... current %s", _traceattr(win->_attrs)));
- toggle_attr_off(win->_attrs, at);
+ T(("... current %s (%d)",
+ _traceattr(WINDOW_ATTRS(win)),
+ GET_WINDOW_PAIR(win)));
+
+ if_EXT_COLORS({
+ if (at & A_COLOR)
+ win->_color = 0;
+ });
+ toggle_attr_off(WINDOW_ATTRS(win), at);
returnCode(OK);
} else
returnCode(ERR);
diff --git a/contrib/ncurses/ncurses/base/lib_wattron.c b/contrib/ncurses/ncurses/base/lib_wattron.c
index 7bbc555e2c52..2e17d965e94a 100644
--- a/contrib/ncurses/ncurses/base/lib_wattron.c
+++ b/contrib/ncurses/ncurses/base/lib_wattron.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -41,16 +42,22 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_wattron.c,v 1.6 2000/12/10 02:43:28 tom Exp $")
+MODULE_ID("$Id: lib_wattron.c,v 1.9 2006/05/27 19:30:46 tom Exp $")
NCURSES_EXPORT(int)
-wattr_on
-(WINDOW *win, NCURSES_CONST attr_t at, void *opts GCC_UNUSED)
+wattr_on(WINDOW *win, attr_t at, void *opts GCC_UNUSED)
{
T((T_CALLED("wattr_on(%p,%s)"), win, _traceattr(at)));
- if (win) {
- T(("... current %s", _traceattr(win->_attrs)));
- toggle_attr_on(win->_attrs, at);
+ if (win != 0) {
+ T(("... current %s (%d)",
+ _traceattr(WINDOW_ATTRS(win)),
+ GET_WINDOW_PAIR(win)));
+
+ if_EXT_COLORS({
+ if (at & A_COLOR)
+ win->_color = PAIR_NUMBER(at);
+ });
+ toggle_attr_on(WINDOW_ATTRS(win), at);
returnCode(OK);
} else
returnCode(ERR);
diff --git a/contrib/ncurses/ncurses/base/lib_window.c b/contrib/ncurses/ncurses/base/lib_window.c
index 943f6e004312..bb20f4faf2a2 100644
--- a/contrib/ncurses/ncurses/base/lib_window.c
+++ b/contrib/ncurses/ncurses/base/lib_window.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free 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.18 2001/12/19 01:07:15 tom Exp $")
+MODULE_ID("$Id: lib_window.c,v 1.22 2006/05/27 19:21:19 tom Exp $")
NCURSES_EXPORT(void)
_nc_synchook(WINDOW *win)
@@ -178,55 +178,71 @@ NCURSES_EXPORT(WINDOW *)
dupwin(WINDOW *win)
/* make an exact duplicate of the given window */
{
- WINDOW *nwin;
+ WINDOW *nwin = 0;
size_t linesize;
int i;
T((T_CALLED("dupwin(%p)"), win));
- if ((win == NULL) ||
- ((nwin = newwin(win->_maxy + 1, win->_maxx + 1, win->_begy,
- win->_begx)) == NULL))
- returnWin(0);
-
- nwin->_curx = win->_curx;
- nwin->_cury = win->_cury;
- nwin->_maxy = win->_maxy;
- nwin->_maxx = win->_maxx;
- nwin->_begy = win->_begy;
- nwin->_begx = win->_begx;
- nwin->_yoffset = win->_yoffset;
-
- nwin->_flags = win->_flags & ~_SUBWIN;
- /* Due to the use of newwin(), the clone is not a subwindow.
- * The text is really copied into the clone.
- */
-
- nwin->_attrs = win->_attrs;
- nwin->_nc_bkgd = win->_nc_bkgd;
-
- nwin->_clear = win->_clear;
- nwin->_scroll = win->_scroll;
- nwin->_leaveok = win->_leaveok;
- nwin->_use_keypad = win->_use_keypad;
- nwin->_delay = win->_delay;
- nwin->_immed = win->_immed;
- nwin->_sync = win->_sync;
-
- nwin->_parx = 0;
- nwin->_pary = 0;
- nwin->_parent = (WINDOW *) 0;
- /* See above: the clone isn't a subwindow! */
-
- nwin->_regtop = win->_regtop;
- nwin->_regbottom = win->_regbottom;
-
- linesize = (win->_maxx + 1) * sizeof(chtype);
- for (i = 0; i <= nwin->_maxy; i++) {
- memcpy(nwin->_line[i].text, win->_line[i].text, linesize);
- nwin->_line[i].firstchar = win->_line[i].firstchar;
- nwin->_line[i].lastchar = win->_line[i].lastchar;
- }
+ if (win != 0) {
+
+ if (win->_flags & _ISPAD) {
+ nwin = newpad(win->_maxy + 1,
+ win->_maxx + 1);
+ } else {
+ nwin = newwin(win->_maxy + 1,
+ win->_maxx + 1,
+ win->_begy,
+ win->_begx);
+ }
+ if (nwin != 0) {
+
+ nwin->_curx = win->_curx;
+ nwin->_cury = win->_cury;
+ nwin->_maxy = win->_maxy;
+ nwin->_maxx = win->_maxx;
+ nwin->_begy = win->_begy;
+ nwin->_begx = win->_begx;
+ nwin->_yoffset = win->_yoffset;
+
+ nwin->_flags = win->_flags & ~_SUBWIN;
+ /* Due to the use of newwin(), the clone is not a subwindow.
+ * The text is really copied into the clone.
+ */
+
+ WINDOW_ATTRS(nwin) = WINDOW_ATTRS(win);
+ nwin->_nc_bkgd = win->_nc_bkgd;
+
+ nwin->_notimeout = win->_notimeout;
+ nwin->_clear = win->_clear;
+ nwin->_leaveok = win->_leaveok;
+ nwin->_scroll = win->_scroll;
+ nwin->_idlok = win->_idlok;
+ nwin->_idcok = win->_idcok;
+ nwin->_immed = win->_immed;
+ nwin->_sync = win->_sync;
+ nwin->_use_keypad = win->_use_keypad;
+ nwin->_delay = win->_delay;
+
+ nwin->_parx = 0;
+ nwin->_pary = 0;
+ nwin->_parent = (WINDOW *) 0;
+ /* See above: the clone isn't a subwindow! */
+
+ nwin->_regtop = win->_regtop;
+ nwin->_regbottom = win->_regbottom;
+
+ if (win->_flags & _ISPAD)
+ nwin->_pad = win->_pad;
+
+ linesize = (win->_maxx + 1) * sizeof(NCURSES_CH_T);
+ for (i = 0; i <= nwin->_maxy; i++) {
+ memcpy(nwin->_line[i].text, win->_line[i].text, linesize);
+ nwin->_line[i].firstchar = win->_line[i].firstchar;
+ nwin->_line[i].lastchar = win->_line[i].lastchar;
+ }
+ }
+ }
returnWin(nwin);
}
diff --git a/contrib/ncurses/ncurses/base/resizeterm.c b/contrib/ncurses/ncurses/base/resizeterm.c
index f454b20c8437..46faccb74380 100644
--- a/contrib/ncurses/ncurses/base/resizeterm.c
+++ b/contrib/ncurses/ncurses/base/resizeterm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 *
+ * Author: Thomas E. Dickey *
****************************************************************************/
/*
@@ -41,13 +41,191 @@
#include <curses.priv.h>
#include <term.h>
-MODULE_ID("$Id: resizeterm.c,v 1.13 2002/02/02 19:26:27 tom Exp $")
+MODULE_ID("$Id: resizeterm.c,v 1.18 2006/10/14 20:43:31 tom Exp $")
+
+#define stolen_lines (screen_lines - SP->_lines_avail)
+
+static int current_lines;
+static int current_cols;
+
+#ifdef TRACE
+static void
+show_window_sizes(const char *name)
+{
+ WINDOWLIST *wp;
+
+ _tracef("%s resizing: %2d x %2d (%2d x %2d)", name, LINES, COLS,
+ screen_lines, screen_columns);
+ for (wp = _nc_windows; wp != 0; wp = wp->next) {
+ _tracef(" window %p is %2ld x %2ld at %2ld,%2ld",
+ &(wp->win),
+ (long) wp->win._maxy + 1,
+ (long) wp->win._maxx + 1,
+ (long) wp->win._begy,
+ (long) wp->win._begx);
+ }
+}
+#endif
NCURSES_EXPORT(bool)
is_term_resized(int ToLines, int ToCols)
{
- return (ToLines != screen_lines
- || ToCols != screen_columns);
+ T((T_CALLED("is_term_resized(%d, %d)"), ToLines, ToCols));
+ returnCode(ToLines > 0
+ && ToCols > 0
+ && (ToLines != screen_lines
+ || ToCols != screen_columns));
+}
+
+/*
+ * Return the number of levels of child-windows under the current window.
+ */
+static int
+child_depth(WINDOW *cmp)
+{
+ int depth = 0;
+
+ if (cmp != 0) {
+ WINDOWLIST *wp;
+
+ for (wp = _nc_windows; wp != 0; wp = wp->next) {
+ WINDOW *tst = &(wp->win);
+ if (tst->_parent == cmp) {
+ depth = 1 + child_depth(tst);
+ break;
+ }
+ }
+ }
+ return depth;
+}
+
+/*
+ * Return the number of levels of parent-windows above the current window.
+ */
+static int
+parent_depth(WINDOW *cmp)
+{
+ int depth = 0;
+
+ if (cmp != 0) {
+ WINDOW *tst;
+ while ((tst = cmp->_parent) != 0) {
+ ++depth;
+ cmp = tst;
+ }
+ }
+ return depth;
+}
+
+/*
+ * FIXME: must adjust position so it's within the parent!
+ */
+static int
+adjust_window(WINDOW *win, int ToLines, int ToCols, int stolen)
+{
+ int result;
+ int bottom = current_lines + SP->_topstolen - stolen;
+ int myLines = win->_maxy + 1;
+ int myCols = win->_maxx + 1;
+
+ T((T_CALLED("adjust_window(%p,%d,%d) currently %ldx%ld at %ld,%ld"),
+ win, ToLines, ToCols,
+ (long) getmaxy(win), (long) getmaxx(win),
+ (long) getbegy(win), (long) getbegx(win)));
+
+ if (win->_begy >= bottom) {
+ win->_begy += (ToLines - current_lines);
+ } else {
+ if (myLines == current_lines - stolen
+ && ToLines != current_lines)
+ myLines = ToLines - stolen;
+ else if (myLines == current_lines
+ && ToLines != current_lines)
+ myLines = ToLines;
+ }
+
+ if (myLines > ToLines)
+ myLines = ToLines;
+
+ if (myCols > ToCols)
+ myCols = ToCols;
+
+ if (myLines == current_lines
+ && ToLines != current_lines)
+ myLines = ToLines;
+
+ if (myCols == current_cols
+ && ToCols != current_cols)
+ myCols = ToCols;
+
+ result = wresize(win, myLines, myCols);
+ returnCode(result);
+}
+
+/*
+ * If we're decreasing size, recursively search for windows that have no
+ * children, decrease those to fit, then decrease the containing window, etc.
+ */
+static int
+decrease_size(int ToLines, int ToCols, int stolen)
+{
+ bool found;
+ int depth = 0;
+ WINDOWLIST *wp;
+
+ T((T_CALLED("decrease_size(%d, %d)"), ToLines, ToCols));
+
+ do {
+ found = FALSE;
+ TR(TRACE_UPDATE, ("decreasing size of windows to %dx%d, depth=%d",
+ ToLines, ToCols, depth));
+ for (wp = _nc_windows; wp != 0; wp = wp->next) {
+ WINDOW *win = &(wp->win);
+
+ if (!(win->_flags & _ISPAD)) {
+ if (child_depth(win) == depth) {
+ found = TRUE;
+ if (adjust_window(win, ToLines, ToCols, stolen) != OK)
+ returnCode(ERR);
+ }
+ }
+ }
+ ++depth;
+ } while (found);
+ returnCode(OK);
+}
+
+/*
+ * If we're increasing size, recursively search for windows that have no
+ * parent, increase those to fit, then increase the contained window, etc.
+ */
+static int
+increase_size(int ToLines, int ToCols, int stolen)
+{
+ bool found;
+ int depth = 0;
+ WINDOWLIST *wp;
+
+ T((T_CALLED("increase_size(%d, %d)"), ToLines, ToCols));
+
+ do {
+ found = FALSE;
+ TR(TRACE_UPDATE, ("increasing size of windows to %dx%d, depth=%d",
+ ToLines, ToCols, depth));
+ for (wp = _nc_windows; wp != 0; wp = wp->next) {
+ WINDOW *win = &(wp->win);
+
+ if (!(win->_flags & _ISPAD)) {
+ if (parent_depth(win) == depth) {
+ found = TRUE;
+ if (adjust_window(win, ToLines, ToCols, stolen) != OK)
+ returnCode(ERR);
+ }
+ }
+ }
+ ++depth;
+ } while (found);
+ returnCode(OK);
}
/*
@@ -57,48 +235,42 @@ is_term_resized(int ToLines, int ToCols)
NCURSES_EXPORT(int)
resize_term(int ToLines, int ToCols)
{
- int stolen = screen_lines - SP->_lines_avail;
- int bottom = screen_lines + SP->_topstolen - stolen;
+ int result = OK;
+ int was_stolen = (screen_lines - SP->_lines_avail);
T((T_CALLED("resize_term(%d,%d) old(%d,%d)"),
ToLines, ToCols,
screen_lines, screen_columns));
if (is_term_resized(ToLines, ToCols)) {
- WINDOWLIST *wp;
+ int myLines = current_lines = screen_lines;
+ int myCols = current_cols = screen_columns;
- for (wp = _nc_windows; wp != 0; wp = wp->next) {
- WINDOW *win = &(wp->win);
- int myLines = win->_maxy + 1;
- int myCols = win->_maxx + 1;
-
- /* pads aren't treated this way */
- if (win->_flags & _ISPAD)
- continue;
-
- if (win->_begy >= bottom) {
- win->_begy += (ToLines - screen_lines);
- } else {
- if (myLines == screen_lines - stolen
- && ToLines != screen_lines)
- myLines = ToLines - stolen;
- else if (myLines == screen_lines
- && ToLines != screen_lines)
- myLines = ToLines;
- }
+#ifdef TRACE
+ if (_nc_tracing & TRACE_UPDATE)
+ show_window_sizes("before");
+#endif
+ if (ToLines > screen_lines) {
+ increase_size(myLines = ToLines, myCols, was_stolen);
+ current_lines = myLines;
+ current_cols = myCols;
+ }
- if (myCols == screen_columns
- && ToCols != screen_columns)
- myCols = ToCols;
+ if (ToCols > screen_columns) {
+ increase_size(myLines, myCols = ToCols, was_stolen);
+ current_lines = myLines;
+ current_cols = myCols;
+ }
- if (wresize(win, myLines, myCols) != OK)
- returnCode(ERR);
+ if (ToLines < myLines ||
+ ToCols < myCols) {
+ decrease_size(ToLines, ToCols, was_stolen);
}
screen_lines = lines = ToLines;
screen_columns = columns = ToCols;
- SP->_lines_avail = lines - stolen;
+ SP->_lines_avail = lines - was_stolen;
if (SP->oldhash) {
FreeAndNull(SP->oldhash);
@@ -106,16 +278,23 @@ resize_term(int ToLines, int ToCols)
if (SP->newhash) {
FreeAndNull(SP->newhash);
}
+#ifdef TRACE
+ if (_nc_tracing & TRACE_UPDATE) {
+ LINES = ToLines - was_stolen;
+ COLS = ToCols;
+ show_window_sizes("after");
+ }
+#endif
}
/*
* Always update LINES, to allow for call from lib_doupdate.c which
* needs to have the count adjusted by the stolen (ripped off) lines.
*/
- LINES = ToLines - stolen;
+ LINES = ToLines - was_stolen;
COLS = ToCols;
- returnCode(OK);
+ returnCode(result);
}
/*
diff --git a/contrib/ncurses/ncurses/base/safe_sprintf.c b/contrib/ncurses/ncurses/base/safe_sprintf.c
index cb48365f7f51..81fe44f0c783 100644
--- a/contrib/ncurses/ncurses/base/safe_sprintf.c
+++ b/contrib/ncurses/ncurses/base/safe_sprintf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,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 *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: safe_sprintf.c,v 1.14 2001/07/08 00:58:34 tom Exp $")
+MODULE_ID("$Id: safe_sprintf.c,v 1.18 2003/08/09 21:52:04 tom Exp $")
#if USE_SAFE_SPRINTF
@@ -56,10 +56,13 @@ _nc_printf_length(const char *fmt, va_list ap)
char *buffer;
char *format;
int len = 0;
+ size_t fmt_len;
+ char fmt_arg[BUFSIZ];
if (fmt == 0 || *fmt == '\0')
- return -1;
- if ((format = typeMalloc(char, strlen(fmt) + 1)) == 0)
+ return 0;
+ fmt_len = strlen(fmt) + 1;
+ if ((format = typeMalloc(char, fmt_len)) == 0)
return -1;
if ((buffer = typeMalloc(char, length)) == 0) {
free(format);
@@ -106,7 +109,12 @@ _nc_printf_length(const char *fmt, va_list ap)
} else if (state == Prec) {
prec = ival;
}
- sprintf(&format[--f], "%d", ival);
+ sprintf(fmt_arg, "%d", ival);
+ fmt_len += strlen(fmt_arg);
+ if ((format = realloc(format, fmt_len)) == 0) {
+ return -1;
+ }
+ strcpy(&format[--f], fmt_arg);
f = strlen(format);
} else if (isalpha(UChar(*fmt))) {
done = TRUE;
@@ -203,42 +211,52 @@ _nc_printf_length(const char *fmt, va_list ap)
* Wrapper for vsprintf that allocates a buffer big enough to hold the result.
*/
NCURSES_EXPORT(char *)
-_nc_printf_string
-(const char *fmt, va_list ap)
+_nc_printf_string(const char *fmt, va_list ap)
{
+ static char *buf;
+ static size_t used;
+ char *result = 0;
+
+ if (fmt != 0) {
#if USE_SAFE_SPRINTF
- char *buf = 0;
- int len = _nc_printf_length(fmt, ap);
+ int len = _nc_printf_length(fmt, ap);
- if (len > 0) {
- if ((buf = typeMalloc(char, len + 1)) == 0)
- return (0);
- vsprintf(buf, fmt, ap);
- }
+ if ((int) used < len + 1) {
+ used = 2 * (len + 1);
+ buf = typeRealloc(char, used, buf);
+ }
+ if (buf != 0) {
+ *buf = '\0';
+ if (len >= 0) {
+ vsprintf(buf, fmt, ap);
+ }
+ result = buf;
+ }
#else
- static int rows, cols;
- static char *buf;
- static size_t len;
-
- if (screen_lines > rows || screen_columns > cols) {
- if (screen_lines > rows)
- rows = screen_lines;
- if (screen_columns > cols)
- cols = screen_columns;
- len = (rows * (cols + 1)) + 1;
- buf = typeRealloc(char, len, buf);
- if (buf == 0) {
- return (0);
+ static int rows, cols;
+
+ if (screen_lines > rows || screen_columns > cols) {
+ if (screen_lines > rows)
+ rows = screen_lines;
+ if (screen_columns > cols)
+ cols = screen_columns;
+ used = (rows * (cols + 1)) + 1;
+ buf = typeRealloc(char, used, buf);
}
- }
- if (buf != 0) {
+ if (buf != 0) {
# if HAVE_VSNPRINTF
- vsnprintf(buf, len, fmt, ap); /* GNU extension */
+ vsnprintf(buf, used, fmt, ap); /* GNU extension */
# else
- vsprintf(buf, fmt, ap); /* ANSI */
+ vsprintf(buf, fmt, ap); /* ANSI */
# endif
- }
+ result = buf;
+ }
#endif
- return buf;
+ } else if (buf != 0) { /* see _nc_freeall() */
+ free(buf);
+ buf = 0;
+ used = 0;
+ }
+ return result;
}
diff --git a/contrib/ncurses/ncurses/base/sigaction.c b/contrib/ncurses/ncurses/base/sigaction.c
index 8ba8629a4f50..36442e090a41 100644
--- a/contrib/ncurses/ncurses/base/sigaction.c
+++ b/contrib/ncurses/ncurses/base/sigaction.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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 *
@@ -29,37 +29,29 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-2003 *
****************************************************************************/
-#include <curses.priv.h>
-
-#include <SigAction.h>
-
/* This file provides sigaction() emulation using sigvec() */
/* Use only if this is non POSIX system */
-#if !HAVE_SIGACTION && HAVE_SIGVEC
+MODULE_ID("$Id: sigaction.c,v 1.14 2003/12/07 01:06:52 tom Exp $")
-MODULE_ID("$Id: sigaction.c,v 1.13 2002/05/18 19:56:26 tom Exp $")
-
-NCURSES_EXPORT(int)
-sigaction
-(int sig, sigaction_t * sigact, sigaction_t * osigact)
+static int
+_nc_sigaction(int sig, sigaction_t * sigact, sigaction_t * osigact)
{
return sigvec(sig, sigact, osigact);
}
-NCURSES_EXPORT(int)
-sigemptyset
-(sigset_t * mask)
+static int
+_nc_sigemptyset(sigset_t * mask)
{
*mask = 0;
return 0;
}
-NCURSES_EXPORT(int)
-sigprocmask
-(int mode, sigset_t * mask, sigset_t * omask)
+static int
+_nc_sigprocmask(int mode, sigset_t * mask, sigset_t * omask)
{
sigset_t current = sigsetmask(0);
@@ -77,41 +69,31 @@ sigprocmask
return 0;
}
-NCURSES_EXPORT(int)
-sigsuspend(sigset_t * mask)
+static int
+_nc_sigaddset(sigset_t * mask, int sig)
{
- return sigpause(*mask);
+ *mask |= sigmask(sig);
+ return 0;
}
-NCURSES_EXPORT(int)
-sigdelset
-(sigset_t * mask, int sig)
+/* not used in lib_tstp.c */
+#if 0
+static int
+_nc_sigsuspend(sigset_t * mask)
{
- *mask &= ~sigmask(sig);
- return 0;
+ return sigpause(*mask);
}
-NCURSES_EXPORT(int)
-sigaddset
-(sigset_t * mask, int sig)
+static int
+_nc_sigdelset(sigset_t * mask, int sig)
{
- *mask |= sigmask(sig);
+ *mask &= ~sigmask(sig);
return 0;
}
-NCURSES_EXPORT(int)
-sigismember
-(sigset_t * mask, int sig)
+static int
+_nc_sigismember(sigset_t * mask, int sig)
{
return (*mask & sigmask(sig)) != 0;
}
-
-#else
-extern
-NCURSES_EXPORT(void)
-_nc_sigaction(void); /* quiet's gcc warning */
-NCURSES_EXPORT(void)
-_nc_sigaction(void)
-{
-} /* nonempty for strict ANSI compilers */
#endif
diff --git a/contrib/ncurses/ncurses/base/tries.c b/contrib/ncurses/ncurses/base/tries.c
index fe7d93ed5e10..4edb7317483c 100644
--- a/contrib/ncurses/ncurses/base/tries.c
+++ b/contrib/ncurses/ncurses/base/tries.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,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 *
@@ -39,15 +39,14 @@
#include <curses.priv.h>
-MODULE_ID("$Id: tries.c,v 1.15 2001/12/16 00:50:40 tom Exp $")
+MODULE_ID("$Id: tries.c,v 1.22 2005/11/26 20:09:18 tom Exp $")
/*
* Expand a keycode into the string that it corresponds to, returning null if
* no match was found, otherwise allocating a string of the result.
*/
NCURSES_EXPORT(char *)
-_nc_expand_try
-(struct tries *tree, unsigned short code, int *count, size_t len)
+_nc_expand_try(struct tries *tree, unsigned code, int *count, size_t len)
{
struct tries *ptr = tree;
char *result = 0;
@@ -72,7 +71,7 @@ _nc_expand_try
if ((result[len] = ptr->ch) == 0)
*((unsigned char *) (result + len)) = 128;
#ifdef TRACE
- if (len == 0)
+ if (len == 0 && _nc_tracing != 0)
_tracef("expand_key %s %s", _tracechar(code), _nc_visbuf(result));
#endif
}
@@ -84,8 +83,7 @@ _nc_expand_try
* true if the code was found/removed.
*/
NCURSES_EXPORT(int)
-_nc_remove_key
-(struct tries **tree, unsigned short code)
+_nc_remove_key(struct tries **tree, unsigned code)
{
T((T_CALLED("_nc_remove_key(%p,%d)"), tree, code));
@@ -117,7 +115,7 @@ _nc_remove_key
* true if the string was found/removed.
*/
NCURSES_EXPORT(int)
-_nc_remove_string(struct tries **tree, char *string)
+_nc_remove_string(struct tries **tree, const char *string)
{
T((T_CALLED("_nc_remove_string(%p,%s)"), tree, _nc_visbuf(string)));
@@ -125,18 +123,17 @@ _nc_remove_string(struct tries **tree, char *string)
returnCode(FALSE);
while (*tree != 0) {
- if ((unsigned char) (*tree)->ch == (unsigned char) *string) {
+ if (UChar((*tree)->ch) == UChar(*string)) {
if (string[1] != 0)
returnCode(_nc_remove_string(&(*tree)->child, string + 1));
- if ((*tree)->child) {
- /* don't cut the whole sub-tree */
- (*tree)->value = 0;
- } else {
+ if ((*tree)->child == 0) {
struct tries *to_free = *tree;
*tree = (*tree)->sibling;
free(to_free);
+ returnCode(TRUE);
+ } else {
+ returnCode(FALSE);
}
- returnCode(TRUE);
}
tree = &(*tree)->sibling;
}
diff --git a/contrib/ncurses/ncurses/base/version.c b/contrib/ncurses/ncurses/base/version.c
index b78c99d00e05..ef83967d46b3 100644
--- a/contrib/ncurses/ncurses/base/version.c
+++ b/contrib/ncurses/ncurses/base/version.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2004,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,16 +32,11 @@
#include <curses.priv.h>
-MODULE_ID("$Id: version.c,v 1.4 2000/12/10 02:43:28 tom Exp $")
+MODULE_ID("$Id: version.c,v 1.6 2005/01/02 01:23:54 tom Exp $")
NCURSES_EXPORT(const char *)
curses_version(void)
{
- static char my_version[80];
-
T((T_CALLED("curses_version()")));
- sprintf(my_version, "ncurses %s.%d",
- NCURSES_VERSION,
- NCURSES_VERSION_PATCH);
- returnPtr(my_version);
+ returnCPtr("ncurses " NCURSES_VERSION_STRING);
}
diff --git a/contrib/ncurses/ncurses/base/vsscanf.c b/contrib/ncurses/ncurses/base/vsscanf.c
index 65794b76623b..e6253c3a38a3 100644
--- a/contrib/ncurses/ncurses/base/vsscanf.c
+++ b/contrib/ncurses/ncurses/base/vsscanf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,7 +38,7 @@
#if !HAVE_VSSCANF
-MODULE_ID("$Id: vsscanf.c,v 1.15 2002/02/03 00:49:45 tom Exp $")
+MODULE_ID("$Id: vsscanf.c,v 1.18 2004/04/03 20:27:02 tom Exp $")
#if !(HAVE_VFSCANF || HAVE__DOSCAN)
@@ -210,7 +210,8 @@ vsscanf(const char *str, const char *format, va_list ap)
if (can_convert) {
size_t len_fmt = strlen(format) + 32;
char *my_fmt = malloc(len_fmt);
- ChunkType other, chunk, check;
+ ChunkType chunk, ctest;
+ OtherType other, otest;
ScanState state;
unsigned n;
int eaten;
@@ -229,7 +230,7 @@ vsscanf(const char *str, const char *format, va_list ap)
/* find a chunk */
state = sUnknown;
chunk = cUnknown;
- other = cUnknown;
+ other = oUnknown;
pointer = 0;
for (n = 0; format[n] != 0 && state != sFinal; ++n) {
my_fmt[n] = format[n];
@@ -265,12 +266,12 @@ vsscanf(const char *str, const char *format, va_list ap)
if (format[n] == '*') {
state = sUnknown;
} else {
- if ((check = final_ch(format[n], other)) != cUnknown) {
+ if ((ctest = final_ch(format[n], other)) != cUnknown) {
state = sFinal;
- chunk = check;
- } else if ((check = other_ch(format[n])) != oUnknown) {
- other = check;
- } else if (isalpha(format[n])) {
+ chunk = ctest;
+ } else if ((otest = other_ch(format[n])) != oUnknown) {
+ other = otest;
+ } else if (isalpha(UChar(format[n]))) {
state = sFinal;
chunk = cError;
}
diff --git a/contrib/ncurses/ncurses/base/wresize.c b/contrib/ncurses/ncurses/base/wresize.c
index fa97a2bee52b..ca6336dc94b5 100644
--- a/contrib/ncurses/ncurses/base/wresize.c
+++ b/contrib/ncurses/ncurses/base/wresize.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free 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,38 +27,75 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 *
+ * Author: Thomas E. Dickey 1996-2002 *
****************************************************************************/
#include <curses.priv.h>
-MODULE_ID("$Id: wresize.c,v 1.21 2002/05/11 19:36:29 tom Exp $")
+MODULE_ID("$Id: wresize.c,v 1.24 2006/10/14 20:43:31 tom Exp $")
+
+static int
+cleanup_lines(struct ldat *data, int length)
+{
+ while (--length >= 0)
+ free(data->text);
+ free(data);
+ return ERR;
+}
+
+/*
+ * If we have reallocated the ldat structs, we will have to repair pointers
+ * used in subwindows.
+ */
+static void
+repair_subwindows(WINDOW *cmp)
+{
+ WINDOWLIST *wp;
+ struct ldat *pline = cmp->_line;
+ int row;
+
+ for (wp = _nc_windows; wp != 0; wp = wp->next) {
+ WINDOW *tst = &(wp->win);
+
+ if (tst->_parent == cmp) {
+
+ if (tst->_pary > cmp->_maxy)
+ tst->_pary = cmp->_maxy;
+ if (tst->_parx > cmp->_maxx)
+ tst->_parx = cmp->_maxx;
+
+ if (tst->_maxy + tst->_pary > cmp->_maxy)
+ tst->_maxy = cmp->_maxy - tst->_pary;
+ if (tst->_maxx + tst->_parx > cmp->_maxx)
+ tst->_maxx = cmp->_maxx - tst->_parx;
+
+ for (row = 0; row <= tst->_maxy; ++row) {
+ tst->_line[row].text = &pline[tst->_pary + row].text[tst->_parx];
+ }
+ repair_subwindows(tst);
+ }
+ }
+}
/*
* Reallocate a curses WINDOW struct to either shrink or grow to the specified
* new lines/columns. If it grows, the new character cells are filled with
* blanks. The application is responsible for repainting the blank area.
*/
-
-#define DOALLOC(p,t,n) typeRealloc(t, n, p)
-#define ld_ALLOC(p,n) DOALLOC(p,struct ldat,n)
-#define c_ALLOC(p,n) DOALLOC(p,NCURSES_CH_T,n)
-
NCURSES_EXPORT(int)
wresize(WINDOW *win, int ToLines, int ToCols)
{
- register int row;
- int size_x, size_y;
+ int col, row, size_x, size_y;
struct ldat *pline;
- NCURSES_CH_T blank;
+ struct ldat *new_lines = 0;
#ifdef TRACE
T((T_CALLED("wresize(%p,%d,%d)"), win, ToLines, ToCols));
if (win) {
- TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
- win->_begy, win->_begx,
- win->_maxy, win->_maxx,
- win->_regtop, win->_regbottom));
+ TR(TRACE_UPDATE, ("...beg (%ld, %ld), max(%ld,%ld), reg(%ld,%ld)",
+ (long) win->_begy, (long) win->_begx,
+ (long) win->_maxy, (long) win->_maxx,
+ (long) win->_regtop, (long) win->_regbottom));
if (_nc_tracing & TRACE_UPDATE)
_tracedump("...before", win);
}
@@ -90,67 +127,83 @@ wresize(WINDOW *win, int ToLines, int ToCols)
}
/*
- * If the number of lines has changed, adjust the size of the overall
- * vector:
+ * Allocate new memory as needed. Do the allocations without modifying
+ * the original window, in case an allocation fails. Always allocate
+ * (at least temporarily) the array pointing to the individual lines.
*/
- if (ToLines != size_y) {
- if (!(win->_flags & _SUBWIN)) {
- for (row = ToLines + 1; row <= size_y; row++)
- free((char *) (win->_line[row].text));
- }
-
- win->_line = ld_ALLOC(win->_line, ToLines + 1);
- if (win->_line == 0)
- returnCode(ERR);
-
- for (row = size_y + 1; row <= ToLines; row++) {
- win->_line[row].text = 0;
- win->_line[row].firstchar = 0;
- win->_line[row].lastchar = ToCols;
- if ((win->_flags & _SUBWIN)) {
- win->_line[row].text =
- &pline[win->_pary + row].text[win->_parx];
- }
- }
- }
+ new_lines = typeCalloc(struct ldat, (unsigned) (ToLines + 1));
+ if (new_lines == 0)
+ returnCode(ERR);
/*
- * Adjust the width of the columns:
+ * For each line in the target, allocate or adjust pointers for the
+ * corresponding text, depending on whether this is a window or a
+ * subwindow.
*/
- blank = win->_nc_bkgd;
- for (row = 0; row <= ToLines; row++) {
- NCURSES_CH_T *s = win->_line[row].text;
- int begin = (s == 0) ? 0 : size_x + 1;
+ for (row = 0; row <= ToLines; ++row) {
+ int begin = (row > size_y) ? 0 : (size_x + 1);
int end = ToCols;
+ NCURSES_CH_T *s;
- if_USE_SCROLL_HINTS(win->_line[row].oldindex = row);
-
- if (ToCols != size_x || s == 0) {
- if (!(win->_flags & _SUBWIN)) {
- win->_line[row].text = s = c_ALLOC(s, ToCols + 1);
- if (win->_line[row].text == 0)
- returnCode(ERR);
+ if (!(win->_flags & _SUBWIN)) {
+ if (row <= size_y) {
+ if (ToCols != size_x) {
+ if ((s = typeMalloc(NCURSES_CH_T, ToCols + 1)) == 0)
+ returnCode(cleanup_lines(new_lines, row));
+ for (col = 0; col <= ToCols; ++col) {
+ s[col] = (col <= size_x
+ ? win->_line[row].text[col]
+ : win->_nc_bkgd);
+ }
+ } else {
+ s = win->_line[row].text;
+ }
} else {
- win->_line[row].text = s =
- &pline[win->_pary + row].text[win->_parx];
+ if ((s = typeMalloc(NCURSES_CH_T, ToCols + 1)) == 0)
+ returnCode(cleanup_lines(new_lines, row));
+ for (col = 0; col <= ToCols; ++col)
+ s[col] = win->_nc_bkgd;
}
+ } else {
+ s = &pline[win->_pary + row].text[win->_parx];
+ }
+ if_USE_SCROLL_HINTS(new_lines[row].oldindex = row);
+ if (row <= size_y) {
+ new_lines[row].firstchar = win->_line[row].firstchar;
+ new_lines[row].lastchar = win->_line[row].lastchar;
+ }
+ if ((ToCols != size_x) || (row > size_y)) {
if (end >= begin) { /* growing */
- if (win->_line[row].firstchar < begin)
- win->_line[row].firstchar = begin;
- if (!(win->_flags & _SUBWIN)) {
- do {
- s[end] = blank;
- } while (--end >= begin);
- }
+ if (new_lines[row].firstchar < begin)
+ new_lines[row].firstchar = begin;
} else { /* shrinking */
- win->_line[row].firstchar = 0;
+ new_lines[row].firstchar = 0;
}
- win->_line[row].lastchar = ToCols;
+ new_lines[row].lastchar = ToCols;
}
+ new_lines[row].text = s;
}
/*
+ * Dispose of unwanted memory.
+ */
+ if (!(win->_flags & _SUBWIN)) {
+ if (ToCols == size_x) {
+ for (row = ToLines + 1; row <= size_y; row++) {
+ free(win->_line[row].text);
+ }
+ } else {
+ for (row = 0; row <= size_y; row++) {
+ free(win->_line[row].text);
+ }
+ }
+ }
+
+ free(win->_line);
+ win->_line = new_lines;
+
+ /*
* Finally, adjust the parameters showing screen size and cursor
* position:
*/
@@ -168,11 +221,17 @@ wresize(WINDOW *win, int ToLines, int ToCols)
if (win->_cury > win->_maxy)
win->_cury = win->_maxy;
+ /*
+ * Check for subwindows of this one, and readjust pointers to our text,
+ * if needed.
+ */
+ repair_subwindows(win);
+
#ifdef TRACE
- TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
- win->_begy, win->_begx,
- win->_maxy, win->_maxx,
- win->_regtop, win->_regbottom));
+ TR(TRACE_UPDATE, ("...beg (%ld, %ld), max(%ld,%ld), reg(%ld,%ld)",
+ (long) win->_begy, (long) win->_begx,
+ (long) win->_maxy, (long) win->_maxx,
+ (long) win->_regtop, (long) win->_regbottom));
if (_nc_tracing & TRACE_UPDATE)
_tracedump("...after:", win);
#endif
diff --git a/contrib/ncurses/ncurses/curses.priv.h b/contrib/ncurses/ncurses/curses.priv.h
index efac8ae3e6e2..cfb3e62a62b0 100644
--- a/contrib/ncurses/ncurses/curses.priv.h
+++ b/contrib/ncurses/ncurses/curses.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,12 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
- * and: Thomas E. Dickey 1996-2002 *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*
- * $Id: curses.priv.h,v 1.219 2002/05/25 12:22:43 tom Exp $
+ * $Id: curses.priv.h,v 1.314 2006/12/10 00:55:14 tom Exp $
*
* curses.priv.h
*
@@ -78,6 +78,11 @@ extern "C" {
# include <sys/param.h>
#endif
+#include <assert.h>
+#include <stdio.h>
+
+#include <errno.h>
+
#ifndef PATH_MAX
# if defined(_POSIX_PATH_MAX)
# define PATH_MAX _POSIX_PATH_MAX
@@ -88,11 +93,6 @@ extern "C" {
# endif
#endif
-#include <assert.h>
-#include <stdio.h>
-
-#include <errno.h>
-
#if DECL_ERRNO
extern int errno;
#endif
@@ -130,7 +130,9 @@ extern int errno;
/* EMX mouse support */
#ifdef __EMX__
-#define USE_EMX_MOUSE
+#define USE_EMX_MOUSE 1
+#else
+#define USE_EMX_MOUSE 0
#endif
#define DEFAULT_MAXCLICK 166
@@ -142,12 +144,15 @@ extern int errno;
*/
#if !NCURSES_EXT_FUNCS
#undef HAVE_SIZECHANGE
+#define HAVE_SIZECHANGE 0
#endif
#if HAVE_SIZECHANGE && defined(SIGWINCH)
#define USE_SIZECHANGE 1
#else
+#define USE_SIZECHANGE 0
#undef USE_SIGWINCH
+#define USE_SIGWINCH 0
#endif
/*
@@ -205,14 +210,6 @@ struct tries {
};
/*
- * Definitions for color pairs
- */
-#define C_SHIFT 8 /* we need more bits than there are colors */
-#define C_MASK ((1 << C_SHIFT) - 1)
-
-#define PAIR_OF(fg, bg) ((((fg) & C_MASK) << C_SHIFT) | ((bg) & C_MASK))
-
-/*
* Common/troublesome character definitions
*/
#define L_BRACE '{'
@@ -228,7 +225,9 @@ struct tries {
typedef struct
{
- short red, green, blue;
+ short red, green, blue; /* what color_content() returns */
+ short r, g, b; /* params to init_color() */
+ int init; /* true if we called init_color() */
}
color_t;
@@ -251,150 +250,267 @@ color_t;
#include <curses.h> /* we'll use -Ipath directive to get the right one! */
#include <term.h>
+#include <term_entry.h>
+#include <nc_tparm.h>
+
+#if NCURSES_EXT_COLORS && USE_WIDEC_SUPPORT
+#define if_EXT_COLORS(stmt) stmt
+#define NetPair(value,p) (value).ext_color = (p), \
+ AttrOf(value) &= ALL_BUT_COLOR, \
+ AttrOf(value) |= (A_COLOR & COLOR_PAIR((p > 255) ? 255 : p))
+#define SetPair(value,p) (value).ext_color = (p)
+#define GetPair(value) (value).ext_color
+#define unColor(n) (AttrOf(n) & ALL_BUT_COLOR)
+#define GET_WINDOW_PAIR(w) (w)->_color
+#define SET_WINDOW_PAIR(w,p) (w)->_color = (p)
+#define SameAttrOf(a,b) (AttrOf(a) == AttrOf(b) && GetPair(a) == GetPair(b))
+#define VIDATTR(attr, pair) vid_attr(attr, pair, 0)
+#else
+#define if_EXT_COLORS(stmt) /* nothing */
+#define SetPair(value,p) RemAttr(value, A_COLOR), \
+ SetAttr(value, AttrOf(value) | (A_COLOR & COLOR_PAIR(p)))
+#define GetPair(value) PAIR_NUMBER(AttrOf(value))
+#define unColor(n) (AttrOf(n) & ALL_BUT_COLOR)
+#define GET_WINDOW_PAIR(w) PAIR_NUMBER(WINDOW_ATTRS(w))
+#define SET_WINDOW_PAIR(w,p) WINDOW_ATTRS(w) &= ALL_BUT_COLOR, \
+ WINDOW_ATTRS(w) |= (A_COLOR & COLOR_PAIR(p))
+#define SameAttrOf(a,b) (AttrOf(a) == AttrOf(b))
+#define VIDATTR(attr, pair) vidattr(attr)
+#endif
+
+#define WINDOW_ATTRS(w) ((w)->_attrs)
+
+#define SCREEN_ATTRS(s) (*((s)->_current_attr))
+#define GET_SCREEN_PAIR(s) GetPair(SCREEN_ATTRS(s))
+#define SET_SCREEN_PAIR(s,p) SetPair(SCREEN_ATTRS(s), p)
+/*
+ * 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) ((((fg) & C_MASK) << C_SHIFT) | ((bg) & C_MASK))
+#define isDefaultColor(c) ((c) >= COLOR_DEFAULT || (c) < 0)
+
+#define COLOR_DEFAULT C_MASK
+
+#if defined(USE_TERMLIB) && !defined(NEED_NCURSES_CH_T)
+
+#undef NCURSES_CH_T /* this is not a termlib feature */
+#define NCURSES_CH_T void /* ...but we need a pointer in SCREEN */
+
+#endif /* USE_TERMLIB */
+
+#ifndef USE_TERMLIB
struct ldat
{
- NCURSES_CH_T *text; /* text of the line */
- NCURSES_SIZE_T firstchar; /* first changed character in the line */
- NCURSES_SIZE_T lastchar; /* last changed character in the line */
- NCURSES_SIZE_T oldindex; /* index of the line at last update */
+ NCURSES_CH_T *text; /* text of the line */
+ NCURSES_SIZE_T firstchar; /* first changed character in the line */
+ NCURSES_SIZE_T lastchar; /* last changed character in the line */
+ NCURSES_SIZE_T oldindex; /* index of the line at last update */
};
+#endif /* USE_TERMLIB */
+
+typedef enum {
+ M_XTERM = -1 /* use xterm's mouse tracking? */
+ ,M_NONE = 0 /* no mouse device */
+#if USE_GPM_SUPPORT
+ ,M_GPM /* use GPM */
+#endif
+#if USE_SYSMOUSE
+ ,M_SYSMOUSE /* FreeBSD sysmouse on console */
+#endif
+} MouseType;
/*
- * Structure for soft labels.
+ * Structures for scrolling.
*/
+typedef struct {
+ unsigned long hashval;
+ int oldcount, newcount;
+ int oldindex, newindex;
+} HASHMAP;
+
+/*
+ * Structures for soft labels.
+ */
+
+struct _SLK;
+
+#ifndef USE_TERMLIB
+
typedef struct
{
- char *text; /* text for the label */
- char *form_text; /* formatted text (left/center/...) */
- int x; /* x coordinate of this field */
- char dirty; /* this label has changed */
- char visible; /* field is visible */
+ char *ent_text; /* text for the label */
+ char *form_text; /* formatted text (left/center/...) */
+ int ent_x; /* x coordinate of this field */
+ char dirty; /* this label has changed */
+ char visible; /* field is visible */
} slk_ent;
-typedef struct {
- char dirty; /* all labels have changed */
- char hidden; /* soft labels are hidden */
- struct _win_st *win;
+typedef struct _SLK {
+ char dirty; /* all labels have changed */
+ char hidden; /* soft labels are hidden */
+ WINDOW *win;
slk_ent *ent;
- char* buffer; /* buffer for labels */
- short maxlab; /* number of available labels */
- short labcnt; /* number of allocated labels */
- short maxlen; /* length of labels */
- chtype attr; /* soft label attribute */
+ short maxlab; /* number of available labels */
+ short labcnt; /* number of allocated labels */
+ short maxlen; /* length of labels */
+ NCURSES_CH_T attr; /* soft label attribute */
} SLK;
-typedef struct {
- unsigned long hashval;
- int oldcount, newcount;
- int oldindex, newindex;
-} HASHMAP;
+#endif /* USE_TERMLIB */
+
+typedef struct {
+ int line; /* lines to take, < 0 => from bottom*/
+ int (*hook)(WINDOW *, int); /* callback for user */
+ WINDOW *w; /* maybe we need this for cleanup */
+} ripoff_t;
+
+#if USE_GPM_SUPPORT
+#undef buttons /* term.h defines this, and gpm uses it! */
+#include <gpm.h>
+
+#ifdef HAVE_LIBDL
+/* link dynamically to GPM */
+typedef int *TYPE_gpm_fd;
+typedef int (*TYPE_Gpm_Open) (Gpm_Connect *, int);
+typedef int (*TYPE_Gpm_Close) (void);
+typedef int (*TYPE_Gpm_GetEvent) (Gpm_Event *);
+
+#define my_gpm_fd SP->_mouse_gpm_fd
+#define my_Gpm_Open SP->_mouse_Gpm_Open
+#define my_Gpm_Close SP->_mouse_Gpm_Close
+#define my_Gpm_GetEvent SP->_mouse_Gpm_GetEvent
+#else
+/* link statically to GPM */
+#define my_gpm_fd &gpm_fd
+#define my_Gpm_Open Gpm_Open
+#define my_Gpm_Close Gpm_Close
+#define my_Gpm_GetEvent Gpm_GetEvent
+#endif /* HAVE_LIBDL */
+#endif /* USE_GPM_SUPPORT */
+
+/*
+ * The SCREEN structure.
+ */
struct screen {
- int _ifd; /* input file ptr for screen */
- FILE *_ofp; /* output file ptr for screen */
- char *_setbuf; /* buffered I/O for output */
- int _buffered; /* setvbuf uses _setbuf data */
- int _checkfd; /* filedesc for typeahead check */
- struct term *_term; /* terminal type information */
- short _lines; /* screen lines */
- short _columns; /* screen columns */
- short _lines_avail; /* lines available for stdscr */
- short _topstolen; /* lines stolen from top */
-
- WINDOW *_curscr; /* current screen */
- WINDOW *_newscr; /* virtual screen to be updated to */
- WINDOW *_stdscr; /* screen's full-window context */
-
- struct tries *_keytry; /* "Try" for use with keypad mode */
- struct tries *_key_ok; /* Disabled keys via keyok(,FALSE) */
- bool _tried; /* keypad mode was initialized */
- bool _keypad_on; /* keypad mode is currently on */
-
- unsigned int _fifo[FIFO_SIZE]; /* input push-back buffer */
- short _fifohead, /* head of fifo queue */
- _fifotail, /* tail of fifo queue */
- _fifopeek, /* where to peek for next char */
- _fifohold; /* set if breakout marked */
-
- int _endwin; /* are we out of window mode? */
- attr_t _current_attr; /* terminal attribute current set */
- int _coloron; /* is color enabled? */
- int _cursor; /* visibility of the cursor */
- int _cursrow; /* physical cursor row */
- int _curscol; /* physical cursor column */
- int _nl; /* True if NL -> CR/NL is on */
- int _raw; /* True if in raw mode */
- int _cbreak; /* 1 if in cbreak mode */
- /* > 1 if in halfdelay mode */
- int _echo; /* True if echo on */
- int _use_meta; /* use the meta key? */
- SLK *_slk; /* ptr to soft key struct / NULL */
- int slk_format; /* selected format for this screen */
+ int _ifd; /* input file ptr for screen */
+ FILE *_ofp; /* output file ptr for screen */
+ char *_setbuf; /* buffered I/O for output */
+ bool _filtered; /* filter() was called */
+ bool _buffered; /* setvbuf uses _setbuf data */
+ int _checkfd; /* filedesc for typeahead check */
+ TERMINAL *_term; /* terminal type information */
+ short _lines; /* screen lines */
+ short _columns; /* screen columns */
+
+ short _lines_avail; /* lines available for stdscr */
+ short _topstolen; /* lines stolen from top */
+ ripoff_t _rippedoff[5]; /* list of lines stolen */
+ int _rip_count; /* ...and total lines stolen */
+
+ WINDOW *_curscr; /* current screen */
+ WINDOW *_newscr; /* virtual screen to be updated to */
+ WINDOW *_stdscr; /* screen's full-window context */
+
+ struct tries *_keytry; /* "Try" for use with keypad mode */
+ struct tries *_key_ok; /* Disabled keys via keyok(,FALSE) */
+ bool _tried; /* keypad mode was initialized */
+ bool _keypad_on; /* keypad mode is currently on */
+
+ bool _called_wgetch; /* check for recursion in wgetch() */
+ int _fifo[FIFO_SIZE]; /* input push-back buffer */
+ short _fifohead, /* head of fifo queue */
+ _fifotail, /* tail of fifo queue */
+ _fifopeek, /* where to peek for next char */
+ _fifohold; /* set if breakout marked */
+
+ int _endwin; /* are we out of window mode? */
+ NCURSES_CH_T *_current_attr; /* holds current attributes set */
+ int _coloron; /* is color enabled? */
+ int _color_defs; /* are colors modified */
+ int _cursor; /* visibility of the cursor */
+ int _cursrow; /* physical cursor row */
+ int _curscol; /* physical cursor column */
+ bool _notty; /* true if we cannot switch non-tty */
+ int _nl; /* True if NL -> CR/NL is on */
+ int _raw; /* True if in raw mode */
+ int _cbreak; /* 1 if in cbreak mode */
+ /* > 1 if in halfdelay mode */
+ int _echo; /* True if echo on */
+ int _use_meta; /* use the meta key? */
+ 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
- int _no_padding; /* flag to set if padding disabled */
+ int _no_padding; /* flag to set if padding disabled */
#endif
- int _char_padding; /* cost of character put */
- int _cr_cost; /* cost of (carriage_return) */
- int _cup_cost; /* cost of (cursor_address) */
- int _home_cost; /* cost of (cursor_home) */
- int _ll_cost; /* cost of (cursor_to_ll) */
+ 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) */
+ int _ht_cost; /* cost of (tab) */
+ int _cbt_cost; /* cost of (backtab) */
#endif /* USE_HARD_TABS */
- int _cub1_cost; /* cost of (cursor_left) */
- int _cuf1_cost; /* cost of (cursor_right) */
- int _cud1_cost; /* cost of (cursor_down) */
- int _cuu1_cost; /* cost of (cursor_up) */
- int _cub_cost; /* cost of (parm_cursor_left) */
- int _cuf_cost; /* cost of (parm_cursor_right) */
- int _cud_cost; /* cost of (parm_cursor_down) */
- int _cuu_cost; /* cost of (parm_cursor_up) */
- int _hpa_cost; /* cost of (column_address) */
- int _vpa_cost; /* cost of (row_address) */
+ int _cub1_cost; /* cost of (cursor_left) */
+ int _cuf1_cost; /* cost of (cursor_right) */
+ int _cud1_cost; /* cost of (cursor_down) */
+ int _cuu1_cost; /* cost of (cursor_up) */
+ int _cub_cost; /* cost of (parm_cursor_left) */
+ int _cuf_cost; /* cost of (parm_cursor_right) */
+ int _cud_cost; /* cost of (parm_cursor_down) */
+ int _cuu_cost; /* cost of (parm_cursor_up) */
+ int _hpa_cost; /* cost of (column_address) */
+ int _vpa_cost; /* cost of (row_address) */
/* used in tty_update.c, must be chars */
- int _ed_cost; /* cost of (clr_eos) */
- int _el_cost; /* cost of (clr_eol) */
- int _el1_cost; /* cost of (clr_bol) */
- int _dch1_cost; /* cost of (delete_character) */
- int _ich1_cost; /* cost of (insert_character) */
- int _dch_cost; /* cost of (parm_dch) */
- int _ich_cost; /* cost of (parm_ich) */
- int _ech_cost; /* cost of (erase_chars) */
- int _rep_cost; /* cost of (repeat_char) */
- int _hpa_ch_cost; /* cost of (column_address) */
- int _cup_ch_cost; /* cost of (cursor_address) */
- int _cuf_ch_cost; /* cost of (parm_cursor_right) */
- int _inline_cost; /* cost of inline-move */
- int _smir_cost; /* cost of (enter_insert_mode) */
- int _rmir_cost; /* cost of (exit_insert_mode) */
- int _ip_cost; /* cost of (insert_padding) */
+ int _ed_cost; /* cost of (clr_eos) */
+ int _el_cost; /* cost of (clr_eol) */
+ int _el1_cost; /* cost of (clr_bol) */
+ int _dch1_cost; /* cost of (delete_character) */
+ int _ich1_cost; /* cost of (insert_character) */
+ int _dch_cost; /* cost of (parm_dch) */
+ int _ich_cost; /* cost of (parm_ich) */
+ int _ech_cost; /* cost of (erase_chars) */
+ int _rep_cost; /* cost of (repeat_char) */
+ int _hpa_ch_cost; /* cost of (column_address) */
+ int _cup_ch_cost; /* cost of (cursor_address) */
+ int _cuf_ch_cost; /* cost of (parm_cursor_right) */
+ int _inline_cost; /* cost of inline-move */
+ int _smir_cost; /* cost of (enter_insert_mode) */
+ int _rmir_cost; /* cost of (exit_insert_mode) */
+ int _ip_cost; /* cost of (insert_padding) */
/* used in lib_mvcur.c */
- char * _address_cursor;
+ char * _address_cursor;
/* used in tty_update.c */
- int _scrolling; /* 1 if terminal's smart enough to */
+ int _scrolling; /* 1 if terminal's smart enough to */
/* used in lib_color.c */
- color_t *_color_table; /* screen's color palette */
- int _color_count; /* count of colors in palette */
- unsigned short *_color_pairs; /* screen's color pair list */
- int _pair_count; /* count of color pairs */
+ 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 */
#if NCURSES_EXT_FUNCS
- bool _default_color; /* use default colors */
- bool _has_sgr_39_49; /* has ECMA default color support */
- int _default_fg; /* assumed default foreground */
- int _default_bg; /* assumed default background */
+ bool _default_color; /* use default colors */
+ bool _has_sgr_39_49; /* has ECMA default color support */
+ int _default_fg; /* assumed default foreground */
+ int _default_bg; /* assumed default background */
#endif
- chtype _xmc_suppress; /* attributes to suppress if xmc */
- chtype _xmc_triggers; /* attributes to process if xmc */
- chtype _acs_map[ACS_LEN];
+ chtype _ok_attributes; /* valid attributes for terminal */
+ chtype _xmc_suppress; /* attributes to suppress if xmc */
+ chtype _xmc_triggers; /* attributes to process if xmc */
+ chtype * _acs_map; /* the real alternate-charset map */
+ bool * _screen_acs_map;
+
/* used in lib_vidattr.c */
- bool _use_rmso; /* true if we may use 'rmso' */
- bool _use_rmul; /* true if we may use 'rmul' */
+ bool _use_rmso; /* true if we may use 'rmso' */
+ bool _use_rmul; /* true if we may use 'rmul' */
/*
* These data correspond to the state of the idcok() and idlok()
@@ -403,21 +519,57 @@ struct screen {
* is given as an argument. However, ncurses implements this logic
* only for the newscr/curscr update process, _not_ per-window.
*/
- bool _nc_sp_idlok;
- bool _nc_sp_idcok;
+ bool _nc_sp_idlok;
+ bool _nc_sp_idcok;
#define _nc_idlok SP->_nc_sp_idlok
#define _nc_idcok SP->_nc_sp_idcok
/*
* These are the data that support the mouse interface.
*/
- int _maxclick;
- bool (*_mouse_event) (SCREEN *);
- bool (*_mouse_inline)(SCREEN *);
- bool (*_mouse_parse) (int);
- void (*_mouse_resume)(SCREEN *);
- void (*_mouse_wrap) (SCREEN *);
- int _mouse_fd; /* file-descriptor, if any */
+ bool _mouse_initialized;
+ MouseType _mouse_type;
+ int _maxclick;
+ bool (*_mouse_event) (SCREEN *);
+ bool (*_mouse_inline)(SCREEN *);
+ bool (*_mouse_parse) (int);
+ void (*_mouse_resume)(SCREEN *);
+ void (*_mouse_wrap) (SCREEN *);
+ int _mouse_fd; /* file-descriptor, if any */
+ bool _mouse_active; /* true if initialized */
+ mmask_t _mouse_mask;
+ 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 */
+
+#if USE_GPM_SUPPORT
+ bool _mouse_gpm_loaded;
+ bool _mouse_gpm_found;
+#ifdef HAVE_LIBDL
+ TYPE_gpm_fd _mouse_gpm_fd;
+ TYPE_Gpm_Open _mouse_Gpm_Open;
+ TYPE_Gpm_Close _mouse_Gpm_Close;
+ TYPE_Gpm_GetEvent _mouse_Gpm_GetEvent;
+#endif
+ Gpm_Connect _mouse_gpm_connect;
+#endif /* USE_GPM_SUPPORT */
+
+#if USE_EMX_MOUSE
+ int _emxmouse_wfd;
+ int _emxmouse_thread;
+ int _emxmouse_activated;
+ char _emxmouse_buttons[4];
+#endif
+
+#if USE_SYSMOUSE
+ MEVENT _sysmouse_fifo[FIFO_SIZE];
+ int _sysmouse_head;
+ int _sysmouse_tail;
+ int _sysmouse_char_width; /* character width */
+ int _sysmouse_char_height; /* character height */
+ int _sysmouse_old_buttons;
+ int _sysmouse_new_buttons;
+#endif
/*
* This supports automatic resizing
@@ -426,60 +578,68 @@ struct screen {
int (*_resize)(int,int);
#endif
- /*
+ /*
* These are data that support the proper handling of the panel stack on an
* per screen basis.
*/
- struct panelhook _panelHook;
+ struct panelhook _panelHook;
/*
* Linked-list of all windows, to support '_nc_resizeall()' and
* '_nc_freeall()'
*/
- WINDOWLIST *_nc_sp_windows;
+ WINDOWLIST *_nc_sp_windows;
#define _nc_windows SP->_nc_sp_windows
- bool _sig_winch;
- SCREEN *_next_screen;
+ bool _sig_winch;
+ SCREEN *_next_screen;
/* hashes for old and new lines */
unsigned long *oldhash, *newhash;
- HASHMAP *hashtab;
+ HASHMAP *hashtab;
int hashtab_len;
- bool _cleanup; /* cleanup after int/quit signal */
- int (*_outch)(int); /* output handler if not putc */
-};
+ bool _cleanup; /* cleanup after int/quit signal */
+ int (*_outch)(int); /* output handler if not putc */
-extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain;
+ int _legacy_coding; /* see use_legacy_coding() */
-#if NCURSES_NOMACROS
-#include <nomacros.h>
+ /*
+ * ncurses/ncursesw are the same up to this point.
+ */
+#if USE_WIDEC_SUPPORT
+ /* recent versions of 'screen' have partially-working support for
+ * UTF-8, but do not permit ACS at the same time (see tty_update.c).
+ */
+ bool _screen_acs_fix;
#endif
+};
+
+extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain;
-/*
- * The margins are used in resizeterm() to retain the original layout after
- * resizing.
- */
WINDOWLIST {
+ WINDOW win; /* first, so WINDOW_EXT() works */
WINDOWLIST *next;
-#if HAVE_RESIZETERM
- int l_margin;
- int r_margin;
- int t_margin;
- int b_margin;
+#ifdef _XOPEN_SOURCE_EXTENDED
+ char addch_work[(MB_LEN_MAX * 9) + 1];
+ unsigned addch_used; /* number of bytes in addch_work[] */
+ int addch_x; /* x-position for addch_work[] */
+ int addch_y; /* y-position for addch_work[] */
#endif
- WINDOW win;
};
-typedef struct {
- int line; /* lines to take, < 0 => from bottom*/
- int (*hook)(struct _win_st *, int); /* callback for user */
- struct _win_st *w; /* maybe we need this for cleanup */
-} ripoff_t;
+#define WINDOW_EXT(win,field) (((WINDOWLIST *)(win))->field)
+
+/* usually in <limits.h> */
+#ifndef UCHAR_MAX
+#define UCHAR_MAX 255
+#endif
/* The terminfo source is assumed to be 7-bit ASCII */
#define is7bits(c) ((unsigned)(c) < 128)
+/* Checks for isprint() should be done on 8-bit characters (non-wide) */
+#define is8bits(c) ((unsigned)(c) <= UCHAR_MAX)
+
#ifndef min
#define min(a,b) ((a) > (b) ? (b) : (a))
#endif
@@ -530,22 +690,46 @@ typedef struct {
#define O_BINARY 0
#endif
+#ifdef TRACE
+#define TRACE_OUTCHARS(n) _nc_outchars += (n);
+#else
+#define TRACE_OUTCHARS(n) /* nothing */
+#endif
+
#define UChar(c) ((unsigned char)(c))
#define ChCharOf(c) ((c) & (chtype)A_CHARTEXT)
-#define ChAttrOf(c) ((c) & (chtype)A_ATTRIBUTES)
+#define ChAttrOf(c) ((c) & (chtype)A_ATTRIBUTES)
+
+#ifndef MB_LEN_MAX
+#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */
+#endif
#if USE_WIDEC_SUPPORT /* { */
+#define isEILSEQ(status) ((status == (size_t)-1) && (errno == EILSEQ))
+
+#define init_mb(state) memset(&state, 0, sizeof(state))
+
+#if NCURSES_EXT_COLORS
+#define NulColor , 0
+#else
+#define NulColor /* nothing */
+#endif
+
+#define NulChar 0,0,0,0 /* FIXME: see CCHARW_MAX */
#define CharOf(c) ((c).chars[0])
#define AttrOf(c) ((c).attr)
-#define AddAttr(c,a) (c).attr |= a
-#define RemAttr(c,a) (c).attr &= ~(a)
-#define SetAttr(c,a) (c).attr = a
-#define NewChar(ch) { ChAttrOf(ch), { ChCharOf(ch) } }
-#define NewChar2(c,a) { a, { c } }
-#define CharEq(a,b) (!memcmp(&a, &b, sizeof(a)))
-#define SetChar(ch,c,a) do { \
+#define AddAttr(c,a) AttrOf(c) |= ((a) & A_ATTRIBUTES)
+#define RemAttr(c,a) AttrOf(c) &= ~((a) & A_ATTRIBUTES)
+#define SetAttr(c,a) AttrOf(c) = ((a) & A_ATTRIBUTES)
+#define NewChar2(c,a) { a, { c, NulChar } NulColor }
+#define NewChar(ch) NewChar2(ChCharOf(ch), ChAttrOf(ch))
+#define CharEq(a,b) (!memcmp(&(a), &(b), sizeof(a)))
+#define SetChar(ch,c,a) do { \
NCURSES_CH_T *_cp = &ch; \
- memset(_cp,0,sizeof(ch)); _cp->chars[0] = c; _cp->attr = a; \
+ memset(_cp, 0, sizeof(ch)); \
+ _cp->chars[0] = (c); \
+ _cp->attr = (a); \
+ if_EXT_COLORS(SetPair(ch, PAIR_NUMBER(a))); \
} while (0)
#define CHREF(wch) (&wch)
#define CHDEREF(wch) (*wch)
@@ -553,55 +737,76 @@ typedef struct {
#define CARG_CH_T const NCURSES_CH_T *
#define PUTC_DATA char PUTC_buf[MB_LEN_MAX]; int PUTC_i, PUTC_n; \
mbstate_t PUT_st; wchar_t PUTC_ch
-#define PUTC(ch,b) do { if(!isnac(ch)) { \
- memset (&PUT_st, '\0', sizeof (PUT_st)); \
- PUTC_i = 0; \
- do { \
- PUTC_ch = PUTC_i < CCHARW_MAX ? \
- (ch).chars[PUTC_i] : L'\0'; \
+#define PUTC_INIT init_mb (PUT_st)
+#define PUTC(ch,b) do { if(!isWidecExt(ch)) { \
+ if (Charable(ch)) { \
+ fputc(CharOf(ch), b); \
+ TRACE_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_n = wcrtomb(PUTC_buf, \
(ch).chars[PUTC_i], &PUT_st); \
- if (PUTC_ch == L'\0') \
- --PUTC_n; \
- if (PUTC_n <= 0) \
+ if (PUTC_n <= 0) { \
+ if (PUTC_ch && is8bits(PUTC_ch) && PUTC_i == 0) \
+ putc(PUTC_ch,b); \
break; \
+ } \
fwrite(PUTC_buf, (unsigned) PUTC_n, 1, b); \
- ++PUTC_i; \
- } while (PUTC_ch != L'\0'); \
- } } while (0)
+ } \
+ TRACE_OUTCHARS(PUTC_i); \
+ } } } while (0)
-#define BLANK { WA_NORMAL, ' ' }
+#define BLANK { WA_NORMAL, {' '} NulColor }
+#define ZEROS { WA_NORMAL, {'\0'} NulColor }
#define ISBLANK(ch) ((ch).chars[0] == L' ' && (ch).chars[1] == L'\0')
-#define WA_NAC 1
-#define isnac(ch) (AttrOf(ch) & WA_NAC)
+ /*
+ * Wide characters cannot be represented in the A_CHARTEXT mask of
+ * attr_t's but an application might have set a narrow character there.
+ * But even in that case, it would only be a printable character, or
+ * zero. Otherwise we can use those bits to tell if a cell is the
+ * first or extension part of a wide character.
+ */
+#define WidecExt(ch) (AttrOf(ch) & A_CHARTEXT)
+#define isWidecBase(ch) (WidecExt(ch) == 1)
+#define isWidecExt(ch) (WidecExt(ch) > 1 && WidecExt(ch) < 32)
+#define SetWidecExt(dst, ext) AttrOf(dst) &= ~A_CHARTEXT, \
+ AttrOf(dst) |= (ext + 1)
+
#define if_WIDEC(code) code
-#define Charable(ch) (!isnac(ch) && \
- (ch).chars[1] == L'\0' && \
- (wctob(CharOf(ch)) == (char)CharOf(ch)))
+#define Charable(ch) ((SP != 0 && SP->_legacy_coding) \
+ || (AttrOf(ch) & A_ALTCHARSET) \
+ || (!isWidecExt(ch) && \
+ (ch).chars[1] == L'\0' && \
+ _nc_is_charable(CharOf(ch))))
#define L(ch) L ## ch
#else /* }{ */
#define CharOf(c) ChCharOf(c)
#define AttrOf(c) ChAttrOf(c)
-#define AddAttr(c,a) c |= a
-#define RemAttr(c,a) c &= ~(a & A_ATTRIBUTES)
-#define SetAttr(c,a) c = (c & ~A_ATTRIBUTES) | a
+#define AddAttr(c,a) c |= (a)
+#define RemAttr(c,a) c &= ~((a) & A_ATTRIBUTES)
+#define SetAttr(c,a) c = ((c) & ~A_ATTRIBUTES) | (a)
#define NewChar(ch) (ch)
-#define NewChar2(c,a) (c | a)
-#define CharEq(a,b) (a == b)
-#define SetChar(ch,c,a) ch = c | a
+#define NewChar2(c,a) ((c) | (a))
+#define CharEq(a,b) ((a) == (b))
+#define SetChar(ch,c,a) ch = (c) | (a)
#define CHREF(wch) wch
#define CHDEREF(wch) wch
#define ARG_CH_T NCURSES_CH_T
#define CARG_CH_T NCURSES_CH_T
#define PUTC_DATA int data = 0
-#define PUTC(a,b) do { data = CharOf(ch); putc(data,b); } while (0)
+#define PUTC(ch,b) do { data = CharOf(ch); putc(data,b); } while (0)
#define BLANK (' '|A_NORMAL)
+#define ZEROS ('\0'|A_NORMAL)
#define ISBLANK(ch) (CharOf(ch) == ' ')
-#define isnac(ch) (0)
+#define isWidecExt(ch) (0)
#define if_WIDEC(code) /* nothing */
#define L(ch) ch
@@ -616,6 +821,11 @@ typedef struct {
#define CHANGED -1
+#define LEGALYX(w, y, x) \
+ ((w) != 0 && \
+ ((x) >= 0 && (x) <= (w)->_maxx && \
+ (y) >= 0 && (y) <= (w)->_maxy))
+
#define CHANGED_CELL(line,col) \
if (line->firstchar == _NOCHANGE) \
line->firstchar = line->lastchar = col; \
@@ -650,6 +860,23 @@ typedef struct {
#include <nc_alloc.h>
/*
+ * TTY bit definition for converting tabs to spaces.
+ */
+#ifdef TAB3
+# define OFLAGS_TABS TAB3 /* POSIX specifies TAB3 */
+#else
+# ifdef XTABS
+# define OFLAGS_TABS XTABS /* XTABS is usually the "same" */
+# else
+# ifdef OXTABS
+# define OFLAGS_TABS OXTABS /* the traditional BSD equivalent */
+# else
+# define OFLAGS_TABS 0
+# endif
+# endif
+#endif
+
+/*
* Prefixes for call/return points of library function traces. We use these to
* instrument the public functions so that the traces can be easily transformed
* into regression scripts.
@@ -659,80 +886,114 @@ typedef struct {
#define T_RETURN(fmt) "return }" fmt
#ifdef TRACE
+
+#define START_TRACE() \
+ if ((_nc_tracing & TRACE_MAXIMUM) == 0) { \
+ int t = _nc_getenv_num("NCURSES_TRACE"); \
+ if (t >= 0) \
+ trace((unsigned) t); \
+ }
+
#define TR(n, a) if (_nc_tracing & (n)) _tracef a
#define T(a) TR(TRACE_CALLS, a)
#define TPUTS_TRACE(s) _nc_tputs_trace = s;
#define TRACE_RETURN(value,type) return _nc_retrace_##type(value)
-#define returnAttr(code) TRACE_RETURN(code,attr_t)
-#define returnChar(code) TRACE_RETURN(code,chtype)
-#define returnCode(code) TRACE_RETURN(code,int)
-#define returnPtr(code) TRACE_RETURN(code,ptr)
-#define returnSP(code) TRACE_RETURN(code,sp)
-#define returnVoid T((T_RETURN(""))); return
-#define returnWin(code) TRACE_RETURN(code,win)
-extern NCURSES_EXPORT(SCREEN *) _nc_retrace_sp (SCREEN *);
-extern NCURSES_EXPORT(WINDOW *) _nc_retrace_win (WINDOW *);
-extern NCURSES_EXPORT(attr_t) _nc_retrace_attr_t (attr_t);
-extern NCURSES_EXPORT(attr_t) _nc_retrace_chtype (chtype);
-extern NCURSES_EXPORT(char *) _nc_retrace_ptr (char *);
-extern NCURSES_EXPORT(char *) _nc_trace_ttymode(TTY *tty);
-extern NCURSES_EXPORT(char *) _nc_varargs (const char *, va_list);
-extern NCURSES_EXPORT(const char *) _nc_altcharset_name(attr_t, chtype);
-extern NCURSES_EXPORT(int) _nc_retrace_int (int);
-extern NCURSES_EXPORT(void) _nc_fifo_dump (void);
+
+#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 returnChar(code) TRACE_RETURN(code,chtype)
+#define returnCode(code) TRACE_RETURN(code,int)
+#define returnPtr(code) TRACE_RETURN(code,ptr)
+#define returnSP(code) TRACE_RETURN(code,sp)
+#define returnVoid T((T_RETURN(""))); return
+#define returnVoidPtr(code) TRACE_RETURN(code,void_ptr)
+#define returnWin(code) TRACE_RETURN(code,win)
+
+extern NCURSES_EXPORT(NCURSES_BOOL) _nc_retrace_bool (NCURSES_BOOL);
+extern NCURSES_EXPORT(NCURSES_CONST void *) _nc_retrace_cvoid_ptr (NCURSES_CONST void *);
+extern NCURSES_EXPORT(SCREEN *) _nc_retrace_sp (SCREEN *);
+extern NCURSES_EXPORT(WINDOW *) _nc_retrace_win (WINDOW *);
+extern NCURSES_EXPORT(attr_t) _nc_retrace_attr_t (attr_t);
+extern NCURSES_EXPORT(char *) _nc_retrace_ptr (char *);
+extern NCURSES_EXPORT(char *) _nc_trace_ttymode(TTY *tty);
+extern NCURSES_EXPORT(char *) _nc_varargs (const char *, va_list);
+extern NCURSES_EXPORT(chtype) _nc_retrace_chtype (chtype);
+extern NCURSES_EXPORT(const char *) _nc_altcharset_name(attr_t, chtype);
+extern NCURSES_EXPORT(const char *) _nc_retrace_cptr (const char *);
+extern NCURSES_EXPORT(int) _nc_retrace_int (int);
+extern NCURSES_EXPORT(unsigned) _nc_retrace_unsigned (unsigned);
+extern NCURSES_EXPORT(void *) _nc_retrace_void_ptr (void *);
+extern NCURSES_EXPORT(void) _nc_fifo_dump (void);
extern NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace;
-extern NCURSES_EXPORT_VAR(long) _nc_outchars;
-extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
+extern NCURSES_EXPORT_VAR(long) _nc_outchars;
+extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing;
+
#if USE_WIDEC_SUPPORT
extern NCURSES_EXPORT(const char *) _nc_viswbuf2 (int, const wchar_t *);
-extern NCURSES_EXPORT(const char *) _nc_viscbuf2 (int, const cchar_t *, int);
-extern NCURSES_EXPORT(const char *) _nc_viscbuf (const cchar_t *, int);
+extern NCURSES_EXPORT(const char *) _nc_viswbufn (const wchar_t *, int);
#endif
-#else
+
+extern NCURSES_EXPORT(const char *) _nc_viscbuf2 (int, const NCURSES_CH_T *, int);
+extern NCURSES_EXPORT(const char *) _nc_viscbuf (const NCURSES_CH_T *, int);
+
+#else /* !TRACE */
+
+#define START_TRACE() /* nothing */
+
#define T(a)
#define TR(n, a)
#define TPUTS_TRACE(s)
-#define returnAttr(code) return code
-#define returnChar(code) return code
-#define returnCode(code) return code
-#define returnPtr(code) return code
-#define returnSP(code) return code
-#define returnVoid return
-#define returnWin(code) return code
-#endif
+
+#define returnAttr(code) return code
+#define returnBits(code) return code
+#define returnBool(code) return code
+#define returnCPtr(code) return code
+#define returnCVoidPtr(code) return code
+#define returnChar(code) return code
+#define returnCode(code) return code
+#define returnPtr(code) return code
+#define returnSP(code) return code
+#define returnVoid return
+#define returnVoidPtr(code) return code
+#define returnWin(code) return code
+
+#endif /* TRACE/!TRACE */
+
+/*
+ * Return-codes for tgetent() and friends.
+ */
+#define TGETENT_YES 1 /* entry is found */
+#define TGETENT_NO 0 /* entry is not found */
+#define TGETENT_ERR -1 /* an error occurred */
+
+extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
+extern NCURSES_EXPORT(const char *) _nc_visbufn (const char *, int);
#define empty_module(name) \
extern NCURSES_EXPORT(void) name (void); \
NCURSES_EXPORT(void) name (void) { }
-/* used in _nc_visbuf() whether or not we're tracing */
-extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
-
#define ALL_BUT_COLOR ((chtype)~(A_COLOR))
-#define IGNORE_COLOR_OFF FALSE
-#define NONBLANK_ATTR (A_BOLD|A_DIM|A_BLINK)
+#define NONBLANK_ATTR (A_NORMAL|A_BOLD|A_DIM|A_BLINK)
#define XMC_CHANGES(c) ((c) & SP->_xmc_suppress)
-
#define toggle_attr_on(S,at) {\
- if (PAIR_NUMBER(at) > 0)\
+ if (PAIR_NUMBER(at) > 0) {\
(S) = ((S) & ALL_BUT_COLOR) | (at);\
- else\
+ } else {\
(S) |= (at);\
+ }\
TR(TRACE_ATTRS, ("new attribute is %s", _traceattr((S))));}
#define toggle_attr_off(S,at) {\
- if (IGNORE_COLOR_OFF == TRUE) {\
- if (PAIR_NUMBER(at) == 0xff) /* turn off color */\
- (S) &= ~(at);\
- else /* leave color alone */\
- (S) &= ~((at)&ALL_BUT_COLOR);\
+ if (PAIR_NUMBER(at) > 0) {\
+ (S) &= ~(at|A_COLOR);\
} else {\
- if (PAIR_NUMBER(at) > 0x00) /* turn off color */\
- (S) &= ~(at|A_COLOR);\
- else /* leave color alone */\
- (S) &= ~(at);\
+ (S) &= ~(at);\
}\
TR(TRACE_ATTRS, ("new attribute is %s", _traceattr((S))));}
@@ -749,15 +1010,15 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
: ((enter_insert_mode && exit_insert_mode) \
? SP->_smir_cost + SP->_rmir_cost + (SP->_ip_cost * count) \
: ((insert_character != 0) \
- ? (SP->_ich1_cost * count) \
+ ? ((SP->_ich1_cost + SP->_ip_cost) * count) \
: INFINITY)))
#if USE_XMC_SUPPORT
-#define UpdateAttrs(a) if (SP->_current_attr != (a)) { \
- attr_t chg = SP->_current_attr; \
- vidattr((a)); \
+#define UpdateAttrs(c) if (!SameAttrOf(SCREEN_ATTRS(SP), c)) { \
+ attr_t chg = AttrOf(SCREEN_ATTRS(SP)); \
+ VIDATTR(AttrOf(c), GetPair(c)); \
if (magic_cookie_glitch > 0 \
- && XMC_CHANGES((chg ^ SP->_current_attr))) { \
+ && XMC_CHANGES((chg ^ AttrOf(SCREEN_ATTRS(SP))))) { \
T(("%s @%d before glitch %d,%d", \
__FILE__, __LINE__, \
SP->_cursrow, \
@@ -766,8 +1027,21 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *);
} \
}
#else
-#define UpdateAttrs(a) if (SP->_current_attr != (a)) \
- vidattr((a));
+#define UpdateAttrs(c) if (!SameAttrOf(SCREEN_ATTRS(SP), c)) \
+ VIDATTR(AttrOf(c), GetPair(c));
+#endif
+
+/*
+ * Macros to make additional parameter to implement wgetch_events()
+ */
+#ifdef NCURSES_WGETCH_EVENTS
+#define EVENTLIST_0th(param) param
+#define EVENTLIST_1st(param) param
+#define EVENTLIST_2nd(param) , param
+#else
+#define EVENTLIST_0th(param) void
+#define EVENTLIST_1st(param) /* nothing */
+#define EVENTLIST_2nd(param) /* nothing */
#endif
#if NCURSES_EXPANDED && NCURSES_EXT_FUNCS
@@ -790,7 +1064,7 @@ extern NCURSES_EXPORT(int) _nc_InsCharCost (int);
#undef UpdateAttrs
#define UpdateAttrs(c) _nc_UpdateAttrs(c)
-extern NCURSES_EXPORT(void) _nc_UpdateAttrs (chtype);
+extern NCURSES_EXPORT(void) _nc_UpdateAttrs (NCURSES_CH_T);
#else
@@ -802,6 +1076,13 @@ extern NCURSES_EXPORT(void) _nc_expanded (void);
#define getcwd(buf,len) getwd(buf)
#endif
+/* charable.c */
+#if USE_WIDEC_SUPPORT
+extern NCURSES_EXPORT(bool) _nc_is_charable(wchar_t);
+extern NCURSES_EXPORT(int) _nc_to_char(wint_t);
+extern NCURSES_EXPORT(wint_t) _nc_to_widechar(int);
+#endif
+
/* doupdate.c */
#if USE_XMC_SUPPORT
extern NCURSES_EXPORT(void) _nc_do_xmc_glitch (attr_t);
@@ -816,13 +1097,24 @@ extern NCURSES_EXPORT(void) _nc_linedump (void);
extern NCURSES_EXPORT(void) _nc_init_acs (void); /* corresponds to traditional 'init_acs()' */
extern NCURSES_EXPORT(int) _nc_msec_cost (const char *const, int); /* used by 'tack' program */
-/* lib_addstr.c */
+/* lib_addch.c */
#if USE_WIDEC_SUPPORT
+NCURSES_EXPORT(int) _nc_build_wch(WINDOW *win, ARG_CH_T ch);
+#endif
+
+/* lib_addstr.c */
+#if USE_WIDEC_SUPPORT && !defined(USE_TERMLIB)
extern NCURSES_EXPORT(int) _nc_wchstrlen(const cchar_t *);
#endif
+/* lib_color.c */
+extern NCURSES_EXPORT(bool) _nc_reset_colors(void);
+
/* lib_getch.c */
-extern NCURSES_EXPORT(int) _nc_wgetch(WINDOW *, unsigned long *, int);
+extern NCURSES_EXPORT(int) _nc_wgetch(WINDOW *, unsigned long *, int EVENTLIST_2nd(_nc_eventlist *));
+
+/* lib_insch.c */
+extern NCURSES_EXPORT(int) _nc_insert_ch(WINDOW *, chtype);
/* lib_mvcur.c */
#define INFINITY 1000000 /* cost: too high to use */
@@ -842,6 +1134,20 @@ extern NCURSES_EXPORT(int) _nc_has_mouse (void);
/* lib_mvcur.c */
#define INFINITY 1000000 /* cost: too high to use */
+#define BAUDBYTE 9 /* 9 = 7 bits + 1 parity + 1 stop */
+
+/* lib_setup.c */
+extern NCURSES_EXPORT(char *) _nc_get_locale(void);
+extern NCURSES_EXPORT(int) _nc_unicode_locale(void);
+extern NCURSES_EXPORT(int) _nc_locale_breaks_acs(void);
+extern NCURSES_EXPORT(int) _nc_setupterm(NCURSES_CONST char *, int, int *, bool);
+
+/* lib_tstp.c */
+#if USE_SIGWINCH
+extern NCURSES_EXPORT(int) _nc_handle_sigwinch(int);
+#else
+#define _nc_handle_sigwinch(a) /* nothing */
+#endif
/* lib_wacs.c */
#if USE_WIDEC_SUPPORT
@@ -849,9 +1155,10 @@ extern NCURSES_EXPORT(void) _nc_init_wacs(void);
#endif
typedef struct {
- char *s_head;
- char *s_tail;
- size_t s_size;
+ char *s_head; /* beginning of the string (may be null) */
+ char *s_tail; /* end of the string (may be null) */
+ size_t s_size; /* current remaining size available */
+ size_t s_init; /* total size available */
} string_desc;
/* strings.c */
@@ -861,16 +1168,6 @@ extern NCURSES_EXPORT(string_desc *) _nc_str_copy (string_desc *, string_desc *)
extern NCURSES_EXPORT(bool) _nc_safe_strcat (string_desc *, const char *);
extern NCURSES_EXPORT(bool) _nc_safe_strcpy (string_desc *, const char *);
-extern NCURSES_EXPORT(void) _nc_mvcur_init (void);
-extern NCURSES_EXPORT(void) _nc_mvcur_resume (void);
-extern NCURSES_EXPORT(void) _nc_mvcur_wrap (void);
-
-extern NCURSES_EXPORT(int) _nc_scrolln (int, int, int, int);
-
-extern NCURSES_EXPORT(void) _nc_screen_init (void);
-extern NCURSES_EXPORT(void) _nc_screen_resume (void);
-extern NCURSES_EXPORT(void) _nc_screen_wrap (void);
-
#if !HAVE_STRSTR
#define strstr _nc_strstr
extern NCURSES_EXPORT(char *) _nc_strstr (const char *, const char *);
@@ -880,42 +1177,63 @@ extern NCURSES_EXPORT(char *) _nc_strstr (const char *, const char *);
extern NCURSES_EXPORT(char *) _nc_printf_string (const char *, va_list);
/* tries.c */
-extern NCURSES_EXPORT(void) _nc_add_to_try (struct tries **, const char *, unsigned short);
-extern NCURSES_EXPORT(char *) _nc_expand_try (struct tries *, unsigned short, int *, size_t);
-extern NCURSES_EXPORT(int) _nc_remove_key (struct tries **, unsigned short);
-extern NCURSES_EXPORT(int) _nc_remove_string (struct tries **, char *);
+extern NCURSES_EXPORT(void) _nc_add_to_try (struct tries **, const char *, unsigned);
+extern NCURSES_EXPORT(char *) _nc_expand_try (struct tries *, unsigned, int *, size_t);
+extern NCURSES_EXPORT(int) _nc_remove_key (struct tries **, unsigned);
+extern NCURSES_EXPORT(int) _nc_remove_string (struct tries **, const char *);
/* elsewhere ... */
+extern NCURSES_EXPORT(ENTRY *) _nc_delink_entry(ENTRY *, TERMTYPE *);
extern NCURSES_EXPORT(WINDOW *) _nc_makenew (int, int, int, int, int);
-extern NCURSES_EXPORT(char *) _nc_home_terminfo (void);
extern NCURSES_EXPORT(char *) _nc_trace_buf (int, size_t);
-extern NCURSES_EXPORT(NCURSES_CH_T) _nc_render (WINDOW *, NCURSES_CH_T);
-extern NCURSES_EXPORT(int) _nc_access (const char *, int);
+extern NCURSES_EXPORT(char *) _nc_trace_bufcat (int, const char *);
+extern NCURSES_EXPORT(int) _nc_access (const char *, int);
extern NCURSES_EXPORT(int) _nc_baudrate (int);
extern NCURSES_EXPORT(int) _nc_freewin (WINDOW *);
extern NCURSES_EXPORT(int) _nc_getenv_num (const char *);
extern NCURSES_EXPORT(int) _nc_keypad (bool);
extern NCURSES_EXPORT(int) _nc_ospeed (int);
extern NCURSES_EXPORT(int) _nc_outch (int);
-extern NCURSES_EXPORT(int) _nc_setupscreen (short, short const, FILE *);
-extern NCURSES_EXPORT(int) _nc_timed_wait (int, int, int *);
-extern NCURSES_EXPORT(int) _nc_waddch_nosync (WINDOW *, const NCURSES_CH_T);
-extern NCURSES_EXPORT(void) _nc_do_color (int, int, bool, int (*)(int));
+extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE *const);
+extern NCURSES_EXPORT(int) _nc_setupscreen (int, int, FILE *, bool, int);
+extern NCURSES_EXPORT(int) _nc_timed_wait(int, int, int * EVENTLIST_2nd(_nc_eventlist *));
+extern NCURSES_EXPORT(void) _nc_do_color (short, short, bool, int (*)(int));
extern NCURSES_EXPORT(void) _nc_flush (void);
+extern NCURSES_EXPORT(void) _nc_free_entry(ENTRY *, TERMTYPE *);
extern NCURSES_EXPORT(void) _nc_freeall (void);
extern NCURSES_EXPORT(void) _nc_hash_map (void);
extern NCURSES_EXPORT(void) _nc_init_keytry (void);
extern NCURSES_EXPORT(void) _nc_keep_tic_dir (const char *);
extern NCURSES_EXPORT(void) _nc_make_oldhash (int i);
-extern NCURSES_EXPORT(void) _nc_outstr (const char *str);
extern NCURSES_EXPORT(void) _nc_scroll_oldhash (int n, int top, int bot);
extern NCURSES_EXPORT(void) _nc_scroll_optimize (void);
-extern NCURSES_EXPORT(void) _nc_scroll_window (WINDOW *, int const, short const, short const, NCURSES_CH_T);
extern NCURSES_EXPORT(void) _nc_set_buffer (FILE *, bool);
extern NCURSES_EXPORT(void) _nc_signal_handler (bool);
extern NCURSES_EXPORT(void) _nc_synchook (WINDOW *);
extern NCURSES_EXPORT(void) _nc_trace_tries (struct tries *);
+#if NO_LEAKS
+extern NCURSES_EXPORT(void) _nc_alloc_entry_leaks(void);
+extern NCURSES_EXPORT(void) _nc_captoinfo_leaks(void);
+extern NCURSES_EXPORT(void) _nc_comp_scan_leaks(void);
+extern NCURSES_EXPORT(void) _nc_keyname_leaks(void);
+extern NCURSES_EXPORT(void) _nc_tgetent_leaks(void);
+#endif
+
+#ifndef USE_TERMLIB
+extern NCURSES_EXPORT(NCURSES_CH_T) _nc_render (WINDOW *, NCURSES_CH_T);
+extern NCURSES_EXPORT(int) _nc_waddch_nosync (WINDOW *, const NCURSES_CH_T);
+extern NCURSES_EXPORT(void) _nc_scroll_window (WINDOW *, int const, NCURSES_SIZE_T const, NCURSES_SIZE_T const, NCURSES_CH_T);
+#endif
+
+#if USE_WIDEC_SUPPORT && !defined(USE_TERMLIB)
+#ifdef linux
+extern NCURSES_EXPORT(size_t) _nc_wcrtomb (char *, wchar_t, mbstate_t *);
+#else
+#define _nc_wcrtomb(s,wc,ps) wcrtomb(s,wc,ps)
+#endif
+#endif
+
#if USE_SIZECHANGE
extern NCURSES_EXPORT(void) _nc_update_screensize (void);
#endif
@@ -926,6 +1244,13 @@ extern NCURSES_EXPORT(void) _nc_resize_margins (WINDOW *);
#define _nc_resize_margins(wp) /* nothing */
#endif
+#ifdef NCURSES_WGETCH_EVENTS
+extern NCURSES_EXPORT(int) _nc_eventlist_timeout(_nc_eventlist *);
+#else
+#define wgetch_events(win, evl) wgetch(win)
+#define wgetnstr_events(win, str, maxlen, evl) wgetnstr(win, str, maxlen)
+#endif
+
/*
* Not everyone has vsscanf(), but we'd like to use it for scanw().
*/
@@ -938,9 +1263,7 @@ extern NCURSES_EXPORT_VAR(int *) _nc_oldnums;
#define USE_SETBUF_0 0
-#define NC_BUFFERED(flag) \
- if ((SP->_buffered != 0) != flag) \
- _nc_set_buffer(SP->_ofp, flag)
+#define NC_BUFFERED(flag) _nc_set_buffer(SP->_ofp, flag)
#define NC_OUTPUT ((SP != 0) ? SP->_ofp : stdout)
@@ -989,6 +1312,12 @@ extern NCURSES_EXPORT(int) _nc_slk_initialize (WINDOW *, int);
extern NCURSES_EXPORT(int) _nc_ripoffline (int line, int (*init)(WINDOW *,int));
+/*
+ * Common error messages
+ */
+#define MSG_NO_MEMORY "Out of memory"
+#define MSG_NO_INPUTS "Premature EOF"
+
#ifdef __cplusplus
}
#endif
diff --git a/contrib/ncurses/ncurses/llib-lncurses b/contrib/ncurses/ncurses/llib-lncurses
index 1a6e5cf109ba..594c72cd66f4 100644
--- a/contrib/ncurses/ncurses/llib-lncurses
+++ b/contrib/ncurses/ncurses/llib-lncurses
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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-2001,2002 *
+ * Author: Thomas E. Dickey 1996-2006 *
****************************************************************************/
/* LINTLIBRARY */
@@ -99,14 +99,14 @@ int wechochar(
#undef waddnstr
int waddnstr(
WINDOW *win,
- const char *const astr,
+ const char *astr,
int n)
{ return(*(int *)0); }
#undef waddchnstr
int waddchnstr(
WINDOW *win,
- const chtype *const astr,
+ const chtype *astr,
int n)
{ return(*(int *)0); }
@@ -127,7 +127,7 @@ void wbkgdset(
#undef wbkgd
int wbkgd(
WINDOW *win,
- const chtype ch)
+ chtype ch)
{ return(*(int *)0); }
/* ./base/lib_box.c */
@@ -194,6 +194,10 @@ int COLOR_PAIRS;
#undef COLORS
int COLORS;
+#undef _nc_reset_colors
+NCURSES_BOOL _nc_reset_colors(void)
+ { return(*(NCURSES_BOOL *)0); }
+
#undef start_color
int start_color(void)
{ return(*(int *)0); }
@@ -238,8 +242,8 @@ int pair_content(
#undef _nc_do_color
void _nc_do_color(
- int old_pair,
- int pair,
+ short old_pair,
+ short pair,
NCURSES_BOOL reverse,
int (*outc)(
int p1))
@@ -912,7 +916,7 @@ int vline(
#undef vw_printw
int vw_printw(
WINDOW *a1,
- char *a2,
+ const char *a2,
va_list z)
{ return(*(int *)0); }
@@ -1013,11 +1017,51 @@ int wstandend(
WINDOW *z)
{ return(*(int *)0); }
+#undef getcurx
+int getcurx(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getcury
+int getcury(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getbegx
+int getbegx(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getbegy
+int getbegy(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getmaxx
+int getmaxx(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getmaxy
+int getmaxy(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getparx
+int getparx(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getpary
+int getpary(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
#undef mouse_trafo
NCURSES_BOOL mouse_trafo(
int *a1,
int *a2,
- NCURSES_BOOL z)
+ NCURSES_BOOL z)
{ return(*(NCURSES_BOOL *)0); }
/* ./base/lib_getch.c */
@@ -1082,6 +1126,12 @@ WINDOW *initscr(void)
/* ./base/lib_insch.c */
+#undef _nc_insert_ch
+int _nc_insert_ch(
+ WINDOW *win,
+ chtype ch)
+ { return(*(int *)0); }
+
#undef winsch
int winsch(
WINDOW *win,
@@ -1096,7 +1146,7 @@ int winsdelln(
int n)
{ return(*(int *)0); }
-/* ./base/lib_insstr.c */
+/* ./base/lib_insnstr.c */
#undef winsnstr
int winsnstr(
@@ -1225,6 +1275,10 @@ int mvwin(
void filter(void)
{ /* void */ }
+#undef nofilter
+void nofilter(void)
+ { /* void */ }
+
#undef newterm
SCREEN *newterm(
char *name,
@@ -1360,14 +1414,14 @@ int pechochar(
#undef printw
int printw(
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
#undef wprintw
int wprintw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -1375,7 +1429,7 @@ int wprintw(
int mvprintw(
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -1384,14 +1438,14 @@ int mvwprintw(
WINDOW *win,
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
#undef vwprintw
int vwprintw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
va_list argp)
{ return(*(int *)0); }
@@ -1466,8 +1520,6 @@ int mvwscanw(
/* ./base/lib_screen.c */
-#include <time.h>
-
#undef getwin
WINDOW *getwin(
FILE *filep)
@@ -1547,9 +1599,11 @@ void delscreen(
#undef _nc_setupscreen
int _nc_setupscreen(
- short slines,
- short const scolumns,
- FILE *output)
+ int slines,
+ int scolumns,
+ FILE *output,
+ NCURSES_BOOL filtered,
+ int slk_format)
{ return(*(int *)0); }
#undef _nc_ripoffline
@@ -1692,46 +1746,6 @@ int wtouchln(
int changed)
{ return(*(int *)0); }
-/* ./trace/lib_traceatr.c */
-
-#undef _traceattr2
-char *_traceattr2(
- int bufnum,
- attr_t newmode)
- { return(*(char **)0); }
-
-#undef _traceattr
-char *_traceattr(
- attr_t newmode)
- { return(*(char **)0); }
-
-#undef _nc_retrace_attr_t
-attr_t _nc_retrace_attr_t(
- attr_t code)
- { return(*(attr_t *)0); }
-
-#undef _nc_altcharset_name
-const char *_nc_altcharset_name(
- attr_t attr,
- chtype ch)
- { return(*(const char **)0); }
-
-#undef _tracechtype2
-char *_tracechtype2(
- int bufnum,
- chtype ch)
- { return(*(char **)0); }
-
-#undef _tracechtype
-char *_tracechtype(
- chtype ch)
- { return(*(char **)0); }
-
-#undef _nc_retrace_chtype
-attr_t _nc_retrace_chtype(
- attr_t code)
- { return(*(attr_t *)0); }
-
/* ./trace/lib_tracedmp.c */
#undef _tracedump
@@ -1749,7 +1763,6 @@ char *_tracemouse(
/* ./tty/lib_tstp.c */
-#include <signal.h>
#include <SigAction.h>
#undef _nc_signal_handler
@@ -1883,11 +1896,6 @@ char *_nc_printf_string(
int doupdate(void)
{ return(*(int *)0); }
-#undef _nc_outstr
-void _nc_outstr(
- const char *str)
- { /* void */ }
-
#undef _nc_scrolln
int _nc_scrolln(
int n,
@@ -1931,25 +1939,19 @@ char *_nc_varargs(
void _nc_memmove(void)
{ /* void */ }
-/* ./base/sigaction.c */
-
-#undef _nc_sigaction
-void _nc_sigaction(void)
- { /* void */ }
-
/* ./base/vsscanf.c */
#undef _nc_vsscanf
void _nc_vsscanf(void)
{ /* void */ }
-/* ./base/define_key.c */
+/* ./base/lib_freeall.c */
-#undef define_key
-int define_key(
- char *str,
- int keycode)
- { return(*(int *)0); }
+#include <term_entry.h>
+
+#undef _nc_freeall
+void _nc_freeall(void)
+ { /* void */ }
/* ./expanded.c */
@@ -1980,20 +1982,11 @@ void _nc_UpdateAttrs(
chtype c)
{ /* void */ }
-/* ./base/keybound.c */
-
-#undef keybound
-char *keybound(
- int code,
- int count)
- { return(*(char **)0); }
+/* ./base/legacy_coding.c */
-/* ./base/keyok.c */
-
-#undef keyok
-int keyok(
- int c,
- NCURSES_BOOL flag)
+#undef use_legacy_coding
+int use_legacy_coding(
+ int level)
{ return(*(int *)0); }
/* ./base/lib_dft_fgbg.c */
@@ -2008,14 +2001,6 @@ int assume_default_colors(
int bg)
{ return(*(int *)0); }
-/* ./base/lib_freeall.c */
-
-#include <term_entry.h>
-
-#undef _nc_freeall
-void _nc_freeall(void)
- { /* void */ }
-
/* ./tinfo/lib_print.c */
#undef mcprint
@@ -2051,34 +2036,6 @@ void _nc_trace_xnames(
TERMTYPE *tp)
{ /* void */ }
-/* ./base/tries.c */
-
-#undef _nc_expand_try
-char *_nc_expand_try(
- struct tries *tree,
- unsigned short code,
- int *count,
- size_t len)
- { return(*(char **)0); }
-
-#undef _nc_remove_key
-int _nc_remove_key(
- struct tries **tree,
- unsigned short code)
- { return(*(int *)0); }
-
-#undef _nc_remove_string
-int _nc_remove_string(
- struct tries **tree,
- char *string)
- { return(*(int *)0); }
-
-/* ./base/version.c */
-
-#undef curses_version
-const char *curses_version(void)
- { return(*(const char **)0); }
-
/* ./base/wresize.c */
#undef wresize
@@ -2090,11 +2047,24 @@ int wresize(
/* ./tinfo/access.c */
+#include <sys/stat.h>
+#include <nc_alloc.h>
+
#undef _nc_rootname
char *_nc_rootname(
char *path)
{ return(*(char **)0); }
+#undef _nc_is_abs_path
+NCURSES_BOOL _nc_is_abs_path(
+ const char *path)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_pathlast
+unsigned _nc_pathlast(
+ const char *path)
+ { return(*(unsigned *)0); }
+
#undef _nc_basename
char *_nc_basename(
char *path)
@@ -2106,6 +2076,16 @@ int _nc_access(
int mode)
{ return(*(int *)0); }
+#undef _nc_is_dir_path
+NCURSES_BOOL _nc_is_dir_path(
+ const char *path)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_is_file_path
+NCURSES_BOOL _nc_is_file_path(
+ const char *path)
+ { return(*(NCURSES_BOOL *)0); }
+
#undef _nc_env_access
int _nc_env_access(void)
{ return(*(int *)0); }
@@ -2116,7 +2096,7 @@ int _nc_env_access(void)
void _nc_add_to_try(
struct tries **tree,
const char *str,
- unsigned short code)
+ unsigned code)
{ /* void */ }
/* ./tinfo/alloc_entry.c */
@@ -2168,14 +2148,14 @@ void _nc_copy_termtype(
char *_nc_captoinfo(
const char *cap,
const char *s,
- int const parametrized)
+ int const parameterized)
{ return(*(char **)0); }
#undef _nc_infotocap
char *_nc_infotocap(
const char *cap,
const char *str,
- int const parametrized)
+ int const parameterized)
{ return(*(char **)0); }
/* ./codes.c */
@@ -2219,6 +2199,10 @@ int _nc_curr_line;
#undef _nc_curr_col
int _nc_curr_col;
+#undef _nc_get_source
+const char *_nc_get_source(void)
+ { return(*(const char **)0); }
+
#undef _nc_set_source
void _nc_set_source(
const char *const name)
@@ -2280,6 +2264,10 @@ struct name_table_entry const *_nc_find_type_entry(
/* ./tinfo/comp_parse.c */
+#undef _nc_check_termtype2
+void (*_nc_check_termtype2)(
+ TERMTYPE *p1,
+ NCURSES_BOOL p2);
#undef _nc_check_termtype
void (*_nc_check_termtype)(
TERMTYPE *p1);
@@ -2293,6 +2281,18 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
+#undef _nc_delink_entry
+ENTRY *_nc_delink_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_free_entry
+void _nc_free_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { /* void */ }
+
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
char *n1,
@@ -2309,6 +2309,12 @@ void _nc_read_entry_source(
ENTRY *p1))
{ /* void */ }
+#undef _nc_resolve_uses2
+int _nc_resolve_uses2(
+ NCURSES_BOOL fullresolve,
+ NCURSES_BOOL literal)
+ { return(*(int *)0); }
+
#undef _nc_resolve_uses
int _nc_resolve_uses(
NCURSES_BOOL fullresolve)
@@ -2331,16 +2337,22 @@ struct token _nc_curr_token;
#undef _nc_disable_period
NCURSES_BOOL _nc_disable_period;
+#undef _nc_reset_input
+void _nc_reset_input(
+ FILE *fp,
+ char *buf)
+ { /* void */ }
+
#undef _nc_get_token
int _nc_get_token(
NCURSES_BOOL silent)
{ return(*(int *)0); }
#undef _nc_trans_string
-char _nc_trans_string(
+int _nc_trans_string(
char *ptr,
char *last)
- { return(*(char *)0); }
+ { return(*(int *)0); }
#undef _nc_push_token
void _nc_push_token(
@@ -2352,10 +2364,32 @@ void _nc_panic_mode(
char ch)
{ /* void */ }
-#undef _nc_reset_input
-void _nc_reset_input(
- FILE *fp,
- char *buf)
+/* ./tinfo/db_iterator.c */
+
+#undef _nc_tic_dir
+const char *_nc_tic_dir(
+ const char *path)
+ { return(*(const char **)0); }
+
+#undef _nc_keep_tic_dir
+void _nc_keep_tic_dir(
+ const char *path)
+ { /* void */ }
+
+#undef _nc_last_db
+void _nc_last_db(void)
+ { /* void */ }
+
+#undef _nc_next_db
+const char *_nc_next_db(
+ DBDIRS *state,
+ int *offset)
+ { return(*(const char **)0); }
+
+#undef _nc_first_db
+void _nc_first_db(
+ DBDIRS *state,
+ int *offset)
{ /* void */ }
/* ./tinfo/doalloc.c */
@@ -2419,7 +2453,7 @@ void _nc_init_keytry(void)
/* ./tinfo/lib_acs.c */
#undef acs_map
-chtype acs_map[128 ];
+chtype acs_map[128];
#undef _nc_init_acs
void _nc_init_acs(void)
@@ -2430,8 +2464,8 @@ void _nc_init_acs(void)
#include <termcap.h>
struct speed {
- int s;
- int sp;
+ int s;
+ int sp;
};
#undef _nc_baudrate
@@ -2518,6 +2552,8 @@ char *longname(void)
/* ./tinfo/lib_napms.c */
+#include <time.h>
+
#undef napms
int napms(
int ms)
@@ -2626,13 +2662,12 @@ int intrflush(
/* ./tinfo/lib_setup.c */
+#include <locale.h>
#include <sys/ioctl.h>
+#include <langinfo.h>
-#undef use_env
-void use_env(
- NCURSES_BOOL f)
- { /* void */ }
-
+#undef ttytype
+char ttytype[256];
#undef LINES
int LINES;
#undef COLS
@@ -2640,12 +2675,39 @@ int COLS;
#undef TABSIZE
int TABSIZE;
+#undef _nc_handle_sigwinch
+int _nc_handle_sigwinch(
+ int enable)
+ { return(*(int *)0); }
+
+#undef use_env
+void use_env(
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef _nc_update_screensize
void _nc_update_screensize(void)
{ /* void */ }
-#undef ttytype
-char ttytype[256 ];
+#undef _nc_get_locale
+char *_nc_get_locale(void)
+ { return(*(char **)0); }
+
+#undef _nc_unicode_locale
+int _nc_unicode_locale(void)
+ { return(*(int *)0); }
+
+#undef _nc_locale_breaks_acs
+int _nc_locale_breaks_acs(void)
+ { return(*(int *)0); }
+
+#undef _nc_setupterm
+int _nc_setupterm(
+ char *tname,
+ int Filedes,
+ int *errret,
+ NCURSES_BOOL reuse)
+ { return(*(int *)0); }
#undef setupterm
int setupterm(
@@ -2725,15 +2787,22 @@ char *tigetstr(
typedef struct {
union {
- unsigned int num;
- char *str;
+ int num;
+ char *str;
} data;
- NCURSES_BOOL num_type;
+ NCURSES_BOOL num_type;
} stack_frame;
#undef _nc_tparm_err
int _nc_tparm_err;
+#undef _nc_tparm_analyze
+int _nc_tparm_analyze(
+ const char *string,
+ char *p_is_s[9],
+ int *popcount)
+ { return(*(int *)0); }
+
#undef tparm
char *tparm(
char *string,
@@ -2796,16 +2865,41 @@ void _tracef(
...)
{ /* void */ }
+#undef _nc_retrace_bool
+NCURSES_BOOL _nc_retrace_bool(
+ NCURSES_BOOL code)
+ { return(*(NCURSES_BOOL *)0); }
+
#undef _nc_retrace_int
int _nc_retrace_int(
int code)
{ return(*(int *)0); }
+#undef _nc_retrace_unsigned
+unsigned _nc_retrace_unsigned(
+ unsigned code)
+ { return(*(unsigned *)0); }
+
#undef _nc_retrace_ptr
char *_nc_retrace_ptr(
char *code)
{ return(*(char **)0); }
+#undef _nc_retrace_cptr
+const char *_nc_retrace_cptr(
+ const char *code)
+ { return(*(const char **)0); }
+
+#undef _nc_retrace_cvoid_ptr
+void *_nc_retrace_cvoid_ptr(
+ void *code)
+ { return(*(void **)0); }
+
+#undef _nc_retrace_void_ptr
+void *_nc_retrace_void_ptr(
+ void *code)
+ { return(*(void **)0); }
+
#undef _nc_retrace_sp
SCREEN *_nc_retrace_sp(
SCREEN *code)
@@ -2816,6 +2910,46 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+/* ./trace/lib_traceatr.c */
+
+#undef _traceattr2
+char *_traceattr2(
+ int bufnum,
+ chtype newmode)
+ { return(*(char **)0); }
+
+#undef _traceattr
+char *_traceattr(
+ attr_t newmode)
+ { return(*(char **)0); }
+
+#undef _nc_retrace_attr_t
+attr_t _nc_retrace_attr_t(
+ attr_t code)
+ { return(*(attr_t *)0); }
+
+#undef _nc_altcharset_name
+const char *_nc_altcharset_name(
+ attr_t attr,
+ chtype ch)
+ { return(*(const char **)0); }
+
+#undef _tracechtype2
+char *_tracechtype2(
+ int bufnum,
+ chtype ch)
+ { return(*(char **)0); }
+
+#undef _tracechtype
+char *_tracechtype(
+ chtype ch)
+ { return(*(char **)0); }
+
+#undef _nc_retrace_chtype
+chtype _nc_retrace_chtype(
+ chtype code)
+ { return(*(chtype *)0); }
+
/* ./trace/lib_tracebits.c */
typedef struct {
@@ -2823,6 +2957,11 @@ typedef struct {
const char *name;
} BITNAMES;
+#undef _nc_trace_ttymode
+char *_nc_trace_ttymode(
+ struct termios *tty)
+ { return(*(char **)0); }
+
#undef _nc_tracebits
char *_nc_tracebits(void)
{ return(*(char **)0); }
@@ -2930,15 +3069,14 @@ typedef struct {
/* ./tinfo/read_entry.c */
-#undef _nc_tic_dir
-const char *_nc_tic_dir(
- const char *path)
- { return(*(const char **)0); }
+#include <hashed_db.h>
-#undef _nc_keep_tic_dir
-void _nc_keep_tic_dir(
- const char *path)
- { /* void */ }
+#undef _nc_read_termtype
+int _nc_read_termtype(
+ TERMTYPE *ptr,
+ char *buffer,
+ int limit)
+ { return(*(int *)0); }
#undef _nc_read_file_entry
int _nc_read_file_entry(
@@ -2948,13 +3086,15 @@ int _nc_read_file_entry(
#undef _nc_read_entry
int _nc_read_entry(
- const char *const tn,
+ const char *const name,
char *const filename,
TERMTYPE *const tp)
{ return(*(int *)0); }
/* ./tinfo/read_termcap.c */
+#include <sys/types.h>
+
#undef _nc_read_termcap_entry
int _nc_read_termcap_entry(
const char *const tn,
@@ -3015,6 +3155,12 @@ char *_nc_trace_buf(
size_t want)
{ return(*(char **)0); }
+#undef _nc_trace_bufcat
+char *_nc_trace_bufcat(
+ int bufnum,
+ const char *value)
+ { return(*(char **)0); }
+
/* ./trace/trace_tries.c */
#undef _nc_trace_tries
@@ -3022,6 +3168,35 @@ void _nc_trace_tries(
struct tries *tree)
{ /* void */ }
+/* ./base/tries.c */
+
+#undef _nc_expand_try
+char *_nc_expand_try(
+ struct tries *tree,
+ unsigned code,
+ int *count,
+ size_t len)
+ { return(*(char **)0); }
+
+#undef _nc_remove_key
+int _nc_remove_key(
+ struct tries **tree,
+ unsigned code)
+ { return(*(int *)0); }
+
+#undef _nc_remove_string
+int _nc_remove_string(
+ struct tries **tree,
+ const char *string)
+ { return(*(int *)0); }
+
+/* ./tinfo/trim_sgr0.c */
+
+#undef _nc_trim_sgr0
+char *_nc_trim_sgr0(
+ TERMTYPE *tp)
+ { return(*(char **)0); }
+
/* ./unctrl.c */
#undef unctrl
@@ -3042,6 +3217,25 @@ const char *_nc_visbuf(
const char *buf)
{ return(*(const char **)0); }
+#undef _nc_visbufn
+const char *_nc_visbufn(
+ const char *buf,
+ int len)
+ { return(*(const char **)0); }
+
+#undef _nc_viscbuf2
+const char *_nc_viscbuf2(
+ int bufnum,
+ const chtype *buf,
+ int len)
+ { return(*(const char **)0); }
+
+#undef _nc_viscbuf
+const char *_nc_viscbuf(
+ const chtype *buf,
+ int len)
+ { return(*(const char **)0); }
+
/* ./tinfo/write_entry.c */
#undef _nc_set_writedir
@@ -3057,3 +3251,46 @@ void _nc_write_entry(
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
+
+/* ./base/define_key.c */
+
+#undef define_key
+int define_key(
+ const char *str,
+ int keycode)
+ { return(*(int *)0); }
+
+/* ./tinfo/hashed_db.c */
+
+#undef _nc_hashed_db
+void _nc_hashed_db(void)
+ { /* void */ }
+
+/* ./base/key_defined.c */
+
+#undef key_defined
+int key_defined(
+ const char *str)
+ { return(*(int *)0); }
+
+/* ./base/keybound.c */
+
+#undef keybound
+char *keybound(
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+/* ./base/keyok.c */
+
+#undef keyok
+int keyok(
+ int c,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./base/version.c */
+
+#undef curses_version
+const char *curses_version(void)
+ { return(*(const char **)0); }
diff --git a/contrib/ncurses/ncurses/llib-lncursesw b/contrib/ncurses/ncurses/llib-lncursesw
index ffb0af650c61..86ef2845d1ff 100644
--- a/contrib/ncurses/ncurses/llib-lncursesw
+++ b/contrib/ncurses/ncurses/llib-lncursesw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2005,2006 Free 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,2002 *
+ * Author: Thomas E. Dickey 2001-2006 *
****************************************************************************/
/* LINTLIBRARY */
@@ -76,6 +76,12 @@ cchar_t _nc_render(
cchar_t ch)
{ return(*(cchar_t *)0); }
+#undef _nc_build_wch
+int _nc_build_wch(
+ WINDOW *win,
+ cchar_t *ch)
+ { return(*(int *)0); }
+
#undef _nc_waddch_nosync
int _nc_waddch_nosync(
WINDOW *win,
@@ -94,31 +100,19 @@ int wechochar(
const chtype ch)
{ return(*(int *)0); }
-#undef wadd_wch
-int wadd_wch(
- WINDOW *win,
- const cchar_t *wch)
- { return(*(int *)0); }
-
-#undef wecho_wchar
-int wecho_wchar(
- WINDOW *win,
- const cchar_t *wch)
- { return(*(int *)0); }
-
/* ./base/lib_addstr.c */
#undef waddnstr
int waddnstr(
WINDOW *win,
- const char *const astr,
+ const char *astr,
int n)
{ return(*(int *)0); }
#undef waddchnstr
int waddchnstr(
WINDOW *win,
- const chtype *const astr,
+ const chtype *astr,
int n)
{ return(*(int *)0); }
@@ -130,7 +124,7 @@ int _nc_wchstrlen(
#undef wadd_wchnstr
int wadd_wchnstr(
WINDOW *win,
- const cchar_t *const astr,
+ const cchar_t *astr,
int n)
{ return(*(int *)0); }
@@ -170,7 +164,7 @@ int wbkgrnd(
#undef wbkgd
int wbkgd(
WINDOW *win,
- const chtype ch)
+ chtype ch)
{ return(*(int *)0); }
/* ./base/lib_box.c */
@@ -237,6 +231,10 @@ int COLOR_PAIRS;
#undef COLORS
int COLORS;
+#undef _nc_reset_colors
+NCURSES_BOOL _nc_reset_colors(void)
+ { return(*(NCURSES_BOOL *)0); }
+
#undef start_color
int start_color(void)
{ return(*(int *)0); }
@@ -281,8 +279,8 @@ int pair_content(
#undef _nc_do_color
void _nc_do_color(
- int old_pair,
- int pair,
+ short old_pair,
+ short pair,
NCURSES_BOOL reverse,
int (*outc)(
int p1))
@@ -958,13 +956,6 @@ int untouchwin(
WINDOW *z)
{ return(*(int *)0); }
-#undef vid_attr
-int vid_attr(
- attr_t a1,
- short a2,
- void *z)
- { return(*(int *)0); }
-
#undef vline
int vline(
chtype a1,
@@ -974,7 +965,7 @@ int vline(
#undef vw_printw
int vw_printw(
WINDOW *a1,
- char *a2,
+ const char *a2,
va_list z)
{ return(*(int *)0); }
@@ -1075,6 +1066,46 @@ int wstandend(
WINDOW *z)
{ return(*(int *)0); }
+#undef getcurx
+int getcurx(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getcury
+int getcury(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getbegx
+int getbegx(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getbegy
+int getbegy(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getmaxx
+int getmaxx(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getmaxy
+int getmaxy(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getparx
+int getparx(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
+#undef getpary
+int getpary(
+ const WINDOW *z)
+ { return(*(int *)0); }
+
#undef add_wch
int add_wch(
const cchar_t *z)
@@ -1138,12 +1169,12 @@ int echo_wchar(
#undef get_wch
int get_wch(
- wint_t *z)
+ wint_t *z)
{ return(*(int *)0); }
#undef get_wstr
int get_wstr(
- wint_t *z)
+ wint_t *z)
{ return(*(int *)0); }
#undef getbkgrnd
@@ -1153,7 +1184,7 @@ int getbkgrnd(
#undef getn_wstr
int getn_wstr(
- wint_t *a1,
+ wint_t *a1,
int z)
{ return(*(int *)0); }
@@ -1181,7 +1212,7 @@ int in_wchstr(
#undef innwstr
int innwstr(
- wchar_t *a1,
+ wchar_t *a1,
int z)
{ return(*(int *)0); }
@@ -1203,7 +1234,7 @@ int ins_wstr(
#undef inwstr
int inwstr(
- wchar_t *z)
+ wchar_t *z)
{ return(*(int *)0); }
#undef mvadd_wch
@@ -1247,21 +1278,21 @@ int mvaddwstr(
int mvget_wch(
int a1,
int a2,
- wint_t *z)
+ wint_t *z)
{ return(*(int *)0); }
#undef mvget_wstr
int mvget_wstr(
int a1,
int a2,
- wint_t *z)
+ wint_t *z)
{ return(*(int *)0); }
#undef mvgetn_wstr
int mvgetn_wstr(
int a1,
int a2,
- wint_t *a3,
+ wint_t *a3,
int z)
{ return(*(int *)0); }
@@ -1299,7 +1330,7 @@ int mvin_wchstr(
int mvinnwstr(
int a1,
int a2,
- wchar_t *a3,
+ wchar_t *a3,
int z)
{ return(*(int *)0); }
@@ -1329,7 +1360,7 @@ int mvins_wstr(
int mvinwstr(
int a1,
int a2,
- wchar_t *z)
+ wchar_t *z)
{ return(*(int *)0); }
#undef mvvline_set
@@ -1387,7 +1418,7 @@ int mvwget_wch(
WINDOW *a1,
int a2,
int a3,
- wint_t *z)
+ wint_t *z)
{ return(*(int *)0); }
#undef mvwget_wstr
@@ -1395,7 +1426,7 @@ int mvwget_wstr(
WINDOW *a1,
int a2,
int a3,
- wint_t *z)
+ wint_t *z)
{ return(*(int *)0); }
#undef mvwgetn_wstr
@@ -1403,7 +1434,7 @@ int mvwgetn_wstr(
WINDOW *a1,
int a2,
int a3,
- wint_t *a4,
+ wint_t *a4,
int z)
{ return(*(int *)0); }
@@ -1446,7 +1477,7 @@ int mvwinnwstr(
WINDOW *a1,
int a2,
int a3,
- wchar_t *a4,
+ wchar_t *a4,
int z)
{ return(*(int *)0); }
@@ -1480,7 +1511,7 @@ int mvwinwstr(
WINDOW *a1,
int a2,
int a3,
- wchar_t *z)
+ wchar_t *z)
{ return(*(int *)0); }
#undef mvwvline_set
@@ -1513,7 +1544,13 @@ int waddwstr(
#undef wget_wstr
int wget_wstr(
WINDOW *a1,
- wint_t *z)
+ wint_t *z)
+ { return(*(int *)0); }
+
+#undef wgetbkgrnd
+int wgetbkgrnd(
+ WINDOW *a1,
+ cchar_t *z)
{ return(*(int *)0); }
#undef win_wchstr
@@ -1532,7 +1569,7 @@ int wins_wstr(
NCURSES_BOOL mouse_trafo(
int *a1,
int *a2,
- NCURSES_BOOL z)
+ NCURSES_BOOL z)
{ return(*(NCURSES_BOOL *)0); }
/* ./base/lib_getch.c */
@@ -1597,6 +1634,12 @@ WINDOW *initscr(void)
/* ./base/lib_insch.c */
+#undef _nc_insert_ch
+int _nc_insert_ch(
+ WINDOW *win,
+ chtype ch)
+ { return(*(int *)0); }
+
#undef winsch
int winsch(
WINDOW *win,
@@ -1611,7 +1654,7 @@ int winsdelln(
int n)
{ return(*(int *)0); }
-/* ./base/lib_insstr.c */
+/* ./base/lib_insnstr.c */
#undef winsnstr
int winsnstr(
@@ -1740,6 +1783,10 @@ int mvwin(
void filter(void)
{ /* void */ }
+#undef nofilter
+void nofilter(void)
+ { /* void */ }
+
#undef newterm
SCREEN *newterm(
char *name,
@@ -1875,14 +1922,14 @@ int pechochar(
#undef printw
int printw(
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
#undef wprintw
int wprintw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -1890,7 +1937,7 @@ int wprintw(
int mvprintw(
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
@@ -1899,14 +1946,14 @@ int mvwprintw(
WINDOW *win,
int y,
int x,
- char *fmt,
+ const char *fmt,
...)
{ return(*(int *)0); }
#undef vwprintw
int vwprintw(
WINDOW *win,
- char *fmt,
+ const char *fmt,
va_list argp)
{ return(*(int *)0); }
@@ -1981,8 +2028,6 @@ int mvwscanw(
/* ./base/lib_screen.c */
-#include <time.h>
-
#undef getwin
WINDOW *getwin(
FILE *filep)
@@ -2062,9 +2107,11 @@ void delscreen(
#undef _nc_setupscreen
int _nc_setupscreen(
- short slines,
- short const scolumns,
- FILE *output)
+ int slines,
+ int scolumns,
+ FILE *output,
+ NCURSES_BOOL filtered,
+ int slk_format)
{ return(*(int *)0); }
#undef _nc_ripoffline
@@ -2173,6 +2220,8 @@ int slk_refresh(void)
/* ./base/lib_slkset.c */
+#include <wctype.h>
+
#undef slk_set
int slk_set(
int i,
@@ -2207,57 +2256,6 @@ int wtouchln(
int changed)
{ return(*(int *)0); }
-/* ./trace/lib_traceatr.c */
-
-#undef _traceattr2
-char *_traceattr2(
- int bufnum,
- attr_t newmode)
- { return(*(char **)0); }
-
-#undef _traceattr
-char *_traceattr(
- attr_t newmode)
- { return(*(char **)0); }
-
-#undef _nc_retrace_attr_t
-attr_t _nc_retrace_attr_t(
- attr_t code)
- { return(*(attr_t *)0); }
-
-#undef _nc_altcharset_name
-const char *_nc_altcharset_name(
- attr_t attr,
- chtype ch)
- { return(*(const char **)0); }
-
-#undef _tracechtype2
-char *_tracechtype2(
- int bufnum,
- chtype ch)
- { return(*(char **)0); }
-
-#undef _tracechtype
-char *_tracechtype(
- chtype ch)
- { return(*(char **)0); }
-
-#undef _nc_retrace_chtype
-attr_t _nc_retrace_chtype(
- attr_t code)
- { return(*(attr_t *)0); }
-
-#undef _tracecchar_t2
-char *_tracecchar_t2(
- int bufnum,
- const cchar_t *ch)
- { return(*(char **)0); }
-
-#undef _tracecchar_t
-char *_tracecchar_t(
- const cchar_t *ch)
- { return(*(char **)0); }
-
/* ./trace/lib_tracedmp.c */
#undef _tracedump
@@ -2275,7 +2273,6 @@ char *_tracemouse(
/* ./tty/lib_tstp.c */
-#include <signal.h>
#include <SigAction.h>
#undef _nc_signal_handler
@@ -2409,11 +2406,6 @@ char *_nc_printf_string(
int doupdate(void)
{ return(*(int *)0); }
-#undef _nc_outstr
-void _nc_outstr(
- const char *str)
- { /* void */ }
-
#undef _nc_scrolln
int _nc_scrolln(
int n,
@@ -2457,18 +2449,51 @@ char *_nc_varargs(
void _nc_memmove(void)
{ /* void */ }
-/* ./base/sigaction.c */
-
-#undef _nc_sigaction
-void _nc_sigaction(void)
- { /* void */ }
-
/* ./base/vsscanf.c */
#undef _nc_vsscanf
void _nc_vsscanf(void)
{ /* void */ }
+/* ./base/lib_freeall.c */
+
+#include <term_entry.h>
+
+#undef _nc_freeall
+void _nc_freeall(void)
+ { /* void */ }
+
+/* ./widechar/charable.c */
+
+#undef _nc_is_charable
+NCURSES_BOOL _nc_is_charable(
+ wchar_t ch)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_to_char
+int _nc_to_char(
+ wint_t ch)
+ { return(*(int *)0); }
+
+#undef _nc_to_widechar
+wint_t _nc_to_widechar(
+ int ch)
+ { return(*(wint_t *)0); }
+
+/* ./widechar/lib_add_wch.c */
+
+#undef wadd_wch
+int wadd_wch(
+ WINDOW *win,
+ const cchar_t *wch)
+ { return(*(int *)0); }
+
+#undef wecho_wchar
+int wecho_wchar(
+ WINDOW *win,
+ const cchar_t *wch)
+ { return(*(int *)0); }
+
/* ./widechar/lib_box_set.c */
#undef wborder_set
@@ -2498,7 +2523,7 @@ int setcchar(
#undef getcchar
int getcchar(
const cchar_t *wcval,
- wchar_t *wch,
+ wchar_t *wch,
attr_t *attrs,
short *color_pair,
void *opts)
@@ -2509,7 +2534,19 @@ int getcchar(
#undef wget_wch
int wget_wch(
WINDOW *win,
- wint_t *result)
+ wint_t *result)
+ { return(*(int *)0); }
+
+/* ./widechar/lib_erasewchar.c */
+
+#undef erasewchar
+int erasewchar(
+ wchar_t *wch)
+ { return(*(int *)0); }
+
+#undef killwchar
+int killwchar(
+ wchar_t *wch)
{ return(*(int *)0); }
/* ./widechar/lib_get_wstr.c */
@@ -2517,7 +2554,7 @@ int wget_wch(
#undef wgetn_wstr
int wgetn_wstr(
WINDOW *win,
- wint_t *str,
+ wint_t *str,
int maxlen)
{ return(*(int *)0); }
@@ -2547,15 +2584,6 @@ int win_wchnstr(
int n)
{ return(*(int *)0); }
-/* ./widechar/lib_ins_nwstr.c */
-
-#undef wins_nwstr
-int wins_nwstr(
- WINDOW *win,
- const wchar_t *wstr,
- int n)
- { return(*(int *)0); }
-
/* ./widechar/lib_ins_wch.c */
#undef wins_wch
@@ -2564,28 +2592,81 @@ int wins_wch(
const cchar_t *wch)
{ return(*(int *)0); }
+#undef wins_nwstr
+int wins_nwstr(
+ WINDOW *win,
+ const wchar_t *wstr,
+ int n)
+ { return(*(int *)0); }
+
/* ./widechar/lib_inwstr.c */
#undef winnwstr
int winnwstr(
WINDOW *win,
- wchar_t *wstr,
+ wchar_t *wstr,
int n)
{ return(*(int *)0); }
#undef winwstr
int winwstr(
WINDOW *win,
- wchar_t *wstr)
+ wchar_t *wstr)
+ { return(*(int *)0); }
+
+/* ./widechar/lib_pecho_wchar.c */
+
+#undef pecho_wchar
+int pecho_wchar(
+ WINDOW *pad,
+ const cchar_t *wch)
+ { return(*(int *)0); }
+
+/* ./widechar/lib_slk_wset.c */
+
+#undef slk_wset
+int slk_wset(
+ int i,
+ const wchar_t *astr,
+ int format)
{ return(*(int *)0); }
/* ./widechar/lib_unget_wch.c */
+#undef _nc_wcrtomb
+size_t _nc_wcrtomb(
+ char *target,
+ wchar_t source,
+ mbstate_t *state)
+ { return(*(size_t *)0); }
+
#undef unget_wch
int unget_wch(
const wchar_t wch)
{ return(*(int *)0); }
+/* ./widechar/lib_vid_attr.c */
+
+#undef vid_puts
+int vid_puts(
+ attr_t newmode,
+ short pair,
+ void *opts,
+ int (*outc)(
+ int p1))
+ { return(*(int *)0); }
+
+#undef vid_attr
+int vid_attr(
+ attr_t newmode,
+ short pair,
+ void *opts)
+ { return(*(int *)0); }
+
+#undef term_attrs
+attr_t term_attrs(void)
+ { return(*(attr_t *)0); }
+
/* ./widechar/lib_vline_set.c */
#undef wvline_set
@@ -2607,18 +2688,10 @@ void _nc_init_wacs(void)
/* ./widechar/lib_wunctrl.c */
#undef wunctrl
-wchar_t *wunctrl(
+wchar_t *wunctrl(
cchar_t *wc)
{ return(*(wchar_t **)0); }
-/* ./base/define_key.c */
-
-#undef define_key
-int define_key(
- char *str,
- int keycode)
- { return(*(int *)0); }
-
/* ./expanded.c */
#undef _nc_toggle_attr_on
@@ -2645,23 +2718,14 @@ int _nc_InsCharCost(
#undef _nc_UpdateAttrs
void _nc_UpdateAttrs(
- chtype c)
+ cchar_t c)
{ /* void */ }
-/* ./base/keybound.c */
+/* ./base/legacy_coding.c */
-#undef keybound
-char *keybound(
- int code,
- int count)
- { return(*(char **)0); }
-
-/* ./base/keyok.c */
-
-#undef keyok
-int keyok(
- int c,
- NCURSES_BOOL flag)
+#undef use_legacy_coding
+int use_legacy_coding(
+ int level)
{ return(*(int *)0); }
/* ./base/lib_dft_fgbg.c */
@@ -2676,14 +2740,6 @@ int assume_default_colors(
int bg)
{ return(*(int *)0); }
-/* ./base/lib_freeall.c */
-
-#include <term_entry.h>
-
-#undef _nc_freeall
-void _nc_freeall(void)
- { /* void */ }
-
/* ./tinfo/lib_print.c */
#undef mcprint
@@ -2719,34 +2775,6 @@ void _nc_trace_xnames(
TERMTYPE *tp)
{ /* void */ }
-/* ./base/tries.c */
-
-#undef _nc_expand_try
-char *_nc_expand_try(
- struct tries *tree,
- unsigned short code,
- int *count,
- size_t len)
- { return(*(char **)0); }
-
-#undef _nc_remove_key
-int _nc_remove_key(
- struct tries **tree,
- unsigned short code)
- { return(*(int *)0); }
-
-#undef _nc_remove_string
-int _nc_remove_string(
- struct tries **tree,
- char *string)
- { return(*(int *)0); }
-
-/* ./base/version.c */
-
-#undef curses_version
-const char *curses_version(void)
- { return(*(const char **)0); }
-
/* ./base/wresize.c */
#undef wresize
@@ -2758,11 +2786,24 @@ int wresize(
/* ./tinfo/access.c */
+#include <sys/stat.h>
+#include <nc_alloc.h>
+
#undef _nc_rootname
char *_nc_rootname(
char *path)
{ return(*(char **)0); }
+#undef _nc_is_abs_path
+NCURSES_BOOL _nc_is_abs_path(
+ const char *path)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_pathlast
+unsigned _nc_pathlast(
+ const char *path)
+ { return(*(unsigned *)0); }
+
#undef _nc_basename
char *_nc_basename(
char *path)
@@ -2774,6 +2815,16 @@ int _nc_access(
int mode)
{ return(*(int *)0); }
+#undef _nc_is_dir_path
+NCURSES_BOOL _nc_is_dir_path(
+ const char *path)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_is_file_path
+NCURSES_BOOL _nc_is_file_path(
+ const char *path)
+ { return(*(NCURSES_BOOL *)0); }
+
#undef _nc_env_access
int _nc_env_access(void)
{ return(*(int *)0); }
@@ -2784,7 +2835,7 @@ int _nc_env_access(void)
void _nc_add_to_try(
struct tries **tree,
const char *str,
- unsigned short code)
+ unsigned code)
{ /* void */ }
/* ./tinfo/alloc_entry.c */
@@ -2836,14 +2887,14 @@ void _nc_copy_termtype(
char *_nc_captoinfo(
const char *cap,
const char *s,
- int const parametrized)
+ int const parameterized)
{ return(*(char **)0); }
#undef _nc_infotocap
char *_nc_infotocap(
const char *cap,
const char *str,
- int const parametrized)
+ int const parameterized)
{ return(*(char **)0); }
/* ./codes.c */
@@ -2887,6 +2938,10 @@ int _nc_curr_line;
#undef _nc_curr_col
int _nc_curr_col;
+#undef _nc_get_source
+const char *_nc_get_source(void)
+ { return(*(const char **)0); }
+
#undef _nc_set_source
void _nc_set_source(
const char *const name)
@@ -2948,6 +3003,10 @@ struct name_table_entry const *_nc_find_type_entry(
/* ./tinfo/comp_parse.c */
+#undef _nc_check_termtype2
+void (*_nc_check_termtype2)(
+ TERMTYPE *p1,
+ NCURSES_BOOL p2);
#undef _nc_check_termtype
void (*_nc_check_termtype)(
TERMTYPE *p1);
@@ -2961,6 +3020,18 @@ void _nc_free_entries(
ENTRY *headp)
{ /* void */ }
+#undef _nc_delink_entry
+ENTRY *_nc_delink_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_free_entry
+void _nc_free_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { /* void */ }
+
#undef _nc_entry_match
NCURSES_BOOL _nc_entry_match(
char *n1,
@@ -2977,6 +3048,12 @@ void _nc_read_entry_source(
ENTRY *p1))
{ /* void */ }
+#undef _nc_resolve_uses2
+int _nc_resolve_uses2(
+ NCURSES_BOOL fullresolve,
+ NCURSES_BOOL literal)
+ { return(*(int *)0); }
+
#undef _nc_resolve_uses
int _nc_resolve_uses(
NCURSES_BOOL fullresolve)
@@ -2999,16 +3076,22 @@ struct token _nc_curr_token;
#undef _nc_disable_period
NCURSES_BOOL _nc_disable_period;
+#undef _nc_reset_input
+void _nc_reset_input(
+ FILE *fp,
+ char *buf)
+ { /* void */ }
+
#undef _nc_get_token
int _nc_get_token(
NCURSES_BOOL silent)
{ return(*(int *)0); }
#undef _nc_trans_string
-char _nc_trans_string(
+int _nc_trans_string(
char *ptr,
char *last)
- { return(*(char *)0); }
+ { return(*(int *)0); }
#undef _nc_push_token
void _nc_push_token(
@@ -3020,10 +3103,32 @@ void _nc_panic_mode(
char ch)
{ /* void */ }
-#undef _nc_reset_input
-void _nc_reset_input(
- FILE *fp,
- char *buf)
+/* ./tinfo/db_iterator.c */
+
+#undef _nc_tic_dir
+const char *_nc_tic_dir(
+ const char *path)
+ { return(*(const char **)0); }
+
+#undef _nc_keep_tic_dir
+void _nc_keep_tic_dir(
+ const char *path)
+ { /* void */ }
+
+#undef _nc_last_db
+void _nc_last_db(void)
+ { /* void */ }
+
+#undef _nc_next_db
+const char *_nc_next_db(
+ DBDIRS *state,
+ int *offset)
+ { return(*(const char **)0); }
+
+#undef _nc_first_db
+void _nc_first_db(
+ DBDIRS *state,
+ int *offset)
{ /* void */ }
/* ./tinfo/doalloc.c */
@@ -3087,7 +3192,7 @@ void _nc_init_keytry(void)
/* ./tinfo/lib_acs.c */
#undef acs_map
-chtype acs_map[128 ];
+chtype acs_map[128];
#undef _nc_init_acs
void _nc_init_acs(void)
@@ -3098,8 +3203,8 @@ void _nc_init_acs(void)
#include <termcap.h>
struct speed {
- int s;
- int sp;
+ int s;
+ int sp;
};
#undef _nc_baudrate
@@ -3180,7 +3285,7 @@ char *keyname(
#undef key_name
char *key_name(
- wchar_t c)
+ wchar_t c)
{ return(*(char **)0); }
/* ./tinfo/lib_longname.c */
@@ -3191,6 +3296,8 @@ char *longname(void)
/* ./tinfo/lib_napms.c */
+#include <time.h>
+
#undef napms
int napms(
int ms)
@@ -3299,13 +3406,12 @@ int intrflush(
/* ./tinfo/lib_setup.c */
+#include <locale.h>
#include <sys/ioctl.h>
+#include <langinfo.h>
-#undef use_env
-void use_env(
- NCURSES_BOOL f)
- { /* void */ }
-
+#undef ttytype
+char ttytype[256];
#undef LINES
int LINES;
#undef COLS
@@ -3313,12 +3419,39 @@ int COLS;
#undef TABSIZE
int TABSIZE;
+#undef _nc_handle_sigwinch
+int _nc_handle_sigwinch(
+ int enable)
+ { return(*(int *)0); }
+
+#undef use_env
+void use_env(
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef _nc_update_screensize
void _nc_update_screensize(void)
{ /* void */ }
-#undef ttytype
-char ttytype[256 ];
+#undef _nc_get_locale
+char *_nc_get_locale(void)
+ { return(*(char **)0); }
+
+#undef _nc_unicode_locale
+int _nc_unicode_locale(void)
+ { return(*(int *)0); }
+
+#undef _nc_locale_breaks_acs
+int _nc_locale_breaks_acs(void)
+ { return(*(int *)0); }
+
+#undef _nc_setupterm
+int _nc_setupterm(
+ char *tname,
+ int Filedes,
+ int *errret,
+ NCURSES_BOOL reuse)
+ { return(*(int *)0); }
#undef setupterm
int setupterm(
@@ -3398,15 +3531,22 @@ char *tigetstr(
typedef struct {
union {
- unsigned int num;
- char *str;
+ int num;
+ char *str;
} data;
- NCURSES_BOOL num_type;
+ NCURSES_BOOL num_type;
} stack_frame;
#undef _nc_tparm_err
int _nc_tparm_err;
+#undef _nc_tparm_analyze
+int _nc_tparm_analyze(
+ const char *string,
+ char *p_is_s[9],
+ int *popcount)
+ { return(*(int *)0); }
+
#undef tparm
char *tparm(
char *string,
@@ -3418,7 +3558,7 @@ char *tparm(
#undef PC
char PC;
#undef ospeed
-short ospeed;
+NCURSES_OSPEED ospeed;
#undef _nc_nulls_sent
int _nc_nulls_sent;
@@ -3469,16 +3609,41 @@ void _tracef(
...)
{ /* void */ }
+#undef _nc_retrace_bool
+NCURSES_BOOL _nc_retrace_bool(
+ NCURSES_BOOL code)
+ { return(*(NCURSES_BOOL *)0); }
+
#undef _nc_retrace_int
int _nc_retrace_int(
int code)
{ return(*(int *)0); }
+#undef _nc_retrace_unsigned
+unsigned _nc_retrace_unsigned(
+ unsigned code)
+ { return(*(unsigned *)0); }
+
#undef _nc_retrace_ptr
char *_nc_retrace_ptr(
char *code)
{ return(*(char **)0); }
+#undef _nc_retrace_cptr
+const char *_nc_retrace_cptr(
+ const char *code)
+ { return(*(const char **)0); }
+
+#undef _nc_retrace_cvoid_ptr
+void *_nc_retrace_cvoid_ptr(
+ void *code)
+ { return(*(void **)0); }
+
+#undef _nc_retrace_void_ptr
+void *_nc_retrace_void_ptr(
+ void *code)
+ { return(*(void **)0); }
+
#undef _nc_retrace_sp
SCREEN *_nc_retrace_sp(
SCREEN *code)
@@ -3489,6 +3654,57 @@ WINDOW *_nc_retrace_win(
WINDOW *code)
{ return(*(WINDOW **)0); }
+/* ./trace/lib_traceatr.c */
+
+#undef _traceattr2
+char *_traceattr2(
+ int bufnum,
+ chtype newmode)
+ { return(*(char **)0); }
+
+#undef _traceattr
+char *_traceattr(
+ attr_t newmode)
+ { return(*(char **)0); }
+
+#undef _nc_retrace_attr_t
+attr_t _nc_retrace_attr_t(
+ attr_t code)
+ { return(*(attr_t *)0); }
+
+#undef _nc_altcharset_name
+const char *_nc_altcharset_name(
+ attr_t attr,
+ chtype ch)
+ { return(*(const char **)0); }
+
+#undef _tracechtype2
+char *_tracechtype2(
+ int bufnum,
+ chtype ch)
+ { return(*(char **)0); }
+
+#undef _tracechtype
+char *_tracechtype(
+ chtype ch)
+ { return(*(char **)0); }
+
+#undef _nc_retrace_chtype
+chtype _nc_retrace_chtype(
+ chtype code)
+ { return(*(chtype *)0); }
+
+#undef _tracecchar_t2
+char *_tracecchar_t2(
+ int bufnum,
+ const cchar_t *ch)
+ { return(*(char **)0); }
+
+#undef _tracecchar_t
+char *_tracecchar_t(
+ const cchar_t *ch)
+ { return(*(char **)0); }
+
/* ./trace/lib_tracebits.c */
typedef struct {
@@ -3496,6 +3712,11 @@ typedef struct {
const char *name;
} BITNAMES;
+#undef _nc_trace_ttymode
+char *_nc_trace_ttymode(
+ struct termios *tty)
+ { return(*(char **)0); }
+
#undef _nc_tracebits
char *_nc_tracebits(void)
{ return(*(char **)0); }
@@ -3603,15 +3824,14 @@ typedef struct {
/* ./tinfo/read_entry.c */
-#undef _nc_tic_dir
-const char *_nc_tic_dir(
- const char *path)
- { return(*(const char **)0); }
+#include <hashed_db.h>
-#undef _nc_keep_tic_dir
-void _nc_keep_tic_dir(
- const char *path)
- { /* void */ }
+#undef _nc_read_termtype
+int _nc_read_termtype(
+ TERMTYPE *ptr,
+ char *buffer,
+ int limit)
+ { return(*(int *)0); }
#undef _nc_read_file_entry
int _nc_read_file_entry(
@@ -3621,13 +3841,15 @@ int _nc_read_file_entry(
#undef _nc_read_entry
int _nc_read_entry(
- const char *const tn,
+ const char *const name,
char *const filename,
TERMTYPE *const tp)
{ return(*(int *)0); }
/* ./tinfo/read_termcap.c */
+#include <sys/types.h>
+
#undef _nc_read_termcap_entry
int _nc_read_termcap_entry(
const char *const tn,
@@ -3688,6 +3910,12 @@ char *_nc_trace_buf(
size_t want)
{ return(*(char **)0); }
+#undef _nc_trace_bufcat
+char *_nc_trace_bufcat(
+ int bufnum,
+ const char *value)
+ { return(*(char **)0); }
+
/* ./trace/trace_tries.c */
#undef _nc_trace_tries
@@ -3695,6 +3923,35 @@ void _nc_trace_tries(
struct tries *tree)
{ /* void */ }
+/* ./base/tries.c */
+
+#undef _nc_expand_try
+char *_nc_expand_try(
+ struct tries *tree,
+ unsigned code,
+ int *count,
+ size_t len)
+ { return(*(char **)0); }
+
+#undef _nc_remove_key
+int _nc_remove_key(
+ struct tries **tree,
+ unsigned code)
+ { return(*(int *)0); }
+
+#undef _nc_remove_string
+int _nc_remove_string(
+ struct tries **tree,
+ const char *string)
+ { return(*(int *)0); }
+
+/* ./tinfo/trim_sgr0.c */
+
+#undef _nc_trim_sgr0
+char *_nc_trim_sgr0(
+ TERMTYPE *tp)
+ { return(*(char **)0); }
+
/* ./unctrl.c */
#undef unctrl
@@ -3715,6 +3972,12 @@ const char *_nc_visbuf(
const char *buf)
{ return(*(const char **)0); }
+#undef _nc_visbufn
+const char *_nc_visbufn(
+ const char *buf,
+ int len)
+ { return(*(const char **)0); }
+
#undef _nc_viswbuf2
const char *_nc_viswbuf2(
int bufnum,
@@ -3726,6 +3989,17 @@ const char *_nc_viswbuf(
const wchar_t *buf)
{ return(*(const char **)0); }
+#undef _nc_viswbufn
+const char *_nc_viswbufn(
+ const wchar_t *buf,
+ int len)
+ { return(*(const char **)0); }
+
+#undef _nc_viswibuf
+const char *_nc_viswibuf(
+ const wint_t *buf)
+ { return(*(const char **)0); }
+
#undef _nc_viscbuf2
const char *_nc_viscbuf2(
int bufnum,
@@ -3754,3 +4028,46 @@ void _nc_write_entry(
#undef _nc_tic_written
int _nc_tic_written(void)
{ return(*(int *)0); }
+
+/* ./base/define_key.c */
+
+#undef define_key
+int define_key(
+ const char *str,
+ int keycode)
+ { return(*(int *)0); }
+
+/* ./tinfo/hashed_db.c */
+
+#undef _nc_hashed_db
+void _nc_hashed_db(void)
+ { /* void */ }
+
+/* ./base/key_defined.c */
+
+#undef key_defined
+int key_defined(
+ const char *str)
+ { return(*(int *)0); }
+
+/* ./base/keybound.c */
+
+#undef keybound
+char *keybound(
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+/* ./base/keyok.c */
+
+#undef keyok
+int keyok(
+ int c,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./base/version.c */
+
+#undef curses_version
+const char *curses_version(void)
+ { return(*(const char **)0); }
diff --git a/contrib/ncurses/ncurses/modules b/contrib/ncurses/ncurses/modules
index 541df6f2493c..2e863dad0c38 100644
--- a/contrib/ncurses/ncurses/modules
+++ b/contrib/ncurses/ncurses/modules
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.90 2002/05/11 20:14:41 tom Exp $
+# $Id: modules,v 1.107 2006/08/12 14:19:44 tom Exp $
##############################################################################
-# Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -27,7 +27,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996-1998, etc.
+# Author: Thomas E. Dickey 1996-on
#
@ base
@@ -61,7 +61,7 @@ lib_inchstr lib $(base)
lib_initscr lib $(base) $(INCDIR)/tic.h
lib_insch lib $(base)
lib_insdel lib $(base)
-lib_insstr lib $(base)
+lib_insnstr lib $(base)
lib_instr lib $(base)
lib_isendwin lib $(base)
lib_leaveok lib $(base)
@@ -98,10 +98,9 @@ lib_slkrefr lib $(base) ../include/term.h
lib_slkset lib $(base)
lib_slktouch lib $(base)
lib_touch lib $(base)
-lib_traceatr lib $(trace) ../include/term.h
lib_tracedmp lib $(trace)
lib_tracemse lib $(trace)
-lib_tstp lib $(serial)
+lib_tstp lib $(serial) $(srcdir)/SigAction.h
lib_ungetch lib $(base)
lib_vidattr lib $(serial) ../include/term.h
lib_vline lib $(base)
@@ -117,11 +116,15 @@ varargs lib $(trace)
# Modules for porting
memmove lib $(base)
-sigaction lib $(base)
vsscanf lib $(base)
+# actually an extension, but with its own configure option (--disable-leaks)
+lib_freeall lib $(base)
+
# XSI extensions to the base library (wide-character)
@ widechar
+charable lib $(wide)
+lib_add_wch lib $(wide)
lib_box_set lib $(wide)
lib_cchar lib $(wide)
lib_get_wch lib $(wide)
@@ -130,9 +133,10 @@ lib_get_wstr lib $(wide)
lib_hline_set lib $(wide)
lib_in_wch lib $(wide)
lib_in_wchnstr lib $(wide)
-lib_ins_nwstr lib $(wide)
lib_ins_wch lib $(wide)
lib_inwstr lib $(wide)
+lib_pecho_wchar lib $(wide)
+lib_slk_wset lib $(wide)
lib_unget_wch lib $(wide)
lib_vid_attr lib $(wide) ../include/term.h
lib_vline_set lib $(wide)
@@ -141,17 +145,12 @@ lib_wunctrl lib $(wide)
# Extensions to the base library
@ ext_funcs
-define_key lib $(base)
expanded lib .
-keybound lib $(base)
-keyok lib $(base)
+legacy_coding lib $(base) ../include/term.h
lib_dft_fgbg lib $(base) ../include/term.h
-lib_freeall lib $(base)
lib_print lib $(tinfo) ../include/term.h
resizeterm lib $(base) ../include/term.h
trace_xnames lib $(trace) ../include/term.h $(INCDIR)/term_entry.h
-tries lib $(base)
-version lib $(base)
wresize lib $(base) ../include/term.h
# Support for termcap (and tic, etc.), which can be a separate library
@@ -168,6 +167,7 @@ comp_expand lib $(tinfo) $(INCDIR)/tic.h
comp_hash lib $(tinfo) ../include/term.h $(INCDIR)/tic.h ../include/hashsize.h
comp_parse lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
comp_scan lib $(tinfo) $(INCDIR)/tic.h
+db_iterator lib $(tinfo) $(INCDIR)/tic.h
doalloc lib $(tinfo)
fallback lib . ../include/term.h $(INCDIR)/tic.h
free_ttype lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
@@ -193,6 +193,7 @@ lib_ti lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
lib_tparm lib $(tinfo) ../include/term.h $(INCDIR)/tic.h
lib_tputs lib $(tinfo) ../include/term.h $(INCDIR)/tic.h
lib_trace lib $(trace) $(INCDIR)/tic.h
+lib_traceatr lib $(trace) ../include/term.h
lib_tracebits lib $(trace) ../include/term.h
lib_tracechr lib $(trace)
lib_ttyflags lib $(tinfo) ../include/term.h
@@ -206,6 +207,17 @@ setbuf lib $(tinfo)
strings lib $(tinfo)
trace_buf lib $(trace)
trace_tries lib $(trace)
+tries lib $(base)
+trim_sgr0 lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
unctrl lib .
visbuf lib $(trace) $(INCDIR)/tic.h
write_entry lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+
+# Extensions to the termlib library
+@ ext_tinfo
+define_key lib $(base)
+hashed_db lib $(tinfo)
+key_defined lib $(base)
+keybound lib $(base)
+keyok lib $(base)
+version lib $(base)
diff --git a/contrib/ncurses/ncurses/tinfo/MKcaptab.awk b/contrib/ncurses/ncurses/tinfo/MKcaptab.awk
index ff9601ba62c5..57087b820e3b 100644
--- a/contrib/ncurses/ncurses/tinfo/MKcaptab.awk
+++ b/contrib/ncurses/ncurses/tinfo/MKcaptab.awk
@@ -1,5 +1,32 @@
#!/bin/sh
-# $Id: MKcaptab.awk,v 1.12 2000/12/10 00:14:12 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2000,2006 Free Software 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: MKcaptab.awk,v 1.13 2006/04/22 21:46:17 tom Exp $
AWK=${1-awk}
DATA=${2-../include/Caps}
diff --git a/contrib/ncurses/ncurses/tinfo/MKfallback.sh b/contrib/ncurses/ncurses/tinfo/MKfallback.sh
index d1abcd2eed3f..9feab3507cc0 100755
--- a/contrib/ncurses/ncurses/tinfo/MKfallback.sh
+++ b/contrib/ncurses/ncurses/tinfo/MKfallback.sh
@@ -1,5 +1,32 @@
#!/bin/sh
-# $Id: MKfallback.sh,v 1.11 2001/12/02 01:55:30 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2001,2006 Free Software 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: MKfallback.sh,v 1.13 2006/07/15 16:54:20 tom Exp $
#
# MKfallback.sh -- create fallback table for entry reads
#
@@ -25,7 +52,7 @@ if test $# != 0 ; then
TERMINFO_DIRS=$TERMINFO:$terminfo_dir
export TERMINFO_DIRS
- tic $terminfo_src >&2
+ tic -x $terminfo_src >&2
else
tmp_info=
fi
diff --git a/contrib/ncurses/ncurses/tinfo/MKkeys_list.sh b/contrib/ncurses/ncurses/tinfo/MKkeys_list.sh
index 98d5b1379a1c..14017b016896 100755
--- a/contrib/ncurses/ncurses/tinfo/MKkeys_list.sh
+++ b/contrib/ncurses/ncurses/tinfo/MKkeys_list.sh
@@ -1,7 +1,7 @@
#! /bin/sh
-# $Id: MKkeys_list.sh,v 1.2 2001/06/16 16:50:35 tom Exp $
+# $Id: MKkeys_list.sh,v 1.4 2003/10/25 16:19:54 tom Exp $
##############################################################################
-# Copyright (c) 2001 Free Software Foundation, Inc. #
+# Copyright (c) 2001,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"), #
@@ -30,7 +30,7 @@
#
# MKkey_defs.sh -- generate list of function-keys for terminfo database
#
-# Author: Thomas E. Dickey <dickey@herndon4.his.com> 2001
+# Author: Thomas E. Dickey 2001
#
# Extract function-key names from the Caps file
#
@@ -39,7 +39,7 @@ DATA=${1-../../include/Caps}
data=data$$
trap 'rm -f $data' 0 1 2 5 15
-sed -e 's/[ ]\+/ /g' < $DATA >$data
+sed -e 's/[ ][ ]*/ /g' < $DATA >$data
cat <<EOF
# These definitions were generated by $0 $DATA
diff --git a/contrib/ncurses/ncurses/tinfo/MKnames.awk b/contrib/ncurses/ncurses/tinfo/MKnames.awk
index 455efc01dea3..6be00ad4488d 100644
--- a/contrib/ncurses/ncurses/tinfo/MKnames.awk
+++ b/contrib/ncurses/ncurses/tinfo/MKnames.awk
@@ -1,4 +1,31 @@
-# $Id: MKnames.awk,v 1.11 2000/12/09 23:46:13 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2000,2006 Free Software 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: MKnames.awk,v 1.12 2006/04/22 21:46:17 tom Exp $
BEGIN {
print "/* This file was generated by MKnames.awk */" > "namehdr"
print "" > "namehdr"
diff --git a/contrib/ncurses/ncurses/tinfo/README b/contrib/ncurses/ncurses/tinfo/README
index 8b092c1ba41c..14c4220c4431 100644
--- a/contrib/ncurses/ncurses/tinfo/README
+++ b/contrib/ncurses/ncurses/tinfo/README
@@ -1,4 +1,32 @@
--- $Id: README,v 1.1 1998/11/07 22:59:07 tom Exp $
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software 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: README,v 1.2 2006/04/22 22:19:37 tom Exp $
+-------------------------------------------------------------------------------
The files in this directory (tinfo) are those that support the terminfo
database and interfaces for ncurses. The terminfo library can be built
diff --git a/contrib/ncurses/ncurses/tinfo/access.c b/contrib/ncurses/ncurses/tinfo/access.c
index f5240c121c26..c10b7e0af556 100644
--- a/contrib/ncurses/ncurses/tinfo/access.c
+++ b/contrib/ncurses/ncurses/tinfo/access.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2006 Free 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,17 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998,2000,2001 *
+ * Author: Thomas E. Dickey *
****************************************************************************/
#include <curses.priv.h>
+
+#include <sys/stat.h>
+
#include <tic.h>
#include <nc_alloc.h>
-MODULE_ID("$Id: access.c,v 1.9 2001/06/23 22:11:49 tom Exp $")
+MODULE_ID("$Id: access.c,v 1.12 2006/08/05 17:18:14 tom Exp $")
#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c))
@@ -64,19 +67,43 @@ _nc_rootname(char *path)
return result;
}
-NCURSES_EXPORT(char *)
-_nc_basename(char *path)
+/*
+ * Check if a string appears to be an absolute pathname.
+ */
+NCURSES_EXPORT(bool)
+_nc_is_abs_path(const char *path)
{
- char *result = strrchr(path, '/');
+#if defined(__EMX__) || defined(__DJGPP__)
+#define is_pathname(s) ((((s) != 0) && ((s)[0] == '/')) \
+ || (((s)[0] != 0) && ((s)[1] == ':')))
+#else
+#define is_pathname(s) ((s) != 0 && (s)[0] == '/')
+#endif
+ return is_pathname(path);
+}
+
+/*
+ * Return index of the basename
+ */
+NCURSES_EXPORT(unsigned)
+_nc_pathlast(const char *path)
+{
+ const char *test = strrchr(path, '/');
#ifdef __EMX__
- if (result == 0)
- result = strrchr(path, '\\');
+ if (test == 0)
+ test = strrchr(path, '\\');
#endif
- if (result == 0)
- result = path;
+ if (test == 0)
+ test = path;
else
- result++;
- return result;
+ test++;
+ return (test - path);
+}
+
+NCURSES_EXPORT(char *)
+_nc_basename(char *path)
+{
+ return path + _nc_pathlast(path);
}
NCURSES_EXPORT(int)
@@ -102,6 +129,32 @@ _nc_access(const char *path, int mode)
return 0;
}
+NCURSES_EXPORT(bool)
+_nc_is_dir_path(const char *path)
+{
+ bool result = FALSE;
+ struct stat sb;
+
+ if (stat(path, &sb) == 0
+ && (sb.st_mode & S_IFMT) == S_IFDIR) {
+ result = TRUE;
+ }
+ return result;
+}
+
+NCURSES_EXPORT(bool)
+_nc_is_file_path(const char *path)
+{
+ bool result = FALSE;
+ struct stat sb;
+
+ if (stat(path, &sb) == 0
+ && (sb.st_mode & S_IFMT) == S_IFREG) {
+ result = TRUE;
+ }
+ return result;
+}
+
#ifndef USE_ROOT_ENVIRON
/*
* Returns true if we allow application to use environment variables that are
diff --git a/contrib/ncurses/ncurses/tinfo/add_tries.c b/contrib/ncurses/ncurses/tinfo/add_tries.c
index f83249ccf01a..46c93b8fecc7 100644
--- a/contrib/ncurses/ncurses/tinfo/add_tries.c
+++ b/contrib/ncurses/ncurses/tinfo/add_tries.c
@@ -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 *
@@ -39,13 +39,13 @@
#include <curses.priv.h>
-MODULE_ID("$Id: add_tries.c,v 1.4 2000/12/10 02:55:07 tom Exp $")
+MODULE_ID("$Id: add_tries.c,v 1.5 2005/11/20 01:32:48 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))
NCURSES_EXPORT(void)
-_nc_add_to_try(struct tries **tree, const char *str, unsigned short code)
+_nc_add_to_try(struct tries **tree, const char *str, unsigned code)
{
static bool out_of_memory = FALSE;
struct tries *ptr, *savedptr;
diff --git a/contrib/ncurses/ncurses/tinfo/alloc_entry.c b/contrib/ncurses/ncurses/tinfo/alloc_entry.c
index 5c064cfd8246..1496752f1956 100644
--- a/contrib/ncurses/ncurses/tinfo/alloc_entry.c
+++ b/contrib/ncurses/ncurses/tinfo/alloc_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -47,7 +48,7 @@
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: alloc_entry.c,v 1.36 2001/09/22 21:10:26 tom Exp $")
+MODULE_ID("$Id: alloc_entry.c,v 1.47 2006/12/16 19:06:58 tom Exp $")
#define ABSENT_OFFSET -1
#define CANCELLED_OFFSET -2
@@ -58,13 +59,20 @@ 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(TERMTYPE *const tp)
/* initialize a terminal type data block */
{
- int i;
+ unsigned i;
+
+#if NO_LEAKS
+ if (tp == 0 && stringbuf != 0) {
+ FreeAndNull(stringbuf);
+ return;
+ }
+#endif
if (stringbuf == 0)
- stringbuf = malloc(MAX_STRTAB);
+ stringbuf = (char *) malloc(MAX_STRTAB);
#if NCURSES_XNAMES
tp->num_Booleans = BOOLCOUNT;
@@ -75,7 +83,7 @@ _nc_init_entry(TERMTYPE * const tp)
tp->ext_Strings = 0;
#endif
if (tp->Booleans == 0)
- tp->Booleans = typeMalloc(char, BOOLCOUNT);
+ tp->Booleans = typeMalloc(NCURSES_SBOOL, BOOLCOUNT);
if (tp->Numbers == 0)
tp->Numbers = typeMalloc(short, NUMCOUNT);
if (tp->Strings == 0)
@@ -105,20 +113,32 @@ _nc_copy_entry(ENTRY * oldp)
return newp;
}
+/* save a copy of string in the string buffer */
NCURSES_EXPORT(char *)
_nc_save_str(const char *const string)
-/* save a copy of string in the string buffer */
{
+ char *result = 0;
size_t old_next_free = next_free;
size_t len = strlen(string) + 1;
- if (next_free + len < MAX_STRTAB) {
+ if (len == 1 && next_free != 0) {
+ /*
+ * Cheat a little by making an empty string point to the end of the
+ * previous string.
+ */
+ if (next_free < MAX_STRTAB) {
+ result = (stringbuf + next_free - 1);
+ }
+ } else if (next_free + len < MAX_STRTAB) {
strcpy(&stringbuf[next_free], string);
DEBUG(7, ("Saved string %s", _nc_visbuf(string)));
DEBUG(7, ("at location %d", (int) next_free));
next_free += len;
+ result = (stringbuf + old_next_free);
+ } else {
+ _nc_warning("Too much data, some is lost");
}
- return (stringbuf + old_next_free);
+ return result;
}
NCURSES_EXPORT(void)
@@ -126,7 +146,8 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
/* copy the string parts to allocated storage, preserving pointers to it */
{
int offsets[MAX_ENTRY_SIZE / 2], useoffsets[MAX_USES];
- int i, n;
+ unsigned i, n;
+ unsigned nuses = ep->nuses;
TERMTYPE *tp = &(ep->tterm);
if (copy_strings) {
@@ -141,7 +162,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
}
}
- for (i = 0; i < ep->nuses; i++) {
+ for (i = 0; i < nuses; i++) {
if (ep->uses[i].name == 0) {
ep->uses[i].name = _nc_save_str(ep->uses[i].name);
}
@@ -160,7 +181,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
offsets[i] = tp->Strings[i] - stringbuf;
}
- for (i = 0; i < ep->nuses; i++) {
+ for (i = 0; i < nuses; i++) {
if (ep->uses[i].name == 0)
useoffsets[i] = ABSENT_OFFSET;
else
@@ -168,7 +189,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
}
if ((tp->str_table = typeMalloc(char, next_free)) == (char *) 0)
- _nc_err_abort("Out of memory");
+ _nc_err_abort(MSG_NO_MEMORY);
(void) memcpy(tp->str_table, stringbuf, next_free);
tp->term_names = tp->str_table + n;
@@ -190,7 +211,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
offsets[i] = tp->ext_Names[i] - stringbuf;
}
if ((tp->ext_str_table = typeMalloc(char, length)) == 0)
- _nc_err_abort("Out of memory");
+ _nc_err_abort(MSG_NO_MEMORY);
for (i = 0, length = 0; i < n; i++) {
tp->ext_Names[i] = tp->ext_str_table + length;
strcpy(tp->ext_Names[i], stringbuf + offsets[i]);
@@ -200,7 +221,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
}
#endif
- for (i = 0; i < ep->nuses; i++) {
+ for (i = 0; i < nuses; i++) {
if (useoffsets[i] == ABSENT_OFFSET)
ep->uses[i].name = 0;
else
@@ -209,31 +230,34 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
}
NCURSES_EXPORT(void)
-_nc_merge_entry
-(TERMTYPE * const to, TERMTYPE * const from)
+_nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
/* merge capabilities from `from' entry into `to' entry */
{
- int i;
+ unsigned i;
#if NCURSES_XNAMES
_nc_align_termtype(to, from);
#endif
for_each_boolean(i, from) {
- int mergebool = from->Booleans[i];
+ if (to->Booleans[i] != (char) CANCELLED_BOOLEAN) {
+ int mergebool = from->Booleans[i];
- if (mergebool == CANCELLED_BOOLEAN)
- to->Booleans[i] = FALSE;
- else if (mergebool == TRUE)
- to->Booleans[i] = mergebool;
+ if (mergebool == CANCELLED_BOOLEAN)
+ to->Booleans[i] = FALSE;
+ else if (mergebool == TRUE)
+ to->Booleans[i] = mergebool;
+ }
}
for_each_number(i, from) {
- int mergenum = from->Numbers[i];
+ if (to->Numbers[i] != CANCELLED_NUMERIC) {
+ int mergenum = from->Numbers[i];
- if (mergenum == CANCELLED_NUMERIC)
- to->Numbers[i] = ABSENT_NUMERIC;
- else if (mergenum != ABSENT_NUMERIC)
- to->Numbers[i] = mergenum;
+ if (mergenum == CANCELLED_NUMERIC)
+ to->Numbers[i] = ABSENT_NUMERIC;
+ else if (mergenum != ABSENT_NUMERIC)
+ to->Numbers[i] = mergenum;
+ }
}
/*
@@ -242,11 +266,24 @@ _nc_merge_entry
* we ever want to deallocate entries.
*/
for_each_string(i, from) {
- char *mergestring = from->Strings[i];
+ if (to->Strings[i] != CANCELLED_STRING) {
+ char *mergestring = from->Strings[i];
- if (mergestring == CANCELLED_STRING)
- to->Strings[i] = ABSENT_STRING;
- else if (mergestring != ABSENT_STRING)
- to->Strings[i] = mergestring;
+ if (mergestring == CANCELLED_STRING)
+ to->Strings[i] = ABSENT_STRING;
+ else if (mergestring != ABSENT_STRING)
+ to->Strings[i] = mergestring;
+ }
+ }
+}
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_alloc_entry_leaks(void)
+{
+ if (stringbuf != 0) {
+ FreeAndNull(stringbuf);
}
+ next_free = 0;
}
+#endif
diff --git a/contrib/ncurses/ncurses/tinfo/alloc_ttype.c b/contrib/ncurses/ncurses/tinfo/alloc_ttype.c
index c13c5d6c29ed..9f31ed3ffab7 100644
--- a/contrib/ncurses/ncurses/tinfo/alloc_ttype.c
+++ b/contrib/ncurses/ncurses/tinfo/alloc_ttype.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2003,2006 Free 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> 1999 *
+ * Author: Thomas E. Dickey <dickey@clark.net> 1999-on *
****************************************************************************/
/*
@@ -43,7 +43,7 @@
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: alloc_ttype.c,v 1.12 2000/12/10 02:55:07 tom Exp $")
+MODULE_ID("$Id: alloc_ttype.c,v 1.16 2006/07/08 19:18:38 tom Exp $")
#if NCURSES_XNAMES
/*
@@ -92,15 +92,17 @@ find_name(char **table, int length, char *name)
}
static void
-realign_data(TERMTYPE * to, char **ext_Names, int ext_Booleans, int
- ext_Numbers, int ext_Strings)
+realign_data(TERMTYPE *to, char **ext_Names,
+ int ext_Booleans,
+ int ext_Numbers,
+ int ext_Strings)
{
int n, m, base;
int limit = (to->ext_Booleans + to->ext_Numbers + to->ext_Strings);
if (to->ext_Booleans != ext_Booleans) {
to->num_Booleans += (ext_Booleans - to->ext_Booleans);
- to->Booleans = typeRealloc(char, to->num_Booleans, to->Booleans);
+ to->Booleans = typeRealloc(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--) {
@@ -146,7 +148,7 @@ realign_data(TERMTYPE * to, char **ext_Names, int ext_Booleans, int
* Returns the first index in ext_Names[] for the given token-type
*/
static int
-_nc_first_ext_name(TERMTYPE * tp, int token_type)
+_nc_first_ext_name(TERMTYPE *tp, int token_type)
{
int first;
@@ -171,7 +173,7 @@ _nc_first_ext_name(TERMTYPE * tp, int token_type)
* Returns the last index in ext_Names[] for the given token-type
*/
static int
-_nc_last_ext_name(TERMTYPE * tp, int token_type)
+_nc_last_ext_name(TERMTYPE *tp, int token_type)
{
int last;
@@ -194,7 +196,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(TERMTYPE *tp, char *name, int token_type)
{
unsigned j;
unsigned first = _nc_first_ext_name(tp, token_type);
@@ -213,7 +215,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(TERMTYPE *tp, int n, int token_type)
{
switch (token_type) {
case BOOLEAN:
@@ -236,7 +238,7 @@ _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(TERMTYPE *tp, char *name, int token_type)
{
int j;
int first, last;
@@ -280,7 +282,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(TERMTYPE *tp, char *name, int token_type)
{
unsigned first = _nc_first_ext_name(tp, token_type);
unsigned last = _nc_last_ext_name(tp, token_type);
@@ -291,7 +293,7 @@ _nc_ins_ext_name(TERMTYPE * tp, char *name, int token_type)
int cmp = strcmp(name, tp->ext_Names[j]);
if (cmp == 0)
/* already present */
- return _nc_ext_data_index(tp, j, token_type);
+ return _nc_ext_data_index(tp, (int) j, token_type);
if (cmp < 0) {
break;
}
@@ -301,13 +303,13 @@ _nc_ins_ext_name(TERMTYPE * tp, char *name, int token_type)
for (k = total - 1; k > j; k--)
tp->ext_Names[k] = tp->ext_Names[k - 1];
tp->ext_Names[j] = name;
- j = _nc_ext_data_index(tp, j, token_type);
+ j = _nc_ext_data_index(tp, (int) j, token_type);
switch (token_type) {
case BOOLEAN:
tp->ext_Booleans += 1;
tp->num_Booleans += 1;
- tp->Booleans = typeRealloc(char, tp->num_Booleans, tp->Booleans);
+ tp->Booleans = typeRealloc(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans);
for (k = tp->num_Booleans - 1; k > j; k--)
tp->Booleans[k] = tp->Booleans[k - 1];
break;
@@ -335,7 +337,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(TERMTYPE *to, TERMTYPE *from)
{
int first = to->ext_Booleans + to->ext_Numbers;
int last = first + to->ext_Strings;
@@ -371,8 +373,7 @@ adjust_cancels(TERMTYPE * to, TERMTYPE * from)
}
NCURSES_EXPORT(void)
-_nc_align_termtype
-(TERMTYPE * to, TERMTYPE * from)
+_nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
{
int na = NUM_EXT_NAMES(to);
int nb = NUM_EXT_NAMES(from);
@@ -380,6 +381,7 @@ _nc_align_termtype
bool same;
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));
@@ -443,6 +445,7 @@ _nc_align_termtype
to->ext_Names = ext_Names;
DEBUG(2, ("realigned %d extended names for '%s' (to)",
NUM_EXT_NAMES(to), to->term_names));
+ used_ext_Names = TRUE;
}
if (nb != (ext_Booleans + ext_Numbers + ext_Strings)) {
nb = (ext_Booleans + ext_Numbers + ext_Strings);
@@ -452,18 +455,19 @@ _nc_align_termtype
DEBUG(2, ("realigned %d extended names for '%s' (from)",
NUM_EXT_NAMES(from), from->term_names));
}
+ if (!used_ext_Names)
+ free(ext_Names);
}
}
#endif
NCURSES_EXPORT(void)
-_nc_copy_termtype
-(TERMTYPE * dst, TERMTYPE * src)
+_nc_copy_termtype(TERMTYPE *dst, TERMTYPE *src)
{
- int i;
+ unsigned i;
*dst = *src; /* ...to copy the sizes and string-tables */
- dst->Booleans = typeMalloc(char, NUM_BOOLEANS(dst));
+ dst->Booleans = typeMalloc(NCURSES_SBOOL, NUM_BOOLEANS(dst));
dst->Numbers = typeMalloc(short, NUM_NUMBERS(dst));
dst->Strings = typeMalloc(char *, NUM_STRINGS(dst));
diff --git a/contrib/ncurses/ncurses/tinfo/captoinfo.c b/contrib/ncurses/ncurses/tinfo/captoinfo.c
index bf3116ae24f9..0e3baa845693 100644
--- a/contrib/ncurses/ncurses/tinfo/captoinfo.c
+++ b/contrib/ncurses/ncurses/tinfo/captoinfo.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -39,7 +40,7 @@
*
* There is just one entry point:
*
- * char *_nc_captoinfo(n, s, parametrized)
+ * char *_nc_captoinfo(n, s, parameterized)
*
* Convert value s for termcap string capability named n into terminfo
* format.
@@ -92,7 +93,7 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: captoinfo.c,v 1.41 2001/06/02 22:50:31 skimo Exp $")
+MODULE_ID("$Id: captoinfo.c,v 1.49 2006/12/16 19:16:53 tom Exp $")
#define MAX_PUSHED 16 /* max # args we can push onto the stack */
@@ -115,7 +116,7 @@ init_string(void)
if (my_string == 0)
my_string = typeMalloc(char, my_length = 256);
if (my_string == 0)
- _nc_err_abort("Out of memory");
+ _nc_err_abort(MSG_NO_MEMORY);
*my_string = '\0';
return my_string;
@@ -129,18 +130,18 @@ save_string(char *d, const char *const s)
if (need > my_length) {
my_string = (char *) realloc(my_string, my_length = (need + need));
if (my_string == 0)
- _nc_err_abort("Out of memory");
+ _nc_err_abort(MSG_NO_MEMORY);
d = my_string + have;
}
(void) strcpy(d, s);
return d + strlen(d);
}
-static inline char *
-save_char(char *s, char c)
+static NCURSES_INLINE char *
+save_char(char *s, int c)
{
static char temp[2];
- temp[0] = c;
+ temp[0] = (char) c;
return save_string(s, temp);
}
@@ -272,12 +273,12 @@ getparm(int parm, int n)
* Convert a termcap string to terminfo format.
* 'cap' is the relevant terminfo capability index.
* 's' is the string value of the capability.
- * 'parametrized' tells what type of translations to do:
+ * 'parameterized' tells what type of translations to do:
* % translations if 1
* pad translations if >=0
*/
-char *
-_nc_captoinfo(const char *cap, const char *s, int const parametrized)
+NCURSES_EXPORT(char *)
+_nc_captoinfo(const char *cap, const char *s, int const parameterized)
{
const char *capstart;
@@ -294,7 +295,7 @@ _nc_captoinfo(const char *cap, const char *s, int const parametrized)
capstart = 0;
if (s == 0)
s = "";
- if (parametrized >= 0 && isdigit(UChar(*s)))
+ if (parameterized >= 0 && isdigit(UChar(*s)))
for (capstart = s;; s++)
if (!(isdigit(UChar(*s)) || *s == '*' || *s == '.'))
break;
@@ -303,7 +304,7 @@ _nc_captoinfo(const char *cap, const char *s, int const parametrized)
switch (*s) {
case '%':
s++;
- if (parametrized < 1) {
+ if (parameterized < 1) {
dp = save_char(dp, '%');
break;
}
@@ -464,7 +465,7 @@ _nc_captoinfo(const char *cap, const char *s, int const parametrized)
dp = save_char(dp, '%');
s--;
_nc_warning("unknown %% code %s (%#x) in %s",
- unctrl((chtype) * s), UChar(*s), cap);
+ unctrl((chtype) *s), UChar(*s), cap);
break;
}
break;
@@ -636,8 +637,8 @@ save_tc_inequality(char *bufptr, int c1, int c2)
* Convert a terminfo string to termcap format. Parameters are as in
* _nc_captoinfo().
*/
-char *
-_nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parametrized)
+NCURSES_EXPORT(char *)
+_nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameterized)
{
int seenone = 0, seentwo = 0, saw_m = 0, saw_n = 0;
const char *padding;
@@ -649,11 +650,11 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parametrize
/* we may have to move some trailing mandatory padding up front */
padding = str + strlen(str) - 1;
- if (*padding == '>' && *--padding == '/') {
+ if (padding > str && *padding == '>' && *--padding == '/') {
--padding;
while (isdigit(UChar(*padding)) || *padding == '.' || *padding == '*')
padding--;
- if (*padding == '<' && *--padding == '$')
+ if (padding > str && *padding == '<' && *--padding == '$')
trimmed = padding;
padding += 2;
@@ -678,7 +679,8 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parametrize
--str;
} else if (str[0] == '%' && str[1] == '%') { /* escaped '%' */
bufptr = save_string(bufptr, "%%");
- } else if (*str != '%' || (parametrized < 1)) {
+ ++str;
+ } else if (*str != '%' || (parameterized < 1)) {
bufptr = save_char(bufptr, *str);
} else if (sscanf(str, "%%?%%{%d}%%>%%t%%{%d}%%+%%;", &c1, &c2) == 2) {
str = strchr(str, ';');
@@ -833,4 +835,13 @@ main(int argc, char *argv[])
}
#endif /* MAIN */
-/* captoinfo.c ends here */
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_captoinfo_leaks(void)
+{
+ if (my_string != 0) {
+ FreeAndNull(my_string);
+ }
+ my_length = 0;
+}
+#endif
diff --git a/contrib/ncurses/ncurses/tinfo/comp_error.c b/contrib/ncurses/ncurses/tinfo/comp_error.c
index e67cb795dd33..015f34886eb1 100644
--- a/contrib/ncurses/ncurses/tinfo/comp_error.c
+++ b/contrib/ncurses/ncurses/tinfo/comp_error.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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 *
@@ -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 *
****************************************************************************/
/*
@@ -40,7 +41,7 @@
#include <tic.h>
-MODULE_ID("$Id: comp_error.c,v 1.23 2001/09/23 00:58:30 tom Exp $")
+MODULE_ID("$Id: comp_error.c,v 1.30 2005/11/26 15:28:47 tom Exp $")
NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE;
NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */
@@ -49,6 +50,12 @@ NCURSES_EXPORT_VAR(int) _nc_curr_col = 0; /* current column # in input */
static const char *sourcename;
static char *termtype;
+NCURSES_EXPORT(const char *)
+_nc_get_source(void)
+{
+ return sourcename;
+}
+
NCURSES_EXPORT(void)
_nc_set_source(const char *const name)
{
@@ -59,19 +66,28 @@ NCURSES_EXPORT(void)
_nc_set_type(const char *const name)
{
if (termtype == 0)
- termtype = _nc_doalloc(termtype, MAX_NAME_SIZE + 1);
- termtype[0] = '\0';
- if (name)
- strncat(termtype, name, MAX_NAME_SIZE);
+ termtype = typeMalloc(char, MAX_NAME_SIZE + 1);
+ if (termtype != 0) {
+ termtype[0] = '\0';
+ if (name)
+ strncat(termtype, name, MAX_NAME_SIZE);
+ }
}
NCURSES_EXPORT(void)
_nc_get_type(char *name)
{
- strcpy(name, termtype != 0 ? termtype : "");
+#if NO_LEAKS
+ if (name == 0 && termtype != 0) {
+ FreeAndNull(termtype);
+ return;
+ }
+#endif
+ if (name != 0)
+ strcpy(name, termtype != 0 ? termtype : "");
}
-static inline void
+static NCURSES_INLINE void
where_is_problem(void)
{
fprintf(stderr, "\"%s\"", sourcename);
diff --git a/contrib/ncurses/ncurses/tinfo/comp_expand.c b/contrib/ncurses/ncurses/tinfo/comp_expand.c
index 7ba438aff8e2..ef419d84cd2c 100644
--- a/contrib/ncurses/ncurses/tinfo/comp_expand.c
+++ b/contrib/ncurses/ncurses/tinfo/comp_expand.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2006 Free 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 <tic.h>
-MODULE_ID("$Id: comp_expand.c,v 1.17 2001/09/22 19:16:52 tom Exp $")
+MODULE_ID("$Id: comp_expand.c,v 1.18 2006/06/17 19:37:14 tom Exp $")
static int
trailing_spaces(const char *src)
@@ -50,8 +50,7 @@ trailing_spaces(const char *src)
#define REALPRINT(s) (UChar(*(s)) < 127 && isprint(UChar(*(s))))
NCURSES_EXPORT(char *)
-_nc_tic_expand
-(const char *srcp, bool tic_format, int numbers)
+_nc_tic_expand(const char *srcp, bool tic_format, int numbers)
{
static char *buffer;
static size_t length;
@@ -62,6 +61,15 @@ _nc_tic_expand
size_t need = (2 + strlen(str)) * 4;
int ch;
+#if NO_LEAKS
+ if (srcp == 0) {
+ if (buffer != 0) {
+ FreeAndNull(buffer);
+ length = 0;
+ }
+ return 0;
+ }
+#endif
if (buffer == 0 || need > length) {
if ((buffer = typeRealloc(char, length = need, buffer)) == 0)
return 0;
diff --git a/contrib/ncurses/ncurses/tinfo/comp_hash.c b/contrib/ncurses/ncurses/tinfo/comp_hash.c
index 9f2ee71041e4..d4d9eaa62e13 100644
--- a/contrib/ncurses/ncurses/tinfo/comp_hash.c
+++ b/contrib/ncurses/ncurses/tinfo/comp_hash.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,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 *
@@ -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 *
****************************************************************************/
/*
@@ -37,6 +38,7 @@
*
*/
+#define USE_TERMLIB 1
#include <curses.priv.h>
#include <tic.h>
@@ -48,7 +50,7 @@
#define DEBUG(level, params) /*nothing */
#endif
-MODULE_ID("$Id: comp_hash.c,v 1.25 2001/06/02 22:50:42 skimo Exp $")
+MODULE_ID("$Id: comp_hash.c,v 1.28 2005/08/20 19:58:18 tom Exp $")
static int hash_function(const char *);
@@ -97,12 +99,11 @@ _nc_make_hash_table(struct name_table_entry *table,
* Computes the hashing function on the given string.
*
* The current hash function is the sum of each consectutive pair
- * of characters, taken as two-byte integers, mod Hashtabsize.
+ * of characters, taken as two-byte integers, mod HASHTABSIZE.
*
*/
-static
-int
+static int
hash_function(const char *string)
{
long sum = 0;
@@ -128,8 +129,8 @@ hash_function(const char *string)
#ifndef MAIN_PROGRAM
NCURSES_EXPORT(struct name_table_entry const *)
-_nc_find_entry
-(const char *string, const struct name_table_entry *const *hash_table)
+_nc_find_entry(const char *string,
+ const struct name_table_entry *const *hash_table)
{
int hashvalue;
struct name_table_entry const *ptr;
@@ -159,10 +160,9 @@ _nc_find_entry
*/
NCURSES_EXPORT(struct name_table_entry const *)
-_nc_find_type_entry
-(const char *string,
- int type,
- const struct name_table_entry *table)
+_nc_find_type_entry(const char *string,
+ int type,
+ const struct name_table_entry *table)
{
struct name_table_entry const *ptr;
diff --git a/contrib/ncurses/ncurses/tinfo/comp_parse.c b/contrib/ncurses/ncurses/tinfo/comp_parse.c
index f11843828e09..667b3257f25a 100644
--- a/contrib/ncurses/ncurses/tinfo/comp_parse.c
+++ b/contrib/ncurses/ncurses/tinfo/comp_parse.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,18 +29,19 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*
* comp_parse.c -- parser driver loop and use handling.
*
* _nc_read_entry_source(FILE *, literal, bool, bool (*hook)())
- * _nc_resolve_uses(void)
+ * _nc_resolve_uses2(void)
* _nc_free_entries(void)
*
* Use this code by calling _nc_read_entry_source() on as many source
* files as you like (either terminfo or termcap syntax). If you
- * want use-resolution, call _nc_resolve_uses(). To free the list
+ * want use-resolution, call _nc_resolve_uses2(). To free the list
* storage, do _nc_free_entries().
*
*/
@@ -52,8 +53,12 @@
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: comp_parse.c,v 1.50 2001/06/16 17:52:18 tom Exp $")
+MODULE_ID("$Id: comp_parse.c,v 1.63 2006/07/08 18:55:14 tom Exp $")
+static void sanity_check2(TERMTYPE *, bool);
+NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanity_check2;
+
+/* obsolete: 20040705 */
static void sanity_check(TERMTYPE *);
NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype) (TERMTYPE *) = sanity_check;
@@ -81,14 +86,14 @@ NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype) (TERMTYPE *) = sanity_check
NCURSES_EXPORT_VAR(ENTRY *) _nc_head = 0;
NCURSES_EXPORT_VAR(ENTRY *) _nc_tail = 0;
- static void
- enqueue(ENTRY * ep)
+static void
+enqueue(ENTRY * ep)
/* add an entry to the in-core list */
{
ENTRY *newp = _nc_copy_entry(ep);
if (newp == 0)
- _nc_err_abort("Out of memory");
+ _nc_err_abort(MSG_NO_MEMORY);
newp->last = _nc_tail;
_nc_tail = newp;
@@ -102,24 +107,44 @@ NCURSES_EXPORT(void)
_nc_free_entries(ENTRY * headp)
/* free the allocated storage consumed by list entries */
{
- ENTRY *ep, *next;
+ (void) headp; /* unused - _nc_head is altered here! */
- for (ep = headp; ep; ep = next) {
- /*
- * This conditional lets us disconnect storage from the list.
- * To do this, copy an entry out of the list, then null out
- * the string-table member in the original and any use entries
- * it references.
- */
- FreeIfNeeded(ep->tterm.str_table);
+ while (_nc_head != 0) {
+ _nc_free_termtype(&(_nc_head->tterm));
+ }
+}
+
+NCURSES_EXPORT(ENTRY *)
+_nc_delink_entry(ENTRY * headp, TERMTYPE *tterm)
+/* delink the allocated storage for the given list entry */
+{
+ ENTRY *ep, *last;
+
+ for (last = 0, ep = headp; ep != 0; last = ep, ep = ep->next) {
+ if (&(ep->tterm) == tterm) {
+ if (last != 0) {
+ last->next = ep->next;
+ }
+ if (ep == _nc_head) {
+ _nc_head = ep->next;
+ }
+ if (ep == _nc_tail) {
+ _nc_tail = last;
+ }
+ break;
+ }
+ }
+ return ep;
+}
- next = ep->next;
+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);
- if (ep == _nc_head)
- _nc_head = 0;
- if (ep == _nc_tail)
- _nc_tail = 0;
}
}
@@ -163,7 +188,7 @@ _nc_entry_match(char *n1, char *n2)
****************************************************************************/
NCURSES_EXPORT(void)
-_nc_read_entry_source(FILE * fp, char *buf,
+_nc_read_entry_source(FILE *fp, char *buf,
int literal, bool silent,
bool(*hook) (ENTRY *))
/* slurp all entries in the given file into core */
@@ -184,14 +209,25 @@ _nc_read_entry_source(FILE * fp, char *buf,
_nc_err_abort("terminal names must start with letter or digit");
/*
- * This can be used for immediate compilation of entries with no
- * use references to disk, so as to avoid chewing up a lot of
- * core when the resolution code could fetch entries off disk.
+ * This can be used for immediate compilation of entries with no "use="
+ * references to disk. That avoids consuming a lot of memory when the
+ * resolution code could fetch entries off disk.
*/
- if (hook != NULLHOOK && (*hook) (&thisentry))
+ if (hook != NULLHOOK && (*hook) (&thisentry)) {
immediate++;
- else
+ } else {
enqueue(&thisentry);
+ /*
+ * The enqueued entry is copied with _nc_copy_termtype(), so we can
+ * free some of the data from thisentry, i.e., the arrays.
+ */
+ FreeIfNeeded(thisentry.tterm.Booleans);
+ FreeIfNeeded(thisentry.tterm.Numbers);
+ FreeIfNeeded(thisentry.tterm.Strings);
+#if NCURSES_XNAMES
+ FreeIfNeeded(thisentry.tterm.ext_Names);
+#endif
+ }
}
if (_nc_tail) {
@@ -211,12 +247,12 @@ _nc_read_entry_source(FILE * fp, char *buf,
}
NCURSES_EXPORT(int)
-_nc_resolve_uses(bool fullresolve)
+_nc_resolve_uses2(bool fullresolve, bool literal)
/* try to resolve all use capabilities */
{
ENTRY *qp, *rp, *lastread = 0;
bool keepgoing;
- int i, j, unresolved, total_unresolved, multiples;
+ int i, unresolved, total_unresolved, multiples;
DEBUG(2, ("RESOLUTION BEGINNING"));
@@ -289,7 +325,7 @@ _nc_resolve_uses(bool fullresolve)
rp = typeMalloc(ENTRY, 1);
if (rp == 0)
- _nc_err_abort("Out of memory");
+ _nc_err_abort(MSG_NO_MEMORY);
rp->tterm = thisterm;
rp->nuses = 0;
rp->next = lastread;
@@ -320,8 +356,8 @@ _nc_resolve_uses(bool fullresolve)
DEBUG(2, ("NAME RESOLUTION COMPLETED OK"));
/*
- * OK, at this point all (char *) references in `name' mwmbers
- * have been successfully converred to (ENTRY *) pointers in
+ * OK, at this point all (char *) references in `name' members
+ * have been successfully converted to (ENTRY *) pointers in
* `link' members. Time to do the actual merges.
*/
if (fullresolve) {
@@ -347,10 +383,10 @@ _nc_resolve_uses(bool fullresolve)
}
/*
- * First, make sure there's no garbage in the
- * merge block. as a side effect, copy into
- * the merged entry the name field and string
- * table pointer.
+ * First, make sure there is no garbage in the
+ * merge block. As a side effect, copy into
+ * the merged entry the name field and string
+ * table pointer.
*/
_nc_copy_termtype(&merged, &(qp->tterm));
@@ -373,6 +409,9 @@ _nc_resolve_uses(bool fullresolve)
FreeIfNeeded(qp->tterm.Booleans);
FreeIfNeeded(qp->tterm.Numbers);
FreeIfNeeded(qp->tterm.Strings);
+#if NCURSES_XNAMES
+ FreeIfNeeded(qp->tterm.ext_Names);
+#endif
qp->tterm = merged;
_nc_wrap_entry(qp, TRUE);
@@ -389,26 +428,6 @@ _nc_resolve_uses(bool fullresolve)
(keepgoing);
DEBUG(2, ("MERGES COMPLETED OK"));
-
- /*
- * The exit condition of the loop above is such that all entries
- * must now be resolved. Now handle cancellations. In a resolved
- * entry there should be no cancellation markers.
- */
- for_entry_list(qp) {
- for_each_boolean(j, &(qp->tterm)) {
- if ((int) qp->tterm.Booleans[j] == CANCELLED_BOOLEAN)
- qp->tterm.Booleans[j] = ABSENT_BOOLEAN;
- }
- for_each_number(j, &(qp->tterm)) {
- if (qp->tterm.Numbers[j] == CANCELLED_NUMERIC)
- qp->tterm.Numbers[j] = ABSENT_NUMERIC;
- }
- for_each_string(j, &(qp->tterm)) {
- if (qp->tterm.Strings[j] == CANCELLED_STRING)
- qp->tterm.Strings[j] = ABSENT_STRING;
- }
- }
}
/*
@@ -426,7 +445,7 @@ _nc_resolve_uses(bool fullresolve)
for_entry_list(qp) {
_nc_curr_line = qp->startline;
_nc_set_type(_nc_first_name(qp->tterm.term_names));
- _nc_check_termtype(&qp->tterm);
+ _nc_check_termtype2(&qp->tterm, literal);
}
DEBUG(2, ("SANITY CHECK FINISHED"));
}
@@ -434,6 +453,13 @@ _nc_resolve_uses(bool fullresolve)
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 ---
@@ -444,7 +470,7 @@ _nc_resolve_uses(bool fullresolve)
#define CUR tp->
static void
-sanity_check(TERMTYPE * tp)
+sanity_check2(TERMTYPE *tp, bool literal)
{
if (!PRESENT(exit_attribute_mode)) {
#ifdef __UNUSED__ /* this casts too wide a net */
@@ -461,22 +487,24 @@ sanity_check(TERMTYPE * tp)
|| PRESENT(enter_reverse_mode)))
_nc_warning("no exit_attribute_mode");
#endif /* __UNUSED__ */
- PAIRED(enter_standout_mode, exit_standout_mode)
- PAIRED(enter_underline_mode, exit_underline_mode)
+ PAIRED(enter_standout_mode, exit_standout_mode);
+ PAIRED(enter_underline_mode, exit_underline_mode);
}
/* we do this check/fix in postprocess_termcap(), but some packagers
* prefer to bypass it...
*/
- if (acs_chars == 0
- && enter_alt_charset_mode != 0
- && exit_alt_charset_mode != 0)
- acs_chars = strdup(VT_ACSC);
+ if (!literal) {
+ if (acs_chars == 0
+ && enter_alt_charset_mode != 0
+ && exit_alt_charset_mode != 0)
+ acs_chars = strdup(VT_ACSC);
+ ANDMISSING(enter_alt_charset_mode, acs_chars);
+ ANDMISSING(exit_alt_charset_mode, acs_chars);
+ }
/* listed in structure-member order of first argument */
PAIRED(enter_alt_charset_mode, exit_alt_charset_mode);
- ANDMISSING(enter_alt_charset_mode, acs_chars);
- ANDMISSING(exit_alt_charset_mode, acs_chars);
ANDMISSING(enter_blink_mode, exit_attribute_mode);
ANDMISSING(enter_bold_mode, exit_attribute_mode);
PAIRED(exit_ca_mode, enter_ca_mode);
@@ -499,3 +527,10 @@ sanity_check(TERMTYPE * tp)
#endif
ANDMISSING(set_color_pair, initialize_pair);
}
+
+/* obsolete: 20040705 */
+static void
+sanity_check(TERMTYPE *tp)
+{
+ sanity_check2(tp, FALSE);
+}
diff --git a/contrib/ncurses/ncurses/tinfo/comp_scan.c b/contrib/ncurses/ncurses/tinfo/comp_scan.c
index 52fb13a7f76e..e937f7eb5ada 100644
--- a/contrib/ncurses/ncurses/tinfo/comp_scan.c
+++ b/contrib/ncurses/ncurses/tinfo/comp_scan.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -50,7 +51,7 @@
#include <term_entry.h>
#include <tic.h>
-MODULE_ID("$Id: comp_scan.c,v 1.59 2001/09/23 00:56:29 tom Exp $")
+MODULE_ID("$Id: comp_scan.c,v 1.78 2006/12/16 19:17:01 tom Exp $")
/*
* Maximum length of string capability we'll accept before raising an error.
@@ -84,6 +85,7 @@ _nc_curr_token =
*****************************************************************************/
static bool first_column; /* See 'next_char()' below */
+static bool had_newline;
static char separator; /* capability separator */
static int pushtype; /* type of pushback token */
static char *pushname;
@@ -93,14 +95,196 @@ NCURSES_EXPORT_VAR(bool)
_nc_disable_period = FALSE; /* used by tic -a option */
#endif
-static int last_char(void);
-static int next_char(void);
-static long stream_pos(void);
-static bool end_of_stream(void);
-static void push_back(char c);
+/*****************************************************************************
+ *
+ * Character-stream handling
+ *
+ *****************************************************************************/
+
+#define LEXBUFSIZ 1024
+
+static char *bufptr; /* otherwise, the input buffer pointer */
+static char *bufstart; /* start of buffer so we can compute offsets */
+static FILE *yyin; /* scanner's input file descriptor */
+
+/*
+ * _nc_reset_input()
+ *
+ * Resets the input-reading routines. Used on initialization,
+ * or after a seek has been done. Exactly one argument must be
+ * non-null.
+ */
+
+NCURSES_EXPORT(void)
+_nc_reset_input(FILE *fp, char *buf)
+{
+ pushtype = NO_PUSHBACK;
+ if (pushname != 0)
+ pushname[0] = '\0';
+ yyin = fp;
+ bufstart = bufptr = buf;
+ _nc_curr_file_pos = 0L;
+ if (fp != 0)
+ _nc_curr_line = 0;
+ _nc_curr_col = 0;
+}
+
+/*
+ * int last_char()
+ *
+ * Returns the final nonblank character on the current input buffer
+ */
+static int
+last_char(void)
+{
+ size_t len = strlen(bufptr);
+ while (len--) {
+ if (!isspace(UChar(bufptr[len])))
+ return bufptr[len];
+ }
+ return 0;
+}
+
+/*
+ * int next_char()
+ *
+ * Returns the next character in the input stream. Comments and leading
+ * white space are stripped.
+ *
+ * The global state variable 'firstcolumn' is set TRUE if the character
+ * returned is from the first column of the input line.
+ *
+ * The global variable _nc_curr_line is incremented for each new line.
+ * The global variable _nc_curr_file_pos is set to the file offset of the
+ * beginning of each line.
+ */
+
+static int
+next_char(void)
+{
+ static char *result;
+ static size_t allocated;
+ int the_char;
+
+ if (!yyin) {
+ if (result != 0) {
+ FreeAndNull(result);
+ FreeAndNull(pushname);
+ allocated = 0;
+ }
+ /*
+ * An string with an embedded null will truncate the input. This is
+ * intentional (we don't read binary files here).
+ */
+ if (bufptr == 0 || *bufptr == '\0')
+ return (EOF);
+ if (*bufptr == '\n') {
+ _nc_curr_line++;
+ _nc_curr_col = 0;
+ } else if (*bufptr == '\t') {
+ _nc_curr_col = (_nc_curr_col | 7);
+ }
+ } else if (!bufptr || !*bufptr) {
+ /*
+ * In theory this could be recoded to do its I/O one character at a
+ * time, saving the buffer space. In practice, this turns out to be
+ * 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 {
+ bufstart = 0;
+ used = 0;
+ do {
+ if (used + (LEXBUFSIZ / 4) >= allocated) {
+ allocated += (allocated + LEXBUFSIZ);
+ result = typeRealloc(char, allocated, result);
+ if (result == 0)
+ return (EOF);
+ }
+ if (used == 0)
+ _nc_curr_file_pos = ftell(yyin);
+
+ if (fgets(result + used, (int) (allocated - used), yyin) != 0) {
+ bufstart = result;
+ if (used == 0) {
+ _nc_curr_line++;
+ _nc_curr_col = 0;
+ }
+ } else {
+ if (used != 0)
+ strcat(result, "\n");
+ }
+ if ((bufptr = bufstart) != 0) {
+ used = strlen(bufptr);
+ while (iswhite(*bufptr)) {
+ if (*bufptr == '\t') {
+ _nc_curr_col = (_nc_curr_col | 7) + 1;
+ } else {
+ _nc_curr_col++;
+ }
+ bufptr++;
+ }
+
+ /*
+ * Treat a trailing <cr><lf> the same as a <newline> so we
+ * can read files on OS/2, etc.
+ */
+ if ((len = strlen(bufptr)) > 1) {
+ if (bufptr[len - 1] == '\n'
+ && bufptr[len - 2] == '\r') {
+ len--;
+ bufptr[len - 1] = '\n';
+ bufptr[len] = '\0';
+ }
+ }
+ } else {
+ return (EOF);
+ }
+ } while (bufptr[len - 1] != '\n'); /* complete a line */
+ } while (result[0] == '#'); /* ignore comments */
+ } else if (*bufptr == '\t') {
+ _nc_curr_col = (_nc_curr_col | 7);
+ }
+
+ first_column = (bufptr == bufstart);
+ if (first_column)
+ had_newline = FALSE;
+
+ _nc_curr_col++;
+ the_char = *bufptr++;
+ return UChar(the_char);
+}
+
+static void
+push_back(char c)
+/* push a character back onto the input stream */
+{
+ if (bufptr == bufstart)
+ _nc_syserr_abort("Can't backspace off beginning of line");
+ *--bufptr = c;
+ _nc_curr_col--;
+}
+
+static long
+stream_pos(void)
+/* return our current character position in the input stream */
+{
+ return (yyin ? ftell(yyin) : (bufptr ? bufptr - bufstart : 0));
+}
+
+static bool
+end_of_stream(void)
+/* are we at end of input? */
+{
+ return ((yyin ? feof(yyin) : (bufptr && *bufptr == '\0'))
+ ? TRUE : FALSE);
+}
/* Assume we may be looking at a termcap-style continuation */
-static inline int
+static NCURSES_INLINE int
eat_escaped_newline(int ch)
{
if (ch == '\\')
@@ -148,8 +332,11 @@ _nc_get_token(bool silent)
static const char terminfo_punct[] = "@%&*!#";
static char *buffer;
+ char *after_list;
+ char *after_name;
char *numchk;
char *ptr;
+ char *s;
char numbuf[80];
int ch;
int dot_flag = FALSE;
@@ -157,6 +344,10 @@ _nc_get_token(bool silent)
long number;
long token_start;
unsigned found;
+#ifdef TRACE
+ int old_line;
+ int old_col;
+#endif
if (pushtype != NO_PUSHBACK) {
int retval = pushtype;
@@ -173,16 +364,31 @@ _nc_get_token(bool silent)
return (retval);
}
- if (end_of_stream())
+ if (end_of_stream()) {
+ yyin = 0;
+ next_char(); /* frees its allocated memory */
+ if (buffer != 0) {
+ if (_nc_curr_token.tk_name == buffer)
+ _nc_curr_token.tk_name = 0;
+ FreeAndNull(buffer);
+ }
return (EOF);
+ }
start_token:
token_start = stream_pos();
- while ((ch = next_char()) == '\n' || iswhite(ch))
+ while ((ch = next_char()) == '\n' || iswhite(ch)) {
+ if (ch == '\n')
+ had_newline = TRUE;
continue;
+ }
ch = eat_escaped_newline(ch);
+#ifdef TRACE
+ old_line = _nc_curr_line;
+ old_col = _nc_curr_col;
+#endif
if (ch == EOF)
type = EOF;
else {
@@ -208,36 +414,44 @@ _nc_get_token(bool silent)
}
/* have to make some punctuation chars legal for terminfo */
- if (!isalnum(ch)
+ if (!isalnum(UChar(ch))
#if NCURSES_EXT_FUNCS
&& !(ch == '.' && _nc_disable_period)
#endif
&& !strchr(terminfo_punct, (char) ch)) {
if (!silent)
- _nc_warning("Illegal character (expected alphanumeric or %s) - %s",
+ _nc_warning("Illegal character (expected alphanumeric or %s) - '%s'",
terminfo_punct, unctrl((chtype) ch));
_nc_panic_mode(separator);
goto start_token;
}
if (buffer == 0)
- buffer = _nc_doalloc(buffer, MAX_ENTRY_SIZE);
+ buffer = typeMalloc(char, MAX_ENTRY_SIZE);
+#ifdef TRACE
+ old_line = _nc_curr_line;
+ old_col = _nc_curr_col;
+#endif
ptr = buffer;
*(ptr++) = ch;
if (first_column) {
- char *desc;
-
_nc_comment_start = token_start;
_nc_comment_end = _nc_curr_file_pos;
_nc_start_line = _nc_curr_line;
_nc_syntax = ERR;
+ after_name = 0;
+ after_list = 0;
while ((ch = next_char()) != '\n') {
- if (ch == EOF)
- _nc_err_abort("premature EOF");
- else if (ch == ':' && last_char() != ',') {
+ if (ch == EOF) {
+ _nc_err_abort(MSG_NO_INPUTS);
+ } else if (ch == '|') {
+ after_list = ptr;
+ if (after_name == 0)
+ after_name = ptr;
+ } else if (ch == ':' && last_char() != ',') {
_nc_syntax = SYN_TERMCAP;
separator = ':';
break;
@@ -245,14 +459,18 @@ _nc_get_token(bool silent)
_nc_syntax = SYN_TERMINFO;
separator = ',';
/*
- * Fall-through here is not an accident. The idea is that
- * if we see a comma, we figure this is terminfo unless we
- * subsequently run into a colon -- but we don't stop
- * looking for that colon until hitting a newline. This
+ * If we did not see a '|', then we found a name with no
+ * aliases or description.
+ */
+ if (after_name == 0)
+ break;
+ /*
+ * If we see a comma, we assume this is terminfo unless we
+ * subsequently run into a colon. But we don't stop
+ * looking for a colon until hitting a newline. This
* allows commas to be embedded in description fields of
* either syntax.
*/
- /* FALLTHRU */
} else
ch = eat_escaped_newline(ch);
@@ -277,58 +495,62 @@ _nc_get_token(bool silent)
/*
* This is the soonest we have the terminal name fetched. Set up
- * for following warning messages.
+ * for following warning messages. If there's no '|', then there
+ * is no description.
*/
- ptr = strchr(buffer, '|');
- if (ptr == (char *) NULL)
- ptr = buffer + strlen(buffer);
- ch = *ptr;
- *ptr = '\0';
- _nc_set_type(buffer);
- *ptr = ch;
+ if (after_name != 0) {
+ ch = *after_name;
+ *after_name = '\0';
+ _nc_set_type(buffer);
+ *after_name = ch;
+ }
/*
* Compute the boundary between the aliases and the description
* field for syntax-checking purposes.
*/
- desc = strrchr(buffer, '|');
- if (!silent && desc) {
- if (*desc == '\0')
- _nc_warning("empty longname field");
- else if (strchr(desc, ' ') == (char *) NULL)
- _nc_warning("older tic versions may treat the description field as an alias");
+ if (after_list != 0) {
+ if (!silent) {
+ if (*after_list == '\0')
+ _nc_warning("empty longname field");
+ else if (strchr(after_list, ' ') == 0)
+ _nc_warning("older tic versions may treat the description field as an alias");
+ }
+ } else {
+ after_list = buffer + strlen(buffer);
+ DEBUG(1, ("missing description"));
}
- if (!desc)
- desc = buffer + strlen(buffer);
/*
* Whitespace in a name field other than the long name can confuse
* rdist and some termcap tools. Slashes are a no-no. Other
* special characters can be dangerous due to shell expansion.
*/
- for (ptr = buffer; ptr < desc; ptr++) {
- if (isspace(UChar(*ptr))) {
+ for (s = buffer; s < after_list; ++s) {
+ if (isspace(UChar(*s))) {
if (!silent)
_nc_warning("whitespace in name or alias field");
break;
- } else if (*ptr == '/') {
+ } else if (*s == '/') {
if (!silent)
_nc_warning("slashes aren't allowed in names or aliases");
break;
- } else if (strchr("$[]!*?", *ptr)) {
+ } else if (strchr("$[]!*?", *s)) {
if (!silent)
- _nc_warning("dubious character `%c' in name or alias field", *ptr);
+ _nc_warning("dubious character `%c' in name or alias field", *s);
break;
}
}
- ptr = buffer;
-
_nc_curr_token.tk_name = buffer;
type = NAMES;
} else {
+ if (had_newline && _nc_syntax == SYN_TERMCAP) {
+ _nc_warning("Missing backslash before newline");
+ had_newline = FALSE;
+ }
while ((ch = next_char()) != EOF) {
- if (!isalnum(ch)) {
+ if (!isalnum(UChar(ch))) {
if (_nc_syntax == SYN_TERMINFO) {
if (ch != '_')
break;
@@ -393,7 +615,7 @@ _nc_get_token(bool silent)
/* just to get rid of the compiler warning */
type = UNDEF;
if (!silent)
- _nc_warning("Illegal character - %s", unctrl((chtype) ch));
+ _nc_warning("Illegal character - '%s'", unctrl((chtype) ch));
}
} /* end else (first_column == FALSE) */
} /* end else (ch != EOF) */
@@ -404,6 +626,11 @@ _nc_get_token(bool silent)
if (dot_flag == TRUE)
DEBUG(8, ("Commented out "));
+ if (_nc_tracing >= DEBUG_LEVEL(8)) {
+ _tracef("parsed %d.%d to %d.%d",
+ old_line, old_col,
+ _nc_curr_line, _nc_curr_col);
+ }
if (_nc_tracing >= DEBUG_LEVEL(7)) {
switch (type) {
case BOOLEAN:
@@ -448,8 +675,9 @@ _nc_get_token(bool silent)
type = _nc_get_token(silent);
DEBUG(3, ("token: `%s', class %d",
- _nc_curr_token.tk_name != 0 ? _nc_curr_token.tk_name :
- "<null>",
+ ((_nc_curr_token.tk_name != 0)
+ ? _nc_curr_token.tk_name
+ : "<null>"),
type));
return (type);
@@ -474,7 +702,7 @@ _nc_get_token(bool silent)
*
*/
-NCURSES_EXPORT(char)
+NCURSES_EXPORT(int)
_nc_trans_string(char *ptr, char *last)
{
int count = 0;
@@ -492,10 +720,10 @@ _nc_trans_string(char *ptr, char *last)
if (ch == '^' && last_ch != '%') {
ch = c = next_char();
if (c == EOF)
- _nc_err_abort("Premature EOF");
+ _nc_err_abort(MSG_NO_INPUTS);
if (!(is7bits(ch) && isprint(ch))) {
- _nc_warning("Illegal ^ character - %s", unctrl(ch));
+ _nc_warning("Illegal ^ character - '%s'", unctrl(ch));
}
if (ch == '?') {
*(ptr++) = '\177';
@@ -509,14 +737,14 @@ _nc_trans_string(char *ptr, char *last)
} else if (ch == '\\') {
ch = c = next_char();
if (c == EOF)
- _nc_err_abort("Premature EOF");
+ _nc_err_abort(MSG_NO_INPUTS);
if (ch >= '0' && ch <= '7') {
number = ch - '0';
for (i = 0; i < 2; i++) {
ch = c = next_char();
if (c == EOF)
- _nc_err_abort("Premature EOF");
+ _nc_err_abort(MSG_NO_INPUTS);
if (c < '0' || c > '7') {
if (isdigit(c)) {
@@ -590,21 +818,31 @@ _nc_trans_string(char *ptr, char *last)
continue;
default:
- _nc_warning("Illegal character %s in \\ sequence",
+ _nc_warning("Illegal character '%s' in \\ sequence",
unctrl(ch));
+ /* FALLTHRU */
+ case '|':
*(ptr++) = (char) ch;
} /* endswitch (ch) */
} /* endelse (ch < '0' || ch > '7') */
}
/* end else if (ch == '\\') */
else if (ch == '\n' && (_nc_syntax == SYN_TERMINFO)) {
- /* newlines embedded in a terminfo string are ignored */
+ /*
+ * Newlines embedded in a terminfo string are ignored, provided
+ * that the next line begins with whitespace.
+ */
ignored = TRUE;
} else {
*(ptr++) = (char) ch;
}
if (!ignored) {
+ if (_nc_curr_col <= 1) {
+ push_back(ch);
+ ch = '\n';
+ break;
+ }
last_ch = ch;
count++;
}
@@ -639,11 +877,14 @@ _nc_push_token(int tokclass)
*/
pushtype = tokclass;
if (pushname == 0)
- pushname = _nc_doalloc(pushname, MAX_NAME_SIZE + 1);
+ pushname = typeMalloc(char, MAX_NAME_SIZE + 1);
_nc_get_type(pushname);
DEBUG(3, ("pushing token: `%s', class %d",
- _nc_curr_token.tk_name, pushtype));
+ ((_nc_curr_token.tk_name != 0)
+ ? _nc_curr_token.tk_name
+ : "<null>"),
+ pushtype));
}
/*
@@ -663,169 +904,12 @@ _nc_panic_mode(char ch)
}
}
-/*****************************************************************************
- *
- * Character-stream handling
- *
- *****************************************************************************/
-
-#define LEXBUFSIZ 1024
-
-static char *bufptr; /* otherwise, the input buffer pointer */
-static char *bufstart; /* start of buffer so we can compute offsets */
-static FILE *yyin; /* scanner's input file descriptor */
-
-/*
- * _nc_reset_input()
- *
- * Resets the input-reading routines. Used on initialization,
- * or after a seek has been done. Exactly one argument must be
- * non-null.
- */
-
+#if NO_LEAKS
NCURSES_EXPORT(void)
-_nc_reset_input(FILE * fp, char *buf)
-{
- pushtype = NO_PUSHBACK;
- if (pushname != 0)
- pushname[0] = '\0';
- yyin = fp;
- bufstart = bufptr = buf;
- _nc_curr_file_pos = 0L;
- if (fp != 0)
- _nc_curr_line = 0;
- _nc_curr_col = 0;
-}
-
-/*
- * int last_char()
- *
- * Returns the final nonblank character on the current input buffer
- */
-static int
-last_char(void)
+_nc_comp_scan_leaks(void)
{
- size_t len = strlen(bufptr);
- while (len--) {
- if (!isspace(UChar(bufptr[len])))
- return bufptr[len];
- }
- return 0;
-}
-
-/*
- * int next_char()
- *
- * Returns the next character in the input stream. Comments and leading
- * white space are stripped.
- *
- * The global state variable 'firstcolumn' is set TRUE if the character
- * returned is from the first column of the input line.
- *
- * The global variable _nc_curr_line is incremented for each new line.
- * The global variable _nc_curr_file_pos is set to the file offset of the
- * beginning of each line.
- */
-
-static int
-next_char(void)
-{
- if (!yyin) {
- /*
- * An string with an embedded null will truncate the input. This is
- * intentional (we don't read binary files here).
- */
- if (*bufptr == '\0')
- return (EOF);
- if (*bufptr == '\n') {
- _nc_curr_line++;
- _nc_curr_col = 0;
- }
- } else if (!bufptr || !*bufptr) {
- /*
- * In theory this could be recoded to do its I/O one character at a
- * time, saving the buffer space. In practice, this turns out to be
- * quite hard to get completely right. Try it and see. If you
- * succeed, don't forget to hack push_back() correspondingly.
- */
- static char *result;
- static size_t allocated;
- size_t used;
- size_t len;
-
- do {
- bufstart = 0;
- used = 0;
- do {
- if (used + (LEXBUFSIZ / 4) >= allocated) {
- allocated += (allocated + LEXBUFSIZ);
- result = _nc_doalloc(result, allocated);
- if (result == 0)
- return (EOF);
- }
- if (used == 0)
- _nc_curr_file_pos = ftell(yyin);
-
- if (fgets(result + used, allocated - used, yyin) != NULL) {
- bufstart = result;
- if (used == 0) {
- _nc_curr_line++;
- _nc_curr_col = 0;
- }
- } else {
- if (used != 0)
- strcat(result, "\n");
- }
- if ((bufptr = bufstart) != 0) {
- used = strlen(bufptr);
- while (iswhite(*bufptr))
- bufptr++;
-
- /*
- * Treat a trailing <cr><lf> the same as a <newline> so we
- * can read files on OS/2, etc.
- */
- if ((len = strlen(bufptr)) > 1) {
- if (bufptr[len - 1] == '\n'
- && bufptr[len - 2] == '\r') {
- len--;
- bufptr[len - 1] = '\n';
- bufptr[len] = '\0';
- }
- }
- } else {
- return (EOF);
- }
- } while (bufptr[len - 1] != '\n'); /* complete a line */
- } while (result[0] == '#'); /* ignore comments */
+ if (pushname != 0) {
+ FreeAndNull(pushname);
}
-
- first_column = (bufptr == bufstart);
-
- _nc_curr_col++;
- return (*bufptr++);
-}
-
-static void
-push_back(char c)
-/* push a character back onto the input stream */
-{
- if (bufptr == bufstart)
- _nc_syserr_abort("Can't backspace off beginning of line");
- *--bufptr = c;
-}
-
-static long
-stream_pos(void)
-/* return our current character position in the input stream */
-{
- return (yyin ? ftell(yyin) : (bufptr ? bufptr - bufstart : 0));
-}
-
-static bool
-end_of_stream(void)
-/* are we at end of input? */
-{
- return ((yyin ? feof(yyin) : (bufptr && *bufptr == '\0'))
- ? TRUE : FALSE);
}
+#endif
diff --git a/contrib/ncurses/ncurses/tinfo/db_iterator.c b/contrib/ncurses/ncurses/tinfo/db_iterator.c
new file mode 100644
index 000000000000..e69aa5e18834
--- /dev/null
+++ b/contrib/ncurses/ncurses/tinfo/db_iterator.c
@@ -0,0 +1,227 @@
+/****************************************************************************
+ * Copyright (c) 2006 Free Software 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 2006 *
+ ****************************************************************************/
+
+/*
+ * Iterators for terminal databases.
+ */
+
+#include <curses.priv.h>
+
+#include <tic.h>
+
+MODULE_ID("$Id: db_iterator.c,v 1.5 2006/12/16 19:06:42 tom Exp $")
+
+static bool have_tic_directory = FALSE;
+static bool keep_tic_directory = FALSE;
+
+/*
+ * Record the "official" location of the terminfo directory, according to
+ * the place where we're writing to, or the normal default, if not.
+ */
+NCURSES_EXPORT(const char *)
+_nc_tic_dir(const char *path)
+{
+ static const char *result = TERMINFO;
+
+ if (!keep_tic_directory) {
+ if (path != 0) {
+ result = path;
+ have_tic_directory = TRUE;
+ } else if (!have_tic_directory && use_terminfo_vars()) {
+ char *envp;
+ if ((envp = getenv("TERMINFO")) != 0)
+ return _nc_tic_dir(envp);
+ }
+ }
+ return result;
+}
+
+/*
+ * Special fix to prevent the terminfo directory from being moved after tic
+ * has chdir'd to it. If we let it be changed, then if $TERMINFO has a
+ * relative path, we'll lose track of the actual directory.
+ */
+NCURSES_EXPORT(void)
+_nc_keep_tic_dir(const char *path)
+{
+ _nc_tic_dir(path);
+ keep_tic_directory = TRUE;
+}
+
+/*
+ * Process the list of :-separated directories, looking for the terminal type.
+ * We don't use strtok because it does not show us empty tokens.
+ */
+
+static char *this_db_list = 0;
+static int size_db_list;
+
+/*
+ * Cleanup.
+ */
+NCURSES_EXPORT(void)
+_nc_last_db(void)
+{
+ if (this_db_list != 0) {
+ FreeAndNull(this_db_list);
+ }
+ size_db_list = 0;
+}
+
+/* The TERMINFO_DIRS value, if defined by the configure script, begins with a
+ * ":", which will be interpreted as TERMINFO.
+ */
+static const char *
+next_list_item(const char *source, int *offset)
+{
+ if (source != 0) {
+ FreeIfNeeded(this_db_list);
+ this_db_list = strdup(source);
+ size_db_list = strlen(source);
+ }
+
+ if (this_db_list != 0 && size_db_list && *offset < size_db_list) {
+ static char system_db[] = TERMINFO;
+ char *result = this_db_list + *offset;
+ char *marker = strchr(result, NCURSES_PATHSEP);
+
+ /*
+ * Put a null on the marker if a separator was found. Set the offset
+ * to the next position after the marker so we can call this function
+ * again, using the data at the offset.
+ */
+ if (marker == 0) {
+ *offset += strlen(result) + 1;
+ marker = result + *offset;
+ } else {
+ *marker++ = 0;
+ *offset = marker - this_db_list;
+ }
+ if (*result == 0 && result != (this_db_list + size_db_list))
+ result = system_db;
+ return result;
+ }
+ return 0;
+}
+
+#define NEXT_DBD(var, offset) next_list_item((*offset == 0) ? var : 0, offset)
+
+/*
+ * This is a simple iterator which allows the caller to step through the
+ * possible locations for a terminfo directory. ncurses uses this to find
+ * terminfo files to read.
+ */
+NCURSES_EXPORT(const char *)
+_nc_next_db(DBDIRS * state, int *offset)
+{
+ const char *result;
+ char *envp;
+
+ while (*state < dbdLAST) {
+ DBDIRS next = (DBDIRS) ((int) (*state) + 1);
+
+ result = 0;
+
+ switch (*state) {
+ case dbdTIC:
+ if (have_tic_directory)
+ result = _nc_tic_dir(0);
+ break;
+#if USE_DATABASE
+ case dbdEnvOnce:
+ if (use_terminfo_vars()) {
+ if ((envp = getenv("TERMINFO")) != 0)
+ result = _nc_tic_dir(envp);
+ }
+ break;
+ case dbdHome:
+ if (use_terminfo_vars()) {
+ result = _nc_home_terminfo();
+ }
+ break;
+ case dbdEnvList:
+ if (use_terminfo_vars()) {
+ if ((result = NEXT_DBD(getenv("TERMINFO_DIRS"), offset)) != 0)
+ next = *state;
+ }
+ break;
+ case dbdCfgList:
+#ifdef TERMINFO_DIRS
+ if ((result = NEXT_DBD(TERMINFO_DIRS, offset)) != 0)
+ next = *state;
+#endif
+ break;
+ case dbdCfgOnce:
+#ifndef TERMINFO_DIRS
+ result = TERMINFO;
+#endif
+ break;
+#endif /* USE_DATABASE */
+#if USE_TERMCAP
+ case dbdEnvOnce2:
+ if (use_terminfo_vars()) {
+ if ((envp = getenv("TERMCAP")) != 0)
+ result = _nc_tic_dir(envp);
+ }
+ break;
+ case dbdEnvList2:
+ if (use_terminfo_vars()) {
+ if ((result = NEXT_DBD(getenv("TERMPATH"), offset)) != 0)
+ next = *state;
+ }
+ break;
+ case dbdCfgList2:
+ if ((result = NEXT_DBD(TERMPATH, offset)) != 0)
+ next = *state;
+ break;
+#endif /* USE_TERMCAP */
+ case dbdLAST:
+ break;
+ }
+ if (*state != next) {
+ *state = next;
+ *offset = 0;
+ _nc_last_db();
+ }
+ if (result != 0) {
+ return result;
+ }
+ }
+ return 0;
+}
+
+NCURSES_EXPORT(void)
+_nc_first_db(DBDIRS * state, int *offset)
+{
+ *state = dbdTIC;
+ *offset = 0;
+}
diff --git a/contrib/ncurses/ncurses/tinfo/doalloc.c b/contrib/ncurses/ncurses/tinfo/doalloc.c
index 634469cdf4ac..fe2a009d19b4 100644
--- a/contrib/ncurses/ncurses/tinfo/doalloc.c
+++ b/contrib/ncurses/ncurses/tinfo/doalloc.c
@@ -39,7 +39,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: doalloc.c,v 1.7 2000/12/10 02:55:07 tom Exp $")
+MODULE_ID("$Id: doalloc.c,v 1.8 2002/08/31 21:48:11 Philippe.Blain Exp $")
NCURSES_EXPORT(void *)
_nc_doalloc(void *oldp, size_t amount)
@@ -52,7 +52,7 @@ _nc_doalloc(void *oldp, size_t amount)
errno = ENOMEM; /* just in case 'free' reset */
}
} else {
- newp = typeMalloc(char, amount);
+ newp = malloc(amount);
}
return newp;
}
diff --git a/contrib/ncurses/ncurses/tinfo/free_ttype.c b/contrib/ncurses/ncurses/tinfo/free_ttype.c
index df604e41a681..fa0fff1b83fb 100644
--- a/contrib/ncurses/ncurses/tinfo/free_ttype.c
+++ b/contrib/ncurses/ncurses/tinfo/free_ttype.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2005,2006 Free 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> 1999 *
+ * Author: Thomas E. Dickey 1999-on *
****************************************************************************/
/*
@@ -43,13 +43,14 @@
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: free_ttype.c,v 1.7 2000/12/10 02:55:07 tom Exp $")
+MODULE_ID("$Id: free_ttype.c,v 1.13 2006/06/25 10:46:02 tom Exp $")
NCURSES_EXPORT(void)
-_nc_free_termtype(TERMTYPE * ptr)
+_nc_free_termtype(TERMTYPE *ptr)
{
+ T(("_nc_free_termtype(%s)", ptr->term_names));
+
FreeIfNeeded(ptr->str_table);
- FreeIfNeeded(ptr->term_names);
FreeIfNeeded(ptr->Booleans);
FreeIfNeeded(ptr->Numbers);
FreeIfNeeded(ptr->Strings);
@@ -58,6 +59,7 @@ _nc_free_termtype(TERMTYPE * ptr)
FreeIfNeeded(ptr->ext_Names);
#endif
memset(ptr, 0, sizeof(TERMTYPE));
+ _nc_free_entry(_nc_head, ptr);
}
#if NCURSES_XNAMES
@@ -67,7 +69,9 @@ NCURSES_EXPORT(int)
use_extended_names(bool flag)
{
int oldflag = _nc_user_definable;
+
+ T((T_CALLED("use_extended_names(%d)"), flag));
_nc_user_definable = flag;
- return oldflag;
+ returnBool(oldflag);
}
#endif
diff --git a/contrib/ncurses/ncurses/tinfo/hashed_db.c b/contrib/ncurses/ncurses/tinfo/hashed_db.c
new file mode 100644
index 000000000000..3fc04eae3cca
--- /dev/null
+++ b/contrib/ncurses/ncurses/tinfo/hashed_db.c
@@ -0,0 +1,260 @@
+/****************************************************************************
+ * Copyright (c) 2006 Free Software 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 2006 *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+#include <tic.h>
+#include <hashed_db.h>
+
+#if USE_HASHED_DB
+
+MODULE_ID("$Id: hashed_db.c,v 1.13 2006/08/19 19:48:38 tom Exp $")
+
+#if HASHED_DB_API >= 2
+static DBC *cursor;
+#endif
+
+/*
+ * Open the database.
+ */
+NCURSES_EXPORT(DB *)
+_nc_db_open(const char *path, bool modify)
+{
+ DB *result = 0;
+
+#if HASHED_DB_API >= 4
+ db_create(&result, NULL, 0);
+ result->open(result,
+ NULL,
+ path,
+ NULL,
+ DB_HASH,
+ modify ? DB_CREATE : DB_RDONLY,
+ 0644);
+#elif HASHED_DB_API >= 3
+ db_create(&result, NULL, 0);
+ result->open(result,
+ path,
+ NULL,
+ DB_HASH,
+ modify ? DB_CREATE : DB_RDONLY,
+ 0644);
+#elif HASHED_DB_API >= 2
+ int code;
+
+ if ((code = db_open(path,
+ DB_HASH,
+ modify ? DB_CREATE : DB_RDONLY,
+ 0644,
+ (DB_ENV *) 0,
+ (DB_INFO *) 0,
+ &result)) != 0) {
+ T(("cannot open %s: %s", path, strerror(code)));
+ result = 0;
+ } else {
+ T(("opened %s", path));
+ }
+#else
+ result = dbopen(path,
+ modify ? (O_CREAT | O_RDWR) : O_RDONLY,
+ 0644,
+ DB_HASH,
+ NULL);
+ if (result != 0) {
+ T(("opened %s", path));
+ }
+#endif
+ return result;
+}
+
+/*
+ * Close the database. Do not attempt to use the 'db' handle after this call.
+ */
+NCURSES_EXPORT(int)
+_nc_db_close(DB * db)
+{
+ int result;
+
+#if HASHED_DB_API >= 2
+ result = db->close(db, 0);
+#else
+ result = db->close(db);
+#endif
+ return result;
+}
+
+/*
+ * Write a record to the database.
+ *
+ * Returns 0 on success.
+ *
+ * FIXME: the FreeBSD cap_mkdb program assumes the database could have
+ * duplicates. There appears to be no good reason for that (review/fix).
+ */
+NCURSES_EXPORT(int)
+_nc_db_put(DB * db, DBT * key, DBT * data)
+{
+ int result;
+#if HASHED_DB_API >= 2
+ /* remove any pre-existing value, since we do not want duplicates */
+ (void) db->del(db, NULL, key, 0);
+ result = db->put(db, NULL, key, data, DB_NOOVERWRITE);
+#else
+ result = db->put(db, key, data, R_NOOVERWRITE);
+#endif
+ return result;
+}
+
+/*
+ * Read a record from the database.
+ *
+ * Returns 0 on success.
+ */
+NCURSES_EXPORT(int)
+_nc_db_get(DB * db, DBT * key, DBT * data)
+{
+ int result;
+
+ memset(data, 0, sizeof(*data));
+#if HASHED_DB_API >= 2
+ result = db->get(db, NULL, key, data, 0);
+#else
+ result = db->get(db, key, data, 0);
+#endif
+ return result;
+}
+
+/*
+ * Read the first record from the database, ignoring order.
+ *
+ * Returns 0 on success.
+ */
+NCURSES_EXPORT(int)
+_nc_db_first(DB * db, DBT * key, DBT * data)
+{
+ int result;
+
+ memset(key, 0, sizeof(*key));
+ memset(data, 0, sizeof(*data));
+#if HASHED_DB_API >= 2
+ if ((result = db->cursor(db, NULL, &cursor, 0)) == 0) {
+ result = cursor->c_get(cursor, key, data, DB_FIRST);
+ }
+#else
+ result = db->seq(db, key, data, 0);
+#endif
+ return result;
+}
+
+/*
+ * Read the next record from the database, ignoring order.
+ *
+ * Returns 0 on success.
+ */
+NCURSES_EXPORT(int)
+_nc_db_next(DB * db, DBT * key, DBT * data)
+{
+ int result;
+
+#if HASHED_DB_API >= 2
+ (void) db;
+ if (cursor != 0) {
+ result = cursor->c_get(cursor, key, data, DB_NEXT);
+ } else {
+ result = -1;
+ }
+#else
+ result = db->seq(db, key, data, 0);
+#endif
+ return result;
+}
+
+/*
+ * Check if a record is a terminfo index record. Index records are those that
+ * contain only an alias pointing to a list of aliases.
+ */
+NCURSES_EXPORT(bool)
+_nc_db_have_index(DBT * key, DBT * data, char **buffer, int *size)
+{
+ bool result = FALSE;
+ int used = data->size - 1;
+ char *have = (char *) data->data;
+
+ (void) key;
+ if (*have++ == 2) {
+ result = TRUE;
+ }
+ /*
+ * Update params in any case for consistency with _nc_db_have_data().
+ */
+ *buffer = have;
+ *size = used;
+ return result;
+}
+
+/*
+ * Check if a record is the terminfo data record. Ignore index records, e.g.,
+ * those that contain only an alias pointing to a list of aliases.
+ */
+NCURSES_EXPORT(bool)
+_nc_db_have_data(DBT * key, DBT * data, char **buffer, int *size)
+{
+ bool result = FALSE;
+ int used = data->size - 1;
+ char *have = (char *) data->data;
+
+ if (*have++ == 0) {
+ if (data->size > key->size
+ && IS_TIC_MAGIC(have)) {
+ result = TRUE;
+ }
+ }
+ /*
+ * Update params in any case to make it simple to follow a index record
+ * to the data record.
+ */
+ *buffer = have;
+ *size = used;
+ return result;
+}
+
+#else
+
+extern
+NCURSES_EXPORT(void)
+_nc_hashed_db(void);
+
+NCURSES_EXPORT(void)
+_nc_hashed_db(void)
+{
+}
+
+#endif /* USE_HASHED_DB */
diff --git a/contrib/ncurses/ncurses/tinfo/home_terminfo.c b/contrib/ncurses/ncurses/tinfo/home_terminfo.c
index 47b3e382ef7e..ce6576a82f82 100644
--- a/contrib/ncurses/ncurses/tinfo/home_terminfo.c
+++ b/contrib/ncurses/ncurses/tinfo/home_terminfo.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998,2000 *
+ * Author: Thomas E. Dickey 1998,2000,2004,2005 *
****************************************************************************/
/*
@@ -37,7 +37,7 @@
#include <curses.priv.h>
#include <tic.h>
-MODULE_ID("$Id: home_terminfo.c,v 1.6 2000/12/10 02:55:07 tom Exp $")
+MODULE_ID("$Id: home_terminfo.c,v 1.9 2005/07/02 19:43:38 tom Exp $")
#define my_length (strlen(home) + sizeof(PRIVATE_INFO))
@@ -46,6 +46,8 @@ MODULE_ID("$Id: home_terminfo.c,v 1.6 2000/12/10 02:55:07 tom Exp $")
NCURSES_EXPORT(char *)
_nc_home_terminfo(void)
{
+ char *result = 0;
+#ifdef USE_HOME_TERMINFO
char *home;
static char *temp = 0;
@@ -55,11 +57,12 @@ _nc_home_terminfo(void)
&& my_length <= PATH_MAX) {
temp = typeMalloc(char, my_length);
if (temp == 0)
- _nc_err_abort("Out of memory");
+ _nc_err_abort(MSG_NO_MEMORY);
(void) sprintf(temp, PRIVATE_INFO, home);
}
}
- return temp;
+ result = temp;
}
- return 0;
+#endif
+ return result;
}
diff --git a/contrib/ncurses/ncurses/tinfo/init_keytry.c b/contrib/ncurses/ncurses/tinfo/init_keytry.c
index cf840e8e93b3..3461dd4d5e51 100644
--- a/contrib/ncurses/ncurses/tinfo/init_keytry.c
+++ b/contrib/ncurses/ncurses/tinfo/init_keytry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2005,2006 Free 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,11 +28,15 @@
#include <curses.priv.h>
-#include <term.h> /* keypad_xmit, keypad_local, meta_on, meta_off */
- /* cursor_visible,cursor_normal,cursor_invisible */
+#include <term.h>
+/* keypad_xmit, keypad_local, meta_on, meta_off */
+/* cursor_visible,cursor_normal,cursor_invisible */
+
#include <tic.h> /* struct tinfo_fkeys */
-MODULE_ID("$Id: init_keytry.c,v 1.5 2000/12/10 02:55:07 tom Exp $")
+#include <term_entry.h>
+
+MODULE_ID("$Id: init_keytry.c,v 1.8 2006/01/21 23:43:28 tom Exp $")
/*
** _nc_init_keytry()
@@ -69,12 +73,38 @@ _nc_init_keytry(void)
* mouse_activate() (which will call keyok()) are first called.
*/
- for (n = 0; _nc_tinfo_fkeys[n].code; n++)
- if (_nc_tinfo_fkeys[n].offset < STRCOUNT)
- _nc_add_to_try(&(SP->_keytry),
- CUR Strings[_nc_tinfo_fkeys[n].offset],
- _nc_tinfo_fkeys[n].code);
+ if (SP != 0) {
+ for (n = 0; _nc_tinfo_fkeys[n].code; n++) {
+ if (_nc_tinfo_fkeys[n].offset < STRCOUNT) {
+ _nc_add_to_try(&(SP->_keytry),
+ CUR Strings[_nc_tinfo_fkeys[n].offset],
+ _nc_tinfo_fkeys[n].code);
+ }
+ }
+#if NCURSES_XNAMES
+ /*
+ * Add any of the extended strings to the tries if their name begins
+ * with 'k', i.e., they follow the convention of other terminfo key
+ * names.
+ */
+ {
+ TERMTYPE *tp = &(SP->_term->type);
+ for (n = STRCOUNT; n < NUM_STRINGS(tp); ++n) {
+ const char *name = ExtStrname(tp, n, strnames);
+ char *value = tp->Strings[n];
+ if (name != 0
+ && *name == 'k'
+ && value != 0
+ && key_defined(value) == 0) {
+ _nc_add_to_try(&(SP->_keytry),
+ value,
+ n - STRCOUNT + KEY_MAX);
+ }
+ }
+ }
+#endif
#ifdef TRACE
- _nc_trace_tries(SP->_keytry);
+ _nc_trace_tries(SP->_keytry);
#endif
+ }
}
diff --git a/contrib/ncurses/ncurses/tinfo/lib_acs.c b/contrib/ncurses/ncurses/tinfo/lib_acs.c
index b84d8e262a2f..2719795d9d4f 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_acs.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_acs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
#include <curses.priv.h>
#include <term.h> /* ena_acs, acs_chars */
-MODULE_ID("$Id: lib_acs.c,v 1.21 2001/12/23 00:15:10 tom Exp $")
+MODULE_ID("$Id: lib_acs.c,v 1.30 2006/01/07 21:27:15 tom Exp $")
#if BROKEN_LINKER
NCURSES_EXPORT_VAR(chtype *)
@@ -55,98 +56,120 @@ NCURSES_EXPORT_VAR(chtype) acs_map[ACS_LEN] =
NCURSES_EXPORT(void)
_nc_init_acs(void)
{
+ chtype *fake_map = acs_map;
+ chtype *real_map = SP != 0 ? SP->_acs_map : fake_map;
+ int j;
+
T(("initializing ACS map"));
/*
+ * If we're using this from curses (rather than terminfo), we are storing
+ * the mapping information in the SCREEN struct so we can decide how to
+ * render it.
+ */
+ if (real_map != fake_map) {
+ for (j = 1; j < ACS_LEN; ++j) {
+ real_map[j] = 0;
+ fake_map[j] = A_ALTCHARSET | j;
+ SP->_screen_acs_map[j] = FALSE;
+ }
+ } else {
+ for (j = 1; j < ACS_LEN; ++j) {
+ real_map[j] = 0;
+ }
+ }
+
+ /*
* Initializations for a UNIX-like multi-terminal environment. Use
* ASCII chars and count on the terminfo description to do better.
*/
- ACS_ULCORNER = '+'; /* should be upper left corner */
- ACS_LLCORNER = '+'; /* should be lower left corner */
- ACS_URCORNER = '+'; /* should be upper right corner */
- ACS_LRCORNER = '+'; /* should be lower right corner */
- ACS_RTEE = '+'; /* should be tee pointing left */
- ACS_LTEE = '+'; /* should be tee pointing right */
- ACS_BTEE = '+'; /* should be tee pointing up */
- ACS_TTEE = '+'; /* should be tee pointing down */
- ACS_HLINE = '-'; /* should be horizontal line */
- ACS_VLINE = '|'; /* should be vertical line */
- ACS_PLUS = '+'; /* should be large plus or crossover */
- ACS_S1 = '~'; /* should be scan line 1 */
- ACS_S9 = '_'; /* should be scan line 9 */
- ACS_DIAMOND = '+'; /* should be diamond */
- ACS_CKBOARD = ':'; /* should be checker board (stipple) */
- ACS_DEGREE = '\''; /* should be degree symbol */
- ACS_PLMINUS = '#'; /* should be plus/minus */
- ACS_BULLET = 'o'; /* should be bullet */
- ACS_LARROW = '<'; /* should be arrow pointing left */
- ACS_RARROW = '>'; /* should be arrow pointing right */
- ACS_DARROW = 'v'; /* should be arrow pointing down */
- ACS_UARROW = '^'; /* should be arrow pointing up */
- ACS_BOARD = '#'; /* should be board of squares */
- ACS_LANTERN = '#'; /* should be lantern symbol */
- ACS_BLOCK = '#'; /* should be solid square block */
+ real_map['l'] = '+'; /* should be upper left corner */
+ real_map['m'] = '+'; /* should be lower left corner */
+ real_map['k'] = '+'; /* should be upper right corner */
+ real_map['j'] = '+'; /* should be lower right corner */
+ real_map['u'] = '+'; /* should be tee pointing left */
+ real_map['t'] = '+'; /* should be tee pointing right */
+ real_map['v'] = '+'; /* should be tee pointing up */
+ real_map['w'] = '+'; /* should be tee pointing down */
+ real_map['q'] = '-'; /* should be horizontal line */
+ real_map['x'] = '|'; /* should be vertical line */
+ real_map['n'] = '+'; /* should be large plus or crossover */
+ real_map['o'] = '~'; /* should be scan line 1 */
+ real_map['s'] = '_'; /* should be scan line 9 */
+ real_map['`'] = '+'; /* should be diamond */
+ real_map['a'] = ':'; /* should be checker board (stipple) */
+ real_map['f'] = '\''; /* should be degree symbol */
+ real_map['g'] = '#'; /* should be plus/minus */
+ real_map['~'] = 'o'; /* should be bullet */
+ real_map[','] = '<'; /* should be arrow pointing left */
+ real_map['+'] = '>'; /* should be arrow pointing right */
+ real_map['.'] = 'v'; /* should be arrow pointing down */
+ real_map['-'] = '^'; /* should be arrow pointing up */
+ real_map['h'] = '#'; /* should be board of squares */
+ real_map['i'] = '#'; /* should be lantern symbol */
+ real_map['0'] = '#'; /* should be solid square block */
/* these defaults were invented for ncurses */
- ACS_S3 = '-'; /* should be scan line 3 */
- ACS_S7 = '-'; /* should be scan line 7 */
- ACS_LEQUAL = '<'; /* should be less-than-or-equal-to */
- ACS_GEQUAL = '>'; /* should be greater-than-or-equal-to */
- ACS_PI = '*'; /* should be greek pi */
- ACS_NEQUAL = '!'; /* should be not-equal */
- ACS_STERLING = 'f'; /* should be pound-sterling symbol */
+ real_map['p'] = '-'; /* should be scan line 3 */
+ real_map['r'] = '-'; /* should be scan line 7 */
+ real_map['y'] = '<'; /* should be less-than-or-equal-to */
+ real_map['z'] = '>'; /* should be greater-than-or-equal-to */
+ real_map['{'] = '*'; /* should be greek pi */
+ real_map['|'] = '!'; /* should be not-equal */
+ real_map['}'] = 'f'; /* should be pound-sterling symbol */
+
+#if !USE_WIDEC_SUPPORT
+ if (_nc_unicode_locale() && _nc_locale_breaks_acs()) {
+ acs_chars = NULL;
+ ena_acs = NULL;
+ enter_alt_charset_mode = NULL;
+ exit_alt_charset_mode = NULL;
+ set_attributes = NULL;
+ }
+#endif
if (ena_acs != NULL) {
TPUTS_TRACE("ena_acs");
putp(ena_acs);
}
-#define ALTCHAR(c) ((chtype)(((unsigned char)(c)) | A_ALTCHARSET))
+#if NCURSES_EXT_FUNCS
+ /*
+ * Linux console "supports" the "PC ROM" character set by the coincidence
+ * that smpch/rmpch and smacs/rmacs have the same values. ncurses has
+ * no codepage support (see SCO Merge for an example). Outside of the
+ * values defined in acsc, there are no definitions for the "PC ROM"
+ * character set (assumed by some applications to be codepage 437), but we
+ * allow those applications to use those codepoints.
+ *
+ * test/blue.c uses this feature.
+ */
+#define PCH_KLUDGE(a,b) (a != 0 && b != 0 && !strcmp(a,b))
+ if (PCH_KLUDGE(enter_pc_charset_mode, enter_alt_charset_mode) &&
+ PCH_KLUDGE(exit_pc_charset_mode, exit_alt_charset_mode)) {
+ size_t i;
+ for (i = 1; i < ACS_LEN; ++i) {
+ if (real_map[i] == 0) {
+ real_map[i] = i;
+ if (real_map != fake_map) {
+ if (SP != 0)
+ SP->_screen_acs_map[i] = TRUE;
+ }
+ }
+ }
+ }
+#endif
if (acs_chars != NULL) {
size_t i = 0;
size_t length = strlen(acs_chars);
- while (i < length)
- switch (acs_chars[i]) {
- case 'l':
- case 'm':
- case 'k':
- case 'j':
- case 'u':
- case 't':
- case 'v':
- case 'w':
- case 'q':
- case 'x':
- case 'n':
- case 'o':
- case 's':
- case '`':
- case 'a':
- case 'f':
- case 'g':
- case '~':
- case ',':
- case '+':
- case '.':
- case '-':
- case 'h':
- case 'i':
- case '0':
- case 'p':
- case 'r':
- case 'y':
- case 'z':
- case '{':
- case '|':
- case '}':
- acs_map[(unsigned int) acs_chars[i]] =
- ALTCHAR(acs_chars[i + 1]);
- i++;
- /* FALLTHRU */
- default:
- i++;
- break;
+ 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)
+ SP->_screen_acs_map[UChar(acs_chars[i])] = TRUE;
}
+ i += 2;
+ }
}
#ifdef TRACE
/* Show the equivalent mapping, noting if it does not match the
@@ -154,14 +177,18 @@ _nc_init_acs(void)
*/
if (_nc_tracing & TRACE_CALLS) {
size_t n, m;
- char show[ACS_LEN + 1];
+ char show[ACS_LEN * 2 + 1];
for (n = 1, m = 0; n < ACS_LEN; n++) {
- if (acs_map[n] != 0) {
+ if (real_map[n] != 0) {
show[m++] = (char) n;
- show[m++] = ChCharOf(acs_map[n]);
+ show[m++] = ChCharOf(real_map[n]);
}
}
show[m] = 0;
+ if (acs_chars == NULL || strcmp(acs_chars, show))
+ _tracef("%s acs_chars %s",
+ (acs_chars == NULL) ? "NULL" : "READ",
+ _nc_visbuf(acs_chars));
_tracef("%s acs_chars %s",
(acs_chars == NULL)
? "NULL"
diff --git a/contrib/ncurses/ncurses/tinfo/lib_cur_term.c b/contrib/ncurses/ncurses/tinfo/lib_cur_term.c
index 8f269e591d0c..8fccc2f88d08 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_cur_term.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_cur_term.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-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 *
@@ -40,7 +40,7 @@
#include <term_entry.h> /* TTY, cur_term */
#include <termcap.h> /* ospeed */
-MODULE_ID("$Id: lib_cur_term.c,v 1.11 2000/12/10 02:55:07 tom Exp $")
+MODULE_ID("$Id: lib_cur_term.c,v 1.13 2003/12/27 18:21:30 tom Exp $")
NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0;
@@ -49,11 +49,14 @@ set_curterm(TERMINAL * termp)
{
TERMINAL *oldterm = cur_term;
+ T((T_CALLED("set_curterm(%p)"), termp));
+
if ((cur_term = termp) != 0) {
ospeed = _nc_ospeed(cur_term->_baudrate);
PC = (pad_char != NULL) ? pad_char[0] : 0;
}
- return oldterm;
+ T((T_RETURN("%p"), oldterm));
+ return (oldterm);
}
NCURSES_EXPORT(int)
@@ -63,6 +66,7 @@ del_curterm(TERMINAL * termp)
if (termp != 0) {
_nc_free_termtype(&(termp->type));
+ FreeIfNeeded(termp->_termname);
free(termp);
if (termp == cur_term)
cur_term = 0;
diff --git a/contrib/ncurses/ncurses/tinfo/lib_data.c b/contrib/ncurses/ncurses/tinfo/lib_data.c
index 87d60edf6ed9..34f033a79021 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_data.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_data.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,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 *
@@ -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 *
****************************************************************************/
/*
@@ -40,18 +41,15 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_data.c,v 1.16 2000/12/10 02:55:07 tom Exp $")
+MODULE_ID("$Id: lib_data.c,v 1.17 2005/01/22 17:39:22 tom Exp $")
/*
* OS/2's native linker complains if we don't initialize public data when
* constructing a dll (reported by J.J.G.Ripoll).
*/
-NCURSES_EXPORT_VAR(WINDOW *)
-stdscr = 0;
-NCURSES_EXPORT_VAR(WINDOW *)
-curscr = 0;
-NCURSES_EXPORT_VAR(WINDOW *)
-newscr = 0;
+NCURSES_EXPORT_VAR(WINDOW *) stdscr = 0;
+NCURSES_EXPORT_VAR(WINDOW *) curscr = 0;
+NCURSES_EXPORT_VAR(WINDOW *) newscr = 0;
NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain = 0;
@@ -66,7 +64,7 @@ NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain = 0;
* module coupling that increases the size of the executable.
*/
#if BROKEN_LINKER
- static SCREEN *my_screen;
+static SCREEN *my_screen;
NCURSES_EXPORT(SCREEN *)
_nc_screen(void)
@@ -81,11 +79,11 @@ _nc_alloc_screen(void)
}
NCURSES_EXPORT(void)
-_nc_set_screen(SCREEN * sp)
+_nc_set_screen(SCREEN *sp)
{
my_screen = sp;
}
#else
-NCURSES_EXPORT_VAR(SCREEN *) SP = NULL; /* Some linkers require initialized data... */
+NCURSES_EXPORT_VAR(SCREEN *) SP = NULL; /* Some linkers require initialized data... */
#endif
diff --git a/contrib/ncurses/ncurses/tinfo/lib_has_cap.c b/contrib/ncurses/ncurses/tinfo/lib_has_cap.c
index 6fb7b3a9c8c0..0dc66bd9b918 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_has_cap.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_has_cap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-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 *
@@ -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-2003 *
****************************************************************************/
/*
@@ -42,7 +43,7 @@
#include <term.h>
-MODULE_ID("$Id: lib_has_cap.c,v 1.3 2000/12/10 02:55:07 tom Exp $")
+MODULE_ID("$Id: lib_has_cap.c,v 1.4 2003/10/25 19:43:55 tom Exp $")
NCURSES_EXPORT(bool)
has_ic(void)
diff --git a/contrib/ncurses/ncurses/tinfo/lib_kernel.c b/contrib/ncurses/ncurses/tinfo/lib_kernel.c
index b4d3c7f45aca..89dc1e80ea8e 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_kernel.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_kernel.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2000,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,13 +48,13 @@
#include <curses.priv.h>
#include <term.h> /* cur_term */
-MODULE_ID("$Id: lib_kernel.c,v 1.22 2002/05/11 20:32:18 tom Exp $")
+MODULE_ID("$Id: lib_kernel.c,v 1.24 2004/05/08 17:11:21 tom Exp $")
static int
_nc_vdisable(void)
{
- int value;
-#if defined(_POSIX_VDISABLE) && defined(HAVE_UNISTD_H)
+ int value = -1;
+#if defined(_POSIX_VDISABLE) && HAVE_UNISTD_H
value = _POSIX_VDISABLE;
#endif
#if defined(_PC_VDISABLE)
diff --git a/contrib/ncurses/ncurses/tinfo/lib_napms.c b/contrib/ncurses/ncurses/tinfo/lib_napms.c
index 20537be4dfe0..926afa836db4 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_napms.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_napms.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,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 *
@@ -36,6 +36,8 @@
*
* The routine napms.
*
+ * (This file was originally written by Eric Raymond; however except for
+ * comments, none of the original code remains - T.Dickey).
*/
#include <curses.priv.h>
@@ -47,7 +49,7 @@
#endif
#endif
-MODULE_ID("$Id: lib_napms.c,v 1.12 2001/12/22 22:20:40 tom Exp $")
+MODULE_ID("$Id: lib_napms.c,v 1.15 2005/04/03 13:58:14 tom Exp $")
NCURSES_EXPORT(int)
napms(int ms)
@@ -56,13 +58,16 @@ napms(int ms)
#if HAVE_NANOSLEEP
{
- struct timespec ts;
- ts.tv_sec = ms / 1000;
- ts.tv_nsec = (ms % 1000) * 1000000;
- nanosleep(&ts, NULL);
+ struct timespec request, remaining;
+ request.tv_sec = ms / 1000;
+ request.tv_nsec = (ms % 1000) * 1000000;
+ while (nanosleep(&request, &remaining) == -1
+ && errno == EINTR) {
+ request = remaining;
+ }
}
#else
- _nc_timed_wait(0, ms, (int *) 0);
+ _nc_timed_wait(0, ms, (int *) 0 EVENTLIST_2nd(0));
#endif
returnCode(OK);
diff --git a/contrib/ncurses/ncurses/tinfo/lib_options.c b/contrib/ncurses/ncurses/tinfo/lib_options.c
index 05bd47685dd6..bdb0b7024d7c 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_options.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_options.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -42,7 +43,7 @@
#include <term.h>
-MODULE_ID("$Id: lib_options.c,v 1.46 2002/02/02 19:40:54 tom Exp $")
+MODULE_ID("$Id: lib_options.c,v 1.49 2006/03/04 19:28:25 tom Exp $")
NCURSES_EXPORT(int)
idlok(WINDOW *win, bool flag)
@@ -72,7 +73,7 @@ halfdelay(int t)
{
T((T_CALLED("halfdelay(%d)"), t));
- if (t < 1 || t > 255)
+ if (t < 1 || t > 255 || SP == 0)
returnCode(ERR);
cbreak();
@@ -98,7 +99,7 @@ nodelay(WINDOW *win, bool flag)
NCURSES_EXPORT(int)
notimeout(WINDOW *win, bool f)
{
- T((T_CALLED("notimout(%p,%d)"), win, f));
+ T((T_CALLED("notimeout(%p,%d)"), win, f));
if (win) {
win->_notimeout = f;
@@ -133,19 +134,24 @@ keypad(WINDOW *win, bool flag)
NCURSES_EXPORT(int)
meta(WINDOW *win GCC_UNUSED, bool flag)
{
+ int result = ERR;
+
/* Ok, we stay relaxed and don't signal an error if win is NULL */
T((T_CALLED("meta(%p,%d)"), win, flag));
- SP->_use_meta = flag;
-
- if (flag && meta_on) {
- TPUTS_TRACE("meta_on");
- putp(meta_on);
- } else if (!flag && meta_off) {
- TPUTS_TRACE("meta_off");
- putp(meta_off);
+ if (SP != 0) {
+ SP->_use_meta = flag;
+
+ if (flag && meta_on) {
+ TPUTS_TRACE("meta_on");
+ putp(meta_on);
+ } else if (!flag && meta_off) {
+ TPUTS_TRACE("meta_off");
+ putp(meta_off);
+ }
+ result = OK;
}
- returnCode(OK);
+ returnCode(result);
}
/* curs_set() moved here to narrow the kernel interface */
@@ -153,51 +159,56 @@ meta(WINDOW *win GCC_UNUSED, bool flag)
NCURSES_EXPORT(int)
curs_set(int vis)
{
- int cursor = SP->_cursor;
+ int result = ERR;
T((T_CALLED("curs_set(%d)"), vis));
-
- if (vis < 0 || vis > 2)
- returnCode(ERR);
-
- if (vis == cursor)
- returnCode(cursor);
-
- switch (vis) {
- case 2:
- if (cursor_visible) {
- TPUTS_TRACE("cursor_visible");
- putp(cursor_visible);
- } else
- returnCode(ERR);
- break;
- case 1:
- if (cursor_normal) {
- TPUTS_TRACE("cursor_normal");
- putp(cursor_normal);
- } else
- returnCode(ERR);
- break;
- case 0:
- if (cursor_invisible) {
- TPUTS_TRACE("cursor_invisible");
- putp(cursor_invisible);
- } else
- returnCode(ERR);
- break;
+ if (SP != 0 && vis >= 0 && vis <= 2) {
+ int cursor = SP->_cursor;
+
+ if (vis == cursor) {
+ result = cursor;
+ } else {
+ result = (cursor == -1 ? 1 : cursor);
+ switch (vis) {
+ case 2:
+ if (cursor_visible) {
+ TPUTS_TRACE("cursor_visible");
+ putp(cursor_visible);
+ } else
+ result = ERR;
+ break;
+ case 1:
+ if (cursor_normal) {
+ TPUTS_TRACE("cursor_normal");
+ putp(cursor_normal);
+ } else
+ result = ERR;
+ break;
+ case 0:
+ if (cursor_invisible) {
+ TPUTS_TRACE("cursor_invisible");
+ putp(cursor_invisible);
+ } else
+ result = ERR;
+ break;
+ }
+ SP->_cursor = vis;
+ _nc_flush();
+ }
}
- SP->_cursor = vis;
- _nc_flush();
-
- returnCode(cursor == -1 ? 1 : cursor);
+ returnCode(result);
}
NCURSES_EXPORT(int)
typeahead(int fd)
{
T((T_CALLED("typeahead(%d)"), fd));
- SP->_checkfd = fd;
- returnCode(OK);
+ if (SP != 0) {
+ SP->_checkfd = fd;
+ returnCode(OK);
+ } else {
+ returnCode(ERR);
+ }
}
/*
@@ -224,7 +235,7 @@ NCURSES_EXPORT(int)
has_key(int keycode)
{
T((T_CALLED("has_key(%d)"), keycode));
- returnCode(has_key_internal(keycode, SP->_keytry));
+ returnCode(SP != 0 ? has_key_internal(keycode, SP->_keytry) : FALSE);
}
#endif /* NCURSES_EXT_FUNCS */
@@ -248,10 +259,12 @@ _nc_keypad(bool flag)
_nc_flush();
}
- if (flag && !SP->_tried) {
- _nc_init_keytry();
- SP->_tried = TRUE;
+ if (SP != 0) {
+ if (flag && !SP->_tried) {
+ _nc_init_keytry();
+ SP->_tried = TRUE;
+ }
+ SP->_keypad_on = flag;
}
- SP->_keypad_on = flag;
return (OK);
}
diff --git a/contrib/ncurses/ncurses/tinfo/lib_print.c b/contrib/ncurses/ncurses/tinfo/lib_print.c
index 01540eacdc14..975b46d85773 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_print.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_print.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2000,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free 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 <term.h>
-MODULE_ID("$Id: lib_print.c,v 1.14 2002/03/16 21:45:08 tom Exp $")
+MODULE_ID("$Id: lib_print.c,v 1.16 2006/11/26 00:26:34 tom Exp $")
NCURSES_EXPORT(int)
mcprint(char *data, int len)
@@ -51,7 +51,7 @@ mcprint(char *data, int len)
}
if (prtr_non) {
- switchon = tparm(prtr_non, len);
+ switchon = TPARM_1(prtr_non, len);
onsize = strlen(switchon);
offsize = 0;
} else {
@@ -60,7 +60,8 @@ mcprint(char *data, int len)
offsize = strlen(prtr_off);
}
- if ((mybuf = typeMalloc(char, onsize + len + offsize + 1)) == (char *) 0) {
+ if (switchon == 0
+ || (mybuf = typeMalloc(char, onsize + len + offsize + 1)) == 0) {
errno = ENOMEM;
return (ERR);
}
diff --git a/contrib/ncurses/ncurses/tinfo/lib_raw.c b/contrib/ncurses/ncurses/tinfo/lib_raw.c
index 97cf0cbd0249..aa09f52c8c8d 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_raw.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_raw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2002 Free 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 1998 on *
****************************************************************************/
/*
@@ -48,7 +49,7 @@
#include <curses.priv.h>
#include <term.h> /* cur_term */
-MODULE_ID("$Id: lib_raw.c,v 1.12 2001/08/04 17:18:38 tom Exp $")
+MODULE_ID("$Id: lib_raw.c,v 1.13 2002/07/06 22:00:45 tom Exp $")
#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
#define _POSIX_SOURCE
@@ -60,6 +61,9 @@ MODULE_ID("$Id: lib_raw.c,v 1.12 2001/08/04 17:18:38 tom Exp $")
#ifdef __EMX__
#include <io.h>
+#define _nc_setmode(mode) setmode(SP->_ifd, mode)
+#else
+#define _nc_setmode(mode) /* nothing */
#endif
#define COOKED_INPUT (IXON|BRKINT|PARMRK)
@@ -75,162 +79,218 @@ MODULE_ID("$Id: lib_raw.c,v 1.12 2001/08/04 17:18:38 tom Exp $")
NCURSES_EXPORT(int)
raw(void)
{
+ int result = ERR;
+
T((T_CALLED("raw()")));
- if (SP != 0 && cur_term != 0) {
- SP->_raw = TRUE;
- SP->_cbreak = 1;
+ if (SP != 0 && cur_term != 0) {
+ TTY buf;
-#ifdef __EMX__
- setmode(SP->_ifd, O_BINARY);
-#endif
+ BEFORE("raw");
+ _nc_setmode(O_BINARY);
+ buf = cur_term->Nttyb;
#ifdef TERMIOS
- BEFORE("raw");
- cur_term->Nttyb.c_lflag &= ~(ICANON | ISIG | IEXTEN);
- cur_term->Nttyb.c_iflag &= ~(COOKED_INPUT);
- cur_term->Nttyb.c_cc[VMIN] = 1;
- cur_term->Nttyb.c_cc[VTIME] = 0;
- AFTER("raw");
+ buf.c_lflag &= ~(ICANON | ISIG | IEXTEN);
+ buf.c_iflag &= ~(COOKED_INPUT);
+ buf.c_cc[VMIN] = 1;
+ buf.c_cc[VTIME] = 0;
#else
- cur_term->Nttyb.sg_flags |= RAW;
+ buf.sg_flags |= RAW;
#endif
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
+ if ((result = _nc_set_tty_mode(&buf)) == OK) {
+ SP->_raw = TRUE;
+ SP->_cbreak = 1;
+ cur_term->Nttyb = buf;
+ }
+ AFTER("raw");
}
- returnCode(ERR);
+ returnCode(result);
}
NCURSES_EXPORT(int)
cbreak(void)
{
+ int result = ERR;
+
T((T_CALLED("cbreak()")));
- SP->_cbreak = 1;
+ if (SP != 0 && cur_term != 0) {
+ TTY buf;
-#ifdef __EMX__
- setmode(SP->_ifd, O_BINARY);
-#endif
+ BEFORE("cbreak");
+ _nc_setmode(O_BINARY);
+ buf = cur_term->Nttyb;
#ifdef TERMIOS
- BEFORE("cbreak");
- cur_term->Nttyb.c_lflag &= ~ICANON;
- cur_term->Nttyb.c_iflag &= ~ICRNL;
- cur_term->Nttyb.c_lflag |= ISIG;
- cur_term->Nttyb.c_cc[VMIN] = 1;
- cur_term->Nttyb.c_cc[VTIME] = 0;
- AFTER("cbreak");
+ buf.c_lflag &= ~ICANON;
+ buf.c_iflag &= ~ICRNL;
+ buf.c_lflag |= ISIG;
+ buf.c_cc[VMIN] = 1;
+ buf.c_cc[VTIME] = 0;
#else
- cur_term->Nttyb.sg_flags |= CBREAK;
+ buf.sg_flags |= CBREAK;
#endif
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
+ if ((result = _nc_set_tty_mode(&buf)) == OK) {
+ SP->_cbreak = 1;
+ cur_term->Nttyb = buf;
+ }
+ AFTER("cbreak");
+ }
+ returnCode(result);
}
+/*
+ * Note:
+ * this implementation may be wrong. See the comment under intrflush().
+ */
NCURSES_EXPORT(void)
qiflush(void)
{
+ int result = ERR;
+
T((T_CALLED("qiflush()")));
- /*
- * Note: this implementation may be wrong. See the comment under
- * intrflush().
- */
+ if (cur_term != 0) {
+ TTY buf;
+ BEFORE("qiflush");
+ buf = cur_term->Nttyb;
#ifdef TERMIOS
- BEFORE("qiflush");
- cur_term->Nttyb.c_lflag &= ~(NOFLSH);
- AFTER("qiflush");
- (void) _nc_set_tty_mode(&cur_term->Nttyb);
+ buf.c_lflag &= ~(NOFLSH);
+ result = _nc_set_tty_mode(&buf);
+#else
+ /* FIXME */
#endif
+ if (result == OK)
+ cur_term->Nttyb = buf;
+ AFTER("qiflush");
+ }
returnVoid;
}
NCURSES_EXPORT(int)
noraw(void)
{
+ int result = ERR;
+
T((T_CALLED("noraw()")));
- SP->_raw = FALSE;
- SP->_cbreak = 0;
+ if (SP != 0 && cur_term != 0) {
+ TTY buf;
-#ifdef __EMX__
- setmode(SP->_ifd, O_TEXT);
-#endif
+ BEFORE("noraw");
+ _nc_setmode(O_TEXT);
+ buf = cur_term->Nttyb;
#ifdef TERMIOS
- BEFORE("noraw");
- cur_term->Nttyb.c_lflag |= ISIG | ICANON |
- (cur_term->Ottyb.c_lflag & IEXTEN);
- cur_term->Nttyb.c_iflag |= COOKED_INPUT;
- AFTER("noraw");
+ buf.c_lflag |= ISIG | ICANON |
+ (cur_term->Ottyb.c_lflag & IEXTEN);
+ buf.c_iflag |= COOKED_INPUT;
#else
- cur_term->Nttyb.sg_flags &= ~(RAW | CBREAK);
+ buf.sg_flags &= ~(RAW | CBREAK);
#endif
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
+ if ((result = _nc_set_tty_mode(&buf)) == OK) {
+ SP->_raw = FALSE;
+ SP->_cbreak = 0;
+ cur_term->Nttyb = buf;
+ }
+ AFTER("noraw");
+ }
+ returnCode(result);
}
NCURSES_EXPORT(int)
nocbreak(void)
{
+ int result = ERR;
+
T((T_CALLED("nocbreak()")));
- SP->_cbreak = 0;
+ if (SP != 0 && cur_term != 0) {
+ TTY buf;
-#ifdef __EMX__
- setmode(SP->_ifd, O_TEXT);
-#endif
+ BEFORE("nocbreak");
+ _nc_setmode(O_TEXT);
+ buf = cur_term->Nttyb;
#ifdef TERMIOS
- BEFORE("nocbreak");
- cur_term->Nttyb.c_lflag |= ICANON;
- cur_term->Nttyb.c_iflag |= ICRNL;
- AFTER("nocbreak");
+ buf.c_lflag |= ICANON;
+ buf.c_iflag |= ICRNL;
#else
- cur_term->Nttyb.sg_flags &= ~CBREAK;
+ buf.sg_flags &= ~CBREAK;
#endif
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
+ if ((result = _nc_set_tty_mode(&buf)) == OK) {
+ SP->_cbreak = 0;
+ cur_term->Nttyb = buf;
+ }
+ AFTER("nocbreak");
+ }
+ returnCode(result);
}
+/*
+ * Note:
+ * this implementation may be wrong. See the comment under intrflush().
+ */
NCURSES_EXPORT(void)
noqiflush(void)
{
+ int result = ERR;
+
T((T_CALLED("noqiflush()")));
- /*
- * Note: this implementation may be wrong. See the comment under
- * intrflush().
- */
+ if (cur_term != 0) {
+ TTY buf;
+ BEFORE("noqiflush");
+ buf = cur_term->Nttyb;
#ifdef TERMIOS
- BEFORE("noqiflush");
- cur_term->Nttyb.c_lflag |= NOFLSH;
- AFTER("noqiflush");
- (void) _nc_set_tty_mode(&cur_term->Nttyb);
+ buf.c_lflag |= NOFLSH;
+ result = _nc_set_tty_mode(&buf);
+#else
+ /* FIXME */
#endif
+ if (result == OK) {
+ cur_term->Nttyb = buf;
+ }
+ AFTER("noqiflush");
+ }
returnVoid;
}
+/*
+ * This call does the same thing as the qiflush()/noqiflush() pair. We know
+ * for certain that SVr3 intrflush() tweaks the NOFLSH bit; on the other hand,
+ * the match (in the SVr4 man pages) between the language describing NOFLSH in
+ * termio(7) and the language describing qiflush()/noqiflush() in
+ * curs_inopts(3x) is too exact to be coincidence.
+ */
NCURSES_EXPORT(int)
intrflush(WINDOW *win GCC_UNUSED, bool flag)
{
+ int result = ERR;
+
T((T_CALLED("intrflush(%d)"), flag));
- /*
- * This call does the same thing as the qiflush()/noqiflush() pair. We
- * know for certain that SVr3 intrflush() tweaks the NOFLSH bit; on the
- * other hand, the match (in the SVr4 man pages) between the language
- * describing NOFLSH in termio(7) and the language describing
- * qiflush()/noqiflush() in curs_inopts(3x) is too exact to be coincidence.
- */
+ if (cur_term != 0) {
+ TTY buf;
+ BEFORE("intrflush");
+ buf = cur_term->Nttyb;
#ifdef TERMIOS
- BEFORE("intrflush");
- if (flag)
- cur_term->Nttyb.c_lflag &= ~(NOFLSH);
- else
- cur_term->Nttyb.c_lflag |= (NOFLSH);
- AFTER("intrflush");
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
+ if (flag)
+ buf.c_lflag &= ~(NOFLSH);
+ else
+ buf.c_lflag |= (NOFLSH);
+ result = _nc_set_tty_mode(&buf);
#else
- returnCode(ERR);
+ /* FIXME */
#endif
+ if (result == OK) {
+ cur_term->Nttyb = buf;
+ }
+ AFTER("intrflush");
+ }
+ returnCode(result);
}
diff --git a/contrib/ncurses/ncurses/tinfo/lib_setup.c b/contrib/ncurses/ncurses/tinfo/lib_setup.c
index 1e49b2b6ce07..350824208830 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_setup.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_setup.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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-2003 *
****************************************************************************/
/*
@@ -46,9 +47,13 @@
#define _POSIX_SOURCE
#endif
+#if HAVE_LOCALE_H
+#include <locale.h>
+#endif
+
#include <term.h> /* lines, columns, cur_term */
-MODULE_ID("$Id: lib_setup.c,v 1.68 2001/12/08 22:14:18 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.95 2006/07/28 22:58:13 tom Exp $")
/****************************************************************************
*
@@ -72,6 +77,10 @@ MODULE_ID("$Id: lib_setup.c,v 1.68 2001/12/08 22:14:18 tom Exp $")
# include <sys/ptem.h>
#endif
+#if HAVE_LANGINFO_CODESET
+#include <langinfo.h>
+#endif
+
/*
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
* Solaris, IRIX) define TIOCGWINSZ and struct winsize.
@@ -90,9 +99,58 @@ MODULE_ID("$Id: lib_setup.c,v 1.68 2001/12/08 22:14:18 tom Exp $")
# endif
#endif
+NCURSES_EXPORT_VAR(char) ttytype[NAMESIZE] = "";
+NCURSES_EXPORT_VAR(int) LINES = 0;
+NCURSES_EXPORT_VAR(int) COLS = 0;
+NCURSES_EXPORT_VAR(int) TABSIZE = 0;
+
static int _use_env = TRUE;
-static void do_prototype(void);
+#if USE_SIGWINCH
+int
+_nc_handle_sigwinch(int enable)
+{
+ static int have_sigwinch = 0; /* initially no SIGWINCH's */
+ static int can_resizeall = 1; /* initially enabled */
+ SCREEN *scan;
+ int result;
+
+ switch (enable) {
+ default:
+ /* record a SIGWINCH */
+ have_sigwinch = 1;
+ break;
+ case 0:
+ /* temporarily disable the next block */
+ --can_resizeall;
+ break;
+ case 1:
+ /* temporarily enable the next block */
+ ++can_resizeall;
+ break;
+ }
+
+ /*
+ * If we have a pending SIGWINCH, set the flag in each screen.
+ * But do this only if the block is enabled.
+ */
+ if (can_resizeall-- >= 0) { /* test and disable */
+ if (have_sigwinch) {
+ scan = _nc_screen_chain;
+ while (scan) {
+ scan->_sig_winch = TRUE;
+ scan = scan->_next_screen;
+ }
+ have_sigwinch = 0;
+ }
+ }
+ result = can_resizeall + 1; /* reenable (unless disables are nested) */
+ can_resizeall = result;
+
+ return result;
+}
+
+#endif
NCURSES_EXPORT(void)
use_env(bool f)
@@ -102,10 +160,6 @@ use_env(bool f)
returnVoid;
}
-NCURSES_EXPORT_VAR(int) LINES = 0;
-NCURSES_EXPORT_VAR(int) COLS = 0;
-NCURSES_EXPORT_VAR(int) TABSIZE = 0;
-
static void
_nc_get_screensize(int *linep, int *colp)
/* Obtain lines/columns values from the environment and/or terminfo entry */
@@ -113,6 +167,7 @@ _nc_get_screensize(int *linep, int *colp)
/* figure out the size of the screen */
T(("screen size: terminfo lines = %d columns = %d", lines, columns));
+ _nc_handle_sigwinch(0);
if (!_use_env) {
*linep = (int) lines;
*colp = (int) columns;
@@ -159,7 +214,7 @@ _nc_get_screensize(int *linep, int *colp)
* environment variable.
*/
if (*linep <= 0)
- *linep = WINSIZE_ROWS(size);
+ *linep = (SP != 0 && SP->_filtered) ? 1 : WINSIZE_ROWS(size);
if (*colp <= 0)
*colp = WINSIZE_COLS(size);
}
@@ -191,6 +246,7 @@ _nc_get_screensize(int *linep, int *colp)
lines = (short) (*linep);
columns = (short) (*colp);
}
+ _nc_handle_sigwinch(1);
T(("screen size is %dx%d", *linep, *colp));
@@ -199,18 +255,30 @@ _nc_get_screensize(int *linep, int *colp)
else
TABSIZE = 8;
T(("TABSIZE = %d", TABSIZE));
-
}
#if USE_SIZECHANGE
NCURSES_EXPORT(void)
_nc_update_screensize(void)
{
- int my_lines, my_cols;
+ int old_lines = lines;
+ int new_lines;
+ int old_cols = columns;
+ int new_cols;
- _nc_get_screensize(&my_lines, &my_cols);
- if (SP != 0 && SP->_resize != 0)
- SP->_resize(my_lines, my_cols);
+ _nc_get_screensize(&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(new_lines, new_cols);
+ SP->_sig_winch = FALSE;
+ }
}
#endif
@@ -237,36 +305,15 @@ _nc_update_screensize(void)
}
#if USE_DATABASE || USE_TERMCAP
+/*
+ * Return 1 if entry found, 0 if not found, -1 if database not accessible,
+ * just like tgetent().
+ */
static int
-grab_entry(const char *const tn, TERMTYPE * const tp)
-/* return 1 if entry found, 0 if not found, -1 if database not accessible */
+grab_entry(const char *const tn, TERMTYPE *const tp)
{
char filename[PATH_MAX];
- int status;
-
- /*
- * $TERM shouldn't contain pathname delimiters.
- */
- if (strchr(tn, '/'))
- return 0;
-
-#if USE_DATABASE
- if ((status = _nc_read_entry(tn, filename, tp)) != 1) {
-
-#if !PURE_TERMINFO
- /*
- * Try falling back on the termcap file.
- * Note: allowing this call links the entire terminfo/termcap
- * compiler into the startup code. It's preferable to build a
- * real terminfo database and use that.
- */
- status = _nc_read_termcap_entry(tn, tp);
-#endif /* PURE_TERMINFO */
-
- }
-#else
- status = _nc_read_termcap_entry(tn, tp);
-#endif
+ int status = _nc_read_entry(tn, filename, tp);
/*
* If we have an entry, force all of the cancelled strings to null
@@ -274,8 +321,8 @@ grab_entry(const char *const tn, TERMTYPE * const tp)
* (The terminfo compiler bypasses this logic, since it must know if
* a string is cancelled, for merging entries).
*/
- if (status == 1) {
- int n;
+ if (status == TGETENT_YES) {
+ unsigned n;
for_each_boolean(n, tp) {
if (!VALID_BOOLEAN(tp->Booleans[n]))
tp->Booleans[n] = FALSE;
@@ -289,139 +336,251 @@ grab_entry(const char *const tn, TERMTYPE * const tp)
}
#endif
-NCURSES_EXPORT_VAR(char) ttytype[NAMESIZE] = "";
+/*
+** do_prototype()
+**
+** Take the real command character out of the CC environment variable
+** and substitute it in for the prototype given in 'command_character'.
+*/
+static void
+do_prototype(void)
+{
+ int i;
+ char CC;
+ char proto;
+ char *tmp;
+
+ tmp = getenv("CC");
+ CC = *tmp;
+ proto = *command_character;
+
+ for_each_string(i, &(cur_term->type)) {
+ for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
+ if (*tmp == proto)
+ *tmp = CC;
+ }
+ }
+}
/*
- * setupterm(termname, Filedes, errret)
- *
- * Find and read the appropriate object file for the terminal
- * Make cur_term point to the structure.
- *
+ * Find the locale which is in effect.
+ */
+NCURSES_EXPORT(char *)
+_nc_get_locale(void)
+{
+ char *env;
+#if HAVE_LOCALE_H
+ /*
+ * This is preferable to using getenv() since it ensures that we are using
+ * the locale which was actually initialized by the application.
+ */
+ env = setlocale(LC_CTYPE, 0);
+#else
+ if (((env = getenv("LC_ALL")) != 0 && *env != '\0')
+ || ((env = getenv("LC_CTYPE")) != 0 && *env != '\0')
+ || ((env = getenv("LANG")) != 0 && *env != '\0')) {
+ ;
+ }
+#endif
+ T(("_nc_get_locale %s", _nc_visbuf(env)));
+ return env;
+}
+
+/*
+ * Check if we are running in a UTF-8 locale.
*/
+NCURSES_EXPORT(int)
+_nc_unicode_locale(void)
+{
+ int result = 0;
+#if HAVE_LANGINFO_CODESET
+ char *env = nl_langinfo(CODESET);
+ result = !strcmp(env, "UTF-8");
+ T(("_nc_unicode_locale(%s) ->%d", env, result));
+#else
+ char *env = _nc_get_locale();
+ if (env != 0) {
+ if (strstr(env, ".UTF-8") != 0) {
+ result = 1;
+ T(("_nc_unicode_locale(%s) ->%d", env, result));
+ }
+ }
+#endif
+ return result;
+}
+#define CONTROL_N(s) ((s) != 0 && strstr(s, "\016") != 0)
+#define CONTROL_O(s) ((s) != 0 && strstr(s, "\017") != 0)
+
+/*
+ * Check for known broken cases where a UTF-8 locale breaks the alternate
+ * character set.
+ */
NCURSES_EXPORT(int)
-setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
+_nc_locale_breaks_acs(void)
+{
+ char *env;
+
+ if ((env = getenv("NCURSES_NO_UTF8_ACS")) != 0) {
+ return atoi(env);
+ } else if ((env = getenv("TERM")) != 0) {
+ if (strstr(env, "linux"))
+ return 1; /* always broken */
+ if (strstr(env, "screen") != 0
+ && ((env = getenv("TERMCAP")) != 0
+ && strstr(env, "screen") != 0)
+ && strstr(env, "hhII00") != 0) {
+ if (CONTROL_N(enter_alt_charset_mode) ||
+ CONTROL_O(enter_alt_charset_mode) ||
+ CONTROL_N(set_attributes) ||
+ CONTROL_O(set_attributes))
+ return 1;
+ }
+ }
+ return 0;
+}
+
+/*
+ * This entrypoint is called from tgetent() to allow a special case of reusing
+ * the same TERMINAL data (see comment).
+ */
+NCURSES_EXPORT(int)
+_nc_setupterm(NCURSES_CONST char *tname, int Filedes, int *errret, bool reuse)
{
- struct term *term_ptr;
int status;
+ START_TRACE();
T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(tname), Filedes, errret));
if (tname == 0) {
tname = getenv("TERM");
if (tname == 0 || *tname == '\0') {
- ret_error0(-1, "TERM environment variable not set.\n");
+ ret_error0(TGETENT_ERR, "TERM environment variable not set.\n");
}
}
+
if (strlen(tname) > MAX_NAME_SIZE) {
- ret_error(-1, "TERM environment must be <= %d characters.\n",
+ ret_error(TGETENT_ERR,
+ "TERM environment must be <= %d characters.\n",
MAX_NAME_SIZE);
}
T(("your terminal name is %s", tname));
- term_ptr = typeCalloc(TERMINAL, 1);
+ /*
+ * Allow output redirection. This is what SVr3 does. If stdout is
+ * directed to a file, screen updates go to standard error.
+ */
+ if (Filedes == STDOUT_FILENO && !isatty(Filedes))
+ Filedes = STDERR_FILENO;
- if (term_ptr == 0) {
- ret_error0(-1, "Not enough memory to create terminal structure.\n");
- }
+ /*
+ * Check if we have already initialized to use this terminal. If so, we
+ * do not need to re-read the terminfo entry, or obtain TTY settings.
+ *
+ * This is an improvement on SVr4 curses. If an application mixes curses
+ * and termcap calls, it may call both initscr and tgetent. This is not
+ * really a good thing to do, but can happen if someone tries using ncurses
+ * with the readline library. The problem we are fixing is that when
+ * tgetent calls setupterm, the resulting Ottyb struct in cur_term is
+ * zeroed. A subsequent call to endwin uses the zeroed terminal settings
+ * rather than the ones saved in initscr. So we check if cur_term appears
+ * to contain terminal settings for the same output file as our current
+ * call - and copy those terminal settings. (SVr4 curses does not do this,
+ * however applications that are working around the problem will still work
+ * properly with this feature).
+ */
+ if (reuse
+ && cur_term != 0
+ && cur_term->Filedes == Filedes
+ && cur_term->_termname != 0
+ && !strcmp(cur_term->_termname, tname)
+ && _nc_name_match(cur_term->type.term_names, tname, "|")) {
+ T(("reusing existing terminal information and mode-settings"));
+ } else {
+ TERMINAL *term_ptr;
+
+ term_ptr = typeCalloc(TERMINAL, 1);
+
+ if (term_ptr == 0) {
+ ret_error0(TGETENT_ERR,
+ "Not enough memory to create terminal structure.\n");
+ }
#if USE_DATABASE || USE_TERMCAP
- status = grab_entry(tname, &term_ptr->type);
+ status = grab_entry(tname, &term_ptr->type);
#else
- status = 0;
+ status = TGETENT_NO;
#endif
- /* try fallback list if entry on disk */
- if (status != 1) {
- const TERMTYPE *fallback = _nc_fallback(tname);
+ /* try fallback list if entry on disk */
+ if (status != TGETENT_YES) {
+ const TERMTYPE *fallback = _nc_fallback(tname);
- if (fallback) {
- term_ptr->type = *fallback;
- status = 1;
+ if (fallback) {
+ term_ptr->type = *fallback;
+ status = TGETENT_YES;
+ }
}
- }
- if (status == -1) {
- ret_error0(-1, "terminals database is inaccessible\n");
- } else if (status == 0) {
- ret_error(0, "'%s': unknown terminal type.\n", tname);
- }
+ if (status != TGETENT_YES) {
+ del_curterm(term_ptr);
+ if (status == TGETENT_ERR) {
+ ret_error0(status, "terminals database is inaccessible\n");
+ } else if (status == TGETENT_NO) {
+ ret_error(status, "'%s': unknown terminal type.\n", tname);
+ }
+ }
- /*
- * Improve on SVr4 curses. If an application mixes curses and termcap
- * calls, it may call both initscr and tgetent. This is not really a
- * good thing to do, but can happen if someone tries using ncurses with
- * the readline library. The problem we are fixing is that when
- * tgetent calls setupterm, the resulting Ottyb struct in cur_term is
- * zeroed. A subsequent call to endwin uses the zeroed terminal
- * settings rather than the ones saved in initscr. So we check if
- * cur_term appears to contain terminal settings for the same output
- * file as our current call - and copy those terminal settings. (SVr4
- * curses does not do this, however applications that are working
- * around the problem will still work properly with this feature).
- */
- if (cur_term != 0) {
- if (cur_term->Filedes == Filedes)
- term_ptr->Ottyb = cur_term->Ottyb;
- }
+ set_curterm(term_ptr);
+
+ if (command_character && getenv("CC"))
+ do_prototype();
- set_curterm(term_ptr);
+ strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);
+ ttytype[NAMESIZE - 1] = '\0';
- if (command_character && getenv("CC"))
- do_prototype();
+ cur_term->Filedes = Filedes;
+ cur_term->_termname = strdup(tname);
- strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);
- ttytype[NAMESIZE - 1] = '\0';
+ /*
+ * 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 (isatty(Filedes)) {
+ def_prog_mode();
+ baudrate();
+ }
+ }
/*
- * Allow output redirection. This is what SVr3 does.
- * If stdout is directed to a file, screen updates go
- * to standard error.
+ * We should always check the screensize, just in case.
*/
- if (Filedes == STDOUT_FILENO && !isatty(Filedes))
- Filedes = STDERR_FILENO;
- cur_term->Filedes = Filedes;
-
_nc_get_screensize(&LINES, &COLS);
if (errret)
- *errret = 1;
+ *errret = TGETENT_YES;
T((T_CREATE("screen %s %dx%d"), tname, LINES, COLS));
if (generic_type) {
- ret_error(0, "'%s': I need something more specific.\n", tname);
+ ret_error(TGETENT_NO, "'%s': I need something more specific.\n", tname);
}
if (hard_copy) {
- ret_error(1, "'%s': I can't handle hardcopy terminals.\n", tname);
+ ret_error(TGETENT_YES, "'%s': I can't handle hardcopy terminals.\n", tname);
}
returnCode(OK);
}
/*
-** do_prototype()
-**
-** Take the real command character out of the CC environment variable
-** and substitute it in for the prototype given in 'command_character'.
-**
-*/
-
-static void
-do_prototype(void)
+ * setupterm(termname, Filedes, errret)
+ *
+ * Find and read the appropriate object file for the terminal
+ * Make cur_term point to the structure.
+ */
+NCURSES_EXPORT(int)
+setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
{
- int i;
- char CC;
- char proto;
- char *tmp;
-
- tmp = getenv("CC");
- CC = *tmp;
- proto = *command_character;
-
- for_each_string(i, &(cur_term->type)) {
- for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
- if (*tmp == proto)
- *tmp = CC;
- }
- }
+ return _nc_setupterm(tname, Filedes, errret, FALSE);
}
diff --git a/contrib/ncurses/ncurses/tinfo/lib_termcap.c b/contrib/ncurses/ncurses/tinfo/lib_termcap.c
index c03a601f4968..33e15c55c179 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_termcap.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_termcap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,9 +29,11 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
* *
* some of the code in here was contributed by: *
* Magnus Bengtsson, d6mbeng@dtek.chalmers.se (Nov'93) *
+ * (but it has changed a lot) *
****************************************************************************/
#define __INTERNAL_CAPS_VISIBLE
@@ -43,66 +45,26 @@
#include <term_entry.h>
-MODULE_ID("$Id: lib_termcap.c,v 1.43 2002/05/25 12:24:13 tom Exp $")
-
-#define CSI 233
-#define ESC 033 /* ^[ */
-#define L_BRACK '['
-#define SHIFT_OUT 017 /* ^N */
+MODULE_ID("$Id: lib_termcap.c,v 1.58 2006/09/02 19:39:46 Miroslav.Lichvar Exp $")
NCURSES_EXPORT_VAR(char *) UP = 0;
NCURSES_EXPORT_VAR(char *) BC = 0;
-static char *fix_me = 0;
-
-static char *
-set_attribute_9(int flag)
-{
- const char *result;
-
- if ((result = tparm(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, flag)) == 0)
- result = "";
- return strdup(result);
-}
-
-static int
-is_csi(char *s)
-{
- if (UChar(s[0]) == CSI)
- return 1;
- else if (s[0] == ESC && s[1] == L_BRACK)
- return 2;
- return 0;
-}
+typedef struct {
+ long sequence;
+ char *fix_sgr0; /* this holds the filtered sgr0 string */
+ char *last_bufp; /* help with fix_sgr0 leak */
+ TERMINAL *last_term;
+} CACHE;
-static char *
-skip_zero(char *s)
-{
- if (s[0] == '0') {
- if (s[1] == ';')
- s += 2;
- else if (isalpha(UChar(s[1])))
- s += 1;
- }
- return s;
-}
+#define MAX_CACHE 4
+static CACHE cache[MAX_CACHE];
+static int in_cache = 0;
-static bool
-similar_sgr(char *a, char *b)
-{
- int csi_a = is_csi(a);
- int csi_b = is_csi(b);
-
- if (csi_a != 0 && csi_b != 0 && csi_a == csi_b) {
- a += csi_a;
- b += csi_b;
- if (*a != *b) {
- a = skip_zero(a);
- b = skip_zero(b);
- }
- }
- return strcmp(a, b) == 0;
-}
+#define FIX_SGR0 cache[in_cache].fix_sgr0
+#define LAST_TRM cache[in_cache].last_term
+#define LAST_BUF cache[in_cache].last_bufp
+#define LAST_SEQ cache[in_cache].sequence
/***************************************************************************
*
@@ -120,18 +82,64 @@ similar_sgr(char *a, char *b)
***************************************************************************/
NCURSES_EXPORT(int)
-tgetent(char *bufp GCC_UNUSED, const char *name)
+tgetent(char *bufp, const char *name)
{
+ static long sequence;
+
int errcode;
+ int n;
+ bool found_cache = FALSE;
+ START_TRACE();
T((T_CALLED("tgetent()")));
- setupterm((NCURSES_CONST char *) name, STDOUT_FILENO, &errcode);
+ _nc_setupterm((NCURSES_CONST char *) name, STDOUT_FILENO, &errcode, TRUE);
+
+ /*
+ * In general we cannot tell if the fixed sgr0 is still used by the
+ * caller, but if tgetent() is called with the same buffer, that is
+ * good enough, since the previous data would be invalidated by the
+ * current call.
+ */
+ for (n = 0; n < MAX_CACHE; ++n) {
+ bool same_result = (bufp != 0 && cache[n].last_bufp == bufp);
+ if (same_result) {
+ in_cache = n;
+ if (FIX_SGR0 != 0) {
+ FreeAndNull(FIX_SGR0);
+ }
+ /*
+ * Also free the terminfo data that we loaded (much bigger leak).
+ */
+ if (LAST_TRM != 0 && LAST_TRM != cur_term) {
+ TERMINAL *trm = LAST_TRM;
+ del_curterm(LAST_TRM);
+ for (in_cache = 0; in_cache < MAX_CACHE; ++in_cache)
+ if (LAST_TRM == trm)
+ LAST_TRM = 0;
+ in_cache = n;
+ }
+ found_cache = TRUE;
+ break;
+ }
+ }
+ if (!found_cache) {
+ int best = 0;
+
+ for (in_cache = 0; in_cache < MAX_CACHE; ++in_cache) {
+ if (LAST_SEQ < cache[best].sequence) {
+ best = in_cache;
+ }
+ }
+ in_cache = best;
+ }
+ LAST_TRM = cur_term;
+ LAST_SEQ = ++sequence;
PC = 0;
UP = 0;
BC = 0;
- fix_me = 0;
+ FIX_SGR0 = 0; /* don't free it - application may still use */
if (errcode == 1) {
@@ -147,67 +155,15 @@ tgetent(char *bufp GCC_UNUSED, const char *name)
if (backspace_if_not_bs != NULL)
BC = backspace_if_not_bs;
- /*
- * While 'sgr0' is the "same" as termcap 'me', there is a compatibility
- * issue. The sgr/sgr0 capabilities include setting/clearing alternate
- * character set mode. A termcap application cannot use sgr, so sgr0
- * strings that reset alternate character set mode will be
- * misinterpreted. Here, we remove those from the more common
- * ISO/ANSI/VT100 entries, which have sgr0 agreeing with sgr.
- */
- if (exit_attribute_mode != 0
- && set_attributes != 0) {
- char *on = set_attribute_9(1);
- char *off = set_attribute_9(0);
- char *tmp;
- size_t i, j, k;
-
- if (similar_sgr(off, exit_attribute_mode)
- && !similar_sgr(off, on)) {
- TR(TRACE_DATABASE, ("adjusting sgr0 : %s", _nc_visbuf(off)));
- FreeIfNeeded(fix_me);
- fix_me = off;
- for (i = 0; off[i] != '\0'; ++i) {
- if (on[i] != off[i]) {
- j = strlen(off);
- k = strlen(on);
- while (j != 0
- && k != 0
- && off[j - 1] == on[k - 1]) {
- --j, --k;
- }
- while (off[j] != '\0') {
- off[i++] = off[j++];
- }
- off[i] = '\0';
- break;
- }
- }
- /* SGR 10 would reset to normal font */
- if ((i = is_csi(off)) != 0
- && off[strlen(off) - 1] == 'm') {
- tmp = skip_zero(off + i);
- if (tmp[0] == '1'
- && skip_zero(tmp + 1) != tmp + 1) {
- i = tmp - off;
- if (off[i - 1] == ';')
- i--;
- j = skip_zero(tmp + 1) - off;
- while (off[j] != '\0') {
- off[i++] = off[j++];
- }
- off[i] = '\0';
- }
- }
- TR(TRACE_DATABASE, ("...adjusted me : %s", _nc_visbuf(fix_me)));
- if (!strcmp(fix_me, exit_attribute_mode)) {
- TR(TRACE_DATABASE, ("...same result, discard"));
- free(fix_me);
- fix_me = 0;
+ if ((FIX_SGR0 = _nc_trim_sgr0(&(cur_term->type))) != 0) {
+ if (!strcmp(FIX_SGR0, exit_attribute_mode)) {
+ if (FIX_SGR0 != exit_attribute_mode) {
+ free(FIX_SGR0);
}
+ FIX_SGR0 = 0;
}
- free(on);
}
+ LAST_BUF = bufp;
(void) baudrate(); /* sets ospeed as a side-effect */
@@ -233,7 +189,7 @@ tgetent(char *bufp GCC_UNUSED, const char *name)
NCURSES_EXPORT(int)
tgetflag(NCURSES_CONST char *id)
{
- int i;
+ unsigned i;
T((T_CALLED("tgetflag(%s)"), id));
if (cur_term != 0) {
@@ -261,7 +217,7 @@ tgetflag(NCURSES_CONST char *id)
NCURSES_EXPORT(int)
tgetnum(NCURSES_CONST char *id)
{
- int i;
+ unsigned i;
T((T_CALLED("tgetnum(%s)"), id));
if (cur_term != 0) {
@@ -290,7 +246,7 @@ tgetnum(NCURSES_CONST char *id)
NCURSES_EXPORT(char *)
tgetstr(NCURSES_CONST char *id, char **area)
{
- int i;
+ unsigned i;
char *result = NULL;
T((T_CALLED("tgetstr(%s,%p)"), id, area));
@@ -304,13 +260,14 @@ tgetstr(NCURSES_CONST char *id, char **area)
/* setupterm forces canceled strings to null */
if (VALID_STRING(result)) {
if (result == exit_attribute_mode
- && fix_me != 0) {
- result = fix_me;
+ && FIX_SGR0 != 0) {
+ result = FIX_SGR0;
TR(TRACE_DATABASE, ("altered to : %s", _nc_visbuf(result)));
}
if (area != 0
&& *area != 0) {
(void) strcpy(*area, result);
+ result = *area;
*area += strlen(*area) + 1;
}
}
@@ -320,3 +277,14 @@ tgetstr(NCURSES_CONST char *id, char **area)
}
returnPtr(result);
}
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_tgetent_leaks(void)
+{
+ for (in_cache = 0; in_cache < MAX_CACHE; ++in_cache) {
+ FreeIfNeeded(FIX_SGR0);
+ del_curterm(LAST_TRM);
+ }
+}
+#endif
diff --git a/contrib/ncurses/ncurses/tinfo/lib_termname.c b/contrib/ncurses/ncurses/tinfo/lib_termname.c
index 57ce807a9e5f..713d0be8c360 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_termname.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_termname.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,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 *
@@ -27,22 +27,18 @@
****************************************************************************/
#include <curses.priv.h>
-#include <tic.h> /* for MAX_ALIAS */
-MODULE_ID("$Id: lib_termname.c,v 1.7 2001/08/04 19:29:38 tom Exp $")
+MODULE_ID("$Id: lib_termname.c,v 1.8 2003/12/27 18:23:01 tom Exp $")
NCURSES_EXPORT(char *)
termname(void)
{
- char *name = getenv("TERM");
- static char ret[MAX_ALIAS + 1];
+ char *name = 0;
T((T_CALLED("termname()")));
- if (name != 0) {
- ret[0] = '\0';
- (void) strncat(ret, name, sizeof(ret) - 1);
- name = ret;
- }
+ if (cur_term != 0)
+ name = cur_term->_termname;
+
returnPtr(name);
}
diff --git a/contrib/ncurses/ncurses/tinfo/lib_tgoto.c b/contrib/ncurses/ncurses/tinfo/lib_tgoto.c
index 17649d53f68f..37553f712394 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_tgoto.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_tgoto.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 2000-2003,2006 Free 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.8 2001/06/02 22:44:42 tom Exp $")
+MODULE_ID("$Id: lib_tgoto.c,v 1.12 2006/11/26 00:26:24 tom Exp $")
#if !PURE_TERMINFO
static bool
@@ -88,7 +88,7 @@ tgoto_internal(const char *string, int x, int y)
while (*string != 0) {
if ((used + need) > length) {
length += (used + need);
- if ((result = _nc_doalloc(result, length)) == 0) {
+ if ((result = typeRealloc(char, length, result)) == 0) {
length = 0;
break;
}
@@ -155,7 +155,7 @@ tgoto_internal(const char *string, int x, int y)
*value = 16 * (*value / 10) + (*value % 10);
break;
case 'D': /* Reverse coding (Delta Data) */
- *value -= 2 * (*value / 16);
+ *value -= 2 * (*value % 16);
break;
}
if (fmt != 0) {
@@ -172,11 +172,13 @@ tgoto_internal(const char *string, int x, int y)
}
string++;
}
- if (need_BC) {
- strcpy(result + used, BC);
- used += strlen(BC);
+ if (result != 0) {
+ if (need_BC) {
+ strcpy(result + used, BC);
+ used += strlen(BC);
+ }
+ result[used] = '\0';
}
- result[used] = '\0';
return result;
}
#endif
@@ -186,8 +188,7 @@ tgoto_internal(const char *string, int x, int y)
* the last two arguments when invoking tparm().
*/
NCURSES_EXPORT(char *)
-tgoto
-(const char *string, int x, int y)
+tgoto(const char *string, int x, int y)
{
char *result;
@@ -197,6 +198,6 @@ tgoto
result = tgoto_internal(string, x, y);
else
#endif
- result = tparm((NCURSES_CONST char *) string, y, x);
+ result = TPARM_2((NCURSES_CONST char *) string, y, x);
returnPtr(result);
}
diff --git a/contrib/ncurses/ncurses/tinfo/lib_ti.c b/contrib/ncurses/ncurses/tinfo/lib_ti.c
index 8ef866588197..df460f953ea7 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_ti.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_ti.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-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 *
@@ -36,12 +36,12 @@
#include <term_entry.h>
#include <tic.h>
-MODULE_ID("$Id: lib_ti.c,v 1.22 2000/12/10 02:55:08 tom Exp $")
+MODULE_ID("$Id: lib_ti.c,v 1.23 2003/05/24 21:10:28 tom Exp $")
NCURSES_EXPORT(int)
tigetflag(NCURSES_CONST char *str)
{
- int i;
+ unsigned i;
T((T_CALLED("tigetflag(%s)"), str));
@@ -62,7 +62,7 @@ tigetflag(NCURSES_CONST char *str)
NCURSES_EXPORT(int)
tigetnum(NCURSES_CONST char *str)
{
- int i;
+ unsigned i;
T((T_CALLED("tigetnum(%s)"), str));
@@ -84,7 +84,7 @@ tigetnum(NCURSES_CONST char *str)
NCURSES_EXPORT(char *)
tigetstr(NCURSES_CONST char *str)
{
- int i;
+ unsigned i;
T((T_CALLED("tigetstr(%s)"), str));
diff --git a/contrib/ncurses/ncurses/tinfo/lib_tparm.c b/contrib/ncurses/ncurses/tinfo/lib_tparm.c
index 931669e933bd..cba31d9fd36b 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_tparm.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_tparm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -42,7 +43,7 @@
#include <term.h>
#include <tic.h>
-MODULE_ID("$Id: lib_tparm.c,v 1.53 2001/06/02 22:53:59 tom Exp $")
+MODULE_ID("$Id: lib_tparm.c,v 1.71 2006/11/26 01:12:56 tom Exp $")
/*
* char *
@@ -108,7 +109,7 @@ MODULE_ID("$Id: lib_tparm.c,v 1.53 2001/06/02 22:53:59 tom Exp $")
typedef struct {
union {
- unsigned int num;
+ int num;
char *str;
} data;
bool num_type;
@@ -128,6 +129,9 @@ static char *out_buff;
static size_t out_size;
static size_t out_used;
+static char *fmt_buff;
+static size_t fmt_size;
+
#if NO_LEAKS
NCURSES_EXPORT(void)
_nc_free_tparm(void)
@@ -136,28 +140,25 @@ _nc_free_tparm(void)
FreeAndNull(out_buff);
out_size = 0;
out_used = 0;
+ FreeAndNull(fmt_buff);
+ fmt_size = 0;
}
}
#endif
-static void
-really_get_space(size_t need)
-{
- out_size = need * 2;
- out_buff = typeRealloc(char, out_size, out_buff);
- if (out_buff == 0)
- _nc_err_abort("Out of memory");
-}
-
-static inline void
+static NCURSES_INLINE void
get_space(size_t need)
{
need += out_used;
- if (need > out_size)
- really_get_space(need);
+ if (need > out_size) {
+ out_size = need * 2;
+ out_buff = typeRealloc(char, out_size, out_buff);
+ if (out_buff == 0)
+ _nc_err_abort(MSG_NO_MEMORY);
+ }
}
-static inline void
+static NCURSES_INLINE void
save_text(const char *fmt, const char *s, int len)
{
size_t s_len = strlen(s);
@@ -170,19 +171,19 @@ save_text(const char *fmt, const char *s, int len)
out_used += strlen(out_buff + out_used);
}
-static inline void
+static NCURSES_INLINE void
save_number(const char *fmt, int number, int len)
{
if (len < 30)
len = 30; /* actually log10(MAX_INT)+1 */
- get_space(len + 1);
+ get_space((unsigned) len + 1);
(void) sprintf(out_buff + out_used, fmt, number);
out_used += strlen(out_buff + out_used);
}
-static inline void
+static NCURSES_INLINE void
save_char(int c)
{
if (c == 0)
@@ -191,7 +192,7 @@ save_char(int c)
out_buff[out_used++] = c;
}
-static inline void
+static NCURSES_INLINE void
npush(int x)
{
if (stack_ptr < STACKSIZE) {
@@ -204,7 +205,7 @@ npush(int x)
}
}
-static inline int
+static NCURSES_INLINE int
npop(void)
{
int result = 0;
@@ -219,7 +220,7 @@ npop(void)
return result;
}
-static inline void
+static NCURSES_INLINE void
spush(char *x)
{
if (stack_ptr < STACKSIZE) {
@@ -232,7 +233,7 @@ spush(char *x)
}
}
-static inline char *
+static NCURSES_INLINE char *
spop(void)
{
static char dummy[] = ""; /* avoid const-cast */
@@ -248,152 +249,139 @@ spop(void)
return result;
}
-static inline const char *
+static NCURSES_INLINE const char *
parse_format(const char *s, char *format, int *len)
{
- bool done = FALSE;
- bool allowminus = FALSE;
- bool dot = FALSE;
- bool err = FALSE;
- char *fmt = format;
- int prec = 0;
- int width = 0;
- int value = 0;
-
*len = 0;
- *format++ = '%';
- while (*s != '\0' && !done) {
- switch (*s) {
- case 'c': /* FALLTHRU */
- case 'd': /* FALLTHRU */
- case 'o': /* FALLTHRU */
- case 'x': /* FALLTHRU */
- case 'X': /* FALLTHRU */
- case 's':
- *format++ = *s;
- done = TRUE;
- break;
- case '.':
- *format++ = *s++;
- if (dot) {
- err = TRUE;
- } else {
- dot = TRUE;
- prec = value;
- }
- value = 0;
- break;
- case '#':
- *format++ = *s++;
- break;
- case ' ':
- *format++ = *s++;
- break;
- case ':':
- s++;
- allowminus = TRUE;
- break;
- case '-':
- if (allowminus) {
- *format++ = *s++;
- } else {
+ if (format != 0) {
+ bool done = FALSE;
+ bool allowminus = FALSE;
+ bool dot = FALSE;
+ bool err = FALSE;
+ char *fmt = format;
+ int my_width = 0;
+ int my_prec = 0;
+ int value = 0;
+
+ *len = 0;
+ *format++ = '%';
+ while (*s != '\0' && !done) {
+ switch (*s) {
+ case 'c': /* FALLTHRU */
+ case 'd': /* FALLTHRU */
+ case 'o': /* FALLTHRU */
+ case 'x': /* FALLTHRU */
+ case 'X': /* FALLTHRU */
+ case 's':
+ *format++ = *s;
done = TRUE;
- }
- break;
- default:
- if (isdigit(UChar(*s))) {
- value = (value * 10) + (*s - '0');
- if (value > 10000)
+ break;
+ case '.':
+ *format++ = *s++;
+ if (dot) {
err = TRUE;
+ } else { /* value before '.' is the width */
+ dot = TRUE;
+ my_width = value;
+ }
+ value = 0;
+ break;
+ case '#':
*format++ = *s++;
- } else {
- done = TRUE;
+ break;
+ case ' ':
+ *format++ = *s++;
+ break;
+ case ':':
+ s++;
+ allowminus = TRUE;
+ break;
+ case '-':
+ if (allowminus) {
+ *format++ = *s++;
+ } else {
+ done = TRUE;
+ }
+ break;
+ default:
+ if (isdigit(UChar(*s))) {
+ value = (value * 10) + (*s - '0');
+ if (value > 10000)
+ err = TRUE;
+ *format++ = *s++;
+ } else {
+ done = TRUE;
+ }
}
}
- }
-
- /*
- * If we found an error, ignore (and remove) the flags.
- */
- if (err) {
- prec = width = value = 0;
- format = fmt;
- *format++ = '%';
- *format++ = *s;
- }
- if (dot)
- width = value;
- else
- prec = value;
+ /*
+ * If we found an error, ignore (and remove) the flags.
+ */
+ if (err) {
+ my_width = my_prec = value = 0;
+ format = fmt;
+ *format++ = '%';
+ *format++ = *s;
+ }
- *format = '\0';
- /* return maximum string length in print */
- *len = (prec > width) ? prec : width;
+ /*
+ * Any value after '.' is the precision. If we did not see '.', then
+ * the value is the width.
+ */
+ if (dot)
+ my_prec = value;
+ else
+ my_width = value;
+
+ *format = '\0';
+ /* return maximum string length in print */
+ *len = (my_width > my_prec) ? my_width : my_prec;
+ }
return s;
}
#define isUPPER(c) ((c) >= 'A' && (c) <= 'Z')
#define isLOWER(c) ((c) >= 'a' && (c) <= 'z')
-static inline char *
-tparam_internal(const char *string, va_list ap)
+/*
+ * Analyze the string to see how many parameters we need from the varargs list,
+ * and what their types are. We will only accept string parameters if they
+ * appear as a %l or %s format following an explicit parameter reference (e.g.,
+ * %p2%s). All other parameters are numbers.
+ *
+ * 'number' counts coarsely the number of pop's we see in the string, and
+ * 'popcount' shows the highest parameter number in the string. We would like
+ * to simply use the latter count, but if we are reading termcap strings, there
+ * may be cases that we cannot see the explicit parameter numbers.
+ */
+NCURSES_EXPORT(int)
+_nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount)
{
-#define NUM_VARS 26
- char *p_is_s[9];
- int param[9];
- int lastpop;
- int popcount;
- int number;
- int len;
- int level;
- int x, y;
- int i;
size_t len2;
- register const char *cp;
- static size_t len_fmt;
+ int i;
+ int lastpop = -1;
+ int len;
+ int number = 0;
+ const char *cp = string;
static char dummy[] = "";
- static char *format;
- static int dynamic_var[NUM_VARS];
- static int static_vars[NUM_VARS];
- out_used = 0;
- if (string == NULL)
- return NULL;
+ if (cp == 0)
+ return 0;
- if ((len2 = strlen(string)) > len_fmt) {
- len_fmt = len2 + len_fmt + 2;
- if ((format = typeRealloc(char, len_fmt, format)) == 0)
+ if ((len2 = strlen(cp)) > fmt_size) {
+ fmt_size = len2 + fmt_size + 2;
+ if ((fmt_buff = typeRealloc(char, fmt_size, fmt_buff)) == 0)
return 0;
}
- /*
- * Find the highest parameter-number referred to in the format string.
- * Use this value to limit the number of arguments copied from the
- * variable-length argument list.
- */
-
- number = 0;
- lastpop = -1;
- popcount = 0;
- memset(p_is_s, 0, sizeof(p_is_s));
+ memset(p_is_s, 0, sizeof(p_is_s[0]) * NUM_PARM);
+ *popcount = 0;
- /*
- * Analyze the string to see how many parameters we need from the varargs
- * list, and what their types are. We will only accept string parameters
- * if they appear as a %l or %s format following an explicit parameter
- * reference (e.g., %p2%s). All other parameters are numbers.
- *
- * 'number' counts coarsely the number of pop's we see in the string, and
- * 'popcount' shows the highest parameter number in the string. We would
- * like to simply use the latter count, but if we are reading termcap
- * strings, there may be cases that we cannot see the explicit parameter
- * numbers.
- */
- for (cp = string; (cp - string) < (int) len2;) {
+ while ((cp - string) < (int) len2) {
if (*cp == '%') {
cp++;
- cp = parse_format(cp, format, &len);
+ cp = parse_format(cp, fmt_buff, &len);
switch (*cp) {
default:
break;
@@ -403,7 +391,8 @@ tparam_internal(const char *string, va_list ap)
case 'x': /* FALLTHRU */
case 'X': /* FALLTHRU */
case 'c': /* FALLTHRU */
- number++;
+ if (lastpop <= 0)
+ number++;
lastpop = -1;
break;
@@ -416,15 +405,19 @@ tparam_internal(const char *string, va_list ap)
case 'p':
cp++;
- i = (*cp - '0');
- if (i >= 0 && i <= 9) {
+ i = (UChar(*cp) - '0');
+ if (i >= 0 && i <= NUM_PARM) {
lastpop = i;
- if (lastpop > popcount)
- popcount = lastpop;
+ if (lastpop > *popcount)
+ *popcount = lastpop;
}
break;
case 'P':
+ ++number;
+ ++cp;
+ break;
+
case 'g':
cp++;
break;
@@ -436,7 +429,7 @@ tparam_internal(const char *string, va_list ap)
case L_BRACE:
cp++;
- while (*cp >= '0' && *cp <= '9') {
+ while (isdigit(UChar(*cp))) {
cp++;
}
break;
@@ -454,16 +447,18 @@ tparam_internal(const char *string, va_list ap)
case '=':
case '<':
case '>':
+ lastpop = -1;
+ number += 2;
+ break;
+
case '!':
case '~':
lastpop = -1;
- number += 2;
+ ++number;
break;
case 'i':
- lastpop = -1;
- if (popcount < 2)
- popcount = 2;
+ /* will add 1 to first (usually two) parameters */
break;
}
}
@@ -471,18 +466,55 @@ tparam_internal(const char *string, va_list ap)
cp++;
}
- if (number > 9)
- number = 9;
+ if (number > NUM_PARM)
+ number = NUM_PARM;
+ return number;
+}
+
+static NCURSES_INLINE char *
+tparam_internal(const char *string, va_list ap)
+{
+#define NUM_VARS 26
+ char *p_is_s[NUM_PARM];
+ TPARM_ARG param[NUM_PARM];
+ int popcount;
+ int number;
+ int len;
+ int level;
+ int x, y;
+ int i;
+ const char *cp = string;
+ size_t len2;
+ static int dynamic_var[NUM_VARS];
+ static int static_vars[NUM_VARS];
+
+ if (cp == NULL)
+ return NULL;
+
+ out_used = 0;
+ len2 = strlen(cp);
+
+ /*
+ * Find the highest parameter-number referred to in the format string.
+ * Use this value to limit the number of arguments copied from the
+ * variable-length argument list.
+ */
+ number = _nc_tparm_analyze(cp, p_is_s, &popcount);
+ if (fmt_buff == 0)
+ return NULL;
+
for (i = 0; i < max(popcount, number); i++) {
/*
* A few caps (such as plab_norm) have string-valued parms.
* We'll have to assume that the caller knows the difference, since
- * a char* and an int may not be the same size on the stack.
+ * a char* and an int may not be the same size on the stack. The
+ * normal prototype for this uses 9 long's, which is consistent with
+ * our va_arg() usage.
*/
if (p_is_s[i] != 0) {
p_is_s[i] = va_arg(ap, char *);
} else {
- param[i] = va_arg(ap, int);
+ param[i] = va_arg(ap, TPARM_ARG);
}
}
@@ -507,18 +539,18 @@ tparam_internal(const char *string, va_list ap)
else
save_number(", %d", param[i], 0);
}
- _tracef(T_CALLED("%s(%s%s)"), tname, _nc_visbuf(string), out_buff);
+ _tracef(T_CALLED("%s(%s%s)"), tname, _nc_visbuf(cp), out_buff);
out_used = 0;
}
#endif /* TRACE */
- while (*string) {
- if (*string != '%') {
- save_char(*string);
+ while ((cp - string) < (int) len2) {
+ if (*cp != '%') {
+ save_char(UChar(*cp));
} else {
- tparam_base = string++;
- string = parse_format(string, format, &len);
- switch (*string) {
+ tparam_base = cp++;
+ cp = parse_format(cp, fmt_buff, &len);
+ switch (*cp) {
default:
break;
case '%':
@@ -529,22 +561,25 @@ tparam_internal(const char *string, va_list ap)
case 'o': /* FALLTHRU */
case 'x': /* FALLTHRU */
case 'X': /* FALLTHRU */
+ save_number(fmt_buff, npop(), len);
+ break;
+
case 'c': /* FALLTHRU */
- save_number(format, npop(), len);
+ save_char(npop());
break;
case 'l':
- save_number("%d", strlen(spop()), 0);
+ save_number("%d", (int) strlen(spop()), 0);
break;
case 's':
- save_text(format, spop(), len);
+ save_text(fmt_buff, spop(), len);
break;
case 'p':
- string++;
- i = (*string - '1');
- if (i >= 0 && i < 9) {
+ cp++;
+ i = (UChar(*cp) - '1');
+ if (i >= 0 && i < NUM_PARM) {
if (p_is_s[i])
spush(p_is_s[i]);
else
@@ -553,39 +588,39 @@ tparam_internal(const char *string, va_list ap)
break;
case 'P':
- string++;
- if (isUPPER(*string)) {
- i = (*string - 'A');
+ cp++;
+ if (isUPPER(*cp)) {
+ i = (UChar(*cp) - 'A');
static_vars[i] = npop();
- } else if (isLOWER(*string)) {
- i = (*string - 'a');
+ } else if (isLOWER(*cp)) {
+ i = (UChar(*cp) - 'a');
dynamic_var[i] = npop();
}
break;
case 'g':
- string++;
- if (isUPPER(*string)) {
- i = (*string - 'A');
+ cp++;
+ if (isUPPER(*cp)) {
+ i = (UChar(*cp) - 'A');
npush(static_vars[i]);
- } else if (isLOWER(*string)) {
- i = (*string - 'a');
+ } else if (isLOWER(*cp)) {
+ i = (UChar(*cp) - 'a');
npush(dynamic_var[i]);
}
break;
case S_QUOTE:
- string++;
- npush(*string);
- string++;
+ cp++;
+ npush(UChar(*cp));
+ cp++;
break;
case L_BRACE:
number = 0;
- string++;
- while (*string >= '0' && *string <= '9') {
- number = number * 10 + *string - '0';
- string++;
+ cp++;
+ while (isdigit(UChar(*cp))) {
+ number = (number * 10) + (UChar(*cp) - '0');
+ cp++;
}
npush(number);
break;
@@ -676,38 +711,38 @@ tparam_internal(const char *string, va_list ap)
x = npop();
if (!x) {
/* scan forward for %e or %; at level zero */
- string++;
+ cp++;
level = 0;
- while (*string) {
- if (*string == '%') {
- string++;
- if (*string == '?')
+ while (*cp) {
+ if (*cp == '%') {
+ cp++;
+ if (*cp == '?')
level++;
- else if (*string == ';') {
+ else if (*cp == ';') {
if (level > 0)
level--;
else
break;
- } else if (*string == 'e' && level == 0)
+ } else if (*cp == 'e' && level == 0)
break;
}
- if (*string)
- string++;
+ if (*cp)
+ cp++;
}
}
break;
case 'e':
/* scan forward for a %; at level zero */
- string++;
+ cp++;
level = 0;
- while (*string) {
- if (*string == '%') {
- string++;
- if (*string == '?')
+ while (*cp) {
+ if (*cp == '%') {
+ cp++;
+ if (*cp == '?')
level++;
- else if (*string == ';') {
+ else if (*cp == ';') {
if (level > 0)
level--;
else
@@ -715,22 +750,22 @@ tparam_internal(const char *string, va_list ap)
}
}
- if (*string)
- string++;
+ if (*cp)
+ cp++;
}
break;
case ';':
break;
- } /* endswitch (*string) */
- } /* endelse (*string == '%') */
+ } /* endswitch (*cp) */
+ } /* endelse (*cp == '%') */
- if (*string == '\0')
+ if (*cp == '\0')
break;
- string++;
- } /* endwhile (*string) */
+ cp++;
+ } /* endwhile (*cp) */
get_space(1);
out_buff[out_used] = '\0';
@@ -739,9 +774,14 @@ tparam_internal(const char *string, va_list ap)
return (out_buff);
}
+#if NCURSES_TPARM_VARARGS
+#define tparm_varargs tparm
+#else
+#define tparm_proto tparm
+#endif
+
NCURSES_EXPORT(char *)
-tparm
-(NCURSES_CONST char *string,...)
+tparm_varargs(NCURSES_CONST char *string,...)
{
va_list ap;
char *result;
@@ -755,3 +795,20 @@ tparm
va_end(ap);
return result;
}
+
+#if !NCURSES_TPARM_VARARGS
+NCURSES_EXPORT(char *)
+tparm_proto(NCURSES_CONST char *string,
+ TPARM_ARG a1,
+ TPARM_ARG a2,
+ TPARM_ARG a3,
+ TPARM_ARG a4,
+ TPARM_ARG a5,
+ TPARM_ARG a6,
+ TPARM_ARG a7,
+ TPARM_ARG a8,
+ TPARM_ARG a9)
+{
+ return tparm_varargs(string, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+}
+#endif /* NCURSES_TPARM_VARARGS */
diff --git a/contrib/ncurses/ncurses/tinfo/lib_tputs.c b/contrib/ncurses/ncurses/tinfo/lib_tputs.c
index 26d805ba4025..3a18ffd7404f 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_tputs.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_tputs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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 *
@@ -45,16 +45,14 @@
#include <termcap.h> /* ospeed */
#include <tic.h>
-MODULE_ID("$Id: lib_tputs.c,v 1.59 2001/09/22 18:35:23 tom Exp $")
+MODULE_ID("$Id: lib_tputs.c,v 1.62 2003/08/23 21:39:20 tom Exp $")
-NCURSES_EXPORT_VAR(char)
-PC = 0; /* used by termcap library */
+NCURSES_EXPORT_VAR(char) PC = 0; /* used by termcap library */
NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0; /* used by termcap library */
-NCURSES_EXPORT_VAR(int)
-_nc_nulls_sent = 0; /* used by 'tack' program */
+NCURSES_EXPORT_VAR(int) _nc_nulls_sent = 0; /* used by 'tack' program */
- static int (*my_outch) (int c) = _nc_outch;
+static int (*my_outch) (int c) = _nc_outch;
NCURSES_EXPORT(int)
delay_output(int ms)
@@ -67,7 +65,7 @@ delay_output(int ms)
} else {
register int nullcount;
- nullcount = (ms * _nc_baudrate(ospeed)) / 10000;
+ nullcount = (ms * _nc_baudrate(ospeed)) / (BAUDBYTE * 1000);
for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--)
my_outch(PC);
if (my_outch == _nc_outch)
@@ -86,9 +84,7 @@ _nc_flush(void)
NCURSES_EXPORT(int)
_nc_outch(int ch)
{
-#ifdef TRACE
- _nc_outchars++;
-#endif /* TRACE */
+ TRACE_OUTCHARS(1);
if (SP != 0
&& SP->_cleanup) {
@@ -111,8 +107,7 @@ putp(const char *string)
}
NCURSES_EXPORT(int)
-tputs
-(const char *string, int affcnt, int (*outc) (int))
+tputs(const char *string, int affcnt, int (*outc) (int))
{
bool always_delay;
bool normal_delay;
diff --git a/contrib/ncurses/ncurses/tinfo/lib_ttyflags.c b/contrib/ncurses/ncurses/tinfo/lib_ttyflags.c
index 385166e94fa7..77c35fa58426 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_ttyflags.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_ttyflags.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,42 +38,56 @@
#include <curses.priv.h>
#include <term.h> /* cur_term */
-MODULE_ID("$Id: lib_ttyflags.c,v 1.7 2002/05/25 14:50:00 tom Exp $")
-
-#undef tabs
-
-#ifdef TAB3
-# define tabs TAB3
-#else
-# ifdef XTABS
-# define tabs XTABS
-# else
-# ifdef OXTABS
-# define tabs OXTABS
-# else
-# define tabs 0
-# endif
-# endif
-#endif
+MODULE_ID("$Id: lib_ttyflags.c,v 1.13 2006/12/10 01:31:54 tom Exp $")
NCURSES_EXPORT(int)
_nc_get_tty_mode(TTY * buf)
{
- if (cur_term == 0
- || GET_TTY(cur_term->Filedes, buf) != 0)
- return (ERR);
- TR(TRACE_BITS, ("_nc_get_tty_mode: %s", _nc_trace_ttymode(buf)));
- return (OK);
+ int result = OK;
+
+ if (cur_term == 0) {
+ result = ERR;
+ } else {
+ for (;;) {
+ if (GET_TTY(cur_term->Filedes, buf) != 0) {
+ if (errno == EINTR)
+ continue;
+ result = ERR;
+ }
+ break;
+ }
+ }
+
+ if (result == ERR)
+ memset(buf, 0, sizeof(*buf));
+
+ TR(TRACE_BITS, ("_nc_get_tty_mode(%d): %s",
+ cur_term->Filedes, _nc_trace_ttymode(buf)));
+ return (result);
}
NCURSES_EXPORT(int)
_nc_set_tty_mode(TTY * buf)
{
- if (cur_term == 0
- || SET_TTY(cur_term->Filedes, buf) != 0)
- return (ERR);
- TR(TRACE_BITS, ("_nc_set_tty_mode: %s", _nc_trace_ttymode(buf)));
- return (OK);
+ int result = OK;
+
+ if (cur_term == 0) {
+ result = ERR;
+ } else {
+ for (;;) {
+ if (SET_TTY(cur_term->Filedes, buf) != 0) {
+ if (errno == EINTR)
+ continue;
+ if ((errno == ENOTTY) && (SP != 0))
+ SP->_notty = TRUE;
+ result = ERR;
+ }
+ break;
+ }
+ }
+ TR(TRACE_BITS, ("_nc_set_tty_mode(%d): %s",
+ cur_term->Filedes, _nc_trace_ttymode(buf)));
+ return (result);
}
NCURSES_EXPORT(int)
@@ -82,14 +96,13 @@ def_shell_mode(void)
T((T_CALLED("def_shell_mode()")));
/*
- * Turn off the XTABS bit in the tty structure if it was on. If XTABS
- * was on, remove the tab and backtab capabilities.
+ * If XTABS was on, remove the tab and backtab capabilities.
*/
if (_nc_get_tty_mode(&cur_term->Ottyb) != OK)
returnCode(ERR);
#ifdef TERMIOS
- if (cur_term->Ottyb.c_oflag & tabs)
+ if (cur_term->Ottyb.c_oflag & OFLAGS_TABS)
tab = back_tab = NULL;
#else
if (cur_term->Ottyb.sg_flags & XTABS)
@@ -103,10 +116,14 @@ def_prog_mode(void)
{
T((T_CALLED("def_prog_mode()")));
+ /*
+ * Turn off the XTABS bit in the tty structure if it was on.
+ */
+
if (_nc_get_tty_mode(&cur_term->Nttyb) != OK)
returnCode(ERR);
#ifdef TERMIOS
- cur_term->Nttyb.c_oflag &= ~tabs;
+ cur_term->Nttyb.c_oflag &= ~OFLAGS_TABS;
#else
cur_term->Nttyb.sg_flags &= ~XTABS;
#endif
@@ -119,13 +136,14 @@ reset_prog_mode(void)
T((T_CALLED("reset_prog_mode()")));
if (cur_term != 0) {
- _nc_set_tty_mode(&cur_term->Nttyb);
- if (SP) {
- if (SP->_keypad_on)
- _nc_keypad(TRUE);
- NC_BUFFERED(TRUE);
+ if (_nc_set_tty_mode(&cur_term->Nttyb) == OK) {
+ if (SP) {
+ if (SP->_keypad_on)
+ _nc_keypad(TRUE);
+ NC_BUFFERED(TRUE);
+ }
+ returnCode(OK);
}
- returnCode(OK);
}
returnCode(ERR);
}
diff --git a/contrib/ncurses/ncurses/tinfo/make_keys.c b/contrib/ncurses/ncurses/tinfo/make_keys.c
index 3c98da23e019..8f6243c93c75 100644
--- a/contrib/ncurses/ncurses/tinfo/make_keys.c
+++ b/contrib/ncurses/ncurses/tinfo/make_keys.c
@@ -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 *
@@ -35,9 +35,11 @@
* making the output show the indices into the TERMTYPE Strings array. Doing
* it that way lets us cut down on the size of the init_keytry() function.
*/
+
+#define USE_TERMLIB 1
#include <curses.priv.h>
-MODULE_ID("$Id: make_keys.c,v 1.10 2000/12/10 02:55:08 tom Exp $")
+MODULE_ID("$Id: make_keys.c,v 1.12 2005/08/20 19:58:18 tom Exp $")
#include <names.c>
@@ -66,7 +68,7 @@ lookup(const char *name)
}
static void
-make_keys(FILE * ifp, FILE * ofp)
+make_keys(FILE *ifp, FILE *ofp)
{
char buffer[BUFSIZ];
char from[BUFSIZ];
@@ -92,7 +94,7 @@ make_keys(FILE * ifp, FILE * ofp)
}
static void
-write_list(FILE * ofp, const char **list)
+write_list(FILE *ofp, const char **list)
{
while (*list != 0)
fprintf(ofp, "%s\n", *list++);
diff --git a/contrib/ncurses/ncurses/tinfo/name_match.c b/contrib/ncurses/ncurses/tinfo/name_match.c
index e7205d5ec8ab..fee3ba3bc711 100644
--- a/contrib/ncurses/ncurses/tinfo/name_match.c
+++ b/contrib/ncurses/ncurses/tinfo/name_match.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2004,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 *
@@ -34,7 +34,7 @@
#include <term.h>
#include <tic.h>
-MODULE_ID("$Id: name_match.c,v 1.11 2001/09/22 21:11:34 tom Exp $")
+MODULE_ID("$Id: name_match.c,v 1.15 2005/01/22 21:47:25 tom Exp $")
/*
* _nc_first_name(char *names)
@@ -49,8 +49,16 @@ _nc_first_name(const char *const sp)
static char *buf;
register unsigned n;
+#if NO_LEAKS
+ if (sp == 0) {
+ if (buf != 0)
+ FreeAndNull(buf); /* for leak-testing */
+ return 0;
+ }
+#endif
+
if (buf == 0)
- buf = _nc_doalloc(buf, MAX_NAME_SIZE + 1);
+ buf = typeMalloc(char, MAX_NAME_SIZE + 1);
for (n = 0; n < MAX_NAME_SIZE; n++) {
if ((buf[n] = sp[n]) == '\0'
|| (buf[n] == '|'))
@@ -67,8 +75,7 @@ _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)
+_nc_name_match(const char *const namelst, const char *const name, const char *const delim)
{
const char *s, *d, *t;
int code, found;
diff --git a/contrib/ncurses/ncurses/tinfo/parse_entry.c b/contrib/ncurses/ncurses/tinfo/parse_entry.c
index 1c0ce850e42d..510b232c8b5c 100644
--- a/contrib/ncurses/ncurses/tinfo/parse_entry.c
+++ b/contrib/ncurses/ncurses/tinfo/parse_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -47,7 +48,7 @@
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: parse_entry.c,v 1.56 2002/05/25 12:23:51 tom Exp $")
+MODULE_ID("$Id: parse_entry.c,v 1.63 2006/06/17 17:57:50 tom Exp $")
#ifdef LINT
static short const parametrized[] =
@@ -141,7 +142,7 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
case BOOLEAN:
tp->ext_Booleans += 1;
tp->num_Booleans += 1;
- tp->Booleans = typeRealloc(char, tp->num_Booleans, tp->Booleans);
+ tp->Booleans = typeRealloc(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans);
for (last = tp->num_Booleans - 1; last > tindex; last--)
tp->Booleans[last] = tp->Booleans[last - 1];
break;
@@ -188,20 +189,24 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
* if the token was not a name in column 1, complain and die
* save names in entry's string table
* while (get_token() is not EOF and not NAMES)
- * check for existance and type-correctness
+ * check for existence and type-correctness
* enter cap into structure
* if STRING
* save string in entry's string table
* push back token
*/
+#define BAD_TC_USAGE if (!bad_tc_usage) \
+ { bad_tc_usage = TRUE; \
+ _nc_warning("Legacy termcap allows only a trailing tc= clause"); }
+
NCURSES_EXPORT(int)
-_nc_parse_entry
-(struct entry *entryp, int literal, bool silent)
+_nc_parse_entry(struct entry *entryp, int literal, bool silent)
{
int token_type;
struct name_table_entry const *entry_ptr;
char *ptr, *base;
+ bool bad_tc_usage = FALSE;
token_type = _nc_get_token(silent);
@@ -217,11 +222,25 @@ _nc_parse_entry
entryp->startline = _nc_start_line;
DEBUG(2, ("Comment range is %ld to %ld", entryp->cstart, entryp->cend));
- /* junk the 2-character termcap name, if present */
+ /*
+ * Strip off the 2-character termcap name, if present. Originally termcap
+ * used that as an indexing aid. We can retain 2-character terminfo names,
+ * but note that they would be lost if we translate to/from termcap. This
+ * feature is supposedly obsolete since "newer" BSD implementations do not
+ * use it; however our reference for this feature is SunOS 4.x, which
+ * implemented it. Note that the resulting terminal type was never the
+ * 2-character name, but was instead the first alias after that.
+ */
ptr = _nc_curr_token.tk_name;
- if (ptr[2] == '|') {
- ptr = _nc_curr_token.tk_name + 3;
- _nc_curr_token.tk_name[2] = '\0';
+ if (_nc_syntax == SYN_TERMCAP
+#if NCURSES_XNAMES
+ && !_nc_user_definable
+#endif
+ ) {
+ if (ptr[2] == '|') {
+ ptr += 3;
+ _nc_curr_token.tk_name[2] = '\0';
+ }
}
entryp->tterm.str_table = entryp->tterm.term_names = _nc_save_str(ptr);
@@ -252,11 +271,15 @@ _nc_parse_entry
for (token_type = _nc_get_token(silent);
token_type != EOF && token_type != NAMES;
token_type = _nc_get_token(silent)) {
- if (strcmp(_nc_curr_token.tk_name, "use") == 0
- || strcmp(_nc_curr_token.tk_name, "tc") == 0) {
+ 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) {
entryp->uses[entryp->nuses].name = _nc_save_str(_nc_curr_token.tk_valstring);
entryp->uses[entryp->nuses].line = _nc_curr_line;
entryp->nuses++;
+ if (entryp->nuses > 1 && is_tc) {
+ BAD_TC_USAGE
+ }
} else {
/* normal token lookup */
entry_ptr = _nc_find_entry(_nc_curr_token.tk_name,
@@ -274,6 +297,9 @@ _nc_parse_entry
const struct alias *ap;
if (_nc_syntax == SYN_TERMCAP) {
+ if (entryp->nuses != 0) {
+ BAD_TC_USAGE
+ }
for (ap = _nc_capalias_table; ap->from; ap++)
if (strcmp(ap->from, _nc_curr_token.tk_name) == 0) {
if (ap->to == (char *) 0) {
@@ -345,22 +371,25 @@ _nc_parse_entry
*/
/* tell max_attributes from arrow_key_map */
- if (token_type == NUMBER && !strcmp("ma", _nc_curr_token.tk_name))
+ if (token_type == NUMBER
+ && !strcmp("ma", _nc_curr_token.tk_name)) {
entry_ptr = _nc_find_type_entry("ma", NUMBER,
_nc_get_table(_nc_syntax
!= 0));
- /* map terminfo's string MT to MT */
- else if (token_type == STRING && !strcmp("MT", _nc_curr_token.tk_name))
+ /* map terminfo's string MT to MT */
+ } else if (token_type == STRING
+ && !strcmp("MT", _nc_curr_token.tk_name)) {
entry_ptr = _nc_find_type_entry("MT", STRING,
_nc_get_table(_nc_syntax
!= 0));
- /* treat strings without following "=" as empty strings */
- else if (token_type == BOOLEAN && entry_ptr->nte_type == STRING)
+ /* treat strings without following "=" as empty strings */
+ } else if (token_type == BOOLEAN
+ && entry_ptr->nte_type == STRING) {
token_type = STRING;
- /* we couldn't recover; skip this token */
- else {
+ /* we couldn't recover; skip this token */
+ } else {
if (!silent) {
const char *type_name;
switch (entry_ptr->nte_type) {
@@ -594,7 +623,7 @@ static const char C_HT[] = "\t";
#define CUR tp->
static void
-postprocess_termcap(TERMTYPE * tp, bool has_base)
+postprocess_termcap(TERMTYPE *tp, bool has_base)
{
char buf[MAX_LINE * 2 + 2];
string_desc result;
@@ -869,13 +898,12 @@ postprocess_termcap(TERMTYPE * tp, bool has_base)
} else if (acs_chars == 0
&& enter_alt_charset_mode != 0
&& exit_alt_charset_mode != 0) {
- acs_chars =
- _nc_save_str("``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~");
+ acs_chars = _nc_save_str(VT_ACSC);
}
}
static void
-postprocess_terminfo(TERMTYPE * tp)
+postprocess_terminfo(TERMTYPE *tp)
{
/*
* TERMINFO-TO-TERMINFO MAPPINGS FOR SOURCE TRANSLATION
diff --git a/contrib/ncurses/ncurses/tinfo/read_entry.c b/contrib/ncurses/ncurses/tinfo/read_entry.c
index 006e56c3ddb1..c6c327514d57 100644
--- a/contrib/ncurses/ncurses/tinfo/read_entry.c
+++ b/contrib/ncurses/ncurses/tinfo/read_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,77 +29,24 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*
* read_entry.c -- Routine for reading in a compiled terminfo file
- *
*/
#include <curses.priv.h>
+#include <hashed_db.h>
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: read_entry.c,v 1.72 2000/12/10 02:55:08 tom Exp $")
-
-#if !HAVE_TELL
-#define tell(fd) 0 /* lseek() is POSIX, but not tell() - odd... */
-#endif
-
-/*
- * int
- * _nc_read_file_entry(filename, ptr)
- *
- * Read the compiled terminfo entry in the given file into the
- * structure pointed to by ptr, allocating space for the string
- * table.
- */
-
-#undef BYTE
-#define BYTE(p,n) (unsigned char)((p)[n])
-
-#define IS_NEG1(p) ((BYTE(p,0) == 0377) && (BYTE(p,1) == 0377))
-#define IS_NEG2(p) ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377))
-#define LOW_MSB(p) (BYTE(p,0) + 256*BYTE(p,1))
-
-static bool have_tic_directory = FALSE;
-static bool keep_tic_directory = FALSE;
-
-/*
- * Record the "official" location of the terminfo directory, according to
- * the place where we're writing to, or the normal default, if not.
- */
-NCURSES_EXPORT(const char *)
-_nc_tic_dir(const char *path)
-{
- static const char *result = TERMINFO;
-
- if (!keep_tic_directory) {
- if (path != 0) {
- result = path;
- have_tic_directory = TRUE;
- } else if (!have_tic_directory && use_terminfo_vars()) {
- char *envp;
- if ((envp = getenv("TERMINFO")) != 0)
- return _nc_tic_dir(envp);
- }
- }
- return result;
-}
+MODULE_ID("$Id: read_entry.c,v 1.99 2006/08/19 15:58:50 tom Exp $")
-/*
- * Special fix to prevent the terminfo directory from being moved after tic
- * has chdir'd to it. If we let it be changed, then if $TERMINFO has a
- * relative path, we'll lose track of the actual directory.
- */
-NCURSES_EXPORT(void)
-_nc_keep_tic_dir(const char *path)
-{
- _nc_tic_dir(path);
- keep_tic_directory = TRUE;
-}
+#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts))
+#if USE_DATABASE
static void
convert_shorts(char *buf, short *Numbers, int count)
{
@@ -145,30 +92,51 @@ convert_strings(char *buf, char **Strings, int count, int size, char *table)
}
}
-#define read_shorts(fd, buf, count) (read(fd, buf, (count)*2) == (count)*2)
+static int
+fake_read(char *src, int *offset, int limit, char *dst, unsigned want)
+{
+ int have = (limit - *offset);
+
+ if (have > 0) {
+ if ((int) want > have)
+ want = have;
+ memcpy(dst, src + *offset, want);
+ *offset += want;
+ } else {
+ want = 0;
+ }
+ return (int) want;
+}
+
+#define Read(buf, count) fake_read(buffer, &offset, limit, buf, count)
+
+#define read_shorts(buf, count) \
+ (Read(buf, (unsigned) (count)*2) == (int) (count)*2)
#define even_boundary(value) \
- if ((value) % 2 != 0) read(fd, buf, 1)
+ if ((value) % 2 != 0) Read(buf, 1)
-static int
-read_termtype(int fd, TERMTYPE * ptr)
+NCURSES_EXPORT(int)
+_nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
/* return 1 if read, 0 if not found or garbled */
{
+ int offset = 0;
int name_size, bool_count, num_count, str_count, str_size;
int i;
- char buf[MAX_ENTRY_SIZE];
+ char buf[MAX_ENTRY_SIZE + 1];
+ char *string_table;
+ unsigned want, have;
- TR(TRACE_DATABASE, ("READ termtype header @%d", tell(fd)));
+ TR(TRACE_DATABASE, ("READ termtype header @%d", offset));
memset(ptr, 0, sizeof(*ptr));
/* grab the header */
- if (!read_shorts(fd, buf, 6)
- || LOW_MSB(buf) != MAGIC) {
- return (0);
+ if (!read_shorts(buf, 6)
+ || !IS_TIC_MAGIC(buf)) {
+ return (TGETENT_NO);
}
- _nc_free_termtype(ptr);
name_size = LOW_MSB(buf + 2);
bool_count = LOW_MSB(buf + 4);
num_count = LOW_MSB(buf + 6);
@@ -184,34 +152,41 @@ read_termtype(int fd, TERMTYPE * ptr)
|| num_count < 0
|| str_count < 0
|| str_size < 0) {
- return (0);
+ return (TGETENT_NO);
}
+ want = str_size + name_size + 1;
if (str_size) {
/* try to allocate space for the string table */
if (str_count * 2 >= (int) sizeof(buf)
- || (ptr->str_table = typeMalloc(char, (unsigned) str_size)) == 0) {
- return (0);
+ || (string_table = typeMalloc(char, want)) == 0) {
+ return (TGETENT_NO);
}
} else {
str_count = 0;
+ if ((string_table = typeMalloc(char, want)) == 0) {
+ return (TGETENT_NO);
+ }
}
- /* grab the name (a null-terminate string) */
- read(fd, buf, min(MAX_NAME_SIZE, (unsigned) name_size));
- buf[MAX_NAME_SIZE] = '\0';
- ptr->term_names = typeCalloc(char, strlen(buf) + 1);
- if (ptr->term_names == NULL) {
- return (0);
+ /* grab the name (a null-terminated string) */
+ want = min(MAX_NAME_SIZE, (unsigned) name_size);
+ ptr->str_table = string_table;
+ ptr->term_names = string_table;
+ if ((have = Read(ptr->term_names, want)) != want) {
+ memset(ptr->term_names + have, 0, want - have);
}
- (void) strcpy(ptr->term_names, buf);
- if (name_size > MAX_NAME_SIZE)
- lseek(fd, (off_t) (name_size - MAX_NAME_SIZE), 1);
+ ptr->term_names[want] = '\0';
+ string_table += (want + 1);
+
+ if (have > MAX_NAME_SIZE)
+ offset = (have - MAX_NAME_SIZE);
/* grab the booleans */
- if ((ptr->Booleans = typeCalloc(char, max(BOOLCOUNT, bool_count))) == 0
- || read(fd, ptr->Booleans, (unsigned) bool_count) < bool_count) {
- return (0);
+ if ((ptr->Booleans = TYPE_CALLOC(NCURSES_SBOOL,
+ max(BOOLCOUNT, bool_count))) == 0
+ || Read(ptr->Booleans, (unsigned) bool_count) < bool_count) {
+ return (TGETENT_NO);
}
/*
@@ -223,24 +198,24 @@ read_termtype(int fd, TERMTYPE * ptr)
even_boundary(name_size + bool_count);
/* grab the numbers */
- if ((ptr->Numbers = typeCalloc(short, max(NUMCOUNT, num_count))) == 0
- || !read_shorts(fd, buf, num_count)) {
- return (0);
+ if ((ptr->Numbers = TYPE_CALLOC(short, max(NUMCOUNT, num_count))) == 0
+ || !read_shorts(buf, num_count)) {
+ return (TGETENT_NO);
}
convert_shorts(buf, ptr->Numbers, num_count);
- if ((ptr->Strings = typeCalloc(char *, max(STRCOUNT, str_count))) == 0)
- return (0);
+ if ((ptr->Strings = TYPE_CALLOC(char *, max(STRCOUNT, str_count))) == 0)
+ return (TGETENT_NO);
if (str_count) {
/* grab the string offsets */
- if (!read_shorts(fd, buf, str_count)) {
- return (0);
+ if (!read_shorts(buf, str_count)) {
+ return (TGETENT_NO);
}
/* finally, grab the string table itself */
- if (read(fd, ptr->str_table, (unsigned) str_size) != str_size)
- return (0);
- convert_strings(buf, ptr->Strings, str_count, str_size, ptr->str_table);
+ if (Read(string_table, (unsigned) str_size) != str_size)
+ return (TGETENT_NO);
+ convert_strings(buf, ptr->Strings, str_count, str_size, string_table);
}
#if NCURSES_XNAMES
@@ -252,17 +227,17 @@ read_termtype(int fd, TERMTYPE * ptr)
* Read extended entries, if any, after the normal end of terminfo data.
*/
even_boundary(str_size);
- TR(TRACE_DATABASE, ("READ extended_header @%d", tell(fd)));
- if (_nc_user_definable && read_shorts(fd, buf, 5)) {
+ 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);
- int need = (ext_bool_count + ext_num_count + ext_str_count);
+ unsigned need = (ext_bool_count + ext_num_count + ext_str_count);
int base = 0;
- if (need >= (int) sizeof(buf)
+ if (need >= sizeof(buf)
|| ext_str_size >= (int) sizeof(buf)
|| ext_str_limit >= (int) sizeof(buf)
|| ext_bool_count < 0
@@ -270,13 +245,13 @@ read_termtype(int fd, TERMTYPE * ptr)
|| ext_str_count < 0
|| ext_str_size < 0
|| ext_str_limit < 0)
- return (0);
+ return (TGETENT_NO);
ptr->num_Booleans = BOOLCOUNT + ext_bool_count;
ptr->num_Numbers = NUMCOUNT + ext_num_count;
ptr->num_Strings = STRCOUNT + ext_str_count;
- ptr->Booleans = typeRealloc(char, ptr->num_Booleans, ptr->Booleans);
+ ptr->Booleans = typeRealloc(NCURSES_SBOOL, ptr->num_Booleans, ptr->Booleans);
ptr->Numbers = typeRealloc(short, ptr->num_Numbers, ptr->Numbers);
ptr->Strings = typeRealloc(char *, ptr->num_Strings, ptr->Strings);
@@ -285,36 +260,36 @@ read_termtype(int fd, TERMTYPE * ptr)
ext_str_size, ext_str_limit));
TR(TRACE_DATABASE, ("READ %d extended-booleans @%d",
- ext_bool_count, tell(fd)));
+ ext_bool_count, offset));
if ((ptr->ext_Booleans = ext_bool_count) != 0) {
- if (read(fd, ptr->Booleans + BOOLCOUNT, (unsigned)
+ if (Read(ptr->Booleans + BOOLCOUNT, (unsigned)
ext_bool_count) != ext_bool_count)
- return (0);
+ return (TGETENT_NO);
}
even_boundary(ext_bool_count);
TR(TRACE_DATABASE, ("READ %d extended-numbers @%d",
- ext_num_count, tell(fd)));
+ ext_num_count, offset));
if ((ptr->ext_Numbers = ext_num_count) != 0) {
- if (!read_shorts(fd, buf, ext_num_count))
- return (0);
+ if (!read_shorts(buf, ext_num_count))
+ return (TGETENT_NO);
TR(TRACE_DATABASE, ("Before converting extended-numbers"));
convert_shorts(buf, ptr->Numbers + NUMCOUNT, ext_num_count);
}
- TR(TRACE_DATABASE, ("READ extended-offsets @%d", tell(fd)));
+ TR(TRACE_DATABASE, ("READ extended-offsets @%d", offset));
if ((ext_str_count || need)
- && !read_shorts(fd, buf, ext_str_count + need))
- return (0);
+ && !read_shorts(buf, ext_str_count + need))
+ return (TGETENT_NO);
TR(TRACE_DATABASE, ("READ %d bytes of extended-strings @%d",
- ext_str_limit, tell(fd)));
+ ext_str_limit, offset));
if (ext_str_limit) {
if ((ptr->ext_str_table = typeMalloc(char, ext_str_limit)) == 0)
- return (0);
- if (read(fd, ptr->ext_str_table, ext_str_limit) != ext_str_limit)
- return (0);
+ return (TGETENT_NO);
+ if (Read(ptr->ext_str_table, (unsigned) ext_str_limit) != ext_str_limit)
+ return (TGETENT_NO);
TR(TRACE_DATABASE, ("first extended-string is %s", _nc_visbuf(ptr->ext_str_table)));
}
@@ -338,12 +313,14 @@ read_termtype(int fd, TERMTYPE * ptr)
}
if (need) {
- if ((ptr->ext_Names = typeCalloc(char *, need)) == 0)
- return (0);
+ if ((ptr->ext_Names = TYPE_CALLOC(char *, need)) == 0)
+ return (TGETENT_NO);
TR(TRACE_DATABASE,
("ext_NAMES starting @%d in extended_strings, first = %s",
base, _nc_visbuf(ptr->ext_str_table + base)));
- convert_strings(buf + (2 * ext_str_count), ptr->ext_Names, need,
+ convert_strings(buf + (2 * ext_str_count),
+ ptr->ext_Names,
+ (int) need,
ext_str_limit, ptr->ext_str_table + base);
}
@@ -370,86 +347,160 @@ read_termtype(int fd, TERMTYPE * ptr)
for (i = str_count; i < STRCOUNT; i++)
ptr->Strings[i] = ABSENT_STRING;
- return (1);
+ return (TGETENT_YES);
}
+/*
+ * int
+ * _nc_read_file_entry(filename, ptr)
+ *
+ * Read the compiled terminfo entry in the given file into the
+ * structure pointed to by ptr, allocating space for the string
+ * table.
+ */
NCURSES_EXPORT(int)
-_nc_read_file_entry
-(const char *const filename, TERMTYPE * ptr)
+_nc_read_file_entry(const char *const filename, TERMTYPE *ptr)
/* return 1 if read, 0 if not found or garbled */
{
int code, fd = -1;
+ int limit;
+ char buffer[MAX_ENTRY_SIZE + 1];
if (_nc_access(filename, R_OK) < 0
|| (fd = open(filename, O_RDONLY | O_BINARY)) < 0) {
T(("cannot open terminfo %s (errno=%d)", filename, errno));
- return (0);
- }
+ code = TGETENT_NO;
+ } else {
+ if ((limit = read(fd, buffer, sizeof(buffer))) > 0) {
- T(("read terminfo %s", filename));
- if ((code = read_termtype(fd, ptr)) == 0)
- _nc_free_termtype(ptr);
- close(fd);
+ T(("read terminfo %s", filename));
+ if ((code = _nc_read_termtype(ptr, buffer, limit)) == TGETENT_NO) {
+ _nc_free_termtype(ptr);
+ }
+ } else {
+ code = TGETENT_NO;
+ }
+ close(fd);
+ }
return (code);
}
/*
- * Build a terminfo pathname and try to read the data. Returns 1 on success,
- * 0 on failure.
+ * Build a terminfo pathname and try to read the data. Returns TGETENT_YES on
+ * success, TGETENT_NO on failure.
*/
static int
-_nc_read_tic_entry(char *const filename,
- const char *const dir, const char *ttn, TERMTYPE * const tp)
+_nc_read_tic_entry(char *filename,
+ unsigned limit,
+ const char *const path,
+ const char *name,
+ TERMTYPE *const tp)
{
-/* maximum safe length of terminfo root directory name */
-#define MAX_TPATH (PATH_MAX - MAX_ALIAS - 6)
+ int result = TGETENT_NO;
- if (strlen(dir) > MAX_TPATH)
- return 0;
- (void) sprintf(filename, "%s/%s", dir, ttn);
- return _nc_read_file_entry(filename, tp);
-}
+ /*
+ * If we are looking in a directory, assume the entry is a file under that,
+ * according to the normal rules.
+ *
+ * FIXME - add caseless-filename fixup.
+ */
+ if (_nc_is_dir_path(path)) {
+ unsigned need = 4 + strlen(path) + strlen(name);
-/*
- * Process the list of :-separated directories, looking for the terminal type.
- * We don't use strtok because it does not show us empty tokens.
- */
-static int
-_nc_read_terminfo_dirs(const char *dirs, char *const filename, const char *const
- ttn, TERMTYPE * const tp)
-{
- char *list, *a;
- const char *b;
- int code = 0;
-
- /* we'll modify the argument, so we must copy */
- if ((b = a = list = strdup(dirs)) == NULL)
- return (0);
-
- for (;;) {
- int c = *a;
- if (c == 0 || c == NCURSES_PATHSEP) {
- *a = 0;
- if ((b + 1) >= a)
- b = TERMINFO;
- if (_nc_read_tic_entry(filename, b, ttn, tp) == 1) {
- code = 1;
- break;
+ if (need <= limit) {
+ (void) sprintf(filename, "%s/%c/%s", path, *name, name);
+ result = _nc_read_file_entry(filename, tp);
+ }
+ }
+#if USE_HASHED_DB
+ else {
+ static const char suffix[] = DBM_SUFFIX;
+ DB *capdbp;
+ unsigned lens = sizeof(suffix) - 1;
+ unsigned size = strlen(path);
+ unsigned need = lens + size;
+
+ if (need <= limit) {
+ if (size >= lens
+ && !strcmp(path + size - lens, suffix))
+ (void) strcpy(filename, path);
+ else
+ (void) sprintf(filename, "%s%s", path, suffix);
+
+ /*
+ * It would be nice to optimize the dbopen/close activity, as
+ * done in the cgetent implementation for tc= clauses. However,
+ * since we support multiple database locations, we cannot do
+ * that.
+ */
+ if ((capdbp = _nc_db_open(filename, FALSE)) != 0) {
+ DBT key, data;
+ int reccnt = 0;
+ char *save = strdup(name);
+
+ memset(&key, 0, sizeof(key));
+ key.data = save;
+ key.size = strlen(save);
+
+ /*
+ * This lookup could return termcap data, which we do not want.
+ * We are looking for compiled (binary) terminfo data.
+ *
+ * cgetent uses a two-level lookup. On the first it uses the
+ * given name to return a record containing only the aliases
+ * for an entry. On the second (using that list of aliases as
+ * a key), it returns the content of the terminal description.
+ * We expect second lookup to return data beginning with the
+ * same set of aliases.
+ *
+ * For compiled terminfo, the list of aliases in the second
+ * case will be null-terminated. A termcap entry will not be,
+ * and will run on into the description. So we can easily
+ * distinguish between the two (source/binary) by checking the
+ * lengths.
+ */
+ while (_nc_db_get(capdbp, &key, &data) == 0) {
+ int used = data.size - 1;
+ char *have = (char *) data.data;
+
+ if (*have++ == 0) {
+ if (data.size > key.size
+ && IS_TIC_MAGIC(have)) {
+ result = _nc_read_termtype(tp, have, used);
+ if (result == TGETENT_NO) {
+ _nc_free_termtype(tp);
+ }
+ }
+ break;
+ }
+
+ /*
+ * Just in case we have a corrupt database, do not waste
+ * time with it.
+ */
+ if (++reccnt >= 3)
+ break;
+
+ /*
+ * Prepare for the second level.
+ */
+ key.data = have;
+ key.size = used;
+ }
+
+ _nc_db_close(capdbp);
+ free(save);
}
- b = a + 1;
- if (c == 0)
- break;
}
- a++;
}
-
- free(list);
- return (code);
+#endif
+ return result;
}
+#endif /* USE_DATABASE */
/*
- * _nc_read_entry(char *tn, char *filename, TERMTYPE *tp)
+ * _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
@@ -458,46 +509,36 @@ _nc_read_terminfo_dirs(const char *dirs, char *const filename, const char *const
*/
NCURSES_EXPORT(int)
-_nc_read_entry
-(const char *const tn, char *const filename, TERMTYPE * const tp)
+_nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp)
{
- char *envp;
- char ttn[MAX_ALIAS + 3];
-
- /* truncate the terminal name to prevent dangerous buffer airline */
- (void) sprintf(ttn, "%c/%.*s", *tn, MAX_ALIAS, tn);
-
- /* This is System V behavior, in conjunction with our requirements for
- * writing terminfo entries.
- */
- if (have_tic_directory
- && _nc_read_tic_entry(filename, _nc_tic_dir(0), ttn, tp) == 1)
- return 1;
-
- if (use_terminfo_vars()) {
- if ((envp = getenv("TERMINFO")) != 0
- && _nc_read_tic_entry(filename, _nc_tic_dir(envp), ttn, tp) == 1)
- return 1;
-
- /* this is an ncurses extension */
- if ((envp = _nc_home_terminfo()) != 0) {
- if (_nc_read_tic_entry(filename, envp, ttn, tp) == 1) {
- return (1);
+ int code = TGETENT_NO;
+
+ if (strlen(name) == 0
+ || strcmp(name, ".") == 0
+ || strcmp(name, "..") == 0
+ || _nc_pathlast(name) != 0
+ || strchr(name, NCURSES_PATHSEP) != 0) {
+ T(("illegal or missing entry name '%s'", name));
+ } else {
+#if USE_DATABASE
+ DBDIRS state = dbdTIC;
+ int offset = 0;
+ const char *path;
+
+ while ((path = _nc_next_db(&state, &offset)) != 0) {
+ code = _nc_read_tic_entry(filename, PATH_MAX, path, name, tp);
+ if (code == TGETENT_YES) {
+ _nc_last_db();
+ break;
}
}
-
- /* this is an ncurses extension */
- if ((envp = getenv("TERMINFO_DIRS")) != 0)
- return _nc_read_terminfo_dirs(envp, filename, ttn, tp);
- }
-
- /* Try the system directory. Note that the TERMINFO_DIRS value, if
- * defined by the configure script, begins with a ":", which will be
- * interpreted as TERMINFO.
- */
-#ifdef TERMINFO_DIRS
- return _nc_read_terminfo_dirs(TERMINFO_DIRS, filename, ttn, tp);
-#else
- return _nc_read_tic_entry(filename, TERMINFO, ttn, tp);
#endif
+#if USE_TERMCAP
+ if (code != TGETENT_YES) {
+ code = _nc_read_termcap_entry(name, tp);
+ sprintf(filename, "%.*s", PATH_MAX - 1, _nc_get_source());
+ }
+#endif
+ }
+ return code;
}
diff --git a/contrib/ncurses/ncurses/tinfo/read_termcap.c b/contrib/ncurses/ncurses/tinfo/read_termcap.c
index c6e7e358ad91..d94d1a42466d 100644
--- a/contrib/ncurses/ncurses/tinfo/read_termcap.c
+++ b/contrib/ncurses/ncurses/tinfo/read_termcap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -57,27 +58,20 @@
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: read_termcap.c,v 1.58 2001/10/28 01:11:34 tom Exp $")
+MODULE_ID("$Id: read_termcap.c,v 1.71 2006/07/29 12:06:51 tom Exp $")
#if !PURE_TERMINFO
-#ifdef __EMX__
-#define is_pathname(s) ((((s) != 0) && ((s)[0] == '/')) \
- || (((s)[0] != 0) && ((s)[1] == ':')))
-#else
-#define is_pathname(s) ((s) != 0 && (s)[0] == '/')
-#endif
-
#define TC_SUCCESS 0
-#define TC_UNRESOLVED -1
-#define TC_NOT_FOUND -2
-#define TC_SYS_ERR -3
-#define TC_REF_LOOP -4
+#define TC_NOT_FOUND -1
+#define TC_SYS_ERR -2
+#define TC_REF_LOOP -3
+#define TC_UNRESOLVED -4 /* this is not returned by BSD cgetent */
-static char *
+static NCURSES_CONST char *
get_termpath(void)
{
- char *result;
+ NCURSES_CONST char *result;
if (!use_terminfo_vars() || (result = getenv("TERMPATH")) == 0)
result = TERMPATH;
@@ -231,10 +225,10 @@ _nc_cgetcap(char *buf, const char *cap, int type)
* Returns:
*
* positive # on success (i.e., the index in db_array)
- * TC_UNRESOLVED if we had too many recurrences to resolve
* TC_NOT_FOUND if the requested record couldn't be found
* TC_SYS_ERR if a system error was encountered (e.g.,couldn't open a file)
* TC_REF_LOOP if a potential reference loop is detected
+ * TC_UNRESOLVED if we had too many recurrences to resolve
*/
static int
_nc_cgetent(char **buf, int *oline, char **db_array, const char *name)
@@ -720,7 +714,7 @@ get_tc_token(char **srcp, int *endp)
if (*s == '\0') {
break;
} else if (*s++ == '\n') {
- while (isspace(*s))
+ while (isspace(UChar(*s)))
s++;
} else {
found = TRUE;
@@ -734,7 +728,7 @@ get_tc_token(char **srcp, int *endp)
break;
}
base = s;
- } else if (isgraph(ch)) {
+ } else if (isgraph(UChar(ch))) {
found = TRUE;
}
}
@@ -754,7 +748,7 @@ copy_tc_token(char *dst, const char *src, size_t len)
while ((ch = *src++) != '\0') {
if (ch == '\\' && *src == '\n') {
- while (isspace(*src))
+ while (isspace(UChar(*src)))
src++;
continue;
}
@@ -784,7 +778,7 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
char pathbuf[PBUFSIZ]; /* holds raw path of filenames */
char *pathvec[PVECSIZ]; /* to point to names in pathbuf */
char **pvec; /* holds usable tail of path vector */
- char *termpath;
+ NCURSES_CONST char *termpath;
string_desc desc;
fname = pathvec;
@@ -805,7 +799,7 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
_nc_str_init(&desc, pathbuf, sizeof(pathbuf));
if (cp == NULL) {
_nc_safe_strcpy(&desc, get_termpath());
- } else if (!is_pathname(cp)) { /* TERMCAP holds an entry */
+ } else if (!_nc_is_abs_path(cp)) { /* TERMCAP holds an entry */
if ((termpath = get_termpath()) != 0) {
_nc_safe_strcat(&desc, termpath);
} else {
@@ -843,7 +837,7 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
}
}
*fname = 0; /* mark end of vector */
- if (is_pathname(cp)) {
+ if (_nc_is_abs_path(cp)) {
if (_nc_cgetset(cp) < 0) {
return (TC_SYS_ERR);
}
@@ -896,8 +890,21 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
* cgetent, then it is the actual filename).
*/
if (i >= 0) {
+#if HAVE_BSD_CGETENT
+ char temp[PATH_MAX];
+
+ _nc_str_init(&desc, temp, sizeof(temp));
+ _nc_safe_strcpy(&desc, pathvec[i]);
+ _nc_safe_strcat(&desc, ".db");
+ if (_nc_access(temp, R_OK) == 0) {
+ _nc_safe_strcpy(&desc, pathvec[i]);
+ }
+ if ((the_source = strdup(temp)) != 0)
+ *sourcename = the_source;
+#else
if ((the_source = strdup(pathvec[i])) != 0)
*sourcename = the_source;
+#endif
}
return (i);
@@ -932,29 +939,39 @@ 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, TERMTYPE *const tp)
{
- int found = FALSE;
+ int found = TGETENT_NO;
ENTRY *ep;
#if USE_GETCAP_CACHE
char cwd_buf[PATH_MAX];
#endif
#if USE_GETCAP
char *p, tc[TBUFSIZ];
+ int status;
static char *source;
static int lineno;
T(("read termcap entry for %s", tn));
+
+ if (strlen(tn) == 0
+ || strcmp(tn, ".") == 0
+ || strcmp(tn, "..") == 0
+ || _nc_pathlast(tn) != 0) {
+ T(("illegal or missing entry name '%s'", tn));
+ return TGETENT_NO;
+ }
+
if (use_terminfo_vars() && (p = getenv("TERMCAP")) != 0
- && !is_pathname(p) && _nc_name_match(p, tn, "|:")) {
+ && !_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';
_nc_set_source("TERMCAP");
} else {
/* we're using getcap(3) */
- if (_nc_tgetent(tc, &source, &lineno, tn) < 0)
- return (ERR);
+ if ((status = _nc_tgetent(tc, &source, &lineno, tn)) < 0)
+ return (status == TC_NOT_FOUND ? TGETENT_NO : TGETENT_ERR);
_nc_curr_line = lineno;
_nc_set_source(source);
@@ -1001,7 +1018,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE * const tp)
termpaths[filecount] = 0;
if (use_terminfo_vars() && (tc = getenv("TERMCAP")) != 0) {
- if (is_pathname(tc)) { /* interpret as a filename */
+ if (_nc_is_abs_path(tc)) { /* interpret as a filename */
ADD_TC(tc, 0);
normal = FALSE;
} else if (_nc_name_match(tc, tn, "|:")) { /* treat as a capability file */
@@ -1038,7 +1055,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE * const tp)
* Probably /etc/termcap is a symlink to /usr/share/misc/termcap.
* Avoid reading the same file twice.
*/
-#ifdef HAVE_LINK
+#if HAVE_LINK
for (j = 0; j < filecount; j++) {
bool omit = FALSE;
if (stat(termpaths[j], &test_stat[j]) != 0
@@ -1100,10 +1117,10 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE * const tp)
#endif /* USE_GETCAP */
if (_nc_head == 0)
- return (ERR);
+ return (TGETENT_ERR);
/* resolve all use references */
- _nc_resolve_uses(TRUE);
+ _nc_resolve_uses2(TRUE, FALSE);
/* find a terminal matching tn, if we can */
#if USE_GETCAP_CACHE
@@ -1113,13 +1130,12 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE * const tp)
for_entry_list(ep) {
if (_nc_name_match(ep->tterm.term_names, tn, "|:")) {
/*
- * Make a local copy of the terminal capabilities. Free all
- * entry storage except the string table for the loaded type
- * (which we disconnected from the list by NULLing out
- * ep->tterm.str_table above).
+ * Make a local copy of the terminal capabilities, delinked
+ * from the list.
*/
*tp = ep->tterm;
- ep->tterm.str_table = (char *) 0;
+ _nc_delink_entry(_nc_head, &(ep->tterm));
+ free(ep);
/*
* OK, now try to write the type to user's terminfo directory.
@@ -1136,7 +1152,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE * const tp)
#if USE_GETCAP_CACHE
(void) _nc_write_entry(tp);
#endif
- found = TRUE;
+ found = TGETENT_YES;
break;
}
}
@@ -1145,7 +1161,6 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE * const tp)
}
#endif
- _nc_free_entries(_nc_head);
return (found);
}
#else
diff --git a/contrib/ncurses/ncurses/tinfo/setbuf.c b/contrib/ncurses/ncurses/tinfo/setbuf.c
index 6d0201bfb2aa..94bb6d3463c5 100644
--- a/contrib/ncurses/ncurses/tinfo/setbuf.c
+++ b/contrib/ncurses/ncurses/tinfo/setbuf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-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 *
@@ -40,7 +40,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: setbuf.c,v 1.7 2000/12/10 02:55:08 tom Exp $")
+MODULE_ID("$Id: setbuf.c,v 1.12 2003/11/15 23:55:34 tom Exp $")
/*
* If the output file descriptor is connected to a tty (the typical case) it
@@ -98,47 +98,53 @@ MODULE_ID("$Id: setbuf.c,v 1.7 2000/12/10 02:55:08 tom Exp $")
* buffer. So we disable this by default (there may yet be a workaround).
*/
NCURSES_EXPORT(void)
-_nc_set_buffer(FILE * ofp, bool buffered)
+_nc_set_buffer(FILE *ofp, bool buffered)
{
/* optional optimization hack -- do before any output to ofp */
#if HAVE_SETVBUF || HAVE_SETBUFFER
- unsigned buf_len;
- char *buf_ptr;
+ if (SP->_buffered != (int)buffered) {
+ unsigned buf_len;
+ char *buf_ptr;
- if (getenv("NCURSES_NO_SETBUF") != 0)
- return;
+ if (getenv("NCURSES_NO_SETBUF") != 0)
+ return;
- fflush(ofp);
- if ((SP->_buffered = buffered) != 0) {
- buf_len = min(LINES * (COLS + 6), 2800);
- if ((buf_ptr = SP->_setbuf) == 0) {
- if ((buf_ptr = typeMalloc(char, buf_len)) == NULL)
- return;
- SP->_setbuf = buf_ptr;
- /* Don't try to free this! */
- }
+ fflush(ofp);
+#ifdef __DJGPP__
+ setmode(ofp, O_BINARY);
+#endif
+ if (buffered != 0) {
+ buf_len = min(LINES * (COLS + 6), 2800);
+ if ((buf_ptr = SP->_setbuf) == 0) {
+ if ((buf_ptr = typeMalloc(char, buf_len)) == NULL)
+ return;
+ SP->_setbuf = buf_ptr;
+ /* Don't try to free this! */
+ }
#if !USE_SETBUF_0
- else
- return;
+ else
+ return;
#endif
- } else {
+ } else {
#if !USE_SETBUF_0
- return;
+ return;
#else
- buf_len = 0;
- buf_ptr = 0;
+ buf_len = 0;
+ buf_ptr = 0;
#endif
- }
+ }
#if HAVE_SETVBUF
#ifdef SETVBUF_REVERSED /* pre-svr3? */
- (void) setvbuf(ofp, buf_ptr, buf_len, buf_len ? _IOFBF : _IOLBF);
+ (void) setvbuf(ofp, buf_ptr, buf_len, buf_len ? _IOFBF : _IOLBF);
#else
- (void) setvbuf(ofp, buf_ptr, buf_len ? _IOFBF : _IOLBF, buf_len);
+ (void) setvbuf(ofp, buf_ptr, buf_len ? _IOFBF : _IOLBF, buf_len);
#endif
#elif HAVE_SETBUFFER
- (void) setbuffer(ofp, buf_ptr, (int) buf_len);
+ (void) setbuffer(ofp, buf_ptr, (int) buf_len);
#endif
+ SP->_buffered = buffered;
+ }
#endif /* HAVE_SETVBUF || HAVE_SETBUFFER */
}
diff --git a/contrib/ncurses/ncurses/tinfo/strings.c b/contrib/ncurses/ncurses/tinfo/strings.c
index 5fa68caf7534..d5377fe07a51 100644
--- a/contrib/ncurses/ncurses/tinfo/strings.c
+++ b/contrib/ncurses/ncurses/tinfo/strings.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * 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 *
@@ -36,7 +36,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: strings.c,v 1.3 2000/12/10 02:55:08 tom Exp $")
+MODULE_ID("$Id: strings.c,v 1.5 2003/08/16 23:46:00 tom Exp $")
/****************************************************************************
* Useful string functions (especially for mvcur)
@@ -44,8 +44,7 @@ MODULE_ID("$Id: strings.c,v 1.3 2000/12/10 02:55:08 tom Exp $")
#if !HAVE_STRSTR
NCURSES_EXPORT(char *)
-_nc_strstr
-(const char *haystack, const char *needle)
+_nc_strstr(const char *haystack, const char *needle)
{
size_t len1 = strlen(haystack);
size_t len2 = strlen(needle);
@@ -63,16 +62,18 @@ _nc_strstr
#endif
/*
- * Initialize the descriptor so we can append to it.
+ * Initialize the descriptor so we can append to it. Note that 'src' may
+ * be a null pointer (see _nc_str_null), so the corresponding strcat and
+ * strcpy calls have to allow for this.
*/
NCURSES_EXPORT(string_desc *)
-_nc_str_init
-(string_desc * dst, char *src, size_t len)
+_nc_str_init(string_desc * dst, char *src, size_t len)
{
if (dst != 0) {
dst->s_head = src;
dst->s_tail = src;
dst->s_size = len - 1;
+ dst->s_init = dst->s_size;
if (src != 0)
*src = 0;
}
@@ -83,8 +84,7 @@ _nc_str_init
* Initialize the descriptor for only tracking the amount of memory used.
*/
NCURSES_EXPORT(string_desc *)
-_nc_str_null
-(string_desc * dst, size_t len)
+_nc_str_null(string_desc * dst, size_t len)
{
return _nc_str_init(dst, 0, len);
}
@@ -93,8 +93,7 @@ _nc_str_null
* Copy a descriptor
*/
NCURSES_EXPORT(string_desc *)
-_nc_str_copy
-(string_desc * dst, string_desc * src)
+_nc_str_copy(string_desc * dst, string_desc * src)
{
*dst = *src;
return dst;
@@ -135,7 +134,7 @@ _nc_safe_strcpy(string_desc * dst, const char *src)
strcpy(dst->s_head, src);
dst->s_tail = dst->s_head + len;
}
- dst->s_size -= len;
+ dst->s_size = dst->s_init - len;
return TRUE;
}
}
diff --git a/contrib/ncurses/ncurses/tinfo/trim_sgr0.c b/contrib/ncurses/ncurses/tinfo/trim_sgr0.c
new file mode 100644
index 000000000000..3ce18e070b06
--- /dev/null
+++ b/contrib/ncurses/ncurses/tinfo/trim_sgr0.c
@@ -0,0 +1,328 @@
+/****************************************************************************
+ * Copyright (c) 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 *
+ * "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 Dickey *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+
+#include <ctype.h>
+
+#include <tic.h>
+#include <term_entry.h>
+
+MODULE_ID("$Id: trim_sgr0.c,v 1.7 2006/12/02 19:37:57 tom Exp $")
+
+#undef CUR
+#define CUR tp->
+
+#define CSI 233
+#define ESC 033 /* ^[ */
+#define L_BRACK '['
+
+static char *
+set_attribute_9(TERMTYPE *tp, int flag)
+{
+ const char *result;
+
+ if ((result = tparm(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, flag)) == 0)
+ result = "";
+ return strdup(result);
+}
+
+static int
+is_csi(const char *s)
+{
+ if (UChar(s[0]) == CSI)
+ return 1;
+ else if (s[0] == ESC && s[1] == L_BRACK)
+ return 2;
+ return 0;
+}
+
+static char *
+skip_zero(char *s)
+{
+ if (s[0] == '0') {
+ if (s[1] == ';')
+ s += 2;
+ else if (isalpha(UChar(s[1])))
+ s += 1;
+ }
+ return s;
+}
+
+static const char *
+skip_delay(const char *s)
+{
+ if (s[0] == '$' && s[1] == '<') {
+ s += 2;
+ while (isdigit(UChar(*s)) || *s == '/')
+ ++s;
+ if (*s == '>')
+ ++s;
+ }
+ return s;
+}
+
+/*
+ * Improve similar_sgr a little by moving the attr-string from the beginning
+ * to the end of the s-string.
+ */
+static bool
+rewrite_sgr(char *s, char *attr)
+{
+ if (PRESENT(s)) {
+ if (PRESENT(attr)) {
+ unsigned len_s = strlen(s);
+ unsigned len_a = strlen(attr);
+
+ if (len_s > len_a && !strncmp(attr, s, len_a)) {
+ unsigned n;
+ TR(TRACE_DATABASE, ("rewrite:\n\t%s", s));
+ for (n = 0; n < len_s - len_a; ++n) {
+ s[n] = s[n + len_a];
+ }
+ strcpy(s + n, attr);
+ TR(TRACE_DATABASE, ("to:\n\t%s", s));
+ }
+ }
+ return TRUE;
+ }
+ return FALSE; /* oops */
+}
+
+static bool
+similar_sgr(char *a, char *b)
+{
+ bool result = FALSE;
+ int csi_a = is_csi(a);
+ int csi_b = is_csi(b);
+ unsigned len_a;
+ unsigned len_b;
+
+ TR(TRACE_DATABASE, ("similar_sgr:\n\t%s\n\t%s",
+ _nc_visbuf2(1, a),
+ _nc_visbuf2(2, b)));
+ if (csi_a != 0 && csi_b != 0 && csi_a == csi_b) {
+ a += csi_a;
+ b += csi_b;
+ if (*a != *b) {
+ a = skip_zero(a);
+ b = skip_zero(b);
+ }
+ }
+ len_a = strlen(a);
+ len_b = strlen(b);
+ if (len_a && len_b) {
+ if (len_a > len_b)
+ result = (strncmp(a, b, len_b) == 0);
+ else
+ result = (strncmp(a, b, len_a) == 0);
+ }
+ TR(TRACE_DATABASE, ("...similar_sgr: %d\n\t%s\n\t%s", result,
+ _nc_visbuf2(1, a),
+ _nc_visbuf2(2, b)));
+ return result;
+}
+
+static unsigned
+chop_out(char *string, unsigned i, unsigned j)
+{
+ TR(TRACE_DATABASE, ("chop_out %d..%d from %s", i, j, _nc_visbuf(string)));
+ while (string[j] != '\0') {
+ string[i++] = string[j++];
+ }
+ string[i] = '\0';
+ return i;
+}
+
+/*
+ * Compare, ignoring delays. Some of the delay values are inconsistent, and
+ * we do not want to be stopped by that.
+ *
+ * Returns the number of chars from 'full' that we matched. If any mismatch
+ * occurs, return zero.
+ */
+static int
+compare_part(const char *part, const char *full)
+{
+ const char *next_part;
+ const char *next_full;
+ int used_full = 0;
+ int used_delay = 0;
+
+ while (*part != 0) {
+ if (*part != *full) {
+ used_full = 0;
+ break;
+ }
+
+ /*
+ * Adjust the return-value to allow the rare case of
+ * string<delay>string
+ * to remove the whole piece. The most common case is a delay at the
+ * end of the string. The adjusted string will retain the delay, which
+ * is conservative.
+ */
+ if (used_delay != 0) {
+ used_full += used_delay;
+ used_delay = 0;
+ }
+ if (*part == '$' && *full == '$') {
+ next_part = skip_delay(part);
+ next_full = skip_delay(full);
+ if (next_part != part && next_full != full) {
+ used_delay += (next_full - full);
+ full = next_full;
+ part = next_part;
+ continue;
+ }
+ }
+ ++used_full;
+ ++part;
+ ++full;
+ }
+ return used_full;
+}
+
+/*
+ * While 'sgr0' is the "same" as termcap 'me', there is a compatibility issue.
+ * The sgr/sgr0 capabilities include setting/clearing alternate character set
+ * mode. A termcap application cannot use sgr, so sgr0 strings that reset
+ * alternate character set mode will be misinterpreted. Here, we remove those
+ * from the more common ISO/ANSI/VT100 entries, which have sgr0 agreeing with
+ * sgr.
+ *
+ * This function returns the modified sgr0 if it can be modified, a null if
+ * an error occurs, or the original sgr0 if no change is needed.
+ */
+NCURSES_EXPORT(char *)
+_nc_trim_sgr0(TERMTYPE *tp)
+{
+ char *result = exit_attribute_mode;
+
+ T((T_CALLED("_nc_trim_sgr0()")));
+
+ if (PRESENT(exit_attribute_mode)
+ && PRESENT(set_attributes)) {
+ bool found = FALSE;
+ char *on = set_attribute_9(tp, 1);
+ char *off = set_attribute_9(tp, 0);
+ char *end = strdup(exit_attribute_mode);
+ char *tmp;
+ size_t i, j, k;
+
+ TR(TRACE_DATABASE, ("checking if we can trim sgr0 based on sgr"));
+ TR(TRACE_DATABASE, ("sgr0 %s", _nc_visbuf(end)));
+ TR(TRACE_DATABASE, ("sgr(9:off) %s", _nc_visbuf(off)));
+ TR(TRACE_DATABASE, ("sgr(9:on) %s", _nc_visbuf(on)));
+
+ if (!rewrite_sgr(on, enter_alt_charset_mode)
+ || !rewrite_sgr(off, exit_alt_charset_mode)
+ || !rewrite_sgr(end, exit_alt_charset_mode)) {
+ FreeIfNeeded(on);
+ FreeIfNeeded(off);
+ FreeIfNeeded(end);
+ } else if (similar_sgr(off, end)
+ && !similar_sgr(off, on)) {
+ TR(TRACE_DATABASE, ("adjusting sgr(9:off) : %s", _nc_visbuf(off)));
+ result = off;
+ /*
+ * If rmacs is a substring of sgr(0), remove that chunk.
+ */
+ if (exit_alt_charset_mode != 0) {
+ TR(TRACE_DATABASE, ("scan for rmacs %s", _nc_visbuf(exit_alt_charset_mode)));
+ j = strlen(off);
+ k = strlen(exit_alt_charset_mode);
+ if (j > k) {
+ for (i = 0; i <= (j - k); ++i) {
+ int k2 = compare_part(exit_alt_charset_mode, off + i);
+ if (k2 != 0) {
+ found = TRUE;
+ chop_out(off, i, i + k2);
+ break;
+ }
+ }
+ }
+ }
+ /*
+ * SGR 10 would reset to normal font.
+ */
+ if (!found) {
+ if ((i = is_csi(off)) != 0
+ && off[strlen(off) - 1] == 'm') {
+ TR(TRACE_DATABASE, ("looking for SGR 10 in %s",
+ _nc_visbuf(off)));
+ tmp = skip_zero(off + i);
+ if (tmp[0] == '1'
+ && skip_zero(tmp + 1) != tmp + 1) {
+ i = tmp - off;
+ if (off[i - 1] == ';')
+ i--;
+ j = skip_zero(tmp + 1) - off;
+ i = chop_out(off, i, j);
+ found = TRUE;
+ }
+ }
+ }
+ if (!found
+ && (tmp = strstr(end, off)) != 0
+ && strcmp(end, off) != 0) {
+ i = tmp - end;
+ j = strlen(off);
+ tmp = strdup(end);
+ chop_out(tmp, i, j);
+ free(off);
+ result = tmp;
+ }
+ TR(TRACE_DATABASE, ("...adjusted sgr0 : %s", _nc_visbuf(result)));
+ if (!strcmp(result, exit_attribute_mode)) {
+ TR(TRACE_DATABASE, ("...same result, discard"));
+ free(result);
+ result = exit_attribute_mode;
+ }
+ } else {
+ /*
+ * Either the sgr does not reference alternate character set,
+ * or it is incorrect. That's too hard to decide right now.
+ */
+ free(off);
+ }
+ free(end);
+ free(on);
+ } else {
+ /*
+ * Possibly some applications are confused if sgr0 contains rmacs,
+ * but that would be a different bug report -TD
+ */
+ }
+
+ returnPtr(result);
+}
diff --git a/contrib/ncurses/ncurses/tinfo/write_entry.c b/contrib/ncurses/ncurses/tinfo/write_entry.c
index 9750dffd5ffe..5426f1fc40d0 100644
--- a/contrib/ncurses/ncurses/tinfo/write_entry.c
+++ b/contrib/ncurses/ncurses/tinfo/write_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2000,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free 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 *
****************************************************************************/
/*
@@ -36,6 +37,7 @@
*/
#include <curses.priv.h>
+#include <hashed_db.h>
#include <sys/stat.h>
@@ -46,21 +48,27 @@
#define S_ISDIR(mode) ((mode & S_IFMT) == S_IFDIR)
#endif
-#if 0
+#if 1
#define TRACE_OUT(p) DEBUG(2, p)
#else
#define TRACE_OUT(p) /*nothing */
#endif
-MODULE_ID("$Id: write_entry.c,v 1.58 2002/04/21 20:35:08 tom Exp $")
+MODULE_ID("$Id: write_entry.c,v 1.68 2006/10/14 20:45:16 tom Exp $")
static int total_written;
-static int write_object(FILE *, TERMTYPE *);
+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, TERMTYPE *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);
@@ -68,50 +76,118 @@ write_file(char *filename, TERMTYPE * tp)
}
DEBUG(1, ("Created %s", filename));
- if (write_object(fp, tp) == ERR) {
+ if (write_object(tp, buffer, &offset, limit) == ERR
+ || fwrite(buffer, sizeof(char), offset, fp) != offset) {
_nc_syserr_abort("error writing %s/%s", _nc_tic_dir(0), filename);
}
+
fclose(fp);
}
/*
- * make_directory(char *path)
+ * Check for access rights to destination directories
+ * Create any directories which don't exist.
*
- * Make a directory if it doesn't exist.
+ * Note: there's no reason to return the result of make_db_root(), since
+ * this function is called only in instances where that has to succeed.
*/
+static void
+check_writeable(int code)
+{
+ static const char dirnames[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+ static bool verified[sizeof(dirnames)];
+
+ char dir[2];
+ char *s = 0;
+
+ if (code == 0 || (s = strchr(dirnames, code)) == 0)
+ _nc_err_abort("Illegal terminfo subdirectory \"%c\"", code);
+
+ if (verified[s - dirnames])
+ return;
+
+ dir[0] = code;
+ dir[1] = '\0';
+ if (make_db_root(dir) < 0) {
+ _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir);
+ }
+
+ verified[s - dirnames] = TRUE;
+}
+#endif /* !USE_HASHED_DB */
+
static int
-make_directory(const char *path)
+make_db_path(char *dst, const char *src, unsigned limit)
{
- int rc;
- struct stat statbuf;
- char fullpath[PATH_MAX];
- const char *destination = _nc_tic_dir(0);
+ int rc = -1;
+ const char *top = _nc_tic_dir(0);
- if (path == destination || *path == '/') {
- if (strlen(path) + 1 > sizeof(fullpath))
- return (-1);
- (void) strcpy(fullpath, path);
+ if (src == top || _nc_is_abs_path(src)) {
+ if (strlen(src) + 1 <= limit) {
+ (void) strcpy(dst, src);
+ rc = 0;
+ }
} else {
- if (strlen(destination) + strlen(path) + 2 > sizeof(fullpath))
- return (-1);
- (void) sprintf(fullpath, "%s/%s", destination, path);
+ if (strlen(top) + strlen(src) + 2 <= limit) {
+ (void) sprintf(dst, "%s/%s", top, src);
+ rc = 0;
+ }
}
+#if USE_HASHED_DB
+ if (rc == 0) {
+ if (_nc_is_dir_path(dst)) {
+ rc = -1;
+ } else {
+ unsigned have = strlen(dst);
+ if (have > 3 && strcmp(dst + have - 3, DBM_SUFFIX)) {
+ if (have + 3 <= limit)
+ strcat(dst, DBM_SUFFIX);
+ else
+ rc = -1;
+ }
+ }
+ }
+#endif
+ return rc;
+}
- if ((rc = stat(path, &statbuf)) < 0) {
- rc = mkdir(path, 0777);
- } else {
- if (_nc_access(path, R_OK | W_OK | X_OK) < 0) {
+/*
+ * Make a database-root if it doesn't exist.
+ */
+static int
+make_db_root(const char *path)
+{
+ int rc;
+ char fullpath[PATH_MAX];
+
+ if ((rc = make_db_path(fullpath, path, sizeof(fullpath))) == 0) {
+#if USE_HASHED_DB
+ DB *capdbp;
+
+ if ((capdbp = _nc_db_open(fullpath, TRUE)) == NULL)
+ rc = -1;
+ else if (_nc_db_close(capdbp) < 0)
+ rc = -1;
+#else
+ struct stat statbuf;
+
+ if ((rc = stat(path, &statbuf)) < 0) {
+ rc = mkdir(path, 0777);
+ } else if (_nc_access(path, R_OK | W_OK | X_OK) < 0) {
rc = -1; /* permission denied */
} else if (!(S_ISDIR(statbuf.st_mode))) {
rc = -1; /* not a directory */
}
+#endif
}
return rc;
}
+/*
+ * Set the write directory for compiled entries.
+ */
NCURSES_EXPORT(void)
_nc_set_writedir(char *dir)
-/* set the write directory for compiled entries */
{
const char *destination;
char actual[PATH_MAX];
@@ -124,12 +200,12 @@ _nc_set_writedir(char *dir)
(void) _nc_tic_dir(dir);
destination = _nc_tic_dir(0);
- if (make_directory(destination) < 0) {
+ if (make_db_root(destination) < 0) {
char *home = _nc_home_terminfo();
if (home != 0) {
destination = home;
- if (make_directory(destination) < 0)
+ if (make_db_root(destination) < 0)
_nc_err_abort("%s: permission denied (errno %d)",
destination, errno);
}
@@ -139,51 +215,17 @@ _nc_set_writedir(char *dir)
* Note: because of this code, this logic should be exercised
* *once only* per run.
*/
+#if USE_HASHED_DB
+ make_db_path(actual, destination, sizeof(actual));
+#else
if (chdir(_nc_tic_dir(destination)) < 0
|| getcwd(actual, sizeof(actual)) == 0)
_nc_err_abort("%s: not a directory", destination);
+#endif
_nc_keep_tic_dir(strdup(actual));
}
/*
- * check_writeable(char code)
- *
- * Miscellaneous initialisations
- *
- * Check for access rights to destination directories
- * Create any directories which don't exist.
- * Note: there's no reason to return the result of make_directory(), since
- * this function is called only in instances where that has to succeed.
- *
- */
-
-static void
-check_writeable(int code)
-{
- static const char dirnames[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- static bool verified[sizeof(dirnames)];
-
- char dir[2];
- char *s = 0;
-
- if (code == 0 || (s = strchr(dirnames, code)) == 0)
- _nc_err_abort("Illegal terminfo subdirectory \"%c\"", code);
-
- if (verified[s - dirnames])
- return;
-
- dir[0] = code;
- dir[1] = '\0';
- if (make_directory(dir) < 0) {
- _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir);
- }
-
- verified[s - dirnames] = TRUE;
-}
-
-/*
- * _nc_write_entry()
- *
* Save the compiled version of a description in the filesystem.
*
* make a copy of the name-list
@@ -203,13 +245,18 @@ check_writeable(int code)
* _nc_curr_line is properly set before the write_entry() call.
*/
-void
-_nc_write_entry(TERMTYPE * const tp)
+NCURSES_EXPORT(void)
+_nc_write_entry(TERMTYPE *const tp)
{
+#if USE_HASHED_DB
+
+ char buffer[MAX_ENTRY_SIZE + 1];
+ unsigned limit = sizeof(buffer);
+ unsigned offset = 0;
+
+#else /* !USE_HASHED_DB */
+
struct stat statbuf;
- char name_list[MAX_TERMINFO_LENGTH];
- char *first_name, *other_names;
- char *ptr;
char filename[PATH_MAX];
char linkname[PATH_MAX];
#if USE_SYMLINKS
@@ -219,12 +266,15 @@ _nc_write_entry(TERMTYPE * const tp)
#define HAVE_LINK 1
#endif
#endif /* USE_SYMLINKS */
+
static int call_count;
static time_t start_time; /* time at start of writes */
- if (call_count++ == 0) {
- start_time = 0;
- }
+#endif /* USE_HASHED_DB */
+
+ char name_list[MAX_TERMINFO_LENGTH];
+ char *first_name, *other_names;
+ char *ptr;
(void) strcpy(name_list, tp->term_names);
DEBUG(7, ("Name list = '%s'", name_list));
@@ -256,6 +306,55 @@ _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) {
+ DB *capdb = _nc_db_open(_nc_tic_dir(0), TRUE);
+ DBT key, data;
+
+ if (capdb != 0) {
+ buffer[0] = 0;
+
+ memset(&key, 0, sizeof(key));
+ key.data = tp->term_names;
+ key.size = strlen(tp->term_names);
+
+ memset(&data, 0, sizeof(data));
+ data.data = buffer;
+ data.size = offset + 1;
+
+ _nc_db_put(capdb, &key, &data);
+
+ buffer[0] = 2;
+
+ key.data = name_list;
+ key.size = strlen(name_list);
+
+ strcpy(buffer + 1, tp->term_names);
+ data.size = strlen(tp->term_names) + 1;
+
+ _nc_db_put(capdb, &key, &data);
+
+ while (*other_names != '\0') {
+ ptr = other_names++;
+ while (*other_names != '|' && *other_names != '\0')
+ other_names++;
+
+ if (*other_names != '\0')
+ *(other_names++) = '\0';
+
+ key.data = ptr;
+ key.size = strlen(ptr);
+
+ _nc_db_put(capdb, &key, &data);
+ }
+ _nc_db_close(capdb);
+ }
+ }
+#else /* !USE_HASHED_DB */
+ if (call_count++ == 0) {
+ start_time = 0;
+ }
+
if (strlen(first_name) > sizeof(filename) - 3)
_nc_warning("terminal name too long.");
@@ -355,14 +454,39 @@ _nc_write_entry(TERMTYPE * const tp)
write_file(linkname, tp);
#endif /* HAVE_LINK */
}
+#endif /* USE_HASHED_DB */
}
+static unsigned
+fake_write(char *dst,
+ unsigned *offset,
+ unsigned limit,
+ char *src,
+ unsigned want,
+ unsigned size)
+{
+ int have = (limit - *offset);
+
+ want *= size;
+ if (have > 0) {
+ if ((int) want > have)
+ want = have;
+ memcpy(dst + *offset, src, want);
+ *offset += want;
+ } else {
+ want = 0;
+ }
+ return (int) (want / size);
+}
+
+#define Write(buf, size, count) fake_write(buffer, offset, limit, (char *) buf, count, size)
+
#undef LITTLE_ENDIAN /* BSD/OS defines this as a feature macro */
#define HI(x) ((x) / 256)
#define LO(x) ((x) % 256)
#define LITTLE_ENDIAN(p, x) (p)[0] = LO(x), (p)[1] = HI(x)
-#define WRITE_STRING(str) (fwrite(str, sizeof(char), strlen(str) + 1, fp) == strlen(str) + 1)
+#define WRITE_STRING(str) (Write(str, sizeof(char), strlen(str) + 1) == strlen(str) + 1)
static int
compute_offsets(char **Strings, unsigned strmax, short *offsets)
@@ -402,10 +526,68 @@ convert_shorts(unsigned char *buf, short *Numbers, unsigned count)
}
#define even_boundary(value) \
- ((value) % 2 != 0 && fwrite(&zero, sizeof(char), 1, fp) != 1)
+ ((value) % 2 != 0 && Write(&zero, sizeof(char), 1) != 1)
+
+#if NCURSES_XNAMES
+static unsigned
+extended_Booleans(TERMTYPE *tp)
+{
+ unsigned short result = 0;
+ unsigned short i;
+
+ for (i = 0; i < tp->ext_Booleans; ++i) {
+ if (tp->Booleans[BOOLCOUNT + i] == TRUE)
+ result = (i + 1);
+ }
+ return result;
+}
+
+static unsigned
+extended_Numbers(TERMTYPE *tp)
+{
+ unsigned short result = 0;
+ unsigned short i;
+
+ for (i = 0; i < tp->ext_Numbers; ++i) {
+ if (tp->Numbers[NUMCOUNT + i] != ABSENT_NUMERIC)
+ result = (i + 1);
+ }
+ return result;
+}
+
+static unsigned
+extended_Strings(TERMTYPE *tp)
+{
+ unsigned short result = 0;
+ unsigned short i;
+
+ for (i = 0; i < tp->ext_Strings; ++i) {
+ if (tp->Strings[STRCOUNT + i] != ABSENT_STRING)
+ result = (i + 1);
+ }
+ return result;
+}
+
+/*
+ * _nc_align_termtype() will extend entries that are referenced in a use=
+ * clause - discard the unneeded data.
+ */
+static bool
+extended_object(TERMTYPE *tp)
+{
+ bool result = FALSE;
+
+ if (_nc_user_definable) {
+ result = ((extended_Booleans(tp)
+ + extended_Numbers(tp)
+ + extended_Strings(tp)) != 0);
+ }
+ return result;
+}
+#endif
static int
-write_object(FILE * fp, TERMTYPE * tp)
+write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
{
char *namelist;
size_t namelen, boolmax, nummax, strmax;
@@ -464,9 +646,9 @@ write_object(FILE * fp, TERMTYPE * tp)
LITTLE_ENDIAN(buf + 10, nextfree);
/* write out the header */
- TRACE_OUT(("Header of %s @%ld", namelist, ftell(fp)));
- if (fwrite(buf, 12, 1, fp) != 1
- || fwrite(namelist, sizeof(char), namelen, fp) != namelen)
+ TRACE_OUT(("Header of %s @%d", namelist, *offset));
+ if (Write(buf, 12, 1) != 1
+ || Write(namelist, sizeof(char), namelen) != namelen)
return (ERR);
for (i = 0; i < boolmax; i++)
@@ -474,27 +656,27 @@ write_object(FILE * fp, TERMTYPE * tp)
buf[i] = TRUE;
else
buf[i] = FALSE;
- if (fwrite(buf, sizeof(char), boolmax, fp) != boolmax)
+ if (Write(buf, sizeof(char), boolmax) != boolmax)
return (ERR);
if (even_boundary(namelen + boolmax))
return (ERR);
- TRACE_OUT(("Numerics begin at %04lx", ftell(fp)));
+ TRACE_OUT(("Numerics begin at %04x", *offset));
/* the numerics */
convert_shorts(buf, tp->Numbers, nummax);
- if (fwrite(buf, 2, nummax, fp) != nummax)
+ if (Write(buf, 2, nummax) != nummax)
return (ERR);
- TRACE_OUT(("String offsets begin at %04lx", ftell(fp)));
+ TRACE_OUT(("String offsets begin at %04x", *offset));
/* the string offsets */
convert_shorts(buf, offsets, strmax);
- if (fwrite(buf, 2, strmax, fp) != strmax)
+ if (Write(buf, 2, strmax) != strmax)
return (ERR);
- TRACE_OUT(("String table begins at %04lx", ftell(fp)));
+ TRACE_OUT(("String table begins at %04x", *offset));
/* the strings */
for (i = 0; i < strmax; i++)
@@ -503,7 +685,7 @@ write_object(FILE * fp, TERMTYPE * tp)
return (ERR);
#if NCURSES_XNAMES
- if (NUM_EXT_NAMES(tp)) {
+ if (extended_object(tp)) {
unsigned extcnt = NUM_EXT_NAMES(tp);
if (even_boundary(nextfree))
@@ -523,23 +705,23 @@ write_object(FILE * fp, TERMTYPE * tp)
LITTLE_ENDIAN(buf + 4, tp->ext_Strings);
LITTLE_ENDIAN(buf + 6, strmax);
LITTLE_ENDIAN(buf + 8, nextfree);
- TRACE_OUT(("WRITE extended-header @%ld", ftell(fp)));
- if (fwrite(buf, 10, 1, fp) != 1)
+ TRACE_OUT(("WRITE extended-header @%d", *offset));
+ if (Write(buf, 10, 1) != 1)
return (ERR);
- TRACE_OUT(("WRITE %d booleans @%ld", tp->ext_Booleans, ftell(fp)));
+ TRACE_OUT(("WRITE %d booleans @%d", tp->ext_Booleans, *offset));
if (tp->ext_Booleans
- && fwrite(tp->Booleans + BOOLCOUNT, sizeof(char),
- tp->ext_Booleans, fp) != tp->ext_Booleans)
+ && Write(tp->Booleans + BOOLCOUNT, sizeof(char),
+ tp->ext_Booleans) != tp->ext_Booleans)
return (ERR);
if (even_boundary(tp->ext_Booleans))
return (ERR);
- TRACE_OUT(("WRITE %d numbers @%ld", tp->ext_Numbers, ftell(fp)));
+ TRACE_OUT(("WRITE %d numbers @%d", tp->ext_Numbers, *offset));
if (tp->ext_Numbers) {
convert_shorts(buf, tp->Numbers + NUMCOUNT, tp->ext_Numbers);
- if (fwrite(buf, 2, tp->ext_Numbers, fp) != tp->ext_Numbers)
+ if (Write(buf, 2, tp->ext_Numbers) != tp->ext_Numbers)
return (ERR);
}
@@ -548,8 +730,8 @@ write_object(FILE * fp, TERMTYPE * tp)
* in that order.
*/
convert_shorts(buf, offsets, strmax);
- TRACE_OUT(("WRITE offsets @%ld", ftell(fp)));
- if (fwrite(buf, 2, strmax, fp) != strmax)
+ TRACE_OUT(("WRITE offsets @%d", *offset));
+ if (Write(buf, 2, strmax) != strmax)
return (ERR);
/*
diff --git a/contrib/ncurses/ncurses/trace/README b/contrib/ncurses/ncurses/trace/README
index a627a537a3d1..e658feccb873 100644
--- a/contrib/ncurses/ncurses/trace/README
+++ b/contrib/ncurses/ncurses/trace/README
@@ -1,4 +1,32 @@
--- $Id: README,v 1.1 1998/11/08 00:11:01 tom Exp $
+-------------------------------------------------------------------------------
+-- Copyright (c) 1998,2006 Free Software 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: README,v 1.2 2006/04/22 22:19:37 tom Exp $
+-------------------------------------------------------------------------------
The files in this directory (trace) support both the terminfo and ncurses
libraries. Most of the functions are linked in only when the libraries
diff --git a/contrib/ncurses/ncurses/trace/lib_trace.c b/contrib/ncurses/ncurses/trace/lib_trace.c
index 29eecc0a2764..7f7812217999 100644
--- a/contrib/ncurses/ncurses/trace/lib_trace.c
+++ b/contrib/ncurses/ncurses/trace/lib_trace.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -29,10 +29,16 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*
* lib_trace.c - Tracing/Debugging routines
+ *
+ * The _tracef() function is originally from pcurses (by Pavel Curtis) in 1982.
+ * pcurses allowed one to enable/disable tracing using traceon() and traceoff()
+ * functions. ncurses provides a trace() function which allows one to
+ * selectively enable or disable several tracing features.
*/
#include <curses.priv.h>
@@ -40,32 +46,38 @@
#include <ctype.h>
-MODULE_ID("$Id: lib_trace.c,v 1.48 2001/10/20 20:35:25 tom Exp $")
+MODULE_ID("$Id: lib_trace.c,v 1.59 2006/08/19 12:05:25 tom Exp $")
-NCURSES_EXPORT_VAR(unsigned)
-_nc_tracing = 0; /* always define this */
+NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */
#ifdef TRACE
-NCURSES_EXPORT_VAR(const char *)
-_nc_tputs_trace = "";
-NCURSES_EXPORT_VAR(long)
-_nc_outchars = 0;
+NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace = "";
+NCURSES_EXPORT_VAR(long) _nc_outchars = 0;
- static FILE *tracefp; /* default to writing to stderr */
+static FILE *tracefp = 0; /* default to writing to stderr */
NCURSES_EXPORT(void)
-trace(const unsigned int tracelevel GCC_UNUSED)
+trace(const unsigned int tracelevel)
{
static bool been_here = FALSE;
- static char my_name[] = "trace";
+ static char my_name[PATH_MAX];
- if (!been_here && tracelevel) {
- been_here = TRUE;
+ if ((tracefp == 0) && tracelevel) {
+ const char *mode = been_here ? "ab" : "wb";
+
+ if (*my_name == '\0') {
+ if (getcwd(my_name, sizeof(my_name) - 10) == 0) {
+ perror("curses: Can't get working directory");
+ exit(EXIT_FAILURE);
+ }
+ strcat(my_name, "/trace");
+ }
+ been_here = TRUE;
_nc_tracing = tracelevel;
if (_nc_access(my_name, W_OK) < 0
- || (tracefp = fopen(my_name, "wb")) == 0) {
- perror("curses: Can't open 'trace' file: ");
+ || (tracefp = fopen(my_name, mode)) == 0) {
+ perror("curses: Can't open 'trace' file");
exit(EXIT_FAILURE);
}
/* Try to set line-buffered mode, or (failing that) unbuffered,
@@ -77,8 +89,16 @@ trace(const unsigned int tracelevel GCC_UNUSED)
#elif HAVE_SETBUF /* POSIX */
(void) setbuffer(tracefp, (char *) 0);
#endif
- _tracef("TRACING NCURSES version %s (tracelevel=%#x)",
- curses_version(), tracelevel);
+ _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;
+ }
+ _nc_tracing = tracelevel;
} else if (_nc_tracing != tracelevel) {
_nc_tracing = tracelevel;
_tracef("tracelevel=%#x", tracelevel);
@@ -94,7 +114,7 @@ _tracef(const char *fmt,...)
va_list ap;
bool before = FALSE;
bool after = FALSE;
- int doit = _nc_tracing;
+ unsigned doit = _nc_tracing;
int save_err = errno;
if (strlen(fmt) >= sizeof(Called) - 1) {
@@ -133,6 +153,14 @@ _tracef(const char *fmt,...)
errno = save_err;
}
+/* Trace 'bool' return-values */
+NCURSES_EXPORT(NCURSES_BOOL)
+_nc_retrace_bool(NCURSES_BOOL code)
+{
+ T((T_RETURN("%s"), code ? "TRUE" : "FALSE"));
+ return code;
+}
+
/* Trace 'int' return-values */
NCURSES_EXPORT(int)
_nc_retrace_int(int code)
@@ -141,6 +169,14 @@ _nc_retrace_int(int code)
return code;
}
+/* Trace 'unsigned' return-values */
+NCURSES_EXPORT(unsigned)
+_nc_retrace_unsigned(unsigned code)
+{
+ T((T_RETURN("%#x"), code));
+ return code;
+}
+
/* Trace 'char*' return-values */
NCURSES_EXPORT(char *)
_nc_retrace_ptr(char *code)
@@ -149,9 +185,33 @@ _nc_retrace_ptr(char *code)
return code;
}
+/* Trace 'const char*' return-values */
+NCURSES_EXPORT(const char *)
+_nc_retrace_cptr(const char *code)
+{
+ T((T_RETURN("%s"), _nc_visbuf(code)));
+ return code;
+}
+
+/* Trace 'NCURSES_CONST void*' return-values */
+NCURSES_EXPORT(NCURSES_CONST void *)
+_nc_retrace_cvoid_ptr(NCURSES_CONST void *code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
+/* Trace 'void*' return-values */
+NCURSES_EXPORT(void *)
+_nc_retrace_void_ptr(void *code)
+{
+ T((T_RETURN("%p"), code));
+ return code;
+}
+
/* Trace 'SCREEN *' return-values */
NCURSES_EXPORT(SCREEN *)
-_nc_retrace_sp(SCREEN * code)
+_nc_retrace_sp(SCREEN *code)
{
T((T_RETURN("%p"), code));
return code;
diff --git a/contrib/ncurses/ncurses/trace/lib_traceatr.c b/contrib/ncurses/ncurses/trace/lib_traceatr.c
index 870624f3f514..ee6cf5f1f3d3 100644
--- a/contrib/ncurses/ncurses/trace/lib_traceatr.c
+++ b/contrib/ncurses/ncurses/trace/lib_traceatr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 Dickey 1996-2001 *
+ * Author: Thomas Dickey 1996-on *
* and: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
@@ -39,20 +39,40 @@
#include <curses.priv.h>
#include <term.h> /* acs_chars */
-MODULE_ID("$Id: lib_traceatr.c,v 1.42 2002/06/16 00:35:01 tom Exp $")
+MODULE_ID("$Id: lib_traceatr.c,v 1.56 2006/12/02 21:18:28 tom Exp $")
-#define COLOR_OF(c) (c < 0 || c > 7 ? "default" : colors[c].name)
+#define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name))
#ifdef TRACE
static const char l_brace[] = {L_BRACE, 0};
static const char r_brace[] = {R_BRACE, 0};
+#ifndef USE_TERMLIB
+static char *
+color_of(int c)
+{
+ static char buffer[2][80];
+ static int sel;
+ static int last = -1;
+
+ if (c != last) {
+ last = c;
+ sel = !sel;
+ if (c == COLOR_DEFAULT)
+ strcpy(buffer[sel], "default");
+ else
+ sprintf(buffer[sel], "color%d", c);
+ }
+ return buffer[sel];
+}
+#endif /* !USE_TERMLIB */
+
NCURSES_EXPORT(char *)
-_traceattr2(int bufnum, attr_t newmode)
+_traceattr2(int bufnum, chtype newmode)
{
char *buf = _nc_trace_buf(bufnum, BUFSIZ);
- char *tmp = buf;
+ char temp[80];
static const struct {
unsigned int val;
const char *name;
@@ -73,7 +93,9 @@ _traceattr2(int bufnum, attr_t newmode)
{ A_COLOR, "A_COLOR" },
/* *INDENT-ON* */
- },
+ }
+#ifndef USE_TERMLIB
+ ,
colors[] =
{
/* *INDENT-OFF* */
@@ -87,44 +109,51 @@ _traceattr2(int bufnum, attr_t newmode)
{ COLOR_WHITE, "COLOR_WHITE" },
/* *INDENT-ON* */
- };
+ }
+#endif /* !USE_TERMLIB */
+ ;
size_t n;
unsigned save_nc_tracing = _nc_tracing;
_nc_tracing = 0;
- strcpy(tmp++, l_brace);
+ strcpy(buf, l_brace);
for (n = 0; n < SIZEOF(names); n++) {
if ((newmode & names[n].val) != 0) {
if (buf[1] != '\0')
- strcat(tmp, "|");
- strcat(tmp, names[n].name);
- tmp += strlen(tmp);
+ buf = _nc_trace_bufcat(bufnum, "|");
+ buf = _nc_trace_bufcat(bufnum, names[n].name);
if (names[n].val == A_COLOR) {
short pairnum = PAIR_NUMBER(newmode);
+#ifdef USE_TERMLIB
+ /* pair_content lives in libncurses */
+ (void) sprintf(temp, "{%d}", pairnum);
+#else
short fg, bg;
- if (pair_content(pairnum, &fg, &bg) == OK)
- (void) sprintf(tmp,
+ if (pair_content(pairnum, &fg, &bg) == OK) {
+ (void) sprintf(temp,
"{%d = {%s, %s}}",
pairnum,
COLOR_OF(fg),
- COLOR_OF(bg)
- );
- else
- (void) sprintf(tmp, "{%d}", pairnum);
+ COLOR_OF(bg));
+ } else {
+ (void) sprintf(temp, "{%d}", pairnum);
+ }
+#endif
+ buf = _nc_trace_bufcat(bufnum, temp);
}
}
}
if (ChAttrOf(newmode) == A_NORMAL) {
if (buf[1] != '\0')
- strcat(tmp, "|");
- strcat(tmp, "A_NORMAL");
+ (void) _nc_trace_bufcat(bufnum, "|");
+ (void) _nc_trace_bufcat(bufnum, "A_NORMAL");
}
_nc_tracing = save_nc_tracing;
- return (strcat(buf, r_brace));
+ return (_nc_trace_bufcat(bufnum, r_brace));
}
NCURSES_EXPORT(char *)
@@ -146,7 +175,7 @@ _nc_altcharset_name(attr_t attr, chtype ch)
{
const char *result = 0;
- if (attr & A_ALTCHARSET) {
+ if ((attr & A_ALTCHARSET) && (acs_chars != 0)) {
char *cp;
char *found = 0;
static const struct {
@@ -214,20 +243,21 @@ _nc_altcharset_name(attr_t attr, chtype ch)
NCURSES_EXPORT(char *)
_tracechtype2(int bufnum, chtype ch)
{
- char *buf = _nc_trace_buf(bufnum, BUFSIZ);
const char *found;
- strcpy(buf, l_brace);
+ strcpy(_nc_trace_buf(bufnum, BUFSIZ), l_brace);
if ((found = _nc_altcharset_name(ChAttrOf(ch), ch)) != 0) {
- (void) strcat(buf, found);
+ (void) _nc_trace_bufcat(bufnum, found);
} else
- (void) strcat(buf, _tracechar(ChCharOf(ch)));
+ (void) _nc_trace_bufcat(bufnum, _tracechar((int)ChCharOf(ch)));
- if (ChAttrOf(ch) != A_NORMAL)
- (void) sprintf(buf + strlen(buf), " | %s",
+ if (ChAttrOf(ch) != A_NORMAL) {
+ (void) _nc_trace_bufcat(bufnum, " | ");
+ (void) _nc_trace_bufcat(bufnum,
_traceattr2(bufnum + 20, ChAttrOf(ch)));
+ }
- return (strcat(buf, r_brace));
+ return (_nc_trace_bufcat(bufnum, r_brace));
}
NCURSES_EXPORT(char *)
@@ -237,8 +267,8 @@ _tracechtype (chtype ch)
}
/* Trace 'chtype' return-values */
-NCURSES_EXPORT(attr_t)
-_nc_retrace_chtype (attr_t code)
+NCURSES_EXPORT(chtype)
+_nc_retrace_chtype (chtype code)
{
T((T_RETURN("%s"), _tracechtype(code)));
return code;
@@ -255,38 +285,45 @@ _tracecchar_t2 (int bufnum, const cchar_t *ch)
strcpy(buf, l_brace);
if (ch != 0) {
attr = AttrOfD(ch);
- if ((found = _nc_altcharset_name(attr, CharOfD(ch))) != 0) {
- (void) strcat(buf, found);
+ if ((found = _nc_altcharset_name(attr, (chtype) CharOfD(ch))) != 0) {
+ (void) _nc_trace_bufcat(bufnum, found);
attr &= ~A_ALTCHARSET;
- } else if (!isnac(CHDEREF(ch))) {
+ } else if (isWidecExt(CHDEREF(ch))) {
+ (void) _nc_trace_bufcat(bufnum, "{NAC}");
+ attr &= ~A_CHARTEXT;
+ } else {
PUTC_DATA;
int n;
- memset (&PUT_st, '\0', sizeof (PUT_st));
- PUTC_i = 0;
- (void) strcat(buf, "{ ");
- do {
- PUTC_ch = PUTC_i < CCHARW_MAX ? ch->chars[PUTC_i] : L'\0';
- PUTC_n = wcrtomb(PUTC_buf, ch->chars[PUTC_i], &PUT_st);
+ PUTC_INIT;
+ (void) _nc_trace_bufcat(bufnum, "{ ");
+ for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) {
+ PUTC_ch = ch->chars[PUTC_i];
if (PUTC_ch == L'\0')
- --PUTC_n;
- if (PUTC_n <= 0)
break;
+ PUTC_n = wcrtomb(PUTC_buf, ch->chars[PUTC_i], &PUT_st);
+ if (PUTC_n <= 0) {
+ if (PUTC_ch != L'\0') {
+ /* it could not be a multibyte sequence */
+ (void) _nc_trace_bufcat(bufnum, _tracechar(UChar(ch->chars[PUTC_i])));
+ }
+ break;
+ }
for (n = 0; n < PUTC_n; n++) {
if (n)
- (void) strcat(buf, ", ");
- (void) strcat(buf, _tracechar(UChar(PUTC_buf[n])));
+ (void) _nc_trace_bufcat(bufnum, ", ");
+ (void) _nc_trace_bufcat(bufnum, _tracechar(UChar(PUTC_buf[n])));
}
- ++PUTC_i;
- } while (PUTC_ch != L'\0');
- (void) strcat(buf, " }");
+ }
+ (void) _nc_trace_bufcat(bufnum, " }");
+ }
+ if (attr != A_NORMAL) {
+ (void) _nc_trace_bufcat(bufnum, " | ");
+ (void) _nc_trace_bufcat(bufnum, _traceattr2(bufnum + 20, attr));
}
- if (attr != A_NORMAL)
- (void) sprintf(buf + strlen(buf), " | %s",
- _traceattr2(bufnum + 20, attr));
}
- return (strcat(buf, r_brace));
+ return (_nc_trace_bufcat(bufnum, r_brace));
}
NCURSES_EXPORT(char *)
diff --git a/contrib/ncurses/ncurses/trace/lib_tracebits.c b/contrib/ncurses/ncurses/trace/lib_tracebits.c
index e681862649af..d9defd0cc9d6 100644
--- a/contrib/ncurses/ncurses/trace/lib_tracebits.c
+++ b/contrib/ncurses/ncurses/trace/lib_tracebits.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
#include <curses.priv.h>
#include <term.h> /* cur_term */
-MODULE_ID("$Id: lib_tracebits.c,v 1.12 2002/05/25 14:35:07 tom Exp $")
+MODULE_ID("$Id: lib_tracebits.c,v 1.13 2006/12/10 01:33:00 tom Exp $")
#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
#define _POSIX_SOURCE
@@ -106,6 +107,7 @@ _nc_trace_ttymode(TTY * tty)
}, oflags[] =
{
{OPOST, "OPOST"},
+ {OFLAGS_TABS, "XTABS"},
{0, NULL}
#define ALLOUT (OPOST)
}, cflags[] =
diff --git a/contrib/ncurses/ncurses/trace/lib_tracechr.c b/contrib/ncurses/ncurses/trace/lib_tracechr.c
index 2f33391b5505..34a2bb616f29 100644
--- a/contrib/ncurses/ncurses/trace/lib_tracechr.c
+++ b/contrib/ncurses/ncurses/trace/lib_tracechr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -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 *
****************************************************************************/
/*
@@ -36,19 +37,36 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_tracechr.c,v 1.9 2002/05/25 23:34:19 tom Exp $")
+#include <ctype.h>
+
+MODULE_ID("$Id: lib_tracechr.c,v 1.12 2005/04/16 16:55:46 tom Exp $")
#ifdef TRACE
NCURSES_EXPORT(char *)
_tracechar(int ch)
{
- static char crep[40];
- (void) sprintf(crep, "'%.30s' = %#03o",
- ((ch > KEY_MIN || ch < 0)
- ? keyname(ch)
- : unctrl(ch)),
- ch);
- return (crep);
+ static char result[40];
+ NCURSES_CONST char *name;
+
+ if (ch > KEY_MIN || ch < 0) {
+ name = keyname(ch);
+ if (name == 0 || *name == '\0')
+ name = "NULL";
+ (void) sprintf(result, "'%.30s' = %#03o", name, ch);
+ } else if (!is8bits(ch) || !isprint(UChar(ch))) {
+ /*
+ * workaround for glibc bug:
+ * sprintf changes the result from unctrl() to an empty string if it
+ * does not correspond to a valid multibyte sequence.
+ */
+ (void) sprintf(result, "%#03o", ch);
+ } else {
+ name = unctrl((chtype) ch);
+ if (name == 0 || *name == 0)
+ name = "null"; /* shouldn't happen */
+ (void) sprintf(result, "'%.30s' = %#03o", name, ch);
+ }
+ return (result);
}
#else
empty_module(_nc_lib_tracechr)
diff --git a/contrib/ncurses/ncurses/trace/lib_tracedmp.c b/contrib/ncurses/ncurses/trace/lib_tracedmp.c
index 8f8753640e0c..41739a92527c 100644
--- a/contrib/ncurses/ncurses/trace/lib_tracedmp.c
+++ b/contrib/ncurses/ncurses/trace/lib_tracedmp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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-2001 *
+ * Author: Thomas E. Dickey 1996-on *
* and: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
@@ -39,7 +39,7 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_tracedmp.c,v 1.22 2001/11/03 15:45:35 tom Exp $")
+MODULE_ID("$Id: lib_tracedmp.c,v 1.27 2006/10/14 20:43:31 tom Exp $")
#ifdef TRACE
NCURSES_EXPORT(void)
@@ -53,9 +53,13 @@ _tracedump(const char *name, WINDOW *win)
/* compute narrowest possible display width */
for (width = i = 0; i <= win->_maxy; ++i) {
n = 0;
- for (j = 0; j <= win->_maxx; ++j)
- if (CharOf(win->_line[i].text[j]) != L(' '))
+ for (j = 0; j <= win->_maxx; ++j) {
+ if (CharOf(win->_line[i].text[j]) != L(' ')
+ || AttrOf(win->_line[i].text[j]) != A_NORMAL
+ || GetPair(win->_line[i].text[j]) != 0) {
n = j;
+ }
+ }
if (n > width)
width = n;
@@ -64,7 +68,7 @@ _tracedump(const char *name, WINDOW *win)
++width;
if (++width + 1 > (int) used) {
used = 2 * (width + 1);
- buf = _nc_doalloc(buf, used);
+ buf = typeRealloc(char, used, buf);
}
for (n = 0; n <= win->_maxy; ++n) {
@@ -89,24 +93,34 @@ _tracedump(const char *name, WINDOW *win)
: '?';
}
ep[j] = '\0';
- _tracef("%s[%2d] %3d%3d ='%s'",
+ _tracef("%s[%2d] %3ld%3ld ='%s'",
name, n,
- win->_line[n].firstchar,
- win->_line[n].lastchar,
+ (long) win->_line[n].firstchar,
+ (long) win->_line[n].lastchar,
ep);
/* dump A_COLOR part, will screw up if there are more than 96 */
havecolors = FALSE;
for (j = 0; j < width; ++j)
- if (AttrOf(win->_line[n].text[j]) & A_COLOR) {
+ if (GetPair(win->_line[n].text[j]) != 0) {
havecolors = TRUE;
break;
}
if (havecolors) {
ep = buf;
- for (j = 0; j < width; ++j)
- ep[j] = UChar(CharOf(win->_line[n].text[j]) >>
- NCURSES_ATTR_SHIFT) + ' ';
+ for (j = 0; j < width; ++j) {
+ int pair = GetPair(win->_line[n].text[j]);
+ if (pair >= 52)
+ ep[j] = '?';
+ else if (pair >= 36)
+ ep[j] = pair + 'A';
+ else if (pair >= 10)
+ ep[j] = pair + 'a';
+ else if (pair >= 1)
+ ep[j] = pair + '0';
+ else
+ ep[j] = ' ';
+ }
ep[j] = '\0';
_tracef("%*s[%2d]%*s='%s'", (int) strlen(name),
"colors", n, 8, " ", buf);
@@ -135,6 +149,7 @@ _tracedump(const char *name, WINDOW *win)
}
#if NO_LEAKS
free(buf);
+ buf = 0;
used = 0;
#endif
}
diff --git a/contrib/ncurses/ncurses/trace/lib_tracemse.c b/contrib/ncurses/ncurses/trace/lib_tracemse.c
index f4a100b6eb43..98290a1efb0e 100644
--- a/contrib/ncurses/ncurses/trace/lib_tracemse.c
+++ b/contrib/ncurses/ncurses/trace/lib_tracemse.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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 *
@@ -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 *
****************************************************************************/
/*
@@ -37,48 +38,81 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_tracemse.c,v 1.10 2002/01/12 22:32:25 tom Exp $")
+MODULE_ID("$Id: lib_tracemse.c,v 1.12 2005/06/11 19:53:50 tom Exp $")
#ifdef TRACE
NCURSES_EXPORT(char *)
_tracemouse(MEVENT const *ep)
{
- static char buf[80];
+ /*
+ * hmm - format is no longer than 80 columns, there are 5 numbers that
+ * could at most have 10 digits, and the mask contains no more than 32 bits
+ * with each bit representing less than 15 characters. Usually the whole
+ * string is less than 80 columns, but this buffer size is an absolute
+ * limit.
+ */
+ static char buf[80 + (5 * 10) + (32 * 15)];
(void) sprintf(buf, "id %2d at (%2d, %2d, %2d) state %4lx = {",
- ep->id, ep->x, ep->y, ep->z, ep->bstate);
+ ep->id,
+ ep->x,
+ ep->y,
+ ep->z,
+ (unsigned long) ep->bstate);
#define SHOW(m, s) if ((ep->bstate & m) == m) strcat(strcat(buf, s), ", ")
+
SHOW(BUTTON1_RELEASED, "release-1");
SHOW(BUTTON1_PRESSED, "press-1");
SHOW(BUTTON1_CLICKED, "click-1");
SHOW(BUTTON1_DOUBLE_CLICKED, "doubleclick-1");
SHOW(BUTTON1_TRIPLE_CLICKED, "tripleclick-1");
+#if NCURSES_MOUSE_VERSION == 1
SHOW(BUTTON1_RESERVED_EVENT, "reserved-1");
+#endif
+
SHOW(BUTTON2_RELEASED, "release-2");
SHOW(BUTTON2_PRESSED, "press-2");
SHOW(BUTTON2_CLICKED, "click-2");
SHOW(BUTTON2_DOUBLE_CLICKED, "doubleclick-2");
SHOW(BUTTON2_TRIPLE_CLICKED, "tripleclick-2");
+#if NCURSES_MOUSE_VERSION == 1
SHOW(BUTTON2_RESERVED_EVENT, "reserved-2");
+#endif
+
SHOW(BUTTON3_RELEASED, "release-3");
SHOW(BUTTON3_PRESSED, "press-3");
SHOW(BUTTON3_CLICKED, "click-3");
SHOW(BUTTON3_DOUBLE_CLICKED, "doubleclick-3");
SHOW(BUTTON3_TRIPLE_CLICKED, "tripleclick-3");
+#if NCURSES_MOUSE_VERSION == 1
SHOW(BUTTON3_RESERVED_EVENT, "reserved-3");
+#endif
+
SHOW(BUTTON4_RELEASED, "release-4");
SHOW(BUTTON4_PRESSED, "press-4");
SHOW(BUTTON4_CLICKED, "click-4");
SHOW(BUTTON4_DOUBLE_CLICKED, "doubleclick-4");
SHOW(BUTTON4_TRIPLE_CLICKED, "tripleclick-4");
+#if NCURSES_MOUSE_VERSION == 1
SHOW(BUTTON4_RESERVED_EVENT, "reserved-4");
+#endif
+
+#if NCURSES_MOUSE_VERSION == 2
+ SHOW(BUTTON5_RELEASED, "release-5");
+ SHOW(BUTTON5_PRESSED, "press-5");
+ SHOW(BUTTON5_CLICKED, "click-5");
+ SHOW(BUTTON5_DOUBLE_CLICKED, "doubleclick-5");
+ SHOW(BUTTON5_TRIPLE_CLICKED, "tripleclick-5");
+#endif
+
SHOW(BUTTON_CTRL, "ctrl");
SHOW(BUTTON_SHIFT, "shift");
SHOW(BUTTON_ALT, "alt");
SHOW(ALL_MOUSE_EVENTS, "all-events");
SHOW(REPORT_MOUSE_POSITION, "position");
+
#undef SHOW
if (buf[strlen(buf) - 1] == ' ')
diff --git a/contrib/ncurses/ncurses/trace/trace_buf.c b/contrib/ncurses/ncurses/trace/trace_buf.c
index 15748d423d9e..85b4fbe682e8 100644
--- a/contrib/ncurses/ncurses/trace/trace_buf.c
+++ b/contrib/ncurses/ncurses/trace/trace_buf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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,21 +35,40 @@
#include <curses.priv.h>
-MODULE_ID("$Id: trace_buf.c,v 1.10 2001/04/21 21:19:18 tom Exp $")
+MODULE_ID("$Id: trace_buf.c,v 1.12 2003/03/15 21:21:36 tom Exp $")
typedef struct {
char *text;
size_t size;
} LIST;
-NCURSES_EXPORT(char *)
-_nc_trace_buf(int bufnum, size_t want)
+static char *
+_nc_trace_alloc(int bufnum, size_t want)
{
+ char *result = 0;
static LIST *list;
static size_t have;
+ if (bufnum >= 0) {
+ if ((size_t) (bufnum + 1) > have) {
+ size_t need = (bufnum + 1) * 2;
+ if ((list = typeRealloc(LIST, need, list)) == 0)
+ return (0);
+ while (need > have)
+ list[have++].text = 0;
+ }
+
+ if (list[bufnum].text == 0
+ || want > list[bufnum].size) {
+ if ((list[bufnum].text = typeRealloc(char, want, list[bufnum].text))
+ != 0)
+ list[bufnum].size = want;
+ }
+
+ result = list[bufnum].text;
+ }
#if NO_LEAKS
- if (bufnum < 0) {
+ else {
if (have) {
while (have--) {
if (list[have].text != 0)
@@ -57,26 +76,34 @@ _nc_trace_buf(int bufnum, size_t want)
}
free(list);
}
- return 0;
}
#endif
+ return result;
+}
- if ((size_t) (bufnum + 1) > have) {
- size_t need = (bufnum + 1) * 2;
- if ((list = typeRealloc(LIST, need, list)) == 0)
- return (0);
- while (need > have)
- list[have++].text = 0;
- }
+/*
+ * (re)Allocate a buffer big enough for the caller's wants.
+ */
+NCURSES_EXPORT(char *)
+_nc_trace_buf(int bufnum, size_t want)
+{
+ char *result = _nc_trace_alloc(bufnum, want);
+ if (result != 0)
+ *result = '\0';
+ return result;
+}
- if (list[bufnum].text == 0
- || want > list[bufnum].size) {
- if ((list[bufnum].text = typeRealloc(char, want, list[bufnum].text))
- != 0)
- list[bufnum].size = want;
- }
+/*
+ * Append a new string to an existing buffer.
+ */
+NCURSES_EXPORT(char *)
+_nc_trace_bufcat(int bufnum, const char *value)
+{
+ char *buffer = _nc_trace_alloc(bufnum, 0);
+ size_t have = strlen(buffer);
+
+ buffer = _nc_trace_alloc(bufnum, 1 + have + strlen(value));
+ (void) strcpy(buffer + have, value);
- if (list[bufnum].text != 0)
- *(list[bufnum].text) = '\0';
- return list[bufnum].text;
+ return buffer;
}
diff --git a/contrib/ncurses/ncurses/trace/varargs.c b/contrib/ncurses/ncurses/trace/varargs.c
index 7bcb7b55d42c..aee2010546a4 100644
--- a/contrib/ncurses/ncurses/trace/varargs.c
+++ b/contrib/ncurses/ncurses/trace/varargs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2002,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 *
@@ -34,17 +34,19 @@
#include <ctype.h>
-MODULE_ID("$Id: varargs.c,v 1.2 2002/06/01 16:16:00 tom Exp $")
+MODULE_ID("$Id: varargs.c,v 1.4 2003/05/24 21:10:28 tom Exp $")
#ifdef TRACE
+#define MAX_PARMS 10
+
typedef enum {
atUnknown = 0, atInteger, atFloat, atPoint, atString
} ARGTYPE;
#define VA_INT(type) ival = va_arg(ap, type)
#define VA_FLT(type) fval = va_arg(ap, type)
-#define VA_PTR(type) pval = (void *)va_arg(ap, type)
+#define VA_PTR(type) pval = (char *)va_arg(ap, type)
#define VA_STR(type) sval = va_arg(ap, type)
/*
@@ -58,6 +60,8 @@ _nc_varargs(const char *fmt, va_list ap)
static size_t result_len;
char buffer[BUFSIZ];
+ const char *param;
+ int n;
if (fmt == 0 || *fmt == '\0')
return dummy;
@@ -75,14 +79,16 @@ _nc_varargs(const char *fmt, va_list ap)
int done = FALSE;
int ival = 0;
int type = 0;
+ ARGTYPE parm[MAX_PARMS];
+ int parms = 0;
ARGTYPE used = atUnknown;
while (*++fmt != '\0' && !done) {
if (*fmt == '*') {
VA_INT(int);
- used = atInteger;
- break;
+ if (parms < MAX_PARMS)
+ parm[parms++] = atInteger;
} else if (isalpha(UChar(*fmt))) {
done = TRUE;
switch (*fmt) {
@@ -135,30 +141,34 @@ _nc_varargs(const char *fmt, va_list ap)
} else if (*fmt == '%') {
done = TRUE;
}
- if (used != atUnknown) {
- const char *param = buffer;
- switch (used) {
- case atInteger:
- sprintf(buffer, "%d", ival);
- break;
- case atFloat:
- sprintf(buffer, "%f", fval);
- break;
- case atPoint:
- sprintf(buffer, "%p", pval);
- break;
- case atString:
- param = _nc_visbuf2(1, sval);
- break;
- default:
- strcpy(buffer, "?");
- break;
+ if (used != atUnknown && parms < MAX_PARMS) {
+ parm[parms++] = used;
+ for (n = 0; n < parms; ++n) {
+ used = parm[n];
+ param = buffer;
+ switch (used) {
+ case atInteger:
+ sprintf(buffer, "%d", ival);
+ break;
+ case atFloat:
+ sprintf(buffer, "%f", fval);
+ break;
+ case atPoint:
+ sprintf(buffer, "%p", pval);
+ break;
+ case atString:
+ param = _nc_visbuf2(1, sval);
+ break;
+ default:
+ strcpy(buffer, "?");
+ break;
+ }
+ result_len += strlen(param) + 2;
+ result_buf = typeRealloc(char, result_len, result_buf);
+ sprintf(result_buf + strlen(result_buf), ", %s", param);
}
- result_len += strlen(param) + 2;
- result_buf = typeRealloc(char, result_len, result_buf);
- sprintf(result_buf + strlen(result_buf), ",%s", param);
- used = atUnknown;
}
+ used = atUnknown;
}
} else {
fmt++;
diff --git a/contrib/ncurses/ncurses/trace/visbuf.c b/contrib/ncurses/ncurses/trace/visbuf.c
index 5f2460f3ed2c..0540ee6d8184 100644
--- a/contrib/ncurses/ncurses/trace/visbuf.c
+++ b/contrib/ncurses/ncurses/trace/visbuf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2005,2006 Free 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-2001 *
+ * Author: Thomas E. Dickey 1996-on *
* and: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
@@ -36,12 +36,17 @@
* visbuf.c - Tracing/Debugging support routines
*/
+#define NEED_NCURSES_CH_T
#include <curses.priv.h>
#include <tic.h>
#include <ctype.h>
-MODULE_ID("$Id: visbuf.c,v 1.3 2001/11/10 23:47:51 tom Exp $")
+MODULE_ID("$Id: visbuf.c,v 1.21 2006/12/02 21:20:28 tom Exp $")
+
+static const char d_quote[] = {D_QUOTE, 0};
+static const char l_brace[] = {L_BRACE, 0};
+static const char r_brace[] = {R_BRACE, 0};
static char *
_nc_vischar(char *tp, unsigned c)
@@ -68,14 +73,15 @@ _nc_vischar(char *tp, unsigned c)
*tp++ = '^';
*tp++ = '@' + c;
} else {
- sprintf(tp, "\\%03lo", ChCharOf(c));
+ sprintf(tp, "\\%03lo", (unsigned long) ChCharOf(c));
tp += strlen(tp);
}
+ *tp = 0;
return tp;
}
-NCURSES_EXPORT(const char *)
-_nc_visbuf2(int bufnum, const char *buf)
+static const char *
+_nc_visbuf2n(int bufnum, const char *buf, int len)
{
char *vbuf;
char *tp;
@@ -86,17 +92,20 @@ _nc_visbuf2(int bufnum, const char *buf)
if (buf == CANCELLED_STRING)
return ("(cancelled)");
+ if (len < 0)
+ len = strlen(buf);
+
#ifdef TRACE
- tp = vbuf = _nc_trace_buf(bufnum, (strlen(buf) * 4) + 5);
+ tp = vbuf = _nc_trace_buf(bufnum, (unsigned) (len * 4) + 5);
#else
{
static char *mybuf[2];
- mybuf[bufnum] = _nc_doalloc(mybuf[bufnum], (strlen(buf) * 4) + 5);
+ mybuf[bufnum] = typeRealloc(char, (unsigned) (len * 4) + 5, mybuf[bufnum]);
tp = vbuf = mybuf[bufnum];
}
#endif
*tp++ = D_QUOTE;
- while ((c = *buf++) != '\0') {
+ while ((--len >= 0) && (c = *buf++) != '\0') {
tp = _nc_vischar(tp, UChar(c));
}
*tp++ = D_QUOTE;
@@ -105,35 +114,72 @@ _nc_visbuf2(int bufnum, const char *buf)
}
NCURSES_EXPORT(const char *)
+_nc_visbuf2(int bufnum, const char *buf)
+{
+ return _nc_visbuf2n(bufnum, buf, -1);
+}
+
+NCURSES_EXPORT(const char *)
_nc_visbuf(const char *buf)
{
return _nc_visbuf2(0, buf);
}
-#if USE_WIDEC_SUPPORT
-#ifdef TRACE
NCURSES_EXPORT(const char *)
-_nc_viswbuf2(int bufnum, const wchar_t * buf)
+_nc_visbufn(const char *buf, int len)
+{
+ return _nc_visbuf2n(0, buf, len);
+}
+
+#ifdef TRACE
+#if USE_WIDEC_SUPPORT
+
+#if defined(USE_TERMLIB)
+#define _nc_wchstrlen _my_wchstrlen
+static int
+_nc_wchstrlen(const cchar_t *s)
+{
+ int result = 0;
+ while (CharOf(s[result]) != L'\0') {
+ result++;
+ }
+ return result;
+}
+#endif
+
+static const char *
+_nc_viswbuf2n(int bufnum, const wchar_t *buf, int len)
{
char *vbuf;
char *tp;
- int c;
+ wchar_t c;
if (buf == 0)
return ("(null)");
+ if (len < 0)
+ len = wcslen(buf);
+
#ifdef TRACE
- tp = vbuf = _nc_trace_buf(bufnum, (wcslen(buf) * 4) + 5);
+ tp = vbuf = _nc_trace_buf(bufnum, (unsigned) (len * 4) + 5);
#else
{
static char *mybuf[2];
- mybuf[bufnum] = _nc_doalloc(mybuf[bufnum], (wcslen(buf) * 4) + 5);
+ mybuf[bufnum] = typeRealloc(char, (unsigned) (len * 4) + 5, mybuf[bufnum]);
tp = vbuf = mybuf[bufnum];
}
#endif
*tp++ = D_QUOTE;
- while ((c = *buf++) != '\0') {
- tp = _nc_vischar(tp, ChCharOf(c));
+ while ((--len >= 0) && (c = *buf++) != '\0') {
+ char temp[CCHARW_MAX + 80];
+ int j = wctomb(temp, c), k;
+ if (j <= 0) {
+ sprintf(temp, "\\u%08X", (wint_t) c);
+ j = strlen(temp);
+ }
+ for (k = 0; k < j; ++k) {
+ tp = _nc_vischar(tp, UChar(temp[k]));
+ }
}
*tp++ = D_QUOTE;
*tp++ = '\0';
@@ -141,92 +187,125 @@ _nc_viswbuf2(int bufnum, const wchar_t * buf)
}
NCURSES_EXPORT(const char *)
-_nc_viswbuf(const wchar_t * buf)
+_nc_viswbuf2(int bufnum, const wchar_t *buf)
+{
+ return _nc_viswbuf2n(bufnum, buf, -1);
+}
+
+NCURSES_EXPORT(const char *)
+_nc_viswbuf(const wchar_t *buf)
{
return _nc_viswbuf2(0, buf);
}
NCURSES_EXPORT(const char *)
-_nc_viscbuf2(int bufnum, const cchar_t * buf, int len)
+_nc_viswbufn(const wchar_t *buf, int len)
+{
+ return _nc_viswbuf2n(0, buf, len);
+}
+
+/* this special case is used for wget_wstr() */
+NCURSES_EXPORT(const char *)
+_nc_viswibuf(const wint_t *buf)
+{
+ static wchar_t *mybuf;
+ static unsigned mylen;
+ unsigned n;
+
+ for (n = 0; buf[n] != 0; ++n) ;
+ if (mylen < ++n) {
+ mylen = n + 80;
+ if (mybuf != 0)
+ mybuf = typeRealloc(wchar_t, mylen, mybuf);
+ else
+ mybuf = typeMalloc(wchar_t, mylen);
+ }
+ for (n = 0; buf[n] != 0; ++n)
+ mybuf[n] = (wchar_t) buf[n];
+
+ return _nc_viswbuf2(0, mybuf);
+}
+#endif /* USE_WIDEC_SUPPORT */
+
+/* use these functions for displaying parts of a line within a window */
+NCURSES_EXPORT(const char *)
+_nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len)
{
- size_t have = BUFSIZ;
- char *result = _nc_trace_buf(bufnum, have);
- char *tp = result;
- int n;
- bool same = TRUE;
- attr_t attr = A_NORMAL;
+ char *result = _nc_trace_buf(bufnum, BUFSIZ);
+ int first;
const char *found;
+#if USE_WIDEC_SUPPORT
if (len < 0)
len = _nc_wchstrlen(buf);
-
- for (n = 1; n < len; n++) {
- if (AttrOf(buf[n]) != AttrOf(buf[0])) {
- same = FALSE;
- break;
- }
- }
+#endif /* USE_WIDEC_SUPPORT */
/*
- * If the rendition is the same for the whole string, display it as a
- * quoted string, followed by the rendition. Otherwise, use the more
- * detailed trace function that displays each character separately.
+ * Display one or more strings followed by attributes.
*/
- if (same) {
- *tp++ = D_QUOTE;
- while (len-- > 0) {
- if ((found = _nc_altcharset_name(attr, CharOfD(buf))) != 0) {
- (void) strcpy(tp, found);
- tp += strlen(tp);
+ first = 0;
+ while (first < len) {
+ attr_t attr = AttrOf(buf[first]);
+ int last = len - 1;
+ int j;
+
+ for (j = first + 1; j < len; ++j) {
+ if (!SameAttrOf(buf[j], buf[first])) {
+ last = j - 1;
+ break;
+ }
+ }
+
+ result = _nc_trace_bufcat(bufnum, l_brace);
+ result = _nc_trace_bufcat(bufnum, d_quote);
+ for (j = first; j <= last; ++j) {
+ if ((found = _nc_altcharset_name(attr, (chtype) CharOf(buf[j]))) != 0) {
+ result = _nc_trace_bufcat(bufnum, found);
attr &= ~A_ALTCHARSET;
- } else if (!isnac(CHDEREF(buf))) {
+ } else
+#if USE_WIDEC_SUPPORT
+ if (!isWidecExt(buf[j])) {
PUTC_DATA;
- memset(&PUT_st, '\0', sizeof(PUT_st));
- PUTC_i = 0;
- do {
- PUTC_ch = PUTC_i < CCHARW_MAX ? buf->chars[PUTC_i] : L'\0';
- PUTC_n = wcrtomb(PUTC_buf, buf->chars[PUTC_i], &PUT_st);
+ PUTC_INIT;
+ for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) {
+ int k;
+
+ PUTC_ch = buf[j].chars[PUTC_i];
if (PUTC_ch == L'\0')
- --PUTC_n;
+ break;
+ PUTC_n = wcrtomb(PUTC_buf, buf[j].chars[PUTC_i], &PUT_st);
if (PUTC_n <= 0)
break;
- for (n = 0; n < PUTC_n; n++) {
- tp = _nc_vischar(tp, UChar(PUTC_buf[n]));
+ for (k = 0; k < PUTC_n; k++) {
+ char temp[80];
+ _nc_vischar(temp, UChar(PUTC_buf[k]));
+ result = _nc_trace_bufcat(bufnum, temp);
}
- ++PUTC_i;
- } while (PUTC_ch != L'\0');
+ }
}
- buf++;
- }
- *tp++ = D_QUOTE;
- *tp++ = '\0';
- if (attr != A_NORMAL)
- (void) sprintf(tp, " | %s",
- _traceattr2(bufnum + 20, attr));
- } else {
- *tp++ = L_BRACE;
- while (len-- > 0) {
- char *temp = _tracecchar_t2(bufnum + 20, buf++);
- size_t used = (tp - result);
- size_t want = strlen(temp) + 5 + used;
- if (want > have) {
- result = _nc_trace_buf(bufnum, have = want);
- tp = result + used;
+#else
+ {
+ char temp[80];
+ _nc_vischar(temp, UChar(buf[j]));
+ result = _nc_trace_bufcat(bufnum, temp);
}
- (void) strcpy(tp, temp);
- tp += strlen(tp);
+#endif /* USE_WIDEC_SUPPORT */
+ }
+ result = _nc_trace_bufcat(bufnum, d_quote);
+ if (attr != A_NORMAL) {
+ result = _nc_trace_bufcat(bufnum, " | ");
+ result = _nc_trace_bufcat(bufnum, _traceattr2(bufnum + 20, attr));
}
- *tp++ = R_BRACE;
- *tp++ = '\0';
+ result = _nc_trace_bufcat(bufnum, r_brace);
+ first = last + 1;
}
return result;
}
NCURSES_EXPORT(const char *)
-_nc_viscbuf(const cchar_t * buf, int len)
+_nc_viscbuf(const NCURSES_CH_T * buf, int len)
{
return _nc_viscbuf2(0, buf, len);
}
#endif /* TRACE */
-#endif /* USE_WIDEC_SUPPORT */
diff --git a/contrib/ncurses/ncurses/tty/MKexpanded.sh b/contrib/ncurses/ncurses/tty/MKexpanded.sh
index 8e4a6c6c5f03..bf9acf21aa43 100755
--- a/contrib/ncurses/ncurses/tty/MKexpanded.sh
+++ b/contrib/ncurses/ncurses/tty/MKexpanded.sh
@@ -1,6 +1,6 @@
#! /bin/sh
##############################################################################
-# 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 "Software"), #
@@ -29,7 +29,7 @@
#
# Author: Thomas E. Dickey <dickey@clark.net> 1997
#
-# $Id: MKexpanded.sh,v 1.10 2000/12/10 00:24:33 tom Exp $
+# $Id: MKexpanded.sh,v 1.11 2005/01/02 01:06:40 tom Exp $
#
# Script to generate 'expanded.c', a dummy source that contains functions
# corresponding to complex macros used in this library. By making functions,
@@ -84,7 +84,7 @@ NCURSES_EXPORT(int) _nc_InsCharCost (int count)
{
return InsCharCost(count);
}
-NCURSES_EXPORT(void) _nc_UpdateAttrs (chtype c)
+NCURSES_EXPORT(void) _nc_UpdateAttrs (NCURSES_CH_T c)
{
UpdateAttrs(c);
}
diff --git a/contrib/ncurses/ncurses/tty/hashmap.c b/contrib/ncurses/ncurses/tty/hashmap.c
index 1c30526069ba..1f482d4b6d0b 100644
--- a/contrib/ncurses/ncurses/tty/hashmap.c
+++ b/contrib/ncurses/ncurses/tty/hashmap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,7 +70,7 @@ AUTHOR
#include <curses.priv.h>
#include <term.h> /* for back_color_erase */
-MODULE_ID("$Id: hashmap.c,v 1.45 2001/12/19 01:06:49 tom Exp $")
+MODULE_ID("$Id: hashmap.c,v 1.49 2006/03/11 19:33:49 tom Exp $")
#ifdef HASHDEBUG
@@ -108,7 +108,9 @@ static chtype oldtext[MAXLINES][TEXTWIDTH], newtext[MAXLINES][TEXTWIDTH];
#define HASH_VAL(ch) (ch)
#endif
-static inline unsigned long
+static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
+
+static NCURSES_INLINE unsigned long
hash(NCURSES_CH_T * text)
{
int i;
@@ -140,10 +142,10 @@ update_cost_from_blank(NCURSES_CH_T * to)
{
int cost = 0;
int i;
- NCURSES_CH_T blank = NewChar2(BLANK_TEXT, BLANK_ATTR);
+ NCURSES_CH_T blank = blankchar;
if (back_color_erase)
- AddAttr(blank, (AttrOf(stdscr->_nc_bkgd) & A_COLOR));
+ SetPair(blank, GetPair(stdscr->_nc_bkgd));
for (i = TEXTWIDTH; i > 0; i--)
if (!(CharEq(blank, *to++)))
@@ -156,7 +158,7 @@ update_cost_from_blank(NCURSES_CH_T * to)
* Returns true when moving line 'from' to line 'to' seems to be cost
* effective. 'blank' indicates whether the line 'to' would become blank.
*/
-static inline bool
+static NCURSES_INLINE bool
cost_effective(const int from, const int to, const bool blank)
{
int new_from;
@@ -294,9 +296,9 @@ _nc_hash_map(void)
} else {
/* re-hash all */
if (oldhash == 0)
- oldhash = typeCalloc(unsigned long, screen_lines);
+ oldhash = typeCalloc(unsigned long, (unsigned) screen_lines);
if (newhash == 0)
- newhash = typeCalloc(unsigned long, screen_lines);
+ newhash = typeCalloc(unsigned long, (unsigned) screen_lines);
if (!oldhash || !newhash)
return; /* malloc failure */
for (i = 0; i < screen_lines; i++) {
diff --git a/contrib/ncurses/ncurses/tty/lib_mvcur.c b/contrib/ncurses/ncurses/tty/lib_mvcur.c
index 89b503f4aee6..4c0ef4a27e3e 100644
--- a/contrib/ncurses/ncurses/tty/lib_mvcur.c
+++ b/contrib/ncurses/ncurses/tty/lib_mvcur.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -108,7 +109,9 @@
* LONG_DIST and (b) further inward from the right or left edge than LONG_DIST,
* we'll consider nonlocal.
*/
-#define NOT_LOCAL(fy, fx, ty, tx) ((tx > LONG_DIST) && (tx < screen_lines - 1 - LONG_DIST) && (abs(ty-fy) + abs(tx-fx) > LONG_DIST))
+#define NOT_LOCAL(fy, fx, ty, tx) ((tx > LONG_DIST) \
+ && (tx < screen_columns - 1 - LONG_DIST) \
+ && (abs(ty-fy) + abs(tx-fx) > LONG_DIST))
/****************************************************************************
*
@@ -152,12 +155,8 @@
#include <term.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_mvcur.c,v 1.85 2001/06/03 01:48:29 skimo Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.107 2006/11/25 22:31:59 tom Exp $")
-#define CURRENT_ROW SP->_cursrow /* phys cursor row */
-#define CURRENT_COLUMN SP->_curscol /* phys cursor column */
-#define CURRENT_ATTR SP->_current_attr /* current phys attribute */
-#define REAL_ATTR SP->_current_attr /* phys current attribute */
#define WANT_CHAR(y, x) SP->_newscr->_line[y].text[x] /* desired state */
#define BAUDRATE cur_term->_baudrate /* bits per second */
@@ -258,7 +257,7 @@ reset_scroll_region(void)
{
if (change_scroll_region) {
TPUTS_TRACE("change_scroll_region");
- putp(tparm(change_scroll_region, 0, screen_lines - 1));
+ putp(TPARM_2(change_scroll_region, 0, screen_lines - 1));
}
}
@@ -296,10 +295,11 @@ NCURSES_EXPORT(void)
_nc_mvcur_init(void)
/* initialize the cost structure */
{
- /*
- * 9 = 7 bits + 1 parity + 1 stop.
- */
- SP->_char_padding = (9 * 1000 * 10) / (BAUDRATE > 0 ? BAUDRATE : 9600);
+ if (isatty(fileno(SP->_ofp)))
+ SP->_char_padding = ((BAUDBYTE * 1000 * 10)
+ / (BAUDRATE > 0 ? BAUDRATE : 9600));
+ else
+ SP->_char_padding = 1; /* must be nonzero */
if (SP->_char_padding <= 0)
SP->_char_padding = 1; /* must be nonzero */
TR(TRACE_CHARPUT | TRACE_MOVE, ("char_padding %d msecs", SP->_char_padding));
@@ -309,8 +309,13 @@ _nc_mvcur_init(void)
SP->_home_cost = CostOf(cursor_home, 0);
SP->_ll_cost = CostOf(cursor_to_ll, 0);
#if USE_HARD_TABS
- SP->_ht_cost = CostOf(tab, 0);
- SP->_cbt_cost = CostOf(back_tab, 0);
+ if (getenv("NCURSES_NO_HARD_TABS") == 0) {
+ SP->_ht_cost = CostOf(tab, 0);
+ SP->_cbt_cost = CostOf(back_tab, 0);
+ } else {
+ SP->_ht_cost = INFINITY;
+ SP->_cbt_cost = INFINITY;
+ }
#endif /* USE_HARD_TABS */
SP->_cub1_cost = CostOf(cursor_left, 0);
SP->_cuf1_cost = CostOf(cursor_right, 0);
@@ -356,13 +361,13 @@ _nc_mvcur_init(void)
* All these averages depend on the assumption that all parameter values
* are equally probable.
*/
- SP->_cup_cost = CostOf(tparm(SP->_address_cursor, 23, 23), 1);
- SP->_cub_cost = CostOf(tparm(parm_left_cursor, 23), 1);
- SP->_cuf_cost = CostOf(tparm(parm_right_cursor, 23), 1);
- SP->_cud_cost = CostOf(tparm(parm_down_cursor, 23), 1);
- SP->_cuu_cost = CostOf(tparm(parm_up_cursor, 23), 1);
- SP->_hpa_cost = CostOf(tparm(column_address, 23), 1);
- SP->_vpa_cost = CostOf(tparm(row_address, 23), 1);
+ SP->_cup_cost = CostOf(TPARM_2(SP->_address_cursor, 23, 23), 1);
+ SP->_cub_cost = CostOf(TPARM_1(parm_left_cursor, 23), 1);
+ SP->_cuf_cost = CostOf(TPARM_1(parm_right_cursor, 23), 1);
+ SP->_cud_cost = CostOf(TPARM_1(parm_down_cursor, 23), 1);
+ SP->_cuu_cost = CostOf(TPARM_1(parm_up_cursor, 23), 1);
+ SP->_hpa_cost = CostOf(TPARM_1(column_address, 23), 1);
+ SP->_vpa_cost = CostOf(TPARM_1(row_address, 23), 1);
/* non-parameterized screen-update strings */
SP->_ed_cost = NormalizedCost(clr_eos, 1);
@@ -371,15 +376,22 @@ _nc_mvcur_init(void)
SP->_dch1_cost = NormalizedCost(delete_character, 1);
SP->_ich1_cost = NormalizedCost(insert_character, 1);
+ /*
+ * If this is a bce-terminal, we want to bias the choice so we use clr_eol
+ * rather than spaces at the end of a line.
+ */
+ if (back_color_erase)
+ SP->_el_cost = 0;
+
/* parameterized screen-update strings */
- SP->_dch_cost = NormalizedCost(tparm(parm_dch, 23), 1);
- SP->_ich_cost = NormalizedCost(tparm(parm_ich, 23), 1);
- SP->_ech_cost = NormalizedCost(tparm(erase_chars, 23), 1);
- SP->_rep_cost = NormalizedCost(tparm(repeat_char, ' ', 23), 1);
-
- SP->_cup_ch_cost = NormalizedCost(tparm(SP->_address_cursor, 23, 23), 1);
- SP->_hpa_ch_cost = NormalizedCost(tparm(column_address, 23), 1);
- SP->_cuf_ch_cost = NormalizedCost(tparm(parm_right_cursor, 23), 1);
+ SP->_dch_cost = NormalizedCost(TPARM_1(parm_dch, 23), 1);
+ SP->_ich_cost = NormalizedCost(TPARM_1(parm_ich, 23), 1);
+ SP->_ech_cost = NormalizedCost(TPARM_1(erase_chars, 23), 1);
+ SP->_rep_cost = NormalizedCost(TPARM_2(repeat_char, ' ', 23), 1);
+
+ SP->_cup_ch_cost = NormalizedCost(TPARM_2(SP->_address_cursor, 23, 23), 1);
+ SP->_hpa_ch_cost = NormalizedCost(TPARM_1(column_address, 23), 1);
+ SP->_cuf_ch_cost = NormalizedCost(TPARM_1(parm_right_cursor, 23), 1);
SP->_inline_cost = min(SP->_cup_ch_cost,
min(SP->_hpa_ch_cost,
SP->_cuf_ch_cost));
@@ -441,7 +453,7 @@ _nc_mvcur_wrap(void)
/*
* Perform repeated-append, returning cost
*/
-static inline int
+static NCURSES_INLINE int
repeated_append(string_desc * target, int total, int num, int repeat, const char *src)
{
size_t need = repeat * strlen(src);
@@ -484,7 +496,7 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
vcost = INFINITY;
if (row_address != 0
- && _nc_safe_strcat(target, tparm(row_address, to_y))) {
+ && _nc_safe_strcat(target, TPARM_1(row_address, to_y))) {
vcost = SP->_vpa_cost;
}
@@ -494,7 +506,7 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
if (parm_down_cursor
&& SP->_cud_cost < vcost
&& _nc_safe_strcat(_nc_str_copy(target, &save),
- tparm(parm_down_cursor, n))) {
+ TPARM_1(parm_down_cursor, n))) {
vcost = SP->_cud_cost;
}
@@ -508,10 +520,10 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
n = (from_y - to_y);
if (parm_up_cursor
- && SP->_cup_cost < vcost
+ && SP->_cuu_cost < vcost
&& _nc_safe_strcat(_nc_str_copy(target, &save),
- tparm(parm_up_cursor, n))) {
- vcost = SP->_cup_cost;
+ TPARM_1(parm_up_cursor, n))) {
+ vcost = SP->_cuu_cost;
}
if (cursor_up && (n * SP->_cuu1_cost < vcost)) {
@@ -534,7 +546,7 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
if (column_address
&& _nc_safe_strcat(_nc_str_copy(target, &save),
- tparm(column_address, to_x))) {
+ TPARM_1(column_address, to_x))) {
hcost = SP->_hpa_cost;
}
@@ -544,7 +556,7 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
if (parm_right_cursor
&& SP->_cuf_cost < hcost
&& _nc_safe_strcat(_nc_str_copy(target, &save),
- tparm(parm_right_cursor, n))) {
+ TPARM_1(parm_right_cursor, n))) {
hcost = SP->_cuf_cost;
}
@@ -570,7 +582,6 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
}
#endif /* USE_HARD_TABS */
-#if defined(REAL_ATTR) && defined(WANT_CHAR)
if (n <= 0 || n >= (int) check.s_size)
ovw = FALSE;
#if BSD_TPUTS
@@ -584,9 +595,11 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
&& n > 0
&& n < (int) check.s_size
&& vcost == 0
- && str[0] == '\0'
- && isdigit(CharOf(WANT_CHAR(to_y, from_x))))
- ovw = FALSE;
+ && str[0] == '\0') {
+ int wanted = CharOf(WANT_CHAR(to_y, from_x));
+ if (is8bits(wanted) && isdigit(wanted))
+ ovw = FALSE;
+ }
#endif
/*
* If we have no attribute changes, overwrite is cheaper.
@@ -601,7 +614,7 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
for (i = 0; i < n; i++) {
NCURSES_CH_T ch = WANT_CHAR(to_y, from_x + i);
- if (AttrOf(ch) != CURRENT_ATTR
+ if (!SameAttrOf(ch, SCREEN_ATTRS(SP))
#if USE_WIDEC_SUPPORT
|| !Charable(ch)
#endif
@@ -619,9 +632,7 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
*check.s_tail = '\0';
check.s_size -= n;
lhcost += n * SP->_char_padding;
- } else
-#endif /* defined(REAL_ATTR) && defined(WANT_CHAR) */
- {
+ } else {
lhcost = repeated_append(&check, lhcost, SP->_cuf1_cost,
n, cursor_right);
}
@@ -637,7 +648,7 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
if (parm_left_cursor
&& SP->_cub_cost < hcost
&& _nc_safe_strcat(_nc_str_copy(target, &save),
- tparm(parm_left_cursor, n))) {
+ TPARM_1(parm_left_cursor, n))) {
hcost = SP->_cub_cost;
}
@@ -689,7 +700,7 @@ relative_move(string_desc * target, int from_y, int from_x, int to_y, int
* the simpler method below.
*/
-static inline int
+static NCURSES_INLINE int
onscreen_mvcur(int yold, int xold, int ynew, int xnew, bool ovw)
/* onscreen move from (yold, xold) to (ynew, xnew) */
{
@@ -708,7 +719,7 @@ onscreen_mvcur(int yold, int xold, int ynew, int xnew, bool ovw)
#define InitResult _nc_str_init(&result, buffer, sizeof(buffer))
/* tactic #0: use direct cursor addressing */
- if (_nc_safe_strcpy(InitResult, tparm(SP->_address_cursor, ynew, xnew))) {
+ if (_nc_safe_strcpy(InitResult, TPARM_2(SP->_address_cursor, ynew, xnew))) {
tactic = 0;
usecost = SP->_cup_cost;
@@ -817,20 +828,22 @@ onscreen_mvcur(int yold, int xold, int ynew, int xnew, bool ovw)
}
#endif /* !NO_OPTIMIZE */
+ nonlocal:
#if defined(MAIN) || defined(NCURSES_TEST)
gettimeofday(&after, NULL);
diff = after.tv_usec - before.tv_usec
+ (after.tv_sec - before.tv_sec) * 1000000;
if (!profiling)
(void) fprintf(stderr,
- "onscreen: %d msec, %f 28.8Kbps char-equivalents\n",
+ "onscreen: %d microsec, %f 28.8Kbps char-equivalents\n",
(int) diff, diff / 288);
#endif /* MAIN */
- nonlocal:
if (usecost != INFINITY) {
TPUTS_TRACE("mvcur");
tputs(buffer, 1, _nc_outch);
+ SP->_cursrow = ynew;
+ SP->_curscol = xnew;
return (OK);
} else
return (ERR);
@@ -840,72 +853,101 @@ NCURSES_EXPORT(int)
mvcur(int yold, int xold, int ynew, int xnew)
/* optimized cursor move from (yold, xold) to (ynew, xnew) */
{
+ NCURSES_CH_T oldattr;
+ int code;
+
TR(TRACE_CALLS | TRACE_MOVE, (T_CALLED("mvcur(%d,%d,%d,%d)"),
yold, xold, ynew, xnew));
- if (SP == 0)
- returnCode(ERR);
+ if (SP == 0) {
+ code = ERR;
+ } else if (yold == ynew && xold == xnew) {
+ code = OK;
+ } else {
- if (yold == ynew && xold == xnew)
- returnCode(OK);
+ /*
+ * Most work here is rounding for terminal boundaries getting the
+ * column position implied by wraparound or the lack thereof and
+ * rolling up the screen to get ynew on the screen.
+ */
+ if (xnew >= screen_columns) {
+ ynew += xnew / screen_columns;
+ xnew %= screen_columns;
+ }
- /*
- * Most work here is rounding for terminal boundaries getting the
- * column position implied by wraparound or the lack thereof and
- * rolling up the screen to get ynew on the screen.
- */
+ /*
+ * Force restore even if msgr is on when we're in an alternate
+ * character set -- these have a strong tendency to screw up the CR &
+ * LF used for local character motions!
+ */
+ oldattr = SCREEN_ATTRS(SP);
+ if ((AttrOf(oldattr) & A_ALTCHARSET)
+ || (AttrOf(oldattr) && !move_standout_mode)) {
+ TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move",
+ (unsigned long) AttrOf(oldattr),
+ _traceattr(AttrOf(oldattr))));
+ (void) VIDATTR(A_NORMAL, 0);
+ }
- if (xnew >= screen_columns) {
- ynew += xnew / screen_columns;
- xnew %= screen_columns;
- }
- if (xold >= screen_columns) {
- int l;
-
- if (SP->_nl) {
- l = (xold + 1) / screen_columns;
- yold += l;
- if (yold >= screen_lines)
- l -= (yold - screen_lines - 1);
-
- while (l > 0) {
- if (newline) {
- TPUTS_TRACE("newline");
- tputs(newline, 0, _nc_outch);
- } else
- putchar('\n');
- l--;
- if (xold > 0) {
+ if (xold >= screen_columns) {
+ int l;
+
+ if (SP->_nl) {
+ l = (xold + 1) / screen_columns;
+ yold += l;
+ if (yold >= screen_lines)
+ l -= (yold - screen_lines - 1);
+
+ if (l > 0) {
if (carriage_return) {
TPUTS_TRACE("carriage_return");
- tputs(carriage_return, 0, _nc_outch);
+ putp(carriage_return);
} else
- putchar('\r');
+ _nc_outch('\r');
xold = 0;
+
+ while (l > 0) {
+ if (newline) {
+ TPUTS_TRACE("newline");
+ putp(newline);
+ } else
+ _nc_outch('\n');
+ l--;
+ }
}
+ } else {
+ /*
+ * If caller set nonl(), we cannot really use newlines to
+ * position to the next row.
+ */
+ xold = -1;
+ yold = -1;
}
- } else {
- /*
- * If caller set nonl(), we cannot really use newlines to position
- * to the next row.
- */
- xold = -1;
- yold = -1;
}
- }
- if (yold > screen_lines - 1)
- yold = screen_lines - 1;
- if (ynew > screen_lines - 1)
- ynew = screen_lines - 1;
+ if (yold > screen_lines - 1)
+ yold = screen_lines - 1;
+ if (ynew > screen_lines - 1)
+ ynew = screen_lines - 1;
+
+ /* destination location is on screen now */
+ code = onscreen_mvcur(yold, xold, ynew, xnew, TRUE);
- /* destination location is on screen now */
- returnCode(onscreen_mvcur(yold, xold, ynew, xnew, TRUE));
+ /*
+ * Restore attributes if we disabled them before moving.
+ */
+ if (!SameAttrOf(oldattr, SCREEN_ATTRS(SP))) {
+ TR(TRACE_CHARPUT, ("turning on (%#lx) %s after move",
+ (unsigned long) AttrOf(oldattr),
+ _traceattr(AttrOf(oldattr))));
+ (void) VIDATTR(AttrOf(oldattr), GetPair(oldattr));
+ }
+ }
+ returnCode(code);
}
#if defined(TRACE) || defined(NCURSES_TEST)
-NCURSES_EXPORT_VAR(int)
-_nc_optimize_enable = OPTIMIZE_ALL;
+NCURSES_EXPORT_VAR(int) _nc_optimize_enable = OPTIMIZE_ALL;
#endif
#if defined(MAIN) || defined(NCURSES_TEST)
@@ -918,10 +960,9 @@ _nc_optimize_enable = OPTIMIZE_ALL;
#include <tic.h>
#include <dump_entry.h>
-NCURSES_EXPORT_VAR(const char *)
-_nc_progname = "mvcur";
+NCURSES_EXPORT_VAR(const char *) _nc_progname = "mvcur";
- static unsigned long xmits;
+static unsigned long xmits;
/* these override lib_tputs.c */
NCURSES_EXPORT(int)
@@ -948,17 +989,13 @@ _nc_outch(int ch)
return OK;
}
-NCURSES_EXPORT_VAR(char) PC = 0; /* used by termcap library */
-NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0; /* used by termcap library */
-NCURSES_EXPORT_VAR(int) _nc_nulls_sent = 0; /* used by 'tack' program */
-
NCURSES_EXPORT(int)
delay_output(int ms GCC_UNUSED)
{
return OK;
}
-static char tname[MAX_ALIAS];
+static char tname[PATH_MAX];
static void
load_term(void)
@@ -982,7 +1019,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
(void) strcpy(tname, termname());
load_term();
- _nc_setupscreen(lines, columns, stdout);
+ _nc_setupscreen(lines, columns, stdout, FALSE, 0);
baudrate();
_nc_mvcur_init();
@@ -1079,7 +1116,7 @@ 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);
+ dump_entry(&cur_term->type, FALSE, TRUE, 0, 0, 0);
putchar('\n');
} else if (buf[0] == 'o') {
if (_nc_optimize_enable & OPTIMIZE_MVCUR) {
diff --git a/contrib/ncurses/ncurses/tty/lib_tstp.c b/contrib/ncurses/ncurses/tty/lib_tstp.c
index c850e41da2c2..4c9f9fbaf1b7 100644
--- a/contrib/ncurses/ncurses/tty/lib_tstp.c
+++ b/contrib/ncurses/ncurses/tty/lib_tstp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2006 Free 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 Dickey 1995-2001 *
+ * and: Thomas E. Dickey 1995-on *
****************************************************************************/
/*
@@ -46,7 +46,7 @@
#define _POSIX_SOURCE
#endif
-MODULE_ID("$Id: lib_tstp.c,v 1.30 2002/05/18 19:55:38 tom Exp $")
+MODULE_ID("$Id: lib_tstp.c,v 1.32 2006/04/01 19:31:34 tom Exp $")
#if defined(SIGTSTP) && (HAVE_SIGACTION || HAVE_SIGVEC)
#define USE_SIGTSTP 1
@@ -277,11 +277,7 @@ cleanup(int sig)
static void
sigwinch(int sig GCC_UNUSED)
{
- SCREEN *scan = _nc_screen_chain;
- while (scan) {
- scan->_sig_winch = TRUE;
- scan = scan->_next_screen;
- }
+ _nc_handle_sigwinch(-1);
}
#endif /* USE_SIGWINCH */
diff --git a/contrib/ncurses/ncurses/tty/lib_twait.c b/contrib/ncurses/ncurses/tty/lib_twait.c
index 9829a7eec8ef..28e503f331f6 100644
--- a/contrib/ncurses/ncurses/tty/lib_twait.c
+++ b/contrib/ncurses/ncurses/tty/lib_twait.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -61,7 +61,7 @@
# endif
#endif
-MODULE_ID("$Id: lib_twait.c,v 1.44 2002/04/21 21:06:29 tom Exp $")
+MODULE_ID("$Id: lib_twait.c,v 1.51 2006/05/27 21:57:43 tom Exp $")
static long
_nc_gettime(bool first)
@@ -75,9 +75,16 @@ _nc_gettime(bool first)
gettimeofday(&t1, (struct timezone *) 0);
if (first) {
t0 = t1;
+ res = 0;
+ } else {
+ /* .tv_sec and .tv_usec are unsigned, be careful when subtracting */
+ if (t0.tv_usec > t1.tv_usec) { /* Convert 1s in 1e6 microsecs */
+ t1.tv_usec += 1000000;
+ t1.tv_sec--;
+ }
+ res = (t1.tv_sec - t0.tv_sec) * 1000
+ + (t1.tv_usec - t0.tv_usec) / 1000;
}
- res = (t1.tv_sec - t0.tv_sec) * 1000
- + (t1.tv_usec - t0.tv_usec) / 1000;
#else
# define PRECISE_GETTIME 0
static time_t t0;
@@ -91,6 +98,29 @@ _nc_gettime(bool first)
return res;
}
+#ifdef NCURSES_WGETCH_EVENTS
+NCURSES_EXPORT(int)
+_nc_eventlist_timeout(_nc_eventlist * evl)
+{
+ int event_delay = -1;
+ int n;
+
+ if (evl != 0) {
+
+ 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;
+ if (event_delay < 0)
+ event_delay = INT_MAX; /* FIXME Is this defined? */
+ }
+ }
+ }
+ return event_delay;
+}
+#endif /* NCURSES_WGETCH_EVENTS */
+
/*
* Wait a specified number of milliseconds, returning nonzero if the timer
* didn't expire before there is activity on the specified file descriptors.
@@ -99,21 +129,35 @@ _nc_gettime(bool first)
* 1 - ncurses' normal input-descriptor
* 2 - mouse descriptor, if any
* 3 - either input or mouse.
+ *
+ * Experimental: if NCURSES_WGETCH_EVENTS is defined, (mode & 4) determines
+ * whether to pay attention to evl argument. If set, the smallest of
+ * millisecond and of timeout of evl is taken.
+ *
* We return a mask that corresponds to the mode (e.g., 2 for mouse activity).
*
* If the milliseconds given are -1, the wait blocks until activity on the
* descriptors.
*/
NCURSES_EXPORT(int)
-_nc_timed_wait(int mode, int milliseconds, int *timeleft)
+_nc_timed_wait(int mode,
+ int milliseconds,
+ int *timeleft
+ EVENTLIST_2nd(_nc_eventlist * evl))
{
int fd;
int count;
-
int result;
+#ifdef NCURSES_WGETCH_EVENTS
+ int timeout_is_event = 0;
+ int n;
+#endif
+
#if USE_FUNC_POLL
- struct pollfd fds[2];
+#define MIN_FDS 2
+ struct pollfd fd_list[MIN_FDS];
+ struct pollfd *fds = fd_list;
#elif defined(__BEOS__)
#elif HAVE_SELECT
static fd_set set;
@@ -121,11 +165,21 @@ _nc_timed_wait(int mode, int milliseconds, int *timeleft)
long starttime, returntime;
- if (milliseconds < 0)
- milliseconds = 0;
TR(TRACE_IEVENT, ("start twait: %d milliseconds, mode: %d",
milliseconds, mode));
+#ifdef NCURSES_WGETCH_EVENTS
+ if (mode & 4) {
+ int event_delay = _nc_eventlist_timeout(evl);
+
+ if (event_delay >= 0
+ && (milliseconds >= event_delay || milliseconds < 0)) {
+ milliseconds = event_delay;
+ timeout_is_event = 1;
+ }
+ }
+#endif
+
#if PRECISE_GETTIME
retry:
#endif
@@ -133,8 +187,19 @@ _nc_timed_wait(int mode, int milliseconds, int *timeleft)
count = 0;
+#ifdef NCURSES_WGETCH_EVENTS
+ if ((mode & 4) && evl)
+ evl->result_flags = 0;
+#endif
+
#if USE_FUNC_POLL
- memset(fds, 0, sizeof(fds));
+ memset(fd_list, 0, sizeof(fd_list));
+
+#ifdef NCURSES_WGETCH_EVENTS
+ if ((mode & 4) && evl)
+ fds = typeMalloc(struct pollfd, MIN_FDS + evl->count);
+#endif
+
if (mode & 1) {
fds[count].fd = SP->_ifd;
fds[count].events = POLLIN;
@@ -146,7 +211,53 @@ _nc_timed_wait(int mode, int milliseconds, int *timeleft)
fds[count].events = POLLIN;
count++;
}
- result = poll(fds, count, milliseconds);
+#ifdef NCURSES_WGETCH_EVENTS
+ if ((mode & 4) && evl) {
+ for (n = 0; n < evl->count; ++n) {
+ _nc_event *ev = evl->events[n];
+
+ if (ev->type == _NC_EVENT_FILE
+ && (ev->data.fev.flags & _NC_EVENT_FILE_READABLE)) {
+ fds[count].fd = ev->data.fev.fd;
+ fds[count].events = POLLIN;
+ count++;
+ }
+ }
+ }
+#endif
+
+ result = poll(fds, (unsigned) count, milliseconds);
+
+#ifdef NCURSES_WGETCH_EVENTS
+ if ((mode & 4) && evl) {
+ int c;
+
+ if (!result)
+ count = 0;
+
+ for (n = 0; n < evl->count; ++n) {
+ _nc_event *ev = evl->events[n];
+
+ if (ev->type == _NC_EVENT_FILE
+ && (ev->data.fev.flags & _NC_EVENT_FILE_READABLE)) {
+ ev->data.fev.result = 0;
+ for (c = 0; c < count; c++)
+ if (fds[c].fd == ev->data.fev.fd
+ && fds[c].revents & POLLIN) {
+ ev->data.fev.result |= _NC_EVENT_FILE_READABLE;
+ evl->result_flags |= _NC_EVENT_FILE_READABLE;
+ }
+ } else if (ev->type == _NC_EVENT_TIMEOUT_MSEC
+ && !result && timeout_is_event) {
+ evl->result_flags |= _NC_EVENT_TIMEOUT_MSEC;
+ }
+ }
+ }
+
+ if (fds != fd_list)
+ free((char *) fds);
+
+#endif
#elif defined(__BEOS__)
/*
@@ -157,26 +268,34 @@ _nc_timed_wait(int mode, int milliseconds, int *timeleft)
*
* FIXME: the return values from the ioctl aren't very clear if we get
* interrupted.
+ *
+ * FIXME: this assumes mode&1 if milliseconds < 0 (see lib_getch.c).
*/
result = 0;
if (mode & 1) {
+ int step = (milliseconds < 0) ? 0 : 5000;
bigtime_t d;
bigtime_t useconds = milliseconds * 1000;
int n, howmany;
- if (useconds == 0) /* we're here to go _through_ the loop */
+ if (useconds <= 0) /* we're here to go _through_ the loop */
useconds = 1;
- for (d = 0; d < useconds; d += 5000) {
+ for (d = 0; d < useconds; d += step) {
n = 0;
howmany = ioctl(0, 'ichr', &n);
if (howmany >= 0 && n > 0) {
result = 1;
break;
}
- if (useconds > 1)
- snooze(5000);
- milliseconds -= 5;
+ if (useconds > 1 && step > 0) {
+ snooze(step);
+ milliseconds -= (step / 1000);
+ if (milliseconds <= 0) {
+ milliseconds = 0;
+ break;
+ }
+ }
}
} else if (milliseconds > 0) {
snooze(milliseconds * 1000);
@@ -198,6 +317,19 @@ _nc_timed_wait(int mode, int milliseconds, int *timeleft)
FD_SET(fd, &set);
count = max(fd, count) + 1;
}
+#ifdef NCURSES_WGETCH_EVENTS
+ if ((mode & 4) && evl) {
+ for (n = 0; n < evl->count; ++n) {
+ _nc_event *ev = evl->events[n];
+
+ if (ev->type == _NC_EVENT_FILE
+ && (ev->data.fev.flags & _NC_EVENT_FILE_READABLE)) {
+ FD_SET(ev->data.fev.fd, &set);
+ count = max(ev->data.fev.fd + 1, count);
+ }
+ }
+ }
+#endif
if (milliseconds >= 0) {
struct timeval ntimeout;
@@ -207,14 +339,53 @@ _nc_timed_wait(int mode, int milliseconds, int *timeleft)
} else {
result = select(count, &set, NULL, NULL, NULL);
}
+
+#ifdef NCURSES_WGETCH_EVENTS
+ if ((mode & 4) && evl) {
+ evl->result_flags = 0;
+ for (n = 0; n < evl->count; ++n) {
+ _nc_event *ev = evl->events[n];
+
+ if (ev->type == _NC_EVENT_FILE
+ && (ev->data.fev.flags & _NC_EVENT_FILE_READABLE)) {
+ ev->data.fev.result = 0;
+ if (FD_ISSET(ev->data.fev.fd, &set)) {
+ ev->data.fev.result |= _NC_EVENT_FILE_READABLE;
+ evl->result_flags |= _NC_EVENT_FILE_READABLE;
+ }
+ } else if (ev->type == _NC_EVENT_TIMEOUT_MSEC
+ && !result && timeout_is_event)
+ evl->result_flags |= _NC_EVENT_TIMEOUT_MSEC;
+ }
+ }
#endif
+#endif /* USE_FUNC_POLL, etc */
+
returntime = _nc_gettime(FALSE);
if (milliseconds >= 0)
milliseconds -= (returntime - starttime);
-#if PRECISE_GETTIME
+#ifdef NCURSES_WGETCH_EVENTS
+ if (evl) {
+ evl->result_flags = 0;
+ for (n = 0; n < evl->count; ++n) {
+ _nc_event *ev = evl->events[n];
+
+ if (ev->type == _NC_EVENT_TIMEOUT_MSEC) {
+ long diff = (returntime - starttime);
+ if (ev->data.timeout_msec <= diff)
+ ev->data.timeout_msec = 0;
+ else
+ ev->data.timeout_msec -= diff;
+ }
+
+ }
+ }
+#endif
+
+#if PRECISE_GETTIME && HAVE_NANOSLEEP
/*
* If the timeout hasn't expired, and we've gotten no data,
* this is probably a system where 'select()' needs to be left
@@ -222,7 +393,7 @@ _nc_timed_wait(int mode, int milliseconds, int *timeleft)
* then come back for more.
*/
if (result == 0 && milliseconds > 100) {
- napms(100);
+ napms(100); /* FIXME: this won't be right if I recur! */
milliseconds -= 100;
goto retry;
}
@@ -245,7 +416,7 @@ _nc_timed_wait(int mode, int milliseconds, int *timeleft)
if (result > 0) {
result = 0;
#if USE_FUNC_POLL
- for (count = 0; count < 2; count++) {
+ for (count = 0; count < MIN_FDS; count++) {
if ((mode & (1 << count))
&& (fds[count].revents & POLLIN)) {
result |= (1 << count);
@@ -265,6 +436,10 @@ _nc_timed_wait(int mode, int milliseconds, int *timeleft)
} else
result = 0;
}
+#ifdef NCURSES_WGETCH_EVENTS
+ if ((mode & 4) && evl && evl->result_flags)
+ result |= 4;
+#endif
return (result);
}
diff --git a/contrib/ncurses/ncurses/tty/lib_vidattr.c b/contrib/ncurses/ncurses/tty/lib_vidattr.c
index 00611f4e1501..dbbbc978a054 100644
--- a/contrib/ncurses/ncurses/tty/lib_vidattr.c
+++ b/contrib/ncurses/ncurses/tty/lib_vidattr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -64,7 +65,7 @@
#include <curses.priv.h>
#include <term.h>
-MODULE_ID("$Id: lib_vidattr.c,v 1.39 2001/08/26 00:40:46 Philippe.Blain Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.46 2006/01/21 23:39:40 tom Exp $")
#define doPut(mode) TPUTS_TRACE(#mode); tputs(mode, 1, outc)
@@ -87,8 +88,7 @@ MODULE_ID("$Id: lib_vidattr.c,v 1.39 2001/08/26 00:40:46 Philippe.Blain Exp $")
}
NCURSES_EXPORT(int)
-vidputs
-(chtype newmode, int (*outc) (int))
+vidputs(chtype newmode, int (*outc) (int))
{
static attr_t previous_attr = A_NORMAL;
attr_t turn_on, turn_off;
@@ -105,15 +105,51 @@ vidputs
/* this allows us to go on whether or not newterm() has been called */
if (SP)
- previous_attr = SP->_current_attr;
+ previous_attr = AttrOf(SCREEN_ATTRS(SP));
TR(TRACE_ATTRS, ("previous attribute was %s", _traceattr(previous_attr)));
-#if !USE_XMC_SUPPORT
if ((SP != 0)
- && (magic_cookie_glitch > 0))
+ && (magic_cookie_glitch > 0)) {
+#if USE_XMC_SUPPORT
+ static chtype table[] =
+ {
+ A_STANDOUT,
+ A_UNDERLINE,
+ A_REVERSE,
+ A_BLINK,
+ A_DIM,
+ A_BOLD,
+ A_INVIS,
+ A_PROTECT,
+ };
+ unsigned n;
+ int used = 0;
+ int limit = (max_attributes <= 0) ? 1 : max_attributes;
+ chtype retain = 0;
+
+ /*
+ * Limit the number of attribute bits set in the newmode according to
+ * the terminfo max_attributes value.
+ */
+ for (n = 0; n < SIZEOF(table); ++n) {
+ if ((table[n] & SP->_ok_attributes) == 0) {
+ newmode &= ~table[n];
+ } else if ((table[n] & newmode) != 0) {
+ if (used++ >= limit) {
+ newmode &= ~table[n];
+ if (newmode == retain)
+ break;
+ } else {
+ retain = newmode;
+ }
+ }
+ }
+#else
newmode &= ~(SP->_xmc_suppress);
#endif
+ TR(TRACE_ATTRS, ("suppressed attribute is %s", _traceattr(newmode)));
+ }
/*
* If we have a terminal that cannot combine color with video
@@ -177,7 +213,7 @@ vidputs
TurnOff(A_STANDOUT, exit_standout_mode);
}
}
- previous_attr &= ~A_COLOR;
+ previous_attr &= ALL_BUT_COLOR;
}
SetColorsIf((pair != 0) || fix_pair0, previous_attr);
@@ -194,7 +230,7 @@ vidputs
(newmode & A_INVIS) != 0,
(newmode & A_PROTECT) != 0,
(newmode & A_ALTCHARSET) != 0), 1, outc);
- previous_attr &= ~A_COLOR;
+ previous_attr &= ALL_BUT_COLOR;
}
SetColorsIf((pair != 0) || fix_pair0, previous_attr);
} else {
@@ -213,8 +249,8 @@ vidputs
if (turn_off && exit_attribute_mode) {
doPut(exit_attribute_mode);
- turn_on |= (newmode & (chtype) (~A_COLOR));
- previous_attr &= ~A_COLOR;
+ turn_on |= (newmode & ALL_BUT_COLOR);
+ previous_attr &= ALL_BUT_COLOR;
}
SetColorsIf((pair != 0) || fix_pair0, previous_attr);
@@ -229,22 +265,12 @@ vidputs
TurnOn(A_PROTECT, enter_protected_mode);
TurnOn(A_INVIS, enter_secure_mode);
TurnOn(A_UNDERLINE, enter_underline_mode);
-#ifdef enter_horizontal_hl_mode
+#if USE_WIDEC_SUPPORT
TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode);
-#endif
-#ifdef enter_left_hl_mode
TurnOn(A_LEFT, enter_left_hl_mode);
-#endif
-#ifdef enter_low_hl_mode
TurnOn(A_LOW, enter_low_hl_mode);
-#endif
-#ifdef enter_right_hl_mode
TurnOn(A_RIGHT, enter_right_hl_mode);
-#endif
-#ifdef enter_top_hl_mode
TurnOn(A_TOP, enter_top_hl_mode);
-#endif
-#ifdef enter_vertical_hl_mode
TurnOn(A_VERTICAL, enter_vertical_hl_mode);
#endif
/* *INDENT-ON* */
@@ -255,7 +281,7 @@ vidputs
newmode |= A_REVERSE;
if (SP)
- SP->_current_attr = newmode;
+ SetAttr(SCREEN_ATTRS(SP), newmode);
else
previous_attr = newmode;
diff --git a/contrib/ncurses/ncurses/tty/tty_display.h b/contrib/ncurses/ncurses/tty/tty_display.h
index 8382c823f06a..4c45a08450ed 100644
--- a/contrib/ncurses/ncurses/tty/tty_display.h
+++ b/contrib/ncurses/ncurses/tty/tty_display.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2003,2004 Free 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,9 @@
#ifndef TTY_DISPLAY_H
#define TTY_DISPLAY_H 1
+/*
+ * $Id: tty_display.h,v 1.6 2005/01/01 23:41:12 tom Exp $
+ */
extern NCURSES_EXPORT(bool) _nc_tty_beep (void);
extern NCURSES_EXPORT(bool) _nc_tty_check_resize (void);
extern NCURSES_EXPORT(bool) _nc_tty_cursor (int);
@@ -111,11 +114,11 @@ struct tty_display_data {
: ((enter_insert_mode && exit_insert_mode) \
? D->_smir_cost + D->_rmir_cost + (D->_ip_cost * count) \
: ((insert_character != 0) \
- ? (D->_ich1_cost * count) \
+ ? ((D->_ich1_cost + D->_ip_cost) * count) \
: INFINITY)))
#if USE_XMC_SUPPORT
-#define UpdateAttrs(c) if (D->_current_attr != AttrOf(c)) { \
+#define UpdateAttrs(c) if (!SameAttrOf(D->_current_attr, AttrOf(c))) { \
attr_t chg = D->_current_attr; \
vidattr(AttrOf(c)); \
if (magic_cookie_glitch > 0 \
@@ -128,7 +131,7 @@ struct tty_display_data {
} \
}
#else
-#define UpdateAttrs(c) if (D->_current_attr != AttrOf(c)) \
+#define UpdateAttrs(c) if (!SameAttrOf(D->_current_attr, AttrOf(c))) \
vidattr(AttrOf(c));
#endif
diff --git a/contrib/ncurses/ncurses/tty/tty_update.c b/contrib/ncurses/ncurses/tty/tty_update.c
index e06de1b7da06..6926b56198d9 100644
--- a/contrib/ncurses/ncurses/tty/tty_update.c
+++ b/contrib/ncurses/ncurses/tty/tty_update.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,15 +29,16 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*-----------------------------------------------------------------
*
* lib_doupdate.c
*
- * The routine doupdate() and its dependents. Also _nc_outstr(),
- * so all physical output is concentrated here (except _nc_outch()
- * in lib_tputs.c).
+ * The routine doupdate() and its dependents.
+ * All physical output is concentrated here (except _nc_outch()
+ * in lib_tputs.c).
*
*-----------------------------------------------------------------*/
@@ -70,9 +71,10 @@
#endif
#endif
+#include <ctype.h>
#include <term.h>
-MODULE_ID("$Id: tty_update.c,v 1.174 2002/04/21 21:04:16 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.238 2006/11/25 22:33:21 tom Exp $")
/*
* This define controls the line-breakout optimization. Every once in a
@@ -87,6 +89,9 @@ MODULE_ID("$Id: tty_update.c,v 1.174 2002/04/21 21:04:16 tom Exp $")
#define FILL_BCE() (SP->_coloron && !SP->_default_color && !back_color_erase)
+static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
+static NCURSES_CH_T normal = NewChar(BLANK_TEXT);
+
/*
* Enable checking to see if doupdate and friends are tracking the true
* cursor position correctly. NOTE: this is a debugging hack which will
@@ -94,7 +99,7 @@ MODULE_ID("$Id: tty_update.c,v 1.174 2002/04/21 21:04:16 tom Exp $")
*/
/* #define POSITION_DEBUG */
-static inline NCURSES_CH_T ClrBlank(WINDOW *win);
+static NCURSES_INLINE NCURSES_CH_T ClrBlank(WINDOW *win);
static int ClrBottom(int total);
static void ClearScreen(NCURSES_CH_T blank);
static void ClrUpdate(void);
@@ -162,64 +167,131 @@ position_check(int expected_y, int expected_x, char *legend)
*
****************************************************************************/
-static inline void
+static NCURSES_INLINE void
GoTo(int const row, int const col)
{
- attr_t oldattr = SP->_current_attr;
-
TR(TRACE_MOVE, ("GoTo(%d, %d) from (%d, %d)",
row, col, SP->_cursrow, SP->_curscol));
position_check(SP->_cursrow, SP->_curscol, "GoTo");
- /*
- * Force restore even if msgr is on when we're in an alternate
- * character set -- these have a strong tendency to screw up the
- * CR & LF used for local character motions!
- */
- if ((oldattr & A_ALTCHARSET)
- || (oldattr && !move_standout_mode)) {
- TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move",
- oldattr, _traceattr(oldattr)));
- vidattr(A_NORMAL);
- }
-
mvcur(SP->_cursrow, SP->_curscol, row, col);
- SP->_cursrow = row;
- SP->_curscol = col;
position_check(SP->_cursrow, SP->_curscol, "GoTo2");
}
-static inline void
+static NCURSES_INLINE void
PutAttrChar(CARG_CH_T ch)
{
+ int chlen = 1;
+ NCURSES_CH_T my_ch;
PUTC_DATA;
NCURSES_CH_T tilde;
+ NCURSES_CH_T attr = CHDEREF(ch);
+ TR(TRACE_CHARPUT, ("PutAttrChar(%s) at (%d, %d)",
+ _tracech_t(ch),
+ SP->_cursrow, SP->_curscol));
+#if USE_WIDEC_SUPPORT
+ /*
+ * If this is not a valid character, there is nothing more to do.
+ */
+ if (isWidecExt(CHDEREF(ch))) {
+ TR(TRACE_CHARPUT, ("...skip"));
+ return;
+ }
+ /*
+ * 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) {
+ static const NCURSES_CH_T blank = NewChar(BLANK_TEXT);
+
+ /*
+ * If the character falls into any of these special cases, do
+ * not force the result to a blank:
+ *
+ * a) it is printable (this works around a bug in wcwidth()).
+ * b) use_legacy_coding() has been called to modify the treatment
+ * of codes 128-255.
+ * c) the acs_map[] has been initialized to allow codes 0-31
+ * to be rendered. This supports Linux console's "PC"
+ * characters. Codes 128-255 are allowed though this is
+ * not checked.
+ */
+ if (is8bits(CharOf(CHDEREF(ch)))
+ && (isprint(CharOf(CHDEREF(ch)))
+ || (SP->_legacy_coding > 0 && CharOf(CHDEREF(ch)) >= 160)
+ || (SP->_legacy_coding > 1 && CharOf(CHDEREF(ch)) >= 128)
+ || (AttrOf(attr) & A_ALTCHARSET
+ && ((CharOfD(ch) < ACS_LEN
+ && SP->_acs_map != 0
+ && SP->_acs_map[CharOfD(ch)] != 0)
+ || (CharOfD(ch) >= 128))))) {
+ ;
+ } else {
+ ch = CHREF(blank);
+ TR(TRACE_CHARPUT, ("forced to blank"));
+ }
+ chlen = 1;
+ }
+#endif
+
+ if ((AttrOf(attr) & A_ALTCHARSET)
+ && SP->_acs_map != 0
+ && CharOfD(ch) < ACS_LEN) {
+ my_ch = CHDEREF(ch); /* work around const param */
+#if USE_WIDEC_SUPPORT
+ /*
+ * This is crude & ugly, but works most of the time. It checks if the
+ * acs_chars string specified that we have a mapping for this
+ * character, and uses the wide-character mapping when we expect the
+ * normal one to be broken (by mis-design ;-).
+ */
+ if (SP->_screen_acs_fix
+ && SP->_screen_acs_map[CharOf(my_ch)]) {
+ RemAttr(attr, A_ALTCHARSET);
+ my_ch = _nc_wacs[CharOf(my_ch)];
+ }
+#endif
+ /*
+ * If we (still) have alternate character set, it is the normal 8bit
+ * flavor. The _screen_acs_map[] array tells if the character was
+ * really in acs_chars, needed because of the way wide/normal line
+ * drawing flavors are integrated.
+ */
+ if (AttrOf(attr) & A_ALTCHARSET) {
+ int j = CharOfD(ch);
+ chtype temp = UChar(SP->_acs_map[j]);
+
+ if (!(SP->_screen_acs_map[j])) {
+ RemAttr(attr, A_ALTCHARSET);
+ if (temp == 0)
+ temp = ' ';
+ }
+ if (temp != 0)
+ SetChar(my_ch, temp, AttrOf(attr));
+ }
+ ch = CHREF(my_ch);
+ }
if (tilde_glitch && (CharOfD(ch) == L('~'))) {
- SetChar(tilde, L('`'), AttrOfD(ch));
+ SetChar(tilde, L('`'), AttrOf(attr));
ch = CHREF(tilde);
}
- TR(TRACE_CHARPUT, ("PutAttrChar(%s) at (%d, %d)",
- _tracech_t(ch),
- SP->_cursrow, SP->_curscol));
- UpdateAttrs(AttrOfD(ch));
+ UpdateAttrs(attr);
#if !USE_WIDEC_SUPPORT
/* FIXME - we do this special case for signal handling, should see how to
* make it work for wide characters.
*/
if (SP->_outch != 0) {
- SP->_outch(ch);
+ SP->_outch(UChar(ch));
} else
#endif
{
PUTC(CHDEREF(ch), SP->_ofp); /* macro's fastest... */
-#ifdef TRACE
- _nc_outchars++;
-#endif /* TRACE */
+ TRACE_OUTCHARS(1);
}
- SP->_curscol++;
+ SP->_curscol += chlen;
if (char_padding) {
TPUTS_TRACE("char_padding");
putp(char_padding);
@@ -311,38 +383,48 @@ PutCharLR(const ARG_CH_T ch)
}
}
+/*
+ * Wrap the cursor position, i.e., advance to the beginning of the next line.
+ */
static void
wrap_cursor(void)
{
if (eat_newline_glitch) {
/*
- * xenl can manifest two different ways. The vt100
- * way is that, when you'd expect the cursor to wrap,
- * it stays hung at the right margin (on top of the
- * character just emitted) and doesn't wrap until the
- * *next* graphic char is emitted. The c100 way is
- * to ignore LF received just after an am wrap.
+ * xenl can manifest two different ways. The vt100 way is that, when
+ * you'd expect the cursor to wrap, it stays hung at the right margin
+ * (on top of the character just emitted) and doesn't wrap until the
+ * *next* graphic char is emitted. The c100 way is to ignore LF
+ * received just after an am wrap.
*
- * An aggressive way to handle this would be to
- * emit CR/LF after the char and then assume the wrap
- * is done, you're on the first position of the next
- * line, and the terminal out of its weird state.
- * Here it's safe to just tell the code that the
- * cursor is in hyperspace and let the next mvcur()
- * call straighten things out.
+ * An aggressive way to handle this would be to emit CR/LF after the
+ * char and then assume the wrap is done, you're on the first position
+ * of the next line, and the terminal out of its weird state. Here
+ * it's safe to just tell the code that the cursor is in hyperspace and
+ * let the next mvcur() call straighten things out.
*/
SP->_curscol = -1;
SP->_cursrow = -1;
} else if (auto_right_margin) {
SP->_curscol = 0;
SP->_cursrow++;
+ /*
+ * We've actually moved - but may have to work around problems with
+ * video attributes not working.
+ */
+ if (!move_standout_mode && AttrOf(SCREEN_ATTRS(SP))) {
+ TR(TRACE_CHARPUT, ("turning off (%#lx) %s before wrapping",
+ (unsigned long) AttrOf(SCREEN_ATTRS(SP)),
+ _traceattr(AttrOf(SCREEN_ATTRS(SP)))));
+ (void) VIDATTR(A_NORMAL, 0);
+ }
} else {
SP->_curscol--;
}
position_check(SP->_cursrow, SP->_curscol, "wrap_cursor");
}
-static inline void
+static NCURSES_INLINE void
PutChar(const ARG_CH_T ch)
/* insert character, handling automargin stuff */
{
@@ -363,18 +445,20 @@ PutChar(const ARG_CH_T ch)
* as A_REVERSE. All attribute flags which don't affect appearance of a space
* or can be output by clearing (A_COLOR in case of bce-terminal) are excluded.
*/
-static inline bool
+static NCURSES_INLINE bool
can_clear_with(ARG_CH_T ch)
{
if (!back_color_erase && SP->_coloron) {
#if NCURSES_EXT_FUNCS
+ int pair;
+
if (!SP->_default_color)
return FALSE;
if (SP->_default_fg != C_MASK || SP->_default_bg != C_MASK)
return FALSE;
- if (AttrOfD(ch) & A_COLOR) {
+ if ((pair = GetPair(CHDEREF(ch))) != 0) {
short fg, bg;
- pair_content(PAIR_NUMBER(AttrOfD(ch)), &fg, &bg);
+ pair_content(pair, &fg, &bg);
if (fg != C_MASK || bg != C_MASK)
return FALSE;
}
@@ -404,6 +488,8 @@ EmitRange(const NCURSES_CH_T * ntext, int num)
{
int i;
+ TR(TRACE_CHARPUT, ("EmitRange %d:%s", num, _nc_viscbuf(ntext, num)));
+
if (erase_chars || repeat_char) {
while (num > 0) {
int runcount;
@@ -435,8 +521,8 @@ EmitRange(const NCURSES_CH_T * ntext, int num)
if (erase_chars
&& runcount > SP->_ech_cost + SP->_cup_ch_cost
&& can_clear_with(CHREF(ntext0))) {
- UpdateAttrs(AttrOf(ntext0));
- putp(tparm(erase_chars, runcount));
+ UpdateAttrs(ntext0);
+ putp(TPARM_1(erase_chars, runcount));
/*
* If this is the last part of the given interval,
@@ -455,8 +541,9 @@ EmitRange(const NCURSES_CH_T * ntext, int num)
if (wrap_possible)
rep_count--;
- UpdateAttrs(AttrOf(ntext0));
- putp(tparm(repeat_char, CharOf(ntext0), rep_count));
+ UpdateAttrs(ntext0);
+ tputs(TPARM_2(repeat_char, CharOf(ntext0), rep_count),
+ rep_count, _nc_outch);
SP->_curscol += rep_count;
if (wrap_possible)
@@ -485,33 +572,37 @@ EmitRange(const NCURSES_CH_T * ntext, int num)
* Returns: same as EmitRange
*/
static int
-PutRange(
- const NCURSES_CH_T * otext,
- const NCURSES_CH_T * ntext,
- int row,
- int first, int last)
+PutRange(const NCURSES_CH_T * otext,
+ const NCURSES_CH_T * ntext,
+ int row,
+ int first, int last)
{
- int j, run;
+ int i, j, same;
TR(TRACE_CHARPUT, ("PutRange(%p, %p, %d, %d, %d)",
otext, ntext, row, first, last));
if (otext != ntext
&& (last - first + 1) > SP->_inline_cost) {
- for (j = first, run = 0; j <= last; j++) {
- if (!run && isnac(otext[j]))
+ for (j = first, same = 0; j <= last; j++) {
+ if (!same && isWidecExt(otext[j]))
continue;
if (CharEq(otext[j], ntext[j])) {
- run++;
+ same++;
} else {
- if (run > SP->_inline_cost) {
- int before_run = (j - run);
- EmitRange(ntext + first, before_run - first);
+ if (same > SP->_inline_cost) {
+ EmitRange(ntext + first, j - same - first);
GoTo(row, first = j);
}
- run = 0;
+ same = 0;
}
}
+ i = EmitRange(ntext + first, j - same - first);
+ /*
+ * Always return 1 for the next GoTo() after a PutRange() if we found
+ * identical characters at end of interval
+ */
+ return (same == 0 ? i : 1);
}
return EmitRange(ntext + first, last - first + 1);
}
@@ -580,17 +671,15 @@ doupdate(void)
#endif /* USE_TRACE_TIMES */
/*
- * This is the support for magic-cookie terminals. The
- * theory: we scan the virtual screen looking for attribute
- * turnons. Where we find one, check to make sure it's
- * realizable by seeing if the required number of
- * un-attributed blanks are present before and after the
- * attributed range; try to shift the range boundaries over
- * blanks (not changing the screen display) so this becomes
- * true. If it is, shift the beginning attribute change
- * appropriately (the end one, if we've gotten this far, is
- * guaranteed room for its cookie). If not, nuke the added
- * attributes out of the span.
+ * This is the support for magic-cookie terminals. The theory: we scan
+ * the virtual screen looking for attribute turnons. Where we find one,
+ * check to make sure it's realizable by seeing if the required number of
+ * un-attributed blanks are present before and after the attributed range;
+ * try to shift the range boundaries over blanks (not changing the screen
+ * display) so this becomes true. If it is, shift the beginning attribute
+ * change appropriately (the end one, if we've gotten this far, is
+ * guaranteed room for its cookie). If not, nuke the added attributes out
+ * of the span.
*/
#if USE_XMC_SUPPORT
if (magic_cookie_glitch > 0) {
@@ -600,11 +689,13 @@ doupdate(void)
for (i = 0; i < screen_lines; i++) {
for (j = 0; j < screen_columns; j++) {
bool failed = FALSE;
- attr_t turnon = AttrOf(newscr->_line[i].text[j]) & ~rattr;
+ NCURSES_CH_T *thisline = newscr->_line[i].text;
+ attr_t thisattr = AttrOf(thisline[j]) & SP->_xmc_triggers;
+ attr_t turnon = thisattr & ~rattr;
/* is an attribute turned on here? */
if (turnon == 0) {
- rattr = AttrOf(newscr->_line[i].text[j]);
+ rattr = thisattr;
continue;
}
@@ -612,23 +703,33 @@ doupdate(void)
TR(TRACE_ATTRS, ("...to %s", _traceattr(turnon)));
/*
- * If the attribute change location is a blank with a
- * "safe" attribute, undo the attribute turnon. This may
- * ensure there's enough room to set the attribute before
- * the first non-blank in the run.
+ * If the attribute change location is a blank with a "safe"
+ * attribute, undo the attribute turnon. This may ensure
+ * there's enough room to set the attribute before the first
+ * non-blank in the run.
*/
-#define SAFE(a) (!((a) & (attr_t)~NONBLANK_ATTR))
- if (ISBLANK(newscr->_line[i].text[j]) && SAFE(turnon)) {
- RemAttr(newscr->_line[i].text[j], turnon);
+#define SAFE(a) (!((a) & SP->_xmc_triggers))
+ if (ISBLANK(thisline[j]) && SAFE(turnon)) {
+ RemAttr(thisline[j], turnon);
continue;
}
/* check that there's enough room at start of span */
for (k = 1; k <= magic_cookie_glitch; k++) {
if (j - k < 0
- || !ISBLANK(newscr->_line[i].text[j - k])
- || !SAFE(AttrOf(newscr->_line[i].text[j - k])))
+ || !ISBLANK(thisline[j - k])
+ || !SAFE(AttrOf(thisline[j - k]))) {
failed = TRUE;
+ TR(TRACE_ATTRS, ("No room at start in %d,%d%s%s",
+ i, j - k,
+ (ISBLANK(thisline[j - k])
+ ? ""
+ : ":nonblank"),
+ (SAFE(AttrOf(thisline[j - k]))
+ ? ""
+ : ":unsafe")));
+ break;
+ }
}
if (!failed) {
bool end_onscreen = FALSE;
@@ -637,7 +738,8 @@ doupdate(void)
/* find end of span, if it's onscreen */
for (m = i; m < screen_lines; m++) {
for (; n < screen_columns; n++) {
- if (AttrOf(newscr->_line[m].text[n]) == rattr) {
+ attr_t testattr = AttrOf(newscr->_line[m].text[n]);
+ if ((testattr & SP->_xmc_triggers) == rattr) {
end_onscreen = TRUE;
TR(TRACE_ATTRS,
("Range attributed with %s ends at (%d, %d)",
@@ -656,22 +758,34 @@ doupdate(void)
NCURSES_CH_T *lastline = newscr->_line[m].text;
/*
- * If there are safely-attributed blanks at the
- * end of the range, shorten the range. This will
- * help ensure that there is enough room at end
- * of span.
+ * If there are safely-attributed blanks at the end of
+ * the range, shorten the range. This will help ensure
+ * that there is enough room at end of span.
*/
while (n >= 0
&& ISBLANK(lastline[n])
- && SAFE(AttrOf(lastline[n])))
+ && SAFE(AttrOf(lastline[n]))) {
RemAttr(lastline[n--], turnon);
+ }
/* check that there's enough room at end of span */
- for (k = 1; k <= magic_cookie_glitch; k++)
+ for (k = 1; k <= magic_cookie_glitch; k++) {
if (n + k >= screen_columns
|| !ISBLANK(lastline[n + k])
- || !SAFE(AttrOf(lastline[n + k])))
+ || !SAFE(AttrOf(lastline[n + k]))) {
failed = TRUE;
+ TR(TRACE_ATTRS,
+ ("No room at end in %d,%d%s%s",
+ i, j - k,
+ (ISBLANK(lastline[n + k])
+ ? ""
+ : ":nonblank"),
+ (SAFE(AttrOf(lastline[n + k]))
+ ? ""
+ : ":unsafe")));
+ break;
+ }
+ }
}
}
@@ -685,7 +799,8 @@ doupdate(void)
/* turn off new attributes over span */
for (p = i; p < screen_lines; p++) {
for (; q < screen_columns; q++) {
- if (AttrOf(newscr->_line[p].text[q]) == rattr)
+ attr_t testattr = AttrOf(newscr->_line[p].text[q]);
+ if ((testattr & SP->_xmc_triggers) == rattr)
goto foundend;
RemAttr(newscr->_line[p].text[q], turnon);
}
@@ -698,14 +813,14 @@ doupdate(void)
_traceattr(turnon), i, j));
/*
- * back up the start of range so there's room
- * for cookies before the first nonblank character
+ * Back up the start of range so there's room for cookies
+ * before the first nonblank character.
*/
for (k = 1; k <= magic_cookie_glitch; k++)
- AddAttr(newscr->_line[i].text[j - k], turnon);
+ AddAttr(thisline[j - k], turnon);
}
- rattr = AttrOf(newscr->_line[i].text[j]);
+ rattr = thisattr;
}
}
@@ -789,13 +904,18 @@ doupdate(void)
cleanup:
/*
- * Keep the physical screen in normal mode in case we get other
- * processes writing to the screen.
+ * We would like to keep the physical screen in normal mode in case we get
+ * other processes writing to the screen. This goal cannot be met for
+ * magic cookies since it interferes with attributes that may propagate
+ * past the current position.
*/
- UpdateAttrs(A_NORMAL);
+#if USE_XMC_SUPPORT
+ if (magic_cookie_glitch != 0)
+#endif
+ UpdateAttrs(normal);
_nc_flush();
- curscr->_attrs = newscr->_attrs;
+ WINDOW_ATTRS(curscr) = WINDOW_ATTRS(newscr);
#if USE_TRACE_TIMES
(void) times(&after);
@@ -824,10 +944,10 @@ doupdate(void)
#define BCE_ATTRS (A_NORMAL|A_COLOR)
#define BCE_BKGD(win) (((win) == curscr ? stdscr : (win))->_nc_bkgd)
-static inline NCURSES_CH_T
+static NCURSES_INLINE NCURSES_CH_T
ClrBlank(WINDOW *win)
{
- NCURSES_CH_T blank = NewChar(BLANK_TEXT);
+ NCURSES_CH_T blank = blankchar;
if (back_color_erase)
AddAttr(blank, (AttrOf(BCE_BKGD(win)) & BCE_ATTRS));
return blank;
@@ -887,14 +1007,14 @@ ClrToEOL(NCURSES_CH_T blank, bool needclear)
}
if (needclear) {
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("clr_eol");
- if (SP->_el_cost > (screen_columns - SP->_curscol)) {
+ if (clr_eol && SP->_el_cost <= (screen_columns - SP->_curscol)) {
+ putp(clr_eol);
+ } else {
int count = (screen_columns - SP->_curscol);
while (count-- > 0)
PutChar(CHREF(blank));
- } else {
- putp(clr_eol);
}
}
}
@@ -913,7 +1033,7 @@ ClrToEOS(NCURSES_CH_T blank)
row = SP->_cursrow;
col = SP->_curscol;
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("clr_eos");
tputs(clr_eos, screen_lines - row, _nc_outch);
@@ -940,7 +1060,7 @@ ClrBottom(int total)
int col;
int top = total;
int last = min(screen_columns, newscr->_maxx + 1);
- NCURSES_CH_T blank = ClrBlank(stdscr);
+ NCURSES_CH_T blank = newscr->_line[total - 1].text[last - 1];
bool ok;
if (clr_eos && can_clear_with(CHREF(blank))) {
@@ -960,29 +1080,22 @@ ClrBottom(int total)
}
/* don't use clr_eos for just one line if clr_eol available */
- if (top < total - 1 || (top < total && !clr_eol && !clr_bol)) {
+ if (top < total) {
GoTo(top, 0);
ClrToEOS(blank);
- total = top;
if (SP->oldhash && SP->newhash) {
for (row = top; row < screen_lines; row++)
SP->oldhash[row] = SP->newhash[row];
}
}
}
- return total;
+ return top;
}
#if USE_XMC_SUPPORT
#if USE_WIDEC_SUPPORT
-static inline bool
-check_xmc_transition(NCURSES_CH_T * a, NCURSES_CH_T * b)
-{
- if (((a->attr ^ b->attr) & ~(a->attr) & SP->_xmc_triggers) != 0) {
- return TRUE;
- }
- return FALSE;
-}
+#define check_xmc_transition(a, b) \
+ ((((a)->attr ^ (b)->attr) & ~((a)->attr) & SP->_xmc_triggers) != 0)
#define xmc_turn_on(a,b) check_xmc_transition(&(a), &(b))
#else
#define xmc_turn_on(a,b) ((((a)^(b)) & ~(a) & SP->_xmc_triggers) != 0)
@@ -1019,14 +1132,12 @@ TransformLine(int const lineno)
int n;
bool attrchanged = FALSE;
- TR(TRACE_UPDATE, ("TransformLine(%d) called", lineno));
+ TR(TRACE_UPDATE, (T_CALLED("TransformLine(%d)"), lineno));
/* copy new hash value to old one */
if (SP->oldhash && SP->newhash)
SP->oldhash[lineno] = SP->newhash[lineno];
-#define ColorOf(n) (AttrOf(n) & A_COLOR)
-#define unColor(n) (AttrOf(n) & ALL_BUT_COLOR)
/*
* If we have colors, there is the possibility of having two color pairs
* that display as the same colors. For instance, Lynx does this. Check
@@ -1034,24 +1145,19 @@ TransformLine(int const lineno)
* they are equivalent.
*/
if (SP->_coloron) {
- attr_t oldColor;
- attr_t newColor;
int oldPair;
int newPair;
for (n = 0; n < screen_columns; n++) {
if (!CharEq(newLine[n], oldLine[n])) {
- oldColor = ColorOf(oldLine[n]);
- newColor = ColorOf(newLine[n]);
- if (oldColor != newColor
+ oldPair = GetPair(oldLine[n]);
+ newPair = GetPair(newLine[n]);
+ if (oldPair != newPair
&& unColor(oldLine[n]) == unColor(newLine[n])) {
- oldPair = PAIR_NUMBER(oldColor);
- newPair = PAIR_NUMBER(newColor);
if (oldPair < COLOR_PAIRS
&& newPair < COLOR_PAIRS
&& SP->_color_pairs[oldPair] == SP->_color_pairs[newPair]) {
- RemAttr(oldLine[n], A_COLOR);
- AddAttr(oldLine[n], ColorOf(newLine[n]));
+ SetPair(oldLine[n], GetPair(newLine[n]));
}
}
}
@@ -1061,8 +1167,10 @@ TransformLine(int const lineno)
if (ceol_standout_glitch && clr_eol) {
firstChar = 0;
while (firstChar < screen_columns) {
- if (AttrOf(newLine[firstChar]) != AttrOf(oldLine[firstChar]))
+ if (!SameAttrOf(newLine[firstChar], oldLine[firstChar])) {
attrchanged = TRUE;
+ break;
+ }
firstChar++;
}
}
@@ -1125,17 +1233,9 @@ TransformLine(int const lineno)
} else {
NCURSES_CH_T blank;
- /* find the first differing character */
- while (firstChar < screen_columns &&
- CharEq(newLine[firstChar], oldLine[firstChar]))
- firstChar++;
-
- /* if there wasn't one, we're done */
- if (firstChar >= screen_columns)
- return;
-
/* it may be cheap to clear leading whitespace with clr_bol */
- if (clr_bol && (blank = newLine[0], can_clear_with(CHREF(blank)))) {
+ blank = newLine[0];
+ if (clr_bol && can_clear_with(CHREF(blank))) {
int oFirstChar, nFirstChar;
for (oFirstChar = 0; oFirstChar < screen_columns; oFirstChar++)
@@ -1145,25 +1245,44 @@ TransformLine(int const lineno)
if (!CharEq(newLine[nFirstChar], blank))
break;
- if (nFirstChar > oFirstChar + SP->_el1_cost) {
- if (nFirstChar >= screen_columns && SP->_el_cost <= SP->_el1_cost) {
- GoTo(lineno, 0);
- UpdateAttrs(AttrOf(blank));
- TPUTS_TRACE("clr_eol");
- putp(clr_eol);
- } else {
- GoTo(lineno, nFirstChar - 1);
- UpdateAttrs(AttrOf(blank));
- TPUTS_TRACE("clr_bol");
- putp(clr_bol);
- }
-
- while (firstChar < nFirstChar)
- oldLine[firstChar++] = blank;
+ if (nFirstChar == oFirstChar) {
+ firstChar = nFirstChar;
+ /* find the first differing character */
+ while (firstChar < screen_columns
+ && CharEq(newLine[firstChar], oldLine[firstChar]))
+ firstChar++;
+ } else if (oFirstChar > nFirstChar) {
+ firstChar = nFirstChar;
+ } else { /* oFirstChar < nFirstChar */
+ firstChar = oFirstChar;
+ if (SP->_el1_cost < nFirstChar - oFirstChar) {
+ if (nFirstChar >= screen_columns
+ && SP->_el_cost <= SP->_el1_cost) {
+ GoTo(lineno, 0);
+ UpdateAttrs(blank);
+ TPUTS_TRACE("clr_eol");
+ putp(clr_eol);
+ } else {
+ GoTo(lineno, nFirstChar - 1);
+ UpdateAttrs(blank);
+ TPUTS_TRACE("clr_bol");
+ putp(clr_bol);
+ }
- if (firstChar >= screen_columns)
- return;
+ while (firstChar < nFirstChar)
+ oldLine[firstChar++] = blank;
+ }
}
+ } else {
+ /* find the first differing character */
+ while (firstChar < screen_columns
+ && CharEq(newLine[firstChar], oldLine[firstChar]))
+ firstChar++;
+ }
+ /* if there wasn't one, we're done */
+ if (firstChar >= screen_columns) {
+ TR(TRACE_UPDATE, (T_RETURN("")));
+ return;
}
blank = newLine[screen_columns - 1];
@@ -1183,6 +1302,7 @@ TransformLine(int const lineno)
newLine + firstChar,
(nLastChar - firstChar + 1) * sizeof(NCURSES_CH_T));
}
+ TR(TRACE_UPDATE, (T_RETURN("")));
return;
}
@@ -1222,7 +1342,7 @@ TransformLine(int const lineno)
/* can be -1 if no characters differ */
while (CharEq(newLine[nLastChar], oldLine[oLastChar])) {
/* don't split a wide char */
- if (isnac(newLine[nLastChar]) &&
+ if (isWidecExt(newLine[nLastChar]) &&
!CharEq(newLine[nLastChar - 1], oldLine[oLastChar - 1]))
break;
nLastChar--;
@@ -1239,9 +1359,15 @@ TransformLine(int const lineno)
if (oLastChar < nLastChar) {
int m = max(nLastNonblank, oLastNonblank);
+#if USE_WIDEC_SUPPORT
+ while (isWidecExt(newLine[n + 1]) && n) {
+ --n;
+ --oLastChar;
+ }
+#endif
GoTo(lineno, n + 1);
- if (InsCharCost(nLastChar - oLastChar)
- > (m - n)) {
+ if ((nLastChar < nLastNonblank)
+ || InsCharCost(nLastChar - oLastChar) > (m - n)) {
PutRange(oldLine, newLine, lineno, n + 1, m);
} else {
InsStr(&newLine[n + 1], nLastChar - oLastChar);
@@ -1263,7 +1389,7 @@ TransformLine(int const lineno)
* setting the video attributes from
* the last character on the row.
*/
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
DelChar(oLastChar - nLastChar);
}
}
@@ -1275,6 +1401,8 @@ TransformLine(int const lineno)
memcpy(oldLine + firstChar,
newLine + firstChar,
(screen_columns - firstChar) * sizeof(NCURSES_CH_T));
+ TR(TRACE_UPDATE, (T_RETURN("")));
+ return;
}
/*
@@ -1295,7 +1423,7 @@ ClearScreen(NCURSES_CH_T blank)
#if NCURSES_EXT_FUNCS
if (SP->_coloron
&& !SP->_default_color) {
- _nc_do_color((int) COLOR_PAIR(SP->_current_attr), 0, FALSE, _nc_outch);
+ _nc_do_color(GET_SCREEN_PAIR(SP), 0, FALSE, _nc_outch);
if (!back_color_erase) {
fast_clear = FALSE;
}
@@ -1304,7 +1432,7 @@ ClearScreen(NCURSES_CH_T blank)
if (fast_clear) {
if (clear_screen) {
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("clear_screen");
putp(clear_screen);
SP->_cursrow = SP->_curscol = 0;
@@ -1313,13 +1441,13 @@ ClearScreen(NCURSES_CH_T blank)
SP->_cursrow = SP->_curscol = -1;
GoTo(0, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("clr_eos");
- putp(clr_eos);
+ tputs(clr_eos, screen_lines, _nc_outch);
} else if (clr_eol) {
SP->_cursrow = SP->_curscol = -1;
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
for (i = 0; i < screen_lines; i++) {
GoTo(i, 0);
TPUTS_TRACE("clr_eol");
@@ -1328,7 +1456,7 @@ ClearScreen(NCURSES_CH_T blank)
GoTo(0, 0);
}
} else {
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
for (i = 0; i < screen_lines; i++) {
GoTo(i, 0);
for (j = 0; j < screen_columns; j++)
@@ -1362,7 +1490,7 @@ InsStr(NCURSES_CH_T * line, int count)
/* The order must match that of InsCharCost. */
if (parm_ich) {
TPUTS_TRACE("parm_ich");
- tputs(tparm(parm_ich, count), count, _nc_outch);
+ tputs(TPARM_1(parm_ich, count), count, _nc_outch);
while (count) {
PutAttrChar(CHREF(*line));
line++;
@@ -1410,12 +1538,14 @@ DelChar(int count)
{
int n;
- TR(TRACE_UPDATE, ("DelChar(%d) called, position = (%d,%d)", count,
- newscr->_cury, newscr->_curx));
+ TR(TRACE_UPDATE, ("DelChar(%d) called, position = (%ld,%ld)",
+ count,
+ (long) newscr->_cury,
+ (long) newscr->_curx));
if (parm_dch) {
TPUTS_TRACE("parm_dch");
- tputs(tparm(parm_dch, count), count, _nc_outch);
+ tputs(TPARM_1(parm_dch, count), count, _nc_outch);
} else {
for (n = 0; n < count; n++) {
TPUTS_TRACE("delete_character");
@@ -1425,19 +1555,6 @@ DelChar(int count)
}
/*
-** _nc_outstr(char *str)
-**
-** Emit a string without waiting for update.
-*/
-
-NCURSES_EXPORT(void)
-_nc_outstr(const char *str)
-{
- (void) putp(str);
- _nc_flush();
-}
-
-/*
* Physical-scrolling support
*
* This code was adapted from Keith Bostic's hardware scrolling
@@ -1473,47 +1590,48 @@ _nc_outstr(const char *str)
static int
scroll_csr_forward(int n, int top, int bot, int miny, int maxy, NCURSES_CH_T blank)
{
- int i, j;
+ int i;
if (n == 1 && scroll_forward && top == miny && bot == maxy) {
GoTo(bot, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("scroll_forward");
- tputs(scroll_forward, 0, _nc_outch);
+ putp(scroll_forward);
} else if (n == 1 && delete_line && bot == maxy) {
GoTo(top, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("delete_line");
- tputs(delete_line, 0, _nc_outch);
+ putp(delete_line);
} else if (parm_index && top == miny && bot == maxy) {
GoTo(bot, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("parm_index");
- tputs(tparm(parm_index, n, 0), n, _nc_outch);
+ tputs(TPARM_2(parm_index, n, 0), n, _nc_outch);
} else if (parm_delete_line && bot == maxy) {
GoTo(top, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("parm_delete_line");
- tputs(tparm(parm_delete_line, n, 0), n, _nc_outch);
+ tputs(TPARM_2(parm_delete_line, n, 0), n, _nc_outch);
} else if (scroll_forward && top == miny && bot == maxy) {
GoTo(bot, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
for (i = 0; i < n; i++) {
TPUTS_TRACE("scroll_forward");
- tputs(scroll_forward, 0, _nc_outch);
+ putp(scroll_forward);
}
} else if (delete_line && bot == maxy) {
GoTo(top, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
for (i = 0; i < n; i++) {
TPUTS_TRACE("delete_line");
- tputs(delete_line, 0, _nc_outch);
+ putp(delete_line);
}
} else
return ERR;
#if NCURSES_EXT_FUNCS
if (FILL_BCE()) {
+ int j;
for (i = 0; i < n; i++) {
GoTo(bot - i, 0);
for (j = 0; j < screen_columns; j++)
@@ -1530,47 +1648,48 @@ static int
scroll_csr_backward(int n, int top, int bot, int miny, int maxy,
NCURSES_CH_T blank)
{
- int i, j;
+ int i;
if (n == 1 && scroll_reverse && top == miny && bot == maxy) {
GoTo(top, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("scroll_reverse");
- tputs(scroll_reverse, 0, _nc_outch);
+ putp(scroll_reverse);
} else if (n == 1 && insert_line && bot == maxy) {
GoTo(top, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("insert_line");
- tputs(insert_line, 0, _nc_outch);
+ putp(insert_line);
} else if (parm_rindex && top == miny && bot == maxy) {
GoTo(top, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("parm_rindex");
- tputs(tparm(parm_rindex, n, 0), n, _nc_outch);
+ tputs(TPARM_2(parm_rindex, n, 0), n, _nc_outch);
} else if (parm_insert_line && bot == maxy) {
GoTo(top, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
TPUTS_TRACE("parm_insert_line");
- tputs(tparm(parm_insert_line, n, 0), n, _nc_outch);
+ tputs(TPARM_2(parm_insert_line, n, 0), n, _nc_outch);
} else if (scroll_reverse && top == miny && bot == maxy) {
GoTo(top, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
for (i = 0; i < n; i++) {
TPUTS_TRACE("scroll_reverse");
- tputs(scroll_reverse, 0, _nc_outch);
+ putp(scroll_reverse);
}
} else if (insert_line && bot == maxy) {
GoTo(top, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
for (i = 0; i < n; i++) {
TPUTS_TRACE("insert_line");
- tputs(insert_line, 0, _nc_outch);
+ putp(insert_line);
}
} else
return ERR;
#if NCURSES_EXT_FUNCS
if (FILL_BCE()) {
+ int j;
for (i = 0; i < n; i++) {
GoTo(top + i, 0);
for (j = 0; j < screen_columns; j++)
@@ -1592,41 +1711,48 @@ scroll_idl(int n, int del, int ins, NCURSES_CH_T blank)
return ERR;
GoTo(del, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
if (n == 1 && delete_line) {
TPUTS_TRACE("delete_line");
- tputs(delete_line, 0, _nc_outch);
+ putp(delete_line);
} else if (parm_delete_line) {
TPUTS_TRACE("parm_delete_line");
- tputs(tparm(parm_delete_line, n, 0), n, _nc_outch);
+ tputs(TPARM_2(parm_delete_line, n, 0), n, _nc_outch);
} else { /* if (delete_line) */
for (i = 0; i < n; i++) {
TPUTS_TRACE("delete_line");
- tputs(delete_line, 0, _nc_outch);
+ putp(delete_line);
}
}
GoTo(ins, 0);
- UpdateAttrs(AttrOf(blank));
+ UpdateAttrs(blank);
if (n == 1 && insert_line) {
TPUTS_TRACE("insert_line");
- tputs(insert_line, 0, _nc_outch);
+ putp(insert_line);
} else if (parm_insert_line) {
TPUTS_TRACE("parm_insert_line");
- tputs(tparm(parm_insert_line, n, 0), n, _nc_outch);
+ tputs(TPARM_2(parm_insert_line, n, 0), n, _nc_outch);
} else { /* if (insert_line) */
for (i = 0; i < n; i++) {
TPUTS_TRACE("insert_line");
- tputs(insert_line, 0, _nc_outch);
+ putp(insert_line);
}
}
return OK;
}
+/*
+ * Note: some terminals require the cursor to be within the scrolling margins
+ * before setting them. Generally, the cursor must be at the appropriate end
+ * of the scrolling margins when issuing an indexing operation (it is not
+ * apparent whether it must also be at the left margin; we do this just to be
+ * safe). To make the related cursor movement a little faster, we use the
+ * save/restore cursor capabilities if the terminal has them.
+ */
NCURSES_EXPORT(int)
-_nc_scrolln
-(int n, int top, int bot, int maxy)
+_nc_scrolln(int n, int top, int bot, int maxy)
/* scroll region from top to bot by n lines */
{
NCURSES_CH_T blank = ClrBlank(stdscr);
@@ -1658,13 +1784,13 @@ _nc_scrolln
&& save_cursor && restore_cursor) {
cursor_saved = TRUE;
TPUTS_TRACE("save_cursor");
- tputs(save_cursor, 0, _nc_outch);
+ putp(save_cursor);
}
TPUTS_TRACE("change_scroll_region");
- tputs(tparm(change_scroll_region, top, bot), 0, _nc_outch);
+ putp(TPARM_2(change_scroll_region, top, bot));
if (cursor_saved) {
TPUTS_TRACE("restore_cursor");
- tputs(restore_cursor, 0, _nc_outch);
+ putp(restore_cursor);
} else {
SP->_cursrow = SP->_curscol = -1;
}
@@ -1672,7 +1798,7 @@ _nc_scrolln
res = scroll_csr_forward(n, top, bot, top, bot, blank);
TPUTS_TRACE("change_scroll_region");
- tputs(tparm(change_scroll_region, 0, maxy), 0, _nc_outch);
+ putp(TPARM_2(change_scroll_region, 0, maxy));
SP->_cursrow = SP->_curscol = -1;
}
@@ -1684,9 +1810,9 @@ _nc_scrolln
*/
if (res != ERR
&& (non_dest_scroll_region || (memory_below && bot == maxy))) {
- NCURSES_CH_T blank2 = NewChar(BLANK_TEXT);
+ static const NCURSES_CH_T blank2 = NewChar(BLANK_TEXT);
if (bot == maxy && clr_eos) {
- GoTo(bot - n, 0);
+ GoTo(bot - n + 1, 0);
ClrToEOS(blank2);
} else {
for (i = 0; i < n; i++) {
@@ -1704,13 +1830,13 @@ _nc_scrolln
&& save_cursor && restore_cursor) {
cursor_saved = TRUE;
TPUTS_TRACE("save_cursor");
- tputs(save_cursor, 0, _nc_outch);
+ putp(save_cursor);
}
TPUTS_TRACE("change_scroll_region");
- tputs(tparm(change_scroll_region, top, bot), 0, _nc_outch);
+ putp(TPARM_2(change_scroll_region, top, bot));
if (cursor_saved) {
TPUTS_TRACE("restore_cursor");
- tputs(restore_cursor, 0, _nc_outch);
+ putp(restore_cursor);
} else {
SP->_cursrow = SP->_curscol = -1;
}
@@ -1718,7 +1844,7 @@ _nc_scrolln
res = scroll_csr_backward(-n, top, bot, top, bot, blank);
TPUTS_TRACE("change_scroll_region");
- tputs(tparm(change_scroll_region, 0, maxy), 0, _nc_outch);
+ putp(TPARM_2(change_scroll_region, 0, maxy));
SP->_cursrow = SP->_curscol = -1;
}
@@ -1730,7 +1856,7 @@ _nc_scrolln
*/
if (res != ERR
&& (non_dest_scroll_region || (memory_above && top == 0))) {
- NCURSES_CH_T blank2 = NewChar(BLANK_TEXT);
+ static const NCURSES_CH_T blank2 = NewChar(BLANK_TEXT);
for (i = 0; i < -n; i++) {
GoTo(i + top, 0);
ClrToEOL(blank2, FALSE);
@@ -1753,11 +1879,27 @@ NCURSES_EXPORT(void)
_nc_screen_resume(void)
{
/* make sure terminal is in a sane known state */
- SP->_current_attr = A_NORMAL;
+ SetAttr(SCREEN_ATTRS(SP), A_NORMAL);
newscr->_clear = TRUE;
- if (SP->_coloron == TRUE && orig_pair)
- putp(orig_pair);
+ /* reset color pairs and definitions */
+ if (SP->_coloron || SP->_color_defs)
+ _nc_reset_colors();
+
+ /* restore user-defined colors, if any */
+ if (SP->_color_defs < 0) {
+ int n;
+ SP->_color_defs = -(SP->_color_defs);
+ for (n = 0; n < SP->_color_defs; ++n) {
+ if (SP->_color_table[n].init) {
+ init_color(n,
+ SP->_color_table[n].r,
+ SP->_color_table[n].g,
+ SP->_color_table[n].b);
+ }
+ }
+ }
+
if (exit_attribute_mode)
putp(exit_attribute_mode);
else {
@@ -1785,29 +1927,30 @@ _nc_screen_init(void)
NCURSES_EXPORT(void)
_nc_screen_wrap(void)
{
- UpdateAttrs(A_NORMAL);
+ UpdateAttrs(normal);
#if NCURSES_EXT_FUNCS
if (SP->_coloron
&& !SP->_default_color) {
- NCURSES_CH_T blank = NewChar(BLANK_TEXT);
+ static const NCURSES_CH_T blank = NewChar(BLANK_TEXT);
SP->_default_color = TRUE;
_nc_do_color(-1, 0, FALSE, _nc_outch);
SP->_default_color = FALSE;
mvcur(SP->_cursrow, SP->_curscol, screen_lines - 1, 0);
- SP->_cursrow = screen_lines - 1;
- SP->_curscol = 0;
ClrToEOL(blank, TRUE);
}
#endif
+ if (SP->_color_defs) {
+ _nc_reset_colors();
+ }
}
#if USE_XMC_SUPPORT
NCURSES_EXPORT(void)
_nc_do_xmc_glitch(attr_t previous)
{
- attr_t chg = XMC_CHANGES(previous ^ SP->_current_attr);
+ attr_t chg = XMC_CHANGES(previous ^ AttrOf(SCREEN_ATTRS(SP)));
while (chg != 0) {
if (chg & 1) {
diff --git a/contrib/ncurses/ncurses/widechar/charable.c b/contrib/ncurses/ncurses/widechar/charable.c
new file mode 100644
index 000000000000..cf7240780883
--- /dev/null
+++ b/contrib/ncurses/ncurses/widechar/charable.c
@@ -0,0 +1,80 @@
+/****************************************************************************
+ * Copyright (c) 2003-2004,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 *
+ * "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. *
+ ****************************************************************************/
+
+/*
+** Support functions for wide/narrow conversion.
+*/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: charable.c,v 1.4 2005/04/16 18:08:56 tom Exp $")
+
+NCURSES_EXPORT(bool) _nc_is_charable(wchar_t ch)
+{
+ bool result;
+#if HAVE_WCTOB
+ result = (wctob((wint_t) ch) == ch);
+#else
+ result = (_nc_to_char(ch) >= 0);
+#endif
+ return result;
+}
+
+NCURSES_EXPORT(int) _nc_to_char(wint_t ch)
+{
+ int result;
+#if HAVE_WCTOB
+ result = wctob(ch);
+#elif HAVE_WCTOMB
+ char temp[MB_LEN_MAX];
+ result = wctomb(temp, ch);
+ if (strlen(temp) == 1)
+ result = UChar(temp[0]);
+ else
+ result = -1;
+#endif
+ return result;
+}
+
+NCURSES_EXPORT(wint_t) _nc_to_widechar(int ch)
+{
+ wint_t result;
+#if HAVE_BTOWC
+ result = btowc(ch);
+#elif HAVE_MBTOWC
+ wchar_t convert;
+ char temp[2];
+ temp[0] = ch;
+ temp[1] = '\0';
+ if (mbtowc(&convert, temp, 1) >= 0)
+ result = convert;
+ else
+ result = WEOF;
+#endif
+ return result;
+}
diff --git a/contrib/ncurses/ncurses/widechar/lib_add_wch.c b/contrib/ncurses/ncurses/widechar/lib_add_wch.c
new file mode 100644
index 000000000000..93b41bb4930c
--- /dev/null
+++ b/contrib/ncurses/ncurses/widechar/lib_add_wch.c
@@ -0,0 +1,113 @@
+/****************************************************************************
+ * Copyright (c) 2004,2006 Free Software 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. *
+ ****************************************************************************/
+
+/*
+** lib_add_wch.c
+**
+** The routine wadd_wch().
+**
+*/
+
+#include <curses.priv.h>
+
+MODULE_ID("$Id: lib_add_wch.c,v 1.6 2006/12/02 21:19:17 tom Exp $")
+
+NCURSES_EXPORT(int)
+wadd_wch(WINDOW *win, const cchar_t *wch)
+{
+ PUTC_DATA;
+ int n;
+ int code = ERR;
+
+ TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("wadd_wch(%p, %s)"), win,
+ _tracech_t(wch)));
+
+ if (win != 0) {
+ PUTC_INIT;
+ for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) {
+ attr_t attrs = (wch->attr & A_ATTRIBUTES);
+
+ if ((PUTC_ch = wch->chars[PUTC_i]) == L'\0')
+ break;
+ if ((PUTC_n = wcrtomb(PUTC_buf, PUTC_ch, &PUT_st)) <= 0) {
+ code = ERR;
+ if (is8bits(PUTC_ch))
+ code = waddch(win, UChar(PUTC_ch) | attrs);
+ break;
+ }
+ for (n = 0; n < PUTC_n; n++) {
+ if ((code = waddch(win, UChar(PUTC_buf[n]) | attrs)) == ERR) {
+ break;
+ }
+ }
+ if (code == ERR)
+ break;
+ }
+ }
+
+ TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
+ return (code);
+}
+
+NCURSES_EXPORT(int)
+wecho_wchar(WINDOW *win, const cchar_t *wch)
+{
+ PUTC_DATA;
+ int n;
+ int code = ERR;
+
+ TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("wecho_wchar(%p, %s)"), win,
+ _tracech_t(wch)));
+
+ if (win != 0) {
+ PUTC_INIT;
+ for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) {
+ attr_t attrs = (wch->attr & A_ATTRIBUTES);
+
+ if ((PUTC_ch = wch->chars[PUTC_i]) == L'\0')
+ break;
+ if ((PUTC_n = wcrtomb(PUTC_buf, PUTC_ch, &PUT_st)) <= 0) {
+ code = ERR;
+ if (is8bits(PUTC_ch))
+ code = waddch(win, UChar(PUTC_ch) | attrs);
+ break;
+ }
+ for (n = 0; n < PUTC_n; n++) {
+ if ((code = waddch(win, UChar(PUTC_buf[n]) | attrs)) == ERR) {
+ break;
+ }
+ }
+ if (code == ERR)
+ break;
+ }
+ wrefresh(win);
+ }
+
+ TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
+ return (code);
+}
diff --git a/contrib/ncurses/ncurses/widechar/lib_box_set.c b/contrib/ncurses/ncurses/widechar/lib_box_set.c
index 7f69e5aa5113..35fce46d8d40 100644
--- a/contrib/ncurses/ncurses/widechar/lib_box_set.c
+++ b/contrib/ncurses/ncurses/widechar/lib_box_set.c
@@ -39,7 +39,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_box_set.c,v 1.2 2002/03/23 21:35:24 tom Exp $")
+MODULE_ID("$Id: lib_box_set.c,v 1.4 2003/12/06 18:02:13 tom Exp $")
NCURSES_EXPORT(int)
wborder_set(WINDOW *win,
@@ -66,7 +66,7 @@ wborder_set(WINDOW *win,
if (!win)
returnCode(ERR);
-#define RENDER_WITH_DEFAULT(ch,def) w ##ch = (ch == 0) ? *def : *ch
+#define RENDER_WITH_DEFAULT(ch,def) w ##ch = _nc_render(win, (ch == 0) ? *(const ARG_CH_T)def : *ch)
RENDER_WITH_DEFAULT(ls, WACS_VLINE);
RENDER_WITH_DEFAULT(rs, WACS_VLINE);
diff --git a/contrib/ncurses/ncurses/widechar/lib_cchar.c b/contrib/ncurses/ncurses/widechar/lib_cchar.c
index efbfc69b1c0f..b6458ee4a1f4 100644
--- a/contrib/ncurses/ncurses/widechar/lib_cchar.c
+++ b/contrib/ncurses/ncurses/widechar/lib_cchar.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2004,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 *
@@ -35,17 +35,20 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_cchar.c,v 1.5 2002/04/27 22:35:46 tom Exp $")
+MODULE_ID("$Id: lib_cchar.c,v 1.11 2005/01/29 21:29:16 tom Exp $")
/*
* The SuSv2 description leaves some room for interpretation. We'll assume wch
- * is L'\0' terminated, contains at most one character with strictly positive
- * width, which must be the first, and contains no characters of negative
- * width.
+ * points to a string which is L'\0' terminated, contains at least one
+ * character with strictly positive width, which must be the first, and
+ * contains no characters of negative width.
*/
NCURSES_EXPORT(int)
-setcchar(cchar_t * wcval, const wchar_t * wch, const attr_t attrs,
- short color_pair, const void *opts)
+setcchar(cchar_t *wcval,
+ const wchar_t *wch,
+ const attr_t attrs,
+ short color_pair,
+ const void *opts)
{
int i;
int len;
@@ -54,27 +57,33 @@ setcchar(cchar_t * wcval, const wchar_t * wch, const attr_t attrs,
TR(TRACE_CCALLS, (T_CALLED("setcchar(%p,%s,%ld,%d,%p)"),
wcval, _nc_viswbuf(wch), attrs, color_pair, opts));
- if (opts != NULL || (len = wcslen(wch)) > CCHARW_MAX
- || (len > 0 && wcwidth(wch[0]) < 0)) {
+ len = wcslen(wch);
+ if (opts != NULL
+ || (len > 1 && wcwidth(wch[0]) < 0)) {
code = ERR;
} else {
+ if (len > CCHARW_MAX)
+ len = CCHARW_MAX;
+ /*
+ * If we have a following spacing-character, stop at that point. We
+ * are only interested in adding non-spacing characters.
+ */
for (i = 1; i < len; ++i) {
if (wcwidth(wch[i]) != 0) {
- code = ERR;
+ len = i;
break;
}
}
- if (code != ERR) {
- memset(wcval, 0, sizeof(*wcval));
+ memset(wcval, 0, sizeof(*wcval));
- if (len != 0) {
- SetAttr(*wcval, attrs | color_pair);
- memcpy(&wcval->chars, wch, len * sizeof(wchar_t));
- TR(TRACE_CCALLS, ("copy %d wchars, first is %s", len,
- _tracecchar_t(wcval)));
- }
+ if (len != 0) {
+ SetAttr(*wcval, attrs | COLOR_PAIR(color_pair));
+ SetPair(CHDEREF(wcval), color_pair);
+ memcpy(&wcval->chars, wch, len * sizeof(wchar_t));
+ TR(TRACE_CCALLS, ("copy %d wchars, first is %s", len,
+ _tracecchar_t(wcval)));
}
}
@@ -83,8 +92,11 @@ setcchar(cchar_t * wcval, const wchar_t * wch, const attr_t attrs,
}
NCURSES_EXPORT(int)
-getcchar(const cchar_t * wcval, wchar_t * wch, attr_t * attrs,
- short *color_pair, void *opts)
+getcchar(const cchar_t *wcval,
+ wchar_t *wch,
+ attr_t *attrs,
+ short *color_pair,
+ void *opts)
{
wchar_t *wp;
int len;
@@ -100,9 +112,11 @@ getcchar(const cchar_t * wcval, wchar_t * wch, attr_t * attrs,
if (wch == NULL) {
code = len;
+ } else if (attrs == 0 || color_pair == 0) {
+ code = ERR;
} else if (len >= 0) {
*attrs = AttrOf(*wcval) & A_ATTRIBUTES;
- *color_pair = AttrOf(*wcval) & A_COLOR;
+ *color_pair = GetPair(*wcval);
wmemcpy(wch, wcval->chars, (unsigned) len);
wch[len] = L'\0';
code = OK;
diff --git a/contrib/ncurses/ncurses/widechar/lib_get_wch.c b/contrib/ncurses/ncurses/widechar/lib_get_wch.c
index 21c40a506ccc..c73c363be531 100644
--- a/contrib/ncurses/ncurses/widechar/lib_get_wch.c
+++ b/contrib/ncurses/ncurses/widechar/lib_get_wch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2005,2006 Free 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 *
+ * Author: Thomas E. Dickey 2002-on *
****************************************************************************/
/*
@@ -38,28 +38,47 @@
*/
#include <curses.priv.h>
+#include <ctype.h>
-MODULE_ID("$Id: lib_get_wch.c,v 1.3 2002/03/17 16:14:45 tom Exp $")
+MODULE_ID("$Id: lib_get_wch.c,v 1.13 2006/06/03 17:27:57 tom Exp $")
+
+#if HAVE_MBTOWC && HAVE_MBLEN
+#define reset_mbytes(state) mblen(NULL, 0), mbtowc(NULL, NULL, 0)
+#define count_mbytes(buffer,length,state) mblen(buffer,length)
+#define check_mbytes(wch,buffer,length,state) \
+ (int) mbtowc(&wch, buffer, length)
+#define state_unused
+#elif HAVE_MBRTOWC && HAVE_MBRLEN
+#define reset_mbytes(state) init_mb(state)
+#define count_mbytes(buffer,length,state) mbrlen(buffer,length,&state)
+#define check_mbytes(wch,buffer,length,state) \
+ (int) mbrtowc(&wch, buffer, length, &state)
+#else
+make an error
+#endif
NCURSES_EXPORT(int)
-wget_wch(WINDOW *win, wint_t * result)
+wget_wch(WINDOW *win, wint_t *result)
{
int code;
- char buffer[(MB_CUR_MAX * 9) + 1]; /* allow some redundant shifts */
+ char buffer[(MB_LEN_MAX * 9) + 1]; /* allow some redundant shifts */
int status;
- mbstate_t state;
size_t count = 0;
unsigned long value;
wchar_t wch;
+#ifndef state_unused
+ mbstate_t state;
+#endif
T((T_CALLED("wget_wch(%p)"), win));
+
/*
* We can get a stream of single-byte characters and KEY_xxx codes from
* _nc_wgetch(), while we want to return a wide character or KEY_xxx code.
*/
for (;;) {
- T(("reading %d of %d", count + 1, sizeof(buffer)));
- code = _nc_wgetch(win, &value, TRUE);
+ T(("reading %d of %d", count + 1, sizeof(buffer)));
+ code = _nc_wgetch(win, &value, TRUE EVENTLIST_2nd((_nc_eventlist *) 0));
if (code == ERR) {
break;
} else if (code == KEY_CODE_YES) {
@@ -71,22 +90,23 @@ wget_wch(WINDOW *win, wint_t * result)
* would be worth the effort.
*/
if (count != 0) {
- ungetch(value);
+ ungetch((int) value);
code = ERR;
}
break;
} else if (count + 1 >= sizeof(buffer)) {
- ungetch(value);
+ ungetch((int) value);
code = ERR;
break;
} else {
buffer[count++] = UChar(value);
- memset(&state, 0, sizeof(state));
- status = mbrlen(buffer, count, &state);
+ reset_mbytes(state);
+ status = count_mbytes(buffer, count, state);
if (status >= 0) {
- memset(&state, 0, sizeof(state));
- if ((int) mbrtowc(&wch, buffer, count, &state) != status) {
+ reset_mbytes(state);
+ if (check_mbytes(wch, buffer, count, state) != status) {
code = ERR; /* the two calls should match */
+ ungetch((int) value);
}
value = wch;
break;
@@ -94,6 +114,6 @@ wget_wch(WINDOW *win, wint_t * result)
}
}
*result = value;
- T(("result %#o", value));
+ T(("result %#lo", value));
returnCode(code);
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_get_wstr.c b/contrib/ncurses/ncurses/widechar/lib_get_wstr.c
index 426381cce0a5..bf39aa1a188b 100644
--- a/contrib/ncurses/ncurses/widechar/lib_get_wstr.c
+++ b/contrib/ncurses/ncurses/widechar/lib_get_wstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2003,2004 Free 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 *
+ * Author: Thomas E. Dickey *
****************************************************************************/
/*
@@ -40,23 +40,38 @@
#include <curses.priv.h>
#include <term.h>
-MODULE_ID("$Id: lib_get_wstr.c,v 1.3 2002/05/11 22:29:43 tom Exp $")
+MODULE_ID("$Id: lib_get_wstr.c,v 1.8 2004/10/16 21:55:36 tom Exp $")
+
+static int
+wadd_wint(WINDOW *win, wint_t *src)
+{
+ cchar_t tmp;
+ wchar_t wch[2];
+
+ wch[0] = *src;
+ wch[1] = 0;
+ setcchar(&tmp, wch, A_NORMAL, 0, NULL);
+ return wadd_wch(win, &tmp);
+}
/*
* This wipes out the last character, no matter whether it was a tab, control
* or other character, and handles reverse wraparound.
*/
-static wchar_t *
-WipeOut(WINDOW *win, int y, int x, wchar_t * first, wchar_t * last, bool echoed)
+static wint_t *
+WipeOut(WINDOW *win, int y, int x, wint_t *first, wint_t *last, bool echoed)
{
if (last > first) {
*--last = '\0';
if (echoed) {
int y1 = win->_cury;
int x1 = win->_curx;
+ int n;
wmove(win, y, x);
- waddwstr(win, first);
+ for (n = 0; first[n] != 0; ++n) {
+ wadd_wint(win, first + n);
+ }
getyx(win, y, x);
while (win->_cury < y1
|| (win->_cury == y1 && win->_curx < x1))
@@ -69,14 +84,14 @@ WipeOut(WINDOW *win, int y, int x, wchar_t * first, wchar_t * last, bool echoed)
}
NCURSES_EXPORT(int)
-wgetn_wstr(WINDOW *win, wint_t * str, int maxlen)
+wgetn_wstr(WINDOW *win, wint_t *str, int maxlen)
{
TTY buf;
bool oldnl, oldecho, oldraw, oldcbreak;
wint_t erasec;
wint_t killc;
- wchar_t *oldstr;
- wchar_t *tmpstr;
+ wint_t *oldstr = str;
+ wint_t *tmpstr = str;
wint_t ch;
int y, x, code;
@@ -99,16 +114,31 @@ wgetn_wstr(WINDOW *win, wint_t * str, int maxlen)
erasec = erasechar();
killc = killchar();
- assert(sizeof(wchar_t) == sizeof(wint_t));
- oldstr = (wchar_t *) str;
- tmpstr = (wchar_t *) str;
-
getyx(win, y, x);
if (is_wintouched(win) || (win->_flags & _HASMOVED))
wrefresh(win);
while ((code = wget_wch(win, &ch)) != ERR) {
+ /*
+ * Map special characters into key-codes.
+ */
+ if (ch == '\r')
+ ch = '\n';
+ if (ch == '\n') {
+ code = KEY_CODE_YES;
+ ch = KEY_ENTER;
+ }
+ if (ch < KEY_MIN) {
+ if (ch == erasec) {
+ ch = KEY_BACKSPACE;
+ code = KEY_CODE_YES;
+ }
+ if (ch == killc) {
+ ch = KEY_EOL;
+ code = KEY_CODE_YES;
+ }
+ }
if (code == KEY_CODE_YES) {
/*
* Some terminals (the Wyse-50 is the most common) generate a \n
@@ -116,21 +146,18 @@ wgetn_wstr(WINDOW *win, wint_t * str, int maxlen)
* choice whether to set kcud=\n for wget_wch(); terminating
* *getn_wstr() with \n should work either way.
*/
- if (ch == '\n'
- || ch == '\r'
- || ch == KEY_DOWN
- || ch == KEY_ENTER) {
+ if (ch == KEY_DOWN || ch == KEY_ENTER) {
if (oldecho == TRUE
&& win->_cury == win->_maxy
&& win->_scroll)
wechochar(win, (chtype) '\n');
break;
}
- if (ch == erasec || ch == KEY_LEFT || ch == KEY_BACKSPACE) {
+ if (ch == KEY_LEFT || ch == KEY_BACKSPACE) {
if (tmpstr > oldstr) {
tmpstr = WipeOut(win, y, x, oldstr, tmpstr, oldecho);
}
- } else if (ch == killc) {
+ } else if (ch == KEY_EOL) {
while (tmpstr > oldstr) {
tmpstr = WipeOut(win, y, x, oldstr, tmpstr, oldecho);
}
@@ -141,12 +168,11 @@ wgetn_wstr(WINDOW *win, wint_t * str, int maxlen)
beep();
} else {
*tmpstr++ = ch;
+ *tmpstr = 0;
if (oldecho == TRUE) {
int oldy = win->_cury;
- cchar_t tmp;
- setcchar(&tmp, tmpstr - 1, A_NORMAL, 0, NULL);
- if (wadd_wch(win, &tmp) == ERR) {
+ if (wadd_wint(win, tmpstr - 1) == ERR) {
/*
* We can't really use the lower-right corner for input,
* since it'll mess up bookkeeping for erases.
@@ -188,18 +214,18 @@ wgetn_wstr(WINDOW *win, wint_t * str, int maxlen)
SP->_raw = oldraw;
SP->_cbreak = oldcbreak;
- _nc_set_tty_mode(&buf);
+ (void) _nc_set_tty_mode(&buf);
*tmpstr = 0;
if (code == ERR) {
if (tmpstr == oldstr) {
- *tmpstr++ = (wchar_t)WEOF;
+ *tmpstr++ = WEOF;
*tmpstr = 0;
}
returnCode(ERR);
}
- T(("wgetn_wstr returns %s", _nc_viswbuf(oldstr)));
+ T(("wgetn_wstr returns %s", _nc_viswibuf(oldstr)));
returnCode(OK);
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_in_wch.c b/contrib/ncurses/ncurses/widechar/lib_in_wch.c
index 562fa82602fe..5cd92e382de4 100644
--- a/contrib/ncurses/ncurses/widechar/lib_in_wch.c
+++ b/contrib/ncurses/ncurses/widechar/lib_in_wch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2004,2006 Free 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 Dickey 2002 *
+ * Author: Thomas Dickey *
****************************************************************************/
/*
@@ -39,10 +39,10 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_in_wch.c,v 1.1 2002/03/10 20:22:00 tom Exp $")
+MODULE_ID("$Id: lib_in_wch.c,v 1.4 2006/09/03 15:41:22 tom Exp $")
NCURSES_EXPORT(int)
-win_wch(WINDOW *win, NCURSES_CONST cchar_t * wcval)
+win_wch(WINDOW *win, cchar_t *wcval)
{
int row, col;
int code = OK;
@@ -53,8 +53,10 @@ win_wch(WINDOW *win, NCURSES_CONST cchar_t * wcval)
getyx(win, row, col);
*wcval = win->_line[row].text[col];
+ TR(TRACE_CCALLS, ("data %s", _tracecchar_t(wcval)));
} else {
code = ERR;
}
- returnCode(code);
+ TR(TRACE_CCALLS, (T_RETURN("%d"), code));
+ return (code);
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_in_wchnstr.c b/contrib/ncurses/ncurses/widechar/lib_in_wchnstr.c
index 42268ec3e025..41ba18ccdf00 100644
--- a/contrib/ncurses/ncurses/widechar/lib_in_wchnstr.c
+++ b/contrib/ncurses/ncurses/widechar/lib_in_wchnstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2002,2004 Free 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 Dickey 2002 *
+ * Author: Thomas Dickey 2002,2004 *
****************************************************************************/
/*
@@ -39,22 +39,28 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_in_wchnstr.c,v 1.1 2002/04/13 19:33:57 tom Exp $")
+MODULE_ID("$Id: lib_in_wchnstr.c,v 1.3 2004/05/16 00:12:30 tom Exp $")
NCURSES_EXPORT(int)
-win_wchnstr(WINDOW *win, NCURSES_CONST cchar_t * wchstr, int n)
+win_wchnstr(WINDOW *win, cchar_t * wchstr, int n)
{
int code = OK;
- TR(TRACE_CCALLS, (T_CALLED("win_wchnstr(%p,%p,%d)"), win, wchstr, n));
+ TR(TRACE_CALLS, (T_CALLED("win_wchnstr(%p,%p,%d)"), win, wchstr, n));
if (win != 0
&& wchstr != 0) {
+ int row, col;
+ int j;
+
+ getyx(win, row, col);
if (n < 0) {
n = getmaxx(win) + 1 - getcurx(win);
}
- while (n-- > 0)
- win_wch(win, wchstr++);
+ for (j = 0; j < n; ++j) {
+ wchstr[j] = win->_line[row].text[col + j];
+ }
+ T(("result = %s", _nc_viscbuf(wchstr, n)));
} else {
code = ERR;
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_ins_wch.c b/contrib/ncurses/ncurses/widechar/lib_ins_wch.c
index 0821ee590bf8..c3d0420e53b8 100644
--- a/contrib/ncurses/ncurses/widechar/lib_ins_wch.c
+++ b/contrib/ncurses/ncurses/widechar/lib_ins_wch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2003,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 *
@@ -39,27 +39,106 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_ins_wch.c,v 1.1 2002/03/10 22:25:06 tom Exp $")
+MODULE_ID("$Id: lib_ins_wch.c,v 1.8 2005/12/03 20:24:19 tom Exp $")
-NCURSES_EXPORT(int)
-wins_wch(WINDOW *win, const cchar_t * wch)
+/*
+ * Insert the given character, updating the current location to simplify
+ * inserting a string.
+ */
+static int
+_nc_insert_wch(WINDOW *win, const cchar_t *wch)
{
- int code = ERR;
+ int cells = wcwidth(CharOf(CHDEREF(wch)));
+ int cell;
- T((T_CALLED("wins_wch(%p, %s)"), win, _tracecchar_t(wch)));
+ if (cells <= 0)
+ cells = 1;
- if (win) {
+ if (win->_curx <= win->_maxx) {
struct ldat *line = &(win->_line[win->_cury]);
NCURSES_CH_T *end = &(line->text[win->_curx]);
NCURSES_CH_T *temp1 = &(line->text[win->_maxx]);
- NCURSES_CH_T *temp2 = temp1 - 1;
+ NCURSES_CH_T *temp2 = temp1 - cells;
CHANGED_TO_EOL(line, win->_curx, win->_maxx);
while (temp1 > end)
*temp1-- = *temp2--;
*temp1 = _nc_render(win, *wch);
+ for (cell = 1; cell < cells; ++cell) {
+ SetWidecExt(temp1[cell], cell);
+ }
+
+ win->_curx++;
+ }
+ return OK;
+}
+
+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)"), win, _tracecchar_t(wch)));
+
+ if (win != 0) {
+ oy = win->_cury;
+ ox = win->_curx;
+
+ code = _nc_insert_wch(win, wch);
+
+ win->_curx = ox;
+ win->_cury = oy;
+ _nc_synchook(win);
+ }
+ returnCode(code);
+}
+
+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)"), win, _nc_viswbufn(wstr, n), n));
+
+ if (win != 0
+ && wstr != 0) {
+ if (n < 1)
+ n = wcslen(wstr);
code = OK;
+ if (n > 0) {
+ oy = win->_cury;
+ ox = win->_curx;
+ for (cp = wstr; *cp && ((cp - wstr) < n); cp++) {
+ int len = wcwidth(*cp);
+
+ if (len != 1 || !is8bits(*cp)) {
+ cchar_t tmp_cchar;
+ wchar_t tmp_wchar = *cp;
+ memset(&tmp_cchar, 0, sizeof(tmp_cchar));
+ (void) setcchar(&tmp_cchar,
+ &tmp_wchar,
+ WA_NORMAL,
+ 0,
+ (void *) 0);
+ code = _nc_insert_wch(win, &tmp_cchar);
+ } else {
+ /* tabs, other ASCII stuff */
+ code = _nc_insert_ch(win, (chtype) (*cp));
+ }
+ if (code != OK)
+ break;
+ }
+
+ win->_curx = ox;
+ win->_cury = oy;
+ _nc_synchook(win);
+ }
}
returnCode(code);
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_inwstr.c b/contrib/ncurses/ncurses/widechar/lib_inwstr.c
index c3c46fa9e554..2207a5f5d19f 100644
--- a/contrib/ncurses/ncurses/widechar/lib_inwstr.c
+++ b/contrib/ncurses/ncurses/widechar/lib_inwstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2002,2004 Free 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 Dickey 2002 *
+ * Author: Thomas Dickey *
****************************************************************************/
/*
@@ -39,10 +39,10 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_inwstr.c,v 1.1 2002/03/10 00:25:27 tom Exp $")
+MODULE_ID("$Id: lib_inwstr.c,v 1.4 2004/10/23 20:41:28 tom Exp $")
NCURSES_EXPORT(int)
-winnwstr(WINDOW *win, wchar_t * wstr, int n)
+winnwstr(WINDOW *win, wchar_t *wstr, int n)
{
int row, col, inx;
int count = 0;
@@ -50,23 +50,25 @@ winnwstr(WINDOW *win, wchar_t * wstr, int n)
cchar_t *text;
wchar_t wch;
- TR(TRACE_CCALLS, (T_CALLED("winnwstr(%p,%p,%d)"), win, wstr, n));
+ T((T_CALLED("winnwstr(%p,%p,%d)"), win, wstr, n));
if (wstr != 0) {
if (win) {
getyx(win, row, col);
text = win->_line[row].text;
while (count < n && count != ERR) {
- for (inx = 0; (inx < CCHARW_MAX)
- && ((wch = text[col].chars[inx]) != 0);
- ++inx) {
- if (count + 1 >= n) {
- if ((count = last) == 0) {
- count = ERR; /* error if we t store nothing */
+ if (!isWidecExt(text[col])) {
+ for (inx = 0; (inx < CCHARW_MAX)
+ && ((wch = text[col].chars[inx]) != 0);
+ ++inx) {
+ if (count + 1 > n) {
+ if ((count = last) == 0) {
+ count = ERR; /* error if we store nothing */
+ }
+ break;
}
- break;
+ wstr[count++] = wch;
}
- wstr[count++] = wch;
}
last = count;
if (++col > win->_maxx) {
@@ -74,8 +76,10 @@ winnwstr(WINDOW *win, wchar_t * wstr, int n)
}
}
}
- if (count > 0)
+ if (count > 0) {
wstr[count] = '\0';
+ T(("winnwstr returns %s", _nc_viswbuf(wstr)));
+ }
}
returnCode(count);
}
@@ -86,10 +90,10 @@ winnwstr(WINDOW *win, wchar_t * wstr, int n)
* it does not define what happens for a negative count with winnwstr().
*/
NCURSES_EXPORT(int)
-winwstr(WINDOW *win, wchar_t * wstr)
+winwstr(WINDOW *win, wchar_t *wstr)
{
int result = OK;
- TR(TRACE_CCALLS, (T_CALLED("winwstr(%p,%p)"), win, wstr));
+ T((T_CALLED("winwstr(%p,%p)"), win, wstr));
if (winnwstr(win, wstr, CCHARW_MAX * (win->_maxx - win->_curx + 1)) == ERR)
result = ERR;
returnCode(result);
diff --git a/contrib/ncurses/ncurses/widechar/lib_pecho_wchar.c b/contrib/ncurses/ncurses/widechar/lib_pecho_wchar.c
new file mode 100644
index 000000000000..e61277574311
--- /dev/null
+++ b/contrib/ncurses/ncurses/widechar/lib_pecho_wchar.c
@@ -0,0 +1,57 @@
+/****************************************************************************
+ * Copyright (c) 2004 Free Software 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: lib_pecho_wchar.c,v 1.1 2004/01/03 21:42:01 tom Exp $")
+
+NCURSES_EXPORT(int)
+pecho_wchar(WINDOW *pad, const cchar_t * wch)
+{
+ T((T_CALLED("pecho_wchar(%p, %s)"), pad, _tracech_t(wch)));
+
+ if (pad == 0)
+ returnCode(ERR);
+
+ if (!(pad->_flags & _ISPAD))
+ returnCode(wecho_wchar(pad, wch));
+
+ wadd_wch(pad, wch);
+ prefresh(pad, pad->_pad._pad_y,
+ pad->_pad._pad_x,
+ pad->_pad._pad_top,
+ pad->_pad._pad_left,
+ pad->_pad._pad_bottom,
+ pad->_pad._pad_right);
+
+ returnCode(OK);
+}
diff --git a/contrib/ncurses/ncurses/widechar/lib_slk_wset.c b/contrib/ncurses/ncurses/widechar/lib_slk_wset.c
new file mode 100644
index 000000000000..646b5d9e2fa8
--- /dev/null
+++ b/contrib/ncurses/ncurses/widechar/lib_slk_wset.c
@@ -0,0 +1,72 @@
+/****************************************************************************
+ * Copyright (c) 2003-2004,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 *
+ * "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 *
+ ****************************************************************************/
+
+/*
+ * lib_slk_wset.c
+ * Set soft label text.
+ */
+#include <curses.priv.h>
+
+#if HAVE_WCTYPE_H
+#include <wctype.h>
+#endif
+
+MODULE_ID("$Id: lib_slk_wset.c,v 1.11 2005/01/16 01:03:53 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));
+
+ init_mb(state);
+ str = astr;
+ if ((arglen = wcsrtombs(NULL, &str, 0, &state)) != (size_t) -1) {
+ if ((mystr = (char *) _nc_doalloc(0, arglen + 1)) != 0) {
+ str = astr;
+ if (wcsrtombs(mystr, &str, arglen, &state) != (size_t) -1) {
+ /* glibc documentation claims that the terminating L'\0'
+ * is written, but it is not...
+ */
+ mystr[arglen] = 0;
+ result = slk_set(i, mystr, format);
+ }
+ free(mystr);
+ }
+ }
+ returnCode(result);
+}
diff --git a/contrib/ncurses/ncurses/widechar/lib_unget_wch.c b/contrib/ncurses/ncurses/widechar/lib_unget_wch.c
index b4b3433519c1..62ec89d75014 100644
--- a/contrib/ncurses/ncurses/widechar/lib_unget_wch.c
+++ b/contrib/ncurses/ncurses/widechar/lib_unget_wch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2003,2004 Free 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,26 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_unget_wch.c,v 1.2 2002/03/17 00:01:38 tom Exp $")
+MODULE_ID("$Id: lib_unget_wch.c,v 1.7 2004/12/05 01:21:31 tom Exp $")
+
+#ifdef linux
+/*
+ * glibc's wcrtomb() function is broken - does not return the proper value
+ * when target is null (noted for glibc 2.3.2). This is a workaround.
+ */
+NCURSES_EXPORT(size_t)
+_nc_wcrtomb(char *target, wchar_t source, mbstate_t * state)
+{
+ if (target == 0) {
+ wchar_t temp[2];
+ const wchar_t *tempp = temp;
+ temp[0] = source;
+ temp[1] = 0;
+ return wcsrtombs(NULL, &tempp, 0, state);
+ }
+ return wcrtomb(target, source, state);
+}
+#endif
NCURSES_EXPORT(int)
unget_wch(const wchar_t wch)
@@ -49,25 +68,29 @@ unget_wch(const wchar_t wch)
size_t length;
int n;
- T((T_CALLED("unget_wch(%d)"), wch));
+ T((T_CALLED("unget_wch(%#lx)"), (unsigned long) wch));
- memset(&state, 0, sizeof(state));
- length = wcrtomb(0, wch, &state);
+ init_mb(state);
+ length = _nc_wcrtomb(0, wch, &state);
if (length != (size_t) (-1)
&& length != 0) {
- char *string = malloc(length);
+ char *string;
- memset(&state, 0, sizeof(state));
- wcrtomb(string, wch, &state);
+ if ((string = (char *) malloc(length)) != 0) {
+ init_mb(state);
+ wcrtomb(string, wch, &state);
- for (n = (int) (length - 1); n >= 0; --n) {
- if (ungetch(string[n]) != OK) {
- result = ERR;
- break;
+ for (n = (int) (length - 1); n >= 0; --n) {
+ if (ungetch(string[n]) != OK) {
+ result = ERR;
+ break;
+ }
}
+ free(string);
+ } else {
+ result = ERR;
}
- free(string);
} else {
result = ERR;
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_vid_attr.c b/contrib/ncurses/ncurses/widechar/lib_vid_attr.c
index 06e7880dd4d0..2ba16b5cf924 100644
--- a/contrib/ncurses/ncurses/widechar/lib_vid_attr.c
+++ b/contrib/ncurses/ncurses/widechar/lib_vid_attr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2005,2006 Free 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,68 +27,248 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2002 *
+ * Author: Thomas E. Dickey *
****************************************************************************/
#include <curses.priv.h>
#include <term.h>
-MODULE_ID("$Id: lib_vid_attr.c,v 1.1 2002/05/11 20:55:26 tom Exp $")
+MODULE_ID("$Id: lib_vid_attr.c,v 1.4 2006/11/26 00:26:00 tom Exp $")
-#define set_color(mode, pair) mode &= ~A_COLOR; mode |= COLOR_PAIR(pair)
+#define doPut(mode) TPUTS_TRACE(#mode); tputs(mode, 1, outc)
+
+#define TurnOn(mask,mode) \
+ if ((turn_on & mask) && mode) { doPut(mode); }
+
+#define TurnOff(mask,mode) \
+ if ((turn_off & mask) && mode) { doPut(mode); turn_off &= ~mask; }
+
+ /* if there is no current screen, assume we *can* do color */
+#define SetColorsIf(why, old_attr, 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)) \
+ || (reverse ^ ((old_attr & A_REVERSE) != 0))) { \
+ _nc_do_color(old_pair, pair, reverse, outc); \
+ } \
+ }
+
+#define set_color(mode, pair) mode &= ALL_BUT_COLOR; mode |= COLOR_PAIR(pair)
NCURSES_EXPORT(int)
vid_puts(attr_t newmode, short pair, void *opts GCC_UNUSED, int (*outc) (int))
{
+#if NCURSES_EXT_COLORS
+ static attr_t previous_attr = A_NORMAL;
+ static int previous_pair = 0;
+
+ attr_t turn_on, turn_off;
+ bool reverse = FALSE;
+ bool can_color = (SP == 0 || SP->_coloron);
+#if NCURSES_EXT_FUNCS
+ bool fix_pair0 = (SP != 0 && SP->_coloron && !SP->_default_color);
+#else
+#define fix_pair0 FALSE
+#endif
+
+ T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), pair));
+
+ /* this allows us to go on whether or not newterm() has been called */
+ if (SP) {
+ previous_attr = AttrOf(SCREEN_ATTRS(SP));
+ previous_pair = GetPair(SCREEN_ATTRS(SP));
+ }
+
+ TR(TRACE_ATTRS, ("previous attribute was %s, %d",
+ _traceattr(previous_attr), previous_pair));
+
+#if !USE_XMC_SUPPORT
+ if ((SP != 0)
+ && (magic_cookie_glitch > 0))
+ newmode &= ~(SP->_xmc_suppress);
+#endif
+
+ /*
+ * If we have a terminal that cannot combine color with video
+ * attributes, use the colors in preference.
+ */
+ if ((pair != 0
+ || fix_pair0)
+ && (no_color_video > 0)) {
+ /*
+ * If we had chosen the A_xxx definitions to correspond to the
+ * no_color_video mask, we could simply shift it up and mask off the
+ * attributes. But we did not (actually copied Solaris' definitions).
+ * However, this is still simpler/faster than a lookup table.
+ *
+ * The 63 corresponds to A_STANDOUT, A_UNDERLINE, A_REVERSE, A_BLINK,
+ * A_DIM, A_BOLD which are 1:1 with no_color_video. The bits that
+ * correspond to A_INVIS, A_PROTECT (192) must be shifted up 1 and
+ * A_ALTCHARSET (256) down 2 to line up. We use the NCURSES_BITS
+ * macro so this will work properly for the wide-character layout.
+ */
+ unsigned value = no_color_video;
+ attr_t mask = NCURSES_BITS((value & 63)
+ | ((value & 192) << 1)
+ | ((value & 256) >> 2), 8);
+
+ if ((mask & A_REVERSE) != 0
+ && (newmode & A_REVERSE) != 0) {
+ reverse = TRUE;
+ mask &= ~A_REVERSE;
+ }
+ newmode &= ~mask;
+ }
+
+ if (newmode == previous_attr
+ && pair == previous_pair)
+ returnCode(OK);
+
+ if (reverse) {
+ newmode &= ~A_REVERSE;
+ }
+
+ turn_off = (~newmode & previous_attr) & ALL_BUT_COLOR;
+ turn_on = (newmode & ~previous_attr) & ALL_BUT_COLOR;
+
+ SetColorsIf(((pair == 0) && !fix_pair0), previous_attr, previous_pair);
+
+ if (newmode == A_NORMAL) {
+ if ((previous_attr & A_ALTCHARSET) && exit_alt_charset_mode) {
+ doPut(exit_alt_charset_mode);
+ previous_attr &= ~A_ALTCHARSET;
+ }
+ if (previous_attr) {
+ if (exit_attribute_mode) {
+ doPut(exit_attribute_mode);
+ } else {
+ if (!SP || SP->_use_rmul) {
+ TurnOff(A_UNDERLINE, exit_underline_mode);
+ }
+ if (!SP || SP->_use_rmso) {
+ TurnOff(A_STANDOUT, exit_standout_mode);
+ }
+ }
+ previous_attr &= ALL_BUT_COLOR;
+ previous_pair = 0;
+ }
+
+ SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair);
+ } else if (set_attributes) {
+ if (turn_on || turn_off) {
+ TPUTS_TRACE("set_attributes");
+ tputs(TPARM_9(set_attributes,
+ (newmode & A_STANDOUT) != 0,
+ (newmode & A_UNDERLINE) != 0,
+ (newmode & A_REVERSE) != 0,
+ (newmode & A_BLINK) != 0,
+ (newmode & A_DIM) != 0,
+ (newmode & A_BOLD) != 0,
+ (newmode & A_INVIS) != 0,
+ (newmode & A_PROTECT) != 0,
+ (newmode & A_ALTCHARSET) != 0), 1, outc);
+ previous_attr &= ALL_BUT_COLOR;
+ previous_pair = 0;
+ }
+ SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair);
+ } else {
+
+ TR(TRACE_ATTRS, ("turning %s off", _traceattr(turn_off)));
+
+ TurnOff(A_ALTCHARSET, exit_alt_charset_mode);
+
+ if (!SP || SP->_use_rmul) {
+ TurnOff(A_UNDERLINE, exit_underline_mode);
+ }
+
+ if (!SP || SP->_use_rmso) {
+ TurnOff(A_STANDOUT, exit_standout_mode);
+ }
+
+ if (turn_off && exit_attribute_mode) {
+ doPut(exit_attribute_mode);
+ turn_on |= (newmode & ALL_BUT_COLOR);
+ previous_attr &= ALL_BUT_COLOR;
+ previous_pair = 0;
+ }
+ SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair);
+
+ TR(TRACE_ATTRS, ("turning %s on", _traceattr(turn_on)));
+ /* *INDENT-OFF* */
+ TurnOn(A_ALTCHARSET, enter_alt_charset_mode);
+ TurnOn(A_BLINK, enter_blink_mode);
+ TurnOn(A_BOLD, enter_bold_mode);
+ TurnOn(A_DIM, enter_dim_mode);
+ TurnOn(A_REVERSE, enter_reverse_mode);
+ TurnOn(A_STANDOUT, enter_standout_mode);
+ TurnOn(A_PROTECT, enter_protected_mode);
+ TurnOn(A_INVIS, enter_secure_mode);
+ TurnOn(A_UNDERLINE, enter_underline_mode);
+#if USE_WIDEC_SUPPORT
+ TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode);
+ TurnOn(A_LEFT, enter_left_hl_mode);
+ TurnOn(A_LOW, enter_low_hl_mode);
+ TurnOn(A_RIGHT, enter_right_hl_mode);
+ TurnOn(A_TOP, enter_top_hl_mode);
+ TurnOn(A_VERTICAL, enter_vertical_hl_mode);
+#endif
+ /* *INDENT-ON* */
+
+ }
+
+ if (reverse)
+ newmode |= A_REVERSE;
+
+ if (SP) {
+ SetAttr(SCREEN_ATTRS(SP), newmode);
+ SetPair(SCREEN_ATTRS(SP), pair);
+ } else {
+ previous_attr = newmode;
+ previous_pair = pair;
+ }
+
+ returnCode(OK);
+#else
T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), pair));
set_color(newmode, pair);
returnCode(vidputs(newmode, outc));
+#endif
}
#undef vid_attr
NCURSES_EXPORT(int)
-vid_attr(attr_t newmode, short pair, void *opts GCC_UNUSED)
+vid_attr(attr_t newmode, short pair, void *opts)
{
T((T_CALLED("vid_attr(%s,%d)"), _traceattr(newmode), pair));
- set_color(newmode, pair);
- returnCode(vidputs(newmode, _nc_outch));
+ returnCode(vid_puts(newmode, pair, opts, _nc_outch));
}
+/*
+ * This implementation uses the same mask values for A_xxx and WA_xxx, so
+ * we can use termattrs() for part of the logic.
+ */
NCURSES_EXPORT(attr_t)
term_attrs(void)
{
- attr_t attrs = WA_NORMAL;
+ attr_t attrs;
T((T_CALLED("term_attrs()")));
- if (enter_alt_charset_mode)
- attrs |= WA_ALTCHARSET;
-
- if (enter_blink_mode)
- attrs |= WA_BLINK;
-
- if (enter_bold_mode)
- attrs |= WA_BOLD;
-
- if (enter_dim_mode)
- attrs |= WA_DIM;
-
- if (enter_reverse_mode)
- attrs |= WA_REVERSE;
-
- if (enter_standout_mode)
- attrs |= WA_STANDOUT;
-
- if (enter_protected_mode)
- attrs |= WA_PROTECT;
-
- if (enter_secure_mode)
- attrs |= WA_INVIS;
-
- if (enter_underline_mode)
- attrs |= WA_UNDERLINE;
+ attrs = termattrs();
- if (SP->_coloron)
- attrs |= A_COLOR;
+ /* these are only supported for wide-character mode */
+ if (enter_horizontal_hl_mode)
+ attrs |= WA_HORIZONTAL;
+ if (enter_left_hl_mode)
+ attrs |= WA_LEFT;
+ if (enter_low_hl_mode)
+ attrs |= WA_LOW;
+ if (enter_right_hl_mode)
+ attrs |= WA_RIGHT;
+ if (enter_top_hl_mode)
+ attrs |= WA_TOP;
+ if (enter_vertical_hl_mode)
+ attrs |= WA_VERTICAL;
returnAttr(attrs);
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_wacs.c b/contrib/ncurses/ncurses/widechar/lib_wacs.c
index 05fa329dd9fa..fe893b4d2f8b 100644
--- a/contrib/ncurses/ncurses/widechar/lib_wacs.c
+++ b/contrib/ncurses/ncurses/widechar/lib_wacs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002 Free Software Foundation, Inc. *
+ * Copyright (c) 2002,2006 Free 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,23 +33,10 @@
#include <curses.priv.h>
#include <term.h>
-MODULE_ID("$Id: lib_wacs.c,v 1.2 2002/02/17 00:02:15 tom Exp $")
+MODULE_ID("$Id: lib_wacs.c,v 1.7 2006/12/17 15:16:17 tom Exp $")
NCURSES_EXPORT_VAR(cchar_t) * _nc_wacs = 0;
-static int
-_nc_unicode_locale(void)
-{
- char *s;
- if (((s = getenv("LC_ALL")) != 0 && *s != '\0')
- || ((s = getenv("LC_ALL")) != 0 && *s != '\0')
- || ((s = getenv("LC_ALL")) != 0 && *s != '\0')) {
- if (strstr(s, ".UTF-8") != 0)
- return 1;
- }
- return 0;
-}
-
NCURSES_EXPORT(void)
_nc_init_wacs(void)
{
@@ -72,7 +59,7 @@ _nc_init_wacs(void)
{ 'n', { '+', 0x253c }}, /* large plus or crossover */
{ 'o', { '~', 0x23ba }}, /* scan line 1 */
{ 's', { '_', 0x23bd }}, /* scan line 9 */
- { '\'', { '+', 0x25c6 }}, /* diamond */
+ { '`', { '+', 0x25c6 }}, /* diamond */
{ 'a', { ':', 0x2592 }}, /* checker board (stipple) */
{ 'f', { '\'', 0x00b0 }}, /* degree symbol */
{ 'g', { '#', 0x00b1 }}, /* plus/minus */
@@ -99,19 +86,29 @@ _nc_init_wacs(void)
unsigned n, m;
int active = _nc_unicode_locale();
+ /*
+ * If we're running in a UTF-8 locale, will use the Unicode equivalents
+ * rather than the terminfo information. Actually the terminfo should
+ * be the rule, but there are people who are offended by the notion that
+ * a Unicode-capable terminal would have something resembling a mode.
+ * So the smacs/rmacs may be disabled -- sometime.
+ */
T(("initializing WIDE-ACS map (Unicode is%s active)",
active ? "" : " not"));
- if (active) {
- enter_alt_charset_mode = "";
- exit_alt_charset_mode = "";
- acs_chars = "";
- ena_acs = "";
- }
_nc_wacs = typeCalloc(cchar_t, ACS_LEN);
for (n = 0; n < SIZEOF(table); ++n) {
+ int wide = wcwidth(table[n].value[active]);
+
m = table[n].map;
- SetChar(_nc_wacs[m], table[n].value[active], A_NORMAL);
+ if (active && (wide == 1)) {
+ SetChar(_nc_wacs[m], table[n].value[active], A_NORMAL);
+ } else if (acs_map[m] & A_ALTCHARSET) {
+ SetChar(_nc_wacs[m], m, A_ALTCHARSET);
+ } else {
+ SetChar(_nc_wacs[m], table[n].value[0], A_NORMAL);
+ }
+
T(("#%d, SetChar(%c, %#04x) = %s",
n, m,
table[n].value[active],
diff --git a/contrib/ncurses/ncurses/widechar/lib_wunctrl.c b/contrib/ncurses/ncurses/widechar/lib_wunctrl.c
index f4887d125fcf..cd7c56ca73f4 100644
--- a/contrib/ncurses/ncurses/widechar/lib_wunctrl.c
+++ b/contrib/ncurses/ncurses/widechar/lib_wunctrl.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2003,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 *
@@ -37,17 +37,18 @@
#if USE_WIDEC_SUPPORT
-MODULE_ID("$Id: lib_wunctrl.c,v 1.6 2001/09/22 19:18:02 tom Exp $")
+MODULE_ID("$Id: lib_wunctrl.c,v 1.8 2005/04/16 18:10:44 tom Exp $")
NCURSES_EXPORT(wchar_t *)
-wunctrl(cchar_t * wc)
+wunctrl(cchar_t *wc)
{
static wchar_t str[5], *sp;
if (Charable(*wc)) {
- const char *p;
- for (p = unctrl(wctob(CharOf(*wc))), sp = str; *p;)
- *sp++ = btowc(*p++);
+ const char *p = unctrl((unsigned) _nc_to_char((wint_t) CharOf(*wc)));
+
+ for (sp = str; *p;)
+ *sp++ = _nc_to_widechar(*p++);
return str;
} else
return wc->chars;
diff --git a/contrib/ncurses/panel/Makefile.in b/contrib/ncurses/panel/Makefile.in
index c3592526d548..b3174dfb8965 100644
--- a/contrib/ncurses/panel/Makefile.in
+++ b/contrib/ncurses/panel/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.41 2002/01/20 00:41:18 tom Exp $
+# $Id: Makefile.in,v 1.47 2006/10/14 20:40:36 tom Exp $
##############################################################################
-# Copyright (c) 1998,1999,2000,2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2003,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -27,7 +27,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey 1996-2002
#
# Makefile for panels source code.
#
@@ -45,6 +45,9 @@
SHELL = /bin/sh
THIS = Makefile
+x = @EXEEXT@
+o = .@OBJEXT@
+
MODEL = @DFT_LWR_MODEL@
DESTDIR = @DESTDIR@
srcdir = @srcdir@
@@ -56,10 +59,15 @@ includedir = @includedir@
datadir = @datadir@
LIBTOOL = @LIBTOOL@
+LIBTOOL_CLEAN = @LIB_CLEAN@
+LIBTOOL_COMPILE = @LIB_COMPILE@
+LIBTOOL_LINK = @LIB_LINK@
+LIBTOOL_INSTALL = @LIB_INSTALL@
+LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ @INSTALL_LIB@
-INSTALL_PROG = @INSTALL_PROG@
+INSTALL_PROG = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
AR = @AR@
@@ -72,8 +80,7 @@ CC = @CC@
CPP = @CPP@
CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@ -I@top_srcdir@/ncurses \
- -DHAVE_CONFIG_H
+CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
@@ -85,7 +92,7 @@ CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
-LINK = $(LIBTOOL) $(CC)
+LINK = $(LIBTOOL_LINK) $(CC)
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
@@ -98,7 +105,7 @@ NCURSES_MINOR = @NCURSES_MINOR@
REL_VERSION = @cf_cv_rel_version@
ABI_VERSION = @cf_cv_abi_version@
-RANLIB = @RANLIB@
+RANLIB = @LIB_PREP@
IMPORT_LIB = @IMPORT_LIB@
SHARED_LIB = @SHARED_LIB@
diff --git a/contrib/ncurses/panel/llib-lpanel b/contrib/ncurses/panel/llib-lpanel
index 2ca1a3e31818..de49c234ecaa 100644
--- a/contrib/ncurses/panel/llib-lpanel
+++ b/contrib/ncurses/panel/llib-lpanel
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,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 *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1997 *
+ * Author: Thomas E. Dickey 1997,2002,2005 *
****************************************************************************/
/* LINTLIBRARY */
@@ -35,6 +35,45 @@
#include "panel.priv.h"
+#undef _nc_retrace_panel
+PANEL *_nc_retrace_panel(
+ PANEL *pan)
+ { return(*(PANEL **)0); }
+
+#undef _nc_my_visbuf
+const char *_nc_my_visbuf(
+ const void *ptr)
+ { return(*(const char **)0); }
+
+#undef _nc_dPanel
+void _nc_dPanel(
+ const char *text,
+ const PANEL *pan)
+ { /* void */ }
+
+#undef _nc_dStack
+void _nc_dStack(
+ const char *fmt,
+ int num,
+ const PANEL *pan)
+ { /* void */ }
+
+#undef _nc_Wnoutrefresh
+void _nc_Wnoutrefresh(
+ const PANEL *pan)
+ { /* void */ }
+
+#undef _nc_Touchpan
+void _nc_Touchpan(
+ const PANEL *pan)
+ { /* void */ }
+
+#undef _nc_Touchline
+void _nc_Touchline(
+ const PANEL *pan,
+ int start,
+ int count)
+ { /* void */ }
/* ./p_above.c */
diff --git a/contrib/ncurses/panel/llib-lpanelw b/contrib/ncurses/panel/llib-lpanelw
new file mode 100644
index 000000000000..48bd1e0db5a7
--- /dev/null
+++ b/contrib/ncurses/panel/llib-lpanelw
@@ -0,0 +1,182 @@
+/****************************************************************************
+ * Copyright (c) 2002,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 *
+ * "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 2002,2005 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./panel.c */
+
+#include "panel.priv.h"
+
+#undef _nc_retrace_panel
+PANEL *_nc_retrace_panel(
+ PANEL *pan)
+ { return(*(PANEL **)0); }
+
+#undef _nc_my_visbuf
+const char *_nc_my_visbuf(
+ const void *ptr)
+ { return(*(const char **)0); }
+
+#undef _nc_dPanel
+void _nc_dPanel(
+ const char *text,
+ const PANEL *pan)
+ { /* void */ }
+
+#undef _nc_dStack
+void _nc_dStack(
+ const char *fmt,
+ int num,
+ const PANEL *pan)
+ { /* void */ }
+
+#undef _nc_Wnoutrefresh
+void _nc_Wnoutrefresh(
+ const PANEL *pan)
+ { /* void */ }
+
+#undef _nc_Touchpan
+void _nc_Touchpan(
+ const PANEL *pan)
+ { /* void */ }
+
+#undef _nc_Touchline
+void _nc_Touchline(
+ const PANEL *pan,
+ int start,
+ int count)
+ { /* void */ }
+
+/* ./p_above.c */
+
+#undef panel_above
+PANEL *panel_above(
+ const PANEL *pan)
+ { return(*(PANEL **)0); }
+
+/* ./p_below.c */
+
+#undef panel_below
+PANEL *panel_below(
+ const PANEL *pan)
+ { return(*(PANEL **)0); }
+
+/* ./p_bottom.c */
+
+#undef bottom_panel
+int bottom_panel(
+ PANEL *pan)
+ { return(*(int *)0); }
+
+/* ./p_delete.c */
+
+#undef del_panel
+int del_panel(
+ PANEL *pan)
+ { return(*(int *)0); }
+
+/* ./p_hide.c */
+
+#undef hide_panel
+int hide_panel(
+ PANEL *pan)
+ { return(*(int *)0); }
+
+/* ./p_hidden.c */
+
+#undef panel_hidden
+int panel_hidden(
+ const PANEL *pan)
+ { return(*(int *)0); }
+
+/* ./p_move.c */
+
+#undef move_panel
+int move_panel(
+ PANEL *pan,
+ int starty,
+ int startx)
+ { return(*(int *)0); }
+
+/* ./p_new.c */
+
+#undef new_panel
+PANEL *new_panel(
+ WINDOW *win)
+ { return(*(PANEL **)0); }
+
+/* ./p_replace.c */
+
+#undef replace_panel
+int replace_panel(
+ PANEL *pan,
+ WINDOW *win)
+ { return(*(int *)0); }
+
+/* ./p_show.c */
+
+#undef show_panel
+int show_panel(
+ PANEL *pan)
+ { return(*(int *)0); }
+
+/* ./p_top.c */
+
+#undef top_panel
+int top_panel(
+ PANEL *pan)
+ { return(*(int *)0); }
+
+/* ./p_update.c */
+
+#undef update_panels
+void update_panels(void)
+ { /* void */ }
+
+/* ./p_user.c */
+
+#undef set_panel_userptr
+int set_panel_userptr(
+ PANEL *pan,
+ void *uptr)
+ { return(*(int *)0); }
+
+#undef panel_userptr
+void *panel_userptr(
+ const PANEL *pan)
+ { return(*(void **)0); }
+
+/* ./p_win.c */
+
+#undef panel_window
+WINDOW *panel_window(
+ const PANEL *pan)
+ { return(*(WINDOW **)0); }
diff --git a/contrib/ncurses/panel/p_above.c b/contrib/ncurses/panel/p_above.c
index 36e67d2b43df..32495f627f2d 100644
--- a/contrib/ncurses/panel/p_above.c
+++ b/contrib/ncurses/panel/p_above.c
@@ -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 *
@@ -35,17 +35,18 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_above.c,v 1.4 2000/12/10 02:20:44 tom Exp $")
+MODULE_ID("$Id: p_above.c,v 1.6 2005/02/19 16:44:57 tom Exp $")
NCURSES_EXPORT(PANEL *)
-panel_above (const PANEL *pan)
+panel_above(const PANEL * pan)
{
- if(!pan)
+ T((T_CALLED("panel_above(%p)"), pan));
+ if (!pan)
{
/* if top and bottom are equal, we have no or only the pseudo panel;
- if not, we return the panel above the pseudo panel */
- return(EMPTY_STACK() ? (PANEL*)0 : _nc_bottom_panel->above);
+ if not, we return the panel above the pseudo panel */
+ returnPanel(EMPTY_STACK()? (PANEL *) 0 : _nc_bottom_panel->above);
}
else
- return(pan->above);
+ returnPanel(pan->above);
}
diff --git a/contrib/ncurses/panel/p_below.c b/contrib/ncurses/panel/p_below.c
index 5420ff9eeb66..c4b241015f5b 100644
--- a/contrib/ncurses/panel/p_below.c
+++ b/contrib/ncurses/panel/p_below.c
@@ -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 *
@@ -35,19 +35,20 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_below.c,v 1.4 2000/12/10 02:20:44 tom Exp $")
+MODULE_ID("$Id: p_below.c,v 1.6 2005/02/19 16:45:10 tom Exp $")
-NCURSES_EXPORT(PANEL*)
-panel_below (const PANEL *pan)
+NCURSES_EXPORT(PANEL *)
+panel_below(const PANEL * pan)
{
- if(!pan)
+ T((T_CALLED("panel_below(%p)"), pan));
+ if (!pan)
{
/* if top and bottom are equal, we have no or only the pseudo panel */
- return(EMPTY_STACK() ? (PANEL*)0 : _nc_top_panel);
+ returnPanel(EMPTY_STACK()? (PANEL *) 0 : _nc_top_panel);
}
else
{
/* we must not return the pseudo panel */
- return(Is_Pseudo(pan->below) ? (PANEL*) 0 : pan->below);
+ returnPanel(Is_Pseudo(pan->below) ? (PANEL *) 0 : pan->below);
}
}
diff --git a/contrib/ncurses/panel/p_bottom.c b/contrib/ncurses/panel/p_bottom.c
index 0928e77eb828..b861fd9b2ce7 100644
--- a/contrib/ncurses/panel/p_bottom.c
+++ b/contrib/ncurses/panel/p_bottom.c
@@ -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 *
@@ -36,35 +36,37 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_bottom.c,v 1.9 2001/02/24 23:46:33 tom Exp $")
+MODULE_ID("$Id: p_bottom.c,v 1.11 2005/02/19 16:38:16 tom Exp $")
NCURSES_EXPORT(int)
-bottom_panel (PANEL *pan)
+bottom_panel(PANEL * pan)
{
int err = OK;
- if (pan) {
+ T((T_CALLED("bottom_panel(%p)"), pan));
+ if (pan)
+ {
+ if (!Is_Bottom(pan))
+ {
- if(!Is_Bottom(pan)) {
-
- dBug(("--> bottom_panel %s", USER_PTR(pan->user)));
-
- HIDE_PANEL(pan,err,OK);
- assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
-
- dStack("<lb%d>",1,pan);
-
- pan->below = _nc_bottom_panel;
- pan->above = _nc_bottom_panel->above;
- if (pan->above)
- pan->above->below = pan;
- _nc_bottom_panel->above = pan;
-
- dStack("<lb%d>",9,pan);
+ dBug(("--> bottom_panel %s", USER_PTR(pan->user)));
+
+ HIDE_PANEL(pan, err, OK);
+ assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
+
+ dStack("<lb%d>", 1, pan);
+
+ pan->below = _nc_bottom_panel;
+ pan->above = _nc_bottom_panel->above;
+ if (pan->above)
+ pan->above->below = pan;
+ _nc_bottom_panel->above = pan;
+
+ dStack("<lb%d>", 9, pan);
+ }
}
- }
else
err = ERR;
-
- return(err);
+
+ returnCode(err);
}
diff --git a/contrib/ncurses/panel/p_delete.c b/contrib/ncurses/panel/p_delete.c
index 1d4670effc06..24ee26b4ff23 100644
--- a/contrib/ncurses/panel/p_delete.c
+++ b/contrib/ncurses/panel/p_delete.c
@@ -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 *
@@ -36,19 +36,22 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_delete.c,v 1.6 2001/02/24 23:46:41 tom Exp $")
+MODULE_ID("$Id: p_delete.c,v 1.8 2005/02/19 16:38:45 tom Exp $")
NCURSES_EXPORT(int)
-del_panel (PANEL *pan)
+del_panel(PANEL * pan)
{
int err = OK;
- if(pan)
+
+ T((T_CALLED("del_panel(%p)"), pan));
+ if (pan)
{
dBug(("--> del_panel %s", USER_PTR(pan->user)));
- HIDE_PANEL(pan,err,OK);
+ HIDE_PANEL(pan, err, OK);
free((void *)pan);
}
else
err = ERR;
- return(err);
+
+ returnCode(err);
}
diff --git a/contrib/ncurses/panel/p_hidden.c b/contrib/ncurses/panel/p_hidden.c
index d5d13f37a5ef..624c07dae0ba 100644
--- a/contrib/ncurses/panel/p_hidden.c
+++ b/contrib/ncurses/panel/p_hidden.c
@@ -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 *
@@ -36,12 +36,13 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_hidden.c,v 1.5 2000/12/10 02:20:44 tom Exp $")
+MODULE_ID("$Id: p_hidden.c,v 1.7 2005/02/19 16:39:17 tom Exp $")
NCURSES_EXPORT(int)
-panel_hidden (const PANEL *pan)
+panel_hidden(const PANEL * pan)
{
- if(!pan)
- return(ERR);
- return(IS_LINKED(pan) ? FALSE : TRUE);
-}
+ T((T_CALLED("panel_hidden(%p)"), pan));
+ if (!pan)
+ returnCode(ERR);
+ returnCode(IS_LINKED(pan) ? FALSE : TRUE);
+}
diff --git a/contrib/ncurses/panel/p_hide.c b/contrib/ncurses/panel/p_hide.c
index 755997374136..08d8853a201c 100644
--- a/contrib/ncurses/panel/p_hide.c
+++ b/contrib/ncurses/panel/p_hide.c
@@ -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 *
@@ -36,22 +36,23 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_hide.c,v 1.7 2001/02/24 23:46:45 tom Exp $")
+MODULE_ID("$Id: p_hide.c,v 1.9 2005/02/19 16:39:41 tom Exp $")
NCURSES_EXPORT(int)
-hide_panel (register PANEL *pan)
+hide_panel(register PANEL * pan)
{
int err = OK;
- if(!pan)
- return(ERR);
+ T((T_CALLED("hide_panel(%p)"), pan));
+ if (!pan)
+ returnCode(ERR);
dBug(("--> hide_panel %s", USER_PTR(pan->user)));
- dStack("<u%d>",1,pan);
+ dStack("<u%d>", 1, pan);
- HIDE_PANEL(pan,err,ERR);
+ HIDE_PANEL(pan, err, ERR);
- dStack("<u%d>",9,pan);
+ dStack("<u%d>", 9, pan);
- return(err);
+ returnCode(err);
}
diff --git a/contrib/ncurses/panel/p_move.c b/contrib/ncurses/panel/p_move.c
index d7dbd2eafc3f..3818e8cba860 100644
--- a/contrib/ncurses/panel/p_move.c
+++ b/contrib/ncurses/panel/p_move.c
@@ -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 *
@@ -36,21 +36,21 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_move.c,v 1.7 2001/02/24 23:41:35 tom Exp $")
+MODULE_ID("$Id: p_move.c,v 1.9 2005/02/19 16:46:49 tom Exp $")
NCURSES_EXPORT(int)
-move_panel (PANEL *pan, int starty, int startx)
+move_panel(PANEL * pan, int starty, int startx)
{
- if(!pan)
- return(ERR);
+ T((T_CALLED("move_panel(%p,%d,%d)"), pan, starty, startx));
- if (IS_LINKED(pan)) {
- Touchpan(pan);
- PANEL_UPDATE(pan,(PANEL*)0);
- }
+ if (!pan)
+ returnCode(ERR);
- if (mvwin(pan->win,starty,startx))
- return(ERR);
+ if (IS_LINKED(pan))
+ {
+ Touchpan(pan);
+ PANEL_UPDATE(pan, (PANEL *) 0);
+ }
- return(OK);
+ returnCode(mvwin(pan->win, starty, startx));
}
diff --git a/contrib/ncurses/panel/p_new.c b/contrib/ncurses/panel/p_new.c
index 3dfd80691704..3e48e3696735 100644
--- a/contrib/ncurses/panel/p_new.c
+++ b/contrib/ncurses/panel/p_new.c
@@ -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 *
@@ -36,61 +36,65 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_new.c,v 1.6 2000/12/10 02:20:44 tom Exp $")
+MODULE_ID("$Id: p_new.c,v 1.8 2005/02/19 16:41:03 tom Exp $")
#ifdef TRACE
-static char* stdscr_id;
-static char* new_id;
+static char *stdscr_id;
+static char *new_id;
#endif
/*+-------------------------------------------------------------------------
Get root (i.e. stdscr's) panel.
Establish the pseudo panel for stdscr if necessary.
--------------------------------------------------------------------------*/
-static PANEL*
+static PANEL *
root_panel(void)
{
- if(_nc_stdscr_pseudo_panel == (PANEL*)0)
+ if (_nc_stdscr_pseudo_panel == (PANEL *) 0)
{
-
+
assert(stdscr && !_nc_bottom_panel && !_nc_top_panel);
- _nc_stdscr_pseudo_panel = (PANEL*)malloc(sizeof(PANEL));
- if (_nc_stdscr_pseudo_panel != 0) {
- PANEL* pan = _nc_stdscr_pseudo_panel;
- WINDOW* win = stdscr;
- pan->win = win;
- pan->below = (PANEL*)0;
- pan->above = (PANEL*)0;
+ _nc_stdscr_pseudo_panel = (PANEL *) malloc(sizeof(PANEL));
+ if (_nc_stdscr_pseudo_panel != 0)
+ {
+ PANEL *pan = _nc_stdscr_pseudo_panel;
+ WINDOW *win = stdscr;
+
+ pan->win = win;
+ pan->below = (PANEL *) 0;
+ pan->above = (PANEL *) 0;
#ifdef TRACE
- if (!stdscr_id)
- stdscr_id = strdup("stdscr");
- pan->user = stdscr_id;
+ if (!stdscr_id)
+ stdscr_id = strdup("stdscr");
+ pan->user = stdscr_id;
#else
- pan->user = (void*)0;
+ pan->user = (void *)0;
#endif
- _nc_bottom_panel = _nc_top_panel = pan;
- }
+ _nc_bottom_panel = _nc_top_panel = pan;
+ }
}
return _nc_stdscr_pseudo_panel;
}
NCURSES_EXPORT(PANEL *)
-new_panel (WINDOW *win)
+new_panel(WINDOW *win)
{
- PANEL *pan = (PANEL*)0;
+ PANEL *pan = (PANEL *) 0;
+
+ T((T_CALLED("new_panel(%p)"), win));
if (!win)
- return(pan);
+ returnPanel(pan);
if (!_nc_stdscr_pseudo_panel)
(void)root_panel();
assert(_nc_stdscr_pseudo_panel);
- if (!(win->_flags & _ISPAD) && (pan = (PANEL*)malloc(sizeof(PANEL))))
+ if (!(win->_flags & _ISPAD) && (pan = (PANEL *) malloc(sizeof(PANEL))))
{
pan->win = win;
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
+ pan->above = (PANEL *) 0;
+ pan->below = (PANEL *) 0;
#ifdef TRACE
if (!new_id)
new_id = strdup("new");
@@ -100,5 +104,5 @@ new_panel (WINDOW *win)
#endif
(void)show_panel(pan);
}
- return(pan);
+ returnPanel(pan);
}
diff --git a/contrib/ncurses/panel/p_replace.c b/contrib/ncurses/panel/p_replace.c
index a3b88cbfa88e..5d0d295c8b17 100644
--- a/contrib/ncurses/panel/p_replace.c
+++ b/contrib/ncurses/panel/p_replace.c
@@ -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 *
@@ -36,20 +36,23 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_replace.c,v 1.7 2001/02/24 23:41:38 tom Exp $")
+MODULE_ID("$Id: p_replace.c,v 1.9 2005/02/19 16:41:31 tom Exp $")
NCURSES_EXPORT(int)
-replace_panel (PANEL *pan, WINDOW *win)
+replace_panel(PANEL * pan, WINDOW *win)
{
- if(!pan)
- return(ERR);
-
- if (IS_LINKED(pan)) {
- Touchpan(pan);
- PANEL_UPDATE(pan,(PANEL*)0);
- }
-
+ T((T_CALLED("replace_panel(%p,%p)"), pan, win));
+
+ if (!pan)
+ returnCode(ERR);
+
+ if (IS_LINKED(pan))
+ {
+ Touchpan(pan);
+ PANEL_UPDATE(pan, (PANEL *) 0);
+ }
+
pan->win = win;
- return(OK);
+ returnCode(OK);
}
diff --git a/contrib/ncurses/panel/p_show.c b/contrib/ncurses/panel/p_show.c
index 0e1968fdea58..35eee237b958 100644
--- a/contrib/ncurses/panel/p_show.c
+++ b/contrib/ncurses/panel/p_show.c
@@ -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 *
@@ -36,32 +36,34 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_show.c,v 1.9 2001/02/24 23:46:50 tom Exp $")
+MODULE_ID("$Id: p_show.c,v 1.11 2005/02/19 16:42:02 tom Exp $")
NCURSES_EXPORT(int)
-show_panel (PANEL *pan)
-{
+show_panel(PANEL * pan)
+{
int err = OK;
- if(!pan)
- return(ERR);
+ T((T_CALLED("show_panel(%p)"), pan));
+
+ if (!pan)
+ returnCode(ERR);
if (Is_Top(pan))
- return(OK);
+ returnCode(OK);
dBug(("--> show_panel %s", USER_PTR(pan->user)));
- HIDE_PANEL(pan,err,OK);
+ HIDE_PANEL(pan, err, OK);
- dStack("<lt%d>",1,pan);
+ dStack("<lt%d>", 1, pan);
assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
_nc_top_panel->above = pan;
- pan->below = _nc_top_panel;
- pan->above = (PANEL *)0;
+ pan->below = _nc_top_panel;
+ pan->above = (PANEL *) 0;
_nc_top_panel = pan;
-
- dStack("<lt%d>",9,pan);
- return(OK);
+ dStack("<lt%d>", 9, pan);
+
+ returnCode(OK);
}
diff --git a/contrib/ncurses/panel/p_top.c b/contrib/ncurses/panel/p_top.c
index aa7d9d420e5e..8bd1d9fb3fec 100644
--- a/contrib/ncurses/panel/p_top.c
+++ b/contrib/ncurses/panel/p_top.c
@@ -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 *
@@ -36,10 +36,11 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_top.c,v 1.3 2000/12/10 02:20:44 tom Exp $")
+MODULE_ID("$Id: p_top.c,v 1.5 2005/02/19 16:42:23 tom Exp $")
NCURSES_EXPORT(int)
-top_panel (PANEL *pan)
+top_panel(PANEL * pan)
{
- return(show_panel(pan));
+ T((T_CALLED("top_panel(%p)"), pan));
+ returnCode(show_panel(pan));
}
diff --git a/contrib/ncurses/panel/p_update.c b/contrib/ncurses/panel/p_update.c
index 1a03739d14af..5967718160ff 100644
--- a/contrib/ncurses/panel/p_update.c
+++ b/contrib/ncurses/panel/p_update.c
@@ -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 *
@@ -36,18 +36,19 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_update.c,v 1.7 2001/02/24 23:41:42 tom Exp $")
+MODULE_ID("$Id: p_update.c,v 1.9 2005/02/19 16:49:47 tom Exp $")
NCURSES_EXPORT(void)
-update_panels (void)
+update_panels(void)
{
PANEL *pan;
+ T((T_CALLED("update_panels()")));
dBug(("--> update_panels"));
pan = _nc_bottom_panel;
- while(pan && pan->above)
+ while (pan && pan->above)
{
- PANEL_UPDATE(pan,pan->above);
+ PANEL_UPDATE(pan, pan->above);
pan = pan->above;
}
@@ -57,4 +58,6 @@ update_panels (void)
Wnoutrefresh(pan);
pan = pan->above;
}
+
+ returnVoid;
}
diff --git a/contrib/ncurses/panel/p_user.c b/contrib/ncurses/panel/p_user.c
index de1ec7dd84c2..ffa25f85ae12 100644
--- a/contrib/ncurses/panel/p_user.c
+++ b/contrib/ncurses/panel/p_user.c
@@ -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 *
@@ -36,21 +36,21 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_user.c,v 1.4 2000/12/10 02:20:44 tom Exp $")
+MODULE_ID("$Id: p_user.c,v 1.6 2005/02/19 16:52:44 tom Exp $")
NCURSES_EXPORT(int)
-set_panel_userptr
-(PANEL *pan, NCURSES_CONST void *uptr)
+set_panel_userptr(PANEL * pan, NCURSES_CONST void *uptr)
{
- if(!pan)
- return(ERR);
+ T((T_CALLED("set_panel_userptr(%p,%p)"), pan, uptr));
+ if (!pan)
+ returnCode(ERR);
pan->user = uptr;
- return(OK);
+ returnCode(OK);
}
-NCURSES_EXPORT(NCURSES_CONST void*)
-panel_userptr (const PANEL *pan)
+NCURSES_EXPORT(NCURSES_CONST void *)
+panel_userptr(const PANEL * pan)
{
- return(pan ? pan->user : (NCURSES_CONST void *)0);
+ T((T_CALLED("panel_userptr(%p)"), pan));
+ returnCVoidPtr(pan ? pan->user : (NCURSES_CONST void *)0);
}
-
diff --git a/contrib/ncurses/panel/p_win.c b/contrib/ncurses/panel/p_win.c
index 2b9f5b0c8297..e7d2cea8e3fe 100644
--- a/contrib/ncurses/panel/p_win.c
+++ b/contrib/ncurses/panel/p_win.c
@@ -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 *
@@ -36,14 +36,11 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_win.c,v 1.3 2000/12/10 02:20:43 tom Exp $")
+MODULE_ID("$Id: p_win.c,v 1.5 2005/02/19 16:44:16 tom Exp $")
NCURSES_EXPORT(WINDOW *)
-panel_window (const PANEL *pan)
+panel_window(const PANEL * pan)
{
- return(pan ? pan->win : (WINDOW *)0);
+ T((T_CALLED("panel_window(%p)"), pan));
+ returnWin(pan ? pan->win : (WINDOW *)0);
}
-
-
-
-
diff --git a/contrib/ncurses/panel/panel.c b/contrib/ncurses/panel/panel.c
index a56d57ef5ea8..16a8083d64b2 100644
--- a/contrib/ncurses/panel/panel.c
+++ b/contrib/ncurses/panel/panel.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,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 *
@@ -34,37 +34,51 @@
/* panel.c -- implementation of panels library, some core routines */
#include "panel.priv.h"
-MODULE_ID("$Id: panel.c,v 1.20 2001/02/24 23:17:26 tom Exp $")
+MODULE_ID("$Id: panel.c,v 1.23 2005/02/19 18:04:31 tom Exp $")
+/*+-------------------------------------------------------------------------
+ _nc_retrace_panel (pan)
+--------------------------------------------------------------------------*/
+#ifdef TRACE
+NCURSES_EXPORT(PANEL *)
+_nc_retrace_panel(PANEL * pan)
+{
+ T((T_RETURN("%p"), pan));
+ return pan;
+}
+#endif
+
+/*+-------------------------------------------------------------------------
+ _nc_my_visbuf(ptr)
+--------------------------------------------------------------------------*/
#ifdef TRACE
#ifndef TRACE_TXT
NCURSES_EXPORT(const char *)
-_nc_my_visbuf (const void *ptr)
+_nc_my_visbuf(const void *ptr)
{
- char temp[32];
- if (ptr != 0)
- sprintf(temp, "ptr:%p", ptr);
- else
- strcpy(temp, "<null>");
- return _nc_visbuf(temp);
+ char temp[32];
+
+ if (ptr != 0)
+ sprintf(temp, "ptr:%p", ptr);
+ else
+ strcpy(temp, "<null>");
+ return _nc_visbuf(temp);
}
#endif
#endif
-
/*+-------------------------------------------------------------------------
dPanel(text,pan)
--------------------------------------------------------------------------*/
#ifdef TRACE
NCURSES_EXPORT(void)
-_nc_dPanel
-(const char *text, const PANEL *pan)
+_nc_dPanel(const char *text, const PANEL * pan)
{
- _tracef("%s id=%s b=%s a=%s y=%d x=%d",
- text, USER_PTR(pan->user),
- (pan->below) ? USER_PTR(pan->below->user) : "--",
- (pan->above) ? USER_PTR(pan->above->user) : "--",
- PSTARTY(pan), PSTARTX(pan));
+ _tracef("%s id=%s b=%s a=%s y=%d x=%d",
+ text, USER_PTR(pan->user),
+ (pan->below) ? USER_PTR(pan->below->user) : "--",
+ (pan->above) ? USER_PTR(pan->above->user) : "--",
+ PSTARTY(pan), PSTARTX(pan));
}
#endif
@@ -73,21 +87,20 @@ _nc_dPanel
--------------------------------------------------------------------------*/
#ifdef TRACE
NCURSES_EXPORT(void)
-_nc_dStack
-(const char *fmt, int num, const PANEL *pan)
+_nc_dStack(const char *fmt, int num, const PANEL * pan)
{
char s80[80];
- sprintf(s80,fmt,num,pan);
- _tracef("%s b=%s t=%s",s80,
- (_nc_bottom_panel) ? USER_PTR(_nc_bottom_panel->user) : "--",
- (_nc_top_panel) ? USER_PTR(_nc_top_panel->user) : "--");
- if(pan)
+ sprintf(s80, fmt, num, pan);
+ _tracef("%s b=%s t=%s", s80,
+ (_nc_bottom_panel) ? USER_PTR(_nc_bottom_panel->user) : "--",
+ (_nc_top_panel) ? USER_PTR(_nc_top_panel->user) : "--");
+ if (pan)
_tracef("pan id=%s", USER_PTR(pan->user));
pan = _nc_bottom_panel;
- while(pan)
+ while (pan)
{
- dPanel("stk",pan);
+ dPanel("stk", pan);
pan = pan->above;
}
}
@@ -98,9 +111,9 @@ _nc_dStack
--------------------------------------------------------------------------*/
#ifdef TRACE
NCURSES_EXPORT(void)
-_nc_Wnoutrefresh (const PANEL *pan)
+_nc_Wnoutrefresh(const PANEL * pan)
{
- dPanel("wnoutrefresh",pan);
+ dPanel("wnoutrefresh", pan);
wnoutrefresh(pan->win);
}
#endif
@@ -110,9 +123,9 @@ _nc_Wnoutrefresh (const PANEL *pan)
--------------------------------------------------------------------------*/
#ifdef TRACE
NCURSES_EXPORT(void)
-_nc_Touchpan (const PANEL *pan)
+_nc_Touchpan(const PANEL * pan)
{
- dPanel("Touchpan",pan);
+ dPanel("Touchpan", pan);
touchwin(pan->win);
}
#endif
@@ -122,19 +135,23 @@ _nc_Touchpan (const PANEL *pan)
--------------------------------------------------------------------------*/
#ifdef TRACE
NCURSES_EXPORT(void)
-_nc_Touchline
-(const PANEL *pan, int start, int count)
+_nc_Touchline(const PANEL * pan, int start, int count)
{
char s80[80];
- sprintf(s80,"Touchline s=%d c=%d",start,count);
- dPanel(s80,pan);
- touchline(pan->win,start,count);
+
+ sprintf(s80, "Touchline s=%d c=%d", start, count);
+ dPanel(s80, pan);
+ touchline(pan->win, start, count);
}
#endif
#ifndef TRACE
# ifndef __GNUC__
/* Some C compilers need something defined in a source file */
- void _nc_dummy_panel(void) { }
+extern void _nc_dummy_panel(void);
+void
+_nc_dummy_panel(void)
+{
+}
# endif
#endif
diff --git a/contrib/ncurses/panel/panel.h b/contrib/ncurses/panel/panel.h
index 3b8542a7adce..1e02091d97f2 100644
--- a/contrib/ncurses/panel/panel.h
+++ b/contrib/ncurses/panel/panel.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2006 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -31,6 +31,8 @@
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
+/* $Id: panel.h,v 1.10 2006/05/27 19:49:40 tom Exp $ */
+
/* panel.h -- interface file for panels library */
#ifndef NCURSES_PANEL_H_incl
diff --git a/contrib/ncurses/panel/panel.priv.h b/contrib/ncurses/panel/panel.priv.h
index 7097d8423cf5..98d741ff6ef0 100644
--- a/contrib/ncurses/panel/panel.priv.h
+++ b/contrib/ncurses/panel/panel.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,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 *
@@ -26,7 +26,7 @@
* authorization. *
****************************************************************************/
-/* $Id: panel.priv.h,v 1.19 2001/06/02 23:31:05 tom Exp $ */
+/* $Id: panel.priv.h,v 1.21 2005/11/26 15:27:00 tom Exp $ */
#ifndef NCURSES_PANEL_PRIV_H
#define NCURSES_PANEL_PRIV_H 1
@@ -51,12 +51,6 @@
#include "panel.h"
#include <nc_panel.h>
-#if ( CC_HAS_INLINE_FUNCS && !defined(TRACE) )
-# define INLINE inline
-#else
-# define INLINE
-#endif
-
#if USE_RCS_IDS
# define MODULE_ID(id) static const char Ident[] = id;
#else
@@ -72,6 +66,9 @@
# define USER_PTR(ptr) _nc_my_visbuf((const char *)ptr)
# endif
+# define returnPanel(code) TRACE_RETURN(code,panel)
+
+ extern NCURSES_EXPORT(PANEL *) _nc_retrace_panel (PANEL *);
extern NCURSES_EXPORT(void) _nc_dPanel (const char*, const PANEL*);
extern NCURSES_EXPORT(void) _nc_dStack (const char*, int, const PANEL*);
extern NCURSES_EXPORT(void) _nc_Wnoutrefresh (const PANEL*);
@@ -85,6 +82,7 @@
# define Touchpan(pan) _nc_Touchpan(pan)
# define Touchline(pan,start,count) _nc_Touchline(pan,start,count)
#else /* !TRACE */
+# define returnPanel(code) return code
# define dBug(x)
# define dPanel(text,pan)
# define dStack(fmt,num,pan)
@@ -98,7 +96,7 @@
#define _nc_bottom_panel _nc_panelhook()->bottom_panel
#define EMPTY_STACK() (_nc_top_panel==_nc_bottom_panel)
-#define Is_Bottom(p) (((p)!=(PANEL*)0) && !EMPTY_STACK() && (_nc_bottom_panel->above==(p)))
+#define Is_Bottom(p) (((p)!=(PANEL*)0) && !EMPTY_STACK() && (_nc_bottom_panel->above==(p)))
#define Is_Top(p) (((p)!=(PANEL*)0) && !EMPTY_STACK() && (_nc_top_panel==(p)))
#define Is_Pseudo(p) ((p) && ((p)==_nc_bottom_panel))
@@ -138,9 +136,9 @@
/*+-------------------------------------------------------------------------
Walk through the panel stack starting at the given location and
check for intersections; overlapping panels are "touched", so they
- are incrementally overwriting cells that should be hidden.
+ are incrementally overwriting cells that should be hidden.
If the "touch" flag is set, the panel gets touched before it is
- updated.
+ updated.
---------------------------------------------------------------------------*/
#define PANEL_UPDATE(pan,panstart)\
{ PANEL* pan2 = ((panstart) ? (panstart) : _nc_bottom_panel);\
diff --git a/contrib/ncurses/progs/MKtermsort.sh b/contrib/ncurses/progs/MKtermsort.sh
index c3495c44ebae..18b90ac265d8 100755
--- a/contrib/ncurses/progs/MKtermsort.sh
+++ b/contrib/ncurses/progs/MKtermsort.sh
@@ -1,23 +1,53 @@
#!/bin/sh
-# $Id: MKtermsort.sh,v 1.7 2001/05/26 23:37:57 tom Exp $
+# $Id: MKtermsort.sh,v 1.9 2003/01/11 22:23:50 tom Exp $
#
# MKtermsort.sh -- generate indirection vectors for the various sort methods
#
+##############################################################################
+# Copyright (c) 1998-2002,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"), #
+# 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. #
+##############################################################################
+#
# The output of this script is C source for nine arrays that list three sort
# orders for each of the three different classes of terminfo capabilities.
#
# keep the order independent of locale:
-LANGUAGE=C
-LC_ALL=C
-export LANGUAGE
-export LC_ALL
+if test "${LANGUAGE+set}" = set; then LANGUAGE=C; export LANGUAGE; fi
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
+if test "${LC_COLLATE+set}" = set; then LC_COLLATE=C; export LC_COLLATE; fi
#
AWK=${1-awk}
DATA=${2-../include/Caps}
data=data$$
trap 'rm -f $data' 1 2 5 15
-sed -e 's/[ ]\+/ /g' < $DATA >$data
+sed -e 's/[ ][ ]*/ /g' < $DATA >$data
DATA=$data
echo "/*";
diff --git a/contrib/ncurses/progs/Makefile.in b/contrib/ncurses/progs/Makefile.in
index 43b85c43faa4..820e0b439a6b 100644
--- a/contrib/ncurses/progs/Makefile.in
+++ b/contrib/ncurses/progs/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.56 2001/12/08 18:48:01 tom Exp $
+# $Id: Makefile.in,v 1.70 2006/12/17 15:55:48 tom Exp $
##############################################################################
-# Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -27,7 +27,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey 1996-on
#
# Makefile for ncurses source code.
#
@@ -47,10 +47,13 @@ THIS = Makefile
CF_MFLAGS = @cf_cv_makeflags@
@SET_MAKE@
-x = @PROG_EXT@
+
+x = @EXEEXT@
+o = .@OBJEXT@
MODEL = ../@DFT_OBJ_SUBDIR@
DESTDIR = @DESTDIR@
+top_srcdir = @top_srcdir@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
@@ -60,9 +63,14 @@ includedir = @includedir@
datadir = @datadir@
LIBTOOL = @LIBTOOL@
+LIBTOOL_CLEAN = @LIB_CLEAN@
+LIBTOOL_COMPILE = @LIB_COMPILE@
+LIBTOOL_LINK = @LIB_LINK@
+LIBTOOL_INSTALL = @LIB_INSTALL@
+LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_PROG = @INSTALL_PROGRAM@
transform = @program_transform_name@
AWK = @AWK@
@@ -72,9 +80,8 @@ CC = @CC@
CPP = @CPP@
CFLAGS = @CFLAGS@
-INCDIR = $(srcdir)/../include
-CPPFLAGS = -I../progs -I$(srcdir) @CPPFLAGS@ \
- -DHAVE_CONFIG_H
+INCDIR = $(top_srcdir)/include
+CPPFLAGS = -I../progs -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
@@ -86,16 +93,20 @@ CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
+REL_VERSION = @cf_cv_rel_version@
+ABI_VERSION = @cf_cv_abi_version@
+LOCAL_LIBDIR = @top_builddir@/lib
+
LD = @LD@
-LINK = @LINK_PROGS@ $(LIBTOOL) $(CC)
+LINK = @LINK_PROGS@ $(LIBTOOL_LINK) $(CC)
LDFLAGS = @EXTRA_LDFLAGS@ \
- @PROG_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@ @EXTRA_LIBS@
+ @TINFO_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@
-LDFLAGS_LIBTOOL = $(LDFLAGS)
-LDFLAGS_NORMAL = $(LDFLAGS)
-LDFLAGS_DEBUG = $(LDFLAGS) @CC_G_OPT@
-LDFLAGS_PROFILE = $(LDFLAGS) -pg
-LDFLAGS_SHARED = $(LDFLAGS) @LD_SHARED_OPTS@
+LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL)
+LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL)
+LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG)
+LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE)
+LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@
LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@)
@@ -107,16 +118,20 @@ AUTO_SRC = \
termsort.c \
transform.h
-# tic and toe rely on direct access to the terminfo database
-GET_PROGS = infocmp$x clear$x tput$x tset$x
-PUT_PROGS = @MAKE_TERMINFO@ tic$x toe$x
+# tic relies on direct access to the terminfo database
+GET_PROGS = infocmp$x clear$x tput$x tset$x toe$x
+PUT_PROGS = @MAKE_TERMINFO@ tic$x
PROGS = $(PUT_PROGS) $(GET_PROGS)
-TESTPROGS = mvcur$x tctest$x hardscroll$x hashmap$x
-
# Default library, for linking applications
DEPS_CURSES = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
+HEADER_DEPS = \
+ ../include/curses.h \
+ $(INCDIR)/term_entry.h \
+ $(INCDIR)/tic.h \
+ $(INCDIR)/nc_alloc.h
+
################################################################################
all: $(AUTO_SRC) $(PROGS)
@@ -132,6 +147,7 @@ uninstall.libs:
TRANSFORM = sed 's/$x$$//'|sed '$(transform)'|sed 's/$$/$x/'
+# transformed names for installing files
actual_captoinfo = `echo captoinfo$x| $(TRANSFORM)`
actual_clear = `echo clear$x| $(TRANSFORM)`
actual_infocmp = `echo infocmp$x| $(TRANSFORM)`
@@ -143,38 +159,44 @@ actual_toe = `echo toe$x| $(TRANSFORM)`
actual_tput = `echo tput$x| $(TRANSFORM)`
actual_tset = `echo tset$x| $(TRANSFORM)`
+# transformed names for comparing at runtime
+define_captoinfo = `echo captoinfo| $(TRANSFORM)`
+define_infotocap = `echo infotocap| $(TRANSFORM)`
+define_init = `echo init| $(TRANSFORM)`
+define_reset = `echo reset| $(TRANSFORM)`
+
transform.h :
- echo "#define PROG_CAPTOINFO \"$(actual_captoinfo)\"" >$@
- echo "#define PROG_INFOTOCAP \"$(actual_infotocap)\"" >>$@
- echo "#define PROG_RESET \"$(actual_reset)\"" >>$@
- echo "#define PROG_INIT \"$(actual_init)\"" >>$@
+ echo "#define PROG_CAPTOINFO \"$(define_captoinfo)\"" >$@
+ echo "#define PROG_INFOTOCAP \"$(define_infotocap)\"" >>$@
+ echo "#define PROG_RESET \"$(define_reset)\"" >>$@
+ echo "#define PROG_INIT \"$(define_init)\"" >>$@
install.progs: $(AUTO_SRC) $(PROGS) $(DESTDIR)$(bindir)
-@MAKE_TERMINFO@ $(LIBTOOL) $(INSTALL_PROGRAM) tic$x $(DESTDIR)$(bindir)/$(actual_tic)
-@MAKE_TERMINFO@ $(LIBTOOL) $(INSTALL_PROGRAM) toe$x $(DESTDIR)$(bindir)/$(actual_toe)
+@MAKE_TERMINFO@ $(LIBTOOL_INSTALL) $(INSTALL_PROG) tic$x $(DESTDIR)$(bindir)/$(actual_tic)
+@MAKE_TERMINFO@ $(LIBTOOL_INSTALL) $(INSTALL_PROG) toe$x $(DESTDIR)$(bindir)/$(actual_toe)
@MAKE_TERMINFO@ @echo "linking $(actual_infotocap) to $(actual_tic)"
@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap)
@MAKE_TERMINFO@ (cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_infotocap))
@MAKE_TERMINFO@ @echo "linking $(actual_captoinfo) to $(actual_tic)"
@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo)
@MAKE_TERMINFO@ (cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_captoinfo))
- $(LIBTOOL) $(INSTALL_PROGRAM) infocmp$x $(DESTDIR)$(bindir)/$(actual_infocmp)
- $(LIBTOOL) $(INSTALL_PROGRAM) clear$x $(DESTDIR)$(bindir)/$(actual_clear)
- $(LIBTOOL) $(INSTALL_PROGRAM) tput$x $(DESTDIR)$(bindir)/$(actual_tput)
- $(LIBTOOL) $(INSTALL_PROGRAM) tset$x $(DESTDIR)$(bindir)/$(actual_tset)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROG) infocmp$x $(DESTDIR)$(bindir)/$(actual_infocmp)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROG) clear$x $(DESTDIR)$(bindir)/$(actual_clear)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROG) tput$x $(DESTDIR)$(bindir)/$(actual_tput)
+ $(LIBTOOL_INSTALL) $(INSTALL_PROG) tset$x $(DESTDIR)$(bindir)/$(actual_tset)
@echo "linking $(actual_reset) to $(actual_tset)"
-@rm -f $(DESTDIR)$(bindir)/$(actual_reset)
(cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tset) $(actual_reset))
uninstall.progs:
-@MAKE_TERMINFO@ -@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_tic)
-@MAKE_TERMINFO@ -@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_toe)
+@MAKE_TERMINFO@ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tic)
+@MAKE_TERMINFO@ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_toe)
@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo)
@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap)
- -@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_infocmp)
- -@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_clear)
- -@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_tput)
- -@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/$(actual_tset)
+ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_infocmp)
+ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_clear)
+ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tput)
+ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tset)
-@rm -f $(DESTDIR)$(bindir)/$(actual_reset)
$(DESTDIR)$(bindir) :
@@ -185,47 +207,47 @@ $(DESTDIR)$(bindir) :
#
DEPS_TIC = \
- $(MODEL)/tic.o \
- $(MODEL)/dump_entry.o
+ $(MODEL)/tic$o \
+ $(MODEL)/dump_entry$o
tic$x: $(DEPS_TIC) $(DEPS_CURSES) transform.h
@ECHO_LINK@ $(LINK) $(DEPS_TIC) $(LDFLAGS_DEFAULT) -o $@
DEPS_TOE = \
- $(MODEL)/toe.o \
- $(MODEL)/dump_entry.o
+ $(MODEL)/toe$o \
+ $(MODEL)/dump_entry$o
toe$x: $(DEPS_TOE) $(DEPS_CURSES)
@ECHO_LINK@ $(LINK) $(DEPS_TOE) $(LDFLAGS_DEFAULT) -o $@
DEPS_CLEAR = \
- $(MODEL)/clear.o
+ $(MODEL)/clear$o
clear$x: $(DEPS_CLEAR) $(DEPS_CURSES)
@ECHO_LINK@ $(LINK) $(DEPS_CLEAR) $(LDFLAGS_DEFAULT) -o $@
DEPS_TPUT = \
- $(MODEL)/tput.o
+ $(MODEL)/tput$o
tput$x: $(DEPS_TPUT) $(DEPS_CURSES) transform.h
@ECHO_LINK@ $(LINK) $(DEPS_TPUT) $(LDFLAGS_DEFAULT) -o $@
DEPS_INFOCMP = \
- $(MODEL)/infocmp.o \
- $(MODEL)/dump_entry.o
+ $(MODEL)/infocmp$o \
+ $(MODEL)/dump_entry$o
infocmp$x: $(DEPS_INFOCMP) $(DEPS_CURSES)
@ECHO_LINK@ $(LINK) $(DEPS_INFOCMP) $(LDFLAGS_DEFAULT) -o $@
DEPS_TSET = \
- $(MODEL)/tset.o \
- $(MODEL)/dump_entry.o
+ $(MODEL)/tset$o \
+ $(MODEL)/dump_entry$o
tset$x: $(DEPS_TSET) $(DEPS_CURSES) transform.h
@ECHO_LINK@ $(LINK) $(DEPS_TSET) $(LDFLAGS_DEFAULT) -o $@
termsort.c: $(srcdir)/MKtermsort.sh
- sh -c "$(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@" >$@
+ sh $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ >$@
#
# Utility productions start here
@@ -239,9 +261,9 @@ tags:
mostlyclean ::
-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
- -rm -f $(TESTPROGS)
clean :: mostlyclean
+ -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi"
-rm -f $(AUTO_SRC)
-rm -f $(PROGS)
-rm -rf .libs
diff --git a/contrib/ncurses/progs/capconvert b/contrib/ncurses/progs/capconvert
index 2125a0d68d02..8199bbf09b7e 100755
--- a/contrib/ncurses/progs/capconvert
+++ b/contrib/ncurses/progs/capconvert
@@ -1,5 +1,32 @@
#!/bin/sh
-# $Id: capconvert,v 1.3 1997/08/02 21:52:06 tom Exp $
+##############################################################################
+# Copyright (c) 1998,2006 Free Software 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: capconvert,v 1.4 2006/04/22 21:46:17 tom Exp $
#
# capconvert -- automated conversion from termcap to terminfo
#
diff --git a/contrib/ncurses/progs/clear.c b/contrib/ncurses/progs/clear.c
index d27b62544a94..4e4aaa98aabc 100644
--- a/contrib/ncurses/progs/clear.c
+++ b/contrib/ncurses/progs/clear.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,30 +29,30 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
-
/*
* clear.c -- clears the terminal's screen
*/
#include <progs.priv.h>
-#include <curses.h>
-
-MODULE_ID("$Id: clear.c,v 1.8 1998/09/26 11:42:50 tom Exp $")
+MODULE_ID("$Id: clear.c,v 1.10 2006/05/20 17:47:47 tom Exp $")
-static int putch(int c)
+static int
+putch(int c)
{
- return putchar(c);
+ return putchar(c);
}
-int main(
+int
+main(
int argc GCC_UNUSED,
- char *argv[] GCC_UNUSED)
+ char *argv[]GCC_UNUSED)
{
- setupterm((char *) 0, STDOUT_FILENO, (int *) 0);
- return (tputs(clear_screen, lines > 0 ? lines : 1, putch) == ERR)
+ setupterm((char *) 0, STDOUT_FILENO, (int *) 0);
+ ExitProgram((tputs(clear_screen, lines > 0 ? lines : 1, putch) == ERR)
? EXIT_FAILURE
- : EXIT_SUCCESS;
+ : EXIT_SUCCESS);
}
diff --git a/contrib/ncurses/progs/clear.sh b/contrib/ncurses/progs/clear.sh
index 1b6b0bb8a607..f26112b97c38 100755
--- a/contrib/ncurses/progs/clear.sh
+++ b/contrib/ncurses/progs/clear.sh
@@ -1 +1,29 @@
+#!/bin/sh
+##############################################################################
+# Copyright (c) 1998,2006 Free Software 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. #
+##############################################################################
exec tput clear
diff --git a/contrib/ncurses/progs/dump_entry.c b/contrib/ncurses/progs/dump_entry.c
index f54ecf83919d..0a3cb38059cd 100644
--- a/contrib/ncurses/progs/dump_entry.c
+++ b/contrib/ncurses/progs/dump_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 "termsort.c" /* this C file is generated */
#include <parametrized.h> /* so is this */
-MODULE_ID("$Id: dump_entry.c,v 1.58 2002/06/01 22:58:11 tom Exp $")
+MODULE_ID("$Id: dump_entry.c,v 1.79 2006/09/30 20:18:15 tom Exp $")
#define INDENT 8
#define DISCARD(string) string = ABSENT_STRING
@@ -59,11 +59,13 @@ 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 char *save_sgr;
+
static DYNBUF outbuf;
static DYNBUF tmpbuf;
/* indirection pointers for implementing sort and display modes */
-static const int *bool_indirect, *num_indirect, *str_indirect;
+static const PredIdx *bool_indirect, *num_indirect, *str_indirect;
static NCURSES_CONST char *const *bool_names;
static NCURSES_CONST char *const *num_names;
static NCURSES_CONST char *const *str_names;
@@ -262,7 +264,7 @@ dump_init(const char *version, int mode, int sort, int twidth, int traceval,
static TERMTYPE *cur_type;
static int
-dump_predicate(int type, int idx)
+dump_predicate(PredType type, PredIdx idx)
/* predicate function to use for ordinary decompilation */
{
switch (type) {
@@ -282,13 +284,21 @@ dump_predicate(int type, int idx)
return (FALSE); /* pacify compiler */
}
-static void set_obsolete_termcaps(TERMTYPE * tp);
+static void set_obsolete_termcaps(TERMTYPE *tp);
/* is this the index of a function key string? */
#define FNKEY(i) (((i)<= 65 && (i)>= 75) || ((i)<= 216 && (i)>= 268))
+/*
+ * If we configure with a different Caps file, the offsets into the arrays
+ * will change. So we use an address expression.
+ */
+#define BOOL_IDX(name) (&(name) - &(CUR Booleans[0]))
+#define NUM_IDX(name) (&(name) - &(CUR Numbers[0]))
+#define STR_IDX(name) (&(name) - &(CUR Strings[0]))
+
static bool
-version_filter(int type, int idx)
+version_filter(PredType type, PredIdx idx)
/* filter out capabilities we may want to suppress */
{
switch (tversion) {
@@ -298,31 +308,28 @@ version_filter(int type, int idx)
case V_SVR1: /* System V Release 1, Ultrix */
switch (type) {
case BOOLEAN:
- /* below and including xon_xoff */
- return ((idx <= 20) ? TRUE : FALSE);
+ return ((idx <= BOOL_IDX(xon_xoff)) ? TRUE : FALSE);
case NUMBER:
- /* below and including width_status_line */
- return ((idx <= 7) ? TRUE : FALSE);
+ return ((idx <= NUM_IDX(width_status_line)) ? TRUE : FALSE);
case STRING:
- /* below and including prtr_non */
- return ((idx <= 144) ? TRUE : FALSE);
+ return ((idx <= STR_IDX(prtr_non)) ? TRUE : FALSE);
}
break;
case V_HPUX: /* Hewlett-Packard */
switch (type) {
case BOOLEAN:
- /* below and including xon_xoff */
- return ((idx <= 20) ? TRUE : FALSE);
+ return ((idx <= BOOL_IDX(xon_xoff)) ? TRUE : FALSE);
case NUMBER:
- /* below and including label_width */
- return ((idx <= 10) ? TRUE : FALSE);
+ return ((idx <= NUM_IDX(label_width)) ? TRUE : FALSE);
case STRING:
- if (idx <= 144) /* below and including prtr_non */
+ if (idx <= STR_IDX(prtr_non))
return (TRUE);
else if (FNKEY(idx)) /* function keys */
return (TRUE);
- else if (idx == 147 || idx == 156 || idx == 157) /* plab_norm,label_on,label_off */
+ else if (idx == STR_IDX(plab_norm)
+ || idx == STR_IDX(label_on)
+ || idx == STR_IDX(label_off))
return (TRUE);
else
return (FALSE);
@@ -332,13 +339,11 @@ version_filter(int type, int idx)
case V_AIX: /* AIX */
switch (type) {
case BOOLEAN:
- /* below and including xon_xoff */
- return ((idx <= 20) ? TRUE : FALSE);
+ return ((idx <= BOOL_IDX(xon_xoff)) ? TRUE : FALSE);
case NUMBER:
- /* below and including width_status_line */
- return ((idx <= 7) ? TRUE : FALSE);
+ return ((idx <= NUM_IDX(width_status_line)) ? TRUE : FALSE);
case STRING:
- if (idx <= 144) /* below and including prtr_non */
+ if (idx <= STR_IDX(prtr_non))
return (TRUE);
else if (FNKEY(idx)) /* function keys */
return (TRUE);
@@ -363,9 +368,17 @@ version_filter(int type, int idx)
}
static void
+trim_trailing(void)
+{
+ while (outbuf.used > 0 && outbuf.text[outbuf.used - 1] == ' ')
+ outbuf.text[--outbuf.used] = '\0';
+}
+
+static void
force_wrap(void)
{
oldcol = column;
+ trim_trailing();
strcpy_DYN(&outbuf, trailer);
column = INDENT;
}
@@ -419,43 +432,81 @@ termcap_length(const char *src)
#define termcap_length(src) strlen(src)
#endif
+static void
+indent_DYN(DYNBUF * buffer, int level)
+{
+ int n;
+
+ for (n = 0; n < level; n++)
+ strncpy_DYN(buffer, "\t", 1);
+}
+
+static bool
+has_params(const char *src)
+{
+ bool result = FALSE;
+ int len = strlen(src);
+ int n;
+ bool ifthen = FALSE;
+ bool params = FALSE;
+
+ for (n = 0; n < len - 1; ++n) {
+ if (!strncmp(src + n, "%p", 2)) {
+ params = TRUE;
+ } else if (!strncmp(src + n, "%;", 2)) {
+ ifthen = TRUE;
+ result = params;
+ break;
+ }
+ }
+ if (!ifthen) {
+ result = ((len > 50) && params);
+ }
+ return result;
+}
+
static char *
fmt_complex(char *src, int level)
{
- int percent = 0;
- int n;
- bool if_then = strstr(src, "%?") != 0;
- bool params = !if_then && (strlen(src) > 50) && (strstr(src, "%p") != 0);
+ bool percent = FALSE;
+ bool params = has_params(src);
while (*src != '\0') {
switch (*src) {
case '\\':
- percent = 0;
+ percent = FALSE;
strncpy_DYN(&tmpbuf, src++, 1);
break;
case '%':
- percent = 1;
+ percent = TRUE;
break;
case '?': /* "if" */
case 't': /* "then" */
case 'e': /* "else" */
if (percent) {
- percent = 0;
+ percent = FALSE;
tmpbuf.text[tmpbuf.used - 1] = '\n';
- /* treat a "%e%?" as else-if, on the same level */
- if (!strncmp(src, "e%?", 3)) {
- for (n = 0; n < level; n++)
- strncpy_DYN(&tmpbuf, "\t", 1);
+ /* treat a "%e" as else-if, on the same level */
+ if (*src == 'e') {
+ indent_DYN(&tmpbuf, level);
strncpy_DYN(&tmpbuf, "%", 1);
- strncpy_DYN(&tmpbuf, src, 3);
- src += 3;
+ strncpy_DYN(&tmpbuf, src, 1);
+ src++;
+ params = has_params(src);
+ if (!params && *src != '\0' && *src != '%') {
+ strncpy_DYN(&tmpbuf, "\n", 1);
+ indent_DYN(&tmpbuf, level + 1);
+ }
} else {
- for (n = 0; n <= level; n++)
- strncpy_DYN(&tmpbuf, "\t", 1);
+ indent_DYN(&tmpbuf, level + 1);
strncpy_DYN(&tmpbuf, "%", 1);
strncpy_DYN(&tmpbuf, src, 1);
if (*src++ == '?') {
src = fmt_complex(src, level + 1);
+ if (*src != '\0' && *src != '%') {
+ strncpy_DYN(&tmpbuf, "\n", 1);
+ indent_DYN(&tmpbuf, level + 1);
+ }
} else if (level == 1) {
_nc_warning("%%%c without %%?", *src);
}
@@ -465,11 +516,10 @@ fmt_complex(char *src, int level)
break;
case ';': /* "endif" */
if (percent) {
- percent = 0;
+ percent = FALSE;
if (level > 1) {
tmpbuf.text[tmpbuf.used - 1] = '\n';
- for (n = 0; n < level; n++)
- strncpy_DYN(&tmpbuf, "\t", 1);
+ indent_DYN(&tmpbuf, level);
strncpy_DYN(&tmpbuf, "%", 1);
strncpy_DYN(&tmpbuf, src++, 1);
return src;
@@ -480,14 +530,14 @@ fmt_complex(char *src, int level)
case 'p':
if (percent && params) {
tmpbuf.text[tmpbuf.used - 1] = '\n';
- for (n = 0; n <= level; n++)
- strncpy_DYN(&tmpbuf, "\t", 1);
+ indent_DYN(&tmpbuf, level + 1);
strncpy_DYN(&tmpbuf, "%", 1);
}
- percent = 0;
+ params = FALSE;
+ percent = FALSE;
break;
default:
- percent = 0;
+ percent = FALSE;
break;
}
strncpy_DYN(&tmpbuf, src++, 1);
@@ -495,20 +545,24 @@ fmt_complex(char *src, int level)
return src;
}
+#define SAME_CAP(n,cap) (&tterm->Strings[n] == &cap)
+
int
-fmt_entry(TERMTYPE * tterm,
- int (*pred) (int type, int idx),
+fmt_entry(TERMTYPE *tterm,
+ PredFunc pred,
+ bool content_only,
bool suppress_untranslatable,
bool infodump,
int numbers)
{
- int i, j;
+ PredIdx i, j;
char buffer[MAX_TERMINFO_LENGTH];
+ char *capability;
NCURSES_CONST char *name;
int predval, len;
- int num_bools = 0;
- int num_values = 0;
- int num_strings = 0;
+ PredIdx num_bools = 0;
+ PredIdx num_values = 0;
+ PredIdx num_strings = 0;
bool outcount = 0;
#define WRAP_CONCAT \
@@ -523,10 +577,14 @@ fmt_entry(TERMTYPE * tterm,
}
strcpy_DYN(&outbuf, 0);
- strcpy_DYN(&outbuf, tterm->term_names);
- strcpy_DYN(&outbuf, separator);
- column = outbuf.used;
- force_wrap();
+ if (content_only) {
+ column = INDENT; /* FIXME: workaround to prevent empty lines */
+ } else {
+ strcpy_DYN(&outbuf, tterm->term_names);
+ strcpy_DYN(&outbuf, separator);
+ column = outbuf.used;
+ force_wrap();
+ }
for_each_boolean(j, tterm) {
i = BoolIndirect(j);
@@ -599,51 +657,79 @@ fmt_entry(TERMTYPE * tterm,
for_each_string(j, tterm) {
i = StrIndirect(j);
name = ExtStrname(tterm, i, str_names);
+ capability = tterm->Strings[i];
if (!version_filter(STRING, i))
continue;
else if (isObsolete(outform, name))
continue;
+#if NCURSES_XNAMES
/*
- * Some older versions of vi want rmir/smir to be defined
- * for ich/ich1 to work. If they're not defined, force
- * them to be output as defined and empty.
+ * Extended names can be longer than 2 characters, but termcap programs
+ * cannot read those (filter them out).
*/
+ if (outform == F_TERMCAP && (strlen(name) > 2))
+ continue;
+#endif
+
if (outform == F_TERMCAP) {
- if (insert_character || parm_ich) {
- if (&tterm->Strings[i] == &enter_insert_mode
+ /*
+ * Some older versions of vi want rmir/smir to be defined
+ * for ich/ich1 to work. If they're not defined, force
+ * them to be output as defined and empty.
+ */
+ if (PRESENT(insert_character) || PRESENT(parm_ich)) {
+ if (SAME_CAP(i, enter_insert_mode)
&& enter_insert_mode == ABSENT_STRING) {
(void) strcpy(buffer, "im=");
WRAP_CONCAT;
continue;
}
- if (&tterm->Strings[i] == &exit_insert_mode
+ if (SAME_CAP(i, exit_insert_mode)
&& exit_insert_mode == ABSENT_STRING) {
(void) strcpy(buffer, "ei=");
WRAP_CONCAT;
continue;
}
}
+ /*
+ * termcap applications such as screen will be confused if sgr0
+ * is translated to a string containing rmacs. Filter that out.
+ */
+ if (PRESENT(exit_attribute_mode)) {
+ if (SAME_CAP(i, exit_attribute_mode)) {
+ char *trimmed_sgr0;
+ char *my_sgr = set_attributes;
+
+ set_attributes = save_sgr;
+
+ trimmed_sgr0 = _nc_trim_sgr0(tterm);
+ if (strcmp(capability, trimmed_sgr0))
+ capability = trimmed_sgr0;
+
+ set_attributes = my_sgr;
+ }
+ }
}
predval = pred(STRING, i);
buffer[0] = '\0';
if (predval != FAIL) {
- if (tterm->Strings[i] != ABSENT_STRING
+ if (capability != ABSENT_STRING
&& i + 1 > num_strings)
num_strings = i + 1;
- if (!VALID_STRING(tterm->Strings[i])) {
+ if (!VALID_STRING(capability)) {
sprintf(buffer, "%s@", name);
WRAP_CONCAT;
} else if (outform == F_TERMCAP || outform == F_TCONVERR) {
int params = ((i < (int) SIZEOF(parametrized))
? parametrized[i]
: 0);
- char *srccap = _nc_tic_expand(tterm->Strings[i], TRUE, numbers);
+ char *srccap = _nc_tic_expand(capability, TRUE, numbers);
char *cv = _nc_infotocap(name, srccap, params);
if (cv == 0) {
@@ -669,10 +755,10 @@ fmt_entry(TERMTYPE * tterm,
} else {
sprintf(buffer, "%s=%s", name, cv);
}
- len += strlen(tterm->Strings[i]) + 1;
+ len += strlen(capability) + 1;
WRAP_CONCAT;
} else {
- char *src = _nc_tic_expand(tterm->Strings[i],
+ char *src = _nc_tic_expand(capability,
outform == F_TERMINFO, numbers);
strcpy_DYN(&tmpbuf, 0);
@@ -685,17 +771,20 @@ fmt_entry(TERMTYPE * tterm,
} else {
strcpy_DYN(&tmpbuf, src);
}
- len += strlen(tterm->Strings[i]) + 1;
+ len += strlen(capability) + 1;
wrap_concat(tmpbuf.text);
outcount = TRUE;
}
}
+ /* e.g., trimmed_sgr0 */
+ if (capability != tterm->Strings[i])
+ free(capability);
}
len += num_strings * 2;
/*
* This piece of code should be an effective inverse of the functions
- * postprocess_terminfo and postprocess_terminfo in parse_entry.c.
+ * postprocess_terminfo() and postprocess_terminfo() in parse_entry.c.
* Much more work should be done on this to support dumping termcaps.
*/
if (tversion == V_HPUX) {
@@ -758,6 +847,7 @@ fmt_entry(TERMTYPE * tterm,
if (trimmed) {
outbuf.text[outbuf.used] = '\0';
column = oldcol;
+ strcpy_DYN(&outbuf, " ");
}
}
#if 0
@@ -778,10 +868,10 @@ fmt_entry(TERMTYPE * tterm,
}
static bool
-kill_string(TERMTYPE * tterm, char *cap)
+kill_string(TERMTYPE *tterm, char *cap)
{
int n;
- for (n = 0; n < tterm->num_Strings; ++n) {
+ for (n = 0; n < NUM_STRINGS(tterm); ++n) {
if (cap == tterm->Strings[n]) {
tterm->Strings[n] = ABSENT_STRING;
return TRUE;
@@ -791,10 +881,10 @@ kill_string(TERMTYPE * tterm, char *cap)
}
static char *
-find_string(TERMTYPE * tterm, char *name)
+find_string(TERMTYPE *tterm, char *name)
{
- int n;
- for (n = 0; n < tterm->num_Strings; ++n) {
+ PredIdx n;
+ for (n = 0; n < NUM_STRINGS(tterm); ++n) {
if (version_filter(STRING, n)
&& !strcmp(name, strnames[n])) {
char *cap = tterm->Strings[n];
@@ -812,7 +902,7 @@ find_string(TERMTYPE * tterm, char *name)
* make it smaller.
*/
static int
-kill_labels(TERMTYPE * tterm, int target)
+kill_labels(TERMTYPE *tterm, int target)
{
int n;
int result = 0;
@@ -837,7 +927,7 @@ kill_labels(TERMTYPE * tterm, int target)
* make it smaller.
*/
static int
-kill_fkeys(TERMTYPE * tterm, int target)
+kill_fkeys(TERMTYPE *tterm, int target)
{
int n;
int result = 0;
@@ -857,13 +947,66 @@ kill_fkeys(TERMTYPE * tterm, int target)
return result;
}
-int
-dump_entry(TERMTYPE * tterm,
+/*
+ * Check if the given acsc string is a 1-1 mapping, i.e., just-like-vt100.
+ * Also, since this is for termcap, we only care about the line-drawing map.
+ */
+#define isLine(c) (strchr("lmkjtuvwqxn", c) != 0)
+
+static bool
+one_one_mapping(const char *mapping)
+{
+ bool result = TRUE;
+
+ if (mapping != ABSENT_STRING) {
+ int n = 0;
+ while (mapping[n] != '\0') {
+ if (isLine(mapping[n]) &&
+ mapping[n] != mapping[n + 1]) {
+ result = FALSE;
+ break;
+ }
+ n += 2;
+ }
+ }
+ return result;
+}
+
+#define FMT_ENTRY() \
+ fmt_entry(tterm, pred, \
+ 0, \
+ suppress_untranslatable, \
+ infodump, numbers)
+
+#define SHOW_WHY PRINTF
+
+static bool
+purged_acs(TERMTYPE *tterm)
+{
+ bool result = FALSE;
+
+ if (VALID_STRING(acs_chars)) {
+ if (!one_one_mapping(acs_chars)) {
+ enter_alt_charset_mode = ABSENT_STRING;
+ exit_alt_charset_mode = ABSENT_STRING;
+ SHOW_WHY("# (rmacs/smacs removed for consistency)\n");
+ }
+ result = TRUE;
+ }
+ return result;
+}
+
+/*
+ * Dump a single entry.
+ */
+void
+dump_entry(TERMTYPE *tterm,
+ bool suppress_untranslatable,
bool limited,
int numbers,
- int (*pred) (int type, int idx))
-/* dump a single entry */
+ PredFunc pred)
{
+ TERMTYPE save_tterm;
int len, critlen;
const char *legend;
bool infodump;
@@ -879,85 +1022,132 @@ dump_entry(TERMTYPE * tterm,
infodump = TRUE;
}
- if (((len = fmt_entry(tterm, pred, FALSE, infodump, numbers)) > critlen)
+ save_sgr = set_attributes;
+
+ if (((len = FMT_ENTRY()) > critlen)
&& limited) {
- PRINTF("# (untranslatable capabilities removed to fit entry within %d bytes)\n",
- critlen);
- if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen) {
+
+ save_tterm = *tterm;
+ if (!suppress_untranslatable) {
+ SHOW_WHY("# (untranslatable capabilities removed to fit entry within %d bytes)\n",
+ critlen);
+ suppress_untranslatable = TRUE;
+ }
+ if ((len = FMT_ENTRY()) > critlen) {
/*
* We pick on sgr because it's a nice long string capability that
* is really just an optimization hack. Another good candidate is
* acsc since it is both long and unused by BSD termcap.
*/
- char *oldsgr = set_attributes;
- char *oldacsc = acs_chars;
- set_attributes = ABSENT_STRING;
- PRINTF("# (sgr removed to fit entry within %d bytes)\n",
- critlen);
- if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen) {
- acs_chars = ABSENT_STRING;
- PRINTF("# (acsc removed to fit entry within %d bytes)\n",
- critlen);
+ bool changed = FALSE;
+
+#if NCURSES_XNAMES
+ /*
+ * Extended names are most likely function-key definitions. Drop
+ * those first.
+ */
+ int n;
+ for (n = STRCOUNT; n < NUM_STRINGS(tterm); n++) {
+ const char *name = ExtStrname(tterm, n, strnames);
+
+ if (VALID_STRING(tterm->Strings[n])) {
+ set_attributes = ABSENT_STRING;
+ /* we remove long names anyway - only report the short */
+ if (strlen(name) <= 2) {
+ SHOW_WHY("# (%s removed to fit entry within %d bytes)\n",
+ name,
+ critlen);
+ }
+ changed = TRUE;
+ if ((len = FMT_ENTRY()) <= critlen)
+ break;
+ }
+ }
+#endif
+ if (VALID_STRING(set_attributes)) {
+ set_attributes = ABSENT_STRING;
+ SHOW_WHY("# (sgr removed to fit entry within %d bytes)\n",
+ critlen);
+ changed = TRUE;
+ }
+ if (!changed || ((len = FMT_ENTRY()) > critlen)) {
+ if (purged_acs(tterm)) {
+ acs_chars = ABSENT_STRING;
+ SHOW_WHY("# (acsc removed to fit entry within %d bytes)\n",
+ critlen);
+ changed = TRUE;
+ }
}
- if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen) {
+ if (!changed || ((len = FMT_ENTRY()) > critlen)) {
int oldversion = tversion;
tversion = V_BSD;
- PRINTF("# (terminfo-only capabilities suppressed to fit entry within %d bytes)\n",
- critlen);
+ SHOW_WHY("# (terminfo-only capabilities suppressed to fit entry within %d bytes)\n",
+ critlen);
- len = fmt_entry(tterm, pred, TRUE, infodump, numbers);
+ len = FMT_ENTRY();
if (len > critlen
&& kill_labels(tterm, len - critlen)) {
- PRINTF("# (some labels capabilities suppressed to fit entry within %d bytes)\n",
- critlen);
- len = fmt_entry(tterm, pred, TRUE, infodump, numbers);
+ SHOW_WHY("# (some labels capabilities suppressed to fit entry within %d bytes)\n",
+ critlen);
+ len = FMT_ENTRY();
}
if (len > critlen
&& kill_fkeys(tterm, len - critlen)) {
- PRINTF("# (some function-key capabilities suppressed to fit entry within %d bytes)\n",
- critlen);
- len = fmt_entry(tterm, pred, TRUE, infodump, numbers);
+ SHOW_WHY("# (some function-key capabilities suppressed to fit entry within %d bytes)\n",
+ critlen);
+ len = FMT_ENTRY();
}
if (len > critlen) {
(void) fprintf(stderr,
"warning: %s entry is %d bytes long\n",
_nc_first_name(tterm->term_names),
len);
- PRINTF(
- "# WARNING: this entry, %d bytes long, may core-dump %s libraries!\n",
- len, legend);
+ SHOW_WHY("# WARNING: this entry, %d bytes long, may core-dump %s libraries!\n",
+ len, legend);
}
tversion = oldversion;
}
- set_attributes = oldsgr;
- acs_chars = oldacsc;
+ set_attributes = save_sgr;
+ *tterm = save_tterm;
+ }
+ } else if (!version_filter(STRING, STR_IDX(acs_chars))) {
+ save_tterm = *tterm;
+ if (purged_acs(tterm)) {
+ len = FMT_ENTRY();
}
+ *tterm = save_tterm;
}
-
- (void) fputs(outbuf.text, stdout);
- return len;
}
-int
+void
dump_uses(const char *name, bool infodump)
/* dump "use=" clauses in the appropriate format */
{
char buffer[MAX_TERMINFO_LENGTH];
- strcpy_DYN(&outbuf, 0);
+ if (outform == F_TERMCAP || outform == F_TCONVERR)
+ trim_trailing();
(void) sprintf(buffer, "%s%s", infodump ? "use=" : "tc=", name);
wrap_concat(buffer);
+}
+
+int
+show_entry(void)
+{
+ trim_trailing();
(void) fputs(outbuf.text, stdout);
+ putchar('\n');
return outbuf.used;
}
void
-compare_entry(void (*hook) (int t, int i, const char *name), TERMTYPE * tp
- GCC_UNUSED, bool quiet)
+compare_entry(void (*hook) (PredType t, PredIdx i, const char *name),
+ TERMTYPE *tp GCC_UNUSED,
+ bool quiet)
/* compare two entries */
{
- int i, j;
+ PredIdx i, j;
NCURSES_CONST char *name;
if (!quiet)
@@ -1012,7 +1202,7 @@ compare_entry(void (*hook) (int t, int i, const char *name), TERMTYPE * tp
#define CUR tp->
static void
-set_obsolete_termcaps(TERMTYPE * tp)
+set_obsolete_termcaps(TERMTYPE *tp)
{
#include "capdefaults.c"
}
@@ -1022,7 +1212,7 @@ set_obsolete_termcaps(TERMTYPE * tp)
* unique.
*/
void
-repair_acsc(TERMTYPE * tp)
+repair_acsc(TERMTYPE *tp)
{
if (VALID_STRING(acs_chars)) {
size_t n, m;
diff --git a/contrib/ncurses/progs/dump_entry.h b/contrib/ncurses/progs/dump_entry.h
index 57354702840c..f802ecb783f7 100644
--- a/contrib/ncurses/progs/dump_entry.h
+++ b/contrib/ncurses/progs/dump_entry.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2002,2004 Free 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,13 +29,19 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*
+ * $Id: dump_entry.h,v 1.29 2006/08/19 21:11:14 tom Exp $
+ *
* Dump control definitions and variables
*/
+#ifndef DUMP_ENTRY_H
+#define DUMP_ENTRY_H 1
+
/* capability output formats */
#define F_TERMINFO 0 /* use terminfo names */
#define F_VARIABLE 1 /* use C variable names */
@@ -56,12 +62,19 @@
#define CMP_STRING 2 /* comparison on strings */
#define CMP_USE 3 /* comparison on use capabilities */
+typedef unsigned PredType;
+typedef int PredIdx;
+typedef int (*PredFunc)(PredType, PredIdx);
+
extern NCURSES_CONST char *nametrans(const char *);
+extern int fmt_entry(TERMTYPE *, PredFunc, bool, bool, bool, int);
+extern int show_entry(void);
+extern void compare_entry(void (*)(PredType, PredIdx, const char *), TERMTYPE *, bool);
+extern void dump_entry(TERMTYPE *, bool, bool, int, PredFunc);
extern void dump_init(const char *, int, int, int, int, bool);
-extern int fmt_entry(TERMTYPE *, int (*)(int, int), bool, bool, int);
-extern int dump_entry(TERMTYPE *, bool, int, int (*)(int, int));
-extern int dump_uses(const char *, bool);
-extern void compare_entry(void (*)(int, int, const char *), TERMTYPE *, bool);
+extern void dump_uses(const char *, bool);
extern void repair_acsc(TERMTYPE * tp);
#define FAIL -1
+
+#endif /* DUMP_ENTRY_H */
diff --git a/contrib/ncurses/progs/infocmp.c b/contrib/ncurses/progs/infocmp.c
index 69f00ae674a2..d3353f26415e 100644
--- a/contrib/ncurses/progs/infocmp.c
+++ b/contrib/ncurses/progs/infocmp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,10 +39,9 @@
#include <progs.priv.h>
-#include <term_entry.h>
#include <dump_entry.h>
-MODULE_ID("$Id: infocmp.c,v 1.63 2001/09/22 19:57:40 tom Exp $")
+MODULE_ID("$Id: infocmp.c,v 1.85 2006/08/19 21:20:37 tom Exp $")
#define L_CURL "{"
#define R_CURL "}"
@@ -66,6 +66,7 @@ static int termcount; /* count of terminal entries */
static bool limited = TRUE; /* "-r" option is not set */
static bool quiet = FALSE;
+static bool literal = FALSE;
static const char *bool_sep = ":";
static const char *s_absent = "NULL";
static const char *s_cancel = "NULL";
@@ -87,11 +88,10 @@ static bool ignorepads; /* ignore pad prefixes when diffing */
#if NO_LEAKS
#undef ExitProgram
-static void
-ExitProgram(int code) GCC_NORETURN;
+static void ExitProgram(int code) GCC_NORETURN;
/* prototype is to get gcc to accept the noreturn attribute */
- static void
- ExitProgram(int code)
+static void
+ExitProgram(int code)
{
while (termcount-- > 0)
_nc_free_termtype(&entries[termcount].tterm);
@@ -120,7 +120,7 @@ canonical_name(char *ptr, char *buf)
***************************************************************************/
static int
-capcmp(int idx, const char *s, const char *t)
+capcmp(PredIdx idx, const char *s, const char *t)
/* capability comparison function */
{
if (!VALID_STRING(s) && !VALID_STRING(t))
@@ -135,7 +135,7 @@ capcmp(int idx, const char *s, const char *t)
}
static int
-use_predicate(int type, int idx)
+use_predicate(unsigned type, PredIdx idx)
/* predicate function to use for use decompilation */
{
ENTRY *ep;
@@ -245,10 +245,10 @@ useeq(ENTRY * e1, ENTRY * e2)
}
static bool
-entryeq(TERMTYPE * t1, TERMTYPE * t2)
+entryeq(TERMTYPE *t1, TERMTYPE *t2)
/* are two entries equivalent? */
{
- int i;
+ unsigned i;
for (i = 0; i < NUM_BOOLEANS(t1); i++)
if (t1->Booleans[i] != t2->Booleans[i])
@@ -259,7 +259,7 @@ entryeq(TERMTYPE * t1, TERMTYPE * t2)
return (FALSE);
for (i = 0; i < NUM_STRINGS(t1); i++)
- if (capcmp(i, t1->Strings[i], t2->Strings[i]))
+ if (capcmp((PredIdx) i, t1->Strings[i], t2->Strings[i]))
return (FALSE);
return (TRUE);
@@ -268,7 +268,7 @@ entryeq(TERMTYPE * t1, TERMTYPE * t2)
#define TIC_EXPAND(result) _nc_tic_expand(result, outform==F_TERMINFO, numbers)
static void
-print_uses(ENTRY * ep, FILE * fp)
+print_uses(ENTRY * ep, FILE *fp)
/* print an entry's use references */
{
int i;
@@ -332,7 +332,7 @@ dump_string(char *val, char *buf)
}
static void
-compare_predicate(int type, int idx, const char *name)
+compare_predicate(PredType type, PredIdx idx, const char *name)
/* predicate function to use for entry difference reports */
{
register ENTRY *e1 = &entries[0];
@@ -474,14 +474,26 @@ static const assoc std_caps[] =
{"\033)A", "ISO UK G1"}, /* enable UK chars for G1 */
{"\033)B", "ISO US G1"}, /* enable US chars for G1 */
- /* these are DEC private modes widely supported by emulators */
+ /* 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 */
{(char *) 0, (char *) 0}
};
+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}
+};
+
static const assoc private_modes[] =
/* DEC \E[ ... [hl] modes recognized by many emulators */
{
@@ -532,13 +544,65 @@ static const assoc ecma_highlights[] =
{(char *) 0, (char *) 0}
};
+static int
+skip_csi(const char *cap)
+{
+ int result = 0;
+ if (cap[0] == '\033' && cap[1] == '[')
+ result = 2;
+ else if (UChar(cap[0]) == 0233)
+ result = 1;
+ return result;
+}
+
+static bool
+same_param(const char *table, const char *param, unsigned length)
+{
+ bool result = FALSE;
+ if (strncmp(table, param, length) == 0) {
+ result = !isdigit(UChar(param[length]));
+ }
+ return result;
+}
+
+static char *
+lookup_params(const assoc * table, char *dst, char *src)
+{
+ const char *ep = strtok(src, ";");
+ const assoc *ap;
+
+ do {
+ bool found = FALSE;
+
+ for (ap = table; ap->from; ap++) {
+ size_t tlen = strlen(ap->from);
+
+ if (same_param(ap->from, ep, tlen)) {
+ (void) strcat(dst, ap->to);
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (!found)
+ (void) strcat(dst, ep);
+ (void) strcat(dst, ";");
+ } while
+ ((ep = strtok((char *) 0, ";")));
+
+ dst[strlen(dst) - 1] = '\0';
+
+ return dst;
+}
+
static void
-analyze_string(const char *name, const char *cap, TERMTYPE * tp)
+analyze_string(const char *name, const char *cap, TERMTYPE *tp)
{
char buf[MAX_TERMINFO_LENGTH];
char buf2[MAX_TERMINFO_LENGTH];
- const char *sp, *ep;
+ const char *sp;
const assoc *ap;
+ int tp_lines = tp->Numbers[2];
if (cap == ABSENT_STRING || cap == CANCELLED_STRING)
return;
@@ -547,8 +611,11 @@ analyze_string(const char *name, const char *cap, TERMTYPE * tp)
buf[0] = '\0';
for (sp = cap; *sp; sp++) {
int i;
+ int csi;
size_t len = 0;
+ size_t next;
const char *expansion = 0;
+ char buf3[MAX_TERMINFO_LENGTH];
/* first, check other capabilities in this entry */
for (i = 0; i < STRCOUNT; i++) {
@@ -586,100 +653,109 @@ analyze_string(const char *name, const char *cap, TERMTYPE * tp)
}
/* now check the standard capabilities */
- if (!expansion)
+ if (!expansion) {
+ csi = skip_csi(sp);
for (ap = std_caps; ap->from; ap++) {
- len = strlen(ap->from);
+ size_t adj = csi ? 2 : 0;
- if (strncmp(ap->from, sp, len) == 0) {
+ len = strlen(ap->from);
+ if (csi && skip_csi(ap->from) != csi)
+ continue;
+ if (len > adj
+ && strncmp(ap->from + adj, sp + csi, len - adj) == 0) {
expansion = ap->to;
+ len -= adj;
+ len += csi;
break;
}
}
+ }
- /* now check for private-mode sequences */
+ /* now check for standard-mode sequences */
if (!expansion
- && sp[0] == '\033' && sp[1] == '[' && sp[2] == '?'
- && (len = strspn(sp + 3, "0123456789;"))
- && ((sp[3 + len] == 'h') || (sp[3 + len] == 'l'))) {
- char buf3[MAX_TERMINFO_LENGTH];
-
- (void) strcpy(buf2, (sp[3 + len] == 'h') ? "DEC+" : "DEC-");
- (void) strncpy(buf3, sp + 3, len);
- len += 4;
- buf3[len] = '\0';
+ && (csi = skip_csi(sp)) != 0
+ && (len = strspn(sp + csi, "0123456789;"))
+ && (next = csi + len)
+ && ((sp[next] == 'h') || (sp[next] == 'l'))) {
- ep = strtok(buf3, ";");
- do {
- bool found = FALSE;
+ (void) strcpy(buf2, (sp[next] == 'h') ? "ECMA+" : "ECMA-");
+ (void) strncpy(buf3, sp + csi, len);
+ buf3[len] = '\0';
+ len += csi + 1;
- for (ap = private_modes; ap->from; ap++) {
- size_t tlen = strlen(ap->from);
+ expansion = lookup_params(std_modes, buf2, buf3);
+ }
- if (strncmp(ap->from, ep, tlen) == 0) {
- (void) strcat(buf2, ap->to);
- found = TRUE;
- break;
- }
- }
+ /* now check for private-mode sequences */
+ if (!expansion
+ && (csi = skip_csi(sp)) != 0
+ && sp[csi] == '?'
+ && (len = strspn(sp + csi + 1, "0123456789;"))
+ && (next = csi + 1 + len)
+ && ((sp[next] == 'h') || (sp[next] == 'l'))) {
+
+ (void) strcpy(buf2, (sp[next] == 'h') ? "DEC+" : "DEC-");
+ (void) strncpy(buf3, sp + csi + 1, len);
+ buf3[len] = '\0';
+ len += csi + 2;
- if (!found)
- (void) strcat(buf2, ep);
- (void) strcat(buf2, ";");
- } while
- ((ep = strtok((char *) 0, ";")));
- buf2[strlen(buf2) - 1] = '\0';
- expansion = buf2;
+ expansion = lookup_params(private_modes, buf2, buf3);
}
/* now check for ECMA highlight sequences */
if (!expansion
- && sp[0] == '\033' && sp[1] == '['
- && (len = strspn(sp + 2, "0123456789;"))
- && sp[2 + len] == 'm') {
- char buf3[MAX_TERMINFO_LENGTH];
+ && (csi = skip_csi(sp)) != 0
+ && (len = strspn(sp + csi, "0123456789;")) != 0
+ && (next = csi + len)
+ && sp[next] == 'm') {
(void) strcpy(buf2, "SGR:");
- (void) strncpy(buf3, sp + 2, len);
- len += 3;
+ (void) strncpy(buf3, sp + csi, len);
buf3[len] = '\0';
+ len += csi + 1;
- ep = strtok(buf3, ";");
- do {
- bool found = FALSE;
-
- for (ap = ecma_highlights; ap->from; ap++) {
- size_t tlen = strlen(ap->from);
-
- if (strncmp(ap->from, ep, tlen) == 0) {
- (void) strcat(buf2, ap->to);
- found = TRUE;
- break;
- }
- }
-
- if (!found)
- (void) strcat(buf2, ep);
- (void) strcat(buf2, ";");
- } while
- ((ep = strtok((char *) 0, ";")));
+ expansion = lookup_params(ecma_highlights, buf2, buf3);
+ }
- buf2[strlen(buf2) - 1] = '\0';
+ if (!expansion
+ && (csi = skip_csi(sp)) != 0
+ && sp[csi] == 'm') {
+ len = csi + 1;
+ (void) strcpy(buf2, "SGR:");
+ strcat(buf2, ecma_highlights[0].to);
expansion = buf2;
}
+
/* now check for scroll region reset */
- if (!expansion) {
- (void) sprintf(buf2, "\033[1;%dr", tp->Numbers[2]);
- len = strlen(buf2);
- if (strncmp(buf2, sp, len) == 0)
+ if (!expansion
+ && (csi = skip_csi(sp)) != 0) {
+ if (sp[csi] == 'r') {
expansion = "RSR";
+ len = 1;
+ } else {
+ (void) sprintf(buf2, "1;%dr", tp_lines);
+ len = strlen(buf2);
+ if (strncmp(buf2, sp + csi, len) == 0)
+ expansion = "RSR";
+ }
+ len += csi;
}
/* now check for home-down */
- if (!expansion) {
- (void) sprintf(buf2, "\033[%d;1H", tp->Numbers[2]);
+ if (!expansion
+ && (csi = skip_csi(sp)) != 0) {
+ (void) sprintf(buf2, "%d;1H", tp_lines);
len = strlen(buf2);
- if (strncmp(buf2, sp, len) == 0)
+ if (strncmp(buf2, sp + csi, len) == 0) {
expansion = "LL";
+ } else {
+ (void) sprintf(buf2, "%dH", tp_lines);
+ len = strlen(buf2);
+ if (strncmp(buf2, sp + csi, len) == 0) {
+ expansion = "LL";
+ }
+ }
+ len += csi;
}
/* now look at the expansion we got, if any */
@@ -723,13 +799,13 @@ file_comparison(int argc, char *argv[])
/* parse entries out of the source file */
_nc_set_source(argv[n]);
- _nc_read_entry_source(stdin, NULL, TRUE, FALSE, NULLHOOK);
+ _nc_read_entry_source(stdin, NULL, TRUE, literal, NULLHOOK);
if (itrace)
(void) fprintf(stderr, "Resolving file %d...\n", n - 0);
/* maybe do use resolution */
- if (!_nc_resolve_uses(!limited)) {
+ if (!_nc_resolve_uses2(!limited, literal)) {
(void) fprintf(stderr,
"There are unresolved use entries in %s:\n",
argv[n]);
@@ -739,7 +815,7 @@ file_comparison(int argc, char *argv[])
(void) fputc('\n', stderr);
}
}
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
heads[filecount] = _nc_head;
@@ -898,6 +974,7 @@ usage(void)
," -L use long names"
," -R subset (see manpage)"
," -T eliminate size limits (test)"
+ ," -U eliminate post-processing of entries"
," -V print version"
#if NCURSES_XNAMES
," -a with -F, list commented-out caps"
@@ -917,9 +994,15 @@ usage(void)
," -r with -C, output in termcap form"
," -r with -F, resolve use-references"
," -s [d|i|l|c] sort fields"
+#if NCURSES_XNAMES
+ ," -t suppress commented-out capabilities"
+#endif
," -u produce source with 'use='"
," -v number (verbose)"
," -w number (width)"
+#if NCURSES_XNAMES
+ ," -x treat unknown capabilities as user-defined"
+#endif
};
const size_t first = 3;
const size_t last = SIZEOF(tbl);
@@ -933,7 +1016,7 @@ usage(void)
else
fprintf(stderr, "%s\n", tbl[n]);
}
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
static char *
@@ -970,9 +1053,9 @@ string_variable(const char *type)
/* dump C initializers for the terminal type */
static void
-dump_initializers(TERMTYPE * term)
+dump_initializers(TERMTYPE *term)
{
- int n;
+ unsigned n;
int size;
const char *str = 0;
@@ -1027,7 +1110,7 @@ dump_initializers(TERMTYPE * term)
str = "CANCELLED_BOOLEAN";
break;
}
- (void) printf("\t/* %3d: %-8s */\t%s,\n",
+ (void) printf("\t/* %3u: %-8s */\t%s,\n",
n, ExtBoolname(term, n, boolnames), str);
}
(void) printf("%s;\n", R_CURL);
@@ -1048,14 +1131,14 @@ dump_initializers(TERMTYPE * term)
str = buf;
break;
}
- (void) printf("\t/* %3d: %-8s */\t%s,\n", n,
+ (void) printf("\t/* %3u: %-8s */\t%s,\n", n,
ExtNumname(term, n, numnames), str);
}
(void) printf("%s;\n", R_CURL);
- size = sizeof(TERMTYPE)
- + (NUM_BOOLEANS(term) * sizeof(term->Booleans[0]))
- + (NUM_NUMBERS(term) * sizeof(term->Numbers[0]));
+ size = (sizeof(TERMTYPE)
+ + (NUM_BOOLEANS(term) * sizeof(term->Booleans[0]))
+ + (NUM_NUMBERS(term) * sizeof(term->Numbers[0])));
(void) printf("static char * %s[] = %s\n", name_initializer("string"), L_CURL);
@@ -1068,7 +1151,7 @@ dump_initializers(TERMTYPE * term)
else {
str = string_variable(ExtStrname(term, n, strnames));
}
- (void) printf("\t/* %3d: %-8s */\t%s,\n", n,
+ (void) printf("\t/* %3u: %-8s */\t%s,\n", n,
ExtStrname(term, n, strnames), str);
}
(void) printf("%s;\n", R_CURL);
@@ -1080,15 +1163,15 @@ dump_initializers(TERMTYPE * term)
(void) printf("static char * %s[] = %s\n",
name_initializer("string_ext"), L_CURL);
for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) {
- (void) printf("\t/* %3d: bool */\t\"%s\",\n",
+ (void) printf("\t/* %3u: bool */\t\"%s\",\n",
n, ExtBoolname(term, n, boolnames));
}
for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) {
- (void) printf("\t/* %3d: num */\t\"%s\",\n",
+ (void) printf("\t/* %3u: num */\t\"%s\",\n",
n, ExtNumname(term, n, numnames));
}
for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) {
- (void) printf("\t/* %3d: str */\t\"%s\",\n",
+ (void) printf("\t/* %3u: str */\t\"%s\",\n",
n, ExtStrname(term, n, strnames));
}
(void) printf("%s;\n", R_CURL);
@@ -1098,7 +1181,7 @@ dump_initializers(TERMTYPE * term)
/* dump C initializers for the terminal type */
static void
-dump_termtype(TERMTYPE * term)
+dump_termtype(TERMTYPE *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");
@@ -1142,11 +1225,24 @@ optarg_to_number(void)
if (temp == 0 || temp == optarg || *temp != 0) {
fprintf(stderr, "Expected a number, not \"%s\"\n", optarg);
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
return (int) value;
}
+static char *
+terminal_env(void)
+{
+ char *terminal;
+
+ if ((terminal = getenv("TERM")) == 0) {
+ (void) fprintf(stderr,
+ "infocmp: environment variable TERM not set\n");
+ exit(EXIT_FAILURE);
+ }
+ return terminal;
+}
+
/***************************************************************************
*
* Main sequence
@@ -1156,7 +1252,7 @@ optarg_to_number(void)
int
main(int argc, char *argv[])
{
- char *terminal, *firstdir, *restdir;
+ char *firstdir, *restdir;
/* Avoid "local data >32k" error with mwcc */
/* Also avoid overflowing smaller stacks on systems like AmigaOS */
path *tfile = (path *) malloc(sizeof(path) * MAXTERMS);
@@ -1165,45 +1261,62 @@ main(int argc, char *argv[])
bool filecompare = FALSE;
int initdump = 0;
bool init_analyze = FALSE;
-
- if ((terminal = getenv("TERM")) == 0) {
- (void) fprintf(stderr,
- "infocmp: environment variable TERM not set\n");
- return EXIT_FAILURE;
- }
+ bool suppress_untranslatable = FALSE;
/* where is the terminfo database location going to default to? */
restdir = firstdir = 0;
- while ((c = getopt(argc, argv, "adeEcCfFGgIinlLpqrR:s:uv:Vw:A:B:1T")) != EOF)
+#if NCURSES_XNAMES
+ use_extended_names(FALSE);
+#endif
+
+ while ((c = getopt(argc,
+ argv,
+ "1A:aB:CcdEeFfGgIiLlnpqR:rs:TtUuVv:w:x")) != EOF) {
switch (c) {
+ case '1':
+ mwidth = 0;
+ break;
+
+ case 'A':
+ firstdir = optarg;
+ break;
+
#if NCURSES_XNAMES
case 'a':
_nc_disable_period = TRUE;
use_extended_names(TRUE);
break;
#endif
- case 'd':
- compare = C_DIFFERENCE;
+ case 'B':
+ restdir = optarg;
break;
- case 'e':
- initdump |= 1;
+ case 'C':
+ outform = F_TERMCAP;
+ tversion = "BSD";
+ if (sortmode == S_DEFAULT)
+ sortmode = S_TERMCAP;
+ break;
+
+ case 'c':
+ compare = C_COMMON;
+ break;
+
+ case 'd':
+ compare = C_DIFFERENCE;
break;
case 'E':
initdump |= 2;
break;
- case 'c':
- compare = C_COMMON;
+ case 'e':
+ initdump |= 1;
break;
- case 'C':
- outform = F_TERMCAP;
- tversion = "BSD";
- if (sortmode == S_DEFAULT)
- sortmode = S_TERMCAP;
+ case 'F':
+ filecompare = TRUE;
break;
case 'f':
@@ -1218,10 +1331,6 @@ main(int argc, char *argv[])
numbers = -1;
break;
- case 'F':
- filecompare = TRUE;
- break;
-
case 'I':
outform = F_TERMINFO;
if (sortmode == S_DEFAULT)
@@ -1233,16 +1342,16 @@ main(int argc, char *argv[])
init_analyze = TRUE;
break;
- case 'l':
- outform = F_TERMINFO;
- break;
-
case 'L':
outform = F_VARIABLE;
if (sortmode == S_DEFAULT)
sortmode = S_VARIABLE;
break;
+ case 'l':
+ outform = F_TERMINFO;
+ break;
+
case 'n':
compare = C_NAND;
break;
@@ -1258,15 +1367,15 @@ main(int argc, char *argv[])
bool_sep = ", ";
break;
+ case 'R':
+ tversion = optarg;
+ break;
+
case 'r':
tversion = 0;
limited = FALSE;
break;
- case 'R':
- tversion = optarg;
- break;
-
case 's':
if (*optarg == 'd')
sortmode = S_NOSORT;
@@ -1279,45 +1388,52 @@ main(int argc, char *argv[])
else {
(void) fprintf(stderr,
"infocmp: unknown sort mode\n");
- return EXIT_FAILURE;
+ ExitProgram(EXIT_FAILURE);
}
break;
+ case 'T':
+ limited = FALSE;
+ break;
+
+#if NCURSES_XNAMES
+ case 't':
+ _nc_disable_period = FALSE;
+ suppress_untranslatable = TRUE;
+ break;
+#endif
+
+ case 'U':
+ literal = TRUE;
+ break;
+
case 'u':
compare = C_USEALL;
break;
+ case 'V':
+ puts(curses_version());
+ ExitProgram(EXIT_SUCCESS);
+
case 'v':
itrace = optarg_to_number();
set_trace_level(itrace);
break;
- case 'V':
- puts(curses_version());
- ExitProgram(EXIT_SUCCESS);
-
case 'w':
mwidth = optarg_to_number();
break;
- case 'A':
- firstdir = optarg;
- break;
-
- case 'B':
- restdir = optarg;
- break;
-
- case '1':
- mwidth = 0;
+#if NCURSES_XNAMES
+ case 'x':
+ use_extended_names(TRUE);
break;
+#endif
- case 'T':
- limited = FALSE;
- break;
default:
usage();
}
+ }
/* by default, sort by terminfo name */
if (sortmode == S_DEFAULT)
@@ -1328,11 +1444,11 @@ main(int argc, char *argv[])
/* make sure we have at least one terminal name to work with */
if (optind >= argc)
- argv[argc++] = terminal;
+ argv[argc++] = terminal_env();
/* if user is after a comparison, make sure we have two entries */
if (compare != C_DEFAULT && optind >= argc - 1)
- argv[argc++] = terminal;
+ argv[argc++] = terminal_env();
/* exactly two terminal names with no options means do -d */
if (argc - optind == 2 && compare == C_DEFAULT)
@@ -1345,7 +1461,7 @@ main(int argc, char *argv[])
if (termcount >= MAXTERMS) {
(void) fprintf(stderr,
"infocmp: too many terminal type arguments\n");
- return EXIT_FAILURE;
+ ExitProgram(EXIT_FAILURE);
} else {
const char *directory = termcount ? restdir : firstdir;
int status;
@@ -1353,6 +1469,7 @@ main(int argc, char *argv[])
tname[termcount] = argv[optind];
if (directory) {
+#if USE_DATABASE
(void) sprintf(tfile[termcount], "%s/%c/%s",
directory,
*argv[optind], argv[optind]);
@@ -1363,11 +1480,15 @@ main(int argc, char *argv[])
status = _nc_read_file_entry(tfile[termcount],
&entries[termcount].tterm);
+#else
+ (void) fprintf(stderr, "terminfo files not supported\n");
+ ExitProgram(EXIT_FAILURE);
+#endif
} else {
if (itrace)
(void) fprintf(stderr,
- "infocmp: reading entry %s from system directories %s\n",
- argv[optind], tname[termcount]);
+ "infocmp: reading entry %s from database\n",
+ tname[termcount]);
status = _nc_read_entry(tname[termcount],
tfile[termcount],
@@ -1379,7 +1500,7 @@ main(int argc, char *argv[])
(void) fprintf(stderr,
"infocmp: couldn't open terminfo file %s.\n",
tfile[termcount]);
- return EXIT_FAILURE;
+ ExitProgram(EXIT_FAILURE);
}
repair_acsc(&entries[termcount].tterm);
termcount++;
@@ -1397,11 +1518,10 @@ main(int argc, char *argv[])
dump_termtype(&entries[0].tterm);
if (initdump & 2)
dump_initializers(&entries[0].tterm);
- ExitProgram(EXIT_SUCCESS);
}
/* analyze the init strings */
- if (init_analyze) {
+ else if (init_analyze) {
#undef CUR
#define CUR entries[0].tterm.
analyze_string("is1", init_1string, &entries[0].tterm);
@@ -1413,60 +1533,68 @@ main(int argc, char *argv[])
analyze_string("smcup", enter_ca_mode, &entries[0].tterm);
analyze_string("rmcup", exit_ca_mode, &entries[0].tterm);
#undef CUR
- ExitProgram(EXIT_SUCCESS);
- }
+ } else {
- /*
- * Here's where the real work gets done
- */
- switch (compare) {
- case C_DEFAULT:
- if (itrace)
- (void) fprintf(stderr,
- "infocmp: about to dump %s\n",
- tname[0]);
- (void) printf("#\tReconstructed via infocmp from file: %s\n",
- tfile[0]);
- len = dump_entry(&entries[0].tterm, limited, numbers, NULL);
- putchar('\n');
- if (itrace)
- (void) fprintf(stderr, "infocmp: length %d\n", len);
- break;
+ /*
+ * Here's where the real work gets done
+ */
+ switch (compare) {
+ case C_DEFAULT:
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: about to dump %s\n",
+ tname[0]);
+ (void) printf("#\tReconstructed via infocmp from file: %s\n",
+ tfile[0]);
+ dump_entry(&entries[0].tterm,
+ suppress_untranslatable,
+ limited,
+ numbers,
+ NULL);
+ len = show_entry();
+ if (itrace)
+ (void) fprintf(stderr, "infocmp: length %d\n", len);
+ break;
- case C_DIFFERENCE:
- if (itrace)
- (void) fprintf(stderr, "infocmp: dumping differences\n");
- (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
- compare_entry(compare_predicate, &entries->tterm, quiet);
- break;
+ case C_DIFFERENCE:
+ if (itrace)
+ (void) fprintf(stderr, "infocmp: dumping differences\n");
+ (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
+ compare_entry(compare_predicate, &entries->tterm, quiet);
+ break;
- case C_COMMON:
- if (itrace)
- (void) fprintf(stderr,
- "infocmp: dumping common capabilities\n");
- (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
- compare_entry(compare_predicate, &entries->tterm, quiet);
- break;
+ case C_COMMON:
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: dumping common capabilities\n");
+ (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
+ compare_entry(compare_predicate, &entries->tterm, quiet);
+ break;
- case C_NAND:
- if (itrace)
- (void) fprintf(stderr,
- "infocmp: dumping differences\n");
- (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
- compare_entry(compare_predicate, &entries->tterm, quiet);
- break;
+ case C_NAND:
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: dumping differences\n");
+ (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
+ compare_entry(compare_predicate, &entries->tterm, quiet);
+ break;
- case C_USEALL:
- if (itrace)
- (void) fprintf(stderr, "infocmp: dumping use entry\n");
- len = dump_entry(&entries[0].tterm, limited, numbers, use_predicate);
- for (i = 1; i < termcount; i++)
- len += dump_uses(tname[i], !(outform == F_TERMCAP || outform
- == F_TCONVERR));
- putchar('\n');
- if (itrace)
- (void) fprintf(stderr, "infocmp: length %d\n", len);
- break;
+ case C_USEALL:
+ if (itrace)
+ (void) fprintf(stderr, "infocmp: dumping use entry\n");
+ dump_entry(&entries[0].tterm,
+ suppress_untranslatable,
+ limited,
+ numbers,
+ use_predicate);
+ for (i = 1; i < termcount; i++)
+ dump_uses(tname[i], !(outform == F_TERMCAP
+ || outform == F_TCONVERR));
+ len = show_entry();
+ if (itrace)
+ (void) fprintf(stderr, "infocmp: length %d\n", len);
+ break;
+ }
}
} else if (compare == C_USEALL)
(void) fprintf(stderr, "Sorry, -u doesn't work with -F\n");
@@ -1478,6 +1606,7 @@ main(int argc, char *argv[])
else
file_comparison(argc - optind, argv + optind);
+ free(tfile);
ExitProgram(EXIT_SUCCESS);
}
diff --git a/contrib/ncurses/progs/modules b/contrib/ncurses/progs/modules
index 3d065a95ee88..f8224649b201 100644
--- a/contrib/ncurses/progs/modules
+++ b/contrib/ncurses/progs/modules
@@ -1,7 +1,7 @@
-# $Id: modules,v 1.10 2000/01/02 01:30:45 tom Exp $
+# $Id: modules,v 1.12 2005/09/25 00:54:22 tom Exp $
# Program modules (some are in ncurses lib!)
##############################################################################
-# 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 "Software"), #
@@ -32,10 +32,10 @@
#
@ base
-clear progs $(srcdir) ../include/term.h
-tic progs $(srcdir) ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h
-toe progs $(srcdir) ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h
-dump_entry progs $(srcdir) ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h ../include/parametrized.h $(INCDIR)/capdefaults.c termsort.c
-infocmp progs $(srcdir) ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h
-tput progs $(srcdir) ../include/term.h
-tset progs $(srcdir) ../include/term.h
+clear progs $(srcdir) $(HEADER_DEPS)
+tic progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h
+toe progs $(srcdir) $(HEADER_DEPS) $(srcdir)/dump_entry.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
+tput progs $(srcdir) $(HEADER_DEPS) transform.h termsort.c
+tset progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h ../include/termcap.h
diff --git a/contrib/ncurses/progs/progs.priv.h b/contrib/ncurses/progs/progs.priv.h
index 9d13b3c7acb8..eaa4c80f682c 100644
--- a/contrib/ncurses/progs/progs.priv.h
+++ b/contrib/ncurses/progs/progs.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1997,1998 *
+ * Author: Thomas E. Dickey 1997-on *
****************************************************************************/
/*
- * $Id: progs.priv.h,v 1.27 2001/06/18 18:43:52 tom Exp $
+ * $Id: progs.priv.h,v 1.30 2006/11/26 00:28:01 tom Exp $
*
* progs.priv.h
*
@@ -52,10 +52,6 @@
#if HAVE_UNISTD_H
#include <unistd.h>
-#else
-# if HAVE_LIBC_H
-# include <libc.h>
-# endif
#endif
#if HAVE_SYS_BSDTYPES_H
@@ -71,8 +67,17 @@
#if HAVE_DIRENT_H
# include <dirent.h>
# define NAMLEN(dirent) strlen((dirent)->d_name)
+# if defined(_FILE_OFFSET_BITS) && defined(HAVE_STRUCT_DIRENT64)
+# if !defined(_LP64) && (_FILE_OFFSET_BITS == 64)
+# define DIRENT struct dirent64
+# else
+# define DIRENT struct dirent
+# endif
+# else
+# define DIRENT struct dirent
+# endif
#else
-# define dirent direct
+# define DIRENT struct direct
# define NAMLEN(dirent) (dirent)->d_namlen
# if HAVE_SYS_NDIR_H
# include <sys/ndir.h>
@@ -104,6 +109,7 @@ extern int optind;
#include <curses.h>
#include <term_entry.h>
#include <tic.h>
+#include <nc_tparm.h>
#include <nc_alloc.h>
/* usually in <unistd.h> */
diff --git a/contrib/ncurses/progs/tic.c b/contrib/ncurses/progs/tic.c
index 2fb34df53968..1b03f380725e 100644
--- a/contrib/ncurses/progs/tic.c
+++ b/contrib/ncurses/progs/tic.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,23 +42,48 @@
#include <sys/stat.h>
#include <dump_entry.h>
-#include <term_entry.h>
#include <transform.h>
-MODULE_ID("$Id: tic.c,v 1.96 2002/06/01 20:42:53 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.131 2006/12/02 22:13:17 tom Exp $")
const char *_nc_progname = "tic";
static FILE *log_fp;
static FILE *tmp_fp;
+static bool capdump = FALSE; /* running as infotocap? */
+static bool infodump = FALSE; /* running as captoinfo? */
static bool showsummary = FALSE;
static const char *to_remove;
-static int tparm_errs;
-static void (*save_check_termtype) (TERMTYPE *);
-static void check_termtype(TERMTYPE * tt);
-
-static const char usage_string[] = "[-V] [-v[n]] [-e names] [-CILNRTcfrswx1] source-file\n";
+static void (*save_check_termtype) (TERMTYPE *, bool);
+static void check_termtype(TERMTYPE *tt, bool);
+
+static const char usage_string[] = "\
+[-e names] \
+[-o dir] \
+[-R name] \
+[-v[n]] \
+[-V] \
+[-w[n]] \
+[-\
+1\
+a\
+C\
+c\
+f\
+G\
+g\
+I\
+L\
+N\
+r\
+s\
+T\
+t\
+U\
+x\
+] \
+source-file\n";
static void
cleanup(void)
@@ -79,7 +104,7 @@ failed(const char *msg)
{
perror(msg);
cleanup();
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
static void
@@ -89,24 +114,28 @@ usage(void)
{
"Options:",
" -1 format translation output one capability per line",
- " -C translate entries to termcap source form",
- " -I translate entries to terminfo source form",
- " -L translate entries to full terminfo source form",
- " -N disable smart defaults for source translation",
- " -R restrict translation to given terminfo/termcap version",
- " -T remove size-restrictions on compiled description",
- " -V print version",
#if NCURSES_XNAMES
" -a retain commented-out capabilities (sets -x also)",
#endif
+ " -C translate entries to termcap source form",
" -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}",
- " -e<names> translate/compile only entries named by comma-separated list",
+ " -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",
+#if NCURSES_XNAMES
+ " -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",
#if NCURSES_XNAMES
@@ -123,7 +152,7 @@ usage(void)
fputs(tbl[j], stderr);
putc('\n', stderr);
}
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
#define L_BRACE '{'
@@ -297,7 +326,7 @@ stripped(char *src)
while (isspace(UChar(*src)))
src++;
if (*src != '\0') {
- char *dst = strcpy(malloc(strlen(src) + 1), src);
+ char *dst = strcpy((char *) malloc(strlen(src) + 1), src);
size_t len = strlen(dst);
while (--len != 0 && isspace(UChar(dst[len])))
dst[len] = '\0';
@@ -314,12 +343,12 @@ open_input(const char *filename)
if (fp == 0) {
fprintf(stderr, "%s: Can't open %s\n", _nc_progname, filename);
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
if (fstat(fileno(fp), &sb) < 0
|| (sb.st_mode & S_IFMT) != S_IFREG) {
fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename);
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
return fp;
}
@@ -378,7 +407,7 @@ make_namelist(char *src)
if (showsummary) {
fprintf(log_fp, "Entries that will be compiled:\n");
for (n = 0; dst[n] != 0; n++)
- fprintf(log_fp, "%d:%s\n", n + 1, dst[n]);
+ fprintf(log_fp, "%u:%s\n", n + 1, dst[n]);
}
return dst;
}
@@ -433,9 +462,8 @@ main(int argc, char *argv[])
int width = 60;
bool formatted = FALSE; /* reformat complex strings? */
+ bool literal = FALSE; /* suppress post-processing? */
int numbers = 0; /* format "%'char'" to/from "%{number}" */
- bool infodump = FALSE; /* running as captoinfo? */
- bool capdump = FALSE; /* running as infotocap? */
bool forceresolve = FALSE; /* force resolution */
bool limited = TRUE;
char *tversion = (char *) NULL;
@@ -443,6 +471,7 @@ main(int argc, char *argv[])
const char **namelst = 0;
char *outdir = (char *) NULL;
bool check_only = FALSE;
+ bool suppress_untranslatable = FALSE;
log_fp = stderr;
@@ -466,7 +495,7 @@ main(int argc, char *argv[])
* be optional.
*/
while ((this_opt = getopt(argc, argv,
- "0123456789CILNR:TVace:fGgo:rsvwx")) != EOF) {
+ "0123456789CILNR:TUVace:fGgo:rstvwx")) != EOF) {
if (isdigit(this_opt)) {
switch (last_opt) {
case 'v':
@@ -501,6 +530,7 @@ main(int argc, char *argv[])
break;
case 'N':
smart_defaults = FALSE;
+ literal = TRUE;
break;
case 'R':
tversion = optarg;
@@ -508,6 +538,9 @@ main(int argc, char *argv[])
case 'T':
limited = FALSE;
break;
+ case 'U':
+ literal = TRUE;
+ break;
case 'V':
puts(curses_version());
return EXIT_SUCCESS;
@@ -542,6 +575,10 @@ main(int argc, char *argv[])
width = 0;
break;
#if NCURSES_XNAMES
+ case 't':
+ _nc_disable_period = FALSE;
+ suppress_untranslatable = TRUE;
+ break;
case 'a':
_nc_disable_period = TRUE;
/* FALLTHRU */
@@ -559,8 +596,8 @@ main(int argc, char *argv[])
set_trace_level(debug_level);
if (_nc_tracing) {
- save_check_termtype = _nc_check_termtype;
- _nc_check_termtype = check_termtype;
+ save_check_termtype = _nc_check_termtype2;
+ _nc_check_termtype2 = check_termtype;
}
#if !HAVE_BIG_CORE
/*
@@ -577,7 +614,7 @@ main(int argc, char *argv[])
(void) fprintf(stderr,
"Sorry, -e can't be used without -I or -C\n");
cleanup();
- return EXIT_FAILURE;
+ ExitProgram(EXIT_FAILURE);
}
#endif /* HAVE_BIG_CORE */
@@ -589,7 +626,7 @@ main(int argc, char *argv[])
_nc_progname,
_nc_progname,
usage_string);
- return EXIT_FAILURE;
+ ExitProgram(EXIT_FAILURE);
}
} else {
if (infodump == TRUE) {
@@ -620,7 +657,7 @@ main(int argc, char *argv[])
_nc_progname,
usage_string);
cleanup();
- return EXIT_FAILURE;
+ ExitProgram(EXIT_FAILURE);
}
}
@@ -645,14 +682,16 @@ main(int argc, char *argv[])
_nc_set_writedir(outdir);
#endif /* HAVE_BIG_CORE */
_nc_read_entry_source(tmp_fp, (char *) NULL,
- !smart_defaults, FALSE,
- (check_only || infodump || capdump) ? NULLHOOK : immedhook);
+ !smart_defaults || literal, FALSE,
+ ((check_only || infodump || capdump)
+ ? NULLHOOK
+ : immedhook));
/* do use resolution */
if (check_only || (!infodump && !capdump) || forceresolve) {
- if (!_nc_resolve_uses(TRUE) && !check_only) {
+ if (!_nc_resolve_uses2(TRUE, literal) && !check_only) {
cleanup();
- return EXIT_FAILURE;
+ ExitProgram(EXIT_FAILURE);
}
}
@@ -660,7 +699,7 @@ main(int argc, char *argv[])
if (check_only && (capdump || infodump)) {
for_entry_list(qp) {
if (matches(namelst, qp->tterm.term_names)) {
- int len = fmt_entry(&qp->tterm, NULL, TRUE, infodump, numbers);
+ int len = fmt_entry(&qp->tterm, NULL, FALSE, TRUE, infodump, numbers);
if (len > (infodump ? MAX_TERMINFO_LENGTH : MAX_TERMCAP_LENGTH))
(void) fprintf(stderr,
@@ -692,17 +731,18 @@ main(int argc, char *argv[])
_nc_set_type(_nc_first_name(qp->tterm.term_names));
(void) fseek(tmp_fp, qp->cstart, SEEK_SET);
- while (j--) {
+ while (j-- > 0) {
if (infodump)
(void) putchar(fgetc(tmp_fp));
else
put_translate(fgetc(tmp_fp));
}
- len = dump_entry(&qp->tterm, limited, numbers, NULL);
+ dump_entry(&qp->tterm, suppress_untranslatable,
+ limited, numbers, NULL);
for (j = 0; j < qp->nuses; j++)
- len += dump_uses(qp->uses[j].name, !capdump);
- (void) putchar('\n');
+ dump_uses(qp->uses[j].name, !capdump);
+ len = show_entry();
if (debug_level != 0 && !limited)
printf("# length=%d\n", len);
}
@@ -745,7 +785,7 @@ main(int argc, char *argv[])
fprintf(log_fp, "No entries written\n");
}
cleanup();
- return (EXIT_SUCCESS);
+ ExitProgram(EXIT_SUCCESS);
}
/*
@@ -753,13 +793,220 @@ main(int argc, char *argv[])
* references to locations in the arrays Booleans, Numbers, and Strings ---
* precisely what's needed (see comp_parse.c).
*/
-
-TERMINAL *cur_term; /* tweak to avoid linking lib_cur_term.c */
-
#undef CUR
#define CUR tp->
/*
+ * Check if the alternate character-set capabilities are consistent.
+ */
+static void
+check_acs(TERMTYPE *tp)
+{
+ if (VALID_STRING(acs_chars)) {
+ const char *boxes = "lmkjtuvwqxn";
+ char mapped[256];
+ char missing[256];
+ const char *p;
+ char *q;
+
+ memset(mapped, 0, sizeof(mapped));
+ for (p = acs_chars; *p != '\0'; p += 2) {
+ if (p[1] == '\0') {
+ _nc_warning("acsc has odd number of characters");
+ break;
+ }
+ mapped[UChar(p[0])] = p[1];
+ }
+ if (mapped[UChar('I')] && !mapped[UChar('i')]) {
+ _nc_warning("acsc refers to 'I', which is probably an error");
+ }
+ for (p = boxes, q = missing; *p != '\0'; ++p) {
+ if (!mapped[UChar(p[0])]) {
+ *q++ = p[0];
+ }
+ *q = '\0';
+ }
+ if (*missing != '\0' && strcmp(missing, boxes)) {
+ _nc_warning("acsc is missing some line-drawing mapping: %s", missing);
+ }
+ }
+}
+
+/*
+ * Check if the color capabilities are consistent
+ */
+static void
+check_colors(TERMTYPE *tp)
+{
+ 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)",
+ max_colors, max_pairs);
+
+ PAIRED(set_foreground, set_background);
+ PAIRED(set_a_foreground, set_a_background);
+ 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");
+
+ 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");
+
+ /* 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))
+ || set_color_pair)) {
+ if (!VALID_STRING(orig_pair) && !VALID_STRING(orig_colors))
+ _nc_warning("expected either op/oc string for resetting colors");
+ }
+}
+
+static int
+keypad_final(const char *string)
+{
+ int result = '\0';
+
+ if (VALID_STRING(string)
+ && *string++ == '\033'
+ && *string++ == 'O'
+ && strlen(string) == 1) {
+ result = *string;
+ }
+
+ return result;
+}
+
+static int
+keypad_index(const char *string)
+{
+ char *test;
+ const char *list = "PQRSwxymtuvlqrsPpn"; /* app-keypad except "Enter" */
+ int ch;
+ int result = -1;
+
+ if ((ch = keypad_final(string)) != '\0') {
+ test = strchr(list, ch);
+ if (test != 0)
+ result = (test - list);
+ }
+ return result;
+}
+
+/*
+ * Do a quick sanity-check for vt100-style keypads to see if the 5-key keypad
+ * is mapped inconsistently.
+ */
+static void
+check_keypad(TERMTYPE *tp)
+{
+ char show[80];
+
+ if (VALID_STRING(key_a1) &&
+ VALID_STRING(key_a3) &&
+ VALID_STRING(key_b2) &&
+ VALID_STRING(key_c1) &&
+ VALID_STRING(key_c3)) {
+ char final[6];
+ int list[5];
+ int increase = 0;
+ int j, k, kk;
+ int last;
+ int test;
+
+ final[0] = keypad_final(key_a1);
+ final[1] = keypad_final(key_a3);
+ final[2] = keypad_final(key_b2);
+ final[3] = keypad_final(key_c1);
+ final[4] = keypad_final(key_c3);
+ final[5] = '\0';
+
+ /* special case: legacy coding using 1,2,3,0,. on the bottom */
+ if (!strcmp(final, "qsrpn"))
+ return;
+
+ list[0] = keypad_index(key_a1);
+ list[1] = keypad_index(key_a3);
+ list[2] = keypad_index(key_b2);
+ list[3] = keypad_index(key_c1);
+ list[4] = keypad_index(key_c3);
+
+ /* check that they're all vt100 keys */
+ for (j = 0; j < 5; ++j) {
+ if (list[j] < 0) {
+ return;
+ }
+ }
+
+ /* check if they're all in increasing order */
+ for (j = 1; j < 5; ++j) {
+ if (list[j] > list[j - 1]) {
+ ++increase;
+ }
+ }
+ if (increase != 4) {
+ show[0] = '\0';
+
+ for (j = 0, last = -1; j < 5; ++j) {
+ for (k = 0, kk = -1, test = 100; k < 5; ++k) {
+ if (list[k] > last &&
+ list[k] < test) {
+ test = list[k];
+ kk = k;
+ }
+ }
+ last = test;
+ switch (kk) {
+ case 0:
+ strcat(show, " ka1");
+ break;
+ case 1:
+ strcat(show, " ka3");
+ break;
+ case 2:
+ strcat(show, " kb2");
+ break;
+ case 3:
+ strcat(show, " kc1");
+ break;
+ case 4:
+ strcat(show, " kc3");
+ break;
+ }
+ }
+
+ _nc_warning("vt100 keypad order inconsistent: %s", show);
+ }
+
+ } else if (VALID_STRING(key_a1) ||
+ VALID_STRING(key_a3) ||
+ VALID_STRING(key_b2) ||
+ VALID_STRING(key_c1) ||
+ VALID_STRING(key_c3)) {
+ show[0] = '\0';
+ if (keypad_index(key_a1) >= 0)
+ strcat(show, " ka1");
+ if (keypad_index(key_a3) >= 0)
+ strcat(show, " ka3");
+ if (keypad_index(key_b2) >= 0)
+ strcat(show, " kb2");
+ if (keypad_index(key_c1) >= 0)
+ strcat(show, " kc1");
+ if (keypad_index(key_c3) >= 0)
+ strcat(show, " kc3");
+ if (*show != '\0')
+ _nc_warning("vt100 keypad map incomplete:%s", show);
+ }
+}
+
+/*
* Returns the expected number of parameters for the given capability.
*/
static int
@@ -856,7 +1103,7 @@ expected_params(const char *name)
* markers.
*/
static void
-check_params(TERMTYPE * tp, const char *name, char *value)
+check_params(TERMTYPE *tp, const char *name, char *value)
{
int expected = expected_params(name);
int actual = 0;
@@ -864,9 +1111,11 @@ check_params(TERMTYPE * tp, const char *name, char *value)
bool params[10];
char *s = value;
+#ifdef set_top_margin_parm
if (!strcmp(name, "smgbp")
&& set_top_margin_parm == 0)
expected = 2;
+#endif
for (n = 0; n < 10; n++)
params[n] = FALSE;
@@ -915,6 +1164,43 @@ skip_delay(char *s)
}
/*
+ * Skip a delay altogether, e.g., when comparing a simple string to sgr,
+ * the latter may have a worst-case delay on the end.
+ */
+static char *
+ignore_delays(char *s)
+{
+ int delaying = 0;
+
+ do {
+ switch (*s) {
+ case '$':
+ if (delaying == 0)
+ delaying = 1;
+ break;
+ case '<':
+ if (delaying == 1)
+ delaying = 2;
+ break;
+ case '\0':
+ delaying = 0;
+ break;
+ default:
+ if (delaying) {
+ s = skip_delay(s);
+ if (*s == '>')
+ ++s;
+ delaying = 0;
+ }
+ break;
+ }
+ if (delaying)
+ ++s;
+ } while (delaying);
+ return s;
+}
+
+/*
* An sgr string may contain several settings other than the one we're
* interested in, essentially sgr0 + rmacs + whatever. As long as the
* "whatever" is contained in the sgr string, that is close enough for our
@@ -976,23 +1262,27 @@ similar_sgr(int num, char *a, char *b)
a++;
b++;
}
- return TRUE;
+ /* ignore delays on the end of the string */
+ a = ignore_delays(a);
+ return ((num != 0) || (*a == 0));
}
-static void
-check_sgr(TERMTYPE * tp, char *zero, int num, char *cap, const char *name)
+static char *
+check_sgr(TERMTYPE *tp, char *zero, int num, char *cap, const char *name)
{
- char *test = tparm(set_attributes,
- num == 1,
- num == 2,
- num == 3,
- num == 4,
- num == 5,
- num == 6,
- num == 7,
- num == 8,
- num == 9);
- tparm_errs += _nc_tparm_err;
+ char *test;
+
+ _nc_tparm_err = 0;
+ test = TPARM_9(set_attributes,
+ num == 1,
+ num == 2,
+ num == 3,
+ num == 4,
+ num == 5,
+ num == 6,
+ num == 7,
+ num == 8,
+ num == 9);
if (test != 0) {
if (PRESENT(cap)) {
if (!similar_sgr(num, test, cap)) {
@@ -1001,21 +1291,47 @@ check_sgr(TERMTYPE * tp, char *zero, int num, char *cap, const char *name)
name, _nc_visbuf2(1, cap),
num, _nc_visbuf2(2, test));
}
- } else if (strcmp(test, zero)) {
+ } else if (_nc_capcmp(test, zero)) {
_nc_warning("sgr(%d) present, but not %s", num, name);
}
} else if (PRESENT(cap)) {
_nc_warning("sgr(%d) missing, but %s present", num, name);
}
+ if (_nc_tparm_err)
+ _nc_warning("stack error in sgr(%d) string", num);
+ return test;
}
#define CHECK_SGR(num,name) check_sgr(tp, zero, num, name, #name)
+#ifdef TRACE
+/*
+ * If tic is compiled with TRACE, we'll be able to see the output from the
+ * DEBUG() macro. But since it doesn't use traceon(), it always goes to
+ * the standard error. Use this function to make it simpler to follow the
+ * resulting debug traces.
+ */
+static void
+show_where(unsigned level)
+{
+ if (_nc_tracing >= DEBUG_LEVEL(level)) {
+ char my_name[256];
+ _nc_get_type(my_name);
+ fprintf(stderr, "\"%s\", line %d, '%s' ",
+ _nc_get_source(),
+ _nc_curr_line, my_name);
+ }
+}
+
+#else
+#define show_where(level) /* nothing */
+#endif
+
/* other sanity-checks (things that we don't want in the normal
* logic that reads a terminfo entry)
*/
static void
-check_termtype(TERMTYPE * tp)
+check_termtype(TERMTYPE *tp, bool literal)
{
bool conflict = FALSE;
unsigned j, k;
@@ -1026,37 +1342,39 @@ check_termtype(TERMTYPE * tp)
* a given string (e.g., KEY_END and KEY_LL). But curses will only
* return one (the last one assigned).
*/
- memset(fkeys, 0, sizeof(fkeys));
- for (j = 0; _nc_tinfo_fkeys[j].code; j++) {
- char *a = tp->Strings[_nc_tinfo_fkeys[j].offset];
- bool first = TRUE;
- if (!VALID_STRING(a))
- continue;
- for (k = j + 1; _nc_tinfo_fkeys[k].code; k++) {
- char *b = tp->Strings[_nc_tinfo_fkeys[k].offset];
- if (!VALID_STRING(b)
- || fkeys[k])
+ if (!(_nc_syntax == SYN_TERMCAP && capdump)) {
+ memset(fkeys, 0, sizeof(fkeys));
+ for (j = 0; _nc_tinfo_fkeys[j].code; j++) {
+ char *a = tp->Strings[_nc_tinfo_fkeys[j].offset];
+ bool first = TRUE;
+ if (!VALID_STRING(a))
continue;
- if (!strcmp(a, b)) {
- fkeys[j] = 1;
- fkeys[k] = 1;
- if (first) {
- if (!conflict) {
- _nc_warning("Conflicting key definitions (using the last)");
- conflict = TRUE;
+ for (k = j + 1; _nc_tinfo_fkeys[k].code; k++) {
+ char *b = tp->Strings[_nc_tinfo_fkeys[k].offset];
+ if (!VALID_STRING(b)
+ || fkeys[k])
+ continue;
+ if (!_nc_capcmp(a, b)) {
+ fkeys[j] = 1;
+ fkeys[k] = 1;
+ if (first) {
+ if (!conflict) {
+ _nc_warning("Conflicting key definitions (using the last)");
+ conflict = TRUE;
+ }
+ fprintf(stderr, "... %s is the same as %s",
+ keyname((int) _nc_tinfo_fkeys[j].code),
+ keyname((int) _nc_tinfo_fkeys[k].code));
+ first = FALSE;
+ } else {
+ fprintf(stderr, ", %s",
+ keyname((int) _nc_tinfo_fkeys[k].code));
}
- fprintf(stderr, "... %s is the same as %s",
- keyname(_nc_tinfo_fkeys[j].code),
- keyname(_nc_tinfo_fkeys[k].code));
- first = FALSE;
- } else {
- fprintf(stderr, ", %s",
- keyname(_nc_tinfo_fkeys[k].code));
}
}
+ if (!first)
+ fprintf(stderr, "\n");
}
- if (!first)
- fprintf(stderr, "\n");
}
for (j = 0; j < NUM_STRINGS(tp); j++) {
@@ -1065,17 +1383,9 @@ check_termtype(TERMTYPE * tp)
check_params(tp, ExtStrname(tp, j, strnames), a);
}
- /*
- * Quick check for color. We could also check if the ANSI versus
- * non-ANSI strings are misused.
- */
- if ((max_colors > 0) != (max_pairs > 0)
- || ((max_colors > max_pairs) && (initialize_pair == 0)))
- _nc_warning("inconsistent values for max_colors (%d) and max_pairs (%d)",
- max_colors, max_pairs);
-
- PAIRED(set_foreground, set_background);
- PAIRED(set_a_foreground, set_a_background);
+ check_acs(tp);
+ check_colors(tp);
+ check_keypad(tp);
/*
* These may be mismatched because the terminal description relies on
@@ -1085,7 +1395,7 @@ check_termtype(TERMTYPE * tp)
ANDMISSING(cursor_visible, cursor_normal);
if (PRESENT(cursor_visible) && PRESENT(cursor_normal)
- && !strcmp(cursor_visible, cursor_normal))
+ && !_nc_capcmp(cursor_visible, cursor_normal))
_nc_warning("cursor_visible is same as cursor_normal");
/*
@@ -1096,39 +1406,90 @@ check_termtype(TERMTYPE * tp)
ANDMISSING(change_scroll_region, save_cursor);
ANDMISSING(change_scroll_region, restore_cursor);
- tparm_errs = 0;
if (PRESENT(set_attributes)) {
- char *zero = tparm(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-
- zero = strdup(zero);
- CHECK_SGR(1, enter_standout_mode);
- CHECK_SGR(2, enter_underline_mode);
- CHECK_SGR(3, enter_reverse_mode);
- CHECK_SGR(4, enter_blink_mode);
- CHECK_SGR(5, enter_dim_mode);
- CHECK_SGR(6, enter_bold_mode);
- CHECK_SGR(7, enter_secure_mode);
- CHECK_SGR(8, enter_protected_mode);
- CHECK_SGR(9, enter_alt_charset_mode);
- free(zero);
- if (tparm_errs)
- _nc_warning("stack error in sgr string");
+ char *zero = 0;
+
+ _nc_tparm_err = 0;
+ if (PRESENT(exit_attribute_mode)) {
+ zero = strdup(CHECK_SGR(0, exit_attribute_mode));
+ } else {
+ zero = strdup(TPARM_9(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+ }
+ if (_nc_tparm_err)
+ _nc_warning("stack error in sgr(0) string");
+
+ if (zero != 0) {
+ CHECK_SGR(1, enter_standout_mode);
+ CHECK_SGR(2, enter_underline_mode);
+ CHECK_SGR(3, enter_reverse_mode);
+ CHECK_SGR(4, enter_blink_mode);
+ CHECK_SGR(5, enter_dim_mode);
+ CHECK_SGR(6, enter_bold_mode);
+ CHECK_SGR(7, enter_secure_mode);
+ CHECK_SGR(8, enter_protected_mode);
+ CHECK_SGR(9, enter_alt_charset_mode);
+ free(zero);
+ } else {
+ _nc_warning("sgr(0) did not return a value");
+ }
+ } else if (PRESENT(exit_attribute_mode) &&
+ set_attributes != CANCELLED_STRING) {
+ if (_nc_syntax == SYN_TERMINFO)
+ _nc_warning("missing sgr string");
}
+ if (PRESENT(exit_attribute_mode)) {
+ char *check_sgr0 = _nc_trim_sgr0(tp);
+
+ if (check_sgr0 == 0 || *check_sgr0 == '\0') {
+ _nc_warning("trimmed sgr0 is empty");
+ } else {
+ show_where(2);
+ if (check_sgr0 != exit_attribute_mode) {
+ DEBUG(2,
+ ("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)));
+ }
+ }
+ }
+#ifdef TRACE
+ show_where(2);
+ if (!auto_right_margin) {
+ DEBUG(2,
+ ("can write to lower-right directly"));
+ } else if (PRESENT(enter_am_mode) && PRESENT(exit_am_mode)) {
+ DEBUG(2,
+ ("can write to lower-right by suppressing automargin"));
+ } else if ((PRESENT(enter_insert_mode) && PRESENT(exit_insert_mode))
+ || PRESENT(insert_character) || PRESENT(parm_ich)) {
+ DEBUG(2,
+ ("can write to lower-right by using inserts"));
+ } else {
+ DEBUG(2,
+ ("cannot write to lower-right"));
+ }
+#endif
+
/*
* Some standard applications (e.g., vi) and some non-curses
- * applications (e.g., jove) get confused if we have both ich/ich1 and
+ * applications (e.g., jove) get confused if we have both ich1 and
* smir/rmir. Let's be nice and warn about that, too, even though
* ncurses handles it.
*/
if ((PRESENT(enter_insert_mode) || PRESENT(exit_insert_mode))
- && (PRESENT(insert_character) || PRESENT(parm_ich))) {
- _nc_warning("non-curses applications may be confused by ich/ich1 with smir/rmir");
+ && PRESENT(parm_ich)) {
+ _nc_warning("non-curses applications may be confused by ich1 with smir/rmir");
}
/*
* Finally, do the non-verbose checks
*/
if (save_check_termtype != 0)
- save_check_termtype(tp);
+ save_check_termtype(tp, literal);
}
diff --git a/contrib/ncurses/progs/toe.c b/contrib/ncurses/progs/toe.c
index 7a757855e3b5..9c0de791d72b 100644
--- a/contrib/ncurses/progs/toe.c
+++ b/contrib/ncurses/progs/toe.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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,11 +29,11 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
/*
* toe.c --- table of entries report generator
- *
*/
#include <progs.priv.h>
@@ -41,23 +41,22 @@
#include <sys/stat.h>
#include <dump_entry.h>
-#include <term_entry.h>
-MODULE_ID("$Id: toe.c,v 1.26 2001/06/16 11:00:41 tom Exp $")
+#if USE_HASHED_DB
+#include <hashed_db.h>
+#endif
+
+MODULE_ID("$Id: toe.c,v 1.41 2006/08/19 18:18:09 tom Exp $")
#define isDotname(name) (!strcmp(name, ".") || !strcmp(name, ".."))
const char *_nc_progname;
-static int typelist(int eargc, char *eargv[], bool,
- void (*)(const char *, TERMTYPE *));
-static void deschook(const char *, TERMTYPE *);
-
#if NO_LEAKS
#undef ExitProgram
+static void ExitProgram(int code) GCC_NORETURN;
static void
-ExitProgram(int code) GCC_NORETURN;
- static void ExitProgram(int code)
+ExitProgram(int code)
{
_nc_free_entries(_nc_head);
_nc_leaks_dump_entry();
@@ -65,46 +64,289 @@ ExitProgram(int code) GCC_NORETURN;
}
#endif
+#if USE_HASHED_DB
static bool
-is_a_file(char *path)
+make_db_name(char *dst, const char *src, unsigned limit)
{
- struct stat sb;
- return (stat(path, &sb) == 0
- && (sb.st_mode & S_IFMT) == S_IFREG);
+ static const char suffix[] = DBM_SUFFIX;
+
+ bool result = FALSE;
+ unsigned lens = sizeof(suffix) - 1;
+ unsigned size = strlen(src);
+ unsigned need = lens + size;
+
+ if (need <= limit) {
+ if (size >= lens
+ && !strcmp(src + size - lens, suffix))
+ (void) strcpy(dst, src);
+ else
+ (void) sprintf(dst, "%s%s", src, suffix);
+ result = TRUE;
+ }
+ return result;
}
+#endif
static bool
-is_a_directory(char *path)
+is_database(const char *path)
{
- struct stat sb;
- return (stat(path, &sb) == 0
- && (sb.st_mode & S_IFMT) == S_IFDIR);
+ bool result = FALSE;
+#if USE_DATABASE
+ if (_nc_is_dir_path(path) && access(path, R_OK | X_OK) == 0) {
+ result = TRUE;
+ }
+#endif
+#if USE_TERMCAP
+ if (_nc_is_file_path(path) && access(path, R_OK) == 0) {
+ result = TRUE;
+ }
+#endif
+#if USE_HASHED_DB
+ if (!result) {
+ char filename[PATH_MAX];
+ if (_nc_is_file_path(path) && access(path, R_OK) == 0) {
+ result = TRUE;
+ } else if (make_db_name(filename, path, sizeof(filename))) {
+ if (_nc_is_file_path(filename) && access(filename, R_OK) == 0) {
+ result = TRUE;
+ }
+ }
+ }
+#endif
+ return result;
}
-static char *
-get_directory(char *path)
+static void
+deschook(const char *cn, TERMTYPE *tp)
+/* display a description for the type */
{
- if (path != 0) {
- if (!is_a_directory(path)
- || access(path, R_OK | X_OK) != 0)
- path = 0;
+ const char *desc;
+
+ if ((desc = strrchr(tp->term_names, '|')) == 0 || *++desc == '\0')
+ desc = "(No description)";
+
+ (void) printf("%-10s\t%s\n", cn, desc);
+}
+
+#if USE_TERMCAP
+static void
+show_termcap(char *buffer,
+ void (*hook) (const char *, TERMTYPE *tp))
+{
+ TERMTYPE data;
+ char *next = strchr(buffer, ':');
+ char *last;
+ char *list = buffer;
+
+ if (next)
+ *next = '\0';
+
+ last = strrchr(buffer, '|');
+ if (last)
+ ++last;
+
+ data.term_names = strdup(buffer);
+ while ((next = strtok(list, "|")) != 0) {
+ if (next != last)
+ hook(next, &data);
+ list = 0;
+ }
+ free(data.term_names);
+}
+#endif
+
+static int
+typelist(int eargc, char *eargv[],
+ bool verbosity,
+ void (*hook) (const char *, TERMTYPE *tp))
+/* apply a function to each entry in given terminfo directories */
+{
+ int i;
+
+ for (i = 0; i < eargc; i++) {
+#if USE_DATABASE
+ if (_nc_is_dir_path(eargv[i])) {
+ DIR *termdir;
+ DIRENT *subdir;
+
+ if ((termdir = opendir(eargv[i])) == 0) {
+ (void) fflush(stdout);
+ (void) fprintf(stderr,
+ "%s: can't open terminfo directory %s\n",
+ _nc_progname, eargv[i]);
+ return (EXIT_FAILURE);
+ } else if (verbosity)
+ (void) printf("#\n#%s:\n#\n", eargv[i]);
+
+ while ((subdir = readdir(termdir)) != 0) {
+ size_t len = NAMLEN(subdir);
+ char buf[PATH_MAX];
+ char name_1[PATH_MAX];
+ DIR *entrydir;
+ DIRENT *entry;
+
+ strncpy(name_1, subdir->d_name, len)[len] = '\0';
+ if (isDotname(name_1))
+ continue;
+
+ (void) sprintf(buf, "%s/%s/", eargv[i], name_1);
+ if (chdir(buf) != 0)
+ continue;
+
+ entrydir = opendir(".");
+ while ((entry = readdir(entrydir)) != 0) {
+ char name_2[PATH_MAX];
+ TERMTYPE lterm;
+ char *cn;
+ int status;
+
+ len = NAMLEN(entry);
+ strncpy(name_2, entry->d_name, len)[len] = '\0';
+ if (isDotname(name_2) || !_nc_is_file_path(name_2))
+ continue;
+
+ status = _nc_read_file_entry(name_2, &lterm);
+ if (status <= 0) {
+ (void) fflush(stdout);
+ (void) fprintf(stderr,
+ "%s: couldn't open terminfo file %s.\n",
+ _nc_progname, name_2);
+ return (EXIT_FAILURE);
+ }
+
+ /* only visit things once, by primary name */
+ cn = _nc_first_name(lterm.term_names);
+ if (!strcmp(cn, name_2)) {
+ /* apply the selected hook function */
+ (*hook) (cn, &lterm);
+ }
+ _nc_free_termtype(&lterm);
+ }
+ closedir(entrydir);
+ }
+ closedir(termdir);
+ }
+#if USE_HASHED_DB
+ else {
+ DB *capdbp;
+ char filename[PATH_MAX];
+
+ if (make_db_name(filename, eargv[i], sizeof(filename))) {
+ if ((capdbp = _nc_db_open(filename, FALSE)) != 0) {
+ DBT key, data;
+ int code;
+
+ code = _nc_db_first(capdbp, &key, &data);
+ while (code == 0) {
+ TERMTYPE lterm;
+ int used;
+ char *have;
+ char *cn;
+
+ if (_nc_db_have_data(&key, &data, &have, &used)) {
+ if (_nc_read_termtype(&lterm, have, used) > 0) {
+ /* only visit things once, by primary name */
+ cn = _nc_first_name(lterm.term_names);
+ /* apply the selected hook function */
+ (*hook) (cn, &lterm);
+ _nc_free_termtype(&lterm);
+ }
+ }
+ code = _nc_db_next(capdbp, &key, &data);
+ }
+
+ _nc_db_close(capdbp);
+ }
+ }
+ }
+#endif
+#endif
+#if USE_TERMCAP
+#if HAVE_BSD_CGETENT
+ char *db_array[2];
+ char *buffer = 0;
+
+ if (verbosity)
+ (void) printf("#\n#%s:\n#\n", eargv[i]);
+
+ db_array[0] = eargv[i];
+ db_array[1] = 0;
+
+ if (cgetfirst(&buffer, db_array)) {
+ show_termcap(buffer, hook);
+ free(buffer);
+ while (cgetnext(&buffer, db_array)) {
+ show_termcap(buffer, hook);
+ free(buffer);
+ }
+ }
+ cgetclose();
+#else
+ /* scan termcap text-file only */
+ if (_nc_is_file_path(eargv[i])) {
+ char buffer[2048];
+ FILE *fp;
+
+ if ((fp = fopen(eargv[i], "r")) != 0) {
+ while (fgets(buffer, sizeof(buffer), fp) != 0) {
+ if (*buffer == '#')
+ continue;
+ if (isspace(*buffer))
+ continue;
+ show_termcap(buffer, hook);
+ }
+ fclose(fp);
+ }
+ }
+#endif
+#endif
}
- return path;
+
+ return (EXIT_SUCCESS);
+}
+
+static void
+usage(void)
+{
+ (void) fprintf(stderr, "usage: %s [-ahuUV] [-v n] [file...]\n", _nc_progname);
+ ExitProgram(EXIT_FAILURE);
}
int
main(int argc, char *argv[])
{
+ bool all_dirs = FALSE;
bool direct_dependencies = FALSE;
bool invert_dependencies = FALSE;
bool header = FALSE;
- int i, c;
+ int i;
int code;
+ int this_opt, last_opt = '?';
+ int v_opt = 0;
_nc_progname = _nc_rootname(argv[0]);
- while ((c = getopt(argc, argv, "huv:UV")) != EOF)
- switch (c) {
+ while ((this_opt = getopt(argc, argv, "0123456789ahuvUV")) != EOF) {
+ /* handle optional parameter */
+ if (isdigit(this_opt)) {
+ switch (last_opt) {
+ case 'v':
+ v_opt = (this_opt - '0');
+ break;
+ default:
+ if (isdigit(last_opt))
+ v_opt *= 10;
+ else
+ v_opt = 0;
+ v_opt += (this_opt - '0');
+ last_opt = this_opt;
+ }
+ continue;
+ }
+ switch (this_opt) {
+ case 'a':
+ all_dirs = TRUE;
+ break;
case 'h':
header = TRUE;
break;
@@ -112,7 +354,7 @@ main(int argc, char *argv[])
direct_dependencies = TRUE;
break;
case 'v':
- set_trace_level(atoi(optarg));
+ v_opt = 1;
break;
case 'U':
invert_dependencies = TRUE;
@@ -121,9 +363,10 @@ main(int argc, char *argv[])
puts(curses_version());
ExitProgram(EXIT_SUCCESS);
default:
- (void) fprintf(stderr, "usage: toe [-huUV] [-v n] [file...]\n");
- ExitProgram(EXIT_FAILURE);
+ usage();
}
+ }
+ set_trace_level(v_opt);
if (direct_dependencies || invert_dependencies) {
if (freopen(argv[optind], "r", stdin) == 0) {
@@ -141,14 +384,15 @@ main(int argc, char *argv[])
if (direct_dependencies) {
ENTRY *qp;
- for_entry_list(qp)
+ for_entry_list(qp) {
if (qp->nuses) {
- int j;
+ int j;
- (void) printf("%s:", _nc_first_name(qp->tterm.term_names));
- for (j = 0; j < qp->nuses; j++)
- (void) printf(" %s", qp->uses[j].name);
- putchar('\n');
+ (void) printf("%s:", _nc_first_name(qp->tterm.term_names));
+ for (j = 0; j < qp->nuses; j++)
+ (void) printf(" %s", qp->uses[j].name);
+ putchar('\n');
+ }
}
ExitProgram(EXIT_SUCCESS);
@@ -187,121 +431,71 @@ main(int argc, char *argv[])
*/
if (optind < argc) {
code = typelist(argc - optind, argv + optind, header, deschook);
+ } else if (all_dirs) {
+ DBDIRS state;
+ int offset;
+ int pass;
+ const char *path;
+ char **eargv = 0;
+
+ code = EXIT_FAILURE;
+ for (pass = 0; pass < 2; ++pass) {
+ unsigned count = 0;
+
+ _nc_first_db(&state, &offset);
+ while ((path = _nc_next_db(&state, &offset)) != 0) {
+ if (!is_database(path)) {
+ ;
+ } else if (eargv != 0) {
+ unsigned n;
+ int found = FALSE;
+
+ /* eliminate duplicates */
+ for (n = 0; n < count; ++n) {
+ if (!strcmp(path, eargv[n])) {
+ found = TRUE;
+ break;
+ }
+ }
+ if (!found) {
+ eargv[count] = strdup(path);
+ ++count;
+ }
+ } else {
+ ++count;
+ }
+ }
+ if (!pass) {
+ eargv = typeCalloc(char *, count + 1);
+ } else {
+ code = typelist((int) count, eargv, header, deschook);
+ while (count-- > 0)
+ free(eargv[count]);
+ free(eargv);
+ }
+ }
} else {
- char *home, *eargv[3];
- char personal[PATH_MAX];
- int j;
-
- j = 0;
- if ((eargv[j] = get_directory(getenv("TERMINFO"))) != 0) {
- j++;
- } else {
- if ((home = getenv("HOME")) != 0) {
- (void) sprintf(personal, PRIVATE_INFO, home);
- if ((eargv[j] = get_directory(personal)) != 0)
- j++;
+ DBDIRS state;
+ int offset;
+ const char *path;
+ char *eargv[3];
+ int count = 0;
+
+ _nc_first_db(&state, &offset);
+ while ((path = _nc_next_db(&state, &offset)) != 0) {
+ if (is_database(path)) {
+ eargv[count++] = strdup(path);
+ break;
}
- if ((eargv[j] = get_directory(strcpy(personal, TERMINFO))) != 0)
- j++;
}
- eargv[j] = 0;
+ eargv[count] = 0;
- code = typelist(j, eargv, header, deschook);
- }
-
- ExitProgram(code);
-}
+ code = typelist(count, eargv, header, deschook);
-static void
-deschook(const char *cn, TERMTYPE * tp)
-/* display a description for the type */
-{
- const char *desc;
-
- if ((desc = strrchr(tp->term_names, '|')) == 0)
- desc = "(No description)";
- else
- ++desc;
-
- (void) printf("%-10s\t%s\n", cn, desc);
-}
-
-static int
-typelist(int eargc, char *eargv[],
- bool verbosity,
- void (*hook) (const char *, TERMTYPE * tp))
-/* apply a function to each entry in given terminfo directories */
-{
- int i;
-
- for (i = 0; i < eargc; i++) {
- DIR *termdir;
- struct dirent *subdir;
-
- if ((termdir = opendir(eargv[i])) == 0) {
- (void) fflush(stdout);
- (void) fprintf(stderr,
- "%s: can't open terminfo directory %s\n",
- _nc_progname, eargv[i]);
- return (EXIT_FAILURE);
- } else if (verbosity)
- (void) printf("#\n#%s:\n#\n", eargv[i]);
-
- while ((subdir = readdir(termdir)) != 0) {
- size_t len = NAMLEN(subdir);
- char buf[PATH_MAX];
- char name_1[PATH_MAX];
- DIR *entrydir;
- struct dirent *entry;
-
- strncpy(name_1, subdir->d_name, len)[len] = '\0';
- if (isDotname(name_1))
- continue;
-
- (void) sprintf(buf, "%s/%s/", eargv[i], name_1);
- if (chdir(buf) != 0)
- continue;
-
- entrydir = opendir(".");
- while ((entry = readdir(entrydir)) != 0) {
- char name_2[PATH_MAX];
- TERMTYPE lterm;
- char *cn;
- int status;
-
- len = NAMLEN(entry);
- strncpy(name_2, entry->d_name, len)[len] = '\0';
- if (isDotname(name_2) || !is_a_file(name_2))
- continue;
-
- status = _nc_read_file_entry(name_2, &lterm);
- if (status <= 0) {
- (void) fflush(stdout);
- (void) fprintf(stderr,
- "toe: couldn't open terminfo file %s.\n",
- name_2);
- return (EXIT_FAILURE);
- }
-
- /* only visit things once, by primary name */
- cn = _nc_first_name(lterm.term_names);
- if (!strcmp(cn, name_2)) {
- /* apply the selected hook function */
- (*hook) (cn, &lterm);
- }
- if (lterm.term_names) {
- free(lterm.term_names);
- lterm.term_names = 0;
- }
- if (lterm.str_table) {
- free(lterm.str_table);
- lterm.str_table = 0;
- }
- }
- closedir(entrydir);
- }
- closedir(termdir);
+ while (count-- > 0)
+ free(eargv[count]);
}
+ _nc_last_db();
- return (EXIT_SUCCESS);
+ ExitProgram(code);
}
diff --git a/contrib/ncurses/progs/tput.c b/contrib/ncurses/progs/tput.c
index 3b65d15993b0..47e4c20174a7 100644
--- a/contrib/ncurses/progs/tput.c
+++ b/contrib/ncurses/progs/tput.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 @@
#endif
#include <transform.h>
-MODULE_ID("$Id: tput.c,v 1.30 2001/07/22 00:16:33 tom Exp $")
+MODULE_ID("$Id: tput.c,v 1.38 2006/11/26 00:27:47 tom Exp $")
#define PUTS(s) fputs(s, stdout)
#define PUTCHAR(c) putchar(c)
@@ -67,17 +67,18 @@ quit(int status, const char *fmt,...)
va_list argp;
va_start(argp, fmt);
+ fprintf(stderr, "%s: ", prg_name);
vfprintf(stderr, fmt, argp);
fprintf(stderr, "\n");
va_end(argp);
- exit(status);
+ ExitProgram(status);
}
static void
usage(void)
{
fprintf(stderr, "usage: %s [-V] [-S] [-T term] capname\n", prg_name);
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
}
static void
@@ -124,6 +125,25 @@ tparm_type(const char *name)
}
static int
+exit_code(int token, int value)
+{
+ int result = 99;
+
+ switch (token) {
+ case BOOLEAN:
+ result = !value; /* TRUE=0, FALSE=1 */
+ break;
+ case NUMBER:
+ result = 0; /* always zero */
+ break;
+ case STRING:
+ result = value; /* 0=normal, 1=missing */
+ break;
+ }
+ return result;
+}
+
+static int
tput(int argc, char *argv[])
{
NCURSES_CONST char *name;
@@ -157,14 +177,14 @@ tput(int argc, char *argv[])
#ifdef set_lr_margin
if (set_lr_margin != 0) {
- PUTS(tparm(set_lr_margin, 0, columns - 1));
+ PUTS(TPARM_2(set_lr_margin, 0, columns - 1));
} else
#endif
#ifdef set_left_margin_parm
if (set_left_margin_parm != 0
&& set_right_margin_parm != 0) {
- PUTS(tparm(set_left_margin_parm, 0));
- PUTS(tparm(set_right_margin_parm, columns - 1));
+ PUTS(TPARM_1(set_left_margin_parm, 0));
+ PUTS(TPARM_1(set_right_margin_parm, columns - 1));
} else
#endif
if (clear_margins != 0
@@ -178,7 +198,7 @@ tput(int argc, char *argv[])
}
PUTS(set_left_margin);
if (parm_right_cursor) {
- PUTS(tparm(parm_right_cursor, columns - 1));
+ PUTS(TPARM_1(parm_right_cursor, columns - 1));
} else {
for (i = 0; i < columns - 1; i++) {
PUTCHAR(' ');
@@ -197,7 +217,7 @@ tput(int argc, char *argv[])
if (clear_all_tabs != 0 && set_tab != 0) {
for (i = 0; i < columns - 1; i += 8) {
if (parm_right_cursor) {
- PUTS(tparm(parm_right_cursor, 8));
+ PUTS(TPARM_1(parm_right_cursor, 8));
} else {
for (j = 0; j < 8; j++)
PUTCHAR(' ');
@@ -211,7 +231,7 @@ tput(int argc, char *argv[])
if (is_reset && reset_file != 0) {
f = fopen(reset_file, "r");
if (f == 0) {
- quit(errno, "Can't open reset_file: '%s'", reset_file);
+ quit(4 + errno, "Can't open reset_file: '%s'", reset_file);
}
while ((c = fgetc(f)) != EOF) {
PUTCHAR(c);
@@ -220,7 +240,7 @@ tput(int argc, char *argv[])
} else if (init_file != 0) {
f = fopen(init_file, "r");
if (f == 0) {
- quit(errno, "Can't open init_file: '%s'", init_file);
+ quit(4 + errno, "Can't open init_file: '%s'", init_file);
}
while ((c = fgetc(f)) != EOF) {
PUTCHAR(c);
@@ -231,8 +251,8 @@ tput(int argc, char *argv[])
if (is_reset && reset_3string != 0) {
PUTS(reset_3string);
- } else if (init_2string != 0) {
- PUTS(init_2string);
+ } else if (init_3string != 0) {
+ PUTS(init_3string);
}
FLUSH;
return 0;
@@ -267,17 +287,19 @@ tput(int argc, char *argv[])
#endif
if ((status = tigetflag(name)) != -1) {
- return (status != 0);
+ return exit_code(BOOLEAN, status);
} else if ((status = tigetnum(name)) != CANCELLED_NUMERIC) {
(void) printf("%d\n", status);
- return (0);
+ return exit_code(NUMBER, 0);
} else if ((s = tigetstr(name)) == CANCELLED_STRING) {
- quit(4, "%s: unknown terminfo capability '%s'", prg_name, name);
+ quit(4, "unknown terminfo capability '%s'", name);
} else if (s != ABSENT_STRING) {
if (argc > 1) {
int k;
- int numbers[10];
- char *strings[10];
+ int popcount;
+ long numbers[1 + NUM_PARM];
+ char *strings[1 + NUM_PARM];
+ char *p_is_s[NUM_PARM];
/* Nasty hack time. The tparm function needs to see numeric
* parameters as numbers, not as pointers to their string
@@ -291,32 +313,40 @@ tput(int argc, char *argv[])
if (tmp == 0 || *tmp != 0)
numbers[k] = 0;
}
- for (k = argc; k <= 9; k++) {
+ for (k = argc; k <= NUM_PARM; k++) {
numbers[k] = 0;
strings[k] = 0;
}
switch (tparm_type(name)) {
case Num_Str:
- s = tparm(s, numbers[1], strings[2]);
+ s = TPARM_2(s, numbers[1], strings[2]);
break;
case Num_Str_Str:
- s = tparm(s, numbers[1], strings[2], strings[3]);
+ s = TPARM_3(s, numbers[1], strings[2], strings[3]);
break;
default:
- s = tparm(s,
- numbers[1], numbers[2], numbers[3],
- numbers[4], numbers[5], numbers[6],
- numbers[7], numbers[8], numbers[9]);
+ (void) _nc_tparm_analyze(s, p_is_s, &popcount);
+#define myParam(n) (p_is_s[n - 1] != 0 ? ((long) strings[n]) : numbers[n])
+ s = TPARM_9(s,
+ myParam(1),
+ myParam(2),
+ myParam(3),
+ myParam(4),
+ myParam(5),
+ myParam(6),
+ myParam(7),
+ myParam(8),
+ myParam(9));
break;
}
}
/* use putp() in order to perform padding */
putp(s);
- return (0);
+ return exit_code(STRING, 0);
}
- return (0);
+ return exit_code(STRING, 1);
}
int
@@ -327,7 +357,7 @@ main(int argc, char **argv)
bool cmdline = TRUE;
int c;
char buf[BUFSIZ];
- int errors = 0;
+ int result = 0;
check_aliases(prg_name = _nc_rootname(argv[0]));
@@ -344,7 +374,7 @@ main(int argc, char **argv)
break;
case 'V':
puts(curses_version());
- return EXIT_SUCCESS;
+ ExitProgram(EXIT_SUCCESS);
default:
usage();
/* NOTREACHED */
@@ -374,7 +404,7 @@ main(int argc, char **argv)
if (cmdline) {
if ((argc <= 0) && !is_reset && !is_init)
usage();
- return tput(argc, argv);
+ ExitProgram(tput(argc, argv));
}
while (fgets(buf, sizeof(buf), stdin) != 0) {
@@ -395,9 +425,12 @@ main(int argc, char **argv)
argvec[argnum] = 0;
if (argnum != 0
- && tput(argnum, argvec) != 0)
- errors++;
+ && tput(argnum, argvec) != 0) {
+ if (result == 0)
+ result = 4; /* will return value >4 */
+ ++result;
+ }
}
- return errors > 0;
+ ExitProgram(result);
}
diff --git a/contrib/ncurses/progs/tset.c b/contrib/ncurses/progs/tset.c
index 0276c4b7a58d..6ce3f50b8f49 100644
--- a/contrib/ncurses/progs/tset.c
+++ b/contrib/ncurses/progs/tset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free 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 *
****************************************************************************/
/*
@@ -99,11 +100,10 @@ char *ttyname(int fd);
#include <sys/ptem.h>
#endif
-#include <curses.h> /* for bool typedef */
#include <dump_entry.h>
#include <transform.h>
-MODULE_ID("$Id: tset.c,v 0.52 2001/09/29 21:13:56 tom Exp $")
+MODULE_ID("$Id: tset.c,v 1.67 2006/09/16 17:51:10 tom Exp $")
extern char **environ;
@@ -114,6 +114,9 @@ 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 */
@@ -142,7 +145,7 @@ exit_error(void)
SET_TTY(STDERR_FILENO, &original);
(void) fprintf(stderr, "\n");
fflush(stderr);
- exit(EXIT_FAILURE);
+ ExitProgram(EXIT_FAILURE);
/* NOTREACHED */
}
@@ -151,7 +154,7 @@ err(const char *fmt,...)
{
va_list ap;
va_start(ap, fmt);
- (void) fprintf(stderr, "tset: ");
+ (void) fprintf(stderr, "%s: ", _nc_progname);
(void) vfprintf(stderr, fmt, ap);
va_end(ap);
exit_error();
@@ -162,7 +165,15 @@ static void
failed(const char *msg)
{
char temp[BUFSIZ];
- perror(strncat(strcpy(temp, "tset: "), msg, sizeof(temp) - 10));
+ unsigned len = strlen(_nc_progname) + 2;
+
+ if (len < sizeof(temp) - 12) {
+ strcpy(temp, _nc_progname);
+ strcat(temp, ": ");
+ } else {
+ strcpy(temp, "tset: ");
+ }
+ perror(strncat(temp, msg, sizeof(temp) - strlen(temp) - 2));
exit_error();
/* NOTREACHED */
}
@@ -197,6 +208,7 @@ askuser(const char *dflt)
char *p;
/* We can get recalled; if so, don't continue uselessly. */
+ clearerr(stdin);
if (feof(stdin) || ferror(stdin)) {
(void) fprintf(stderr, "\n");
exit_error();
@@ -349,7 +361,7 @@ add_mapping(const char *port, char *arg)
char *base = 0;
copy = strdup(arg);
- mapp = malloc(sizeof(MAP));
+ mapp = (MAP *) malloc(sizeof(MAP));
if (copy == 0 || mapp == 0)
failed("malloc");
mapp->next = 0;
@@ -573,7 +585,7 @@ get_termcap_entry(char *userarg)
* real entry from /etc/termcap. This prevents us from being fooled
* by out of date stuff in the environment.
*/
- found:if ((p = getenv("TERMCAP")) != 0 && *p != '/') {
+ found:if ((p = getenv("TERMCAP")) != 0 && !_nc_is_abs_path(p)) {
/* 'unsetenv("TERMCAP")' is not portable.
* The 'environ' array is better.
*/
@@ -602,13 +614,13 @@ get_termcap_entry(char *userarg)
while (setupterm((NCURSES_CONST char *) ttype, STDOUT_FILENO, &errret)
!= OK) {
if (errret == 0) {
- (void) fprintf(stderr, "tset: unknown terminal type %s\n",
- ttype);
+ (void) fprintf(stderr, "%s: unknown terminal type %s\n",
+ _nc_progname, ttype);
ttype = 0;
} else {
(void) fprintf(stderr,
- "tset: can't initialize terminal type %s (error %d)\n",
- ttype, errret);
+ "%s: can't initialize terminal type %s (error %d)\n",
+ _nc_progname, ttype, errret);
ttype = 0;
}
ttype = askuser(ttype);
@@ -626,8 +638,10 @@ get_termcap_entry(char *userarg)
**************************************************************************/
/* some BSD systems have these built in, some systems are missing
- * one or more definitions. The safest solution is to override.
+ * 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
@@ -638,20 +652,49 @@ get_termcap_entry(char *userarg)
#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) ((int)val <= 0 ? dft : val)
+#define CHK(val, dft) (DISABLED(val) ? dft : val)
static bool set_tabs(void);
@@ -803,13 +846,13 @@ static void
set_control_chars(void)
{
#ifdef TERMIOS
- if (mode.c_cc[VERASE] == 0 || terasechar >= 0)
+ if (DISABLED(mode.c_cc[VERASE]) || terasechar >= 0)
mode.c_cc[VERASE] = terasechar >= 0 ? terasechar : default_erase();
- if (mode.c_cc[VINTR] == 0 || intrchar >= 0)
+ if (DISABLED(mode.c_cc[VINTR]) || intrchar >= 0)
mode.c_cc[VINTR] = intrchar >= 0 ? intrchar : CINTR;
- if (mode.c_cc[VKILL] == 0 || tkillchar >= 0)
+ if (DISABLED(mode.c_cc[VKILL]) || tkillchar >= 0)
mode.c_cc[VKILL] = tkillchar >= 0 ? tkillchar : CKILL;
#endif
}
@@ -935,7 +978,7 @@ set_init(void)
* Return TRUE if we set any tab stops, FALSE if not.
*/
static bool
-set_tabs()
+set_tabs(void)
{
if (set_tab && clear_all_tabs) {
int c;
@@ -948,10 +991,10 @@ set_tabs()
* used to try a bunch of half-clever things
* with cup and hpa, for an average saving of
* somewhat less than two character times per
- * tab stop, less that .01 sec at 2400cps. We
+ * tab stop, less than .01 sec at 2400cps. We
* lost all this cruft because it seemed to be
* introducing some odd bugs.
- * ----------12345678----------- */
+ * -----------12345678----------- */
(void) fputs(" ", stderr);
tputs(set_tab, 0, outc);
}
@@ -985,11 +1028,13 @@ report(const char *name, int which, unsigned def)
(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.
*/
- if (newer == 0177)
+ else if (newer == 0177)
(void) fprintf(stderr, "delete.\n");
else if ((p = key_backspace) != 0
&& newer == (unsigned char) p[0]
@@ -997,9 +1042,9 @@ report(const char *name, int which, unsigned def)
(void) fprintf(stderr, "backspace.\n");
else if (newer < 040) {
newer ^= 0100;
- (void) fprintf(stderr, "control-%c (^%c).\n", newer, newer);
+ (void) fprintf(stderr, "control-%c (^%c).\n", UChar(newer), UChar(newer));
} else
- (void) fprintf(stderr, "%c.\n", newer);
+ (void) fprintf(stderr, "%c.\n", UChar(newer));
}
#endif
@@ -1038,10 +1083,28 @@ obsolete(char **argv)
}
static void
-usage(const char *pname)
+usage(void)
{
- (void) fprintf(stderr,
- "usage: %s [-IQVrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]", pname);
+ static const char *tbl[] =
+ {
+ ""
+ ,"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"
+ };
+ unsigned n;
+ (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();
/* NOTREACHED */
}
@@ -1064,28 +1127,12 @@ main(int argc, char **argv)
const char *p;
const char *ttype;
- if (GET_TTY(STDERR_FILENO, &mode) < 0)
- failed("standard error");
- can_restore = TRUE;
- original = oldmode = mode;
-#ifdef TERMIOS
- ospeed = cfgetospeed(&mode);
-#else
- ospeed = mode.sg_ospeed;
-#endif
-
- p = _nc_rootname(*argv);
- if (!strcmp(p, PROG_RESET)) {
- isreset = TRUE;
- reset_mode();
- }
-
obsolete(argv);
noinit = noset = quiet = Sflag = sflag = showterm = 0;
- while ((ch = getopt(argc, argv, "a:d:e:Ii:k:m:np:qQSrsV")) != EOF) {
+ while ((ch = getopt(argc, argv, "a:cd:e:Ii:k:m:np:qQSrsVw")) != EOF) {
switch (ch) {
- case 'q': /* display term only */
- noset = 1;
+ case 'c': /* set control-chars */
+ opt_c = TRUE;
break;
case 'a': /* OBSOLETE: map identifier to type */
add_mapping("arpanet", optarg);
@@ -1116,28 +1163,54 @@ main(int argc, char **argv)
case 'Q': /* don't output control key settings */
quiet = 1;
break;
- case 'S': /* OBSOLETE: output TERM & TERMCAP */
- Sflag = 1;
+ case 'q': /* display term only */
+ noset = 1;
break;
case 'r': /* display term on stderr */
showterm = 1;
break;
+ case 'S': /* OBSOLETE: output TERM & TERMCAP */
+ Sflag = 1;
+ break;
case 's': /* output TERM set command */
sflag = 1;
break;
- case 'V':
+ case 'V': /* print curses-version */
puts(curses_version());
- return EXIT_SUCCESS;
+ ExitProgram(EXIT_SUCCESS);
+ case 'w': /* set window-size */
+ opt_w = TRUE;
+ break;
case '?':
default:
- usage(*argv);
+ usage();
}
}
+
+ _nc_progname = _nc_rootname(*argv);
argc -= optind;
argv += optind;
if (argc > 1)
- usage(*argv);
+ usage();
+
+ 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;
+#ifdef TERMIOS
+ ospeed = cfgetospeed(&mode);
+#else
+ ospeed = mode.sg_ospeed;
+#endif
+
+ if (!strcmp(_nc_progname, PROG_RESET)) {
+ isreset = TRUE;
+ reset_mode();
+ }
ttype = get_termcap_entry(*argv);
@@ -1146,24 +1219,28 @@ main(int argc, char **argv)
tlines = lines;
#if defined(TIOCGWINSZ) && defined(TIOCSWINSZ)
- /* Set window size */
- (void) ioctl(STDERR_FILENO, TIOCGWINSZ, &win);
- if (win.ws_row == 0 && win.ws_col == 0 &&
- tlines > 0 && tcolumns > 0) {
- win.ws_row = tlines;
- win.ws_col = tcolumns;
- (void) ioctl(STDERR_FILENO, TIOCSWINSZ, &win);
+ if (opt_w) {
+ /* Set window size */
+ (void) ioctl(STDERR_FILENO, TIOCGWINSZ, &win);
+ if (win.ws_row == 0 && win.ws_col == 0 &&
+ tlines > 0 && tcolumns > 0) {
+ win.ws_row = tlines;
+ win.ws_col = tcolumns;
+ (void) ioctl(STDERR_FILENO, TIOCSWINSZ, &win);
+ }
}
#endif
- set_control_chars();
- set_conversions();
+ if (opt_c) {
+ set_control_chars();
+ set_conversions();
- if (!noinit)
- set_init();
+ if (!noinit)
+ set_init();
- /* Set the modes if they've changed. */
- if (memcmp(&mode, &oldmode, sizeof(mode))) {
- SET_TTY(STDERR_FILENO, &mode);
+ /* Set the modes if they've changed. */
+ if (memcmp(&mode, &oldmode, sizeof(mode))) {
+ SET_TTY(STDERR_FILENO, &mode);
+ }
}
}
@@ -1182,8 +1259,8 @@ main(int argc, char **argv)
#ifdef TERMIOS
if (!quiet) {
report("Erase", VERASE, CERASE);
- report("Kill", VKILL, CINTR);
- report("Interrupt", VINTR, CKILL);
+ report("Kill", VKILL, CKILL);
+ report("Interrupt", VINTR, CINTR);
}
#endif
}
@@ -1192,19 +1269,21 @@ main(int argc, char **argv)
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 ((p = getenv("SHELL")) != 0
- && !strcmp(p + strlen(p) - 3, "csh"))
+ if ((var = getenv("SHELL")) != 0
+ && ((len = 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);
}
- return EXIT_SUCCESS;
+ ExitProgram(EXIT_SUCCESS);
}
-
-/* tset.c ends here */
diff --git a/contrib/ncurses/tack/COPYING b/contrib/ncurses/tack/COPYING
index 60549be514af..b6f92f3dbfa5 100644
--- a/contrib/ncurses/tack/COPYING
+++ b/contrib/ncurses/tack/COPYING
@@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
+ Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -305,7 +305,7 @@ the "copyright" line and a pointer to where the full notice is found.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Also add information on how to contact you by electronic and paper mail.
@@ -313,7 +313,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
- Gnomovision version 69, Copyright (C) 19yy name of author
+ Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
diff --git a/contrib/ncurses/tack/HISTORY b/contrib/ncurses/tack/HISTORY
index 3fe2cab0cd98..56497fb54264 100644
--- a/contrib/ncurses/tack/HISTORY
+++ b/contrib/ncurses/tack/HISTORY
@@ -1,6 +1,11 @@
Current history:
+2006/11/25 Fixes for ncurses tparm() prototype.
+2006/06/24 1.02 Modify to support ncurses extended string capabilities.
+2003/10/18 1.01 Fix some logic in pad.c, improve bce test.
+2003/09/20 Modified to allow running from compiled-in terminfo.
+2001/10/20 Make menu titles agree with descriptions.
2000/03/04 Fix a few spelling errors
1999/09/04 Minor fix to build/link on BeOS
1999/05/16 Minor fix to build/link on CLIX
diff --git a/contrib/ncurses/tack/Makefile.in b/contrib/ncurses/tack/Makefile.in
index 732da7f96e76..059a702f4869 100644
--- a/contrib/ncurses/tack/Makefile.in
+++ b/contrib/ncurses/tack/Makefile.in
@@ -1,4 +1,31 @@
-# $Id: Makefile.in,v 1.27 2001/12/08 18:48:01 tom Exp $
+# $Id: Makefile.in,v 1.38 2006/12/17 15:58:32 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2005,2006 Free Software 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. #
+##############################################################################
# Makefile for tack
#
# The variable 'srcdir' refers to the source-distribution, and can be set with
@@ -15,7 +42,9 @@ THIS = Makefile
CF_MFLAGS = @cf_cv_makeflags@
@SET_MAKE@
-x = @PROG_EXT@
+
+x = @EXEEXT@
+o = .@OBJEXT@
MODEL = ../@DFT_OBJ_SUBDIR@
DESTDIR = @DESTDIR@
@@ -24,14 +53,19 @@ prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
-mandir = @mandir@/man1
+mandir = @mandir@
includedir = @includedir@
datadir = @datadir@
LIBTOOL = @LIBTOOL@
+LIBTOOL_CLEAN = @LIB_CLEAN@
+LIBTOOL_COMPILE = @LIB_COMPILE@
+LIBTOOL_LINK = @LIB_LINK@
+LIBTOOL_INSTALL = @LIB_INSTALL@
+LIBTOOL_UNINSTALL = @LIB_UNINSTALL@
INSTALL = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_PROG = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
AWK = @AWK@
@@ -54,16 +88,20 @@ CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
+REL_VERSION = @cf_cv_rel_version@
+ABI_VERSION = @cf_cv_abi_version@
+LOCAL_LIBDIR = @top_builddir@/lib
+
LD = @LD@
-LINK = @LINK_PROGS@ $(LIBTOOL) $(CC)
+LINK = @LINK_PROGS@ $(LIBTOOL_LINK) $(CC)
LDFLAGS = @EXTRA_LDFLAGS@ \
- @PROG_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@ @EXTRA_LIBS@
+ @TINFO_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@
-LDFLAGS_LIBTOOL = $(LDFLAGS)
-LDFLAGS_NORMAL = $(LDFLAGS)
-LDFLAGS_DEBUG = $(LDFLAGS) @CC_G_OPT@
-LDFLAGS_PROFILE = $(LDFLAGS) -pg
-LDFLAGS_SHARED = $(LDFLAGS) @LD_SHARED_OPTS@
+LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL)
+LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL)
+LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG)
+LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE)
+LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@
LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@)
@@ -89,15 +127,17 @@ libs \
install.libs \
uninstall.libs:
+EDITARGS = $(DESTDIR)$(mandir) $(srcdir) $(srcdir)/*.[0-9]*
+
install.tack: $(PROGS) \
$(DESTDIR)$(bindir) \
$(DESTDIR)$(mandir)
- $(LIBTOOL) $(INSTALL_PROGRAM) tack$x $(DESTDIR)$(bindir)/tack$x
- $(INSTALL_DATA) $(srcdir)/tack.1 $(DESTDIR)$(mandir)/tack.1
+ $(LIBTOOL_INSTALL) $(INSTALL_PROG) tack$x $(DESTDIR)$(bindir)/tack$x
+ sh ../edit_man.sh normal installing $(EDITARGS)
uninstall.tack:
- -@$(LIBTOOL) rm -f $(DESTDIR)$(bindir)/tack$x
- -@rm -f $(DESTDIR)$(mandir)/tack.1
+ -@$(LIBTOOL_UNINSTALL) rm -f $(DESTDIR)$(bindir)/tack$x
+ -sh ../edit_man.sh normal removing $(EDITARGS)
$(DESTDIR)$(bindir) \
$(DESTDIR)$(mandir) :
@@ -108,22 +148,22 @@ $(DESTDIR)$(mandir) :
#
DEPS_TACK = \
- $(MODEL)/ansi.o \
- $(MODEL)/charset.o \
- $(MODEL)/color.o \
- $(MODEL)/control.o \
- $(MODEL)/crum.o \
- $(MODEL)/edit.o \
- $(MODEL)/fun.o \
- $(MODEL)/init.o \
- $(MODEL)/menu.o \
- $(MODEL)/modes.o \
- $(MODEL)/output.o \
- $(MODEL)/pad.o \
- $(MODEL)/scan.o \
- $(MODEL)/sync.o \
- $(MODEL)/sysdep.o \
- $(MODEL)/tack.o
+ $(MODEL)/ansi$o \
+ $(MODEL)/charset$o \
+ $(MODEL)/color$o \
+ $(MODEL)/control$o \
+ $(MODEL)/crum$o \
+ $(MODEL)/edit$o \
+ $(MODEL)/fun$o \
+ $(MODEL)/init$o \
+ $(MODEL)/menu$o \
+ $(MODEL)/modes$o \
+ $(MODEL)/output$o \
+ $(MODEL)/pad$o \
+ $(MODEL)/scan$o \
+ $(MODEL)/sync$o \
+ $(MODEL)/sysdep$o \
+ $(MODEL)/tack$o
tack$x: $(DEPS_TACK) $(DEPS_CURSES)
@ECHO_LINK@ $(LINK) $(DEPS_TACK) $(LDFLAGS_DEFAULT) -o $@
@@ -142,6 +182,7 @@ mostlyclean ::
-rm -f core tags TAGS *~ *.bak *.i *.atac trace
clean :: mostlyclean
+ -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi"
-rm -f $(PROGS)
-rm -rf .libs
diff --git a/contrib/ncurses/tack/ansi.c b/contrib/ncurses/tack/ansi.c
index 807bc539a6c8..bdbd43372642 100644
--- a/contrib/ncurses/tack/ansi.c
+++ b/contrib/ncurses/tack/ansi.c
@@ -15,13 +15,13 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
-MODULE_ID("$Id: ansi.c,v 1.9 2001/06/18 18:44:17 tom Exp $")
+MODULE_ID("$Id: ansi.c,v 1.10 2005/09/17 19:49:16 tom Exp $")
/*
* Standalone tests for ANSI terminals. Three entry points:
diff --git a/contrib/ncurses/tack/charset.c b/contrib/ncurses/tack/charset.c
index 991401f37437..9783792aa3dd 100644
--- a/contrib/ncurses/tack/charset.c
+++ b/contrib/ncurses/tack/charset.c
@@ -1,27 +1,27 @@
/*
** Copyright (C) 1991, 1997-2000 Free Software Foundation, Inc.
-**
+**
** This file is part of TACK.
-**
+**
** TACK is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2, or (at your option)
** any later version.
-**
+**
** TACK is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
-**
+**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
-MODULE_ID("$Id: charset.c,v 1.8 2001/06/18 18:44:26 tom Exp $")
+MODULE_ID("$Id: charset.c,v 1.11 2006/11/26 00:13:36 tom Exp $")
/*
Menu definitions for alternate character set and SGR tests.
@@ -159,7 +159,7 @@ charset_status(
ptextln(temp);
put_str("This line s");
- s = tparm(to_status_line, 0);
+ s = TPARM_1(to_status_line, 0);
tc_putp(s);
for (i = 0; i < max; i++)
putchp(m[i]);
@@ -194,7 +194,7 @@ charset_dsl(
}
-void
+void
eat_cookie(void)
{ /* put a blank if this is not a magic cookie
terminal */
@@ -203,11 +203,11 @@ eat_cookie(void)
}
-void
+void
put_mode(char *s)
{ /* send the attribute string (with or without
% execution) */
- tc_putp(tparm(s)); /* allow % execution */
+ tc_putp(TPARM_0(s)); /* allow % execution */
}
@@ -226,7 +226,7 @@ set_attr(int a)
for (i = 0; i < 31; i++) {
b[i] = (a >> i) & 1;
}
- tc_putp(tparm(set_attributes, b[1], b[2], b[3], b[4], b[5],
+ tc_putp(TPARM_9(set_attributes, b[1], b[2], b[3], b[4], b[5],
b[6], b[7], b[8], b[9]));
}
@@ -285,7 +285,7 @@ charset_sgr(
}
put_crlf();
-#ifdef max_attributes
+#ifdef max_attributes
if (max_attributes >= 0) {
sprintf(temp, "(ma) Maximum attributes %d ", max_attributes);
ptext(temp);
@@ -488,20 +488,20 @@ test_acs(
#ifdef ACS_ULCORNER
maybe_wait(5);
put_mode(enter_alt_charset_mode);
- put_this(ACS_ULCORNER);
- put_this(ACS_TTEE);
- put_this(ACS_URCORNER);
- put_this(ACS_ULCORNER);
- put_this(ACS_HLINE);
- put_this(ACS_URCORNER);
+ put_that(ACS_ULCORNER);
+ put_that(ACS_TTEE);
+ put_that(ACS_URCORNER);
+ put_that(ACS_ULCORNER);
+ put_that(ACS_HLINE);
+ put_that(ACS_URCORNER);
char_count += 6;
put_mode(exit_alt_charset_mode);
put_crlf();
put_mode(enter_alt_charset_mode);
- put_this(ACS_LTEE);
- put_this(ACS_PLUS);
- put_this(ACS_RTEE);
- put_this(ACS_VLINE);
+ put_that(ACS_LTEE);
+ put_that(ACS_PLUS);
+ put_that(ACS_RTEE);
+ put_that(ACS_VLINE);
if (magic_cookie_glitch >= 1)
put_this(' ');
else {
@@ -509,18 +509,18 @@ test_acs(
put_this(' ');
put_mode(enter_alt_charset_mode);
}
- put_this(ACS_VLINE);
+ put_that(ACS_VLINE);
char_count += 6;
put_mode(exit_alt_charset_mode);
put_str(" Here are 2 boxes");
put_crlf();
put_mode(enter_alt_charset_mode);
- put_this(ACS_LLCORNER);
- put_this(ACS_BTEE);
- put_this(ACS_LRCORNER);
- put_this(ACS_LLCORNER);
- put_this(ACS_HLINE);
- put_this(ACS_LRCORNER);
+ put_that(ACS_LLCORNER);
+ put_that(ACS_BTEE);
+ put_that(ACS_LRCORNER);
+ put_that(ACS_LLCORNER);
+ put_that(ACS_HLINE);
+ put_that(ACS_LRCORNER);
char_count += 6;
put_mode(exit_alt_charset_mode);
put_crlf();
diff --git a/contrib/ncurses/tack/color.c b/contrib/ncurses/tack/color.c
index 479081c9fb38..6fea231efc40 100644
--- a/contrib/ncurses/tack/color.c
+++ b/contrib/ncurses/tack/color.c
@@ -1,27 +1,27 @@
/*
** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
-**
+**
** This file is part of TACK.
-**
+**
** TACK is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2, or (at your option)
** any later version.
-**
+**
** TACK is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
-**
+**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
-MODULE_ID("$Id: color.c,v 1.2 2000/03/04 21:05:54 tom Exp $")
+MODULE_ID("$Id: color.c,v 1.7 2006/11/26 00:14:25 tom Exp $")
/*
* Color terminal tests. Has only one entry point: test_color().
@@ -84,6 +84,12 @@ static int a_bright_color, bright_value;
static int cookie_monster, color_step, colors_per_line;
static int R, G, B;
+static void reset_colors(void)
+{
+ tc_putp(orig_colors);
+ tc_putp(TPARM_0(orig_pair));
+}
+
static int
color_trans(int c)
{ /* translate or load the color */
@@ -104,10 +110,10 @@ color_trans(int c)
fg_color[pairs_used] = c;
bg_color[pairs_used] = c;
if (hue_lightness_saturation) {
- tc_putp(tparm(initialize_color, pairs_used,
+ tc_putp(TPARM_4(initialize_color, pairs_used,
def_colors[c].h, def_colors[c].l, def_colors[c].s));
} else {
- tc_putp(tparm(initialize_color, pairs_used,
+ tc_putp(TPARM_4(initialize_color, pairs_used,
def_colors[c].r, def_colors[c].g, def_colors[c].b));
}
return pairs_used++;
@@ -126,17 +132,17 @@ new_color(
}
if (set_a_foreground) {
/* set ANSI color (setaf) (setab) */
- tc_putp(tparm(set_a_foreground, fg));
- tc_putp(tparm(set_a_background, bg));
+ tc_putp(TPARM_1(set_a_foreground, fg));
+ tc_putp(TPARM_1(set_a_background, bg));
} else if (set_foreground) {
/* make sure black is zero */
(void) color_trans(COLOR_BLACK);
- tc_putp(tparm(set_foreground, color_trans(fg)));
- tc_putp(tparm(set_background, color_trans(bg)));
+ tc_putp(TPARM_1(set_foreground, color_trans(fg)));
+ tc_putp(TPARM_1(set_background, color_trans(bg)));
} else { /* set color pair */
for (i = 0; i < pairs_used; i++) {
if (fg_color[i] == fg && bg_color[i] == bg) {
- tc_putp(tparm(set_color_pair, i));
+ tc_putp(TPARM_1(set_color_pair, i));
if (hungry) {
eat_cookie();
}
@@ -149,7 +155,7 @@ new_color(
if (fg_color[i] == fg)
break;
}
- tc_putp(tparm(set_color_pair, i));
+ tc_putp(TPARM_1(set_color_pair, i));
if (hungry) {
eat_cookie();
}
@@ -162,15 +168,15 @@ new_color(
fg_color[pairs_used] = fg;
bg_color[pairs_used] = bg;
if (hue_lightness_saturation) {
- tc_putp(tparm(initialize_pair, pairs_used,
+ tc_putp(TPARM_7(initialize_pair, pairs_used,
def_colors[fg].h, def_colors[fg].l, def_colors[fg].s,
def_colors[bg].h, def_colors[bg].l, def_colors[bg].s));
} else {
- tc_putp(tparm(initialize_pair, pairs_used,
+ tc_putp(TPARM_7(initialize_pair, pairs_used,
def_colors[fg].r, def_colors[fg].g, def_colors[fg].b,
def_colors[bg].r, def_colors[bg].g, def_colors[bg].b));
}
- tc_putp(tparm(set_color_pair, pairs_used));
+ tc_putp(TPARM_1(set_color_pair, pairs_used));
pairs_used++;
}
if (hungry) {
@@ -239,9 +245,9 @@ send_color(int p, int r, int g, int b)
if (hue_lightness_saturation) {
rgb_2_hls(r, g, b, &h, &l, &s);
- tc_putp(tparm(initialize_color, p, h, l, s));
+ tc_putp(TPARM_4(initialize_color, p, h, l, s));
} else {
- tc_putp(tparm(initialize_color, p, r, g, b));
+ tc_putp(TPARM_4(initialize_color, p, r, g, b));
}
}
@@ -254,9 +260,9 @@ send_pair(int p, int fr, int fg, int fb, int br, int bg, int bb)
if (hue_lightness_saturation) {
rgb_2_hls(fr, fg, fb, &fh, &fl, &fs);
rgb_2_hls(br, bg, bb, &bh, &bl, &bs);
- tc_putp(tparm(initialize_pair, p, fh, fl, fs, bh, bl, bs));
+ tc_putp(TPARM_7(initialize_pair, p, fh, fl, fs, bh, bl, bs));
} else {
- tc_putp(tparm(initialize_pair, p, fr, fg, fb, bb, bg, bb));
+ tc_putp(TPARM_7(initialize_pair, p, fr, fg, fb, bb, bg, bb));
}
}
@@ -349,19 +355,19 @@ rainbow(int n)
if (i >= max_colors) {
break;
}
- tc_putp(tparm(set_a_foreground, i));
- tc_putp(tparm(set_a_background, i));
+ tc_putp(TPARM_1(set_a_foreground, i));
+ tc_putp(TPARM_1(set_a_background, i));
} else if (set_foreground) {
if (i >= max_colors) {
break;
}
- tc_putp(tparm(set_foreground, i));
- tc_putp(tparm(set_background, i));
+ tc_putp(TPARM_1(set_foreground, i));
+ tc_putp(TPARM_1(set_background, i));
} else {
if (i >= max_pairs) {
break;
}
- tc_putp(tparm(set_color_pair, i));
+ tc_putp(TPARM_1(set_color_pair, i));
}
putchp(c);
}
@@ -369,13 +375,13 @@ rainbow(int n)
put_mode(exit_attribute_mode);
}
if (set_a_foreground) {
- tc_putp(tparm(set_a_foreground, a_bright_color));
- tc_putp(tparm(set_a_background, 0));
+ tc_putp(TPARM_1(set_a_foreground, a_bright_color));
+ tc_putp(TPARM_1(set_a_background, 0));
} else if (set_foreground) {
- tc_putp(tparm(set_foreground, a_bright_color));
- tc_putp(tparm(set_background, 0));
+ tc_putp(TPARM_1(set_foreground, a_bright_color));
+ tc_putp(TPARM_1(set_background, 0));
} else {
- tc_putp(tparm(set_color_pair, 0));
+ tc_putp(TPARM_1(set_color_pair, 0));
}
put_str(" ");
put_str(splat[d].name);
@@ -405,6 +411,7 @@ ncv_display(int m)
put_str(alt_modes[m].name);
eat_cookie();
set_attr(0);
+ reset_colors();
put_crlf();
}
@@ -436,19 +443,19 @@ dump_colors(void)
continue;
}
send_color(p, R, G, B);
- tc_putp(tparm(set_a_background, p));
+ tc_putp(TPARM_1(set_a_background, p));
} else if (set_background) {
if (p >= max_colors) {
continue;
}
send_color(p, R, G, B);
- tc_putp(tparm(set_background, p));
+ tc_putp(TPARM_1(set_background, p));
} else {
if (p >= max_pairs) {
continue;
}
send_pair(p, R, G, B, R, G, B);
- tc_putp(tparm(set_color_pair, p));
+ tc_putp(TPARM_1(set_color_pair, p));
}
found_one = TRUE;
putchp(' ');
@@ -517,10 +524,7 @@ color_setf(
}
/* initialize the color palette */
pairs_used = max_colors >= 8 ? 8 : max_colors;
- if (can_change) {
- tc_putp(orig_colors);
- }
- tc_putp(tparm(orig_pair));
+ reset_colors();
new_color(COLOR_WHITE, COLOR_BLACK, FALSE);
ptextln("(setf) (setb) (scp) The following colors are predefined:");
@@ -528,8 +532,8 @@ color_setf(
put_crlf();
j = max_colors > 8 ? 8 : max_colors;
/*
- the black on white test is the same as the white on black test.
- */
+ * the black on white test is the same as the white on black test.
+ */
for (i = 1; i < j; i++) {
putchp('0' + def_colors[i].index);
putchp(' ');
@@ -547,6 +551,7 @@ color_setf(
new_color(COLOR_WHITE, COLOR_BLACK, FALSE);
put_crlf();
}
+ reset_colors();
put_crlf();
generic_done_message(t, state, ch);
}
@@ -589,10 +594,10 @@ color_matrix(
}
for (j = 0; j < matrix_area; j++) {
if (j % matrix_size == 0) {
- tc_putp(tparm(orig_pair));
+ reset_colors();
put_crlf();
if (brightness) {
- tc_putp(exit_standout_mode);
+ tc_putp(exit_attribute_mode);
}
(void) sprintf(temp, "%-8s", def_colors[j / matrix_size].name);
put_str(temp);
@@ -605,9 +610,9 @@ color_matrix(
FALSE);
put_str(" Hello ");
}
- tc_putp(tparm(orig_pair));
+ reset_colors();
if (brightness) {
- tc_putp(exit_standout_mode);
+ tc_putp(exit_attribute_mode);
}
put_crlf();
}
@@ -649,7 +654,7 @@ color_ncv(
}
}
}
- tc_putp(orig_pair);
+ reset_colors();
put_crlf();
generic_done_message(t, state, ch);
}
@@ -665,11 +670,11 @@ color_bce(
int *state,
int *ch)
{
- new_color(COLOR_BLACK, COLOR_WHITE, FALSE);
+ new_color(COLOR_CYAN, COLOR_BLUE, FALSE);
put_clear();
put_newlines(2);
- new_color(COLOR_WHITE, COLOR_BLACK, FALSE);
- ptextln("If the two lines above are black then back_color_erase (bce) should be false.");
+ reset_colors();
+ ptextln("If the two lines above are blue then back_color_erase (bce) should be true.");
sprintf(temp, "(bce) is %s in the data base.", back_color_erase ? "true" : "false");
ptextln(temp);
generic_done_message(t, state, ch);
@@ -693,7 +698,7 @@ color_ccc(
generic_done_message(t, state, ch);
return;
}
- tc_putp(orig_colors);
+ reset_colors();
pairs_used = 0;
new_color(COLOR_WHITE, COLOR_BLACK, FALSE);
sprintf(temp, "Reloading colors (init%c) using %s method",
@@ -721,8 +726,7 @@ color_ccc(
}
generic_done_message(t, state, ch);
if (*ch != 0 && *ch != 'n') {
- tc_putp(orig_colors);
- tc_putp(tparm(orig_pair));
+ reset_colors();
return;
}
@@ -756,12 +760,10 @@ color_ccc(
}
generic_done_message(t, state, ch);
if (*ch != 0 && *ch != 'n') {
- tc_putp(orig_colors);
- tc_putp(tparm(orig_pair));
+ reset_colors();
return;
}
dump_colors();
- tc_putp(orig_colors);
- tc_putp(tparm(orig_pair));
+ reset_colors();
generic_done_message(t, state, ch);
}
diff --git a/contrib/ncurses/tack/control.c b/contrib/ncurses/tack/control.c
index 4a85384b4125..360edeffcaef 100644
--- a/contrib/ncurses/tack/control.c
+++ b/contrib/ncurses/tack/control.c
@@ -15,8 +15,8 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
@@ -25,7 +25,7 @@
#include <sys/time.h>
#endif
-MODULE_ID("$Id: control.c,v 1.3 2000/03/04 21:10:59 tom Exp $")
+MODULE_ID("$Id: control.c,v 1.9 2006/06/24 21:27:53 tom Exp $")
/* terminfo test program control subroutines */
@@ -40,11 +40,11 @@ int test_complete; /* counts number of tests completed */
char txt_longer_test_time[80]; /* +) use longer time */
char txt_shorter_test_time[80]; /* -) use shorter time */
-int pad_test_duration = 1; /* number of seconds for a pad test */
+static int pad_test_duration = 1; /* number of seconds for a pad test */
int auto_pad_mode; /* run the time tests */
int no_alarm_event; /* TRUE if the alarm has not gone off yet */
-int usec_run_time; /* length of last test in microseconds */
-MY_TIMER stop_watch[MAX_TIMERS]; /* Hold the start timers */
+unsigned long usec_run_time; /* length of last test in microseconds */
+static MY_TIMER stop_watch[MAX_TIMERS]; /* Hold the start timers */
char txt_longer_augment[80]; /* >) use bigger augment */
char txt_shorter_augment[80]; /* <) use smaller augment */
@@ -66,16 +66,21 @@ int tx_index[TT_MAX]; /* String index */
int tx_delay[TT_MAX]; /* Number of milliseconds delay */
int txp; /* number of entries used */
int tx_characters; /* printing characters sent by test */
-int tx_cps; /* characters per second */
-struct test_list *tx_source; /* The test that generated this data */
-
-extern struct test_menu pad_menu; /* Pad menu structure */
-extern struct test_list pad_test_list[];
+unsigned long tx_cps; /* characters per second */
+static struct test_list *tx_source; /* The test that generated this data */
#define RESULT_BLOCK 1024
static int blocks; /* number of result blocks available */
static struct test_results *results; /* pointer to next available */
-struct test_results *pads[STRCOUNT]; /* save pad results here */
+static struct test_results **pads; /* save pad results here */
+
+static void
+alloc_arrays(void)
+{
+ if (pads == 0) {
+ pads = (struct test_results **)calloc(MAX_STRINGS, sizeof(struct test_results *));
+ }
+}
/*
** event_start(number)
@@ -365,7 +370,7 @@ int
sliding_scale(
int dividend,
int factor,
- int divisor)
+ unsigned long divisor)
{
double d = dividend;
@@ -432,6 +437,7 @@ pad_test_shutdown(
struct test_results *r; /* Results of current test */
int ss_index[TT_MAX]; /* String index */
+ alloc_arrays();
if (tty_can_sync == SYNC_TESTED) {
bogus = tty_sync_error();
} else {
@@ -495,12 +501,13 @@ show_cap_results(
struct test_results *r; /* a result */
int delay;
+ alloc_arrays();
if ((r = pads[x])) {
sprintf(temp, "(%s)", strnames[x]);
ptext(temp);
while (r) {
sprintf(temp, "$<%d>", r->delay / 1000);
- put_columns(temp, strlen(temp), 10);
+ put_columns(temp, (int) strlen(temp), 10);
r = r->next;
}
r = pads[x];
@@ -508,7 +515,7 @@ show_cap_results(
if (r->reps > 1) {
delay = r->delay / (r->reps * 100);
sprintf(temp, "$<%d.%d*>", delay / 10, delay % 10);
- put_columns(temp, strlen(temp), 10);
+ put_columns(temp, (int) strlen(temp), 10);
}
r = r->next;
}
@@ -544,9 +551,9 @@ dump_test_stats(
put_crlf();
}
}
- sprintf(tbuf, "%011u", usec_run_time);
- sprintf(temp, "Test time: %d.%s, characters per second %d, characters %d",
- usec_run_time / 1000000, &tbuf[5], tx_cps, tx_characters);
+ sprintf(tbuf, "%011lu", usec_run_time);
+ sprintf(temp, "Test time: %lu.%s, characters per second %lu, characters %d",
+ usec_run_time / 1000000UL, &tbuf[5], tx_cps, tx_characters);
ptextln(temp);
for (i = 0; i < txp; i++) {
if ((j = get_string_cap_byvalue(tx_cap[i])) >= 0) {
diff --git a/contrib/ncurses/tack/crum.c b/contrib/ncurses/tack/crum.c
index e66cc05eda1a..8cd40690d489 100644
--- a/contrib/ncurses/tack/crum.c
+++ b/contrib/ncurses/tack/crum.c
@@ -15,13 +15,13 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
-MODULE_ID("$Id: crum.c,v 1.3 2000/03/04 21:09:18 tom Exp $")
+MODULE_ID("$Id: crum.c,v 1.5 2006/11/26 00:15:02 tom Exp $")
/*
* Test cursor movement.
@@ -65,18 +65,18 @@ move_to(
char *s;
if (sel & 16) { /* use (cup) */
- s = tparm(cursor_address, rt, ct);
+ s = TPARM_2(cursor_address, rt, ct);
tputs(s, lines, tc_putch);
return;
}
if (sel & 8) { /* use (hpa) (vpa) */
if (column_address) {
- s = tparm(column_address, ct);
+ s = TPARM_1(column_address, ct);
tputs(s, 1, tc_putch);
cf = ct;
}
if (row_address) {
- s = tparm(row_address, rt);
+ s = TPARM_1(row_address, rt);
tputs(s, 1, tc_putch);
rf = rt;
}
@@ -84,25 +84,25 @@ move_to(
if (sel & 4) { /* parameterized relative cursor movement */
if (parm_right_cursor)
if (cf < ct) {
- s = tparm(parm_right_cursor, ct - cf);
+ s = TPARM_1(parm_right_cursor, ct - cf);
tputs(s, ct - cf, tc_putch);
cf = ct;
}
if (parm_left_cursor)
if (cf > ct) {
- s = tparm(parm_left_cursor, cf - ct);
+ s = TPARM_1(parm_left_cursor, cf - ct);
tputs(s, cf - ct, tc_putch);
cf = ct;
}
if (parm_down_cursor)
if (rf < rt) {
- s = tparm(parm_down_cursor, rt - rf);
+ s = TPARM_1(parm_down_cursor, rt - rf);
tputs(s, rt - rf, tc_putch);
rf = rt;
}
if (parm_up_cursor)
if (rf > rt) {
- s = tparm(parm_up_cursor, rf - rt);
+ s = TPARM_1(parm_up_cursor, rf - rt);
tputs(s, rf - rt, tc_putch);
rf = rt;
}
@@ -409,11 +409,11 @@ crum_os(
tc_putch('_');
}
for (i = 0; i < columns - 2; i++) {
- tputs(tparm(cursor_address, 0, i), lines, tc_putch);
+ tputs(TPARM_2(cursor_address, 0, i), lines, tc_putch);
tc_putch('+');
}
for (i = 0; i < lines - 2; i++) {
- tputs(tparm(cursor_address, i, 0), lines, tc_putch);
+ tputs(TPARM_2(cursor_address, i, 0), lines, tc_putch);
tc_putch(']');
tc_putch('_');
}
diff --git a/contrib/ncurses/tack/edit.c b/contrib/ncurses/tack/edit.c
index 2d1a780d36a8..b23f3ab04497 100644
--- a/contrib/ncurses/tack/edit.c
+++ b/contrib/ncurses/tack/edit.c
@@ -1,29 +1,29 @@
/*
** Copyright (C) 1997 Free Software Foundation, Inc.
-**
+**
** This file is part of TACK.
-**
+**
** TACK is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2, or (at your option)
** any later version.
-**
+**
** TACK is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
-**
+**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
#include <time.h>
#include <tic.h>
-MODULE_ID("$Id: edit.c,v 1.8 2001/06/18 18:44:32 tom Exp $")
+MODULE_ID("$Id: edit.c,v 1.11 2006/06/24 21:22:42 tom Exp $")
/*
* Terminfo edit features
@@ -52,7 +52,7 @@ struct test_list edit_test_list[] = {
};
static char change_pad_text[MAX_CHANGES][80];
-struct test_list change_pad_list[MAX_CHANGES] = {
+static struct test_list change_pad_list[MAX_CHANGES] = {
{MENU_LAST, 0, 0, 0, 0, 0, 0}
};
@@ -65,19 +65,27 @@ struct test_menu change_pad_menu = {
build_change_menu, change_pad_list, 0, 0, 0
};
-extern struct test_results *pads[STRCOUNT]; /* save pad results here */
-
static TERMTYPE original_term; /* terminal type description */
static char flag_boolean[BOOLCOUNT]; /* flags for booleans */
static char flag_numerics[NUMCOUNT]; /* flags for numerics */
-static char flag_strings[STRCOUNT]; /* flags for strings */
+static char *flag_strings; /* flags for strings */
+static int *label_strings;
static int xon_index; /* Subscript for (xon) */
-int xon_shadow;
+static int xon_shadow;
static int start_display; /* the display has just started */
static int display_lines; /* number of lines displayed */
+static void
+alloc_arrays(void)
+{
+ if (flag_strings == 0) {
+ label_strings = (int *)calloc(MAX_STRINGS, sizeof(int));
+ flag_strings = (char *)calloc(MAX_STRINGS, sizeof(char));
+ }
+}
+
/*
** send_info_string(str)
**
@@ -156,9 +164,9 @@ show_info(
send_info_string(buf, ch);
}
}
- for (i = 0; i < STRCOUNT; i++) {
+ for (i = 0; i < MAX_STRINGS; i++) {
if (CUR Strings[i]) {
- sprintf(buf, "%s=%s", strnames[i],
+ sprintf(buf, "%s=%s", STR_NAME(i),
print_expand(CUR Strings[i]));
send_info_string(buf, ch);
}
@@ -237,9 +245,9 @@ save_info(
save_info_string(buf, fp);
}
}
- for (i = 0; i < STRCOUNT; i++) {
+ for (i = 0; i < MAX_STRINGS; i++) {
if (CUR Strings[i]) {
- sprintf(buf, "%s=%s", strnames[i],
+ sprintf(buf, "%s=%s", STR_NAME(i),
_nc_tic_expand(CUR Strings[i], TRUE, TRUE));
save_info_string(buf, fp);
}
@@ -401,7 +409,7 @@ get_string_cap_byvalue(
int i;
if (value) {
- for (i = 0; i < STRCOUNT; i++) {
+ for (i = 0; i < MAX_STRINGS; i++) {
if (CUR Strings[i] == value) {
return i;
}
@@ -457,7 +465,7 @@ show_changed(
ptextln(temp);
}
}
- for (i = 0; i < STRCOUNT; i++) {
+ for (i = 0; i < MAX_STRINGS; i++) {
a = original_term.Strings[i] ? original_term.Strings[i] : "";
b = CUR Strings[i] ? CUR Strings[i] : "";
if (strcmp(a, b)) {
@@ -466,7 +474,7 @@ show_changed(
header = 0;
}
strcpy(abuf, _nc_tic_expand(a, TRUE, TRUE));
- sprintf(temp, "%30s %6s %s", abuf, strnames[i],
+ sprintf(temp, "%30s %6s %s", abuf, STR_NAME(i),
_nc_tic_expand(b, TRUE, TRUE));
putln(temp);
}
@@ -500,7 +508,7 @@ user_modified(void)
return TRUE;
}
}
- for (i = 0; i < STRCOUNT; i++) {
+ for (i = 0; i < MAX_STRINGS; i++) {
a = original_term.Strings[i] ? original_term.Strings[i] : "";
b = CUR Strings[i] ? CUR Strings[i] : "";
if (strcmp(a, b)) {
@@ -528,6 +536,7 @@ mark_cap(
{
struct name_table_entry const *nt;
+ alloc_arrays();
if ((nt = _nc_find_entry(name, _nc_info_hash_table))) {
switch (nt->nte_type) {
case BOOLEAN:
@@ -670,8 +679,9 @@ show_report(
{
int i, j, nc, flag;
const char *s;
- const char *nx[BOOLCOUNT + NUMCOUNT + STRCOUNT];
+ const char **nx = malloc(BOOLCOUNT + NUMCOUNT + MAX_STRINGS);
+ alloc_arrays();
flag = t->flags & 255;
nc = 0;
for (i = 0; i < BOOLCOUNT; i++) {
@@ -684,9 +694,9 @@ show_report(
nx[nc++] = numnames[i];
}
}
- for (i = 0; i < STRCOUNT; i++) {
+ for (i = 0; i < MAX_STRINGS; i++) {
if (flag_strings[i] & flag) {
- nx[nc++] = strnames[i];
+ nx[nc++] = STR_NAME(i);
}
}
/* sort */
@@ -715,6 +725,7 @@ show_report(
}
put_newlines(1);
*ch = REQUEST_PROMPT;
+ free (nx);
}
/*
@@ -731,6 +742,7 @@ show_untested(
{
int i;
+ alloc_arrays();
ptextln("Caps that are defined but cannot be tested:");
for (i = 0; i < BOOLCOUNT; i++) {
if (flag_boolean[i] == 0 && CUR Booleans[i]) {
@@ -744,9 +756,9 @@ show_untested(
ptext(temp);
}
}
- for (i = 0; i < STRCOUNT; i++) {
+ for (i = 0; i < MAX_STRINGS; i++) {
if (flag_strings[i] == 0 && CUR Strings[i]) {
- sprintf(temp, "%s ", strnames[i]);
+ sprintf(temp, "%s ", STR_NAME(i));
ptext(temp);
}
}
@@ -765,7 +777,8 @@ edit_init(void)
int i, j, lc;
char *lab;
struct name_table_entry const *nt;
- int label_strings[STRCOUNT];
+
+ alloc_arrays();
_nc_copy_termtype(&original_term, &cur_term->type);
for (i = 0; i < BOOLCOUNT; i++) {
@@ -775,9 +788,9 @@ edit_init(void)
original_term.Numbers[i] = CUR Numbers[i];
}
/* scan for labels */
- for (i = lc = 0; i < STRCOUNT; i++) {
+ for (i = lc = 0; i < MAX_STRINGS; i++) {
original_term.Strings[i] = CUR Strings[i];
- if (strncmp(strnames[i], "lf", 2) == 0) {
+ if (strncmp(STR_NAME(i), "lf", 2) == 0) {
flag_strings[i] |= FLAG_LABEL;
if (CUR Strings[i]) {
label_strings[lc++] = i;
@@ -785,18 +798,19 @@ edit_init(void)
}
}
/* scan for function keys */
- for (i = 0; i < STRCOUNT; i++) {
- if ((strnames[i][0] == 'k') && strcmp(strnames[i], "kmous")) {
+ for (i = 0; i < MAX_STRINGS; i++) {
+ const char *this_name = STR_NAME(i);
+ if ((this_name[0] == 'k') && strcmp(this_name, "kmous")) {
flag_strings[i] |= FLAG_FUNCTION_KEY;
lab = (char *) 0;
for (j = 0; j < lc; j++) {
- if (!strcmp(&strnames[i][1],
- &strnames[label_strings[j]][1])) {
+ if (!strcmp(this_name,
+ STR_NAME(label_strings[j]))) {
lab = CUR Strings[label_strings[j]];
break;
}
}
- enter_key(strnames[i], CUR Strings[i], lab);
+ enter_key(this_name, CUR Strings[i], lab);
}
}
/* Lookup the translated strings */
@@ -814,6 +828,7 @@ edit_init(void)
xon_index = nt->nte_index;
}
xon_shadow = xon_xoff;
+ free(label_strings);
}
/*
@@ -857,7 +872,7 @@ change_one_entry(
} else {
x = tx_index[i];
current_string = tx_cap[i];
- strcpy(pad, strnames[x]);
+ strcpy(pad, STR_NAME(x));
}
if (!current_string) {
ptextln("That string is not currently defined. Please enter a new value, including the padding delay:");
@@ -867,7 +882,7 @@ change_one_entry(
t = (char *)malloc(strlen(pad) + 1);
strcpy(t, pad);
CUR Strings[x] = t;
- sprintf(temp, "new string value %s", strnames[x]);
+ sprintf(temp, "new string value %s", STR_NAME(x));
ptextln(temp);
ptextln(expand(t));
return;
@@ -955,7 +970,7 @@ build_change_menu(
s = _nc_tic_expand(tx_cap[i], TRUE, TRUE);
s[40] = '\0';
sprintf(change_pad_text[j], "%c) (%s) %s",
- 'a' + j, strnames[k], s);
+ 'a' + j, STR_NAME(k), s);
change_pad_list[j].flags = i;
change_pad_list[j].lines_needed = 4;
change_pad_list[j].menu_entry = change_pad_text[j];
diff --git a/contrib/ncurses/tack/fun.c b/contrib/ncurses/tack/fun.c
index fd895c372f3b..378887217ce9 100644
--- a/contrib/ncurses/tack/fun.c
+++ b/contrib/ncurses/tack/fun.c
@@ -1,27 +1,27 @@
/*
** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
-**
+**
** This file is part of TACK.
-**
+**
** TACK is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2, or (at your option)
** any later version.
-**
+**
** TACK is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
-**
+**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
-MODULE_ID("$Id: fun.c,v 1.3 2000/03/04 20:29:21 tom Exp $")
+MODULE_ID("$Id: fun.c,v 1.9 2006/11/26 00:15:53 tom Exp $")
/*
* Test the function keys on the terminal. The code for echo tests
@@ -56,18 +56,13 @@ struct test_list printer_test_list[] = {
{MENU_LAST, 0, 0, 0, 0, 0, 0}
};
-#define MAX_STRINGS STRCOUNT
-
-/* scan code externals */
-extern int scan_max; /* length of longest scan code */
-extern char **scan_up, **scan_down, **scan_name;
-extern int *scan_tested, *scan_length;
-
/* local definitions */
-static const char *fk_name[MAX_STRINGS];
-static char *fkval[MAX_STRINGS];
-static char *fk_label[MAX_STRINGS]; /* function key labels (if any) */
-static int fk_tested[MAX_STRINGS];
+static const char **fk_name;
+static char **fkval;
+static char **fk_label; /* function key labels (if any) */
+static int *fk_tested;
+static int num_strings = 0;
+
static int fkmax = 1; /* length of longest key */
static int got_labels = 0; /* true if we have some labels */
static int key_count = 0;
@@ -80,6 +75,21 @@ static int fk_length[MAX_FK_UNK];
static int funk;
/*
+ * Initialize arrays that depend on the actual number of strings.
+ */
+static void
+alloc_strings(void)
+{
+ if (num_strings != MAX_STRINGS) {
+ num_strings = MAX_STRINGS;
+ fk_name = (const char **)calloc(num_strings, sizeof(const char *));
+ fkval = (char **)calloc(num_strings, sizeof(char *));
+ fk_label = (char **)calloc(num_strings, sizeof(char *));
+ fk_tested = (int *)calloc(num_strings, sizeof(int));
+ }
+}
+
+/*
** keys_tested(first-time, show-help, hex-output)
**
** Display a list of the keys not tested.
@@ -93,6 +103,7 @@ keys_tested(
int i, l;
char outbuf[256];
+ alloc_strings();
put_clear();
tty_set();
flush_input();
@@ -102,7 +113,7 @@ keys_tested(
if (fk_label[i]) {
sprintf(outbuf, "%s %s",
fk_name[i] ? fk_name[i] : "??", fk_label[i]);
- put_columns(outbuf, strlen(outbuf), 16);
+ put_columns(outbuf, (int) strlen(outbuf), 16);
}
}
put_newlines(2);
@@ -193,6 +204,7 @@ enter_key(
{
int j;
+ alloc_strings();
if (value) {
j = strlen(value);
fkmax = fkmax > j ? fkmax : j;
@@ -275,6 +287,7 @@ found_match(char *s, int hx, int cc)
int j, f;
char outbuf[256];
+ alloc_strings();
if (!*s) {
return 0;
}
@@ -571,7 +584,7 @@ funkey_label(
for (i = 1; i <= num_labels; i++) {
sprintf(outbuf, "L%d..............................", i);
outbuf[label_width] = '\0';
- tc_putp(tparm(plab_norm, i, outbuf));
+ tc_putp(TPARM_2(plab_norm, i, outbuf));
}
if (label_off) {
ptext("Hit any key to remove the labels: ");
@@ -602,7 +615,7 @@ funkey_prog(
sprintf(temp,
"(pfx) Set function key %d to transmit abc\\n", fk);
ptextln(temp);
- tc_putp(tparm(pkey_xmit, fk, "abc\n"));
+ tc_putp(TPARM_2(pkey_xmit, fk, "abc\n"));
sprintf(temp, "Hit function key %d\n", fk);
ptextln(temp);
for (i = 0; i < 4; ++i)
@@ -617,7 +630,7 @@ funkey_prog(
}
flush_input();
if (key_f1) {
- tc_putp(tparm(pkey_xmit, fk, key_f1));
+ tc_putp(TPARM_2(pkey_xmit, fk, key_f1));
}
} else {
ptextln("Function key transmit (pfx), not present.");
@@ -645,13 +658,13 @@ funkey_local(
"(pfloc) Set function key %d to execute a clear and print \"Done!\"", fk);
ptextln(temp);
sprintf(temp, "%sDone!", liberated(clear_screen));
- tc_putp(tparm(pkey_local, fk, temp));
+ tc_putp(TPARM_2(pkey_local, fk, temp));
sprintf(temp, "Hit function key %d. Then hit return.", fk);
ptextln(temp);
(void) wait_here();
flush_input();
if (key_f1 && pkey_xmit) {
- tc_putp(tparm(pkey_xmit, fk, key_f1));
+ tc_putp(TPARM_2(pkey_xmit, fk, key_f1));
}
} else {
ptextln("Function key execute local (pfloc), not present.");
@@ -806,7 +819,7 @@ tools_report(
ptextln("Begin echo test.");
report_help(crx);
}
- txt[sizeof(txt) - 1] = '\0';
+ memset(txt, 0, sizeof(txt));
save_scan_mode = scan_mode;
tty_raw(1, char_mask);
for (i = crp = high_bit = 0;;) {
diff --git a/contrib/ncurses/tack/init.c b/contrib/ncurses/tack/init.c
index 8a2e44fa3cc5..3e52dbf3f902 100644
--- a/contrib/ncurses/tack/init.c
+++ b/contrib/ncurses/tack/init.c
@@ -15,14 +15,14 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
/* initialization and wrapup code */
#include <tack.h>
-MODULE_ID("$Id: init.c,v 1.3 2001/06/16 17:54:19 tom Exp $")
+MODULE_ID("$Id: init.c,v 1.7 2006/11/26 00:16:01 tom Exp $")
#if NCURSES_VERSION_MAJOR >= 5 || NCURSES_VERSION_PATCH >= 981219
#define _nc_get_curterm(p) _nc_get_tty_mode(p)
@@ -159,7 +159,7 @@ display_basic(void)
}
report_cap(" (clear)", clear_screen);
if (!cursor_home && cursor_address) {
- report_cap("(cup) (home)", tparm(cursor_address, 0, 0));
+ report_cap("(cup) (home)", TPARM_2(cursor_address, 0, 0));
} else {
report_cap(" (home)", cursor_home);
}
@@ -170,7 +170,11 @@ display_basic(void)
report_cap("ACK (u8)", user8);
#endif
- sprintf(temp, "\nTerminal size: %d x %d. Baud rate: %ld. Frame size: %d.%d", columns, lines, tty_baud_rate, tty_frame_size >> 1, (tty_frame_size & 1) * 5);
+ sprintf(temp, "\nTerminal size: %d x %d. Baud rate: %u. Frame size: %d.%d",
+ columns, lines,
+ tty_baud_rate,
+ tty_frame_size >> 1,
+ (tty_frame_size & 1) * 5);
putln(temp);
}
@@ -196,9 +200,17 @@ curses_setup(
ncurses starts scanning the termcap file.
**/
if ((status = _nc_read_entry(tty_basename, tty_filename, &term)) == 0) {
- fprintf(stderr, "Terminal not found: TERM=%s\n", tty_basename);
- show_usage(exec_name);
- exit(1);
+ const TERMTYPE *fallback = _nc_fallback(tty_basename);
+
+ if (fallback) {
+ term = *fallback;
+ sprintf(tty_filename, "(fallback)%s", tty_basename);
+ status = 1;
+ } else {
+ fprintf(stderr, "Terminal not found: TERM=%s\n", tty_basename);
+ show_usage(exec_name);
+ exit(1);
+ }
}
if (status == -1) {
fprintf(stderr, "Terminfo database is inaccessible\n");
diff --git a/contrib/ncurses/tack/menu.c b/contrib/ncurses/tack/menu.c
index 6714d58dfc94..b4c8c050ad04 100644
--- a/contrib/ncurses/tack/menu.c
+++ b/contrib/ncurses/tack/menu.c
@@ -15,13 +15,13 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
-MODULE_ID("$Id: menu.c,v 1.2 2000/03/04 21:13:53 tom Exp $")
+MODULE_ID("$Id: menu.c,v 1.3 2005/09/17 19:49:16 tom Exp $")
/*
Menu control
diff --git a/contrib/ncurses/tack/modes.c b/contrib/ncurses/tack/modes.c
index f370ba892cc6..b202fa0e6d88 100644
--- a/contrib/ncurses/tack/modes.c
+++ b/contrib/ncurses/tack/modes.c
@@ -15,13 +15,13 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
-MODULE_ID("$Id: modes.c,v 1.1 1998/01/10 00:29:53 tom Exp $")
+MODULE_ID("$Id: modes.c,v 1.3 2006/11/26 00:16:21 tom Exp $")
/*
* Tests boolean flags and terminal modes.
@@ -760,16 +760,16 @@ subtest_mir(
i = line_count;
put_str("\nXXX\nXXX\nXXX\nXXX");
tc_putp(enter_insert_mode);
- s = tparm(cursor_address, i + 1, 0);
+ s = TPARM_2(cursor_address, i + 1, 0);
tputs(s, lines, tc_putch);
putchp('X');
- s = tparm(cursor_address, i + 2, 1);
+ s = TPARM_2(cursor_address, i + 2, 1);
tputs(s, lines, tc_putch);
putchp('X');
- s = tparm(cursor_address, i + 3, 2);
+ s = TPARM_2(cursor_address, i + 3, 2);
tputs(s, lines, tc_putch);
putchp('X');
- s = tparm(cursor_address, i + 4, 3);
+ s = TPARM_2(cursor_address, i + 4, 3);
tputs(s, lines, tc_putch);
putchp('X');
tc_putp(exit_insert_mode);
@@ -812,7 +812,7 @@ subtest_msgr(
(enter_alt_charset_mode && exit_alt_charset_mode))) {
put_crlf();
i = line_count + 1;
- tputs(tparm(cursor_address, i, 0), lines, tc_putch);
+ tputs(TPARM_2(cursor_address, i, 0), lines, tc_putch);
put_mode(enter_alt_charset_mode);
put_crlf();
/*
@@ -826,11 +826,11 @@ subtest_msgr(
put_mode(exit_alt_charset_mode);
put_mode(enter_standout_mode);
putchp('X');
- tputs(tparm(cursor_address, i + 2, 1), lines, tc_putch);
+ tputs(TPARM_2(cursor_address, i + 2, 1), lines, tc_putch);
putchp('X');
- tputs(tparm(cursor_address, i + 3, 2), lines, tc_putch);
+ tputs(TPARM_2(cursor_address, i + 3, 2), lines, tc_putch);
putchp('X');
- tputs(tparm(cursor_address, i + 4, 3), lines, tc_putch);
+ tputs(TPARM_2(cursor_address, i + 4, 3), lines, tc_putch);
putchp('X');
put_mode(exit_standout_mode);
put_crlf();
diff --git a/contrib/ncurses/tack/modules b/contrib/ncurses/tack/modules
index 79c2d2265f7b..14a8209266c9 100644
--- a/contrib/ncurses/tack/modules
+++ b/contrib/ncurses/tack/modules
@@ -1,4 +1,31 @@
-# $Id: modules,v 1.4 1999/04/18 01:43:32 tom Exp $
+##############################################################################
+# Copyright (c) 1998-1999,2006 Free Software 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: modules,v 1.5 2006/04/22 22:37:18 tom Exp $
@ base
ansi progs $(srcdir) $(srcdir)/tack.h ../include/term.h
charset progs $(srcdir) $(srcdir)/tack.h ../include/term.h
diff --git a/contrib/ncurses/tack/output.c b/contrib/ncurses/tack/output.c
index 5825bea8e960..8a3d0f42dfeb 100644
--- a/contrib/ncurses/tack/output.c
+++ b/contrib/ncurses/tack/output.c
@@ -15,15 +15,15 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
/* screen formatting and I/O utility functions */
#include <tack.h>
#include <time.h>
-MODULE_ID("$Id: output.c,v 1.7 2001/06/18 18:44:40 tom Exp $")
+MODULE_ID("$Id: output.c,v 1.11 2006/11/26 00:16:49 tom Exp $")
/* globals */
long char_sent; /* number of characters sent */
@@ -34,7 +34,7 @@ int replace_mode; /* used to output replace mode padding */
int can_go_home; /* TRUE if we can fashion a home command */
int can_clear_screen; /* TRUE if we can somehow clear the screen */
int raw_characters_sent; /* Total output characters */
-int log_count; /* Number of characters on a log line */
+static int log_count; /* Number of characters on a log line */
/* translate mode default strings */
#define TM_carriage_return TM_string[0].value
@@ -186,9 +186,9 @@ tt_putp(const char *string)
}
/*
-** tt_putparm(string, reps, arg1, arg2, ...)
+** tt_putparm(string, reps, arg1, arg2)
**
-** Send tt_tputs(tparm(string, args...), reps)
+** Send tt_tputs(tparm(string, args1, arg2), reps)
** Use this function inside timing tests.
*/
void
@@ -216,7 +216,7 @@ tt_putparm(
break;
}
}
- (void) tputs(tparm((NCURSES_CONST char *)string, arg1, arg2), reps, tc_putch);
+ (void) tputs(TPARM_2((NCURSES_CONST char *)string, arg1, arg2), reps, tc_putch);
}
}
@@ -506,10 +506,10 @@ expand(const char *s)
for (; (ch = *s); s++) {
if ((ch & 0x80) && v) { /* print it in reverse video
mode */
- strcpy(t, liberated(tparm(v)));
+ strcpy(t, liberated(TPARM_0(v)));
for (; *t; t++);
expand_one(ch & 0x7f, &t);
- strcpy(t, liberated(tparm(exit_attribute_mode)));
+ strcpy(t, liberated(TPARM_0(exit_attribute_mode)));
for (; *t; t++);
} else {
expand_one(ch, &t);
diff --git a/contrib/ncurses/tack/pad.c b/contrib/ncurses/tack/pad.c
index 980258c46f8a..da1e3d782895 100644
--- a/contrib/ncurses/tack/pad.c
+++ b/contrib/ncurses/tack/pad.c
@@ -15,13 +15,13 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
-MODULE_ID("$Id: pad.c,v 1.2 2000/03/04 21:04:58 tom Exp $")
+MODULE_ID("$Id: pad.c,v 1.6 2005/09/17 19:49:16 tom Exp $")
/* test the pad counts on the terminal */
@@ -61,8 +61,6 @@ static void pad_smso(struct test_list *, int *, int *);
static void pad_smacs(struct test_list *, int *, int *);
static void pad_crash(struct test_list *, int *, int *);
-extern struct test_menu change_pad_menu;
-
/*
Any command found in this list, executed from a "Done" prompt
will force the default action to repeat rather than next.
@@ -168,10 +166,8 @@ struct test_list pad_test_list[] = {
{MENU_LAST, 0, 0, 0, 0, 0, 0}
};
-extern int test_complete; /* counts number of tests completed */
-
/* globals */
-int hzcc; /* horizontal character count */
+static int hzcc; /* horizontal character count */
char letter; /* current character being displayed */
int letter_number; /* points into letters[] */
int augment, repeats; /* number of characters (or lines) effected */
@@ -1274,7 +1270,7 @@ pad_rin(
do {
sprintf(temp, "%d\r", test_complete);
put_str(temp);
- if (scroll_reverse && augment == 1) {
+ if (scroll_reverse && repeats == 1) {
tt_putp(scroll_reverse);
} else {
tt_putparm(parm_rindex, repeats, repeats, 0);
@@ -1345,7 +1341,7 @@ pad_il(
}
} while(still_testing());
put_str("This line should be on the bottom.\r");
- if (scroll_reverse && augment == 1) {
+ if (insert_line && augment == 1) {
for (i = 1; i < lines; i++) {
tt_putp(insert_line);
}
@@ -1386,8 +1382,13 @@ pad_indn(
start_message = "(indn) Scroll-forward-n-lines start testing";
} else {
/* ind */
- if (!scroll_forward && over_strike) {
+ if (!scroll_forward) {
CAP_NOT_FOUND;
+ ptext("(ind) Scroll-forward not present. ");
+ pad_done_message(t, state, ch);
+ return;
+ }
+ if (over_strike) {
ptext("(ind) Scroll-forward not tested on overstrike terminals. ");
pad_done_message(t, state, ch);
return;
@@ -1404,14 +1405,14 @@ pad_indn(
do {
sprintf(temp, "%d\r", test_complete);
put_str(temp);
- if (augment > 1) {
- tt_putparm(parm_index, repeats, repeats, 0);
- } else {
+ if (scroll_forward && repeats == 1) {
put_ind();
+ } else {
+ tt_putparm(parm_index, repeats, repeats, 0);
}
} while(still_testing());
put_str("This line should be on the top.\r");
- if (augment == 1) {
+ if (scroll_forward && augment == 1) {
for (i = 1; i < lines; i++) {
put_ind();
}
@@ -1466,26 +1467,26 @@ pad_dl(
pad_test_startup(1);
do {
sprintf(temp, "%d\r", test_complete);
- if ((i & 0x7f) == 0 && augment < lines - 1) {
+ if (augment < lines - 1) {
go_home();
putln(temp);
}
put_str(temp);
- if (repeats || !delete_line) {
- tt_putparm(parm_delete_line, repeats, repeats, 0);
- } else {
+ if (delete_line && repeats == 1) {
tt_putp(delete_line);
+ } else {
+ tt_putparm(parm_delete_line, repeats, repeats, 0);
}
} while(still_testing());
home_down();
put_str("This line should be on the top.");
go_home();
- if (repeats || !delete_line) {
- tt_putparm(parm_delete_line, lines - 1, lines - 1, 0);
- } else {
+ if (delete_line && augment == 1) {
for (i = 1; i < lines; i++) {
tt_putp(delete_line);
}
+ } else {
+ tt_putparm(parm_delete_line, lines - 1, lines - 1, 0);
}
sprintf(temp, "\nDelete %d line%s. ", augment,
augment == 1 ? "" : "s");
@@ -1754,7 +1755,7 @@ pad_csr_cup(
put_str(every_line);
}
tt_putparm(change_scroll_region, 1, 0, lines - 1);
- tt_putparm(cursor_address, 1, lines - 1, strlen(every_line));
+ tt_putparm(cursor_address, 1, lines - 1, (int) strlen(every_line));
} while(still_testing());
pad_test_shutdown(t, 0);
put_str(" ");
diff --git a/contrib/ncurses/tack/scan.c b/contrib/ncurses/tack/scan.c
index d9429c96ee5a..dbe684bd5ce1 100644
--- a/contrib/ncurses/tack/scan.c
+++ b/contrib/ncurses/tack/scan.c
@@ -15,31 +15,32 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
/* scan mode keyboard support */
#include <tack.h>
-MODULE_ID("$Id: scan.c,v 1.2 1999/08/21 23:09:35 tom Exp $")
+MODULE_ID("$Id: scan.c,v 1.5 2005/09/17 19:49:16 tom Exp $")
-int scan_max; /* length of longest scan code */
+unsigned scan_max; /* length of longest scan code */
char **scan_up, **scan_down, **scan_name;
-int *scan_tested, *scan_length, *scan_value;
+unsigned *scan_tested, *scan_length;
+static unsigned *scan_value;
static int shift_state;
static char *str;
static int debug_char_count;
-#define SHIFT_KEY 0x100
+#define SHIFT_KEY 0x100
#define CONTROL_KEY 0x200
-#define META_KEY 0x400
-#define CAPS_LOCK 0x800
+#define META_KEY 0x400
+#define CAPS_LOCK 0x800
static const struct {
const char *name;
- int type;
+ unsigned type;
} scan_special[] = {
{"<shift>", SHIFT_KEY},
{"<left shift>", SHIFT_KEY},
@@ -102,6 +103,7 @@ scan_init(char *fn)
char *s, *sl;
FILE *fp;
int ch, i, j;
+ unsigned len;
char home[512];
if ((str = getenv("HOME")))
@@ -140,9 +142,9 @@ scan_init(char *fn)
scan_up = (char **) malloc(sizeof(char *) * MAX_SCAN);
scan_down = (char **) malloc(sizeof(char *) * MAX_SCAN);
scan_name = (char **) malloc(sizeof(char *) * MAX_SCAN);
- scan_tested = (int *) malloc(sizeof(int *) * MAX_SCAN);
- scan_length = (int *) malloc(sizeof(int *) * MAX_SCAN);
- scan_value = (int *) malloc(sizeof(int *) * MAX_SCAN);
+ scan_tested = (unsigned *) malloc(sizeof(unsigned *) * MAX_SCAN);
+ scan_length = (unsigned *) malloc(sizeof(unsigned *) * MAX_SCAN);
+ scan_value = (unsigned *) malloc(sizeof(unsigned *) * MAX_SCAN);
scan_up[0] = scan_down[0] = scan_name[0] = (char *) 0;
str = (char *) malloc(4096); /* buffer space */
sl = str + 4000; /* an upper limit */
@@ -165,11 +167,11 @@ scan_init(char *fn)
scan_name[i] = str;
scan_length[i] = strlen(scan_down[i]);
- ch = strlen(scan_up[i]) + scan_length[i];
- if (ch > scan_max)
- scan_max = ch;
+ len = strlen(scan_up[i]) + scan_length[i];
+ if (len > scan_max)
+ scan_max = len;
- scan_value[i] = scan_name[i][0];
+ scan_value[i] = UChar(scan_name[i][0]);
if (scan_name[i][1]) /* multi-character name */
for (j = 0; scan_special[j].name; j++) {
if (!strcmp(scan_name[i], scan_special[j].name)) {
@@ -202,7 +204,8 @@ int
scan_key(void)
{ /* read a key and translate scan mode to
ASCII */
- int i, j, ch;
+ unsigned i;
+ int j, ch;
char buf[64];
for (i = 1;; i++) {
diff --git a/contrib/ncurses/tack/sync.c b/contrib/ncurses/tack/sync.c
index 6eb91b256a75..f9358bb19e32 100644
--- a/contrib/ncurses/tack/sync.c
+++ b/contrib/ncurses/tack/sync.c
@@ -15,14 +15,14 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
#include <time.h>
-MODULE_ID("$Id: sync.c,v 1.3 2001/06/16 17:55:48 tom Exp $")
+MODULE_ID("$Id: sync.c,v 1.9 2006/05/06 20:45:48 tom Exp $")
/* terminal-synchronization and performance tests */
@@ -31,7 +31,7 @@ static void sync_lines(struct test_list *, int *, int *);
static void sync_clear(struct test_list *, int *, int *);
static void sync_summary(struct test_list *, int *, int *);
-struct test_list sync_test_list[] = {
+static struct test_list sync_test_list[] = {
{MENU_NEXT, 0, 0, 0, "b) baud rate test", sync_home, 0},
{MENU_NEXT, 0, 0, 0, "l) scroll performance", sync_lines, 0},
{MENU_NEXT, 0, 0, 0, "c) clear screen performance", sync_clear, 0},
@@ -48,16 +48,16 @@ struct test_menu sync_menu = {
};
int tty_can_sync; /* TRUE if tty_sync_error() returned FALSE */
-int tty_newline_rate; /* The number of newlines per second */
-int tty_clear_rate; /* The number of clear-screens per second */
-int tty_cps; /* The number of characters per second */
+static int tty_newline_rate; /* The number of newlines per second */
+static int tty_clear_rate; /* The number of clear-screens per second */
+unsigned long tty_cps; /* The number of characters per second */
#define TTY_ACK_SIZE 64
-int ACK_terminator; /* terminating ACK character */
-int ACK_length; /* length of ACK string */
-const char *tty_ENQ; /* enquire string */
-char tty_ACK[TTY_ACK_SIZE]; /* ACK response, set by tty_sync_error() */
+static int ACK_terminator; /* terminating ACK character */
+static int ACK_length; /* length of ACK string */
+static const char *tty_ENQ; /* enquire string */
+static char tty_ACK[TTY_ACK_SIZE]; /* ACK response, set by tty_sync_error() */
/*****************************************************************************
*
@@ -256,7 +256,7 @@ verify_time(void)
**
** Baudrate test
*/
-void
+static void
sync_home(
struct test_list *t,
int *state,
@@ -299,7 +299,7 @@ sync_home(
if (tx_cps > tty_cps) {
tty_cps = tx_cps;
}
- sprintf(temp, "%d characters per second. Baudrate %d ", tx_cps, j);
+ sprintf(temp, "%lu characters per second. Baudrate %d ", tx_cps, j);
ptext(temp);
generic_done_message(t, state, ch);
}
@@ -395,7 +395,7 @@ sync_summary(
put_crlf();
ptextln("Terminal size characters/sec linefeeds/sec clears/sec");
sprintf(size, "%dx%d", columns, lines);
- sprintf(temp, "%-10s%-11s%11d %11d %11d", tty_basename, size,
+ sprintf(temp, "%-10s%-11s%11lu %11d %11d", tty_basename, size,
tty_cps, tty_newline_rate, tty_clear_rate);
ptextln(temp);
generic_done_message(t, state, ch);
diff --git a/contrib/ncurses/tack/sysdep.c b/contrib/ncurses/tack/sysdep.c
index d8b480237715..78ae095e3bcb 100644
--- a/contrib/ncurses/tack/sysdep.c
+++ b/contrib/ncurses/tack/sysdep.c
@@ -15,8 +15,8 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
/*
* Operating system dependent functions. We assume the POSIX API.
@@ -24,6 +24,9 @@
* global has no effect.
*/
+#ifdef HAVE_CONFIG_H
+#include <ncurses_cfg.h>
+#endif
#include <signal.h> /* include before curses.h to work around glibc bug */
#include <tack.h>
@@ -46,7 +49,7 @@
#endif
#endif
-MODULE_ID("$Id: sysdep.c,v 1.11 2002/04/21 19:40:43 tom Exp $")
+MODULE_ID("$Id: sysdep.c,v 1.15 2005/09/17 19:49:16 tom Exp $")
#if DECL_ERRNO
extern int errno;
@@ -60,7 +63,7 @@ extern int errno;
/* globals */
int tty_frame_size; /* asynch frame size times 2 */
-unsigned long tty_baud_rate; /* baud rate - bits per second */
+unsigned tty_baud_rate; /* baud rate - bits per second */
int not_a_tty; /* TRUE if output is not a tty (i.e. pipe) */
int nodelay_read; /* TRUE if NDELAY is set */
@@ -179,8 +182,8 @@ tty_set(void)
#endif /* NL1 */
break;
}
- if (!(new_modes.c_oflag & ~OPOST))
- new_modes.c_oflag &= ~OPOST;
+ if (!(new_modes.c_oflag & (unsigned long) ~OPOST))
+ new_modes.c_oflag &= (unsigned long) ~OPOST;
#else
new_modes.sg_flags |= RAW;
if (not_a_tty)
@@ -396,7 +399,7 @@ read_key(char *buf, int max)
if (ask > max) {
ask = max;
}
- if ((got = read(fileno(stdin), s, ask))) {
+ if ((got = read(fileno(stdin), s, (unsigned) ask))) {
s += got;
} else {
break;
@@ -497,5 +500,5 @@ set_alarm_clock(
{
signal(SIGALRM, alarm_event);
no_alarm_event = 1;
- (void) alarm(seconds);
+ (void) alarm((unsigned) seconds);
}
diff --git a/contrib/ncurses/tack/tack.1 b/contrib/ncurses/tack/tack.1
index be74e5852cc9..dcab18f55f75 100644
--- a/contrib/ncurses/tack/tack.1
+++ b/contrib/ncurses/tack/tack.1
@@ -1,3 +1,32 @@
+.\"***************************************************************************
+.\" Copyright (c) 1998-2005,2006 Free Software 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: tack.1,v 1.3 2006/04/22 22:26:55 tom Exp $
.TH tack 1M ""
.ds n 5
.ds d @TERMINFO@
@@ -294,7 +323,7 @@ If you make changes to the terminfo entry \fBtack\fR will save
the new terminfo to a file. The file will have the same name
as the terminal name.
.SH SEE ALSO
-\fBterminfo\fR(\*n), \fBncurses\fR(3X), \fBtic\fR(1m), \fBinfocmp\fR(1m).
+\fBterminfo\fR(\*n), \fBncurses\fR(3X), \fBtic\fR(1M), \fBinfocmp\fR(1M).
You should also have the documentation supplied by the terminal
manufacturer.
.SH BUGS
diff --git a/contrib/ncurses/tack/tack.c b/contrib/ncurses/tack/tack.c
index f6e37d44181b..946a2fbf4e82 100644
--- a/contrib/ncurses/tack/tack.c
+++ b/contrib/ncurses/tack/tack.c
@@ -15,13 +15,13 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
#include <tack.h>
-MODULE_ID("$Id: tack.c,v 1.2 2001/10/28 01:05:35 tom Exp $")
+MODULE_ID("$Id: tack.c,v 1.4 2005/09/17 19:49:16 tom Exp $")
/*
This program is designed to test terminfo, not curses. Therefore
@@ -62,14 +62,12 @@ FILE *log_fp; /* Terminal logfile */
*
*****************************************************************************/
-extern struct test_menu sync_menu;
-
static void tools_hex_echo(struct test_list *, int *, int *);
static void tools_debug(struct test_list *, int *, int *);
static char hex_echo_menu_entry[80];
-struct test_list tools_test_list[] = {
+static struct test_list tools_test_list[] = {
{0, 0, 0, 0, "s) ANSI status reports", tools_status, 0},
{0, 0, 0, 0, "g) ANSI SGR modes (bold, underline, reverse)", tools_sgr, 0},
{0, 0, 0, 0, "c) ANSI character sets", tools_charset, 0},
@@ -83,7 +81,7 @@ struct test_list tools_test_list[] = {
{MENU_LAST, 0, 0, 0, 0, 0, 0}
};
-struct test_menu tools_menu = {
+static struct test_menu tools_menu = {
0, 'q', 0, "Tools Menu", "tools",
0, 0, tools_test_list, 0, 0, 0
};
@@ -115,24 +113,18 @@ static struct test_menu tty_menu = {
tty_show_state, tty_test_list, 0, 0, 0
};
-extern struct test_list edit_test_list[];
-
struct test_menu edit_menu = {
0, 'q', 0, "Edit terminfo menu",
"edit", 0,
0, edit_test_list, 0, 0, 0
};
-extern struct test_list mode_test_list[];
-
-struct test_menu mode_menu = {
+static struct test_menu mode_menu = {
0, 'n', 0, "Test modes and glitches:",
"mode", "n) run standard tests",
0, mode_test_list, 0, 0, 0
};
-extern struct test_list acs_test_list[];
-
static struct test_menu acs_menu = {
0, 'n', 0,
"Test alternate character set and graphics rendition:",
@@ -140,17 +132,13 @@ static struct test_menu acs_menu = {
0, acs_test_list, 0, 0, 0
};
-extern struct test_list color_test_list[];
-
-struct test_menu color_menu = {
+static struct test_menu color_menu = {
0, 'n', 0,
"Test color:",
"color", "n) run standard tests",
0, color_test_list, 0, 0, 0
};
-extern struct test_list crum_test_list[];
-
static struct test_menu crum_menu = {
0, 'n', 0,
"Test cursor movement:",
@@ -158,8 +146,6 @@ static struct test_menu crum_menu = {
0, crum_test_list, 0, 0, 0
};
-extern struct test_list funkey_test_list[];
-
static struct test_menu funkey_menu = {
0, 'n', 0,
"Test function keys:",
@@ -167,8 +153,6 @@ static struct test_menu funkey_menu = {
sync_test, funkey_test_list, 0, 0, 0
};
-extern struct test_list printer_test_list[];
-
static struct test_menu printer_menu = {
0, 'n', 0,
"Test printer:",
@@ -177,7 +161,6 @@ static struct test_menu printer_menu = {
};
static void pad_gen(struct test_list *, int *, int *);
-extern struct test_list pad_test_list[];
static struct test_menu pad_menu = {
0, 'n', 0,
@@ -203,7 +186,7 @@ static struct test_list normal_test_list[] = {
};
-struct test_menu normal_menu = {
+static struct test_menu normal_menu = {
0, 'n', 0, "Main test menu",
"test", "n) run standard tests",
0, normal_test_list, 0, 0, 0
@@ -216,7 +199,7 @@ static void start_log(struct test_list *, int *, int *);
static char logging_menu_entry[80] = "l) start logging";
-struct test_list start_test_list[] = {
+static struct test_list start_test_list[] = {
{0, 0, 0, 0, "b) display basic information", start_basic, 0},
{0, 0, 0, 0, "m) change modes", start_modes, 0},
{0, 0, 0, 0, "t) tools", start_tools, 0},
@@ -226,7 +209,7 @@ struct test_list start_test_list[] = {
};
-struct test_menu start_menu = {
+static struct test_menu start_menu = {
0, 'n', 0, "Main Menu", "tack", 0,
0, start_test_list, 0, 0, 0
};
@@ -319,7 +302,7 @@ tty_show_state(
{
put_crlf();
(void) sprintf(temp,
- "Accepting %d bits, UNIX delays %d, XON/XOFF %sabled, speed %ld, translate %s, scan-code mode %s.",
+ "Accepting %d bits, UNIX delays %d, XON/XOFF %sabled, speed %u, translate %s, scan-code mode %s.",
(char_mask == ALLOW_PARITY) ? 8 : 7,
select_delay_type,
select_xon_xoff ? "en" : "dis",
diff --git a/contrib/ncurses/tack/tack.h b/contrib/ncurses/tack/tack.h
index daca1e12c489..933f542bdb2e 100644
--- a/contrib/ncurses/tack/tack.h
+++ b/contrib/ncurses/tack/tack.h
@@ -15,11 +15,11 @@
**
** You should have received a copy of the GNU General Public License
** along with TACK; see the file COPYING. If not, write to
-** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-** Boston, MA 02111-1307, USA.
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+** Boston, MA 02110-1301, USA
*/
-/* $Id: tack.h,v 1.9 2001/06/18 18:44:49 tom Exp $ */
+/* $Id: tack.h,v 1.16 2006/11/25 23:45:00 tom Exp $ */
#ifndef NCURSES_TACK_H_incl
#define NCURSES_TACK_H_incl 1
@@ -27,7 +27,7 @@
/* terminfo action checker include file */
#define MAJOR_VERSION 1
-#define MINOR_VERSION 0
+#define MINOR_VERSION 1
#ifdef HAVE_CONFIG_H
#include <ncurses_cfg.h>
@@ -48,6 +48,7 @@
#include <curses.h>
#include <term_entry.h>
+#include <nc_tparm.h>
#if USE_RCS_IDS
#define MODULE_ID(id) static const char Ident[] = id;
@@ -60,6 +61,10 @@ extern char *_nc_strstr(const char *, const char *);
#define strstr(h,n) _nc_strstr(h,n)
#endif
+#define CUR_TP (&(cur_term->type))
+#define MAX_STRINGS NUM_STRINGS(CUR_TP)
+#define STR_NAME(n) ExtStrname(CUR_TP,n,strnames)
+
#define UChar(c) ((unsigned char)(c))
extern FILE *log_fp;
@@ -77,9 +82,9 @@ extern char tty_shortname[];
extern int tty_can_sync;
extern int total_pads_sent; /* count pad characters sent */
extern int total_caps_sent; /* count caps sent */
-extern int total_printing_characters; /* count printing characters sent */
+extern int total_printing_characters; /* count printing characters sent */
extern int no_alarm_event; /* TRUE if the alarm has not gone off yet */
-extern int usec_run_time; /* length of last test in microseconds */
+extern unsigned long usec_run_time; /* length of last test in microseconds */
extern int raw_characters_sent; /* Total output characters */
/* Stopwatch event timers */
@@ -129,8 +134,8 @@ extern int select_delay_type;
extern int select_xon_xoff;
extern int tty_frame_size;
-extern unsigned long tty_baud_rate;
-extern int tty_cps; /* The number of characters per second */
+extern unsigned tty_baud_rate;
+extern unsigned long tty_cps; /* The number of characters per second */
extern int not_a_tty, nodelay_read;
extern int send_reset_init;
@@ -194,7 +199,7 @@ extern int tx_delay[TT_MAX]; /* Number of milliseconds delay */
extern int tx_index[TT_MAX]; /* String index */
extern int txp; /* number of entries used */
extern int tx_characters; /* printing characters sent by test */
-extern int tx_cps; /* characters per second */
+extern unsigned long tx_cps; /* characters per second */
/*
Menu control for tack.
@@ -268,138 +273,156 @@ struct test_menu {
#define REQUEST_PROMPT 256
-extern char prompt_string[80]; /* menu prompt storage */
-extern struct test_menu edit_menu;
-extern struct test_list *augment_test;
-
/* tack.c */
+extern struct test_menu edit_menu;
extern void show_usage(char *);
extern void print_version(void);
/* output.c */
-extern void tt_tputs(const char *, int);
-extern void tt_putp(const char *);
-extern void tt_putparm(NCURSES_CONST char *, int, int, int);
-extern int tc_putp(const char *);
+extern char *expand(const char *);
+extern char *expand_command(const char *);
+extern char *expand_to(char *, int);
+extern char *hex_expand_to(char *, int);
+extern char *print_expand(char *);
+extern int getchp(int);
+extern int getnext(int);
extern int tc_putch(int);
-extern void putchp(int);
+extern int tc_putp(const char *);
+extern int wait_here(void);
+extern void go_home(void);
+extern void home_down(void);
+extern void maybe_wait(int);
+extern void ptext(const char *);
+extern void ptextln(const char *);
+extern void put_clear(void);
+extern void put_columns(const char *, int, int);
extern void put_cr(void);
extern void put_crlf(void);
-extern void put_clear(void);
extern void put_dec(char *, int);
-extern void put_str(const char *);
-extern void put_lf(void);
extern void put_ind(void);
+extern void put_lf(void);
extern void put_newlines(int);
-extern void put_columns(const char *, int, int);
+extern void put_str(const char *);
extern void put_this(int);
+extern void putchp(int);
extern void putln(const char *);
-extern void ptext(const char *);
-extern void ptextln(const char *);
-extern void home_down(void);
-extern void go_home(void);
-extern void three_digit(char *, int);
-extern int getchp(int);
-extern char *expand(const char *);
-extern char *expand_to(char *, int);
-extern char *expand_command(const char *);
-extern char *hex_expand_to(char *, int);
-extern char *print_expand(char *);
-extern void maybe_wait(int);
-extern int wait_here(void);
extern void read_string(char *, int);
-extern int getnext(int);
+extern void three_digit(char *, int);
+extern void tt_putp(const char *);
+extern void tt_putparm(NCURSES_CONST char *, int, int, int);
+extern void tt_tputs(const char *, int);
+
+#define put_that(n) put_this((int) (n))
/* control.c */
-extern void event_start(int);
-extern long event_time(int);
+extern struct test_list color_test_list[];
extern char *liberated(char *);
-extern void page_loop(void);
-extern void control_init(void);
+extern char txt_longer_augment[80];
+extern char txt_longer_test_time[80];
+extern char txt_shorter_augment[80];
+extern char txt_shorter_test_time[80];
extern int msec_cost(const char *const, int);
extern int skip_pad_test(struct test_list *, int *, int *, const char *);
-extern void pad_test_startup(int);
+extern int sliding_scale(int, int, unsigned long);
extern int still_testing(void);
-extern void pad_test_shutdown(struct test_list *, int);
+extern long event_time(int);
+extern void control_init(void);
extern void dump_test_stats(struct test_list *, int *, int *);
+extern void event_start(int);
+extern void longer_augment(struct test_list *, int *, int *);
extern void longer_test_time(struct test_list *, int *, int *);
-extern void shorter_test_time(struct test_list *, int *, int *);
-extern char txt_longer_test_time[80];
-extern char txt_shorter_test_time[80];
+extern void pad_test_shutdown(struct test_list *, int);
+extern void pad_test_startup(int);
+extern void page_loop(void);
extern void set_augment_txt(void);
-extern void longer_augment(struct test_list *, int *, int *);
extern void shorter_augment(struct test_list *, int *, int *);
-extern char txt_longer_augment[80];
-extern char txt_shorter_augment[80];
-extern int sliding_scale(int, int, int);
-
-/* sync.c */
-extern void verify_time(void);
-extern int tty_sync_error(void);
-extern void flush_input(void);
-extern void sync_test(struct test_menu *);
-extern void sync_handshake(struct test_list *, int *, int *);
+extern void shorter_test_time(struct test_list *, int *, int *);
/* charset.c */
+extern struct test_list acs_test_list[];
extern void set_attr(int);
extern void eat_cookie(void);
extern void put_mode(char *);
-/* init.c */
-extern void reset_init(void);
-extern void display_basic(void);
-extern void put_name(const char *, const char *);
-extern void charset_can_test(void);
-extern void curses_setup(char *);
-extern void bye_kids(int);
-
-/* scan.c */
-extern int scan_key(void);
-extern void scan_init(char *fn);
+/* crum.c */
+extern struct test_list crum_test_list[];
/* ansi.c */
extern void tools_status(struct test_list *, int *, int *);
extern void tools_charset(struct test_list *, int *, int *);
extern void tools_sgr(struct test_list *, int *, int *);
-/* pad.c */
+/* edit.c */
+extern struct test_menu change_pad_menu;
+extern struct test_list edit_test_list[];
+extern char *get_string_cap_byname(const char *, const char **);
+extern int cap_match(const char *names, const char *cap);
+extern int get_string_cap_byvalue(const char *);
+extern int user_modified(void);
+extern void can_test(const char *, int);
+extern void cap_index(const char *, int *);
+extern void edit_init(void);
+extern void save_info(struct test_list *, int *, int *);
+extern void show_report(struct test_list *, int *, int *);
/* fun.c */
+extern struct test_list funkey_test_list[];
+extern struct test_list printer_test_list[];
extern void enter_key(const char *, char *, char *);
extern int tty_meta_prep(void);
extern void tools_report(struct test_list *, int *, int *);
+/* init.c */
+extern void reset_init(void);
+extern void display_basic(void);
+extern void put_name(const char *, const char *);
+extern void charset_can_test(void);
+extern void curses_setup(char *);
+extern void bye_kids(int);
+
+/* scan.c */
+extern char **scan_up, **scan_down, **scan_name;
+extern int scan_key(void);
+extern unsigned scan_max; /* length of longest scan code */
+extern unsigned *scan_tested, *scan_length;
+extern void scan_init(char *fn);
+
/* sysdep.c */
-extern void tty_set(void);
-extern void tty_raw(int, int);
-extern void tty_init(void);
-extern void tty_reset(void);
-extern void spin_flush(void);
+extern int initial_stty_query(int);
+extern int stty_query(int);
+extern void ignoresig(void);
extern void read_key(char *, int);
extern void set_alarm_clock(int);
-extern void ignoresig(void);
-extern int stty_query(int);
-extern int initial_stty_query(int);
-
-/* edit.c */
-extern int user_modified(void);
-extern void save_info(struct test_list *, int *, int *);
-extern void can_test(const char *, int);
-extern void cap_index(const char *, int *);
-extern int cap_match(const char *names, const char *cap);
-extern void edit_init(void);
-extern char *get_string_cap_byname(const char *, const char **);
-extern int get_string_cap_byvalue(const char *);
-extern void show_report(struct test_list *, int *, int *);
+extern void spin_flush(void);
+extern void tty_init(void);
+extern void tty_raw(int, int);
+extern void tty_reset(void);
+extern void tty_set(void);
/* menu.c */
-extern void menu_prompt(void);
-extern void menu_can_scan(const struct test_menu *);
-extern void menu_display(struct test_menu *, int *);
+extern char prompt_string[80]; /* menu prompt storage */
+extern int subtest_menu(struct test_list *, int *, int *);
+extern struct test_list *augment_test;
extern void generic_done_message(struct test_list *, int *, int *);
-extern void pad_done_message(struct test_list *, int *, int *);
+extern void menu_can_scan(const struct test_menu *);
extern void menu_clear_screen(struct test_list *, int *, int *);
+extern void menu_display(struct test_menu *, int *);
+extern void menu_prompt(void);
extern void menu_reset_init(struct test_list *, int *, int *);
-extern int subtest_menu(struct test_list *, int *, int *);
+extern void pad_done_message(struct test_list *, int *, int *);
+
+/* modes.c */
+extern struct test_list mode_test_list[];
+
+/* pad.c */
+extern struct test_list pad_test_list[];
+
+/* sync.c */
+extern struct test_menu sync_menu;
+extern int tty_sync_error(void);
+extern void flush_input(void);
+extern void sync_handshake(struct test_list *, int *, int *);
+extern void sync_test(struct test_menu *);
+extern void verify_time(void);
#endif /* NCURSES_TACK_H_incl */
diff --git a/contrib/ncurses/tar-copy.sh b/contrib/ncurses/tar-copy.sh
index 4e45bc34ed33..3df1bc11169e 100755
--- a/contrib/ncurses/tar-copy.sh
+++ b/contrib/ncurses/tar-copy.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-# $Id: tar-copy.sh,v 1.3 1998/02/11 12:14:03 tom Exp $
+# $Id: tar-copy.sh,v 1.5 2003/10/25 14:40:07 tom Exp $
##############################################################################
-# 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 "Software"), #
@@ -28,7 +28,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1997,1998
+# Author: Thomas E. Dickey
#
# Copy a collection of files using 'tar', so that their dates and links are
# preserved
@@ -55,16 +55,23 @@ fi
WD=`pwd`
TMP=$WD/copy$$
-trap "rm -f $TMP" 0 1 2 5 15
cd $2
-if ( tar cf $TMP $1 )
+TEST=`ls -d $1 2>/dev/null`
+if test -z "$TEST"
then
- cd $3
- LIST=`tar tf $TMP 2>&1`
- $DOIT rm -rf $LIST 2>/dev/null
- $DOIT tar xvf $TMP
+ echo "... no match for \"$1\" in $2"
else
- echo "Cannot create tar of $1 files"
- exit 1
+ echo "... installing files matching \"$1\" in $2"
+ trap "rm -f $TMP" 0 1 2 5 15
+ if ( tar cf $TMP $1 )
+ then
+ cd $3
+ LIST=`tar tf $TMP 2>&1`
+ $DOIT rm -rf $LIST 2>/dev/null
+ $DOIT tar xvf $TMP
+ else
+ echo "Cannot create tar of $1 files"
+ exit 1
+ fi
fi