aboutsummaryrefslogtreecommitdiff
path: root/contrib/ncurses
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2014-03-02 08:58:21 +0000
committerXin LI <delphij@FreeBSD.org>2014-03-02 08:58:21 +0000
commit73f0a83d68863a383fd8953972cd36eb6420ec7d (patch)
treea2372d7ccc967890376ec8bcddc202aba009ba79 /contrib/ncurses
parent0d2041a08b86b4c2ce3b6cafb157a32abf660764 (diff)
parentcea297eb34d2361e79529034397465068ae34ecd (diff)
downloadsrc-73f0a83d68863a383fd8953972cd36eb6420ec7d.tar.gz
src-73f0a83d68863a383fd8953972cd36eb6420ec7d.zip
MFV r262639: ncurses 5.9 20140222 snapshot.
Requested by: bapt
Notes
Notes: svn path=/head/; revision=262685
Diffstat (limited to 'contrib/ncurses')
-rw-r--r--contrib/ncurses/COPYING28
-rw-r--r--contrib/ncurses/INSTALL104
-rw-r--r--contrib/ncurses/MANIFEST52
-rw-r--r--contrib/ncurses/Makefile.in30
-rw-r--r--contrib/ncurses/NEWS1522
-rw-r--r--contrib/ncurses/README17
-rw-r--r--contrib/ncurses/README.MinGW93
-rw-r--r--contrib/ncurses/aclocal.m41666
-rw-r--r--contrib/ncurses/announce.html.in160
-rwxr-xr-xcontrib/ncurses/config.guess350
-rwxr-xr-xcontrib/ncurses/config.sub214
-rwxr-xr-xcontrib/ncurses/configure7680
-rw-r--r--contrib/ncurses/configure.in639
-rw-r--r--contrib/ncurses/dist.mk37
-rw-r--r--contrib/ncurses/doc/html/NCURSES-Programming-HOWTO.html13516
-rw-r--r--contrib/ncurses/doc/html/announce.html4
-rw-r--r--contrib/ncurses/doc/html/hackguide.html6
-rw-r--r--contrib/ncurses/doc/html/ncurses-intro.html7
-rw-r--r--contrib/ncurses/doc/ncurses-intro.doc1
-rw-r--r--contrib/ncurses/form/Makefile.in10
-rw-r--r--contrib/ncurses/form/fld_arg.c6
-rw-r--r--contrib/ncurses/form/fld_def.c27
-rw-r--r--contrib/ncurses/form/fld_dup.c8
-rw-r--r--contrib/ncurses/form/fld_ftchoice.c6
-rw-r--r--contrib/ncurses/form/fld_ftlink.c10
-rw-r--r--contrib/ncurses/form/fld_just.c6
-rw-r--r--contrib/ncurses/form/fld_link.c8
-rw-r--r--contrib/ncurses/form/fld_max.c10
-rw-r--r--contrib/ncurses/form/fld_move.c8
-rw-r--r--contrib/ncurses/form/fld_page.c8
-rw-r--r--contrib/ncurses/form/fld_stat.c8
-rw-r--r--contrib/ncurses/form/form.h7
-rw-r--r--contrib/ncurses/form/form.priv.h9
-rw-r--r--contrib/ncurses/form/frm_data.c6
-rw-r--r--contrib/ncurses/form/frm_def.c24
-rw-r--r--contrib/ncurses/form/frm_driver.c447
-rw-r--r--contrib/ncurses/form/frm_hook.c6
-rw-r--r--contrib/ncurses/form/frm_opts.c18
-rw-r--r--contrib/ncurses/form/frm_page.c6
-rw-r--r--contrib/ncurses/form/frm_post.c8
-rw-r--r--contrib/ncurses/form/frm_req_name.c21
-rw-r--r--contrib/ncurses/form/fty_generic.c6
-rw-r--r--contrib/ncurses/form/fty_int.c7
-rw-r--r--contrib/ncurses/form/fty_num.c7
-rw-r--r--contrib/ncurses/form/fty_regex.c14
-rw-r--r--contrib/ncurses/form/llib-lformtw11
-rw-r--r--contrib/ncurses/form/llib-lformw11
-rw-r--r--contrib/ncurses/include/Caps18
-rw-r--r--contrib/ncurses/include/Caps.aix418
-rw-r--r--contrib/ncurses/include/Caps.hpux1118
-rw-r--r--contrib/ncurses/include/Caps.keys26
-rw-r--r--contrib/ncurses/include/Caps.osf1r56
-rwxr-xr-xcontrib/ncurses/include/MKkey_defs.sh9
-rw-r--r--contrib/ncurses/include/MKterm.h.awk.in46
-rw-r--r--contrib/ncurses/include/Makefile.in7
-rw-r--r--contrib/ncurses/include/curses.h.in285
-rw-r--r--contrib/ncurses/include/curses.tail4
-rw-r--r--contrib/ncurses/include/curses.wide150
-rw-r--r--contrib/ncurses/include/headers18
-rw-r--r--contrib/ncurses/include/nc_alloc.h14
-rw-r--r--contrib/ncurses/include/nc_string.h (renamed from contrib/ncurses/ncurses/tty/tty_input.h)78
-rw-r--r--contrib/ncurses/include/nc_termios.h171
-rw-r--r--contrib/ncurses/include/nc_tparm.h8
-rw-r--r--contrib/ncurses/include/ncurses_defs23
-rw-r--r--contrib/ncurses/include/ncurses_mingw.h100
-rw-r--r--contrib/ncurses/include/term_entry.h66
-rw-r--r--contrib/ncurses/include/tic.h35
-rw-r--r--contrib/ncurses/man/Makefile.in8
-rw-r--r--contrib/ncurses/man/clear.111
-rw-r--r--contrib/ncurses/man/curs_add_wch.3x6
-rw-r--r--contrib/ncurses/man/curs_add_wchstr.3x64
-rw-r--r--contrib/ncurses/man/curs_addchstr.3x50
-rw-r--r--contrib/ncurses/man/curs_addstr.3x38
-rw-r--r--contrib/ncurses/man/curs_addwstr.3x35
-rw-r--r--contrib/ncurses/man/curs_attr.3x59
-rw-r--r--contrib/ncurses/man/curs_bkgrnd.3x6
-rw-r--r--contrib/ncurses/man/curs_border_set.3x6
-rw-r--r--contrib/ncurses/man/curs_get_wch.3x6
-rw-r--r--contrib/ncurses/man/curs_get_wstr.3x6
-rw-r--r--contrib/ncurses/man/curs_getcchar.3x6
-rw-r--r--contrib/ncurses/man/curs_getch.3x12
-rw-r--r--contrib/ncurses/man/curs_in_wchstr.3x6
-rw-r--r--contrib/ncurses/man/curs_initscr.3x17
-rw-r--r--contrib/ncurses/man/curs_inopts.3x63
-rw-r--r--contrib/ncurses/man/curs_ins_wstr.3x6
-rw-r--r--contrib/ncurses/man/curs_inwstr.3x6
-rw-r--r--contrib/ncurses/man/curs_mouse.3x24
-rw-r--r--contrib/ncurses/man/curs_opaque.3x13
-rw-r--r--contrib/ncurses/man/curs_overlay.3x26
-rw-r--r--contrib/ncurses/man/curs_sp_funcs.3x6
-rw-r--r--contrib/ncurses/man/curs_termcap.3x61
-rw-r--r--contrib/ncurses/man/curs_terminfo.3x211
-rw-r--r--contrib/ncurses/man/curs_threads.3x4
-rw-r--r--contrib/ncurses/man/curs_util.3x112
-rw-r--r--contrib/ncurses/man/curs_variables.3x9
-rw-r--r--contrib/ncurses/man/form_field.3x6
-rw-r--r--contrib/ncurses/man/form_variables.3x6
-rw-r--r--contrib/ncurses/man/infocmp.1m176
-rw-r--r--contrib/ncurses/man/manhtml.aliases16
-rw-r--r--contrib/ncurses/man/manhtml.externs24
-rw-r--r--contrib/ncurses/man/menu_items.3x6
-rw-r--r--contrib/ncurses/man/ncurses.3x148
-rw-r--r--contrib/ncurses/man/resizeterm.3x16
-rw-r--r--contrib/ncurses/man/tabs.124
-rw-r--r--contrib/ncurses/man/term.76
-rw-r--r--contrib/ncurses/man/term_variables.3x14
-rw-r--r--contrib/ncurses/man/terminfo.head15
-rw-r--r--contrib/ncurses/man/terminfo.tail404
-rw-r--r--contrib/ncurses/man/tic.1m200
-rw-r--r--contrib/ncurses/man/toe.1m21
-rw-r--r--contrib/ncurses/man/tput.135
-rw-r--r--contrib/ncurses/man/tset.1101
-rw-r--r--contrib/ncurses/menu/Makefile.in10
-rw-r--r--contrib/ncurses/menu/m_attribs.c6
-rw-r--r--contrib/ncurses/menu/m_driver.c12
-rw-r--r--contrib/ncurses/menu/m_format.c20
-rw-r--r--contrib/ncurses/menu/m_global.c38
-rw-r--r--contrib/ncurses/menu/m_hook.c6
-rw-r--r--contrib/ncurses/menu/m_item_new.c21
-rw-r--r--contrib/ncurses/menu/m_pad.c6
-rw-r--r--contrib/ncurses/menu/m_post.c40
-rw-r--r--contrib/ncurses/menu/m_req_name.c19
-rw-r--r--contrib/ncurses/menu/m_spacing.c10
-rw-r--r--contrib/ncurses/menu/menu.priv.h15
-rw-r--r--contrib/ncurses/menu/mf_common.h18
-rw-r--r--contrib/ncurses/misc/Makefile.in13
-rw-r--r--contrib/ncurses/misc/gen-pkgconfig.in88
-rwxr-xr-xcontrib/ncurses/misc/gen_edit.sh72
-rw-r--r--contrib/ncurses/misc/ncurses-config.in49
-rw-r--r--contrib/ncurses/misc/run_tic.in7
-rw-r--r--contrib/ncurses/misc/terminfo.src3540
-rw-r--r--contrib/ncurses/mk-0th.awk91
-rw-r--r--contrib/ncurses/mk-1st.awk122
-rw-r--r--contrib/ncurses/mk-dlls.sh.in114
-rw-r--r--contrib/ncurses/mk-hdr.awk16
-rw-r--r--contrib/ncurses/ncurses/Makefile.in29
-rw-r--r--contrib/ncurses/ncurses/base/MKkeyname.awk30
-rwxr-xr-xcontrib/ncurses/ncurses/base/MKlib_gen.sh43
-rw-r--r--contrib/ncurses/ncurses/base/MKunctrl.awk6
-rw-r--r--contrib/ncurses/ncurses/base/keybound.c9
-rw-r--r--contrib/ncurses/ncurses/base/keyok.c64
-rw-r--r--contrib/ncurses/ncurses/base/lib_addch.c16
-rw-r--r--contrib/ncurses/ncurses/base/lib_addstr.c10
-rw-r--r--contrib/ncurses/ncurses/base/lib_beep.c11
-rw-r--r--contrib/ncurses/ncurses/base/lib_bkgd.c11
-rw-r--r--contrib/ncurses/ncurses/base/lib_chgat.c16
-rw-r--r--contrib/ncurses/ncurses/base/lib_color.c162
-rw-r--r--contrib/ncurses/ncurses/base/lib_colorset.c8
-rw-r--r--contrib/ncurses/ncurses/base/lib_dft_fgbg.c5
-rw-r--r--contrib/ncurses/ncurses/base/lib_driver.c22
-rw-r--r--contrib/ncurses/ncurses/base/lib_flash.c20
-rw-r--r--contrib/ncurses/ncurses/base/lib_freeall.c20
-rw-r--r--contrib/ncurses/ncurses/base/lib_getch.c39
-rw-r--r--contrib/ncurses/ncurses/base/lib_getstr.c6
-rw-r--r--contrib/ncurses/ncurses/base/lib_insch.c34
-rw-r--r--contrib/ncurses/ncurses/base/lib_instr.c16
-rw-r--r--contrib/ncurses/ncurses/base/lib_mouse.c417
-rw-r--r--contrib/ncurses/ncurses/base/lib_newterm.c20
-rw-r--r--contrib/ncurses/ncurses/base/lib_newwin.c17
-rw-r--r--contrib/ncurses/ncurses/base/lib_overlay.c21
-rw-r--r--contrib/ncurses/ncurses/base/lib_printw.c34
-rw-r--r--contrib/ncurses/ncurses/base/lib_refresh.c17
-rw-r--r--contrib/ncurses/ncurses/base/lib_restart.c10
-rw-r--r--contrib/ncurses/ncurses/base/lib_scanw.c6
-rw-r--r--contrib/ncurses/ncurses/base/lib_screen.c19
-rw-r--r--contrib/ncurses/ncurses/base/lib_scroll.c8
-rw-r--r--contrib/ncurses/ncurses/base/lib_set_term.c52
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkatr_set.c10
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkcolor.c10
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkrefr.c22
-rw-r--r--contrib/ncurses/ncurses/base/lib_slkset.c17
-rw-r--r--contrib/ncurses/ncurses/base/lib_touch.c6
-rw-r--r--contrib/ncurses/ncurses/base/lib_ungetch.c11
-rw-r--r--contrib/ncurses/ncurses/base/resizeterm.c83
-rw-r--r--contrib/ncurses/ncurses/base/safe_sprintf.c20
-rw-r--r--contrib/ncurses/ncurses/base/vsscanf.c8
-rw-r--r--contrib/ncurses/ncurses/base/wresize.c9
-rw-r--r--contrib/ncurses/ncurses/build.priv.h6
-rw-r--r--contrib/ncurses/ncurses/curses.priv.h327
-rw-r--r--contrib/ncurses/ncurses/fifo_defs.h46
-rw-r--r--contrib/ncurses/ncurses/llib-lncurses456
-rw-r--r--contrib/ncurses/ncurses/llib-lncursest424
-rw-r--r--contrib/ncurses/ncurses/llib-lncursestw562
-rw-r--r--contrib/ncurses/ncurses/llib-lncursesw568
-rw-r--r--contrib/ncurses/ncurses/llib-ltic212
-rw-r--r--contrib/ncurses/ncurses/llib-ltict212
-rw-r--r--contrib/ncurses/ncurses/llib-ltictw212
-rw-r--r--contrib/ncurses/ncurses/llib-lticw212
-rw-r--r--contrib/ncurses/ncurses/llib-ltinfo1526
-rw-r--r--contrib/ncurses/ncurses/llib-ltinfot1635
-rw-r--r--contrib/ncurses/ncurses/llib-ltinfotw1668
-rw-r--r--contrib/ncurses/ncurses/llib-ltinfow1559
-rw-r--r--contrib/ncurses/ncurses/modules8
-rw-r--r--contrib/ncurses/ncurses/tinfo/MKcaptab.sh10
-rw-r--r--contrib/ncurses/ncurses/tinfo/access.c43
-rw-r--r--contrib/ncurses/ncurses/tinfo/alloc_entry.c55
-rw-r--r--contrib/ncurses/ncurses/tinfo/alloc_ttype.c55
-rw-r--r--contrib/ncurses/ncurses/tinfo/captoinfo.c212
-rw-r--r--contrib/ncurses/ncurses/tinfo/comp_error.c20
-rw-r--r--contrib/ncurses/ncurses/tinfo/comp_expand.c19
-rw-r--r--contrib/ncurses/ncurses/tinfo/comp_parse.c187
-rw-r--r--contrib/ncurses/ncurses/tinfo/comp_scan.c171
-rw-r--r--contrib/ncurses/ncurses/tinfo/db_iterator.c429
-rw-r--r--contrib/ncurses/ncurses/tinfo/doalloc.c21
-rw-r--r--contrib/ncurses/ncurses/tinfo/entries.c11
-rw-r--r--contrib/ncurses/ncurses/tinfo/getenv_num.c21
-rw-r--r--contrib/ncurses/ncurses/tinfo/hashed_db.c163
-rw-r--r--contrib/ncurses/ncurses/tinfo/home_terminfo.c10
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_acs.c7
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_baudrate.c69
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_cur_term.c22
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_data.c15
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_has_cap.c8
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_napms.c12
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_options.c45
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_print.c10
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_raw.c35
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_setup.c164
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_termcap.c51
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_tgoto.c9
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_ti.c16
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_tparm.c31
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_tputs.c92
-rw-r--r--contrib/ncurses/ncurses/tinfo/lib_ttyflags.c10
-rw-r--r--contrib/ncurses/ncurses/tinfo/make_hash.c52
-rw-r--r--contrib/ncurses/ncurses/tinfo/make_keys.c6
-rw-r--r--contrib/ncurses/ncurses/tinfo/name_match.c42
-rw-r--r--contrib/ncurses/ncurses/tinfo/obsolete.c (renamed from contrib/ncurses/ncurses/base/memmove.c)59
-rw-r--r--contrib/ncurses/ncurses/tinfo/parse_entry.c40
-rw-r--r--contrib/ncurses/ncurses/tinfo/read_entry.c312
-rw-r--r--contrib/ncurses/ncurses/tinfo/read_termcap.c89
-rw-r--r--contrib/ncurses/ncurses/tinfo/setbuf.c169
-rw-r--r--contrib/ncurses/ncurses/tinfo/strings.c8
-rw-r--r--contrib/ncurses/ncurses/tinfo/tinfo_driver.c199
-rw-r--r--contrib/ncurses/ncurses/tinfo/trim_sgr0.c83
-rw-r--r--contrib/ncurses/ncurses/tinfo/write_entry.c108
-rw-r--r--contrib/ncurses/ncurses/trace/lib_trace.c23
-rw-r--r--contrib/ncurses/ncurses/trace/lib_traceatr.c49
-rw-r--r--contrib/ncurses/ncurses/trace/lib_tracebits.c24
-rw-r--r--contrib/ncurses/ncurses/trace/lib_tracechr.c15
-rw-r--r--contrib/ncurses/ncurses/trace/lib_tracedmp.c8
-rw-r--r--contrib/ncurses/ncurses/trace/lib_tracemse.c44
-rw-r--r--contrib/ncurses/ncurses/trace/trace_buf.c11
-rw-r--r--contrib/ncurses/ncurses/trace/trace_tries.c37
-rw-r--r--contrib/ncurses/ncurses/trace/varargs.c23
-rw-r--r--contrib/ncurses/ncurses/trace/visbuf.c50
-rw-r--r--contrib/ncurses/ncurses/tty/hardscroll.c24
-rw-r--r--contrib/ncurses/ncurses/tty/hashmap.c6
-rw-r--r--contrib/ncurses/ncurses/tty/lib_mvcur.c125
-rw-r--r--contrib/ncurses/ncurses/tty/lib_tstp.c55
-rw-r--r--contrib/ncurses/ncurses/tty/lib_twait.c64
-rw-r--r--contrib/ncurses/ncurses/tty/lib_vidattr.c91
-rw-r--r--contrib/ncurses/ncurses/tty/tty_display.h140
-rw-r--r--contrib/ncurses/ncurses/tty/tty_update.c268
-rw-r--r--contrib/ncurses/ncurses/wcwidth.h21
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_box_set.c6
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_cchar.c24
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_erasewchar.c8
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_get_wch.c9
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_get_wstr.c8
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_ins_wch.c6
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_inwstr.c11
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_slk_wset.c30
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_unget_wch.c6
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_vid_attr.c85
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_wacs.c36
-rw-r--r--contrib/ncurses/ncurses/widechar/lib_wunctrl.c17
-rw-r--r--contrib/ncurses/ncurses/widechar/widechars.c152
-rw-r--r--contrib/ncurses/ncurses/win32con/win_driver.c590
-rw-r--r--contrib/ncurses/panel/Makefile.in11
-rw-r--r--contrib/ncurses/panel/p_above.c6
-rw-r--r--contrib/ncurses/panel/p_below.c6
-rw-r--r--contrib/ncurses/panel/panel.c12
-rw-r--r--contrib/ncurses/panel/panel.priv.h8
-rw-r--r--contrib/ncurses/progs/Makefile.in33
-rwxr-xr-xcontrib/ncurses/progs/capconvert24
-rw-r--r--contrib/ncurses/progs/clear.c12
-rw-r--r--contrib/ncurses/progs/dump_entry.c247
-rw-r--r--contrib/ncurses/progs/dump_entry.h18
-rw-r--r--contrib/ncurses/progs/infocmp.c492
-rw-r--r--contrib/ncurses/progs/progs.priv.h22
-rw-r--r--contrib/ncurses/progs/tabs.c146
-rw-r--r--contrib/ncurses/progs/tic.c619
-rw-r--r--contrib/ncurses/progs/toe.c456
-rw-r--r--contrib/ncurses/progs/tput.c13
-rw-r--r--contrib/ncurses/progs/transform.c16
-rw-r--r--contrib/ncurses/progs/tset.c121
287 files changed, 35900 insertions, 17022 deletions
diff --git a/contrib/ncurses/COPYING b/contrib/ncurses/COPYING
new file mode 100644
index 000000000000..6e3b39483181
--- /dev/null
+++ b/contrib/ncurses/COPYING
@@ -0,0 +1,28 @@
+Copyright (c) 1998-2013,2014 Free Software Foundation, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, distribute with modifications, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
+THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name(s) of the above copyright
+holders shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization.
+
+-- vile:txtmode fc=72
+-- $Id: COPYING,v 1.2 2014/01/18 23:59:29 tom Exp $
diff --git a/contrib/ncurses/INSTALL b/contrib/ncurses/INSTALL
index eb26ab103ef8..9b0ac23d88b1 100644
--- a/contrib/ncurses/INSTALL
+++ b/contrib/ncurses/INSTALL
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: INSTALL,v 1.155 2011/03/31 08:27:24 tom Exp $
+-- $Id: INSTALL,v 1.168 2013/08/03 23:15:23 tom Exp $
---------------------------------------------------------------------
How to install Ncurses/Terminfo on your system
---------------------------------------------------------------------
@@ -315,6 +315,10 @@ SUMMARY OF CONFIGURE OPTIONS:
programs are useful in this configuration, e.g., reset and tput versus
infocmp and tic.
+ --disable-db-install
+ Do not install the terminal database. This is used to omit features
+ for packages, as done with --without-progs.
+
--disable-ext-funcs
Disable function-extensions. Configure ncurses without the functions
that are not specified by XSI. See ncurses/modules for the exact
@@ -407,13 +411,14 @@ SUMMARY OF CONFIGURE OPTIONS:
--disable-tic-depends
When building shared libraries, normally the tic library is linked to
- depend upon the ncurses library (and in turn, on the term-library if
- the --with-termlib option was given). The tic- and term-libraries
- ABI does not depend on the --enable-widec option. Some packagers have
- used this to reduce the number of library files which are packaged
- by using only one copy of those libraries. To make this work properly,
+ depend upon the ncurses library (or equivalently, on the tinfo-library
+ if the --with-termlib option was given). The tic- and tinfo-library
+ ABIs do not depend on the --enable-widec option. Some packagers have
+ used this to reduce the number of library files which are packaged by
+ using only one copy of those libraries. To make this work properly,
the tic library must be built without an explicit dependency on the
- ncurses (or ncursesw) library. Use this configure option to do that.
+ underlying library (ncurses vs ncursesw, tinfo vs tinfow). Use this
+ configure option to do that.
For example
configure --with-ticlib --with-shared --disable-tic-depends
@@ -555,6 +560,9 @@ SUMMARY OF CONFIGURE OPTIONS:
library by reducing global and static variables. This option is also
set if --with-pthread is used.
+ Enabling this option adds a "t" to the library names, except for the
+ special case when --enable-weak-symbols is also used.
+
--enable-rpath
Use rpath option when generating shared libraries, and (with some
restrictions) when linking the corresponding programs. This originally
@@ -595,6 +603,14 @@ SUMMARY OF CONFIGURE OPTIONS:
reducing the need for juggling the global SP value with set_term() and
delscreen().
+ --enable-string-hacks
+ Controls whether strlcat and strlcpy may be used. The same issue
+ applies to OpenBSD's warnings about snprintf, noting that this function
+ is weakly standardized.
+
+ Aside from stifling these warnings, there is no functional improvement
+ in ncurses.
+
--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
@@ -616,6 +632,12 @@ SUMMARY OF CONFIGURE OPTIONS:
match is found in the terminfo database. See also the --enable-getcap
and --enable-getcap-cache options.
+ Termcap support requires run-time parsing rather than loading
+ predigested data. If you have specified --with-ticlib, then you
+ cannot have termcap support since run-time parsing is done in the
+ tic library, which is intentionally not part of normal linkage
+ dependencies.
+
--enable-warnings
Turn on GCC compiler warnings. There should be only a few.
@@ -740,6 +762,12 @@ SUMMARY OF CONFIGURE OPTIONS:
executables, e.g., by setting "--with-chtype=long" (the configure
script supplies "unsigned").
+ --with-cxx-shared
+ When --with-shared is set, build libncurses++ as a shared library.
+ This implicitly relies upon building with gcc/g++, since other
+ compiler suites may have differences in the way shared libraries are
+ built. libtool by the way has similar limitations.
+
--with-database=XXX
Specify the terminfo source file to install. Usually you will wish
to install ncurses' default (misc/terminfo.src). Certain systems
@@ -824,7 +852,17 @@ SUMMARY OF CONFIGURE OPTIONS:
NOTE: a few systems build shared libraries with fixed pathnames; this
option probably will not work for those configurations.
- --with-libtool[=XXX]
+ --with-lib-prefix=XXX
+ OS/2 EMX used a different naming convention from most Unix-like
+ platforms. It required that the "lib" part of a library name was
+ omitted. Newer EMX as part of eComStation does not follow that
+ convention. Use this option to override the configure script's
+ assumptions about the library-prefix. If this option is omitted, it
+ uses the original OS/2 EMX convention for that platform. Use
+ "--with-lib-prefix=lib" for the newer EMX in eComStation. Use
+ "--without-lib-prefix" to suppress it for other odd platforms.
+
+ --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,
@@ -904,6 +942,10 @@ SUMMARY OF CONFIGURE OPTIONS:
--with-pkg-config=[DIR]
Check for pkg-config, optionally specifying its path.
+ --with-pkg-config-libdir=[DIR]
+ If pkg-config was found, override the automatic check for its library
+ path.
+
--with-profile
Generate profile-libraries These are named by adding "_p" to the root,
e.g., libncurses_p.a
@@ -996,10 +1038,27 @@ SUMMARY OF CONFIGURE OPTIONS:
library dependencies for tic and other programs built with the tic
library.
+ --with-tparm-arg[=XXX]
+ Override the type used for tparm() arguments, which normally is a
+ "long". However the function must assume that its arguments can hold a
+ pointer to char's which is not always workable for 64-bit platforms. A
+ better choice would be intptr_t, which was not available at the time
+ tparm's interface was defined.
+
+ If the option is not given, this defaults to "long".
+
--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-xterm-kbs=XXX
+ Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII
+ backspace) or DEL (^?, or 127). XXX can be BS (or bs, 8) or DEL
+ (or del, 127).
+
+ During installation, the makefile and scripts modifies the "xterm+kbs"
+ terminfo entry to use this setting.
+
--with-valgrind
For testing, compile with debug option.
This also sets the --disable-leaks option.
@@ -1024,6 +1083,8 @@ SUMMARY OF CONFIGURE OPTIONS:
install as "ncurses.h" and modify the installed headers and manpages
accordingly.
+ Likewise, do not install an alias "curses" for the ncurses manpage.
+
--without-cxx
XSI curses declares "bool" as part of the interface. C++ also declares
"bool". Neither specifies the size and type of booleans, but both
@@ -1726,20 +1787,37 @@ CONFIGURING FALLBACK ENTRIES:
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
+ ncurses/tinfo/MKfallback.sh. The 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
+ might use the commands
cd ncurses;
- tinfo/MKfallback.sh linux vt100 xterm >fallback.c
+ tinfo/MKfallback.sh \
+ $TERMINFO \
+ ../misc/terminfo.src \
+ `which tic` \
+ linux vt100 xterm >fallback.c
+
+ The first three parameters of the script are normally supplied by
+ the configured makefiles via the "--with-fallbacks" option. They
+ are
+
+ 1) the location of the terminfo database
+ 2) the source for the terminfo entries
+ 3) the location of the tic program, used to create a terminfo
+ database.
Then just rebuild and reinstall the library as you would normally.
You can restore the default empty fallback list with
- tinfo/MKfallback.sh >fallback.c
+ tinfo/MKfallback.sh \
+ $TERMINFO \
+ ../misc/terminfo.src \
+ `which tic` \
+ >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
diff --git a/contrib/ncurses/MANIFEST b/contrib/ncurses/MANIFEST
index 421cc678cd6b..e35f9854ccc9 100644
--- a/contrib/ncurses/MANIFEST
+++ b/contrib/ncurses/MANIFEST
@@ -190,6 +190,7 @@
./Ada95/src/terminal_interface-curses-text_io.ads
./Ada95/src/terminal_interface-curses-trace.adb_p
./Ada95/src/terminal_interface.ads
+./COPYING
./INSTALL
./MANIFEST
./Makefile.in
@@ -545,6 +546,8 @@
./include/nc_alloc.h
./include/nc_mingw.h
./include/nc_panel.h
+./include/nc_string.h
+./include/nc_termios.h
./include/nc_tparm.h
./include/ncurses_cfg.hin
./include/ncurses_defs
@@ -656,6 +659,8 @@
./man/legacy_coding.3x
./man/make_sed.sh
./man/man_db.renames
+./man/manhtml.aliases
+./man/manhtml.externs
./man/manlinks.sed
./man/menu.3x
./man/menu_attributes.3x
@@ -764,7 +769,6 @@
./mk-0th.awk
./mk-1st.awk
./mk-2nd.awk
-./mk-dlls.sh.in
./mk-hdr.awk
./ncurses/Makefile.in
./ncurses/README
@@ -850,7 +854,6 @@
./ncurses/base/lib_wattron.c
./ncurses/base/lib_winch.c
./ncurses/base/lib_window.c
-./ncurses/base/memmove.c
./ncurses/base/nc_panel.c
./ncurses/base/resizeterm.c
./ncurses/base/safe_sprintf.c
@@ -867,6 +870,14 @@
./ncurses/llib-lncursest
./ncurses/llib-lncursestw
./ncurses/llib-lncursesw
+./ncurses/llib-ltic
+./ncurses/llib-ltict
+./ncurses/llib-ltictw
+./ncurses/llib-lticw
+./ncurses/llib-ltinfo
+./ncurses/llib-ltinfot
+./ncurses/llib-ltinfotw
+./ncurses/llib-ltinfow
./ncurses/modules
./ncurses/tinfo/MKcaptab.awk
./ncurses/tinfo/MKcaptab.sh
@@ -915,10 +926,10 @@
./ncurses/tinfo/make_hash.c
./ncurses/tinfo/make_keys.c
./ncurses/tinfo/name_match.c
+./ncurses/tinfo/obsolete.c
./ncurses/tinfo/parse_entry.c
./ncurses/tinfo/read_entry.c
./ncurses/tinfo/read_termcap.c
-./ncurses/tinfo/setbuf.c
./ncurses/tinfo/strings.c
./ncurses/tinfo/tinfo_driver.c
./ncurses/tinfo/trim_sgr0.c
@@ -943,8 +954,6 @@
./ncurses/tty/lib_tstp.c
./ncurses/tty/lib_twait.c
./ncurses/tty/lib_vidattr.c
-./ncurses/tty/tty_display.h
-./ncurses/tty/tty_input.h
./ncurses/tty/tty_update.c
./ncurses/wcwidth.h
./ncurses/widechar/charable.c
@@ -967,9 +976,34 @@
./ncurses/widechar/lib_vline_set.c
./ncurses/widechar/lib_wacs.c
./ncurses/widechar/lib_wunctrl.c
+./ncurses/widechar/widechars.c
./ncurses/win32con/gettimeofday.c
./ncurses/win32con/wcwidth.c
./ncurses/win32con/win_driver.c
+./package/debian-mingw/changelog
+./package/debian-mingw/compat
+./package/debian-mingw/control
+./package/debian-mingw/copyright
+./package/debian-mingw/rules
+./package/debian-mingw/source/format
+./package/debian-mingw/watch
+./package/debian-mingw64/changelog
+./package/debian-mingw64/compat
+./package/debian-mingw64/control
+./package/debian-mingw64/copyright
+./package/debian-mingw64/rules
+./package/debian-mingw64/source/format
+./package/debian-mingw64/watch
+./package/debian/changelog
+./package/debian/compat
+./package/debian/control
+./package/debian/copyright
+./package/debian/rules
+./package/debian/source/format
+./package/debian/watch
+./package/mingw-ncurses.nsi
+./package/mingw-ncurses.spec
+./package/ncurses.spec
./panel/Makefile.in
./panel/headers
./panel/llib-lpanel
@@ -1022,12 +1056,14 @@
./test/cardfile.dat
./test/chgat.c
./test/clip_printw.c
+./test/color_name.h
./test/color_set.c
./test/configure
./test/configure.in
./test/demo_altkeys.c
./test/demo_defkey.c
./test/demo_forms.c
+./test/demo_forms.txt
./test/demo_keyok.c
./test/demo_menus.c
./test/demo_panels.c
@@ -1036,6 +1072,7 @@
./test/ditto.c
./test/dots.c
./test/dots_mvcur.c
+./test/dots_termcap.c
./test/echochar.c
./test/edit_field.c
./test/edit_field.h
@@ -1043,6 +1080,7 @@
./test/firework.c
./test/firstlast.c
./test/foldkeys.c
+./test/form_driver_w.c
./test/gdc.6
./test/gdc.c
./test/hanoi.c
@@ -1073,6 +1111,7 @@
./test/package/debian/rules
./test/package/debian/source/format
./test/package/debian/watch
+./test/package/mingw-ncurses-examples.spec
./test/package/ncurses-examples.spec
./test/programs
./test/railroad.c
@@ -1092,12 +1131,15 @@
./test/test_instr.c
./test/test_inwstr.c
./test/test_opaque.c
+./test/test_vid_puts.c
+./test/test_vidputs.c
./test/testaddch.c
./test/testcurs.c
./test/testscanw.c
./test/tracemunch
./test/view.c
./test/widechars-utf8.txt
+./test/widechars.h
./test/worm.c
./test/xmas.c
./test/xterm-16color.dat
diff --git a/contrib/ncurses/Makefile.in b/contrib/ncurses/Makefile.in
index d891e002fd83..803746c2b6a7 100644
--- a/contrib/ncurses/Makefile.in
+++ b/contrib/ncurses/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.30 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.38 2014/01/18 20:19:45 tom Exp $
##############################################################################
-# Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -27,7 +27,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey 1996-on
#
# Master Makefile for ncurses library.
@@ -35,7 +35,8 @@ SHELL = /bin/sh
VPATH = @srcdir@
DESTDIR=@DESTDIR@
-CF_MFLAGS = @cf_cv_makeflags@ DESTDIR="$(DESTDIR)"
+RPATH_LIST=@RPATH_LIST@
+TOP_MFLAGS = @cf_cv_makeflags@ DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)"
@SET_MAKE@
@@ -48,13 +49,17 @@ srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
bindir = @bindir@
ticdir = @TERMINFO@
includedir = @includedir@
+includesubdir = @includesubdir@
libdir = @libdir@
mandir = @mandir@
+include_dir = ${includedir}${includesubdir}
+
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
@@ -74,25 +79,22 @@ preinstall :
@ echo ''
@ echo ' bin directory: '$(bindir)
@ echo ' lib directory: '$(libdir)
- @ echo ' include directory: '$(includedir)
+ @ echo ' include directory: '$(include_dir)
@ echo ' man directory: '$(mandir)
@MAKE_TERMINFO@ @ echo ' terminfo directory: '$(ticdir)
@ echo ''
- @ test "$(includedir)" = "$(prefix)/include" || \
+ @ test "$(include_dir)" = "$(prefix)/include" || \
echo '** Include-directory is not in a standard location'
- @ test ! -f $(includedir)/termcap.h || \
- fgrep NCURSES_VERSION $(includedir)/termcap.h >/dev/null || \
+ @ test ! -f $(include_dir)/termcap.h || \
+ fgrep NCURSES_VERSION $(include_dir)/termcap.h >/dev/null || \
echo '** Will overwrite non-ncurses termcap.h'
- @ test ! -f $(includedir)/curses.h || \
- fgrep NCURSES_VERSION $(includedir)/curses.h >/dev/null || \
+ @ test ! -f $(include_dir)/curses.h || \
+ fgrep NCURSES_VERSION $(include_dir)/curses.h >/dev/null || \
echo '** Will overwrite non-ncurses curses.h'
-dlls: libs
- $(SHELL) $(srcdir)/mk-dlls.sh
-
distclean \
realclean ::
- -rm -f mk-dlls.sh mingw_arch
+
# Put the common rules here so that we can easily construct the list of
# directories to visit.
diff --git a/contrib/ncurses/NEWS b/contrib/ncurses/NEWS
index e8f9cefbabdd..e7cbd9bf1c56 100644
--- a/contrib/ncurses/NEWS
+++ b/contrib/ncurses/NEWS
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: NEWS,v 1.1682 2011/04/04 00:02:42 tom Exp $
+-- $Id: NEWS,v 1.2172 2014/02/23 01:19:35 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@@ -45,6 +45,1360 @@ 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.
+20140222
+ + fix some compiler warnings in win_driver.c
+ + updated notes for wsvt25 based on tack and vttest -TD
+ + add teken entry to show actual properties of FreeBSD's "xterm"
+ console -TD
+
+20140215
+ + in-progress changes to win_driver.c to implement output without
+ allocating a console-buffer. This uses a pre-existing environment
+ variable NCGDB used by Juergen Pfeifer for debugging (prompted by
+ discussion with Erwin Waterlander regarding Console2, which hangs
+ when reading in an allocated console-buffer).
+ + add -t option to gdc.c, and modify to accept "S" to step through the
+ scrolling-stages.
+ + regenerate NCURSES-Programming-HOWTO.html to fix some of the broken
+ html emitted by docbook.
+
+20140209
+ + modify CF_XOPEN_SOURCE macro to omit followup check to determine if
+ _XOPEN_SOURCE can/should be defined. g++ 4.7.2 built on Solaris 10
+ has some header breakage due to its own predefinition of this symbol
+ (report by Jean-Pierre Flori, Sage #15796).
+
+20140201
+ + add/use symbol NCURSES_PAIRS_T like NCURSES_COLOR_T, to illustrate
+ which "short" types are for color pairs and which are color values.
+ + fix build for s390x, by correcting field bit offsets in generated
+ representation clauses when int=32 long=64 and endian=big, or at
+ least on s390x (patch by Nicolas Boulenguez).
+ + minor cleanup change to test/form_driver_w.c (patch by Gaute Hope).
+
+20140125
+ + remove unnecessary ifdef's in Ada95/gen/gen.c, which reportedly do
+ not work as is with gcc 4.8 due to fixes using chtype cast made for
+ new compiler warnings by gcc 4.8 in 20130824 (Debian #735753, patch
+ by Nicolas Boulenguez).
+
+20140118
+ + apply includesubdir variable which was introduced in 20130805 to
+ gen-pkgconfig.in (Debian #735782).
+
+20131221
+ + further improved man2html, used this to fix broken links in html
+ manpages. See
+ ftp://invisible-island.net/ncurses/patches/man2html
+
+20131214
+ + modify configure-script/ifdef's to allow OLD_TTY feature to be
+ suppressed if the type of ospeed is configured using the option
+ --with-ospeed to not be a short. By default, it is a short for
+ termcap-compatibility (adapted from suggestion by Christian
+ Weisgerber).
+ + correct a typo in _nc_baudrate() (patch by Christian Weisgerber,
+ cf: 20061230).
+ + fix a few -Wlogical-op warnings.
+ + updated llib-l* files.
+
+20131207
+ + add form_driver_w() entrypoint to wide-character forms library, as
+ well as test program form_driver_w (adapted from patch by Gaute
+ Hope).
+
+20131123
+ + minor fix for CF_GCC_WARNINGS to special-case options which are not
+ recognized by clang.
+
+20131116
+ + add special case to configure script to move _XOPEN_SOURCE_EXTENDED
+ definition from CPPFLAGS to CFLAGS if it happens to be needed for
+ Solaris, because g++ errors with that definition (report by
+ Jean-Pierre Flori, Sage #15268).
+ + correct logic in infocmp's -i option which was intended to ignore
+ strings which correspond to function-keys as candidates for piecing
+ together initialization- or reset-strings. The problem dates to
+ 1.9.7a, but was overlooked until changes in -Wlogical-op warnings for
+ gcc 4.8 (report by David Binderman).
+ + updated CF_GCC_WARNINGS to documented options for gcc 4.9.0, adding
+ checks for -Wextra, -Wignored-qualifiers and -Wlogical-op
+ + updated CF_GCC_WARNINGS to documented options for gcc 4.9.0, moving
+ checks for -Wextra and -Wdeclaration-after-statement into the macro,
+ and adding checks for -Wignored-qualifiers, -Wlogical-op and
+ -Wvarargs
+ + updated CF_CURSES_UNCTRL_H and CF_SHARED_OPTS macros from ongoing
+ work on cdk.
+ + update config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20131110
+ + minor cleanup of terminfo.tail
+
+20131102
+ + use TS extension to describe xterm's title-escapes -TD
+ + modify terminator and nsterm-s to use xterm+sl-twm building block -TD
+ + update hurd.ti, add xenl to reflect 2011-03-06 change in
+ http://git.savannah.gnu.org/cgit/hurd/hurd.git/log/console/display.c
+ (Debian #727119).
+ + simplify pfkey expression in ansi.sys -TD
+
+20131027
+ + correct/simplify ifdef's for cur_term versus broken-linker and
+ reentrant options (report by Jean-Pierre Flori, cf: 20090530).
+ + modify release/version combinations in test build-scripts to make
+ them more consistent with other packages.
+
+20131019
+ + add nc_mingw.h to installed headers for MinGW port; needed for
+ compiling ncurses-examples.
+ + add rpm-script for testing cross-compile of ncurses-examples.
+
+20131014
+ + fix new typo in CF_ADA_INCLUDE_DIRS macro (report by Roumen Petrov).
+
+20131012
+ + fix a few compiler warnings in progs and test.
+ + minor fix to package/debian-mingw/rules, do not strip dll's.
+ + minor fixes to configure script for empty $prefix, e.g., when doing
+ cross-compiles to MinGW.
+ + add script for building test-packages of binaries cross-compiled to
+ MinGW using NSIS.
+
+20131005
+ + minor fixes for ncurses-example package and makefile.
+ + add scripts for test-builds of cross-compiler packages for ncurses6
+ to MinGW.
+
+20130928
+ + some build-fixes for ncurses-examples with NetBSD-6.0 curses, though
+ it lacks some common functions such as use_env() which is not yet
+ addressed.
+ + build-fix and some compiler warning fixes for ncurses-examples with
+ OpenBSD 5.3
+ + fix a possible null-pointer reference in a trace message from newterm.
+ + quiet a few warnings from NetBSD 6.0 namespace pollution by
+ nonstandard popcount() function in standard strings.h header.
+ + ignore g++ 4.2.1 warnings for "-Weffc++" in c++/cursesmain.cc
+ + fix a few overlooked places for --enable-string-hacks option.
+
+20130921
+ + fix typo in curs_attr.3x (patch by Sven Joachim, cf: 20130831).
+ + build-fix for --with-shared option for DragonFly and FreeBSD (report
+ by Rong-En Fan, cf: 20130727).
+
+20130907
+ + build-fixes for MSYS for two test-programs (patches by Ray Donnelly,
+ Alexey Pavlov).
+ + revert change to two of the dpkg format files, to work with dpkg
+ before/after Debian #700177.
+ + fix gcc -Wconversion warning in wattr_get() macro.
+ + add msys and msysdll to known host/configuration types (patch by
+ Alexey Pavlov).
+ + modify CF_RPATH_HACK configure macro to not rely upon "-u" option
+ of sort, improving portability.
+ + minor improvements for test-programs from reviewing Solaris port.
+ + update config.guess, config.sub from
+ http://git.savannah.gnu.org/cgit/config.git
+
+20130831
+ + modify test/ncurses.c b/B tests to display lines only for the
+ attributes which a given terminal supports, to make room for an
+ italics test.
+ + completed ncv table in terminfo.tail; it did not list the wide
+ character codes listed in X/Open Curses issue 7.
+ + add A_ITALIC extension (prompted by discussion with Egmont Koblinger).
+
+20130824
+ + fix some gcc 4.8 -Wconversion warnings.
+ + change format of dpkg test-scripts to quilted to work around bug
+ introduced by Debian #700177.
+ + discard cached keyname() values if meta() is changed after a value
+ was cached using (report by Kurban Mallachiev).
+
+20130816
+ + add checks in tic to warn about terminals which lack cursor
+ addressing, capabilities or having those, are marked as hard_copy or
+ generic_type.
+ + use --without-progs in mingw-ncurses rpm.
+ + split out _nc_init_termtype() from alloc_entry.c to use in MinGW
+ port when tic and other programs are not needed.
+
+20130805
+ + minor fixes to the --disable-overwrite logic, to ensure that the
+ configured $(includedir) is not cancelled by the mingwxx-filesystem
+ rpm macros.
+ + add --disable-db-install configure option, to simplify building
+ cross-compile support packages.
+ + add mingw-ncurses.spec file, for testing cross-compiles.
+
+20130727
+ + improve configure macros from ongoing work on cdk, dialog, xterm:
+ + CF_ADD_LIB_AFTER - fix a problem with -Wl options
+ + CF_RPATH_HACK - add missing result-message
+ + CF_SHARED_OPTS - modify to use $rel_builddir in cygwin and mingw
+ dll symbols (which can be overridden) rather than explicit "../".
+ + CF_SHARED_OPTS - modify NetBSD and DragonFly symbols to use ${CC}
+ rather than ${LD} to improve rpath support.
+ + CF_SHARED_OPTS - add a symbol to denote the temporary files that
+ are created by the macro, to simplify clean-rules.
+ + CF_X_ATHENA - trim extra libraries to work with -Wl,--as-needed
+ + fix a regression in hashed-database support for NetBSD, which uses
+ the key-size differently from other implementations (cf: 20121229).
+
+20130720
+ + further improvements for setupterm manpage, clarifying the
+ initialization of cur_term.
+
+20130713
+ + improve manpages for initscr and setupterm.
+ + minor compiler-warning fixes
+
+20130706
+ + add fallback defs for <inttypes.h> and <stdint.h> (cf: 20120225).
+ + add check for size of wchar_t, use that to suppress a chunk of
+ wcwidth.h in MinGW port.
+ + quiet linker warnings for MinGW cross-compile with dll's using the
+ --enable-auto-import flag.
+ + add ncurses.map rule to ncurses/Makefile to help diagnose symbol
+ table issues.
+
+20130622
+ + modify the clear program to take into account the E3 extended
+ capability to clear the terminal's scrollback buffer (patch by
+ Miroslav Lichvar, Redhat #815790).
+ + clarify in resizeterm manpage that LINES and COLS are updated.
+ + updated ansi example in terminfo.tail, correct misordered example
+ of sgr.
+ + fix other doclifter warnings for manpages
+ + remove unnecessary ".ta" in terminfo.tail, add missing ".fi"
+ (patch by Eric Raymond).
+
+20130615
+ + minor changes to some configure macros to make them more reusable.
+ + fixes for tabs program (prompted by report by Nick Andrik):
+ + corrected logic in command-line parsing of -a and -c predefined
+ tab-lists options.
+ + allow "-0" and "-8" options to be combined with others, e.g.,"-0d".
+ + make warning messages more consistent with the other utilities by
+ not printing the full pathname of the program.
+ + add -V option for consistency with other utilities.
+ + fix off-by-one in columns for tabs program when processing an option
+ such as "-5" (patch by Nick Andrik).
+
+20130608
+ + add to test/demo_forms.c examples of using the menu-hooks as well
+ as showing how the menu item user-data can be used to pass a callback
+ function pointer.
+ + add test/dots_termcap.c
+ + remove setupterm call from test/demo_termcap.c
+ + build-fix if --disable-ext-funcs configure option is used.
+ + modified test/edit_field.c and test/demo_forms.c to move the lengths
+ into a user-data structure, keeping the original string for later
+ expansion to free-format input/out demo.
+ + modified test/demo_forms.c to load data from file.
+ + added note to clarify Terminal.app's non-emulation of the various
+ terminal types listed in the preferences dialog -TD
+ + fix regression in error-reporting in lib_setup.c (Debian #711134,
+ cf: 20121117).
+ + build-fix for a case where --enable-broken_linker and
+ --enable-reentrant options are combined (report by George R Goffe).
+
+20130525
+ + modify mvcur() to distinguish between internal use by the ncurses
+ library, and external callers, preventing it from reading the content
+ of the screen which is only nonblank when curses calls have updated
+ it. This makes test/dots_mvcur.c avoid painting colored cells in
+ the left margin of the display.
+ + minor fix to test/dots_mvcur.c
+ + move configured symbols USE_DATABASE and USE_TERMCAP to term.h as
+ NCURSES_USE_DATABASE and NCURSES_USE_TERMCAP to allow consistent
+ use of these symbols in term_entry.h
+
+20130518
+ + corrected ifdefs in test/testcurs.c to allow comparison of mouse
+ interface versus pdcurses (cf: 20130316).
+ + add pow() to configure-check for math library, needed since
+ 20121208 for test/hanoi (Debian #708056).
+ + regenerated html manpages.
+ + update doctype used for html documentation.
+
+20130511
+ + move nsterm-related entries out of "obsolete" section to more
+ plausible "ansi consoles" -TD
+ + additional cleanup of table-of-contents by reordering -TD
+ + revise fix for check for 8-bit value in _nc_insert_ch(); prior fix
+ prevented inserts when video attributes were attached to the data
+ (cf: 20121215) (Redhat #959534).
+
+20130504
+ + fixes for issues found by Coverity:
+ + correct FNKEY() macro in progs/dump_entry.c, allowing kf11-kf63 to
+ display when infocmp's -R option is used for HP or AIX subsets.
+ + fix dead-code issue with test/movewindow.c
+ + improve limited-checking in _nc_read_termtype().
+
+20130427
+ + fix clang 3.2 warning in progs/dump_entry.c
+ + drop AC_TYPE_SIGNAL check; ncurses relies on c89 and later.
+
+20130413
+ + add MinGW to cases where ncurses installs by default into /usr
+ (prompted by discussion with Daniel Silva Ferreira).
+ + add -D option to infocmp's usage-message (patch by Miroslav Lichvar).
+ + add a missing 'int' type for main function in configure check for
+ type of bool variable, to work with clang 3.2 (report by Dmitri
+ Gribenko).
+ + improve configure check for static_cast, to work with clang 3.2
+ (report by Dmitri Gribenko).
+ + re-order rule for demo.o and macros defining header dependencies in
+ c++/Makefile.in to accommodate gmake (report by Dmitri Gribenko).
+
+20130406
+ + improve parameter checking in copywin().
+ + modify configure script to work around OS X's "libtool" program, to
+ choose glibtool instead. At the same time, chance the autoconf macro
+ to look for a "tool" rather than a "prog", to help with potential use
+ in cross-compiling.
+ + separate the rpath usage for c++ library from demo program
+ (Redhat #911540)
+ + update/correct header-dependencies in c++ makefile (report by Werner
+ Fink).
+ + add --with-cxx-shared to dpkg-script, as done for rpm-script.
+
+20130324
+ + build-fix for libtool configuration (reports by Daniel Silva Ferreira
+ and Roumen Petrov).
+
+20130323
+ + build-fix for OS X, to handle changes for --with-cxx-shared feature
+ (report by Christian Ebert).
+ + change initialization for vt220, similar entries for consistency
+ with cursor-key strings (NetBSD #47674) -TD
+ + further improvements to linux-16color (Benjamin Sittler)
+
+20130316
+ + additional fix for tic.c, to allocate missing buffer space.
+ + eliminate configure-script warnings for gen-pkgconfig.in
+ + correct typo in sgr string for sun-color,
+ add bold for consistency with sgr,
+ change smso for consistency with sgr -TD
+ + correct typo in sgr string for terminator -TD
+ + add blink to the attributes masked by ncv in linux-16color (report
+ by Benjamin Sittler)
+ + improve warning message from post-load checking for missing "%?"
+ operator by tic/infocmp by showing the entry name and capability.
+ + minor formatting improvement to tic/infocmp -f option to ensure
+ line split after "%;".
+ + amend scripting for --with-cxx-shared option to handle the debug
+ library "libncurses++_g.a" (report by Sven Joachim).
+
+20130309
+ + amend change to toe.c for reading from /dev/zero, to ensure that
+ there is a buffer for the temporary filename (cf: 20120324).
+ + regenerated html manpages.
+ + fix typo in terminfo.head (report by Sven Joachim, cf: 20130302).
+ + updated some autoconf macros:
+ + CF_ACVERSION_CHECK, from byacc 1.9 20130304
+ + CF_INTEL_COMPILER, CF_XOPEN_SOURCE from luit 2.0-20130217
+ + add configure option --with-cxx-shared to permit building
+ libncurses++ as a shared library when using g++, e.g., the same
+ limitations as libtool but better integrated with the usual build
+ configuration (Redhat #911540).
+ + modify MKkey_defs.sh to filter out build-path which was unnecessarily
+ shown in curses.h (Debian #689131).
+
+20130302
+ + add section to terminfo manpage discussing user-defined capabilities.
+ + update manpage description of NCURSES_NO_SETBUF, explaining why it
+ is obsolete.
+ + add a check in waddch_nosync() to ensure that tab characters are
+ treated as control characters; some broken locales claim they are
+ printable.
+ + add some traces to the Windows console driver.
+ + initialize a temporary array in _nc_mbtowc, needed for some cases
+ of raw input in MinGW port.
+
+20130218
+ + correct ifdef on change to lib_twait.c (report by Werner Fink).
+ + update config.guess, config.sub
+
+20130216
+ + modify test/testcurs.c to work with mouse for ncurses as it does for
+ pdcurses.
+ + modify test/knight.c to work with mouse for pdcurses as it does for
+ ncurses.
+ + modify internal recursion in wgetch() which handles cooked mode to
+ check if the call to wgetnstr() returned an error. This can happen
+ when both nocbreak() and nodelay() are set, for instance (report by
+ Nils Christopher Brause) (cf: 960418).
+ + fixes for issues found by Coverity:
+ + add a check for valid position in ClearToEOS()
+ + fix in lib_twait.c when --enable-wgetch-events is used, pointer
+ use after free.
+ + improve a limit-check in make_hash.c
+ + fix a memory leak in hashed_db.c
+
+20130209
+ + modify test/configure script to make it simpler to override names
+ of curses-related libraries, to help with linking with pdcurses in
+ MinGW environment.
+ + if the --with-terminfo-dirs configure option is not used, there is
+ no corresponding compiled-in value for that. Fill in "no default
+ value" for that part of the manpage substitution.
+
+20130202
+ + correct initialization in knight.c which let it occasionally make
+ an incorrect move (cf: 20001028).
+ + improve documentation of the terminfo/termcap search path.
+
+20130126
+ + further fixes to mvcur to pass callback function (cf: 20130112),
+ needed to make test/dots_mvcur work.
+ + reduce calls to SetConsoleActiveScreenBuffer in win_driver.c, to
+ help reduce flicker.
+ + modify configure script to omit "+b" from linker options for very
+ old HP-UX systems (report by Dennis Grevenstein)
+ + add HP-UX workaround for missing EILSEQ on old HP-UX systems (patch
+ by Dennis Grevenstein).
+ + restore memmove/strdup support for antique systems (request by
+ Dennis Grevenstein).
+ + change %l behavior in tparm to push the string length onto the stack
+ rather than saving the formatted length into the output buffer
+ (report by Roy Marples, cf: 980620).
+
+20130119
+ + fixes for issues found by Coverity:
+ + fix memory leak in safe_sprintf.c
+ + add check for return-value in tty_update.c
+ + correct initialization for -s option in test/view.c
+ + add check for numeric overflow in lib_instr.c
+ + improve error-checking in copywin
+ + add advice in infocmp manpage for termcap users (Debian #698469).
+ + add "-y" option to test/demo_termcap and test/demo_terminfo to
+ demonstrate behavior with/without extended capabilities.
+ + updated termcap manpage to document legacy termcap behavior for
+ matching capability names.
+ + modify name-comparison for tgetstr, etc., to accommodate legacy
+ applications as well as to improve compatbility with BSD 4.2
+ termcap implementations (Debian #698299) (cf: 980725).
+
+20130112
+ + correct prototype in manpage for vid_puts.
+ + drop ncurses/tty/tty_display.h, ncurses/tty/tty_input.h, since they
+ are unused in the current driver model.
+ + modify mvcur to use stdout except when called within the ncurses
+ library.
+ + modify vidattr and vid_attr to use stdout as documented in manpage.
+ + amend changes made to buffering in 20120825 so that the low-level
+ putp() call uses stdout rather than ncurses' internal buffering.
+ The putp_sp() call does the same, for consistency (Redhat #892674).
+
+20130105
+ + add "-s" option to test/view.c to allow it to start in single-step
+ mode, reducing size of trace files when it is used for debugging
+ MinGW changes.
+ + revert part of 20121222 change to tinfo_driver.c
+ + add experimental logic in win_driver.c to improve optimization of
+ screen updates. This does not yet work with double-width characters,
+ so it is ifdef'd out for the moment (prompted by report by Erwin
+ Waterlander regarding screen flicker).
+
+20121229
+ + fix coverity warnings regarding copying into fixed-size buffers.
+ + add throw-declarations in the c++ binding per Coverity warning.
+ + minor changes to new-items for consistent reference to bug-report
+ numbers.
+
+20121222
+ + add *.dSYM directories to clean-rule in ncurses directory makefile,
+ for Mac OS builds.
+ + add a configure check for gcc option -no-cpp-precomp, which is not
+ available in all Mac OS X configurations (report by Andras Salamon,
+ cf: 20011208).
+ + improve 20021221 workaround for broken acs, handling a case where
+ that ACS_xxx character is not in the acsc string but there is a known
+ wide-character which can be used.
+
+20121215
+ + fix several warnings from clang 3.1 --analyze, includes correcting
+ a null-pointer check in _nc_mvcur_resume.
+ + correct display of double-width characters with MinGW port (report
+ by Erwin Waterlander).
+ + replace MinGW's wcrtomb(), fixing a problem with _nc_viscbuf
+ > fixes based on Coverity report:
+ + correct coloring in test/bs.c
+ + correct check for 8-bit value in _nc_insert_ch().
+ + remove dead code in progs/tset.c, test/linedata.h
+ + add null-pointer checks in lib_tracemse.c, panel.priv.h, and some
+ test-programs.
+
+20121208
+ + modify test/knight.c to show the number of choices possible for
+ each position in automove option, e.g., to allow user to follow
+ Warnsdorff's rule to solve the puzzle.
+ + modify test/hanoi.c to show the minimum number of moves possible for
+ the given number of tiles (prompted by patch by Lucas Gioia).
+ > fixes based on Coverity report:
+ + remove a few redundant checks.
+ + correct logic in test/bs.c, when randomly placing a specific type of
+ ship.
+ + check return value from remove/unlink in tic.
+ + check return value from sscanf in test/ncurses.c
+ + fix a null dereference in c++/cursesw.cc
+ + fix two instances of uninitialized variables when configuring for the
+ terminal driver.
+ + correct scope of variable used in SetSafeOutcWrapper macro.
+ + set umask when calling mkstemp in tic.
+ + initialize wbkgrndset() temporary variable when extended-colors are
+ used.
+
+20121201
+ + also replace MinGW's wctomb(), fixing a problem with setcchar().
+ + modify test/view.c to load UTF-8 when built with MinGW by using
+ regular win32 API because the MinGW functions mblen() and mbtowc()
+ do not work.
+
+20121124
+ + correct order of color initialization versus display in some of the
+ test-programs, e.g., test_addstr.c
+ > fixes based on Coverity report:
+ + delete windows on exit from some of the test-programs.
+
+20121117
+ > fixes based on Coverity report:
+ + add missing braces around FreeAndNull in two places.
+ + various fixes in test/ncurses.c
+ + improve limit-checks in tinfo/make_hash.c, tinfo/read_entry.c
+ + correct malloc size in progs/infocmp.c
+ + guard against negative array indices in test/knight.c
+ + fix off-by-one limit check in test/color_name.h
+ + add null-pointer check in progs/tabs.c, test/bs.c, test/demo_forms.c,
+ test/inchs.c
+ + fix memory-leak in tinfo/lib_setup.c, progs/toe.c,
+ test/clip_printw.c, test/demo_menus.c
+ + delete unused windows in test/chgat.c, test/clip_printw.c,
+ test/insdelln.c, test/newdemo.c on error-return.
+
+20121110
+ + modify configure macro CF_INCLUDE_DIRS to put $CPPFLAGS after the
+ local -I include options in case someone has set conflicting -I
+ options in $CPPFLAGS (prompted by patch for ncurses/Makefile.in by
+ Vassili Courzakis).
+ + modify the ncurses*-config scripts to eliminate relative paths from
+ the RPATH_LIST variable, e.g., "../lib" as used in installing shared
+ libraries or executables.
+
+20121102
+ + realign these related pages:
+ curs_add_wchstr.3x
+ curs_addchstr.3x
+ curs_addstr.3x
+ curs_addwstr.3x
+ and fix a long-ago error in curs_addstr.3x which said that a -1
+ length parameter would only write as much as fit onto one line
+ (report by Reuben Thomas).
+ + remove obsolete fallback _nc_memmove() for memmove()/bcopy().
+ + remove obsolete fallback _nc_strdup() for strdup().
+ + cancel any debug-rpm in package/ncurses.spec
+ + reviewed vte-2012, reverted most of the change since it was incorrect
+ based on testing with tack -TD
+ + un-cancel the initc in vte-256color, since this was implemented
+ starting with version 0.20 in 2009 -TD
+
+20121026
+ + improve malloc/realloc checking (prompted by discussion in Redhat
+ #866989).
+ + add ncurses test-program as "ncurses6" to the rpm- and dpkg-scripts.
+ + updated configure macros CF_GCC_VERSION and CF_WITH_PATHLIST. The
+ first corrects pattern used for Mac OS X's customization of gcc.
+
+20121017
+ + fix change to _nc_scroll_optimize(), which incorrectly freed memory
+ (Redhat #866989).
+
+20121013
+ + add vte-2012, gnome-2012, making these the defaults for vte/gnome
+ (patch by Christian Persch).
+
+20121006
+ + improve CF_GCC_VERSION to work around Debian's customization of gcc
+ --version message.
+ + improve configure macros as done in byacc:
+ + drop 2.13 compatibility; use 2.52.xxxx version only since EMX port
+ has used that for a while.
+ + add 3rd parameter to AC_DEFINE's to allow autoheader to run, i.e.,
+ for experimental use.
+ + remove unused configure macros.
+ + modify configure script and makefiles to quiet new autoconf warning
+ for LIBS_TO_MAKE variable.
+ + modify configure script to show $PATH_SEPARATOR variable.
+ + update config.guess, config.sub
+
+20120922
+ + modify setupterm to set its copy of TERM to "unknown" if configured
+ for the terminal driver and TERM was null or empty.
+ + modify treatment of TERM variable for MinGW port to allow explicit
+ use of the windows console driver by checking if $TERM is set to
+ "#win32con" or an abbreviation of that.
+ + undo recent change to fallback definition of vsscanf() to build with
+ older Solaris compilers (cf: 20120728).
+
+20120908
+ + add test-screens to test/ncurses to show 256-characters at a time,
+ to help with MinGW port.
+
+20120903
+ + simplify varargs logic in lib_printw.c; va_copy is no longer needed
+ there.
+ + modifications for MinGW port to make wide-character display usable.
+
+20120902
+ + regenerate configure script (report by Sven Joachim, cf: 20120901).
+
+20120901
+ + add a null-pointer check in _nc_flush (cf: 20120825).
+ + fix a case in _nc_scroll_optimize() where the _oldnums_list array
+ might not be allocated.
+ + improve comparisons in configure.in for unset shell variables.
+
+20120826
+ + increase size of ncurses' output-buffer, in case of very small
+ initial screen-sizes.
+ + fix evaluation of TERMINFO and TERMINFO_DIRS default values as needed
+ after changes to use --datarootdir (reports by Gabriele Balducci,
+ Roumen Petrov).
+
+20120825
+ + change output buffering scheme, using buffer maintained by ncurses
+ rather than stdio, to avoid problems with SIGTSTP handling (report
+ by Brian Bloniarz).
+
+20120811
+ + update autoconf patch to 2.52.20120811, adding --datarootdir
+ (prompted by discussion with Erwin Waterlander).
+ + improve description of --enable-reentrant option in README and the
+ INSTALL file.
+ + add nsterm-256color, make this the default nsterm -TD
+ + remove bw from nsterm-bce, per testing with tack -TD
+
+20120804
+ + update test/configure, adding check for tinfo library.
+ + improve limit-checks for the getch fifo (report by Werner Fink).
+ + fix a remaining mismatch between $with_echo and the symbols updated
+ for CF_DISABLE_ECHO affecting parameters for mk-2nd.awk (report by
+ Sven Joachim, cf: 20120317).
+ + modify followup check for pkg-config's library directory in the
+ --enable-pc-files option to validate syntax (report by Sven Joachim,
+ cf: 20110716).
+
+20120728
+ + correct path for ncurses_mingw.h in include/headers, in case build
+ is done outside source-tree (patch by Roumen Petrov).
+ + modify some older xterm entries to align with xterm source -TD
+ + separate "xterm-old" alias from "xterm-r6" -TD
+ + add E3 extended capability to xterm-basic and putty -TD
+ + parenthesize parameters of other macros in curses.h -TD
+ + parenthesize parameter of COLOR_PAIR and PAIR_NUMBER in curses.h
+ in case it happens to be a comma-expression, etc. (patch by Nick
+ Black).
+
+20120721
+ + improved form_request_by_name() and menu_request_by_name().
+ + eliminate two fixed-size buffers in toe.c
+ + extend use_tioctl() to have expected behavior when use_env(FALSE) and
+ use_tioctl(TRUE) are called.
+ + modify ncurses test-program, adding -E and -T options to demonstrate
+ use_env() versus use_tioctl().
+
+20120714
+ + add use_tioctl() function (adapted from patch by Werner Fink,
+ Novell #769788):
+
+20120707
+ + add ncurses_mingw.h to installed headers (prompted by patch by
+ Juergen Pfeifer).
+ + clarify return-codes from wgetch() in response to SIGWINCH (prompted
+ by Novell #769788).
+ + modify resizeterm() to always push a KEY_RESIZE onto the fifo, even
+ if screensize is unchanged. Modify _nc_update_screensize() to push a
+ KEY_RESIZE if there was a SIGWINCH, even if it does not call
+ resizeterm(). These changes eliminate the case where a SIGWINCH is
+ received, but ERR returned from wgetch or wgetnstr because the screen
+ dimensions did not change (Novell #769788).
+
+20120630
+ + add --enable-interop to sample package scripts (suggested by Juergen
+ Pfeifer).
+ + update CF_PATH_SYNTAX macro, from mawk changes.
+ + modify mk-0th.awk to allow for generating llib-ltic, etc., though
+ some work is needed on cproto to work with lib_gen.c to update
+ llib-lncurses.
+ + remove redundant getenv() cal in database-iterator leftover from
+ cleanup in 20120622 changes (report by Sven Joachim).
+
+20120622
+ + add -d, -e and -q options to test/demo_terminfo and test/demo_termcap
+ + fix caching of environment variables in database-iterator (patch by
+ Philippe Troin, Redhat #831366).
+
+20120616
+ + add configure check to distinguish clang from gcc to eliminate
+ warnings about unused command-line parameters when compiler warnings
+ are enabled.
+ + improve behavior when updating terminfo entries which are hardlinked
+ by allowing for the possibility that an alias has been repurposed to
+ a new primary name.
+ + fix some strict compiler warnings based on package scripts.
+ + further fixes for configure check for working poll (Debian #676461).
+
+20120608
+ + fix an uninitialized variable in -c/-n logic for infocmp changes
+ (cf: 20120526).
+ + corrected fix for building c++ binding with clang 3.0 (report/patch
+ by Richard Yao, Gentoo #417613, cf: 20110409)
+ + correct configure check for working poll, fixing the case where stdin
+ is redirected, e.g., in rpm/dpkg builds (Debian #676461).
+ + add rpm- and dpkg-scripts, to test those build-environments.
+ The resulting packages are used only for testing.
+
+20120602
+ + add kdch1 aka "Remove" to vt220 and vt220-8 entries -TD
+ + add kdch1, etc., to qvt108 -TD
+ + add dl1/il1 to some entries based on dl/il values -TD
+ + add dl to simpleterm -TD
+ + add consistency-checks in tic for insert-line vs delete-line
+ controls, and insert/delete-char keys
+ + correct no-leaks logic in infocmp when doing comparisons, fixing
+ duplicate free of entries given via the command-line, and freeing
+ entries loaded from the last-but-one of files specified on the
+ command-line.
+ + add kdch1 to wsvt25 entry from NetBSD CVS (reported by David Lord,
+ analysis by Martin Husemann).
+ + add cnorm/civis to wsvt25 entry from NetBSD CVS (report/analysis by
+ Onno van der Linden).
+
+20120526
+ + extend -c and -n options of infocmp to allow comparing more than two
+ entries.
+ + correct check in infocmp for number of terminal names when more than
+ two are given.
+ + correct typo in curs_threads.3x (report by Yanhui Shen on
+ freebsd-hackers mailing list).
+
+20120512
+ + corrected 'op' for bterm (report by Samuel Thibault) -TD
+ + modify test/background.c to demonstrate a background character
+ holding a colored ACS_HLINE. The behavior differs from SVr4 due to
+ the thick- and double-line extension (cf: 20091003).
+ + modify handling of acs characters in PutAttrChar to avoid mapping an
+ unmapped character to a space with A_ALTCHARSET set.
+ + rewrite vt520 entry based on vt420 -TD
+
+20120505
+ + remove p6 (bold) from opus3n1+ for consistency -TD
+ + remove acs stuff from env230 per clues in Ingres termcap -TD
+ + modify env230 sgr/sgr0 to match other capabilities -TD
+ + modify smacs/rmacs in bq300-8 to match sgr/sgr0 -TD
+ + make sgr for dku7202 agree with other caps -TD
+ + make sgr for ibmpc agree with other caps -TD
+ + make sgr for tek4107 agree with other caps -TD
+ + make sgr for ndr9500 agree with other caps -TD
+ + make sgr for sco-ansi agree with other caps -TD
+ + make sgr for d410 agree with other caps -TD
+ + make sgr for d210 agree with other caps -TD
+ + make sgr for d470c, d470c-7b agree with other caps -TD
+ + remove redundant AC_DEFINE for NDEBUG versus Makefile definition.
+ + fix a back-link in _nc_delink_entry(), which is needed if ncurses is
+ configured with --enable-termcap and --disable-getcap.
+
+20120428
+ + fix some inconsistencies between vt320/vt420, e.g., cnorm/civis -TD
+ + add eslok flag to dec+sl -TD
+ + dec+sl applies to vt320 and up -TD
+ + drop wsl width from xterm+sl -TD
+ + reuse xterm+sl in putty and nsca-m -TD
+ + add ansi+tabs to vt520 -TD
+ + add ansi+enq to vt220-vt520 -TD
+ + fix a compiler warning in example in ncurses-intro.doc (Paul Waring).
+ + added paragraph in keyname manpage telling how extended capabilities
+ are interpreted as key definitions.
+ + modify tic's check of conflicting key definitions to include extended
+ capability strings in addition to the existing check on predefined
+ keys.
+
+20120421
+ + improve cleanup of temporary files in tic using atexit().
+ + add msgr to vt420, similar DEC vtXXX entries -TD
+ + add several missing vt420 capabilities from vt220 -TD
+ + factor out ansi+pp from several entries -TD
+ + change xterm+sl and xterm+sl-twm to include only the status-line
+ capabilities and not "use=xterm", making them more generally useful
+ as building-blocks -TD
+ + add dec+sl building block, as example -TD
+
+20120414
+ + add XT to some terminfo entries to improve usefulness for other
+ applications than screen, which would like to pretend that xterm's
+ title is a status-line. -TD
+ + change use-clauses in ansi-mtabs, hp2626, and hp2622 based on review
+ of ordering and overrides -TD
+ + add consistency check in tic for screen's "XT" capability.
+ + add section in terminfo.src summarizing the user-defined capabilities
+ used in that file -TD
+
+20120407
+ + fix an inconsistency between tic/infocmp "-x" option; tic omits all
+ non-standard capabilities, while infocmp was ignoring only the user
+ definable capabilities.
+ + improve special case in tic parsing of description to allow it to be
+ followed by terminfo capabilities. Previously the description had to
+ be the last field on an input line to allow tic to distinguish
+ between termcap and terminfo format while still allowing commas to be
+ embedded in the description.
+ + correct variable name in gen_edit.sh which broke configurability of
+ the --with-xterm-kbs option.
+ + revert 2011-07-16 change to "linux" alias, return to "linux2.2" -TD
+ + further amend 20110910 change, providing for configure-script
+ override of the "linux" terminfo entry to install and changing the
+ default for that to "linux2.2" (Debian #665959).
+
+20120331
+ + update Ada95/configure to use CF_DISABLE_ECHO (cf: 20120317).
+ + correct order of use-clauses in st-256color -TD
+ + modify configure script to look for gnatgcc if the Ada95 binding
+ is built, in preference to the default gcc/cc (suggested by
+ Nicolas Boulenguez).
+ + modify configure script to ensure that the same -On option used for
+ the C compiler in CFLAGS is used for ADAFLAGS rather than simply
+ using "-O3" (suggested by Nicolas Boulenguez)
+
+20120324
+ + amend an old fix so that next_char() exits properly for empty files,
+ e.g., from reading /dev/null (cf: 20080804).
+ + modify tic so that it can read from the standard input, or from
+ a character device. Because tic uses seek's, this requires writing
+ the data to a temporary file first (prompted by remark by Sven
+ Joachim) (cf: 20000923).
+
+20120317
+ + correct a check made in lib_napms.c, so that terminfo applications
+ can again use napms() (cf: 20110604).
+ + add a note in tic.h regarding required casts for ABSENT_BOOLEAN
+ (cf: 20040327).
+ + correct scripting for --disable-echo option in test/configure.
+ + amend check for missing c++ compiler to work when no error is
+ reported, and no variables set (cf: 20021206).
+ + add/use configure macro CF_DISABLE_ECHO.
+
+20120310
+ + fix some strict compiler warnings for abi6 and 64-bits.
+ + use begin_va_copy/end_va_copy macros in lib_printw.c (cf: 20120303).
+ + improve a limit-check in infocmp.c (Werner Fink):
+
+20120303
+ + minor tidying of terminfo.tail, clarify reason for limitation
+ regarding mapping of \0 to \200
+ + minor improvement to _nc_copy_termtype(), using memcpy to replace
+ loops.
+ + fix no-leaks checking in test/demo_termcap.c to account for multiple
+ calls to setupterm().
+ + modified the libgpm change to show previous load as a problem in the
+ debug-trace.
+ > merge some patches from OpenSUSE rpm (Werner Fink):
+ + ncurses-5.7-printw.dif, fixes for varargs handling in lib_printw.c
+ + ncurses-5.7-gpm.dif, do not dlopen libgpm if already loaded by
+ runtime linker
+ + ncurses-5.6-fallback.dif, do not free arrays and strings from static
+ fallback entries
+
+20120228
+ + fix breakage in tic/infocmp from 20120225 (report by Werner Fink).
+
+20120225
+ + modify configure script to allow creating dll's for MinGW when
+ cross-compiling.
+ + add --enable-string-hacks option to control whether strlcat and
+ strlcpy may be used. The same issue applies to OpenBSD's warnings
+ about snprintf, noting that this function is weakly standardized.
+ + add configure checks for strlcat, strlcpy and snprintf, to help
+ reduce bogus warnings with OpenBSD builds.
+ + build-fix for OpenBSD 4.9 to supply consistent intptr_t declaration
+ (cf:20111231)
+ + update config.guess, config.sub
+
+20120218
+ + correct CF_ETIP_DEFINES configure macro, making it exit properly on
+ the first success (patch by Pierre Labastie).
+ + improve configure macro CF_MKSTEMP by moving existence-check for
+ mkstemp out of the AC_TRY_RUN, to help with cross-compiles.
+ + improve configure macro CF_FUNC_POLL from luit changes to detect
+ broken implementations, e.g., with Mac OS X.
+ + add configure option --with-tparm-arg
+ + build-fix for MinGW cross-compiling, so that make_hash does not
+ depend on TTY definition (cf: 20111008).
+
+20120211
+ + make sgr for xterm-pcolor agree with other caps -TD
+ + make sgr for att5425 agree with other caps -TD
+ + make sgr for att630 agree with other caps -TD
+ + make sgr for linux entries agree with other caps -TD
+ + make sgr for tvi9065 agree with other caps -TD
+ + make sgr for ncr260vt200an agree with other caps -TD
+ + make sgr for ncr160vt100pp agree with other caps -TD
+ + make sgr for ncr260vt300an agree with other caps -TD
+ + make sgr for aaa-60-dec-rv, aaa+dec agree with other caps -TD
+ + make sgr for cygwin, cygwinDBG agree with other caps -TD
+ + add configure option --with-xterm-kbs to simplify configuration for
+ Linux versus most other systems.
+
+20120204
+ + improved tic -D option, avoid making target directory and provide
+ better diagnostics.
+
+20120128
+ + add mach-gnu (Debian #614316, patch by Samuel Thibault)
+ + add mach-gnu-color, tweaks to mach-gnu terminfo -TD
+ + make sgr for sun-color agree with smso -TD
+ + make sgr for prism9 agree with other caps -TD
+ + make sgr for icl6404 agree with other caps -TD
+ + make sgr for ofcons agree with other caps -TD
+ + make sgr for att5410v1, att4415, att620 agree with other caps -TD
+ + make sgr for aaa-unk, aaa-rv agree with other caps -TD
+ + make sgr for avt-ns agree with other caps -TD
+ + amend fix intended to separate fixups for acsc to allow "tic -cv" to
+ give verbose warnings (cf: 20110730).
+ + modify misc/gen-edit.sh to make the location of the tabset directory
+ consistent with misc/Makefile.in, i.e., using ${datadir}/tabset
+ (Debian #653435, patch by Sven Joachim).
+
+20120121
+ + add --with-lib-prefix option to allow configuring for old/new flavors
+ of OS/2 EMX.
+ + modify check for gnat version to allow for year, as used in FreeBSD
+ port.
+ + modify check_existence() in db_iterator.c to simply check if the
+ path is a directory or file, according to the need. Checking for
+ directory size also gives no usable result with OS/2 (cf: 20120107).
+ + support OS/2 kLIBC (patch by KO Myung-Han).
+
+20120114
+ + several improvements to test/movewindow.c (prompted by discussion on
+ Linux Mint forum):
+ + modify movement commands to make them continuous
+ + rewrote the test for mvderwin
+ + rewrote the test for recursive mvwin
+ + split-out reusable CF_WITH_NCURSES_ETC macro in test/configure.in
+ + updated configure macro CF_XOPEN_SOURCE, build-fixes for Mac OS X
+ and OpenBSD.
+ + regenerated html manpages.
+
+20120107
+ + various improvments for MinGW (Juergen Pfeifer):
+ + modify stat() calls to ignore the st_size member
+ + drop mk-dlls.sh script.
+ + change recommended regular expression library.
+ + modify rain.c to allow for threaded configuraton.
+ + modify tset.c to allow for case when size-change logic is not used.
+
+20111231
+ + modify toe's report when -a and -s options are combined, to add
+ a column showing which entries belong to a given database.
+ + add -s option to toe, to sort its output.
+ + modify progs/toe.c, simplifying use of db-iterator results to use
+ caching improvements from 20111001 and 20111126.
+ + correct generation of pc-files when ticlib or termlib options are
+ given to rename the corresponding tic- or tinfo-libraries (report
+ by Sven Joachim).
+
+20111224
+ + document a portability issue with tput, i.e., that scripts which work
+ with ncurses may fail in other implementations that do no parameter
+ analysis.
+ + add putty-sco entry -TD
+
+20111217
+ + review/fix places in manpages where --program-prefix configure option
+ was not being used.
+ + add -D option to infocmp, to show the database locations that it
+ could use.
+ + fix build for the special case where term-driver, ticlib and termlib
+ are all enabled. The terminal driver depends on a few features in
+ the base ncurses library, so tic's dependencies include both ncurses
+ and termlib.
+ + fix build work for term-driver when --enable-wgetch-events option is
+ enabled.
+ + use <stdint.h> types to fix some questionable casts to void*.
+
+20111210
+ + modify configure script to check if thread library provides
+ pthread_mutexattr_settype(), e.g., not provided by Solaris 2.6
+ + modify configure script to suppress check to define _XOPEN_SOURCE
+ for IRIX64, since its header files have a conflict versus
+ _SGI_SOURCE.
+ + modify configure script to add ".pc" files for tic- and
+ tinfo-libraries, which were omitted in recent change (cf: 20111126).
+ + fix inconsistent checks on $PKG_CONFIG variable in configure script.
+
+20111203
+ + modify configure-check for etip.h dependencies, supplying a temporary
+ copy of ncurses_dll.h since it is a generated file (prompted by
+ Debian #646977).
+ + modify CF_CPP_PARAM_INIT "main" function to work with current C++.
+
+20111126
+ + correct database iterator's check for duplicate entries
+ (cf: 20111001).
+ + modify database iterator to ignore $TERMCAP when it is not an
+ absolute pathname.
+ + add -D option to tic, to show the database locations that it could
+ use.
+ + improve description of database locations in tic manpage.
+ + modify the configure script to generate a list of the ".pc" files to
+ generate, rather than deriving the list from the libraries which have
+ been built (patch by Mike Frysinger).
+ + use AC_CHECK_TOOLS in preference to AC_PATH_PROGS when searching for
+ ncurses*-config, e.g., in Ada95/configure and test/configure (adapted
+ from patch by Mike Frysinger).
+
+20111119
+ + remove obsolete/conflicting fallback definition for _POSIX_SOURCE
+ from curses.priv.h, fixing a regression with IRIX64 and Tru64
+ (cf: 20110416)
+ + modify _nc_tic_dir() to ensure that its return-value is nonnull,
+ i.e., the database iterator was not initialized. This case is needed
+ to when tic is translating to termcap, rather than loading the
+ database (cf: 20111001).
+
+20111112
+ + add pccon entries for OpenBSD console (Alexei Malinin).
+ + build-fix for OpenBSD 4.9 with gcc 4.2.1, setting _XOPEN_SOURCE to
+ 600 to work around inconsistent ifdef'ing of wcstof between C and
+ C++ header files.
+ + modify capconvert script to accept more than exact match on "xterm",
+ e.g., the "xterm-*" variants, to exclude from the conversion (patch
+ by Robert Millan).
+ + add -lc_r as alternative for -lpthread, allows build of threaded code
+ in older FreeBSD machines.
+ + build-fix for MirBSD, which fails when either _XOPEN_SOURCE or
+ _POSIX_SOURCE are defined.
+ + fix a typo misc/Makefile.in, used in uninstalling pc-files.
+
+20111030
+ + modify make_db_path() to allow creating "terminfo.db" in the same
+ directory as an existing "terminfo" directory. This fixes a case
+ where switching between hashed/filesystem databases would cause the
+ new hashed database to be installed in the next best location -
+ root's home directory.
+ + add variable cf_cv_prog_gnat_correct to those passed to
+ config.status, fixing a problem with Ada95 builds (cf: 20111022).
+ + change feature test from _XPG5 to _XOPEN_SOURCE in two places, to
+ accommodate broken implementations for _XPG6.
+ + eliminate usage of NULL symbol from etip.h, to reduce header
+ interdependencies.
+ + add configure check to decide when to add _XOPEN_SOURCE define to
+ compiler options, i.e., for Solaris 10 and later (cf: 20100403).
+ This is a workaround for gcc 4.6, which fails to build the c++
+ binding if that symbol is defined by the application, due to
+ incorrectly combining the corresponding feature test macros
+ (report by Peter Kruse).
+
+20111022
+ + correct logic for discarding mouse events, retaining the partial
+ events used to build up click, double-click, etc, until needed
+ (cf: 20110917).
+ + fix configure script to avoid creating unused Ada95 makefile when
+ gnat does not work.
+ + cleanup width-related gcc 3.4.3 warnings for 64-bit platform, for the
+ internal functions of libncurses. The external interface of courses
+ uses bool, which still produces these warnings.
+
+20111015
+ + improve description of --disable-tic-depends option to make it
+ clear that it may be useful whether or not the --with-termlib
+ option is also given (report by Sven Joachim).
+ + amend termcap equivalent for set_pglen_inch to use the X/Open
+ "YI" rather than the obsolete Solaris 2.5 "sL" (cf: 990109).
+ + improve manpage for tgetent differences from termcap library.
+
+20111008
+ + moved static data from db_iterator.c to lib_data.c
+ + modify db_iterator.c for memory-leak checking, fix one leak.
+ + modify misc/gen-pkgconfig.in to use Requires.private for the parts
+ of ncurses rather than Requires, as well as Libs.private for the
+ other library dependencies (prompted by Debian #644728).
+
+20111001
+ + modify tic "-K" option to only set the strict-flag rather than force
+ source-output. That allows the same flag to control the parser for
+ input and output of termcap source.
+ + modify _nc_getent() to ignore backslash at the end of a comment line,
+ making it consistent with ncurses' parser.
+ + restore a special-case check for directory needed to make termcap
+ text files load as if they were databases (cf: 20110924).
+ + modify tic's resolution/collision checking to attempt to remove the
+ conflicting alias from the second entry in the pair, which is
+ normally following in the source file. Also improved the warning
+ message to make it simpler to see which alias is the problem.
+ + improve performance of the database iterator by caching search-list.
+
+20110925
+ + add a missing "else" in changes to _nc_read_tic_entry().
+
+20110924
+ + modify _nc_read_tic_entry() so that hashed-database is checked before
+ filesystem.
+ + updated CF_CURSES_LIBS check in test/configure script.
+ + modify configure script and makefiles to split TIC_ARGS and
+ TINFO_ARGS into pieces corresponding to LDFLAGS and LIBS variables,
+ to help separate searches for tic- and tinfo-libraries (patch by Nick
+ Alcock aka "Nix").
+ + build-fix for lib_mouse.c changes (cf: 20110917).
+
+20110917
+ + fix compiler warning for clang 2.9
+ + improve merging of mouse events (integrated patch by Damien
+ Guibouret).
+ + correct mask-check used in lib_mouse for wheel mouse buttons 4/5
+ (patch by Damien Guibouret).
+
+20110910
+ + modify misc/gen_edit.sh to select a "linux" entry which works with
+ the current kernel rather than assuming it is always "linux3.0"
+ (cf: 20110716).
+ + revert a change to getmouse() which had the undesirable side-effect
+ of suppressing button-release events (report by Damien Guibouret,
+ cf: 20100102).
+ + add xterm+kbs fragment from xterm #272 -TD
+ + add configure option --with-pkg-config-libdir to provide control over
+ the actual directory into which pc-files are installed, do not use
+ the pkg-config environment variables (discussion with Frederic L W
+ Meunier).
+ + add link to mailing-list archive in announce.html.in, as done in
+ FAQ (prompted by question by Andrius Bentkus).
+ + improve manpage install by adjusting the "#include" examples to
+ show the ncurses-subdirectory used when --disable-overwrite option
+ is used.
+ + install an alias for "curses" to the ncurses manpage, tied to the
+ --with-curses-h configure option (suggested by Reuben Thomas).
+
+20110903
+ + propagate error-returns from wresize, i.e., the internal
+ increase_size and decrease_size functions through resize_term (report
+ by Tim van der Molen, cf: 20020713).
+ + fix typo in tset manpage (patch by Sven Joachim).
+
+20110820
+ + add a check to ensure that termcap files which might have "^?" do
+ not use the terminfo interpretation as "\177".
+ + minor cleanup of X-terminal emulator section of terminfo.src -TD
+ + add terminator entry -TD
+ + add simpleterm entry -TD
+ + improve wattr_get macros by ensuring that if the window pointer is
+ null, then the attribute and color values returned will be zero
+ (cf: 20110528).
+
+20110813
+ + add substitution for $RPATH_LIST to misc/ncurses-config.in
+ + improve performance of tic with hashed-database by caching the
+ database connection, using atexit() to cleanup.
+ + modify treatment of 2-character aliases at the beginning of termcap
+ entries so they are not counted in use-resolution, since these are
+ guaranteed to be unique. Also ignore these aliases when reporting
+ the primary name of the entry (cf: 20040501)
+ + double-check gn (generic) flag in terminal descriptions to
+ accommodate old/buggy termcap databases which misused that feature.
+ + minor fixes to _nc_tgetent(), ensure buffer is initialized even on
+ error-return.
+
+20110807
+ + improve rpath fix from 20110730 by ensuring that the new $RPATH_LIST
+ variable is defined in the makefiles which use it.
+ + build-fix for DragonFlyBSD's pkgsrc in test/configure script.
+ + build-fixes for NetBSD 5.1 with termcap support enabled.
+ + corrected k9 in dg460-ansi, add other features based on manuals -TD
+ + improve trimming of whitespace at the end of terminfo/termcap output
+ from tic/infocmp.
+ + when writing termcap source, ensure that colons in the description
+ field are translated to a non-delimiter, i.e., "=".
+ + add "-0" option to tic/infocmp, to make the termcap/terminfo source
+ use a single line.
+ + add a null-pointer check when handling the $CC variable.
+
+20110730
+ + modify configure script and makefiles in c++ and progs to allow the
+ directory used for rpath option to be overridden, e.g., to work
+ around updates to the variables used by tic during an install.
+ + add -K option to tic/infocmp, to provide stricter BSD-compatibility
+ for termcap output.
+ + add _nc_strict_bsd variable in tic library which controls the
+ "strict" BSD termcap compatibility from 20110723, plus these
+ features:
+ + allow escapes such as "\8" and "\9" when reading termcap
+ + disallow "\a", "\e", "\l", "\s" and "\:" escapes when reading
+ termcap files, passing through "a", "e", etc.
+ + expand "\:" as "\072" on output.
+ + modify _nc_get_token() to reset the token's string value in case
+ there is a string-typed token lacking the "=" marker.
+ + fix a few memory leaks in _nc_tgetent.
+ + fix a few places where reading from a termcap file could refer to
+ freed memory.
+ + add an overflow check when converting terminfo/termcap numeric
+ values, since terminfo stores those in a short, and they must be
+ positive.
+ + correct internal variables used for translating to termcap "%>"
+ feature, and translating from termcap %B to terminfo, needed by
+ tctest (cf: 19991211).
+ + amend a minor fix to acsc when loading a termcap file to separate it
+ from warnings needed for tic (cf: 20040710)
+ + modify logic in _nc_read_entry() and _nc_read_tic_entry() to allow
+ a termcap file to be handled via TERMINFO_DIRS.
+ + modify _nc_infotocap() to include non-mandatory padding when
+ translating to termcap.
+ + modify _nc_read_termcap_entry(), passing a flag in the case where
+ getcap is used, to reduce interactive warning messages.
+
+20110723
+ + add a check in start_color() to limit color-pairs to 256 when
+ extended colors are not supported (patch by David Benjamin).
+ + modify setcchar to omit no-longer-needed OR'ing of color pair in
+ the SetAttr() macro (patch by David Benjamin).
+ + add kich1 to sun terminfo entry (Yuri Pankov)
+ + use bold rather than reverse for smso in sun-color terminfo entry
+ (Yuri Pankov).
+ + improve generation of termcap using tic/infocmp -C option, e.g.,
+ to correspond with 4.2BSD (prompted by discussion with Yuri Pankov
+ regarding Schilling's test program):
+ + translate %02 and %03 to %2 and %3 respectively.
+ + suppress string capabilities which use %s, not supported by tgoto
+ + use \040 rather than \s
+ + expand null characters as \200 rather than \0
+ + modify configure script to support shared libraries for DragonFlyBSD.
+
+20110716
+ + replace an assert() in _nc_Free_Argument() with a regular null
+ pointer check (report/analysis by Franjo Ivancic).
+ + modify configure --enable-pc-files option to take into account the
+ PKG_CONFIG_PATH variable (report by Frederic L W Meunier).
+ + add/use xterm+tmux chunk from xterm #271 -TD
+ + resync xterm-new entry from xterm #271 -TD
+ + add E3 extended capability to linux-basic (Miroslav Lichvar)
+ + add linux2.2, linux2.6, linux3.0 entries to give context for E3 -TD
+ + add SI/SO change to linux2.6 entry (Debian #515609) -TD
+ + fix inconsistent tabset path in pcmw (Todd C. Miller).
+ + remove a backslash which continued comment, obscuring altos3
+ definition with OpenBSD toolset (Nicholas Marriott).
+
+20110702
+ + add workaround from xterm #271 changes to ensure that compiler flags
+ are not used in the $CC variable.
+ + improve support for shared libraries, tested with AIX 5.3, 6.1 and
+ 7.1 with both gcc 4.2.4 and cc.
+ + modify configure checks for AIX to include release 7.x
+ + add loader flags/libraries to libtool options so that dynamic loading
+ works properly, adapted from ncurses-5.7-ldflags-with-libtool.patch
+ at gentoo prefix repository (patch by Michael Haubenwallner).
+
+20110626
+ + move include of nc_termios.h out of term_entry.h, since the latter
+ is installed, e.g., for tack while the former is not (report by
+ Sven Joachim).
+
+20110625
+ + improve cleanup() function in lib_tstp.c, using _exit() rather than
+ exit() and checking for SIGTERM rather than SIGQUIT (prompted by
+ comments forwarded by Nicholas Marriott).
+ + reduce name pollution from term.h, moving fallback #define's for
+ tcgetattr(), etc., to new private header nc_termios.h (report by
+ Sergio NNX).
+ + two minor fixes for tracing (patch by Vassili Courzakis).
+ + improve trace initialization by starting it in use_env() and
+ ripoffline().
+ + review old email, add details for some changelog entries.
+
+20110611
+ + update minix entry to minix 3.2 (Thomas Cort).
+ + fix a strict compiler warning in change to wattr_get (cf: 20110528).
+
+20110604
+ + fixes for MirBSD port:
+ + set default prefix to /usr.
+ + add support for shared libraries in configure script.
+ + use S_ISREG and S_ISDIR consistently, with fallback definitions.
+ + add a few more checks based on ncurses/link_test.
+ + modify MKlib_gen.sh to handle sp-funcs renaming of NCURSES_OUTC type.
+
+20110528
+ + add case to CF_SHARED_OPTS for Interix (patch by Markus Duft).
+ + used ncurses/link_test to check for behavior when the terminal has
+ not been initialized and when an application passes null pointers
+ to the library. Added checks to cover this (prompted by Redhat
+ #707344).
+ + modify MKlib_gen.sh to make its main() function call each function
+ with zero parameters, to help find inconsistent checking for null
+ pointers, etc.
+
+20110521
+ + fix warnings from clang 2.7 "--analyze"
+
+20110514
+ + compiler-warning fixes in panel and progs.
+ + modify CF_PKG_CONFIG macro, from changes to tin -TD
+ + modify CF_CURSES_FUNCS configure macro, used in test directory
+ configure script:
+ + work around (non-optimizer) bug in gcc 4.2.1 which caused
+ test-expression to be omitted from executable.
+ + force the linker to see a link-time expression of a symbol, to
+ help work around weak-symbol issues.
+
+20110507
+ + update discussion of MKfallback.sh script in INSTALL; normally the
+ script is used automatically via the configured makefiles. However
+ there are still occasions when it might be used directly by packagers
+ (report by Gunter Schaffler).
+ + modify misc/ncurses-config.in to omit the "-L" option from the
+ "--libs" output if the library directory is /usr/lib.
+ + change order of tests for curses.h versus ncurses.h headers in the
+ configure scripts for Ada95 and test-directories, to look for
+ ncurses.h, from fixes to tin -TD
+ + modify ncurses/tinfo/access.c to account for Tandem's root uid
+ (report by Joachim Schmitz).
+
+20110430
+ + modify rules in Ada95/src/Makefile.in to ensure that the PIC option
+ is not used when building a static library (report by Nicolas
+ Boulenguez):
+ + Ada95 build-fix for big-endian architectures such as sparc. This
+ undoes one of the fixes from 20110319, which added an "Unused" member
+ to representation clauses, replacing that with pragmas to suppress
+ warnings about unused bits (patch by Nicolas Boulenguez):
+
+20110423
+ + add check in test/configure for use_window, use_screen.
+ + add configure-checks for getopt's variables, which may be declared
+ as different types on some Unix systems.
+ + add check in test/configure for some legacy curses types of the
+ function pointer passed to tputs().
+ + modify init_pair() to accept -1's for color value after
+ assume_default_colors() has been called (Debian #337095).
+ + modify test/background.c, adding commmand-line options to demonstrate
+ assume_default_colors() and use_default_colors().
+
+20110416
+ + modify configure script/source-code to only define _POSIX_SOURCE if
+ the checks for sigaction and/or termios fail, and if _POSIX_C_SOURCE
+ and _XOPEN_SOURCE are undefined (report by Valentin Ochs).
+ + update config.guess, config.sub
+
+20110409
+ + fixes to build c++ binding with clang 3.0 (patch by Alexander
+ Kolesen).
+ + add check for unctrl.h in test/configure, to work around breakage in
+ some ncurses packages.
+ + add "--disable-widec" option to test/configure script.
+ + add "--with-curses-colr" and "--with-curses-5lib" options to the
+ test/configure script to address testing with very old machines.
+
20110404 5.9 release for upload to ftp.gnu.org
20110402
@@ -100,7 +1454,7 @@ it is not possible to add this information.
+ modify configure script to provide value for HTML_DIR in
Ada95/gen/Makefile.in, which depends on whether the Ada95 binding is
distributed separately (report by Nicolas Boulenguez).
- + modify configure script to add -g and/or -O3 to ADAFLAGS if the
+ + modify configure script to add "-g" and/or "-O3" to ADAFLAGS if the
CFLAGS for the build has these options.
+ amend change from 20070324, to not add 1 to the result of getmaxx
and getmaxy in the Ada binding (report by Nicolas Boulenguez for
@@ -155,7 +1509,7 @@ it is not possible to add this information.
20110212
+ regenerated html manpages.
+ use _tracef() in show_where() function of tic, to work correctly with
- special case of trace configuration.
+ special case of trace configuration.
20110205
+ add xterm-utf8 entry as a demo of the U8 feature -TD
@@ -219,7 +1573,7 @@ it is not possible to add this information.
version which works with termcap.
+ remove obsolete emacs "Local Variables" section from documentation
(request by Sven Joachim).
- + update doc/html/index.html to include NCURSES-Programming-HOWTO.html
+ + update doc/html/index.html to include NCURSES-Programming-HOWTO.html
(report by Sven Joachim).
20101128
@@ -294,8 +1648,8 @@ it is not possible to add this information.
Sven Joachim).
+ add parameterized cursor-controls to linux-basic (report by Dae) -TD
> patch by Juergen Pfeifer:
- + document how to build 32-bit libraries in README.MinGW
- + fixes to filename computation in mk-dlls.sh.in
+ + document how to build 32-bit libraries in README.MinGW
+ + fixes to filename computation in mk-dlls.sh.in
+ use POSIX locale in mk-dlls.sh.in rather than en_US (report by Sven
Joachim).
+ add a check in mk-dlls.sh.in to obtain the size of a pointer to
@@ -478,7 +1832,7 @@ it is not possible to add this information.
20100417
+ modify _nc_capcmp() to work with cancelled strings.
+ correct translation of "^" in _nc_infotocap(), used to transform
- terminfo to termcap strings
+ terminfo to termcap strings
+ add configure --disable-rpath-hack, to allow disabling the feature
which adds rpath options for libraries in unusual places.
+ improve CF_RPATH_HACK_2 by checking if the rpath option for a given
@@ -1533,8 +2887,8 @@ it is not possible to add this information.
that library.
+ add/modify null-pointer checks in several functions for SP and/or
the WINDOW* parameter (report by Thorben Krueger).
- + fixes for field_buffer() in formw library (see Redhat Bugzilla
- #310071, patches by Miroslav Lichvar).
+ + fixes for field_buffer() in formw library (see Redhat #310071,
+ patches by Miroslav Lichvar).
+ improve performance of NCURSES_CHAR_EQ code (patch by Miroslav
Lichvar).
+ update/improve mlterm and rxvt terminfo entries, e.g., for
@@ -1645,7 +2999,7 @@ it is not possible to add this information.
+ modify configure script to quiet c++ build with libtool when the
--disable-echo option is used.
+ modify configure script to disable ada95 if libtool is selected,
- writing a warning message (addresses FreeBSD ports/114493).
+ writing a warning message (addresses FreeBSD #114493).
+ update config.guess, config.sub
20070707
@@ -2130,8 +3484,7 @@ it is not possible to add this information.
+ 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)).
+ buffer, if provided (patch by Miroslav Lichvar (see Redhat #202480)).
+ correct libraries needed for foldkeys (report by Stanislav Ievlev)
20060826
@@ -2144,10 +3497,10 @@ it is not possible to add this information.
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).
+ variable is also used (Redhat #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)).
+ (patch/analysis by Miroslav Lichvar (see Redhat #202480)).
20060805
+ updated xterm function-keys terminfo to match xterm #216 -TD
@@ -2939,7 +4292,7 @@ it is not possible to add this information.
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).
+ or newterm() to use this feature (Redhat #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).
@@ -3032,7 +4385,7 @@ it is not possible to add this information.
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).
+ using "tic -C" (Redhat #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).
@@ -3043,9 +4396,9 @@ it is not possible to add this information.
However that did find a coding error in Assume_Default_Colors().
+ modify several terminfo entries to ensure xterm mouse and cursor
visibility are reset in rs2 string: hurd, putty, gnome,
- konsole-base, mlterm, Eterm, screen (Debian #265784, #55637). The
- xterm entries are left alone - old ones for compatibility, and the
- new ones do not require this change. -TD
+ konsole-base, mlterm, Eterm, screen (Debian #265784, Debian #55637).
+ The xterm entries are left alone - old ones for compatibility, and
+ the new ones do not require this change. -TD
20040814
+ fake a SIGWINCH in newterm() to accommodate buggy terminal emulators
@@ -3076,8 +4429,8 @@ it is not possible to add this information.
+ 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)
+ + corrections for gnome and konsole entries (Redhat #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
@@ -3090,7 +4443,7 @@ it is not possible to add this information.
> terminfo updates -TD
+ add xterm-pc-fkeys
+ review/update gnome and gnome-rh90 entries (prompted by Redhat
- Bugzilla #122815).
+ #122815).
+ review/update konsole entries
+ add sgr, correct sgr0 for kterm and mlterm
+ correct tsl string in kterm
@@ -3503,7 +4856,7 @@ it is not possible to add this information.
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).
+ Egmont Koblinger).
20031004
+ add terminfo entries for DJGPP.
@@ -4204,7 +5557,7 @@ it is not possible to add this information.
+ 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).
+ + fix an overlooked case for Redhat #68199 (Philippe Blain).
+ ensure clearerr() is called before using ferror() e.g., in
lib_screen.c (report by Philippe Blain).
@@ -4212,7 +5565,7 @@ it is not possible to add this information.
+ 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.
+ #68199.
+ 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
@@ -4245,7 +5598,7 @@ it is not possible to add this information.
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)
+ window (completes Debian #87678, Debian #101699)
20020803
+ fix an off-by-one in lib_pad.c check for limits of pad (patch by
@@ -4940,9 +6293,9 @@ it is not possible to add this information.
which may be in libutf8.
+ remove some unnecessary text from curs_extend.3x and
default_colors.3x which caused man-db to make incorrect symbolic
- links (Debian bug report #99550).
+ links (Debian #99550).
+ add configure check if cast for _IO_va_list is needed to compile
- C++ vscan code (Debian bug report #97945).
+ C++ vscan code (Debian #97945).
> several patches from Sven Verdoolaege:
+ correct code that used non-standard auto-initialization of a struct,
which gcc allows (report by Larry Virden).
@@ -5077,7 +6430,7 @@ it is not possible to add this information.
+ add some examples of customizing screen's terminfo:
screen.xterm-xfree86, screen.xterm-r6, screen.teraterm -TD
+ modify screen's terminfo entry to match the khome/kend in screen
- 3.09.08 (Debian bug report #92215).
+ 3.09.08 (Debian #92215).
+ correct a memory leak in forms library (report by Stefan Vogtner
<stefan@vogtner.de>) (patch by Juergen Pfeifer).
@@ -5091,12 +6444,12 @@ it is not possible to add this information.
+ add .cc.ii rule to c++ makefile, to get preprocessor output for
debugging.
+ correct configure script handling of @keyword@ substitutions when the
- --with-manpage-renames option is given (cf: 20000715, fixes Debian
- bug #89939).
+ --with-manpage-renames option is given (cf: 20000715, fixes Debian
+ #89939).
+ report stack underflow/overflow in tparm() when tic -cv option is
given.
+ remove spurious "%|" operator from xterm-xfree86 terminfo entry,
- (reported by Adam Costello <amc@cs.berkeley.edu>, Debian bug #89222).
+ (reported by Adam Costello <amc@cs.berkeley.edu>, Debian #89222).
20010310
+ cleanup of newdemo.c, fixing some ambiguous expressions noted by gcc
@@ -5800,7 +7153,7 @@ it is not possible to add this information.
+ correct spelling error in terminfo entry name: bq300-rv was given as
bg300-rv in esr's version.
+ modify redrawwin() macro so its parameter is fully parenthesized
- (fixes Debian bug report #61088).
+ (fixes Debian #61088).
+ correct formatting error in dump_entry() which set incorrect column
value when no newline trimming was needed at the end of an entry,
before appending "use=" clauses (cf: 960406).
@@ -6530,7 +7883,7 @@ it is not possible to add this information.
handling in lynx (reported by Kim DeVaughn).
990306 pre-release
- + add -G option to tic and infocmp, to reverse the -g option.
+ + add -G option to tic and infocmp, to reverse the "-g" option.
+ recode functions in name_match.c to avoid use of strncpy, which
caused a 4-fold slowdown in tic (cf: 980530).
+ correct a few warnings about sign-extension in recent changes.
@@ -6901,7 +8254,7 @@ it is not possible to add this information.
since that is a little more efficient.
+ minor correction to infocmp to avoid displaying "difference" between
two capabilities that are rendered in equivalent forms.
- + add -g option to tic/infocmp to force character constants to be
+ + add "-g" option to tic/infocmp to force character constants to be
displayed in quoted form. Otherwise their decimal values are shown.
+ modify setupterm so that cancelled strings are treated the same as
absent strings, cancelled and absent booleans false (does not affect
@@ -8979,15 +10332,18 @@ it is not possible to add this information.
+ correction to #317.
> 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.
+ + modify EmitRange to maintain position as per original design
+ (patch by A. Lukyanov).
+ + modify test/ncurses.c and tputs, etc., to allow trace counting
+ output characters.
+ + add hashtest.c program to time the hashmap optimization.
> 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 (ESR):
- + merged Alexander V Lukyanov's patch to use ech and rep - untested
- (lib_doupdate.c).
+ + merge changes to lib_doupdate.c to use ech and rep - untested
+ (patch by Alexander V Lukyanov).
+ modified handling of interrupted system calls - untested
(lib_getch.c, lib_twait.c).
+ new function _nc_mvcur_resume()
@@ -9059,12 +10415,12 @@ it is not possible to add this information.
+ corrected typo in dtterm description.
> patch 313 (ESR):
+ add dtterm description
- + clarify ncurses 'i' test (drop vscanf subtest)
+ + clarify ncurses 'i' test (drop mvwscanw subtest)
960810 - snapshot
+ correct nl()/nonl() to work as per SVr4 & XSI.
+ minor fixes to ncurses.c (use 'noraw()', mvscanw return-code)
- + refine configure-test for -g option (Tim Mooney).
+ + refine configure-test for "-g" option (Tim Mooney).
+ correct interaction between O_BLANK and NEW_LINE request in form
library (Juergen Pfeifer)
@@ -9073,7 +10429,8 @@ it is not possible to add this information.
> patch 312 (ESR):
correct terminfo.src corrupted by #310
> patch 311 (ESR):
- + fix idlok() and idcok() and the default of the idlok switch.
+ + fix idlok() and idcok() and the default of the idlok switch (report
+ by Ville Sulko).
960803 - snapshot
+ corrected tparm to handle capability strings without explicit pop
@@ -9083,7 +10440,7 @@ it is not possible to add this information.
> 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)
+ + updated qnx terminfo entry (patch by Michael Hunter)
960730
+ eliminate quoted includes in ncurses subdirectory, ensure config.h
@@ -9095,7 +10452,7 @@ it is not possible to add this information.
+ call cbreak() in initscr(), as per XSI & SVr4.
+ turn off hardware echo in initscr() as per XSI & SVr4
> patch 309 (ESR):
- + terminfo changes (9.3.10), from BRL
+ + terminfo changes (9.3.9), from BRL
+ add more checks to terminfo parser.
+ add more symbols to infocmp.
@@ -9114,6 +10471,7 @@ it is not possible to add this information.
> patch 308 (ESR):
+ terminfo changes (9.3.8)
+ modified logic of error-reporting in terminfo parser
+ + fix option-processing bug in toe.
960713 - snapshot
+ always check for <sys/bsdtypes.h> since ISC needs it to declare
@@ -9122,9 +10480,19 @@ it is not possible to add this information.
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 (ESR).
+ + patch 307 (ESR):
+ + enable more translations of nonstandard caps, and document them.
+ + misc/terminfo.src update to 9.13.8
+ + patch 306 (ESR):
+ moved logic that filters out rmul and rmso from setupterm to newterm
where it is less likely to interfere with termcap applications.
+ + cosmetic fixes to test/ncurses.c
+ + modify open() call in ncurses/read_entry.c to use O_RDONLY symbol
+ rather than constant (report by mib).
+ + misc/terminfo.src sgr0 and acsc changes (report by Philippe De
+ Muyter).
+ + modify ncurses/comp_parse.c so that entries containing a "+" can
+ have missing rmcup vs smcup.
960707
+ rollback ESR's #305 change to terminfo.src (it breaks existing
@@ -9139,7 +10507,6 @@ it is not possible to add this information.
+ 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 (ESR).
+ work around autoconf bug, force $INSTALL to absolute path
(reported by Zeyd).
+ modify man-page install for BSDI to install preformatted .0 files
@@ -9152,6 +10519,12 @@ it is not possible to add this information.
+ disable scrollok during the ncurses 'p' test; if it is enabled the
stdscr will scroll when putting the box-corners in the lower-right
of the screen.
+ > patch 305 (ESR):
+ + added sanity-checking of various paired string attributes.
+ + misc/terminfo.src update to 9.13.7 (report by A. Lukyanov).
+ + modify man/Makefile.in to make terminfo.5 during normal build.
+ > patch 304 (ESR):
+ + corrected allocation-length for $HOME/.terminfo path.
960629 - snapshot
+ check return code of _nc_mvcur_scrolln() in _nc_scroll_optimize() for
@@ -9234,6 +10607,7 @@ it is not possible to add this information.
+ better fix for nvi refresh-bug (Rick Marshall)
+ fix for bug in handling of interrupted keystroke waits,
(Werner Fleck).
+ + misc/ncurses-intro.html syntax fix (Kajiyama Tamito).
960601 - snapshot
+ auto-configure man-page compression-format and renames for Debian.
@@ -9248,7 +10622,7 @@ it is not possible to add this information.
+ enhancement to the control over the new PC-style soft key format.
allow caller now to select whether or not one wants to have
the index-line; see curs_slk.3x for documentation (Juergen Pfeifer).
- + typos, don't use inline with -g (Philippe De Muyter)
+ + typos, don't use inline with "-g" (Philippe De Muyter)
+ fixes for menus & wattr-, slk-functions (Juergen Pfeifer)
960526 - snapshot
@@ -9263,6 +10637,9 @@ it is not possible to add this information.
+ include sys/types.h in case stdlib.h does not declare size_t.
+ fixes for makefile (Tim Mooney)
+ fixes for menus & forms (Juergen Pfeifer)
+ > patch 302 (ESR):
+ + improve hash function (suggested by Alexander V Lukyanov).
+ + 9.13.4 update for terminfo.src
960518 - snapshot
+ revised ncurses.c panner test, let pad abut all 4 sides of screen.
@@ -9275,6 +10652,8 @@ it is not possible to add this information.
confusion, and made this check for the /usr/lib/terminfo pre-existing
directory.
> patches 299-301 (ESR):
+ + html fixes (Phillippe de Muyter).
+ + fix typo in ncurses-intro.html (report by Fabrizio Polacco).
+ added hashmap.c
+ mods to tracing, especially for ACS chars.
+ corrected off-by-one in IDCtransform.
@@ -9294,13 +10673,21 @@ it is not possible to add this information.
> patches 297, 298 (ESR):
+ implement TERMINFO_DIRS, and -o option of tic
+ added TRACE_IEVENT
- + removed boolean version of 'getm'
- + added lib_print.c (for Rick Marshall)
- + added has_key()
+ + fix REQ_TOGGLE_ITEM in menu/menu_driver.c; it could select but not
+ deselect.
+ + added lib_print.c (request by Rick Marshall).
+ + added has_key() (request by Juergen Pfeifer).
+ + do not issue clrtoeol or clrtobot if the relevant portion of the line
+ is already blank (analysis by Keith Bostic).
+ + add parentheses for parameters of COLOR_PAIR and PAIR_NUMBER macros
+ (analysis by Jurgen Eidt).
+ + update screen's notion of cursor position in endwin() (analysis by
+ Alexander Lukyanov).
+ added 't' to ncurses.c test.
+ moved delay_output() to lib_tputs.c
+ removed tparam() (was added in 1.9.9, but conflicts with emacs and
is not part of X/Open Curses).
+ + removed boolean version of 'getm'.
+ misc cursor & optimization fixes.
960504 - snapshot
@@ -9326,11 +10713,20 @@ it is not possible to add this information.
+ make TIOCGWINSZ configure test less stringent, in case user
configures via terminal that cannot get screen size.
> patches 295, 296 (ESR):
- + new "-e" option of tic.
- + fix for "infocmp -e".
- + restore working-directory in read_termcap.c
+ split lib_kernel.c, lib_setup.c and names.c in order to reduce
overhead for programs that use only termcap features.
+ + new "-e" and "-h" options of tic (request by Tony Nugent).
+ + fix bug in mandatory-delay logic in lib_tputs.c (report by Sven
+ Verdoolaege).
+ + fix for "infocmp -e" to emit correct initializers (reported by Manual
+ J Novoa III).
+ + restore working-directory in read_termcap.c (report by Kayvan
+ Sylvan).
+ + use "-h" option on Solaris when generating shared libraries on
+ Solaris 2.5 to record the library name in the file, for assisting
+ the loader (patch by Scott Kramer).
+ + undo patch #294 changes to form and menu libraries (request by
+ Juergen Pfeifer).
960418 - snapshot
+ use autoconf 2.9
@@ -9338,10 +10734,22 @@ it is not possible to add this information.
definitions via <termios.h>, modified macros in lib_raw.c to avoid
K&R-style substitution)
> patches 293, 294 (ESR):
- + mods to wgetch() in cooked mode
- + corrected askuser() logic in tset
- + correct interaction of endwin() with mouse processing
+ + rewrite wsyncup(), wsyncdown(), as well as small fixes to form and
+ menu libraries to fix echo-breakage introduced by 1.8.9, 1.9.9e
+ changes (patches by Juergen Pfeifer).
+ + fix compile under QNX 4.2 by defining ONLCR in lib_raw.c when
+ __QNX__ is defined (patch by Michael Hunter).
+ + modify setupterm() to match documentation for its return value, fix
+ newterm to work with this change (report by Emmet Lazich).
+ + add checks in getch() for error, return ERR as appropriate (report by
+ Emmet Lazich).
+ + mods to wgetch() in cooked mode (report by Pete Seebach).
+ + corrected askuser() logic in tset (patch by Remco Treffkorn).
+ + correct interaction of endwin() with mouse processing (report by
+ Michael Elkins).
+ added trace support for TTY flags
+ + update terminfo.src to 9.13.1
+ + FreeBSD console entries (patch by Andrew Chernov).
960406
+ fixes for NeXT, ISC and HPUX auto-configure
diff --git a/contrib/ncurses/README b/contrib/ncurses/README
index 56bc38586f48..c509352b785e 100644
--- a/contrib/ncurses/README
+++ b/contrib/ncurses/README
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. --
+-- Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: README,v 1.23 2006/04/22 22:19:37 tom Exp $
+-- $Id: README,v 1.25 2012/08/11 20:11:26 tom Exp $
-------------------------------------------------------------------------------
README file for the ncurses package
@@ -78,6 +78,10 @@ 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.
+If you configure using the --enable-reentrant option, a "t" is appended to the
+library names (e.g., libncursest.a) and the resulting libraries have a
+different binary interface which makes the ncurses interface more "opaque".
+
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
@@ -122,8 +126,9 @@ The utilities are as follows:
tic -- terminfo source to binary compiler
infocmp -- terminfo binary to source decompiler/comparator
clear -- emits clear-screen for current terminal
+ tabs -- set tabs on a terminal
tput -- shell-script access to terminal capabilities.
- toe -- table of entries utility
+ toe -- table of entries utility
tset -- terminal-initialization utility
The first two (tic and infocmp) are used for manipulating terminfo
@@ -153,8 +158,10 @@ Thomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0):
configuration scripts, porting, mods to adhere to XSI Curses in the
areas of background color, terminal modes. Also memory leak testing,
the wresize, default colors and key definition extensions and numerous
- bug fixes (more than half of those enumerated in NEWS beginning with
- the internal release 1.8.9).
+ bug fixes -- more than half of those enumerated in NEWS beginning with
+ the internal release 1.8.9, see
+
+ http://invisible-island.net/personal/changelogs.html
Florian La Roche (official maintainer for FSF's ncurses 4.2)
Beginning with release 4.2, ncurses is distributed under an MIT-style
diff --git a/contrib/ncurses/README.MinGW b/contrib/ncurses/README.MinGW
index d111b3877840..f7d789777a1d 100644
--- a/contrib/ncurses/README.MinGW
+++ b/contrib/ncurses/README.MinGW
@@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
--- Copyright (c) 2008-2010,2011 Free Software Foundation, Inc. --
+-- Copyright (c) 2008-2011,2012 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
-- copy of this software and associated documentation files (the --
@@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: README.MinGW,v 1.5 2011/02/26 16:57:17 tom Exp $
+-- $Id: README.MinGW,v 1.9 2012/09/22 17:46:04 tom Exp $
-- Author: Juergen Pfeifer
-------------------------------------------------------------------------------
@@ -39,7 +39,7 @@ from http://www.mingw.org
To build ncurses for native Windows, you need the MinGW toolchain. The
original MinGW toolchain from the above site is only for 32-Bit Windows. As
Windows Server - and also regular workstations - are moving to 64-Bit, it
-seems to be reasonable to have a toolchain that supports both architectures.
+seems to be reasonable to have a toolchain that supports both architectures.
I recommend to use the TDM gcc toolchain which you can find at
http://tdm-gcc.tdragon.net/download. Go to the download section and select
the bundle installer for tdm64 (MinGW-w64). This installs a multilib version
@@ -47,7 +47,7 @@ of the gcc toolchain that can compile for native 32- and 64-Bit Windows
versions. It also comes with a working pthread implementation.
The latest config and build scripts we use for MinGW have only been tested
-for the gcc-4.4 compiler toolchain (or better).
+for the gcc-4.6.1 compiler toolchain (or better).
Using MinGW is a pragmatic decision, it's the easiest way to port this
heavily UNIX based sourcebase to native Windows. The goal is of course
@@ -55,22 +55,13 @@ to provide the includes, libraries and DLLs to be used with the more
common traditional development environments on Windows, mainly with
Microsoft Visual Studio.
-If you start a bash from the MSYS environment, please make sure that the
-Microsoft Development tools are in your PATH right after the MinGW
-tools. The LIB.EXE tool is the only one needed. You need this only if
-you want to build DLLs that work with native Windows programs. If you
-don't have any Microsoft Development tools on your machine, consider
-at least to get the free "Visual C++ 2010 Express Edition".
-It contains the LIB.EXE tool. You may also use this compiler to test
-writing native Windows programs using the ncurses DLLs without using
-MinGW then for writing apps.
-
-It is necessary to unset the TERM environment variable, to activate the
-Windows console-driver.
+The TERM environment variable must be set specially to active the Windows
+console-driver. The driver checks if TERM is set to "#win32con" (explicit
+use) or if TERM is unset or empty (implicit).
Please also make sure that MSYS links to the correct directory containing
your MinGW toolchain. For TDM this is usually C:\MinGW64. In your Windows
-CMD.EXE command shell go to the MSYS root directory (most probably
+CMD.EXE command shell go to the MSYS root directory (most probably
C:\MSYS or C:\MSYS\1.0) and verify, that there is a junction point mingw
that points to the MinGW toolchain directory. If not, delete the mingw
directory and use the mklink command (or the linkd.exe utility on older
@@ -79,62 +70,60 @@ Windows) to create the junction point.
This code requires WindowsNT 5.1 or better, which means on the client
Windows XP or better, on the server Windows Server 2003 or better.
-In order to build ncurses for the planned interop layer with .NET, we
-recommend to use these options with configure
+I recommend using libtool to build ncurses on MinGW, because libtool
+knows exactly how to build dll's on Windows for use with MinGW.
+
+To build a modern but still small footprint ncurses that provides
+hooks for interop, I recommend using these options:
+ --with-libtool
--disable-home-terminfo
- --enable-reentrant
+ --enable-database
+ --disable-termcap
--enable-sp-funcs
--enable-term-driver
--enable-interop
- --with-pthread (if using TDM toolchain as recommended)
-This is the configuration commandline as I'm using it at the moment:
+This is the configuration commandline as I'm using it at the moment (assuming
+environment variable MINGW_ROOT to hold the root directory name of your MinGW
+build):
./configure \
- --prefix=/mingw \
- --without-cxx-binding \
+ --prefix=$MINGW_ROOT \
+ --with-cxx \
--without-ada \
--enable-warnings \
--enable-assertions \
- --enable-reentrant \
- --with-debug \
- --with-normal \
--disable-home-terminfo \
+ --enable-database \
--enable-sp-funcs \
--enable-term-driver \
--enable-interop \
- --with-pthread
+ --disable-termcap \
+ --with-progs \
+ --with-libtool \
+ --enable-pc-files \
+ --mandir=$MINGW_ROOT/share/man
-If you are on a 64-Bit Windows system and want to build a 32-Bit version
-of ncurses, you may use this commandline for configuration (when using
-the TDM toolchain):
+Please note that it is also necessary to set this environment variable:
-CC="gcc -m32" LD="ld -m32" ./configure \
- --prefix=/mingw \
- --without-cxx-binding \
- --without-ada \
- --enable-warnings \
- --enable-assertions \
- --enable-reentrant \
- --with-debug \
- --with-normal \
- --disable-home-terminfo \
- --enable-sp-funcs \
- --enable-term-driver \
- --enable-interop \
- --with-pthread
+export PATH_SEPARATOR=";"
-All the options above are - like the whole Windows support -
-experimental.
+in order to parse the terminfo paths correctly. Terminfo paths should
+always be separated by a seeeemicolon,even when running under MSYS.
-In order to build the DLLs, after your regular make you must call
+To support regular expressions properly, ncurses under MinGW should be
+linked against the gnurx regex library, which must be built separately
+under MinGW. See
- make dlls
+ ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/libgnurx-src-2.5.zip
+
+All the options above are - like the whole Windows support -
+experimental.
A lot is still TODO, e.g.:
- - Wide Character support
+ - Wide Character support (display is workable, but input untested)
The Win32Con driver should actually only use Unicode in the
future.
- Thread support (locking). If using TDM toolchain this is done by
@@ -145,5 +134,5 @@ A lot is still TODO, e.g.:
- Workarounds for MinGW's filesystem access are necessary to make infocmp
work (though tic works).
-To support terminfo, we need to have an ioctl() simulation for the
-serial and networked Terminals.
+To support terminfo, we would need to have an ioctl() simulation for the
+serial and networked terminals.
diff --git a/contrib/ncurses/aclocal.m4 b/contrib/ncurses/aclocal.m4
index 9a828559d4ab..e73959ecc239 100644
--- a/contrib/ncurses/aclocal.m4
+++ b/contrib/ncurses/aclocal.m4
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+dnl Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
dnl *
dnl Permission is hereby granted, free of charge, to any person obtaining a *
dnl copy of this software and associated documentation files (the *
@@ -28,7 +28,7 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: aclocal.m4,v 1.553 2011/03/31 23:35:38 tom Exp $
+dnl $Id: aclocal.m4,v 1.686 2014/02/10 00:37:02 tom Exp $
dnl Macros used in NCURSES auto-configuration script.
dnl
dnl These macros are maintained separately from NCURSES. The copyright on
@@ -62,7 +62,33 @@ AC_DEFUN([AM_LANGINFO_CODESET],
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADA_INCLUDE_DIRS version: 6 updated: 2010/02/26 19:52:07
+dnl CF_ACVERSION_CHECK version: 4 updated: 2013/03/04 19:52:56
+dnl ------------------
+dnl Conditionally generate script according to whether we're using a given autoconf.
+dnl
+dnl $1 = version to compare against
+dnl $2 = code to use if AC_ACVERSION is at least as high as $1.
+dnl $3 = code to use if AC_ACVERSION is older than $1.
+define([CF_ACVERSION_CHECK],
+[
+ifdef([AC_ACVERSION], ,[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])dnl
+ifdef([m4_version_compare],
+[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])],
+[CF_ACVERSION_COMPARE(
+AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])),
+AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53
+dnl --------------------
+dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1,
+dnl MAJOR2, MINOR2, TERNARY2,
+dnl PRINTABLE2, not FOUND, FOUND)
+define([CF_ACVERSION_COMPARE],
+[ifelse(builtin([eval], [$2 < $5]), 1,
+[ifelse([$8], , ,[$8])],
+[ifelse([$9], , ,[$9])])])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_ADA_INCLUDE_DIRS version: 8 updated: 2013/10/14 04:24:07
dnl -------------------
dnl Construct the list of include-options for the C programs in the Ada95
dnl binding.
@@ -76,7 +102,7 @@ if test "$GCC" != yes; then
ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
elif test "$includedir" != "/usr/include"; then
if test "$includedir" = '${prefix}/include' ; then
- if test $prefix != /usr ; then
+ if test x$prefix != x/usr ; then
ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
fi
else
@@ -291,7 +317,7 @@ dnl $1 = libraries to add, with the "-l", etc.
dnl $2 = variable to update (default $LIBS)
AC_DEFUN([CF_ADD_LIBS],[ifelse($2,,LIBS,[$2])="$1 [$]ifelse($2,,LIBS,[$2])"])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ADD_SUBDIR_PATH version: 3 updated: 2010/07/03 20:58:12
+dnl CF_ADD_SUBDIR_PATH version: 4 updated: 2013/10/08 17:47:05
dnl ------------------
dnl Append to a search-list for a nonstandard header/lib-file
dnl $1 = the variable to return as result
@@ -301,9 +327,9 @@ dnl $4 = the directory under which we will test for subdirectories
dnl $5 = a directory that we do not want $4 to match
AC_DEFUN([CF_ADD_SUBDIR_PATH],
[
-test "$4" != "$5" && \
+test "x$4" != "x$5" && \
test -d "$4" && \
-ifelse([$5],NONE,,[(test $5 = NONE || test "$4" != "$5") &&]) {
+ifelse([$5],NONE,,[(test -z "$5" || test x$5 = xNONE || test "x$4" != "x$5") &&]) {
test -n "$verbose" && echo " ... testing for $3-directories under $4"
test -d $4/$3 && $1="[$]$1 $4/$3"
test -d $4/$3/$2 && $1="[$]$1 $4/$3/$2"
@@ -313,76 +339,6 @@ ifelse([$5],NONE,,[(test $5 = NONE || test "$4" != "$5") &&]) {
}
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ANSI_CC_CHECK version: 10 updated: 2010/10/23 15:52:32
-dnl ----------------
-dnl This is adapted from the macros 'fp_PROG_CC_STDC' and 'fp_C_PROTOTYPES'
-dnl in the sharutils 4.2 distribution.
-AC_DEFUN([CF_ANSI_CC_CHECK],
-[
-AC_CACHE_CHECK(for ${CC:-cc} option to accept ANSI C, cf_cv_ansi_cc,[
-cf_cv_ansi_cc=no
-cf_save_CFLAGS="$CFLAGS"
-cf_save_CPPFLAGS="$CPPFLAGS"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX -Aa -D_HPUX_SOURCE
-# SVR4 -Xc
-# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes)
-for cf_arg in "-DCC_HAS_PROTOS" \
- "" \
- -qlanglvl=ansi \
- -std1 \
- -Ae \
- "-Aa -D_HPUX_SOURCE" \
- -Xc
-do
- CF_ADD_CFLAGS($cf_arg)
- AC_TRY_COMPILE(
-[
-#ifndef CC_HAS_PROTOS
-#if !defined(__STDC__) || (__STDC__ != 1)
-choke me
-#endif
-#endif
-],[
- int test (int i, double x);
- struct s1 {int (*f) (int a);};
- struct s2 {int (*f) (double a);};],
- [cf_cv_ansi_cc="$cf_arg"; break])
-done
-CFLAGS="$cf_save_CFLAGS"
-CPPFLAGS="$cf_save_CPPFLAGS"
-])
-
-if test "$cf_cv_ansi_cc" != "no"; then
-if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then
- CF_ADD_CFLAGS($cf_cv_ansi_cc)
-else
- AC_DEFINE(CC_HAS_PROTOS)
-fi
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
-dnl CF_ANSI_CC_REQD version: 4 updated: 2008/03/23 14:48:54
-dnl ---------------
-dnl For programs that must use an ANSI compiler, obtain compiler options that
-dnl will make it recognize prototypes. We'll do preprocessor checks in other
-dnl macros, since tools such as unproto can fake prototypes, but only part of
-dnl the preprocessor.
-AC_DEFUN([CF_ANSI_CC_REQD],
-[AC_REQUIRE([CF_ANSI_CC_CHECK])
-if test "$cf_cv_ansi_cc" = "no"; then
- AC_MSG_ERROR(
-[Your compiler does not appear to recognize prototypes.
-You have the following choices:
- a. adjust your compiler options
- b. get an up-to-date compiler
- c. use a wrapper such as unproto])
-fi
-])dnl
-dnl ---------------------------------------------------------------------------
dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31
dnl --------------
dnl Allow user to disable a normally-on option.
@@ -465,7 +421,7 @@ fi
AC_SUBST(ARFLAGS)
])
dnl ---------------------------------------------------------------------------
-dnl CF_AWK_BIG_PRINTF version: 3 updated: 2008/12/27 12:30:03
+dnl CF_AWK_BIG_PRINTF version: 4 updated: 2011/10/30 17:09:50
dnl -----------------
dnl Check if awk can handle big strings using printf. Some older versions of
dnl awk choke on large strings passed via "%s".
@@ -479,8 +435,8 @@ AC_DEFUN([CF_AWK_BIG_PRINTF],
eval $2=no
;;
*) #(vi
- if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < $1) { xx = xx "x"; }; printf("%s\n", xx); }' \
- | $AWK '{ printf "%d\n", length([$]0); }' | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ([$]0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then
+ if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < $1) { xx = xx "x"; }; printf("%s\n", xx); }' 2>/dev/null \
+ | $AWK '{ printf "%d\n", length([$]0); }' 2>/dev/null | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ([$]0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then
eval $2=yes
else
eval $2=no
@@ -536,7 +492,7 @@ else AC_MSG_RESULT(no)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_BOOL_SIZE version: 12 updated: 2006/12/16 12:33:30
+dnl CF_BOOL_SIZE version: 13 updated: 2013/04/13 18:03:21
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.
@@ -570,7 +526,7 @@ AC_CACHE_VAL(cf_cv_type_of_bool,[
#endif
-main()
+int main()
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
@@ -604,7 +560,7 @@ 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 CF_BUILD_CC version: 7 updated: 2012/10/06 15:31:55
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
@@ -614,7 +570,8 @@ dnl
dnl $1 = default for $CPPFLAGS
dnl $2 = default for $LIBS
AC_DEFUN([CF_BUILD_CC],[
-AC_REQUIRE([CF_PROG_EXT])
+CF_ACVERSION_CHECK(2.52,,
+ [AC_REQUIRE([CF_PROG_EXT])])
if test "$cross_compiling" = yes ; then
# defaults that we might want to override
@@ -695,7 +652,33 @@ AC_SUBST(BUILD_EXEEXT)
AC_SUBST(BUILD_OBJEXT)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CFG_DEFAULTS version: 7 updated: 2005/09/24 16:15:00
+dnl CF_CC_ENV_FLAGS version: 1 updated: 2012/10/03 05:25:49
+dnl ---------------
+dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
+dnl into CC. This will not help with broken scripts that wrap the compiler with
+dnl options, but eliminates a more common category of user confusion.
+AC_DEFUN([CF_CC_ENV_FLAGS],
+[
+# This should have been defined by AC_PROG_CC
+: ${CC:=cc}
+
+AC_MSG_CHECKING(\$CC variable)
+case "$CC" in #(vi
+*[[\ \ ]]-[[IUD]]*)
+ AC_MSG_RESULT(broken)
+ AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options)
+ # humor him...
+ cf_flags=`echo "$CC" | sed -e 's/^[[^ ]]*[[ ]]//'`
+ CC=`echo "$CC" | sed -e 's/[[ ]].*//'`
+ CF_ADD_CFLAGS($cf_flags)
+ ;;
+*)
+ AC_MSG_RESULT(ok)
+ ;;
+esac
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CFG_DEFAULTS version: 10 updated: 2013/09/07 13:54:05
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
@@ -713,7 +696,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*|freebsd*|linux*|cygwin*|k*bsd*-gnu)
+ openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
prefix=/usr
;;
*) prefix=$ac_default_prefix
@@ -749,30 +732,51 @@ AC_MSG_RESULT($includedir)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CGETENT version: 3 updated: 2000/08/12 23:18:52
+dnl CF_CGETENT version: 5 updated: 2012/10/06 17:56:13
dnl ----------
dnl Check if the terminal-capability database functions are available. If not,
dnl ncurses has a much-reduced version.
AC_DEFUN([CF_CGETENT],[
-AC_MSG_CHECKING(for terminal-capability database functions)
-AC_CACHE_VAL(cf_cv_cgetent,[
+AC_CACHE_CHECK(for terminal-capability database functions,cf_cv_cgetent,[
AC_TRY_LINK([
#include <stdlib.h>],[
char temp[128];
char *buf = temp;
char *db_array = temp;
- cgetent(&buf, /* int *, */ &db_array, "vt100");
+ cgetent(&buf, &db_array, "vt100");
cgetcap(buf, "tc", '=');
cgetmatch(buf, "tc");
],
[cf_cv_cgetent=yes],
[cf_cv_cgetent=no])
])
-AC_MSG_RESULT($cf_cv_cgetent)
-test "$cf_cv_cgetent" = yes && AC_DEFINE(HAVE_BSD_CGETENT)
+
+if test "$cf_cv_cgetent" = yes
+then
+ AC_DEFINE(HAVE_BSD_CGETENT,1,[Define to 1 if we have BSD cgetent])
+AC_CACHE_CHECK(if cgetent uses const parameter,cf_cv_cgetent_const,[
+AC_TRY_LINK([
+#include <stdlib.h>],[
+ char temp[128];
+ char *buf = temp;
+#ifndef _NETBSD_SOURCE /* given, since April 2004 in stdlib.h */
+ const char *db_array = temp;
+ cgetent(&buf, &db_array, "vt100");
+#endif
+ cgetcap(buf, "tc", '=');
+ cgetmatch(buf, "tc");
+ ],
+ [cf_cv_cgetent_const=yes],
+ [cf_cv_cgetent_const=no])
+])
+ if test "$cf_cv_cgetent_const" = yes
+ then
+ AC_DEFINE_UNQUOTED(CGETENT_CONST,const,[Define to const if needed for some BSD cgetent variations])
+ fi
+fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_CACHE version: 11 updated: 2008/03/23 14:45:59
+dnl CF_CHECK_CACHE version: 12 updated: 2012/10/02 20:55:03
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.
@@ -795,7 +799,7 @@ else
system_name="`(hostname) 2>/dev/null`"
fi
fi
-test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name")
+test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.])
AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"])
test -z "$system_name" && system_name="$cf_cv_system_name"
@@ -908,7 +912,82 @@ if test "$cf_cv_check_gpm_wgetch" != yes ; then
fi
])])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CPP_PARAM_INIT version: 4 updated: 2001/04/07 22:31:18
+dnl CF_CHECK_LIBTOOL_VERSION version: 1 updated: 2013/04/06 18:03:09
+dnl ------------------------
+dnl Show the version of libtool
+dnl
+dnl Save the version in a cache variable - this is not entirely a good thing,
+dnl but the version string from libtool is very ugly, and for bug reports it
+dnl might be useful to have the original string.
+AC_DEFUN([CF_CHECK_LIBTOOL_VERSION],[
+if test -n "$LIBTOOL" && test "$LIBTOOL" != none
+then
+ AC_MSG_CHECKING(version of $LIBTOOL)
+ CF_LIBTOOL_VERSION
+ AC_MSG_RESULT($cf_cv_libtool_version)
+ if test -z "$cf_cv_libtool_version" ; then
+ AC_MSG_ERROR(This is not GNU libtool)
+ fi
+else
+ AC_MSG_ERROR(GNU libtool has not been found)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CHECK_WCHAR_H version: 1 updated: 2011/10/29 15:01:05
+dnl ----------------
+dnl Check if wchar.h can be used, i.e., without defining _XOPEN_SOURCE_EXTENDED
+AC_DEFUN([CF_CHECK_WCHAR_H],[
+AC_CACHE_CHECK(if wchar.h can be used as is,cf_cv_wchar_h_okay,[
+AC_TRY_COMPILE(
+[
+#include <stdlib.h>
+#include <wchar.h>
+],[
+ wint_t foo = 0;
+ int bar = iswpunct(foo)],
+ [cf_cv_wchar_h_okay=yes],
+ [cf_cv_wchar_h_okay=no])])
+
+if test $cf_cv_wchar_h_okay = no
+then
+ CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED)
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CLANG_COMPILER version: 2 updated: 2013/11/19 19:23:35
+dnl -----------------
+dnl Check if the given compiler is really clang. clang's C driver defines
+dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does
+dnl not ignore some gcc options.
+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 = CLANG_COMPILER (default)
+dnl $3 = CFLAGS (default) or CXXFLAGS
+AC_DEFUN([CF_CLANG_COMPILER],[
+ifelse([$2],,CLANG_COMPILER,[$2])=no
+
+if test "$ifelse([$1],,[$1],GCC)" = yes ; then
+ AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler)
+ cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])"
+ ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -Qunused-arguments"
+ AC_TRY_COMPILE([],[
+#ifdef __clang__
+#else
+make an error
+#endif
+],[ifelse([$2],,CLANG_COMPILER,[$2])=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
+],[])
+ ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS"
+ AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2]))
+fi
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_CPP_PARAM_INIT version: 6 updated: 2012/10/06 17:56:13
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
@@ -932,7 +1011,7 @@ TEST::TEST(int x = 1) // some compilers do not like second initializer
{
value = x;
}
-void main() { }
+int main() { }
],
[cf_cv_cpp_param_init=yes],
[cf_cv_cpp_param_init=no],
@@ -940,10 +1019,10 @@ void main() { }
AC_LANG_RESTORE
])
fi
-test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT)
+test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT,1,[Define to 1 if C++ has parameter initialization])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_CPP_STATIC_CAST version: 1 updated: 2005/07/23 16:52:43
+dnl CF_CPP_STATIC_CAST version: 3 updated: 2013/04/13 18:03:21
dnl ------------------
dnl Check if the C++ compiler accepts static_cast in generics. This appears to
dnl not be supported in g++ before 3.0
@@ -965,7 +1044,7 @@ public:
int begin_x = 0)
{
}
-
+ NCursesPanel();
~NCursesPanel();
};
@@ -996,10 +1075,58 @@ public:
fi
-test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST)
+test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST,1,[Define to 1 if C++ has static_cast])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_C_INLINE version: 3 updated: 2010/05/01 15:14:41
+dnl CF_CXX_AR_FLAGS version: 1 updated: 2011/10/29 08:35:34
+dnl ---------------
+dnl Setup special archiver flags for given compilers.
+AC_DEFUN([CF_CXX_AR_FLAGS],[
+ CXX_AR='$(AR)'
+ CXX_ARFLAGS='$(ARFLAGS)'
+ case $cf_cv_system_name in #(vi
+ irix*) #(vi
+ if test "$GXX" != yes ; then
+ CXX_AR='$(CXX)'
+ CXX_ARFLAGS='-ar -o'
+ fi
+ ;;
+ sco3.2v5*) #(vi
+ CXXLDFLAGS="-u main"
+ ;;
+ solaris2*)
+ if test "$GXX" != yes ; then
+ CXX_AR='$(CXX)'
+ CXX_ARFLAGS='-xar -o'
+ fi
+ ;;
+ esac
+ AC_SUBST(CXXLDFLAGS)
+ AC_SUBST(CXX_AR)
+ AC_SUBST(CXX_ARFLAGS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_CXX_IOSTREAM_NAMESPACE version: 2 updated: 2012/10/06 17:56:13
+dnl -------------------------
+dnl For c++, check if iostream uses "std::" namespace.
+AC_DEFUN([CF_CXX_IOSTREAM_NAMESPACE],[
+AC_CHECK_HEADERS(iostream)
+if test x"$ac_cv_header_iostream" = xyes ; then
+ AC_MSG_CHECKING(if iostream uses std-namespace)
+ AC_TRY_COMPILE([
+#include <iostream>
+using std::endl;
+using std::cerr;],[
+cerr << "testing" << endl;
+],[cf_iostream_namespace=yes],[cf_iostream_namespace=no])
+ AC_MSG_RESULT($cf_iostream_namespace)
+ if test "$cf_iostream_namespace" = yes ; then
+ AC_DEFINE(IOSTREAM_NAMESPACE,1,[Define to 1 if C++ has namespace iostream])
+ fi
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_C_INLINE version: 4 updated: 2012/06/16 14:55:39
dnl -----------
dnl Check if the C compiler supports "inline".
dnl $1 is the name of a shell variable to set if inline is supported
@@ -1012,6 +1139,9 @@ if test "$ac_cv_c_inline" != no ; then
if test "$INTEL_COMPILER" = yes
then
:
+ elif test "$CLANG_COMPILER" = yes
+ then
+ :
elif test "$GCC" = yes
then
AC_CACHE_CHECK(if $CC supports options to tune inlining,cf_cv_gcc_inline,[
@@ -1057,7 +1187,44 @@ done
AC_SUBST(DIRS_TO_MAKE)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_DISABLE_LEAKS version: 6 updated: 2010/07/23 04:14:32
+dnl CF_DISABLE_ECHO version: 12 updated: 2012/10/06 16:30:28
+dnl ---------------
+dnl You can always use "make -n" to see the actual options, but it's hard to
+dnl pick out/analyze warning messages when the compile-line is long.
+dnl
+dnl Sets:
+dnl ECHO_LT - symbol to control if libtool is verbose
+dnl ECHO_LD - symbol to prefix "cc -o" lines
+dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o)
+dnl SHOW_CC - symbol to put before explicit "cc -c" lines
+dnl ECHO_CC - symbol to put before any "cc" line
+dnl
+AC_DEFUN([CF_DISABLE_ECHO],[
+AC_MSG_CHECKING(if you want to see long compiling messages)
+CF_ARG_DISABLE(echo,
+ [ --disable-echo do not display "compiling" commands],
+ [
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking [$]@;'
+ RULE_CC='@echo compiling [$]<'
+ SHOW_CC='@echo compiling [$]@'
+ ECHO_CC='@'
+],[
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
+])
+AC_MSG_RESULT($enableval)
+AC_SUBST(ECHO_LT)
+AC_SUBST(ECHO_LD)
+AC_SUBST(RULE_CC)
+AC_SUBST(SHOW_CC)
+AC_SUBST(ECHO_CC)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_DISABLE_LEAKS version: 7 updated: 2012/10/02 20:55:03
dnl ----------------
dnl Combine no-leak checks with the libraries or tools that are used for the
dnl checks.
@@ -1075,8 +1242,8 @@ AC_ARG_ENABLE(leaks,
AC_MSG_RESULT($with_no_leaks)
if test "$with_no_leaks" = yes ; then
- AC_DEFINE(NO_LEAKS)
- AC_DEFINE(YY_NO_LEAKS)
+ AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
+ AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.])
fi
])dnl
dnl ---------------------------------------------------------------------------
@@ -1123,6 +1290,30 @@ if test "$cf_disable_rpath_hack" = no ; then
fi
])
dnl ---------------------------------------------------------------------------
+dnl CF_ENABLE_PC_FILES version: 9 updated: 2012/08/04 13:59:54
+dnl ------------------
+dnl This is the "--enable-pc-files" option, which is available if there is a
+dnl pkg-config configuration on the local machine.
+AC_DEFUN([CF_ENABLE_PC_FILES],[
+AC_REQUIRE([CF_PKG_CONFIG])
+AC_REQUIRE([CF_WITH_PKG_CONFIG_LIBDIR])
+
+if test "$PKG_CONFIG" != none ; then
+ AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
+ AC_ARG_ENABLE(pc-files,
+ [ --enable-pc-files generate and install .pc files for pkg-config],
+ [enable_pc_files=$enableval],
+ [enable_pc_files=no])
+ AC_MSG_RESULT($enable_pc_files)
+ if test "$enable_pc_files" != no
+ then
+ CF_PATH_SYNTAX(PKG_CONFIG_LIBDIR)
+ fi
+else
+ enable_pc_files=no
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_ENABLE_RPATH version: 2 updated: 2010/03/27 18:39:42
dnl ---------------
dnl Check if the rpath option should be used, setting cache variable
@@ -1137,6 +1328,37 @@ AC_ARG_ENABLE(rpath,
AC_MSG_RESULT($cf_cv_enable_rpath)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_ENABLE_STRING_HACKS version: 3 updated: 2013/01/26 16:26:12
+dnl ----------------------
+dnl On a few platforms, the compiler and/or loader nags with untruthful
+dnl comments stating that "most" uses of strcat/strcpy/sprintf are incorrect,
+dnl and implying that most uses of the recommended alternatives are correct.
+dnl
+dnl Factually speaking, no one has actually counted the number of uses of these
+dnl functions versus the total of incorrect uses. Samples of a few thousand
+dnl instances are meaningless compared to the hundreds of millions of lines of
+dnl existing C code.
+dnl
+dnl strlcat/strlcpy are (as of 2012) non-standard, and are available on some
+dnl platforms, in implementations of varying quality. Likewise, snprintf is
+dnl standard - but evolved through phases, and older implementations are likely
+dnl to yield surprising results, as documented in manpages on various systems.
+AC_DEFUN([CF_ENABLE_STRING_HACKS],
+[
+AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings)
+AC_ARG_ENABLE(string-hacks,
+ [ --enable-string-hacks work around bogus compiler/loader warnings],
+ [with_string_hacks=$enableval],
+ [with_string_hacks=no])
+AC_MSG_RESULT($with_string_hacks)
+
+if test "x$with_string_hacks" = "xyes"; then
+ AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings])
+ AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings)
+ AC_CHECK_FUNCS( strlcat strlcpy snprintf )
+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>
@@ -1145,7 +1367,7 @@ AC_DEFUN([CF_ERRNO],
CF_CHECK_ERRNO(errno)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ETIP_DEFINES version: 3 updated: 2003/03/22 19:13:43
+dnl CF_ETIP_DEFINES version: 5 updated: 2012/02/18 17:51:07
dnl ---------------
dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between
dnl math.h and builtin.h, only for ncurses
@@ -1154,11 +1376,17 @@ AC_DEFUN([CF_ETIP_DEFINES],
AC_MSG_CHECKING(for special defines needed for etip.h)
cf_save_CXXFLAGS="$CXXFLAGS"
cf_result="none"
+
+# etip.h includes ncurses.h which includes ncurses_dll.h
+# But ncurses_dll.h is generated - fix here.
+test -d include || mkdir include
+test -f include/ncurses_dll.h || sed -e 's/@NCURSES_WRAP_PREFIX@/'$NCURSES_WRAP_PREFIX'/g' ${srcdir}/include/ncurses_dll.h.in >include/ncurses_dll.h
+
for cf_math in "" MATH_H
do
for cf_excp in "" MATH_EXCEPTION
do
- CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -I${srcdir}/include"
+ CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -Iinclude -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([
@@ -1167,7 +1395,7 @@ AC_TRY_COMPILE([
test -n "$cf_math" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_math})
test -n "$cf_excp" && AC_DEFINE_UNQUOTED(ETIP_NEEDS_${cf_excp})
cf_result="$cf_math $cf_excp"
- break
+ break 2
],[])
done
done
@@ -1305,7 +1533,35 @@ ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5])
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_DLSYM version: 2 updated: 2010/05/29 16:31:02
+dnl CF_FIXUP_ADAFLAGS version: 1 updated: 2012/03/31 18:48:10
+dnl -----------------
+dnl make ADAFLAGS consistent with CFLAGS
+AC_DEFUN([CF_FIXUP_ADAFLAGS],[
+ AC_MSG_CHECKING(optimization options for ADAFLAGS)
+ case "$CFLAGS" in
+ *-g*)
+ CF_ADD_ADAFLAGS(-g)
+ ;;
+ esac
+ case "$CFLAGS" in
+ *-O*)
+ cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[ ]].*//'`
+ CF_ADD_ADAFLAGS($cf_O_flag)
+ ;;
+ esac
+ AC_MSG_RESULT($ADAFLAGS)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_FORGET_TOOL version: 1 updated: 2013/04/06 18:03:09
+dnl --------------
+dnl Forget that we saw the given tool.
+AC_DEFUN([CF_FORGET_TOOL],[
+unset ac_cv_prog_ac_ct_$1
+unset ac_ct_$1
+unset $1
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_FUNC_DLSYM version: 3 updated: 2012/10/06 11:17:15
dnl -------------
dnl Test for dlsym() and related functions, as well as libdl.
dnl
@@ -1332,7 +1588,7 @@ if test "$cf_have_dlsym" = yes ; then
dlclose(obj);
}
}],[
- AC_DEFINE(HAVE_LIBDL)],[
+ AC_DEFINE(HAVE_LIBDL,1,[Define to 1 if we have dl library])],[
AC_MSG_ERROR(Cannot link test program for libdl)])
AC_MSG_RESULT(ok)
else
@@ -1340,7 +1596,7 @@ else
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_MEMMOVE version: 7 updated: 2006/12/16 12:33:30
+dnl CF_FUNC_MEMMOVE version: 8 updated: 2012/10/04 20:12:20
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.
@@ -1365,13 +1621,13 @@ int main() {
])
],[cf_cv_good_bcopy=no])
if test "$cf_cv_good_bcopy" = yes ; then
- AC_DEFINE(USE_OK_BCOPY)
+ AC_DEFINE(USE_OK_BCOPY,1,[Define to 1 to use bcopy when memmove is unavailable])
else
- AC_DEFINE(USE_MY_MEMMOVE)
+ AC_DEFINE(USE_MY_MEMMOVE,1,[Define to 1 to use replacement function when memmove is unavailable])
fi
])])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_NANOSLEEP version: 3 updated: 2006/12/16 12:33:30
+dnl CF_FUNC_NANOSLEEP version: 4 updated: 2012/10/06 17:56:13
dnl -----------------
dnl Check for existence of workable nanosleep() function. Some systems, e.g.,
dnl AIX 4.x, provide a non-working version.
@@ -1402,7 +1658,7 @@ int main() {
[cf_cv_func_nanosleep=no],
[cf_cv_func_nanosleep=unknown])])
-test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP)
+test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP,1,[Define to 1 if we have nanosleep()])
])
dnl ---------------------------------------------------------------------------
dnl CF_FUNC_OPENPTY version: 3 updated: 2010/05/29 16:31:02
@@ -1433,14 +1689,17 @@ AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[
])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_POLL version: 4 updated: 2006/12/16 12:33:30
+dnl CF_FUNC_POLL version: 8 updated: 2012/10/04 05:24:07
dnl ------------
dnl See if the poll function really works. Some platforms have poll(), but
dnl it does not work for terminals or files.
AC_DEFUN([CF_FUNC_POLL],[
AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[
AC_TRY_RUN([
+#include <stdlib.h>
#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
#ifdef HAVE_POLL_H
#include <poll.h>
#else
@@ -1450,19 +1709,42 @@ int main() {
struct pollfd myfds;
int ret;
- myfds.fd = 0;
+ /* check for Darwin bug with respect to "devices" */
+ myfds.fd = open("/dev/null", 1); /* O_WRONLY */
+ if (myfds.fd < 0)
+ myfds.fd = 0;
myfds.events = POLLIN;
+ myfds.revents = 0;
ret = poll(&myfds, 1, 100);
- ${cf_cv_main_return:-return}(ret != 0);
+
+ if (ret < 0 || (myfds.revents & POLLNVAL)) {
+ ret = -1;
+ } else {
+ int fd = 0;
+ if (!isatty(fd)) {
+ fd = open("/dev/tty", 2); /* O_RDWR */
+ }
+
+ if (fd >= 0) {
+ /* also check with standard input */
+ myfds.fd = fd;
+ myfds.events = POLLIN;
+ myfds.revents = 0;
+ ret = poll(&myfds, 1, 100);
+ } else {
+ ret = -1;
+ }
+ }
+ ${cf_cv_main_return:-return}(ret < 0);
}],
[cf_cv_working_poll=yes],
[cf_cv_working_poll=no],
[cf_cv_working_poll=unknown])])
-test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL)
+test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL,1,[Define to 1 if the poll function seems to work])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_TERMIOS version: 2 updated: 2000/07/22 23:37:24
+dnl CF_FUNC_TERMIOS version: 3 updated: 2012/10/06 17:56:13
dnl ---------------
dnl Some old/broken variations define tcgetattr() only as a macro in
dnl termio(s).h
@@ -1488,10 +1770,10 @@ TTY foo;
tcgetattr(1, &foo);],
[cf_cv_have_tcgetattr=yes],
[cf_cv_have_tcgetattr=no])])
-test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR)
+test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR,1,[Define to 1 if we have tcgetattr])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_FUNC_VSSCANF version: 3 updated: 2001/12/19 00:50:10
+dnl CF_FUNC_VSSCANF version: 4 updated: 2012/10/06 17:56:13
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
@@ -1529,14 +1811,14 @@ AC_TRY_LINK([
cf_cv_func_vsscanf=no])])])])
case $cf_cv_func_vsscanf in #(vi
-vsscanf) AC_DEFINE(HAVE_VSSCANF);; #(vi
-vfscanf) AC_DEFINE(HAVE_VFSCANF);; #(vi
-_doscan) AC_DEFINE(HAVE__DOSCAN);;
+vsscanf) AC_DEFINE(HAVE_VSSCANF,1,[Define to 1 if we have vsscanf]);; #(vi
+vfscanf) AC_DEFINE(HAVE_VFSCANF,1,[Define to 1 if we have vfscanf]);; #(vi
+_doscan) AC_DEFINE(HAVE__DOSCAN,1,[Define to 1 if we have _doscan]);;
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_ATTRIBUTES version: 14 updated: 2010/10/23 15:52:32
+dnl CF_GCC_ATTRIBUTES version: 16 updated: 2012/10/02 20:55:03
dnl -----------------
dnl Test for availability of useful gcc __attribute__ directives to quiet
dnl compiler warnings. Though useful, not all are supported -- and contrary
@@ -1614,27 +1896,27 @@ EOF
test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute)
cat conftest.h >>confdefs.h
case $cf_attribute in #(vi
+ noreturn) #(vi
+ AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc])
+ ;;
printf) #(vi
- if test "$cf_printf_attribute" = no ; then
- cat >>confdefs.h <<EOF
-#define GCC_PRINTFLIKE(fmt,var) /* nothing */
-EOF
- else
- cat >>confdefs.h <<EOF
-#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
-EOF
+ cf_value='/* nothing */'
+ if test "$cf_printf_attribute" != no ; then
+ cf_value='__attribute__((format(printf,fmt,var)))'
+ AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.])
fi
+ AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc])
;;
scanf) #(vi
- if test "$cf_scanf_attribute" = no ; then
- cat >>confdefs.h <<EOF
-#define GCC_SCANFLIKE(fmt,var) /* nothing */
-EOF
- else
- cat >>confdefs.h <<EOF
-#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
-EOF
+ cf_value='/* nothing */'
+ if test "$cf_scanf_attribute" != no ; then
+ cf_value='__attribute__((format(scanf,fmt,var)))'
+ AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.])
fi
+ AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc])
+ ;;
+ unused) #(vi
+ AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc])
;;
esac
fi
@@ -1646,7 +1928,7 @@ rm -rf conftest*
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_VERSION version: 5 updated: 2010/04/24 11:02:31
+dnl CF_GCC_VERSION version: 7 updated: 2012/10/18 06:46:33
dnl --------------
dnl Find version of gcc
AC_DEFUN([CF_GCC_VERSION],[
@@ -1654,13 +1936,13 @@ AC_REQUIRE([AC_PROG_CC])
GCC_VERSION=none
if test "$GCC" = yes ; then
AC_MSG_CHECKING(version of $CC)
- GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
+ GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
test -z "$GCC_VERSION" && GCC_VERSION=unknown
AC_MSG_RESULT($GCC_VERSION)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GCC_WARNINGS version: 27 updated: 2010/10/23 15:52:32
+dnl CF_GCC_WARNINGS version: 31 updated: 2013/11/19 19:23:35
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:
@@ -1683,6 +1965,7 @@ AC_DEFUN([CF_GCC_WARNINGS],
[
AC_REQUIRE([CF_GCC_VERSION])
CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS)
+CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS)
cat > conftest.$ac_ext <<EOF
#line __oline__ "${as_me:-configure}"
@@ -1731,10 +2014,14 @@ then
EXTRA_CFLAGS=
cf_warn_CONST=""
test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
+ cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
+ test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
for cf_opt in W Wall \
Wbad-function-cast \
Wcast-align \
Wcast-qual \
+ Wdeclaration-after-statement \
+ Wextra \
Winline \
Wmissing-declarations \
Wmissing-prototypes \
@@ -1742,7 +2029,7 @@ then
Wpointer-arith \
Wshadow \
Wstrict-prototypes \
- Wundef $cf_warn_CONST $1
+ Wundef $cf_gcc_warnings $cf_warn_CONST $1
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
if AC_TRY_EVAL(ac_compile); then
@@ -1758,6 +2045,13 @@ then
continue;;
esac
;;
+ Wpointer-arith) #(vi
+ case $GCC_VERSION in
+ [[12]].*)
+ CF_VERBOSE(feature is broken in gcc $GCC_VERSION)
+ continue;;
+ esac
+ ;;
esac
EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
fi
@@ -1769,6 +2063,29 @@ rm -rf conftest*
AC_SUBST(EXTRA_CFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_GETOPT_HEADER version: 5 updated: 2012/10/06 16:39:58
+dnl ----------------
+dnl Check for getopt's variables which are commonly defined in stdlib.h,
+dnl unistd.h or (nonstandard) in getopt.h
+AC_DEFUN([CF_GETOPT_HEADER],
+[
+AC_HAVE_HEADERS(unistd.h getopt.h)
+AC_CACHE_CHECK(for header declaring getopt variables,cf_cv_getopt_header,[
+cf_cv_getopt_header=none
+for cf_header in stdio.h stdlib.h unistd.h getopt.h
+do
+AC_TRY_COMPILE([
+#include <$cf_header>],
+[int x = optind; char *y = optarg],
+[cf_cv_getopt_header=$cf_header
+ break])
+done
+])
+if test $cf_cv_getopt_header != none ; then
+ AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if we need to include getopt.h])
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_GNAT_GENERICS version: 2 updated: 2011/03/23 20:24:41
dnl ----------------
AC_DEFUN([CF_GNAT_GENERICS],
@@ -1828,7 +2145,7 @@ fi
AC_SUBST(PRAGMA_UNREF)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_PROJECTS version: 2 updated: 2011/03/23 20:24:41
+dnl CF_GNAT_PROJECTS version: 4 updated: 2013/09/07 14:05:46
dnl ----------------
dnl GNAT projects are configured with ".gpr" project files.
dnl GNAT libraries are a further development, using the project feature.
@@ -1845,7 +2162,7 @@ case $cf_gnat_version in #(vi
;;
*)
case $cf_cv_system_name in #(vi
- cygwin*) #(vi
+ cygwin*|msys*) #(vi
;;
*)
mkdir conftest.src conftest.bin conftest.lib
@@ -2040,7 +2357,7 @@ fi
rm -rf conftest* *~conftest*
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_VERSION version: 17 updated: 2011/03/23 20:24:41
+dnl CF_GNAT_VERSION version: 18 updated: 2012/01/21 19:28:10
dnl ---------------
dnl Verify version of GNAT.
AC_DEFUN([CF_GNAT_VERSION],
@@ -2052,7 +2369,7 @@ cf_gnat_version=`${cf_ada_make:-gnatmake} -v 2>&1 | \
AC_MSG_RESULT($cf_gnat_version)
case $cf_gnat_version in #(vi
-3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*) #(vi
+3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*|20[[0-9]][[0-9]]) #(vi
cf_cv_prog_gnat_correct=yes
;;
*)
@@ -2092,7 +2409,7 @@ make an error
test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GPP_LIBRARY version: 10 updated: 2010/05/29 16:31:02
+dnl CF_GPP_LIBRARY version: 11 updated: 2012/10/06 17:56:13
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
@@ -2119,9 +2436,9 @@ if test "$GXX" = yes; then
[cf_cxx_library=yes
CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
if test "$cf_gpp_libname" = cpp ; then
- AC_DEFINE(HAVE_GPP_BUILTIN_H)
+ AC_DEFINE(HAVE_GPP_BUILTIN_H,1,[Define to 1 if we have gpp builtin.h])
else
- AC_DEFINE(HAVE_GXX_BUILTIN_H)
+ AC_DEFINE(HAVE_GXX_BUILTIN_H,1,[Define to 1 if we have g++ builtin.h])
fi],
[AC_TRY_LINK([
#include <builtin.h>
@@ -2129,28 +2446,28 @@ if test "$GXX" = yes; then
[two_arg_error_handler_t foo2 = lib_error_handler],
[cf_cxx_library=yes
CF_ADD_LIB($cf_gpp_libname,CXXLIBS)
- AC_DEFINE(HAVE_BUILTIN_H)],
+ AC_DEFINE(HAVE_BUILTIN_H,1,[Define to 1 if we have builtin.h])],
[cf_cxx_library=no])])
LIBS="$cf_save"
AC_MSG_RESULT($cf_cxx_library)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GXX_VERSION version: 6 updated: 2010/10/23 15:44:18
+dnl CF_GXX_VERSION version: 7 updated: 2012/06/16 14:55:39
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++)
+ AC_MSG_CHECKING(version of ${CXX:-g++})
GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`"
test -z "$GXX_VERSION" && GXX_VERSION=unknown
AC_MSG_RESULT($GXX_VERSION)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_GXX_WARNINGS version: 6 updated: 2010/08/14 18:25:37
+dnl CF_GXX_WARNINGS version: 8 updated: 2013/11/16 14:27:53
dnl ---------------
dnl Check if the compiler supports useful warning options.
dnl
@@ -2173,6 +2490,7 @@ AC_DEFUN([CF_GXX_WARNINGS],
[
CF_INTEL_COMPILER(GXX,INTEL_CPLUSPLUS,CXXFLAGS)
+CF_CLANG_COMPILER(GXX,CLANG_CPLUSPLUS,CXXFLAGS)
AC_REQUIRE([CF_GXX_VERSION])
@@ -2238,16 +2556,17 @@ then
for cf_opt in \
Wabi \
fabi-version=0 \
+ Wextra \
+ Wignored-qualifiers \
+ Wlogical-op \
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"
@@ -2464,7 +2783,7 @@ AC_DEFUN([CF_HELP_MESSAGE],
[AC_DIVERT_HELP([$1])dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_INCLUDE_DIRS version: 6 updated: 2009/01/06 19:37:40
+dnl CF_INCLUDE_DIRS version: 8 updated: 2013/10/12 16:45:09
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
@@ -2472,25 +2791,25 @@ 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"
-if test "$srcdir" != "."; then
- CPPFLAGS="$CPPFLAGS -I\${srcdir}/../include"
-fi
if test "$GCC" != yes; then
- CPPFLAGS="$CPPFLAGS -I\${includedir}"
+ CPPFLAGS="-I\${includedir} $CPPFLAGS"
elif test "$includedir" != "/usr/include"; then
if test "$includedir" = '${prefix}/include' ; then
- if test $prefix != /usr ; then
- CPPFLAGS="$CPPFLAGS -I\${includedir}"
+ if test x$prefix != x/usr ; then
+ CPPFLAGS="-I\${includedir} $CPPFLAGS"
fi
else
- CPPFLAGS="$CPPFLAGS -I\${includedir}"
+ CPPFLAGS="-I\${includedir} $CPPFLAGS"
fi
fi
+if test "$srcdir" != "."; then
+ CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
+fi
+CPPFLAGS="-I. -I../include $CPPFLAGS"
AC_SUBST(CPPFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_INTEL_COMPILER version: 4 updated: 2010/05/26 05:38:42
+dnl CF_INTEL_COMPILER version: 5 updated: 2013/02/10 10:41:05
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
@@ -2504,6 +2823,7 @@ 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],[
+AC_REQUIRE([AC_CANONICAL_HOST])
ifelse([$2],,INTEL_COMPILER,[$2])=no
if test "$ifelse([$1],,[$1],GCC)" = yes ; then
@@ -2527,7 +2847,7 @@ cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_ISASCII version: 3 updated: 2000/08/12 23:18:52
+dnl CF_ISASCII version: 4 updated: 2012/10/06 17:56:13
dnl ----------
dnl Check if we have either a function or macro for 'isascii()'.
AC_DEFUN([CF_ISASCII],
@@ -2539,10 +2859,10 @@ AC_CACHE_VAL(cf_cv_have_isascii,[
[cf_cv_have_isascii=no])
])dnl
AC_MSG_RESULT($cf_cv_have_isascii)
-test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII)
+test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII,1,[Define to 1 if we have isascii()])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LARGEFILE version: 7 updated: 2007/06/02 11:58:50
+dnl CF_LARGEFILE version: 8 updated: 2012/10/06 08:57:51
dnl ------------
dnl Add checks for large file support.
AC_DEFUN([CF_LARGEFILE],[
@@ -2576,12 +2896,12 @@ ifdef([AC_FUNC_FSEEKO],[
[cf_cv_struct_dirent64=yes],
[cf_cv_struct_dirent64=no])
])
- test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64)
+ test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64])
fi
])
])
dnl ---------------------------------------------------------------------------
-dnl CF_LDFLAGS_STATIC version: 8 updated: 2010/10/23 14:39:56
+dnl CF_LDFLAGS_STATIC version: 10 updated: 2011/09/24 12:51:48
dnl -----------------
dnl Check for compiler/linker flags used to temporarily force usage of static
dnl libraries. This depends on the compiler and platform. Use this to help
@@ -2602,7 +2922,7 @@ if test "$GCC" = yes ; then
esac
else
case $cf_cv_system_name in #(
- aix[[456]]*) #( from ld manpage
+ aix[[4-7]]*) #( from ld manpage
LDFLAGS_STATIC=-bstatic
LDFLAGS_SHARED=-bdynamic
;;
@@ -2652,7 +2972,17 @@ EOF
int cf_ldflags_static(FILE *fp);
],[
return cf_ldflags_static(stdin);
-],[cf_ldflags_static=yes],[cf_ldflags_static=no])
+],[
+ # some linkers simply ignore the -dynamic
+ case x`file conftest$ac_exeext 2>/dev/null` in #(vi
+ *static*) # (vi
+ cf_ldflags_static=no
+ ;;
+ *)
+ cf_ldflags_static=yes
+ ;;
+ esac
+],[cf_ldflags_static=no])
rm -f libconftest.*
LIBS="$cf_save_LIBS"
@@ -2673,7 +3003,7 @@ AC_SUBST(LDFLAGS_STATIC)
AC_SUBST(LDFLAGS_SHARED)
])
dnl ---------------------------------------------------------------------------
-dnl CF_LD_RPATH_OPT version: 3 updated: 2010/06/02 05:03:05
+dnl CF_LD_RPATH_OPT version: 5 updated: 2011/07/17 14:48:41
dnl ---------------
dnl For the given system and compiler, find the compiler flags to pass to the
dnl loader to use the "rpath" feature.
@@ -2694,10 +3024,10 @@ irix*) #(vi
linux*|gnu*|k*bsd*-gnu) #(vi
LD_RPATH_OPT="-Wl,-rpath,"
;;
-openbsd[[2-9]].*) #(vi
+openbsd[[2-9]].*|mirbsd*) #(vi
LD_RPATH_OPT="-Wl,-rpath,"
;;
-freebsd*) #(vi
+dragonfly*|freebsd*) #(vi
LD_RPATH_OPT="-rpath "
;;
netbsd*) #(vi
@@ -2756,11 +3086,23 @@ CF_SUBDIR_PATH($1,$2,lib)
$1="$cf_library_path_list [$]$1"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_PREFIX version: 8 updated: 2008/09/13 11:34:16
+dnl CF_LIBTOOL_VERSION version: 1 updated: 2013/04/06 18:03:09
+dnl ------------------
+AC_DEFUN([CF_LIBTOOL_VERSION],[
+if test -n "$LIBTOOL" && test "$LIBTOOL" != none
+then
+ cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([[^)]]*)//g' -e 's/^[[^1-9]]*//' -e 's/[[^0-9.]].*//'`
+else
+ cf_cv_libtool_version=
+fi
+test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_LIB_PREFIX version: 9 updated: 2012/01/21 19:28:10
dnl -------------
dnl Compute the library-prefix for the given host system
dnl $1 = variable to set
-AC_DEFUN([CF_LIB_PREFIX],
+define([CF_LIB_PREFIX],
[
case $cf_cv_system_name in #(vi
OS/2*|os2*) #(vi
@@ -2773,11 +3115,11 @@ ifelse($1,,,[$1=$LIB_PREFIX])
AC_SUBST(LIB_PREFIX)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_RULES version: 61 updated: 2010/10/23 16:10:30
+dnl CF_LIB_RULES version: 74 updated: 2013/09/07 13:54:05
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 LIBS_TO_MAKE list in
+dnl subdirectory is a library-source directory, modify the Libs_To_Make list in
dnl the corresponding makefile to list the models that we'll generate.
dnl
dnl For shared libraries, make a list of symbolic links to construct when
@@ -2786,15 +3128,19 @@ dnl one:
dnl lib<name>.so ->
dnl lib<name>.so.<major> ->
dnl lib<name>.so.<maj>.<minor>
+dnl
+dnl Note: Libs_To_Make is mixed case, since it is not a pure autoconf variable.
AC_DEFUN([CF_LIB_RULES],
[
-CF_LIB_PREFIX(cf_prefix)
+cf_prefix=$LIB_PREFIX
AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
-if test $cf_cv_shlib_version = cygdll ; then
+case $cf_cv_shlib_version in #(vi
+cygdll|msysdll|mingw)
TINFO_NAME=$TINFO_ARG_SUFFIX
TINFO_SUFFIX=.dll
-fi
+ ;;
+esac
if test -n "$TINFO_SUFFIX" ; then
case $TINFO_SUFFIX in
@@ -2820,79 +3166,78 @@ do
elif test -f $srcdir/$cf_dir/modules; then
SHARED_LIB=
- LIBS_TO_MAKE=
+ Libs_To_Make=
for cf_item in $cf_LIST_MODELS
do
CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf)
+ cf_libname=$cf_dir
+ test "$cf_dir" = c++ && cf_libname=ncurses++
if test $cf_item = shared ; then
- if test "$cf_cv_do_symlinks" = yes ; then
- case "$cf_cv_shlib_version" in #(vi
- rel) #(vi
- case "$cf_cv_system_name" in #(vi
- darwin*)
- case .${LIB_SUFFIX} in
- .tw*)
- cf_suffix=`echo $cf_suffix | sed 's/^tw//'`
- cf_suffix=tw'.${REL_VERSION}'"$cf_suffix"
- ;;
- .t*)
- cf_suffix=`echo $cf_suffix | sed 's/^t//'`
- cf_suffix=t'.${REL_VERSION}'"$cf_suffix"
- ;;
- .w*)
- cf_suffix=`echo $cf_suffix | sed 's/^w//'`
- cf_suffix=w'.${REL_VERSION}'"$cf_suffix"
+ if test -n "${LIB_SUFFIX}"
+ then
+ cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${LIB_SUFFIX}"'//'`
+ else
+ cf_shared_suffix="$cf_suffix"
+ fi
+ if test "$cf_cv_do_symlinks" = yes ; then
+ cf_version_name=
+
+ case "$cf_cv_shlib_version" in #(vi
+ rel) #(vi
+ cf_version_name=REL_VERSION
;;
- *)
- cf_suffix='.${REL_VERSION}'"$cf_suffix"
+ abi)
+ cf_version_name=ABI_VERSION
;;
esac
- ;; #(vi
- *) cf_suffix="$cf_suffix"'.${REL_VERSION}' ;;
- esac
+
+ if test -n "$cf_version_name"
+ then
+ case "$cf_cv_system_name" in #(vi
+ darwin*)
+ # "w", etc?
+ cf_suffix="${LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix"
+ ;; #(vi
+ *)
+ cf_suffix="$cf_suffix"'.${'$cf_version_name'}'
+ ;;
+ esac
+ fi
+ if test -n "${LIB_SUFFIX}"
+ then
+ cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${LIB_SUFFIX}"'//'`
+ else
+ cf_shared_suffix="$cf_suffix"
+ fi
+ 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.
+ case $cf_cv_shlib_version in #(vi
+ cygdll) #(vi
+ cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
+ Libs_To_Make="$Libs_To_Make ../lib/cyg${cf_libname}${cf_cygsuf}"
+ continue
;;
- abi)
- case "$cf_cv_system_name" in #(vi
- darwin*)
- case .${LIB_SUFFIX} in
- .tw*)
- cf_suffix=`echo $cf_suffix | sed 's/^tw//'`
- cf_suffix=tw'.${ABI_VERSION}'"$cf_suffix"
- ;;
- .t*)
- cf_suffix=`echo $cf_suffix | sed 's/^t//'`
- cf_suffix=t'.${ABI_VERSION}'"$cf_suffix"
- ;;
- .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
+ msysdll) #(vi
+ cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
+ Libs_To_Make="$Libs_To_Make ../lib/msys-${cf_libname}${cf_cygsuf}"
+ continue
+ ;;
+ mingw)
+ cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
+ Libs_To_Make="$Libs_To_Make ../lib/lib${cf_libname}${cf_cygsuf}"
+ continue
;;
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
- cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
- LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/cyg${cf_dir}${cf_cygsuf}"
- continue
- fi
- fi
- LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/${cf_prefix}${cf_dir}${cf_suffix}"
+ Libs_To_Make="$Libs_To_Make ../lib/${cf_prefix}${cf_libname}${cf_suffix}"
done
if test $cf_dir = ncurses ; then
cf_subsets="$LIB_SUBSETS"
cf_r_parts="$cf_subsets"
- cf_liblist="$LIBS_TO_MAKE"
+ cf_liblist="$Libs_To_Make"
while test -n "$cf_r_parts"
do
@@ -2912,7 +3257,7 @@ do
;;
esac
if test -n "$cf_item"; then
- LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE"
+ Libs_To_Make="$cf_item $Libs_To_Make"
fi
else
break
@@ -2922,13 +3267,40 @@ do
cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'`
fi
- sed -e "s%@LIBS_TO_MAKE@%$LIBS_TO_MAKE%" \
+ if test $cf_dir = c++; then
+ if test "x$with_shared_cxx" != xyes && test -n "$cf_shared_suffix"; then
+ cf_list=
+ for cf_item in $Libs_To_Make
+ do
+ case $cf_item in
+ *.a)
+ ;;
+ *)
+ cf_item=`echo "$cf_item" | sed -e "s,"$cf_shared_suffix",.a,"`
+ ;;
+ esac
+ for cf_test in $cf_list
+ do
+ if test "$cf_test" = "$cf_item"
+ then
+ cf_LIST_MODELS=`echo "$cf_LIST_MODELS" | sed -e 's/normal//'`
+ cf_item=
+ break
+ fi
+ done
+ test -n "$cf_item" && cf_list="$cf_list $cf_item"
+ done
+ Libs_To_Make="$cf_list"
+ fi
+ fi
+
+ sed -e "s%@Libs_To_Make@%$Libs_To_Make%" \
-e "s%@SHARED_LIB@%$SHARED_LIB%" \
$cf_dir/Makefile >$cf_dir/Makefile.out
mv $cf_dir/Makefile.out $cf_dir/Makefile
$AWK -f $srcdir/mk-0th.awk \
- libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" \
+ libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" ticlib="$TICS_LIB_SUFFIX" termlib="$TINFO_LIB_SUFFIX" \
$srcdir/$cf_dir/modules >>$cf_dir/Makefile
for cf_subset in $cf_subsets
@@ -2936,8 +3308,23 @@ do
cf_subdirs=
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)
+
+ CXX_MODEL=$cf_ITEM
+ if test "$CXX_MODEL" = SHARED; then
+ case $cf_cv_shlib_version in #(vi
+ cygdll|msysdll|mingw) #(vi
+ test "x$with_shared_cxx" = xno && CF_VERBOSE(overriding CXX_MODEL to SHARED)
+ with_shared_cxx=yes
+ ;;
+ *)
+ test "x$with_shared_cxx" = xno && CXX_MODEL=NORMAL
+ ;;
+ esac
+ fi
+
CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf)
CF_OBJ_SUBDIR($cf_item,cf_subdir)
@@ -2955,6 +3342,8 @@ do
cf_libname=$TICS_LIB_SUFFIX
;;
esac
+ elif test $cf_dir = c++ ; then
+ cf_libname=ncurses++$LIB_SUFFIX
else
cf_libname=${cf_libname}$LIB_SUFFIX
fi
@@ -3006,10 +3395,12 @@ do
name=${cf_libname}${cf_dir_suffix} \
traces=$LIB_TRACING \
MODEL=$cf_ITEM \
+ CXX_MODEL=$CXX_MODEL \
model=$cf_subdir \
prefix=$cf_prefix \
suffix=$cf_suffix \
subset=$cf_subset \
+ driver=$cf_cv_term_driver \
SymLink="$LN_S" \
TermlibRoot=$TINFO_NAME \
TermlibSuffix=$TINFO_SUFFIX \
@@ -3048,7 +3439,7 @@ do
done
fi
- echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} [$]@' >>Makefile
+ echo ' cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@' >>Makefile
done
for cf_dir in $SRC_SUBDIRS
@@ -3063,7 +3454,7 @@ do
echo 'libs \' >> Makefile
echo 'install.libs \' >> Makefile
echo 'uninstall.libs ::' >> Makefile
- echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} [$]@' >> Makefile
+ echo ' cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@' >> Makefile
;;
esac
fi
@@ -3086,7 +3477,7 @@ install.libs \\
uninstall.libs \\
install.$cf_dir \\
uninstall.$cf_dir ::
- cd $cf_dir && \${MAKE} \${CF_MFLAGS} \[$]@
+ cd $cf_dir && \${MAKE} \${TOP_MFLAGS} \[$]@
CF_EOF
elif test -f $srcdir/$cf_dir/headers; then
cat >> Makefile <<CF_EOF
@@ -3096,24 +3487,26 @@ install.libs \\
uninstall.libs \\
install.includes \\
uninstall.includes ::
- cd $cf_dir && \${MAKE} \${CF_MFLAGS} \[$]@
+ cd $cf_dir && \${MAKE} \${TOP_MFLAGS} \[$]@
CF_EOF
fi
done
+if test "x$cf_with_db_install" = xyes; then
cat >> Makefile <<CF_EOF
install.libs uninstall.libs \\
install.data uninstall.data ::
-$MAKE_TERMINFO cd misc && \${MAKE} \${CF_MFLAGS} \[$]@
+$MAKE_TERMINFO cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@
CF_EOF
+fi
if test "x$cf_with_manpages" = xyes; then
cat >> Makefile <<CF_EOF
install.man \\
uninstall.man ::
- cd man && \${MAKE} \${CF_MFLAGS} \[$]@
+ cd man && \${MAKE} \${TOP_MFLAGS} \[$]@
CF_EOF
fi
@@ -3134,7 +3527,7 @@ cat >> Makefile <<CF_EOF
install.man \\
uninstall.man ::
- cd tack && \${MAKE} \${CF_MFLAGS} \[$]@
+ cd tack && \${MAKE} \${TOP_MFLAGS} \[$]@
CF_EOF
fi
fi
@@ -3252,7 +3645,7 @@ CF_EOF
fi
fi
done
-AC_SUBST(LIBS_TO_MAKE)
+AC_SUBST(Libs_To_Make)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_LIB_SONAME version: 5 updated: 2010/08/14 18:25:37
@@ -3292,7 +3685,7 @@ fi
])
])
dnl ---------------------------------------------------------------------------
-dnl CF_LIB_SUFFIX version: 16 updated: 2008/12/27 12:30:03
+dnl CF_LIB_SUFFIX version: 22 updated: 2013/09/07 13:54:05
dnl -------------
dnl Compute the library file-suffix from the given model name
dnl $1 = model name
@@ -3301,31 +3694,26 @@ dnl $3 = dependency variable to set (actual filename)
dnl The variable $LIB_SUFFIX, if set, prepends the variable to set.
AC_DEFUN([CF_LIB_SUFFIX],
[
- AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
- case $1 in #(vi
- libtool) #(vi
+ case X$1 in #(vi
+ Xlibtool) #(vi
$2='.la'
$3=[$]$2
;;
- normal) #(vi
- $2='.a'
- $3=[$]$2
- ;;
- debug) #(vi
+ Xdebug) #(vi
$2='_g.a'
$3=[$]$2
;;
- profile) #(vi
+ Xprofile) #(vi
$2='_p.a'
$3=[$]$2
;;
- shared) #(vi
+ Xshared) #(vi
case $cf_cv_system_name in
- aix[[56]]*) #(vi
+ aix[[5-7]]*) #(vi
$2='.a'
$3=[$]$2
;;
- cygwin*) #(vi
+ cygwin*|msys*|mingw*) #(vi
$2='.dll'
$3='.dll.a'
;;
@@ -3345,10 +3733,16 @@ AC_DEFUN([CF_LIB_SUFFIX],
;;
esac
;;
- *) $2='.so'
+ *) #(vi
+ $2='.so'
$3=[$]$2
;;
esac
+ ;;
+ *)
+ $2='.a'
+ $3=[$]$2
+ ;;
esac
test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
test -n "$LIB_SUFFIX" && $3="${LIB_SUFFIX}[$]{$3}"
@@ -3372,7 +3766,7 @@ AC_DEFUN([CF_LIB_TYPE],
test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LINK_DATAONLY version: 9 updated: 2009/01/01 20:21:38
+dnl CF_LINK_DATAONLY version: 10 updated: 2012/10/06 17:41:51
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
@@ -3429,13 +3823,13 @@ EOF
AC_MSG_RESULT($cf_cv_link_dataonly)
if test "$cf_cv_link_dataonly" = no ; then
- AC_DEFINE(BROKEN_LINKER)
+ AC_DEFINE(BROKEN_LINKER,1,[if data-only library module does not link])
BROKEN_LINKER=1
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_LINK_FUNCS version: 7 updated: 2006/12/16 12:33:30
+dnl CF_LINK_FUNCS version: 8 updated: 2012/10/06 17:56:13
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.
@@ -3487,23 +3881,11 @@ int main()
done
test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
])
- test "$ac_cv_func_link" = yes && AC_DEFINE(HAVE_LINK)
- test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK)
+ test "$ac_cv_func_link" = yes && AC_DEFINE(HAVE_LINK,1,[Define to 1 if we have link() function])
+ test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK,1,[Define to 1 if we have symlink() function])
fi
])dnl
dnl ---------------------------------------------------------------------------
-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: 14 updated: 2011/03/31 19:29:46
dnl ------------
dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make'
@@ -3799,7 +4181,7 @@ AC_ARG_WITH(manpage-tbl,
AC_MSG_RESULT($MANPAGE_TBL)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MAN_PAGES version: 39 updated: 2010/10/23 15:44:18
+dnl CF_MAN_PAGES version: 43 updated: 2013/02/09 12:53:45
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
@@ -3856,6 +4238,7 @@ cat >$cf_edit_man <<CF_EOF
# this script is generated by the configure-script CF_MAN_PAGES macro.
prefix="$cf_prefix"
+datarootdir="$datarootdir"
datadir="$datadir"
NCURSES_MAJOR="$NCURSES_MAJOR"
@@ -3916,11 +4299,12 @@ case \$i in #(vi
if test ! -f $cf_man_alias ; then
cat >>$cf_man_alias <<-CF_EOF2
s,@DATADIR@,\$datadir,g
- s,@TERMINFO@,\$TERMINFO,g
- s,@NCURSES_MAJOR@,\$NCURSES_MAJOR,g
- s,@NCURSES_MINOR@,\$NCURSES_MINOR,g
- s,@NCURSES_PATCH@,\$NCURSES_PATCH,g
- s,@NCURSES_OSPEED@,\$NCURSES_OSPEED,g
+ s,@TERMINFO@,\${TERMINFO:="no default value"},g
+ s,@TERMINFO_DIRS@,\${TERMINFO_DIRS:="no default value"},g
+ s,@NCURSES_MAJOR@,\${NCURSES_MAJOR:="no default value"},g
+ s,@NCURSES_MINOR@,\${NCURSES_MINOR:="no default value"},g
+ s,@NCURSES_PATCH@,\${NCURSES_PATCH:="no default value"},g
+ s,@NCURSES_OSPEED@,\${NCURSES_OSPEED:="no default value"},g
CF_EOF
ifelse($1,,,[
for cf_name in $1
@@ -3949,7 +4333,9 @@ CF_EOF
if test "$MANPAGE_ALIASES" != no ; then
cat >>$cf_edit_man <<CF_EOF
- aliases=\`sed -f \$top_srcdir/man/manlinks.sed \$inalias |sed -f $cf_man_alias | sort -u\`
+ nCurses=ignore.3x
+ test $with_curses_h = yes && nCurses=ncurses.3x
+ aliases=\`sed -f \$top_srcdir/man/manlinks.sed \$inalias |sed -f $cf_man_alias | sort -u; test \$inalias = \$nCurses && echo curses\`
CF_EOF
fi
@@ -3995,6 +4381,13 @@ if test \$cf_tables = yes ; then
fi
CF_EOF
+if test $with_overwrite != yes ; then
+cat >>$cf_edit_man <<CF_EOF
+ sed -e "/\#[ ]*include/s,<curses.h,<ncurses$LIB_SUFFIX/curses.h," < \$TMP >\$TMP.out
+ mv \$TMP.out \$TMP
+CF_EOF
+fi
+
if test $with_curses_h != yes ; then
cat >>$cf_edit_man <<CF_EOF
sed -e "/\#[ ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out
@@ -4154,7 +4547,7 @@ ifelse($1,,[
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55
+dnl CF_MIXEDCASE_FILENAMES version: 6 updated: 2013/10/08 17:47:05
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.
@@ -4163,7 +4556,7 @@ 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
+ *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi
cf_cv_mixedcase=no
;;
*)
@@ -4181,10 +4574,10 @@ else
rm -f conftest CONFTEST
fi
])
-test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES)
+test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_MKSTEMP version: 7 updated: 2010/08/14 18:25:37
+dnl CF_MKSTEMP version: 9 updated: 2012/10/03 04:34:49
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).
@@ -4226,11 +4619,13 @@ int main()
}
],[cf_cv_func_mkstemp=yes
],[cf_cv_func_mkstemp=no
-],[AC_CHECK_FUNC(mkstemp)
-])
+],[cf_cv_func_mkstemp=maybe])
])
+if test "x$cf_cv_func_mkstemp" = xmaybe ; then
+ AC_CHECK_FUNC(mkstemp)
+fi
if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then
- AC_DEFINE(HAVE_MKSTEMP)
+ AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.])
fi
])dnl
dnl ---------------------------------------------------------------------------
@@ -4258,14 +4653,14 @@ if test "${with_abi_version+set}" != set; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_NO_LEAKS_OPTION version: 4 updated: 2006/12/16 14:24:05
+dnl CF_NO_LEAKS_OPTION version: 5 updated: 2012/10/02 20:55:03
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],,[
+ [AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
$4
])
: ${with_cflags:=-g}
@@ -4306,7 +4701,7 @@ else
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_OBJ_SUBDIR version: 4 updated: 2002/02/23 20:38:31
+dnl CF_OBJ_SUBDIR version: 6 updated: 2013/09/07 14:06:10
dnl -------------
dnl Compute the object-directory name from the given model name
AC_DEFUN([CF_OBJ_SUBDIR],
@@ -4318,7 +4713,7 @@ AC_DEFUN([CF_OBJ_SUBDIR],
profile) $2='obj_p' ;;
shared)
case $cf_cv_system_name in #(vi
- cygwin) #(vi
+ cygwin|msys) #(vi
$2='objects' ;;
*)
$2='obj_s' ;;
@@ -4326,20 +4721,23 @@ AC_DEFUN([CF_OBJ_SUBDIR],
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PATHSEP version: 5 updated: 2010/05/26 05:38:42
+dnl CF_PATHSEP version: 6 updated: 2012/09/29 18:38:12
dnl ----------
-dnl Provide a value for the $PATH and similar separator
+dnl Provide a value for the $PATH and similar separator (or amend the value
+dnl as provided in autoconf 2.5x).
AC_DEFUN([CF_PATHSEP],
[
+ AC_MSG_CHECKING(for PATH separator)
case $cf_cv_system_name in
os2*) PATH_SEPARATOR=';' ;;
- *) PATH_SEPARATOR=':' ;;
+ *) ${PATH_SEPARATOR:=':'} ;;
esac
ifelse([$1],,,[$1=$PATH_SEPARATOR])
AC_SUBST(PATH_SEPARATOR)
+ AC_MSG_RESULT($PATH_SEPARATOR)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PATH_SYNTAX version: 13 updated: 2010/05/26 05:38:42
+dnl CF_PATH_SYNTAX version: 14 updated: 2012/06/19 20:58:54
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
@@ -4359,7 +4757,7 @@ case ".[$]$1" in #(vi
;;
.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX
;;
-.\[$]{*prefix}*) #(vi
+.\[$]{*prefix}*|.\[$]{*dir}*) #(vi
eval $1="[$]$1"
case ".[$]$1" in #(vi
.NONE/*)
@@ -4376,7 +4774,7 @@ case ".[$]$1" in #(vi
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PKG_CONFIG version: 4 updated: 2011/02/18 20:26:24
+dnl CF_PKG_CONFIG version: 7 updated: 2011/04/29 04:53:22
dnl -------------
dnl Check for the package-config program, unless disabled by command-line.
AC_DEFUN([CF_PKG_CONFIG],
@@ -4393,7 +4791,9 @@ no) #(vi
PKG_CONFIG=none
;;
yes) #(vi
- AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)
+ CF_ACVERSION_CHECK(2.52,
+ [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)],
+ [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)])
;;
*)
PKG_CONFIG=$withval
@@ -4554,6 +4954,19 @@ AC_PROG_AWK
test -z "$AWK" && AC_MSG_ERROR(No awk program found)
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_PROG_CC version: 3 updated: 2012/10/06 15:31:55
+dnl ----------
+dnl standard check for CC, plus followup sanity checks
+dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name
+AC_DEFUN([CF_PROG_CC],[
+ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)])
+CF_GCC_VERSION
+CF_ACVERSION_CHECK(2.52,
+ [AC_PROG_CC_STDC],
+ [CF_ANSI_CC_REQD])
+CF_CC_ENV_FLAGS
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_PROG_CC_C_O version: 3 updated: 2010/08/14 18:25:37
dnl --------------
dnl Analogous to AC_PROG_CC_C_O, but more useful: tests only $CC, ensures that
@@ -4593,31 +5006,6 @@ else
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.
@@ -4633,32 +5021,7 @@ AC_DEFUN([CF_PROG_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])
-case $cf_cv_system_name in
-os2*)
- CFLAGS="$CFLAGS -Zmt"
- CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
- CXXFLAGS="$CXXFLAGS -Zmt"
- # autoconf's macro sets -Zexe and suffix both, which conflict:w
- LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
- ac_cv_exeext=.exe
- ;;
-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_GNAT version: 1 updated: 2010/06/19 15:22:18
+dnl CF_PROG_GNAT version: 2 updated: 2011/10/22 14:01:47
dnl ------------
dnl Check for gnatmake, ensure that it is complete.
AC_DEFUN([CF_PROG_GNAT],[
@@ -4666,6 +5029,7 @@ cf_ada_make=gnatmake
AC_CHECK_PROG(gnat_exists, $cf_ada_make, yes, no)
if test "$ac_cv_prog_gnat_exists" = no; then
cf_ada_make=
+ cf_cv_prog_gnat_correct=no
else
CF_GNAT_VERSION
AC_CHECK_PROG(M4_exists, m4, yes, no)
@@ -4709,7 +5073,7 @@ case $INSTALL in
esac
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_PROG_LDCONFIG version: 2 updated: 2008/12/13 14:08:40
+dnl CF_PROG_LDCONFIG version: 3 updated: 2011/06/04 20:09:13
dnl ----------------
dnl Check for ldconfig, needed to fixup shared libraries that would be built
dnl and then used in the install.
@@ -4718,7 +5082,7 @@ if test "$cross_compiling" = yes ; then
LDCONFIG=:
else
case "$cf_cv_system_name" in #(vi
-dragonfly*|freebsd*) #(vi
+dragonfly*|mirbsd*|freebsd*) #(vi
test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
;;
*) LDPATH=$PATH:/sbin:/usr/sbin
@@ -4759,7 +5123,7 @@ AC_MSG_RESULT($cf_prog_ln_sf)
test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_REGEX version: 8 updated: 2010/08/07 14:09:44
+dnl CF_REGEX version: 10 updated: 2012/10/04 20:12:20
dnl --------
dnl Attempt to determine if we've got one of the flavors of regular-expression
dnl code that we can support.
@@ -4771,7 +5135,7 @@ cf_regex_func=no
cf_regex_libs="regex re"
case $host_os in #(vi
mingw*)
- cf_regex_libs="regex.dll $cf_regex_libs"
+ cf_regex_libs="gnurx $cf_regex_libs"
;;
esac
@@ -4833,9 +5197,9 @@ esac
case $cf_cv_regex_hdrs in #(vi
no) AC_MSG_WARN(no regular expression header found) ;; #(vi
- regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS) ;; #(vi
- regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS) ;; #(vi
- regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS) ;;
+ regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;; #(vi
+ regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;; #(vi
+ regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;;
esac
])dnl
dnl ---------------------------------------------------------------------------
@@ -4869,7 +5233,7 @@ define([CF_REMOVE_LIB],
$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'`
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_RPATH_HACK version: 9 updated: 2011/02/13 13:31:33
+dnl CF_RPATH_HACK version: 11 updated: 2013/09/01 13:02:00
dnl -------------
AC_DEFUN([CF_RPATH_HACK],
[
@@ -4886,8 +5250,8 @@ if test -n "$LD_RPATH_OPT" ; then
AC_TRY_LINK([#include <stdio.h>],
[printf("Hello");],
- [cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort -u`
- cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort -u`])
+ [cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
+ cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort | uniq`])
# If we passed the link-test, but get a "not found" on a given library,
# this could be due to inept reconfiguration of gcc to make it only
@@ -4920,6 +5284,8 @@ AC_TRY_LINK([#include <stdio.h>],
CF_RPATH_HACK_2(LIBS)
CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS)
+else
+ AC_MSG_RESULT(no)
fi
AC_SUBST(EXTRA_LDFLAGS)
])dnl
@@ -4984,18 +5350,19 @@ CF_VERBOSE(...checked $1 [$]$1)
AC_SUBST(EXTRA_LDFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SHARED_OPTS version: 64 updated: 2010/06/05 16:51:16
+dnl CF_SHARED_OPTS version: 84 updated: 2013/11/03 06:26:10
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 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 are compiled in ../../lib
+dnl Notes:
+dnl a) ${LOCAL_LDFLAGS} is used to link executables that will run within
+dnl the build-tree, i.e., by making use of the libraries that are compiled in
+dnl $rel_builddir/lib We avoid compiling-in a $rel_builddir/lib path for the
+dnl shared library since that can lead to unexpected results at runtime.
+dnl b) ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared
+dnl libraries are compiled in ../../lib
dnl
dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure
dnl to install symbolic links to the rel/abi versions of shared libraries.
@@ -5010,12 +5377,19 @@ dnl
dnl Some loaders leave 'so_locations' lying around. It's nice to clean up.
AC_DEFUN([CF_SHARED_OPTS],
[
- AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
AC_REQUIRE([CF_LD_RPATH_OPT])
+ RM_SHARED_OPTS=
LOCAL_LDFLAGS=
LOCAL_LDFLAGS2=
LD_SHARED_OPTS=
INSTALL_LIB="-m 644"
+ : ${rel_builddir:=.}
+
+ shlibdir=$libdir
+ AC_SUBST(shlibdir)
+
+ MAKE_DLLS="#"
+ AC_SUBST(MAKE_DLLS)
cf_cv_do_symlinks=no
cf_ld_rpath_opt=
@@ -5040,6 +5414,7 @@ AC_DEFUN([CF_SHARED_OPTS],
AC_MSG_RESULT($cf_cv_shlib_version)
cf_cv_rm_so_locs=no
+ cf_try_cflags=
# Some less-capable ports of gcc support only -fpic
CC_SHARED_OPTS=
@@ -5059,10 +5434,14 @@ AC_DEFUN([CF_SHARED_OPTS],
cf_cv_shlib_version_infix=no
case $cf_cv_system_name in #(vi
- aix[[56]]*) #(vi
+ aix4.[3-9]*|aix[[5-7]]*) #(vi
if test "$GCC" = yes; then
CC_SHARED_OPTS=
- MK_SHARED_LIB='$(CC) -shared'
+ MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
+ else
+ # CC_SHARED_OPTS='-qpic=large -G'
+ # perhaps "-bM:SRE -bnoentry -bexpall"
+ MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
fi
;;
beos*) #(vi
@@ -5070,9 +5449,12 @@ AC_DEFUN([CF_SHARED_OPTS],
;;
cygwin*) #(vi
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh ../mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=cygdll
cf_cv_shlib_version_infix=cygdll
+ shlibdir=$bindir
+ MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
#!/bin/sh
SHARED_LIB=\[$]1
@@ -5083,12 +5465,34 @@ AC_DEFUN([CF_SHARED_OPTS],
** SHARED_LIB \[$]SHARED_LIB
** IMPORT_LIB \[$]IMPORT_LIB
EOF
- exec \[$]* -shared -Wl,--out-implib=../lib/\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o ../lib/\[$]{SHARED_LIB}
+ exec \[$]* -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
+CF_EOF
+ chmod +x mk_shared_lib.sh
+ ;;
+ msys*) #(vi
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
+ cf_cv_shlib_version=msysdll
+ cf_cv_shlib_version_infix=msysdll
+ shlibdir=$bindir
+ MAKE_DLLS=
+ cat >mk_shared_lib.sh <<-CF_EOF
+ #!/bin/sh
+ SHARED_LIB=\[$]1
+ IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
+ shift
+ cat <<-EOF
+ Linking shared library
+ ** SHARED_LIB \[$]SHARED_LIB
+ ** IMPORT_LIB \[$]IMPORT_LIB
+EOF
+ exec \[$]* -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
darwin*) #(vi
- EXTRA_CFLAGS="-no-cpp-precomp"
+ cf_try_cflags="no-cpp-precomp"
CC_SHARED_OPTS="-dynamic"
MK_SHARED_LIB='${CC} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $[@]` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
@@ -5102,6 +5506,14 @@ CF_EOF
LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
fi
;;
+ hpux[[7-8]]*) #(vi
+ # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
+ if test "$GCC" != yes; then
+ CC_SHARED_OPTS='+Z'
+ fi
+ MK_SHARED_LIB='${LD} -b -o $[@]'
+ INSTALL_LIB="-m 555"
+ ;;
hpux*) #(vi
# (tested with gcc 2.7.2 -- I don't have c89)
if test "$GCC" = yes; then
@@ -5115,9 +5527,19 @@ CF_EOF
# readonly to exploit a quirk in the memory manager.
INSTALL_LIB="-m 555"
;;
+ interix*)
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ if test "$cf_cv_shlib_version" = rel; then
+ cf_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_shared_soname='`basename $@`'
+ fi
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@'
+ ;;
irix*) #(vi
if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
@@ -5134,18 +5556,45 @@ CF_EOF
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
;;
- openbsd[[2-9]].*) #(vi
+ mingw*) #(vi
+ cf_cv_shlib_version=mingw
+ cf_cv_shlib_version_infix=mingw
+ shlibdir=$bindir
+ MAKE_DLLS=
+ if test "$DFT_LWR_MODEL" = "shared" ; then
+ LOCAL_LDFLAGS="-Wl,--enable-auto-import"
+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+ EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
+ fi
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}'
+ RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
+ cat >mk_shared_lib.sh <<-CF_EOF
+ #!/bin/sh
+ SHARED_LIB=\[$]1
+ IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\`
+ shift
+ cat <<-EOF
+ Linking shared library
+ ** SHARED_LIB \[$]SHARED_LIB
+ ** IMPORT_LIB \[$]IMPORT_LIB
+EOF
+ exec \[$]* -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB}
+CF_EOF
+ chmod +x mk_shared_lib.sh
+ ;;
+ openbsd[[2-9]].*|mirbsd*) #(vi
if test "$DFT_LWR_MODEL" = "shared" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
CF_SHARED_SONAME
@@ -5156,12 +5605,12 @@ CF_EOF
MK_SHARED_LIB='${LD} -Bshareable -o $[@]'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
- freebsd*) #(vi
+ dragonfly*|freebsd*) #(vi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
- LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS"
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $[@]` -o $[@]'
@@ -5171,7 +5620,7 @@ CF_EOF
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
if test "$cf_cv_shlib_version" = auto; then
if test -f /usr/libexec/ld.elf_so; then
cf_cv_shlib_version=abi
@@ -5182,7 +5631,7 @@ CF_EOF
CF_SHARED_SONAME
MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]'
else
- MK_SHARED_LIB='${LD} -shared -Bshareable -o $[@]'
+ MK_SHARED_LIB='${CC} -Wl,-shared -Wl,-Bshareable -o $[@]'
fi
;;
osf*|mls+*) #(vi
@@ -5276,20 +5725,57 @@ CF_EOF
;;
esac
- if test -n "$cf_ld_rpath_opt" ; then
- MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}"
+ if test -n "$cf_try_cflags"
+ then
+cat > conftest.$ac_ext <<EOF
+#line __oline__ "${as_me:-configure}"
+#include <stdio.h>
+int main(int argc, char *argv[[]])
+{
+ printf("hello\n");
+ return (argv[[argc-1]] == 0) ;
+}
+EOF
+ cf_save_CFLAGS="$CFLAGS"
+ for cf_opt in $cf_try_cflags
+ do
+ CFLAGS="$cf_save_CFLAGS -$cf_opt"
+ AC_MSG_CHECKING(if CFLAGS option -$cf_opt works)
+ if AC_TRY_EVAL(ac_compile); then
+ AC_MSG_RESULT(yes)
+ cf_save_CFLAGS="$CFLAGS"
+ else
+ AC_MSG_RESULT(no)
+ fi
+ done
+ CFLAGS="$cf_save_CFLAGS"
fi
+
+ # RPATH_LIST is a colon-separated list of directories
+ test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
+ test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
+
+ test $cf_cv_rm_so_locs = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations"
+
+ CF_VERBOSE(CC_SHARED_OPTS: $CC_SHARED_OPTS)
+ CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB)
+
AC_SUBST(CC_SHARED_OPTS)
AC_SUBST(LD_RPATH_OPT)
AC_SUBST(LD_SHARED_OPTS)
AC_SUBST(MK_SHARED_LIB)
+ AC_SUBST(RM_SHARED_OPTS)
+
AC_SUBST(LINK_PROGS)
AC_SUBST(LINK_TESTS)
+
AC_SUBST(EXTRA_LDFLAGS)
AC_SUBST(LOCAL_LDFLAGS)
AC_SUBST(LOCAL_LDFLAGS2)
+
AC_SUBST(INSTALL_LIB)
+ AC_SUBST(RPATH_LIST)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43
@@ -5369,7 +5855,7 @@ done
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SIG_ATOMIC_T version: 2 updated: 2005/09/18 17:27:12
+dnl CF_SIG_ATOMIC_T version: 3 updated: 2012/10/04 20:12:20
dnl ---------------
dnl signal handler, but there are some gcc depedencies in that recommendation.
dnl Try anyway.
@@ -5401,10 +5887,10 @@ static void handler(int sig)
done
])
AC_MSG_RESULT($cf_cv_sig_atomic_t)
-test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t)
+test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SIZECHANGE version: 8 updated: 2000/11/04 12:22:16
+dnl CF_SIZECHANGE version: 9 updated: 2012/10/06 11:17:15
dnl -------------
dnl Check for definitions & structures needed for window size-changing
dnl FIXME: check that this works with "snake" (HP-UX 10.x)
@@ -5465,7 +5951,7 @@ do
done
])
if test "$cf_cv_sizechange" != no ; then
- AC_DEFINE(HAVE_SIZECHANGE)
+ AC_DEFINE(HAVE_SIZECHANGE,1,[Define to 1 if sizechar declarations are provided])
case $cf_cv_sizechange in #(vi
NEED*)
AC_DEFINE_UNQUOTED($cf_cv_sizechange )
@@ -5474,7 +5960,7 @@ if test "$cf_cv_sizechange" != no ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_SRC_MODULES version: 21 updated: 2010/09/04 17:37:40
+dnl CF_SRC_MODULES version: 27 updated: 2013/08/03 18:18:08
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
@@ -5497,6 +5983,7 @@ else
TEST_ARG2="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARG2"
fi
+PC_MODULES_TO_MAKE="ncurses${DFT_ARG_SUFFIX}"
cf_cv_src_modules=
for cf_dir in $1
do
@@ -5535,6 +6022,7 @@ do
TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
TEST_ARG2="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARG2"
fi
+ PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${DFT_ARG_SUFFIX}"
fi
fi
done
@@ -5561,11 +6049,21 @@ done
if test "x$cf_with_tests" != "xno" ; then
SRC_SUBDIRS="$SRC_SUBDIRS test"
fi
-test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc"
-test "$cf_with_cxx_binding" != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
+if test "x$cf_with_db_install" = xyes; then
+ test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc"
+fi
+if test "$cf_with_cxx_binding" != no; then
+ PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${DFT_ARG_SUFFIX}"
+ SRC_SUBDIRS="$SRC_SUBDIRS c++"
+fi
+
+test "x$with_termlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TINFO_ARG_SUFFIX"
+test "x$with_ticlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TICS_ARG_SUFFIX"
+
+AC_SUBST(PC_MODULES_TO_MAKE)
ADA_SUBDIRS=
-if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then
+if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = xyes && test -f $srcdir/Ada95/Makefile.in; then
SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
ADA_SUBDIRS="gen src"
if test "x$cf_with_tests" != "xno" ; then
@@ -5624,13 +6122,13 @@ dnl Remove "-g" option from the compiler options
AC_DEFUN([CF_STRIP_G_OPT],
[$1=`echo ${$1} | sed -e 's%-g %%' -e 's%-g$%%'`])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_STRUCT_SIGACTION version: 3 updated: 2000/08/12 23:18:52
+dnl CF_STRUCT_SIGACTION version: 5 updated: 2012/10/06 17:56:13
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
-dnl If needed, define SVR4_ACTION.
AC_DEFUN([CF_STRUCT_SIGACTION],[
+AC_REQUIRE([CF_XOPEN_SOURCE])
+
if test "$ac_cv_func_sigaction" = yes; then
AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE)
AC_TRY_COMPILE([
@@ -5645,22 +6143,24 @@ AC_TRY_COMPILE([
#include <signal.h>],
[struct sigaction act],
[sigact_bad=yes
- AC_DEFINE(SVR4_ACTION)],
+ AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE])],
[sigact_bad=unknown])])
AC_MSG_RESULT($sigact_bad)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_STRUCT_TERMIOS version: 5 updated: 2000/11/04 12:22:46
+dnl CF_STRUCT_TERMIOS version: 7 updated: 2012/10/06 17:56:13
dnl -----------------
dnl Some machines require _POSIX_SOURCE to completely define struct termios.
-dnl If so, define SVR4_TERMIO
AC_DEFUN([CF_STRUCT_TERMIOS],[
+AC_REQUIRE([CF_XOPEN_SOURCE])
+
AC_CHECK_HEADERS( \
termio.h \
termios.h \
unistd.h \
)
+
if test "$ISC" = yes ; then
AC_CHECK_HEADERS( sys/termio.h )
fi
@@ -5680,7 +6180,7 @@ if test "$ac_cv_header_termios_h" = yes ; then
#include <termios.h>],
[struct termios foo; int x = foo.c_iflag],
termios_bad=unknown,
- termios_bad=yes AC_DEFINE(SVR4_TERMIO))
+ termios_bad=yes AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE]))
])
AC_MSG_RESULT($termios_bad)
fi
@@ -5704,23 +6204,6 @@ CF_ADD_SUBDIR_PATH($1,$2,$3,/opt,$prefix)
CF_ADD_SUBDIR_PATH($1,$2,$3,[$]HOME,$prefix)
])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
-dnl $1 = long/descriptive name
-dnl $2 = environment variable
-dnl $3 = default value
-AC_DEFUN([CF_SUBST],
-[AC_CACHE_VAL(cf_cv_subst_$2,[
-AC_MSG_CHECKING(for $1 (symbol $2))
-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
@@ -5766,7 +6249,7 @@ 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 CF_SYS_TIME_SELECT version: 5 updated: 2012/10/04 05:24:07
dnl ------------------
dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
dnl older SCO configurations.
@@ -5786,19 +6269,58 @@ AC_TRY_COMPILE([
[cf_cv_sys_time_select=no])
])
AC_MSG_RESULT($cf_cv_sys_time_select)
-test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT)
+test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT,1,[Define to 1 if we can include <sys/time.h> with <sys/select.h>])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TOP_BUILDDIR version: 1 updated: 2006/10/15 16:33:23
+dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32
dnl ---------------
dnl Define a top_builddir symbol, for applications that need an absolute path.
AC_DEFUN([CF_TOP_BUILDDIR],
[
-top_builddir=`pwd`
+top_builddir=ifelse($1,,`pwd`,$1)
AC_SUBST(top_builddir)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TYPEOF_CHTYPE version: 8 updated: 2006/12/16 12:33:30
+dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50
+dnl -------------------
+dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
+dnl can define it successfully.
+AC_DEFUN([CF_TRY_XOPEN_SOURCE],[
+AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[
+ AC_TRY_COMPILE([
+#include <stdlib.h>
+#include <string.h>
+#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 <stdlib.h>
+#include <string.h>
+#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)
+ cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
+ CF_ADD_CFLAGS($cf_temp_xopen_source)
+fi
+])
+dnl ---------------------------------------------------------------------------
+dnl CF_TYPEOF_CHTYPE version: 9 updated: 2012/10/06 17:56:13
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
@@ -5847,10 +6369,10 @@ int main()
AC_MSG_RESULT($cf_cv_typeof_chtype)
AC_SUBST(cf_cv_typeof_chtype)
-AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype)
+AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype,[Define to actual type if needed for chtype])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_TYPE_SIGACTION version: 3 updated: 2000/08/12 23:18:52
+dnl CF_TYPE_SIGACTION version: 4 updated: 2012/10/06 17:56:13
dnl -----------------
dnl
AC_DEFUN([CF_TYPE_SIGACTION],
@@ -5863,7 +6385,7 @@ AC_CACHE_VAL(cf_cv_type_sigaction,[
[cf_cv_type_sigaction=yes],
[cf_cv_type_sigaction=no])])
AC_MSG_RESULT($cf_cv_type_sigaction)
-test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION)
+test "$cf_cv_type_sigaction" = yes && AC_DEFINE(HAVE_TYPE_SIGACTION,1,[Define to 1 if we have the sigaction_t type])
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_UNSIGNED_LITERALS version: 2 updated: 1998/02/07 22:10:16
@@ -5890,7 +6412,7 @@ AC_DEFUN([CF_UPPER],
$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_UTF8_LIB version: 7 updated: 2010/06/20 09:24:28
+dnl CF_UTF8_LIB version: 8 updated: 2012/10/06 08:57:51
dnl -----------
dnl Check for multibyte support, and if not found, utf8 compatibility library
AC_DEFUN([CF_UTF8_LIB],
@@ -5909,14 +6431,14 @@ AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
# ncurses/ncursesw:
if test "$cf_cv_utf8_lib" = "add-on" ; then
- AC_DEFINE(HAVE_LIBUTF8_H)
+ AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h])
CF_ADD_INCDIR($cf_cv_header_path_utf8)
CF_ADD_LIBDIR($cf_cv_library_path_utf8)
CF_ADD_LIBS($cf_cv_library_file_utf8)
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_VA_COPY version: 2 updated: 2010/03/04 05:37:29
+dnl CF_VA_COPY version: 3 updated: 2012/10/06 11:17:15
dnl ----------
dnl check for va_copy, part of stdarg.h
dnl Also, workaround for glibc's __va_copy, by checking for both.
@@ -5931,7 +6453,7 @@ AC_TRY_LINK([
cf_cv_have_va_copy=yes,
cf_cv_have_va_copy=no)])
-test "$cf_cv_have_va_copy" = yes && AC_DEFINE(HAVE_VA_COPY)
+test "$cf_cv_have_va_copy" = yes && AC_DEFINE(HAVE_VA_COPY,1,[Define to 1 if we have va_copy])
AC_CACHE_CHECK(for __va_copy, cf_cv_have___va_copy,[
AC_TRY_LINK([
@@ -5943,7 +6465,7 @@ AC_TRY_LINK([
cf_cv_have___va_copy=yes,
cf_cv_have___va_copy=no)])
-test "$cf_cv_have___va_copy" = yes && AC_DEFINE(HAVE___VA_COPY)
+test "$cf_cv_have___va_copy" = yes && AC_DEFINE(HAVE___VA_COPY,1,[Define to 1 if we have __va_copy])
])
dnl ---------------------------------------------------------------------------
dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12
@@ -5954,7 +6476,7 @@ AC_DEFUN([CF_VERBOSE],
CF_MSG_LOG([$1])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WCHAR_TYPE version: 3 updated: 2010/05/26 16:44:57
+dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58
dnl -------------
dnl Check if type wide-character type $1 is declared, and if so, which header
dnl file is needed. The second parameter is used to set a shell variable when
@@ -5986,7 +6508,7 @@ AC_TRY_COMPILE([
[cf_cv_$1=unknown])])])
if test "$cf_cv_$1" = yes ; then
- AC_DEFINE(NEED_WCHAR_H)
+ AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h])
NEED_WCHAR_H=1
fi
@@ -6149,7 +6671,7 @@ if test "$with_dmalloc" = yes ; then
fi
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_GPM version: 7 updated: 2008/03/23 14:48:54
+dnl CF_WITH_GPM version: 8 updated: 2012/10/06 17:56:13
dnl -----------
dnl
dnl The option parameter (if neither yes/no) is assumed to be the name of
@@ -6165,10 +6687,10 @@ AC_MSG_RESULT($with_gpm)
if test "$with_gpm" != no ; then
AC_CHECK_HEADER(gpm.h,[
- AC_DEFINE(HAVE_GPM_H)
+ AC_DEFINE(HAVE_GPM_H,1,[Define to 1 if we have gpm.h header])
if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
CF_VERBOSE(assuming we really have GPM library)
- AC_DEFINE(HAVE_LIBGPM)
+ AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library])
else
AC_CHECK_LIB(gpm,Gpm_Open,[:],[
AC_MSG_ERROR(Cannot link with GPM library)
@@ -6182,7 +6704,7 @@ if test "$with_gpm" != no ; then
fi
])
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_LIBTOOL version: 26 updated: 2010/10/23 15:55:24
+dnl CF_WITH_LIBTOOL version: 30 updated: 2013/09/07 13:54:05
dnl ---------------
dnl Provide a configure option to incorporate libtool. Define several useful
dnl symbols for the makefile rules.
@@ -6252,13 +6774,20 @@ ifdef([AC_PROG_LIBTOOL],[
CF_PATH_SYNTAX(with_libtool)
LIBTOOL=$with_libtool
else
- AC_PATH_PROG(LIBTOOL,libtool)
+ AC_CHECK_TOOLS(LIBTOOL,[libtool glibtool],none)
+ CF_LIBTOOL_VERSION
+ if test -z "$cf_cv_libtool_version" && test "$LIBTOOL" = libtool
+ then
+ CF_FORGET_TOOL(LIBTOOL)
+ AC_CHECK_TOOLS(LIBTOOL,[glibtool],none)
+ CF_LIBTOOL_VERSION
+ fi
fi
if test -z "$LIBTOOL" ; then
AC_MSG_ERROR(Cannot find libtool)
fi
])dnl
- LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${DESTDIR}${libdir} ${LIBTOOL_VERSION} `cut -f1 ${srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} -o'
+ LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${DESTDIR}${libdir} ${LIBTOOL_VERSION} `cut -f1 ${srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o'
LIB_OBJECT='${OBJECTS:.o=.lo}'
LIB_SUFFIX=.la
LIB_CLEAN='${LIBTOOL} --mode=clean'
@@ -6268,22 +6797,12 @@ ifdef([AC_PROG_LIBTOOL],[
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 '/^$/d' |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 GNU libtool)
- fi
+ CF_CHECK_LIBTOOL_VERSION
# special hack to add -no-undefined (which libtool should do for itself)
LT_UNDEF=
case "$cf_cv_system_name" in #(vi
- cygwin*|mingw32*|uwin*|aix[[456]]) #(vi
+ cygwin*|msys*|mingw32*|uwin*|aix[[4-7]]) #(vi
LT_UNDEF=-no-undefined
;;
esac
@@ -6323,7 +6842,33 @@ AC_SUBST(LIB_UNINSTALL)
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PATH version: 10 updated: 2010/10/23 15:44:18
+dnl CF_WITH_LIB_PREFIX version: 1 updated: 2012/01/21 19:28:10
+dnl ------------------
+dnl Allow the library-prefix to be overridden. OS/2 EMX originally had no
+dnl "lib" prefix, e.g., because it used the dll naming convention.
+dnl
+dnl $1 = variable to set
+AC_DEFUN([CF_WITH_LIB_PREFIX],
+[
+AC_MSG_CHECKING(if you want to have a library-prefix)
+AC_ARG_WITH(lib-prefix,
+ [ --with-lib-prefix override library-prefix],
+ [with_lib_prefix=$withval],
+ [with_lib_prefix=auto])
+AC_MSG_RESULT($with_lib_prefix)
+
+if test $with_lib_prefix = auto
+then
+ CF_LIB_PREFIX($1)
+elif test $with_lib_prefix = no
+then
+ LIB_PREFIX=
+else
+ LIB_PREFIX=$with_lib_prefix
+fi
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_PATH version: 11 updated: 2012/09/29 15:04:19
dnl ------------
dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just
dnl defaulting to yes/no.
@@ -6340,11 +6885,11 @@ ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl
if ifelse([$5],,true,[test -n "$5"]) ; then
CF_PATH_SYNTAX(withval)
fi
-$3="$withval"
+eval $3="$withval"
AC_SUBST($3)dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PATHLIST version: 7 updated: 2010/10/23 16:10:30
+dnl CF_WITH_PATHLIST version: 9 updated: 2012/10/18 05:05:24
dnl ----------------
dnl Process an option specifying a list of colon-separated paths.
dnl
@@ -6365,7 +6910,7 @@ cf_dst_path=
for cf_src_path in $withval
do
CF_PATH_SYNTAX(cf_src_path)
- test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:"
+ test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR"
cf_dst_path="${cf_dst_path}${cf_src_path}"
done
IFS="$ac_save_ifs"
@@ -6381,12 +6926,65 @@ esac
cf_dst_path=`echo "$cf_dst_path" | sed -e 's/\\\\/\\\\\\\\/g'`
])
-eval '$3="$cf_dst_path"'
+# This may use the prefix/exec_prefix symbols which will only yield "NONE"
+# so we have to check/work around. We do prefer the result of "eval"...
+eval cf_dst_eval="$cf_dst_path"
+case "x$cf_dst_eval" in #(vi
+xNONE*) #(vi
+ $3=$cf_dst_path
+ ;;
+*)
+ $3="$cf_dst_eval"
+ ;;
+esac
AC_SUBST($3)dnl
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PTHREAD version: 3 updated: 2010/05/29 16:31:02
+dnl CF_WITH_PKG_CONFIG_LIBDIR version: 2 updated: 2011/12/10 18:58:47
+dnl -------------------------
+dnl Allow the choice of the pkg-config library directory to be overridden.
+AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[
+if test "$PKG_CONFIG" != none ; then
+ AC_MSG_CHECKING(for $PKG_CONFIG library directory)
+ AC_ARG_WITH(pkg-config-libdir,
+ [ --with-pkg-config-libdir=XXX use given directory for installing pc-files],
+ [PKG_CONFIG_LIBDIR=$withval],
+ [PKG_CONFIG_LIBDIR=yes])
+
+ case x$PKG_CONFIG_LIBDIR in #(vi
+ x/*) #(vi
+ ;;
+ xyes) #(vi
+ # look for the library directory using the same prefix as the executable
+ cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`
+ case x`(arch) 2>/dev/null` in #(vi
+ *64) #(vi
+ for cf_config in $cf_path/share $cf_path/lib64 $cf_path/lib32 $cf_path/lib
+ do
+ if test -d $cf_config/pkgconfig
+ then
+ PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
+ break
+ fi
+ done
+ ;;
+ *)
+ PKG_CONFIG_LIBDIR=$cf_path/lib/pkgconfig
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+
+ AC_MSG_RESULT($PKG_CONFIG_LIBDIR)
+fi
+
+AC_SUBST(PKG_CONFIG_LIBDIR)
+])dnl
+dnl ---------------------------------------------------------------------------
+dnl CF_WITH_PTHREAD version: 6 updated: 2012/10/06 17:41:51
dnl ---------------
dnl Check for POSIX thread library.
AC_DEFUN([CF_WITH_PTHREAD],
@@ -6400,25 +6998,30 @@ AC_MSG_RESULT($with_pthread)
if test "$with_pthread" != no ; then
AC_CHECK_HEADER(pthread.h,[
- AC_DEFINE(HAVE_PTHREADS_H)
+ AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header])
- AC_MSG_CHECKING(if we can link with the pthread library)
- cf_save_LIBS="$LIBS"
- CF_ADD_LIB(pthread)
- AC_TRY_LINK([
+ for cf_lib_pthread in pthread c_r
+ do
+ AC_MSG_CHECKING(if we can link with the $cf_lib_pthread library)
+ cf_save_LIBS="$LIBS"
+ CF_ADD_LIB($cf_lib_pthread)
+ AC_TRY_LINK([
#include <pthread.h>
],[
- int rc = pthread_create(0,0,0,0);
+ int rc = pthread_create(0,0,0,0);
+ int r2 = pthread_mutexattr_settype(0, 0);
],[with_pthread=yes],[with_pthread=no])
- LIBS="$cf_save_LIBS"
- AC_MSG_RESULT($with_pthread)
-
- if test "$with_pthread" = yes ; then
- CF_ADD_LIB(pthread)
- AC_DEFINE(HAVE_LIBPTHREADS)
- else
- AC_MSG_ERROR(Cannot link with pthread library)
- fi
+ LIBS="$cf_save_LIBS"
+ AC_MSG_RESULT($with_pthread)
+ test "$with_pthread" = yes && break
+ done
+
+ if test "$with_pthread" = yes ; then
+ CF_ADD_LIB($cf_lib_pthread)
+ AC_DEFINE(HAVE_LIBPTHREADS,1,[Define to 1 if we have pthreads library])
+ else
+ AC_MSG_ERROR(Cannot link with pthread library)
+ fi
])
fi
])
@@ -6448,7 +7051,7 @@ ifelse($1,,[
])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_WITH_SYSMOUSE version: 2 updated: 2003/03/22 19:13:43
+dnl CF_WITH_SYSMOUSE version: 3 updated: 2012/10/06 17:56:13
dnl ----------------
dnl If we can compile with sysmouse, make it available unless it is not wanted.
AC_DEFUN([CF_WITH_SYSMOUSE],[
@@ -6474,10 +7077,30 @@ AC_ARG_WITH(sysmouse,
],[cf_with_sysmouse=yes],[cf_with_sysmouse=no])
fi
AC_MSG_RESULT($cf_with_sysmouse)
-test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE)
+test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE,1,[Define to 1 if we can/should use the sysmouse interface])
fi
])dnl
dnl ---------------------------------------------------------------------------
+dnl CF_WITH_SYSTYPE version: 1 updated: 2013/01/26 16:26:12
+dnl ---------------
+dnl For testing, override the derived host system-type which is used to decide
+dnl things such as the linker commands used to build shared libraries. This is
+dnl normally chosen automatically based on the type of system which you are
+dnl building on. We use it for testing the configure script.
+dnl
+dnl This is different from the --host option: it is used only for testing parts
+dnl of the configure script which would not be reachable with --host since that
+dnl relies on the build environment being real, rather than mocked up.
+AC_DEFUN([CF_WITH_SYSTYPE],[
+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
+ host_os=$withval
+])
+])dnl
+dnl ---------------------------------------------------------------------------
dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21
dnl ----------------
AC_DEFUN([CF_WITH_VALGRIND],[
@@ -6486,7 +7109,7 @@ CF_NO_LEAKS_OPTION(valgrind,
[USE_VALGRIND])
])dnl
dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_SOURCE version: 35 updated: 2011/02/20 20:37:37
+dnl CF_XOPEN_SOURCE version: 46 updated: 2014/02/09 19:30:15
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,
@@ -6496,16 +7119,17 @@ 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([AC_CANONICAL_HOST])
cf_XOPEN_SOURCE=ifelse([$1],,500,[$1])
cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2])
cf_xopen_source=
case $host_os in #(vi
-aix[[456]]*) #(vi
+aix[[4-7]]*) #(vi
cf_xopen_source="-D_ALL_SOURCE"
;;
-cygwin) #(vi
+cygwin|msys) #(vi
cf_XOPEN_SOURCE=600
;;
darwin[[0-8]].*) #(vi
@@ -6513,6 +7137,7 @@ darwin[[0-8]].*) #(vi
;;
darwin*) #(vi
cf_xopen_source="-D_DARWIN_C_SOURCE"
+ cf_XOPEN_SOURCE=
;;
freebsd*|dragonfly*) #(vi
# 5.x headers associate
@@ -6530,15 +7155,23 @@ hpux*) #(vi
;;
irix[[56]].*) #(vi
cf_xopen_source="-D_SGI_SOURCE"
+ cf_XOPEN_SOURCE=
;;
linux*|gnu*|mint*|k*bsd*-gnu) #(vi
CF_GNU_SOURCE
;;
mirbsd*) #(vi
- # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <arpa/inet.h>
+ # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
+ cf_XOPEN_SOURCE=
+ CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
;;
netbsd*) #(vi
- # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+ cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+ ;;
+openbsd[[4-9]]*) #(vi
+ # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
+ cf_xopen_source="-D_BSD_SOURCE"
+ cf_XOPEN_SOURCE=600
;;
openbsd*) #(vi
# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
@@ -6552,36 +7185,12 @@ nto-qnx*) #(vi
sco*) #(vi
# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
;;
-solaris2.1[[0-9]]) #(vi
- cf_xopen_source="-D__EXTENSIONS__ -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
- ;;
-solaris2.[[1-9]]) #(vi
+solaris2.*) #(vi
cf_xopen_source="-D__EXTENSIONS__"
+ cf_cv_xopen_source=broken
;;
*)
- 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)
- cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
- CF_ADD_CFLAGS($cf_temp_xopen_source)
- fi
+ CF_TRY_XOPEN_SOURCE
CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE)
;;
esac
@@ -6589,4 +7198,33 @@ esac
if test -n "$cf_xopen_source" ; then
CF_ADD_CFLAGS($cf_xopen_source)
fi
+
+dnl In anything but the default case, we may have system-specific setting
+dnl which is still not guaranteed to provide all of the entrypoints that
+dnl _XOPEN_SOURCE would yield.
+if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
+ AC_MSG_CHECKING(if _XOPEN_SOURCE really is set)
+ AC_TRY_COMPILE([#include <stdlib.h>],[
+#ifndef _XOPEN_SOURCE
+make an error
+#endif],
+ [cf_XOPEN_SOURCE_set=yes],
+ [cf_XOPEN_SOURCE_set=no])
+ AC_MSG_RESULT($cf_XOPEN_SOURCE_set)
+ if test $cf_XOPEN_SOURCE_set = yes
+ then
+ AC_TRY_COMPILE([#include <stdlib.h>],[
+#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
+make an error
+#endif],
+ [cf_XOPEN_SOURCE_set_ok=yes],
+ [cf_XOPEN_SOURCE_set_ok=no])
+ if test $cf_XOPEN_SOURCE_set_ok = no
+ then
+ AC_MSG_WARN(_XOPEN_SOURCE is lower than requested)
+ fi
+ else
+ CF_TRY_XOPEN_SOURCE
+ fi
+fi
])
diff --git a/contrib/ncurses/announce.html.in b/contrib/ncurses/announce.html.in
index e385204de503..a07dc0573325 100644
--- a/contrib/ncurses/announce.html.in
+++ b/contrib/ncurses/announce.html.in
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--
- $Id: announce.html.in,v 1.85 2011/04/04 00:05:34 tom Exp $
+ $Id: announce.html.in,v 1.89 2013/05/18 10:12:25 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2013 Free 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 +28,12 @@
* authorization. *
****************************************************************************
-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta name="generator" content=
- "HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org">
+ "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
<title>Announcing ncurses @VERSION@</title>
<link rev="made" href="mailto:bug-ncurses@gnu.org">
@@ -42,12 +42,13 @@
</head>
<body>
- <h1>Announcing ncurses @VERSION@</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, 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.
+ <h1>Announcing ncurses @VERSION@</h1>
+
+ <p>The ncurses (new curses) library is a free software emulation
+ of curses in System V Release 4.0, and more. It uses terminfo
+ format, supports pads and color and multiple highlights and forms
+ characters and function-key mapping, and has all the other
+ SYSV-curses enhancements over BSD curses.</p>
<p>In mid-June 1995, the maintainer of 4.4BSD curses declared
that he considered 4.4BSD curses obsolete, and encouraged the
@@ -73,38 +74,50 @@
It is also available at <a href=
"ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
- <h1>Release Notes</h1>This release is designed to be upward
- compatible from ncurses 5.0 through 5.8; very few applications
- will require recompilation, depending on the platform. These are
- the highlights from the change-log since ncurses 5.8 release.
- <p>
- This is a bug-fix release, correcting a small number of urgent problems
- in the ncurses library from the 5.8 release.
- <p>
- It also improves the Ada95 binding:
+ <h1>Release Notes</h1>
+
+ <p>This release is designed to be upward compatible from ncurses
+ 5.0 through 5.8; very few applications will require
+ recompilation, depending on the platform. These are the
+ highlights from the change-log since ncurses 5.8 release.</p>
+
+ <p>This is a bug-fix release, correcting a small number of urgent
+ problems in the ncurses library from the 5.8 release.</p>
+
+ <p>It also improves the Ada95 binding:</p>
+
<ul>
- <li>fixes a longstanding portability problem with its use of the
- <a href="http://invisible-island.net/ncurses/man/form_fieldtype.3x">set_field_type</a>
- function. Because that function uses variable-length argument lists,
- its interface with gnat does not work with certain platforms.
- <li>improves configurability and portability, particularly when built
- separately from the main ncurses tree. The 5.8 release introduced
- scripts which can be used to construct separate tarballs for the
- Ada95 and ncurses examples.
- <p>Those were a proof of concept. For the 5.9 release, those
- scripts are augmented with rpm- and dpkg-scripts used in test builds
- against a variety of gnat- and system ncurses versions as old as
- gnat 3.15 and ncurses 5.4 (see snapshots and systems tested
- <a href="http://invisible-island.net/ncurses/ncurses-Ada95.html">here</a>.
- <li>additional improvements were made for portability of the
- ncurses examples, adding rpm- and dpkg-scripts for test-builds.
- See
- <a href="http://invisible-island.net/ncurses/ncurses-examples.html">this page</a>
- for snapshots and other information.
+ <li>fixes a longstanding portability problem with its use of
+ the <a href=
+ "http://invisible-island.net/ncurses/man/form_fieldtype.3x">set_field_type</a>
+ function. Because that function uses variable-length argument
+ lists, its interface with gnat does not work with certain
+ platforms.</li>
+
+ <li>improves configurability and portability, particularly when
+ built separately from the main ncurses tree. The 5.8 release
+ introduced scripts which can be used to construct separate
+ tarballs for the Ada95 and ncurses examples.
+
+ <p>Those were a proof of concept. For the 5.9 release, those
+ scripts are augmented with rpm- and dpkg-scripts used in test
+ builds against a variety of gnat- and system ncurses versions
+ as old as gnat 3.15 and ncurses 5.4 (see snapshots and
+ systems tested <a href=
+ "http://invisible-island.net/ncurses/ncurses-Ada95.html">here</a>.</p>
+ </li>
+
+ <li>additional improvements were made for portability of the
+ ncurses examples, adding rpm- and dpkg-scripts for test-builds.
+ See <a href=
+ "http://invisible-island.net/ncurses/ncurses-examples.html">this
+ page</a> for snapshots and other information.</li>
</ul>
- <h1>Features of Ncurses</h1>The ncurses package is fully
- compatible with SVr4 (System V Release 4) curses:
+ <h1>Features of Ncurses</h1>
+
+ <p>The ncurses package is fully compatible with SVr4 (System V
+ Release 4) curses:</p>
<ul>
<li>All 257 of the SVr4 calls have been implemented (and are
@@ -132,8 +145,10 @@
entries for use with less capable
<strong>curses</strong>/<strong>terminfo</strong> versions such
as the HP/UX and AIX ports.</li>
- </ul>The ncurses package also has many useful extensions over
- SVr4:
+ </ul>
+
+ <p>The ncurses package also has many useful extensions over
+ SVr4:</p>
<ul>
<li>The API is 8-bit clean and base-level conformant with the
@@ -249,12 +264,14 @@
interface.</li>
</ul>
- <h1>State of the Package</h1>Numerous bugs present in earlier
- versions have been fixed; the library is far more reliable than
- it used to be. Bounds checking in many `dangerous' entry points
- has been improved. The code is now type-safe according to gcc
- -Wall. The library has been checked for malloc leaks and arena
- corruption by the Purify memory-allocation tester.
+ <h1>State of the Package</h1>
+
+ <p>Numerous bugs present in earlier versions have been fixed; the
+ library is far more reliable than it used to be. Bounds checking
+ in many `dangerous' entry points has been improved. The code is
+ now type-safe according to gcc -Wall. The library has been
+ checked for malloc leaks and arena corruption by the Purify
+ memory-allocation tester.</p>
<p>The ncurses code has been tested with a wide variety of
applications including (versions starting with those noted):</p>
@@ -321,8 +338,10 @@
<dd>newsreader, supporting color, MIME <a href=
"http://www.tin.org/">http://www.tin.org/</a></dd>
- </dl>as well as some that use ncurses for the terminfo support
- alone:
+ </dl>
+
+ <p>as well as some that use ncurses for the terminfo support
+ alone:</p>
<dl>
<dt>minicom</dt>
@@ -341,15 +360,17 @@
<p>The ncurses distribution includes a selection of test programs
(including a few games).</p>
- <h2>Who's Who and What's What</h2>Zeyd Ben-Halim started it from
- a previous package pcurses, written by Pavel Curtis. Eric S.
- Raymond continued development. J&uuml;rgen Pfeifer wrote most of
- the form and menu libraries. Ongoing work is being done by
- <a href="mailto:dickey@invisible-island.net">Thomas Dickey</a>.
- Thomas Dickey acts as the maintainer for the Free Software
- Foundation, which holds the copyright on ncurses. Contact the
- current maintainers at <a href=
- "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.
+ <h2>Who's Who and What's What</h2>
+
+ <p>Zeyd Ben-Halim started it from a previous package pcurses,
+ written by Pavel Curtis. Eric S. Raymond continued development.
+ J&uuml;rgen Pfeifer wrote most of the form and menu libraries.
+ Ongoing work is being done by <a href=
+ "mailto:dickey@invisible-island.net">Thomas Dickey</a>. Thomas
+ Dickey acts as the maintainer for the Free Software Foundation,
+ which holds the copyright on ncurses. Contact the current
+ maintainers at <a href=
+ "mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a>.</p>
<p>To join the ncurses mailing list, please write email to
<code>bug-ncurses-request@gnu.org</code> containing the line:</p>
@@ -364,6 +385,13 @@
are made available at <a href=
"ftp://invisible-island.net/ncurses/">ftp://invisible-island.net/ncurses/</a>&nbsp;.</p>
+ <p>There is an archive of the mailing list here:</p>
+
+ <p><a href=
+ "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a>
+ (also <a href=
+ "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p>
+
<h2>Future Plans</h2>
<ul>
@@ -371,15 +399,19 @@
support.</li>
<li>Ports to more systems, including DOS and Windows.</li>
- </ul>We need people to help with these projects. If you are
- interested in working on them, please join the ncurses list.
+ </ul>
+
+ <p>We need people to help with these projects. If you are
+ interested in working on them, please join the ncurses list.</p>
+
+ <h2>Other Related Resources</h2>
- <h2>Other Related Resources</h2>The distribution provides a newer
- version of the terminfo-format terminal description file once
- maintained by <a href="http://www.catb.org/~esr/terminfo/">Eric
+ <p>The distribution provides a newer version of the
+ terminfo-format terminal description file once maintained by
+ <a href="http://www.catb.org/~esr/terminfo/">Eric
Raymond</a>&nbsp;. Unlike the older version, the termcap and
terminfo data are provided in the same file, and provides several
- user-definable extensions beyond the X/Open specification.
+ user-definable extensions beyond the X/Open specification.</p>
<p>You can find lots of information on terminal-related topics
not covered in the terminfo file at <a href=
diff --git a/contrib/ncurses/config.guess b/contrib/ncurses/config.guess
index bec935b96fca..b79252d6b103 100755
--- a/contrib/ncurses/config.guess
+++ b/contrib/ncurses/config.guess
@@ -1,14 +1,12 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright 1992-2013 Free Software Foundation, Inc.
-timestamp='2010-09-24'
+timestamp='2013-06-10'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -17,26 +15,22 @@ timestamp='2010-09-24'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# 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. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# Originally written by Per Bothner.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -56,9 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -92,7 +84,7 @@ if test $# != 0; then
exit 1
fi
-trap 'exit 1' HUP INT TERM
+trap 'exit 1' 1 2 15
# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
# compiler to aid in system detection is discouraged as it requires
@@ -106,7 +98,7 @@ trap 'exit 1' HUP INT TERM
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" HUP INT PIPE TERM ;
+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) ; } ||
@@ -140,12 +132,33 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+case "${UNAME_SYSTEM}" in
+Linux|GNU|GNU/*)
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ LIBC=gnu
+
+ eval $set_cc_for_build
+ cat <<-EOF > $dummy.c
+ #include <features.h>
+ #if defined(__UCLIBC__)
+ LIBC=uclibc
+ #elif defined(__dietlibc__)
+ LIBC=dietlibc
+ #else
+ LIBC=gnu
+ #endif
+ EOF
+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+ ;;
+esac
+
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@@ -202,6 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
+ *:Bitrig:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
+ exit ;;
*:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -220,10 +237,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
- *4.0)
+ *4.0)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
;;
- *5.*)
+ *5.*)
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
;;
esac
@@ -270,7 +287,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
- exit ;;
+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+ exitcode=$?
+ trap '' 0
+ exit $exitcode ;;
Alpha\ *:Windows_NT*:*)
# How do we know it's Interix rather than the generic POSIX subsystem?
# Should we change UNAME_MACHINE based on the output of uname instead
@@ -301,7 +321,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -326,8 +346,8 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
- echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
- exit ;;
+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
@@ -495,7 +515,7 @@ EOF
else
echo i586-dg-dgux${UNAME_RELEASE}
fi
- exit ;;
+ exit ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit ;;
@@ -597,50 +617,50 @@ EOF
sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
case "${sc_cpu_version}" in
- 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
- 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
- 532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
- 32) HP_ARCH="hppa2.0n" ;;
- 64) HP_ARCH="hppa2.0w" ;;
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
'') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
- esac ;;
- esac
+ esac ;;
+ esac
fi
if [ "${HP_ARCH}" = "" ]; then
eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
+ sed 's/^ //' << EOF >$dummy.c
- #define _HPUX_SOURCE
- #include <stdlib.h>
- #include <unistd.h>
+ #define _HPUX_SOURCE
+ #include <stdlib.h>
+ #include <unistd.h>
- int main ()
- {
- #if defined(_SC_KERNEL_BITS)
- long bits = sysconf(_SC_KERNEL_BITS);
- #endif
- long cpu = sysconf (_SC_CPU_VERSION);
+ int main ()
+ {
+ #if defined(_SC_KERNEL_BITS)
+ long bits = sysconf(_SC_KERNEL_BITS);
+ #endif
+ long cpu = sysconf (_SC_CPU_VERSION);
- switch (cpu)
- {
- case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
- case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
- case CPU_PA_RISC2_0:
- #if defined(_SC_KERNEL_BITS)
- switch (bits)
- {
- case 64: puts ("hppa2.0w"); break;
- case 32: puts ("hppa2.0n"); break;
- default: puts ("hppa2.0"); break;
- } break;
- #else /* !defined(_SC_KERNEL_BITS) */
- puts ("hppa2.0"); break;
- #endif
- default: puts ("hppa1.0"); break;
- }
- exit (0);
- }
+ switch (cpu)
+ {
+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+ case CPU_PA_RISC2_0:
+ #if defined(_SC_KERNEL_BITS)
+ switch (bits)
+ {
+ case 64: puts ("hppa2.0w"); break;
+ case 32: puts ("hppa2.0n"); break;
+ default: puts ("hppa2.0"); break;
+ } break;
+ #else /* !defined(_SC_KERNEL_BITS) */
+ puts ("hppa2.0"); break;
+ #endif
+ default: puts ("hppa1.0"); break;
+ }
+ exit (0);
+ }
EOF
(CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
test -z "$HP_ARCH" && HP_ARCH=hppa
@@ -789,21 +809,26 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;;
*:FreeBSD:*:*)
- case ${UNAME_MACHINE} in
- pc98)
- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ UNAME_PROCESSOR=`/usr/bin/uname -p`
+ case ${UNAME_PROCESSOR} in
amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*)
- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac
exit ;;
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
+ i*:MSYS*:*)
+ echo ${UNAME_MACHINE}-pc-msys
+ exit ;;
i*:windows32*:*)
# uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32
@@ -820,8 +845,8 @@ EOF
echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;;
IA64)
- echo ia64-unknown-interix${UNAME_RELEASE}
- exit ;;
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
@@ -849,70 +874,81 @@ EOF
exit ;;
*:GNU:*:*)
# the GNU system
- echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
exit ;;
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
- EV56) UNAME_MACHINE=alphaev56 ;;
- PCA56) UNAME_MACHINE=alphapca56 ;;
- PCA57) UNAME_MACHINE=alphapca56 ;;
- EV6) UNAME_MACHINE=alphaev6 ;;
- EV67) UNAME_MACHINE=alphaev67 ;;
- EV68*) UNAME_MACHINE=alphaev68 ;;
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
esac
objdump --private-headers /bin/sh | grep -q ld.so.1
- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ arc:Linux:*:* | arceb:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
- if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null | \
- grep -q __ARM_EABI__
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
then
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
- echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_PCS_VFP
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
+ fi
fi
exit ;;
avr32*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
- echo cris-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
frv:Linux:*:*)
- echo frv-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
- LIBC=gnu
- eval $set_cc_for_build
- sed 's/^ //' << EOF >$dummy.c
- #ifdef __dietlibc__
- LIBC=dietlibc
- #endif
-EOF
- eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
- echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
@@ -931,54 +967,63 @@ EOF
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
+ or1k:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
or32:Linux:*:*)
- echo or32-unknown-linux-gnu
- exit ;;
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+ exit ;;
padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
+ echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
- echo hppa64-unknown-linux-gnu
- exit ;;
+ echo hppa64-unknown-linux-${LIBC}
+ exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
- PA7*) echo hppa1.1-unknown-linux-gnu ;;
- PA8*) echo hppa2.0-unknown-linux-gnu ;;
- *) echo hppa-unknown-linux-gnu ;;
+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
+ *) echo hppa-unknown-linux-${LIBC} ;;
esac
exit ;;
ppc64:Linux:*:*)
- echo powerpc64-unknown-linux-gnu
+ echo powerpc64-unknown-linux-${LIBC}
exit ;;
ppc:Linux:*:*)
- echo powerpc-unknown-linux-gnu
+ echo powerpc-unknown-linux-${LIBC}
+ exit ;;
+ ppc64le:Linux:*:*)
+ echo powerpc64le-unknown-linux-${LIBC}
+ exit ;;
+ ppcle:Linux:*:*)
+ echo powerpcle-unknown-linux-${LIBC}
exit ;;
s390:Linux:*:* | s390x:Linux:*:*)
- echo ${UNAME_MACHINE}-ibm-linux
+ echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
exit ;;
sh64*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sh*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
tile*:Linux:*:*)
- echo ${UNAME_MACHINE}-tilera-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
+ echo ${UNAME_MACHINE}-dec-linux-${LIBC}
exit ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
@@ -1093,7 +1138,7 @@ EOF
&& { 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; } ;;
+ && { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
@@ -1136,8 +1181,8 @@ EOF
echo ns32k-sni-sysv
fi
exit ;;
- PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
- # says <Richard.M.Bartel@ccMail.Census.GOV>
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit ;;
*:UNIX_System_V:4*:FTX*)
@@ -1165,9 +1210,9 @@ EOF
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
- echo mips-nec-sysv${UNAME_RELEASE}
+ echo mips-nec-sysv${UNAME_RELEASE}
else
- echo mips-unknown-sysv${UNAME_RELEASE}
+ echo mips-unknown-sysv${UNAME_RELEASE}
fi
exit ;;
BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only.
@@ -1182,6 +1227,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1208,26 +1256,28 @@ EOF
exit ;;
*:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- case $UNAME_PROCESSOR in
- i386)
- eval $set_cc_for_build
- if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- UNAME_PROCESSOR="x86_64"
- fi
- fi ;;
- unknown) UNAME_PROCESSOR=powerpc ;;
- esac
+ eval $set_cc_for_build
+ if test "$UNAME_PROCESSOR" = unknown ; then
+ UNAME_PROCESSOR=powerpc
+ fi
+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
UNAME_PROCESSOR=`uname -p`
if test "$UNAME_PROCESSOR" = "x86"; then
- UNAME_PROCESSOR=i386
- UNAME_MACHINE=pc
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
fi
echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
exit ;;
@@ -1237,7 +1287,7 @@ EOF
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
+ NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@@ -1306,11 +1356,11 @@ EOF
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
@@ -1328,11 +1378,11 @@ main ()
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
- "4"
+ "4"
#else
- ""
+ ""
#endif
- ); exit (0);
+ ); exit (0);
#endif
#endif
diff --git a/contrib/ncurses/config.sub b/contrib/ncurses/config.sub
index de11910f0b15..61cb4bc22db8 100755
--- a/contrib/ncurses/config.sub
+++ b/contrib/ncurses/config.sub
@@ -1,38 +1,31 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-# Free Software Foundation, Inc.
+# Copyright 1992-2013 Free Software Foundation, Inc.
-timestamp='2010-09-11'
+timestamp='2013-10-01'
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine. It does not imply ALL GNU software can.
-#
-# This file is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
-# Please send patches to <config-patches@gnu.org>. Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
#
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
@@ -75,9 +68,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, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
-Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -125,13 +116,17 @@ esac
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
+ android-linux)
+ os=-linux-android
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
+ ;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
@@ -154,7 +149,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 | -knuth | -cray | -microblaze)
+ -apple | -axis | -knuth | -cray | -microblaze*)
os=
basic_machine=$1
;;
@@ -175,10 +170,10 @@ case $os in
os=-chorusos
basic_machine=$1
;;
- -chorusrdb)
- os=-chorusrdb
+ -chorusrdb)
+ os=-chorusrdb
basic_machine=$1
- ;;
+ ;;
-hiux*)
os=-hiuxwe2
;;
@@ -223,6 +218,12 @@ case $os in
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
+ -lynx*178)
+ os=-lynxos178
+ ;;
+ -lynx*5)
+ os=-lynxos5
+ ;;
-lynx*)
os=-lynxos
;;
@@ -247,20 +248,28 @@ case $basic_machine in
# Some are omitted here because they have special meanings below.
1750a | 580 \
| a29k \
+ | aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
+ | arc | arceb \
+ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+ | avr | avr32 \
+ | be32 | be64 \
| bfin \
- | c4x | clipper \
+ | c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \
+ | epiphany \
| fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+ | hexagon \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
+ | k1om \
+ | le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
+ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -278,30 +287,32 @@ case $basic_machine in
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
+ | mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| moxie \
| mt \
| msp430 \
- | nds32 | nds32le | nds32be\
- | nios | nios2 \
+ | nds32 | nds32le | nds32be \
+ | nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \
- | or32 \
+ | open8 \
+ | or1k | or32 \
| pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pyramid \
- | rx \
+ | rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
- | spu | strongarm \
- | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
+ | spu \
+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| ubicom32 \
- | v850 | v850e \
+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \
- | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | x86 | xc16x | xstormy16 | xtensa \
| z8k | z80)
basic_machine=$basic_machine-unknown
;;
@@ -314,8 +325,7 @@ case $basic_machine in
c6x)
basic_machine=tic6x-unknown
;;
- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
- # Motorola 68HC11/12.
+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown
os=-none
;;
@@ -325,12 +335,27 @@ case $basic_machine in
basic_machine=mt-unknown
;;
+ strongarm | thumb | xscale)
+ basic_machine=arm-unknown
+ ;;
+ xgate)
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ xscaleeb)
+ basic_machine=armeb-unknown
+ ;;
+
+ xscaleel)
+ basic_machine=armel-unknown
+ ;;
+
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64)
- basic_machine=$basic_machine-pc
- ;;
+ basic_machine=$basic_machine-pc
+ ;;
# Object if more than one company name word.
*-*-*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
@@ -339,25 +364,31 @@ case $basic_machine in
# Recognize the basic CPU types with company name.
580-* \
| a29k-* \
+ | aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \
+ | be32-* | be64-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \
- | clipper-* | craynv-* | cydra-* \
+ | c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+ | hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
+ | k1om-* \
+ | le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+ | microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \
| mips64-* | mips64el-* \
@@ -375,31 +406,34 @@ case $basic_machine in
| mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nds32-* | nds32le-* | nds32be-* \
- | nios-* | nios2-* \
+ | nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \
+ | open8-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pyramid-* \
- | romp-* | rs6000-* | rx-* \
+ | rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
- | tahoe-* | thumb-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
+ | tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
- | tile-* | tilegx-* \
+ | tile*-* \
| tron-* \
| ubicom32-* \
- | v850-* | v850e-* | vax-* \
+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
+ | vax-* \
| we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-* | z80-*)
@@ -539,7 +573,7 @@ case $basic_machine in
basic_machine=craynv-cray
os=-unicosmp
;;
- cr16)
+ cr16 | cr16-*)
basic_machine=cr16-unknown
os=-elf
;;
@@ -697,7 +731,6 @@ case $basic_machine in
i370-ibm* | ibm*)
basic_machine=i370-ibm
;;
-# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
@@ -755,11 +788,15 @@ case $basic_machine in
basic_machine=ns32k-utek
os=-sysv
;;
- microblaze)
+ microblaze*)
basic_machine=microblaze-xilinx
;;
+ mingw64)
+ basic_machine=x86_64-pc
+ os=-mingw64
+ ;;
mingw32)
- basic_machine=i386-pc
+ basic_machine=i686-pc
os=-mingw32
;;
mingw32ce)
@@ -794,10 +831,18 @@ case $basic_machine in
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
+ msys)
+ basic_machine=i686-pc
+ os=-msys
+ ;;
mvs)
basic_machine=i370-ibm
os=-mvs
;;
+ nacl)
+ basic_machine=le32-unknown
+ os=-nacl
+ ;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
@@ -950,9 +995,10 @@ case $basic_machine in
;;
power) basic_machine=power-ibm
;;
- ppc) basic_machine=powerpc-unknown
+ ppc | ppcbe) basic_machine=powerpc-unknown
;;
- ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ppc-* | ppcbe-*)
+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
@@ -977,7 +1023,11 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
- rdos)
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ os=-rdos
+ ;;
+ rdos32)
basic_machine=i386-pc
os=-rdos
;;
@@ -1046,6 +1096,9 @@ case $basic_machine in
basic_machine=i860-stratus
os=-sysv4
;;
+ strongarm-* | thumb-*)
+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
sun2)
basic_machine=m68000-sun
;;
@@ -1102,13 +1155,8 @@ case $basic_machine in
basic_machine=t90-cray
os=-unicos
;;
- # This must be matched before tile*.
- tilegx*)
- basic_machine=tilegx-unknown
- os=-linux-gnu
- ;;
tile*)
- basic_machine=tile-unknown
+ basic_machine=$basic_machine-unknown
os=-linux-gnu
;;
tx39)
@@ -1178,6 +1226,9 @@ case $basic_machine in
xps | xps100)
basic_machine=xps100-honeywell
;;
+ xscale-* | xscalee[bl]-*)
+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ;;
ymp)
basic_machine=ymp-cray
os=-unicos
@@ -1303,21 +1354,21 @@ case $os in
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
- | -sym* | -kopensolaris* \
+ | -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
- | -openbsd* | -solidbsd* \
+ | -bitrig* | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* | -cegcc* \
- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
+ | -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1449,9 +1500,6 @@ case $os in
-aros*)
os=-aros
;;
- -kaos*)
- os=-kaos
- ;;
-zvmoe)
os=-zvmoe
;;
@@ -1500,6 +1548,12 @@ case $basic_machine in
c4x-* | tic4x-*)
os=-coff
;;
+ c8051-*)
+ os=-elf
+ ;;
+ hexagon-*)
+ os=-elf
+ ;;
tic54x-*)
os=-coff
;;
@@ -1527,9 +1581,6 @@ case $basic_machine in
;;
m68000-sun)
os=-sunos3
- # This also exists in the configure program, but was not the
- # default.
- # os=-sunos4
;;
m68*-cisco)
os=-aout
@@ -1543,6 +1594,9 @@ case $basic_machine in
mips*-*)
os=-elf
;;
+ or1k-*)
+ os=-elf
+ ;;
or32-*)
os=-coff
;;
diff --git a/contrib/ncurses/configure b/contrib/ncurses/configure
index 639b790dc3ac..c8368523b9ab 100755
--- a/contrib/ncurses/configure
+++ b/contrib/ncurses/configure
@@ -1,7 +1,7 @@
#! /bin/sh
-# From configure.in Revision: 1.520 .
+# From configure.in Revision: 1.577 .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by Autoconf 2.52.20101002.
+# Generated by Autoconf 2.52.20121002.
#
# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
# Free Software Foundation, Inc.
@@ -171,15 +171,16 @@ x_libraries=NONE
bindir='${exec_prefix}/bin'
sbindir='${exec_prefix}/sbin'
libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
libdir='${exec_prefix}/lib'
includedir='${prefix}/include'
oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
+infodir='${datarootdir}/info'
+mandir='${datarootdir}/man'
# Identity of this package.
PACKAGE_NAME=
@@ -230,6 +231,13 @@ do
| --da=*)
datadir=$ac_optarg ;;
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
-disable-* | --disable-*)
ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
@@ -505,7 +513,7 @@ do
done
# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
+for ac_var in bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir \
localstatedir libdir includedir oldincludedir infodir mandir
do
eval ac_val=$`echo $ac_var`
@@ -654,15 +662,16 @@ 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]
+ --datarootdir=DIR read-only architecture-independent data [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--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]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
EOF
cat <<\EOF
@@ -694,14 +703,16 @@ Optional Features:
--with-rel-version=XXX override derived release version
--with-abi-version=XXX override derived ABI version
--with-system-type=XXX test: override derived host system-type
+ --without-ada suppress check for Ada95, don't build demo
--without-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
+ --disable-db-install suppress install of terminal database
--without-manpages suppress install of manpages
- --without-progs suppress build with programs (e.g., tic)
- --without-tests suppress build with test-programs
+ --without-progs suppress build/install with programs (e.g., tic)
+ --without-tests suppress build/install with test-programs
--without-curses-h install curses.h as ncurses.h only
--with-pkg-config{=path} enable/disable use of pkg-config
+ --with-pkg-config-libdir=XXX use given directory for installing pc-files
--enable-pc-files generate and install .pc files for pkg-config
--enable-mixed-case tic should assume mixed-case filenames
--with-install-prefix prefixes actual install-location ($DESTDIR)
@@ -719,6 +730,8 @@ Options to Specify the Libraries Built/Used:
--with-normal generate normal-libraries (default)
--with-debug generate debug-libraries (default)
--with-profile generate profile-libraries
+ --with-cxx-shared generate C++ shared-libraries
+ --with-lib-prefix override library-prefix
--with-termlib generate separate terminfo library
--with-ticlib generate separate tic library
--with-gpm use Alessandro Rubini's GPM library
@@ -735,6 +748,7 @@ Fine-Tuning Your Configuration:
--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-xterm-kbs=XXX specify if xterm backspace sends BS or DEL
--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
@@ -759,6 +773,7 @@ Fine-Tuning Your Configuration:
--with-ospeed=TYPE override type of ospeed variable
--with-mmask-t=TYPE override type of mmask_t
--with-ccharw-max=XXX override size CCHARW_MAX
+ --with-tparm-arg=TYPE override parameter type of tparm
--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
@@ -796,8 +811,9 @@ Experimental 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)
+ --disable-echo do not display "compiling" commands
--enable-warnings build: turn on GCC compiler warnings
+ --enable-string-hacks work around bogus compiler/loader warnings
--enable-assertions test: turn on generation of assertion code
--with-dmalloc test: use Gray Watson's dmalloc library
--with-dbmalloc test: use Conor Cahill's dbmalloc library
@@ -883,7 +899,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.52.20101002. Invocation command line was
+generated by GNU Autoconf 2.52.20121002. Invocation command line was
$ $0 $@
@@ -1007,7 +1023,7 @@ if test -z "$CONFIG_SITE"; then
fi
for ac_site_file in $CONFIG_SITE; do
if test -r "$ac_site_file"; then
- { echo "$as_me:1010: loading site script $ac_site_file" >&5
+ { echo "$as_me:1026: 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"
@@ -1018,7 +1034,7 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special
# files actually), so we avoid doing that.
if test -f "$cache_file"; then
- { echo "$as_me:1021: loading cache $cache_file" >&5
+ { echo "$as_me:1037: loading cache $cache_file" >&5
echo "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . $cache_file;;
@@ -1026,7 +1042,7 @@ echo "$as_me: loading cache $cache_file" >&6;}
esac
fi
else
- { echo "$as_me:1029: creating cache $cache_file" >&5
+ { echo "$as_me:1045: creating cache $cache_file" >&5
echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
@@ -1042,21 +1058,21 @@ for ac_var in `(set) 2>&1 |
eval ac_new_val="\$ac_env_${ac_var}_value"
case $ac_old_set,$ac_new_set in
set,)
- { echo "$as_me:1045: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+ { echo "$as_me:1061: 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:1049: error: \`$ac_var' was not set in the previous run" >&5
+ { echo "$as_me:1065: 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:1055: error: \`$ac_var' has changed since the previous run:" >&5
+ { echo "$as_me:1071: 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:1057: former value: $ac_old_val" >&5
+ { echo "$as_me:1073: former value: $ac_old_val" >&5
echo "$as_me: former value: $ac_old_val" >&2;}
- { echo "$as_me:1059: current value: $ac_new_val" >&5
+ { echo "$as_me:1075: current value: $ac_new_val" >&5
echo "$as_me: current value: $ac_new_val" >&2;}
ac_cache_corrupted=:
fi;;
@@ -1075,9 +1091,9 @@ echo "$as_me: current value: $ac_new_val" >&2;}
fi
done
if $ac_cache_corrupted; then
- { echo "$as_me:1078: error: changes in the environment can compromise the build" >&5
+ { echo "$as_me:1094: 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:1080: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+ { { echo "$as_me:1096: 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
@@ -1098,10 +1114,10 @@ esac
echo "#! $SHELL" >conftest.sh
echo "exit 0" >>conftest.sh
chmod +x conftest.sh
-if { (echo "$as_me:1101: PATH=\".;.\"; conftest.sh") >&5
+if { (echo "$as_me:1117: PATH=\".;.\"; conftest.sh") >&5
(PATH=".;."; conftest.sh) 2>&5
ac_status=$?
- echo "$as_me:1104: \$? = $ac_status" >&5
+ echo "$as_me:1120: \$? = $ac_status" >&5
(exit $ac_status); }; then
ac_path_separator=';'
else
@@ -1114,7 +1130,7 @@ ac_config_headers="$ac_config_headers include/ncurses_cfg.h:include/ncurses_cfg.
top_builddir=`pwd`
-echo "$as_me:1117: checking for egrep" >&5
+echo "$as_me:1133: 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
@@ -1124,11 +1140,11 @@ else
else ac_cv_prog_egrep='egrep'
fi
fi
-echo "$as_me:1127: result: $ac_cv_prog_egrep" >&5
+echo "$as_me:1143: 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:1131: error: No egrep program found" >&5
+test -z "$EGREP" && { { echo "$as_me:1147: error: No egrep program found" >&5
echo "$as_me: error: No egrep program found" >&2;}
{ (exit 1); exit 1; }; }
@@ -1138,7 +1154,7 @@ NCURSES_PATCH="`$ac_cv_prog_egrep '^NCURSES_PATCH[ ]*=' $srcdir/dist.mk | sed -
cf_cv_abi_version=${NCURSES_MAJOR}
cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR}
cf_cv_timestamp=`date`
-echo "$as_me:1141: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5
+echo "$as_me:1157: 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
@@ -1146,7 +1162,7 @@ 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:1149: WARNING: overriding release version $cf_cv_rel_version to $withval" >&5
+ { echo "$as_me:1165: 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;
@@ -1159,13 +1175,13 @@ if test -n "$NCURSES_MAJOR" ; then
[0-9]*) #(vi
;;
*)
- { { echo "$as_me:1162: error: Release major-version is not a number: $NCURSES_MAJOR" >&5
+ { { echo "$as_me:1178: 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:1168: error: Release major-version value is empty" >&5
+ { { echo "$as_me:1184: error: Release major-version value is empty" >&5
echo "$as_me: error: Release major-version value is empty" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1175,13 +1191,13 @@ if test -n "$NCURSES_MINOR" ; then
[0-9]*) #(vi
;;
*)
- { { echo "$as_me:1178: error: Release minor-version is not a number: $NCURSES_MINOR" >&5
+ { { echo "$as_me:1194: 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:1184: error: Release minor-version value is empty" >&5
+ { { echo "$as_me:1200: error: Release minor-version value is empty" >&5
echo "$as_me: error: Release minor-version value is empty" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1191,7 +1207,7 @@ 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:1194: WARNING: overriding ABI version $cf_cv_abi_version to $withval" >&5
+ { echo "$as_me:1210: 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;
@@ -1201,13 +1217,13 @@ if test -n "$cf_cv_abi_version" ; then
[0-9]*) #(vi
;;
*)
- { { echo "$as_me:1204: error: ABI version is not a number: $cf_cv_abi_version" >&5
+ { { echo "$as_me:1220: 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:1210: error: ABI version value is empty" >&5
+ { { echo "$as_me:1226: error: ABI version value is empty" >&5
echo "$as_me: error: ABI version value is empty" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -1229,7 +1245,7 @@ for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
fi
done
if test -z "$ac_aux_dir"; then
- { { echo "$as_me:1232: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
+ { { echo "$as_me:1248: 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
@@ -1239,11 +1255,11 @@ ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
# Make sure we can run config.sub.
$ac_config_sub sun4 >/dev/null 2>&1 ||
- { { echo "$as_me:1242: error: cannot run $ac_config_sub" >&5
+ { { echo "$as_me:1258: error: cannot run $ac_config_sub" >&5
echo "$as_me: error: cannot run $ac_config_sub" >&2;}
{ (exit 1); exit 1; }; }
-echo "$as_me:1246: checking build system type" >&5
+echo "$as_me:1262: 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
@@ -1252,23 +1268,23 @@ else
test -z "$ac_cv_build_alias" &&
ac_cv_build_alias=`$ac_config_guess`
test -z "$ac_cv_build_alias" &&
- { { echo "$as_me:1255: error: cannot guess build type; you must specify one" >&5
+ { { echo "$as_me:1271: 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:1259: error: $ac_config_sub $ac_cv_build_alias failed." >&5
+ { { echo "$as_me:1275: 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:1264: result: $ac_cv_build" >&5
+echo "$as_me:1280: 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:1271: checking host system type" >&5
+echo "$as_me:1287: 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
@@ -1277,12 +1293,12 @@ else
test -z "$ac_cv_host_alias" &&
ac_cv_host_alias=$ac_cv_build_alias
ac_cv_host=`$ac_config_sub $ac_cv_host_alias` ||
- { { echo "$as_me:1280: error: $ac_config_sub $ac_cv_host_alias failed" >&5
+ { { echo "$as_me:1296: 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:1285: result: $ac_cv_host" >&5
+echo "$as_me:1301: 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/'`
@@ -1290,7 +1306,7 @@ host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then
- echo "$as_me:1293: checking target system type" >&5
+ echo "$as_me:1309: 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
@@ -1299,12 +1315,12 @@ else
test "x$ac_cv_target_alias" = "x" &&
ac_cv_target_alias=$ac_cv_host_alias
ac_cv_target=`$ac_config_sub $ac_cv_target_alias` ||
- { { echo "$as_me:1302: error: $ac_config_sub $ac_cv_target_alias failed" >&5
+ { { echo "$as_me:1318: 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:1307: result: $ac_cv_target" >&5
+echo "$as_me:1323: 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/'`
@@ -1324,7 +1340,8 @@ 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
@@ -1335,13 +1352,13 @@ else
fi
test -z "$system_name" && system_name="$cf_cv_system_name"
-test -n "$cf_cv_system_name" && echo "$as_me:1338: result: Configuring for $cf_cv_system_name" >&5
+test -n "$cf_cv_system_name" && echo "$as_me:1355: result: Configuring for $cf_cv_system_name" >&5
echo "${ECHO_T}Configuring for $cf_cv_system_name" >&6
if test ".$system_name" != ".$cf_cv_system_name" ; then
- echo "$as_me:1342: result: Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)" >&5
+ echo "$as_me:1359: 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:1344: error: \"Please remove config.cache and try again.\"" >&5
+ { { echo "$as_me:1361: 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
@@ -1349,9 +1366,11 @@ fi
# Check whether --with-system-type or --without-system-type was given.
if test "${with_system_type+set}" = set; then
withval="$with_system_type"
- { echo "$as_me:1352: WARNING: overriding system type to $withval" >&5
+ { echo "$as_me:1369: WARNING: overriding system type to $withval" >&5
echo "$as_me: WARNING: overriding system type to $withval" >&2;}
- cf_cv_system_name=$withval
+ cf_cv_system_name=$withval
+ host_os=$withval
+
fi;
### Save the given $CFLAGS to allow user-override.
@@ -1359,23 +1378,23 @@ cf_user_CFLAGS="$CFLAGS"
### Default install-location
-echo "$as_me:1362: checking for prefix" >&5
+echo "$as_me:1381: checking for prefix" >&5
echo $ECHO_N "checking for prefix... $ECHO_C" >&6
if test "x$prefix" = "xNONE" ; then
case "$cf_cv_system_name" in
# non-vendor systems don't have a conflict
- openbsd*|freebsd*|linux*|cygwin*|k*bsd*-gnu)
+ openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*)
prefix=/usr
;;
*) prefix=$ac_default_prefix
;;
esac
fi
-echo "$as_me:1374: result: $prefix" >&5
+echo "$as_me:1393: result: $prefix" >&5
echo "${ECHO_T}$prefix" >&6
if test "x$prefix" = "xNONE" ; then
-echo "$as_me:1378: checking for default include-directory" >&5
+echo "$as_me:1397: 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 \
@@ -1398,11 +1417,26 @@ do
fi
test -n "$verbose" && echo " tested $cf_dir" 1>&6
done
-echo "$as_me:1401: result: $includedir" >&5
+echo "$as_me:1420: result: $includedir" >&5
echo "${ECHO_T}$includedir" >&6
fi
### Checks for programs.
+
+# Check whether --with-ada or --without-ada was given.
+if test "${with_ada+set}" = set; then
+ withval="$with_ada"
+ cf_with_ada=$withval
+else
+ cf_with_ada=yes
+fi;
+if test "x$cf_with_ada" = xyes
+then
+ cf_PROG_CC="gnatgcc gcc cc"
+else
+ cf_PROG_CC="gcc cc"
+fi
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -1410,213 +1444,11 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
if test -n "$ac_tool_prefix"; then
- # 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:1415: 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:1430: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1438: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1441: 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 "$as_me:1450: 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:1465: 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:1473: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1476: 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:1489: 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}cc"
-echo "$as_me:1504: found $ac_dir/$ac_word" >&5
-break
-done
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1512: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1515: 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:1524: 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:1539: 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:1547: result: $ac_ct_CC" >&5
-echo "${ECHO_T}$ac_ct_CC" >&6
-else
- echo "$as_me:1550: 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 "$as_me:1563: 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_prog_rejected=no
- 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:1583: 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 $# != 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" ${1+"$@"}
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- echo "$as_me:1605: result: $CC" >&5
-echo "${ECHO_T}$CC" >&6
-else
- echo "$as_me:1608: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- for ac_prog in cl
+ for ac_prog in $cf_PROG_CC
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:1619: checking for $ac_word" >&5
+echo "$as_me:1451: 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
@@ -1631,7 +1463,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
-echo "$as_me:1634: found $ac_dir/$ac_word" >&5
+echo "$as_me:1466: found $ac_dir/$ac_word" >&5
break
done
@@ -1639,10 +1471,10 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- echo "$as_me:1642: result: $CC" >&5
+ echo "$as_me:1474: result: $CC" >&5
echo "${ECHO_T}$CC" >&6
else
- echo "$as_me:1645: result: no" >&5
+ echo "$as_me:1477: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1651,11 +1483,11 @@ fi
fi
if test -z "$CC"; then
ac_ct_CC=$CC
- for ac_prog in cl
+ for ac_prog in $cf_PROG_CC
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-echo "$as_me:1658: checking for $ac_word" >&5
+echo "$as_me:1490: 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
@@ -1670,7 +1502,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_CC="$ac_prog"
-echo "$as_me:1673: found $ac_dir/$ac_word" >&5
+echo "$as_me:1505: found $ac_dir/$ac_word" >&5
break
done
@@ -1678,10 +1510,10 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- echo "$as_me:1681: result: $ac_ct_CC" >&5
+ echo "$as_me:1513: result: $ac_ct_CC" >&5
echo "${ECHO_T}$ac_ct_CC" >&6
else
- echo "$as_me:1684: result: no" >&5
+ echo "$as_me:1516: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -1691,34 +1523,32 @@ done
CC=$ac_ct_CC
fi
-fi
-
-test -z "$CC" && { { echo "$as_me:1696: error: no acceptable cc found in \$PATH" >&5
+test -z "$CC" && { { echo "$as_me:1526: 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:1701:" \
+echo "$as_me:1531:" \
"checking for C compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:1704: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1534: \"$ac_compiler --version </dev/null >&5\"") >&5
(eval $ac_compiler --version </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1707: \$? = $ac_status" >&5
+ echo "$as_me:1537: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:1709: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1539: \"$ac_compiler -v </dev/null >&5\"") >&5
(eval $ac_compiler -v </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1712: \$? = $ac_status" >&5
+ echo "$as_me:1542: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:1714: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:1544: \"$ac_compiler -V </dev/null >&5\"") >&5
(eval $ac_compiler -V </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:1717: \$? = $ac_status" >&5
+ echo "$as_me:1547: \$? = $ac_status" >&5
(exit $ac_status); }
cat >conftest.$ac_ext <<_ACEOF
-#line 1721 "configure"
+#line 1551 "configure"
#include "confdefs.h"
int
@@ -1734,13 +1564,13 @@ ac_clean_files="$ac_clean_files a.out a.exe"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-echo "$as_me:1737: checking for C compiler default output" >&5
+echo "$as_me:1567: 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:1740: \"$ac_link_default\"") >&5
+if { (eval echo "$as_me:1570: \"$ac_link_default\"") >&5
(eval $ac_link_default) 2>&5
ac_status=$?
- echo "$as_me:1743: \$? = $ac_status" >&5
+ echo "$as_me:1573: \$? = $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
@@ -1763,34 +1593,34 @@ done
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-{ { echo "$as_me:1766: error: C compiler cannot create executables" >&5
+{ { echo "$as_me:1596: 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:1772: result: $ac_file" >&5
+echo "$as_me:1602: 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:1777: checking whether the C compiler works" >&5
+echo "$as_me:1607: 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:1783: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1613: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1786: \$? = $ac_status" >&5
+ echo "$as_me:1616: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { echo "$as_me:1793: error: cannot run C compiled programs.
+ { { echo "$as_me:1623: 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;}
@@ -1798,24 +1628,24 @@ If you meant to cross compile, use \`--host'." >&2;}
fi
fi
fi
-echo "$as_me:1801: result: yes" >&5
+echo "$as_me:1631: 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:1808: checking whether we are cross compiling" >&5
+echo "$as_me:1638: checking whether we are cross compiling" >&5
echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6
-echo "$as_me:1810: result: $cross_compiling" >&5
+echo "$as_me:1640: result: $cross_compiling" >&5
echo "${ECHO_T}$cross_compiling" >&6
-echo "$as_me:1813: checking for executable suffix" >&5
+echo "$as_me:1643: checking for executable suffix" >&5
echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6
-if { (eval echo "$as_me:1815: \"$ac_link\"") >&5
+if { (eval echo "$as_me:1645: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:1818: \$? = $ac_status" >&5
+ echo "$as_me:1648: \$? = $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
@@ -1831,25 +1661,25 @@ for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do
esac
done
else
- { { echo "$as_me:1834: error: cannot compute EXEEXT: cannot compile and link" >&5
+ { { echo "$as_me:1664: error: cannot compute EXEEXT: cannot compile and link" >&5
echo "$as_me: error: cannot compute EXEEXT: cannot compile and link" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest$ac_cv_exeext
-echo "$as_me:1840: result: $ac_cv_exeext" >&5
+echo "$as_me:1670: 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:1846: checking for object suffix" >&5
+echo "$as_me:1676: 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 1852 "configure"
+#line 1682 "configure"
#include "confdefs.h"
int
@@ -1861,10 +1691,10 @@ main ()
}
_ACEOF
rm -f conftest.o conftest.obj
-if { (eval echo "$as_me:1864: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1694: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1867: \$? = $ac_status" >&5
+ echo "$as_me:1697: \$? = $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
@@ -1876,24 +1706,24 @@ done
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-{ { echo "$as_me:1879: error: cannot compute OBJEXT: cannot compile" >&5
+{ { echo "$as_me:1709: error: cannot compute OBJEXT: cannot compile" >&5
echo "$as_me: error: cannot compute OBJEXT: cannot compile" >&2;}
{ (exit 1); exit 1; }; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-echo "$as_me:1886: result: $ac_cv_objext" >&5
+echo "$as_me:1716: result: $ac_cv_objext" >&5
echo "${ECHO_T}$ac_cv_objext" >&6
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-echo "$as_me:1890: checking whether we are using the GNU C compiler" >&5
+echo "$as_me:1720: checking whether we are using the GNU C compiler" >&5
echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6
if test "${ac_cv_c_compiler_gnu+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 1896 "configure"
+#line 1726 "configure"
#include "confdefs.h"
int
@@ -1908,16 +1738,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1911: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1741: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1914: \$? = $ac_status" >&5
+ echo "$as_me:1744: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1917: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1747: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1920: \$? = $ac_status" >&5
+ echo "$as_me:1750: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_compiler_gnu=yes
else
@@ -1929,19 +1759,19 @@ rm -f conftest.$ac_objext conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-echo "$as_me:1932: result: $ac_cv_c_compiler_gnu" >&5
+echo "$as_me:1762: 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:1938: checking whether $CC accepts -g" >&5
+echo "$as_me:1768: 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 1944 "configure"
+#line 1774 "configure"
#include "confdefs.h"
int
@@ -1953,16 +1783,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:1956: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1786: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:1959: \$? = $ac_status" >&5
+ echo "$as_me:1789: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:1962: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1792: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:1965: \$? = $ac_status" >&5
+ echo "$as_me:1795: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_prog_cc_g=yes
else
@@ -1972,7 +1802,7 @@ ac_cv_prog_cc_g=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:1975: result: $ac_cv_prog_cc_g" >&5
+echo "$as_me:1805: 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
@@ -1999,16 +1829,16 @@ cat >conftest.$ac_ext <<_ACEOF
#endif
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2002: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1832: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2005: \$? = $ac_status" >&5
+ echo "$as_me:1835: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2008: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1838: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2011: \$? = $ac_status" >&5
+ echo "$as_me:1841: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
for ac_declaration in \
''\
@@ -2020,7 +1850,7 @@ if { (eval echo "$as_me:2002: \"$ac_compile\"") >&5
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line 2023 "configure"
+#line 1853 "configure"
#include "confdefs.h"
#include <stdlib.h>
$ac_declaration
@@ -2033,16 +1863,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2036: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1866: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2039: \$? = $ac_status" >&5
+ echo "$as_me:1869: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2042: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1872: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2045: \$? = $ac_status" >&5
+ echo "$as_me:1875: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -2052,7 +1882,7 @@ continue
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 2055 "configure"
+#line 1885 "configure"
#include "confdefs.h"
$ac_declaration
int
@@ -2064,16 +1894,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2067: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:1897: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2070: \$? = $ac_status" >&5
+ echo "$as_me:1900: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2073: \"$ac_try\"") >&5
+ { (eval echo "$as_me:1903: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2076: \$? = $ac_status" >&5
+ echo "$as_me:1906: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -2103,21 +1933,212 @@ ac_main_return=return
GCC_VERSION=none
if test "$GCC" = yes ; then
- echo "$as_me:2106: checking version of $CC" >&5
+ echo "$as_me:1936: checking version of $CC" >&5
echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
- GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
+ GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
test -z "$GCC_VERSION" && GCC_VERSION=unknown
- echo "$as_me:2110: result: $GCC_VERSION" >&5
+ echo "$as_me:1940: result: $GCC_VERSION" >&5
echo "${ECHO_T}$GCC_VERSION" >&6
fi
+echo "$as_me:1944: 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 1952 "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:2001: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:2004: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:2007: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:2010: \$? = $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
+
+case "x$ac_cv_prog_cc_stdc" in
+ x|xno)
+ echo "$as_me:2027: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6 ;;
+ *)
+ echo "$as_me:2030: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6
+ CC="$CC $ac_cv_prog_cc_stdc" ;;
+esac
+
+# This should have been defined by AC_PROG_CC
+: ${CC:=cc}
+
+echo "$as_me:2038: checking \$CC variable" >&5
+echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6
+case "$CC" in #(vi
+*[\ \ ]-[IUD]*)
+ echo "$as_me:2042: result: broken" >&5
+echo "${ECHO_T}broken" >&6
+ { echo "$as_me:2044: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&5
+echo "$as_me: WARNING: your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options" >&2;}
+ # humor him...
+ cf_flags=`echo "$CC" | sed -e 's/^[^ ]*[ ]//'`
+ CC=`echo "$CC" | sed -e 's/[ ].*//'`
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_flags
+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
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ 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="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+ ;;
+*)
+ echo "$as_me:2130: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+ ;;
+esac
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-echo "$as_me:2120: checking how to run the C preprocessor" >&5
+echo "$as_me:2141: 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
@@ -2138,18 +2159,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 2141 "configure"
+#line 2162 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:2146: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2167: \"$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:2152: \$? = $ac_status" >&5
+ echo "$as_me:2173: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2172,17 +2193,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 2175 "configure"
+#line 2196 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:2179: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2200: \"$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:2185: \$? = $ac_status" >&5
+ echo "$as_me:2206: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2219,7 +2240,7 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-echo "$as_me:2222: result: $CPP" >&5
+echo "$as_me:2243: result: $CPP" >&5
echo "${ECHO_T}$CPP" >&6
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
@@ -2229,18 +2250,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 2232 "configure"
+#line 2253 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:2237: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2258: \"$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:2243: \$? = $ac_status" >&5
+ echo "$as_me:2264: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2263,17 +2284,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 2266 "configure"
+#line 2287 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:2270: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:2291: \"$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:2276: \$? = $ac_status" >&5
+ echo "$as_me:2297: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -2301,7 +2322,7 @@ rm -f conftest.err conftest.$ac_ext
if $ac_preproc_ok; then
:
else
- { { echo "$as_me:2304: error: C preprocessor \"$CPP\" fails sanity check" >&5
+ { { echo "$as_me:2325: error: C preprocessor \"$CPP\" fails sanity check" >&5
echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -2314,14 +2335,14 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
if test $ac_cv_c_compiler_gnu = yes; then
- echo "$as_me:2317: checking whether $CC needs -traditional" >&5
+ echo "$as_me:2338: checking whether $CC needs -traditional" >&5
echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6
if test "${ac_cv_prog_gcc_traditional+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_pattern="Autoconf.*'x'"
cat >conftest.$ac_ext <<_ACEOF
-#line 2324 "configure"
+#line 2345 "configure"
#include "confdefs.h"
#include <sgtty.h>
int Autoconf = TIOCGETP;
@@ -2336,7 +2357,7 @@ rm -rf conftest*
if test $ac_cv_prog_gcc_traditional = no; then
cat >conftest.$ac_ext <<_ACEOF
-#line 2339 "configure"
+#line 2360 "configure"
#include "confdefs.h"
#include <termio.h>
int Autoconf = TCGETA;
@@ -2349,14 +2370,14 @@ rm -rf conftest*
fi
fi
-echo "$as_me:2352: result: $ac_cv_prog_gcc_traditional" >&5
+echo "$as_me:2373: result: $ac_cv_prog_gcc_traditional" >&5
echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6
if test $ac_cv_prog_gcc_traditional = yes; then
CC="$CC -traditional"
fi
fi
-echo "$as_me:2359: checking whether $CC understands -c and -o together" >&5
+echo "$as_me:2380: 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
@@ -2372,15 +2393,15 @@ 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:2375: \"$ac_try\"") >&5
+if { (eval echo "$as_me:2396: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2378: \$? = $ac_status" >&5
+ echo "$as_me:2399: \$? = $ac_status" >&5
(exit $ac_status); } &&
- test -f conftest2.$ac_objext && { (eval echo "$as_me:2380: \"$ac_try\"") >&5
+ test -f conftest2.$ac_objext && { (eval echo "$as_me:2401: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2383: \$? = $ac_status" >&5
+ echo "$as_me:2404: \$? = $ac_status" >&5
(exit $ac_status); };
then
eval cf_cv_prog_CC_c_o=yes
@@ -2391,318 +2412,24 @@ rm -rf conftest*
fi
if test $cf_cv_prog_CC_c_o = yes; then
- echo "$as_me:2394: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
- echo "$as_me:2397: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-echo "$as_me:2401: 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
-then
- echo "$as_me:2406: result: yes" >&5
+ echo "$as_me:2415: result: yes" >&5
echo "${ECHO_T}yes" >&6
- ISC=yes # If later tests want to check for ISC.
-
-cat >>confdefs.h <<\EOF
-#define _POSIX_SOURCE 1
-EOF
-
- if test "$GCC" = yes; then
- CC="$CC -posix"
- else
- CC="$CC -Xp"
- fi
else
- echo "$as_me:2420: result: no" >&5
+ echo "$as_me:2418: result: no" >&5
echo "${ECHO_T}no" >&6
- ISC=
-fi
-
-echo "$as_me:2425: 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"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX -qlanglvl=ansi
-# Ultrix and OSF/1 -std1
-# HP-UX -Aa -D_HPUX_SOURCE
-# SVR4 -Xc
-# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes)
-for cf_arg in "-DCC_HAS_PROTOS" \
- "" \
- -qlanglvl=ansi \
- -std1 \
- -Ae \
- "-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
- ;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
- cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
-
-CPPFLAGS=`echo "$CPPFLAGS" | \
- sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
- -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
-
- ;;
- esac
- 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="$CPPFLAGS $cf_new_cppflags"
-fi
-
-if test -n "$cf_new_extra_cppflags" ; then
-
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
-
- cat >conftest.$ac_ext <<_ACEOF
-#line 2529 "configure"
-#include "confdefs.h"
-
-#ifndef CC_HAS_PROTOS
-#if !defined(__STDC__) || (__STDC__ != 1)
-choke me
-#endif
-#endif
-
-int
-main ()
-{
-
- int test (int i, double x);
- struct s1 {int (*f) (int a);};
- struct s2 {int (*f) (double a);};
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2550: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:2553: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2556: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:2559: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- cf_cv_ansi_cc="$cf_arg"; break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-CFLAGS="$cf_save_CFLAGS"
-CPPFLAGS="$cf_save_CPPFLAGS"
-
-fi
-echo "$as_me:2572: 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
- ;;
- *) #(vi
- case $cf_add_cflags in #(vi
- -D*)
- cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
-
-CPPFLAGS=`echo "$CPPFLAGS" | \
- sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
- -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
-
- ;;
- esac
- 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="$CPPFLAGS $cf_new_cppflags"
-fi
-
-if test -n "$cf_new_extra_cppflags" ; then
-
- EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
-fi
-
-else
- cat >>confdefs.h <<\EOF
-#define CC_HAS_PROTOS 1
-EOF
-
-fi
-fi
-
-if test "$cf_cv_ansi_cc" = "no"; then
- { { echo "$as_me:2665: 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" >&2;}
- { (exit 1); exit 1; }; }
fi
-case $cf_cv_system_name in
-os2*)
- CFLAGS="$CFLAGS -Zmt"
- CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__"
- CXXFLAGS="$CXXFLAGS -Zmt"
- # autoconf's macro sets -Zexe and suffix both, which conflict:w
- LDFLAGS="$LDFLAGS -Zmt -Zcrtdll"
- ac_cv_exeext=.exe
- ;;
-esac
-
-PROG_EXT="$EXEEXT"
-
-test -n "$PROG_EXT" && cat >>confdefs.h <<EOF
-#define PROG_EXT "$PROG_EXT"
-EOF
-
if test "$cross_compiling" = yes ; then
LDCONFIG=:
else
case "$cf_cv_system_name" in #(vi
-dragonfly*|freebsd*) #(vi
+dragonfly*|mirbsd*|freebsd*) #(vi
test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
;;
*) LDPATH=$PATH:/sbin:/usr/sbin
# Extract the first word of "ldconfig", so it can be a program name with args.
set dummy ldconfig; ac_word=$2
-echo "$as_me:2705: checking for $ac_word" >&5
+echo "$as_me:2432: 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
@@ -2719,7 +2446,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_LDCONFIG="$ac_dir/$ac_word"
- echo "$as_me:2722: found $ac_dir/$ac_word" >&5
+ echo "$as_me:2449: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -2730,10 +2457,10 @@ fi
LDCONFIG=$ac_cv_path_LDCONFIG
if test -n "$LDCONFIG"; then
- echo "$as_me:2733: result: $LDCONFIG" >&5
+ echo "$as_me:2460: result: $LDCONFIG" >&5
echo "${ECHO_T}$LDCONFIG" >&6
else
- echo "$as_me:2736: result: no" >&5
+ echo "$as_me:2463: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2741,7 +2468,7 @@ fi
esac
fi
-echo "$as_me:2744: checking if you want to ensure bool is consistent with C++" >&5
+echo "$as_me:2471: 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.
@@ -2751,7 +2478,7 @@ if test "${with_cxx+set}" = set; then
else
cf_with_cxx=yes
fi;
-echo "$as_me:2754: result: $cf_with_cxx" >&5
+echo "$as_me:2481: result: $cf_with_cxx" >&5
echo "${ECHO_T}$cf_with_cxx" >&6
if test "X$cf_with_cxx" = Xno ; then
CXX=""
@@ -2769,7 +2496,7 @@ if test -n "$ac_tool_prefix"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:2772: checking for $ac_word" >&5
+echo "$as_me:2499: 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
@@ -2784,7 +2511,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
-echo "$as_me:2787: found $ac_dir/$ac_word" >&5
+echo "$as_me:2514: found $ac_dir/$ac_word" >&5
break
done
@@ -2792,10 +2519,10 @@ fi
fi
CXX=$ac_cv_prog_CXX
if test -n "$CXX"; then
- echo "$as_me:2795: result: $CXX" >&5
+ echo "$as_me:2522: result: $CXX" >&5
echo "${ECHO_T}$CXX" >&6
else
- echo "$as_me:2798: result: no" >&5
+ echo "$as_me:2525: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2808,7 +2535,7 @@ if test -z "$CXX"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-echo "$as_me:2811: checking for $ac_word" >&5
+echo "$as_me:2538: 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
@@ -2823,7 +2550,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_CXX="$ac_prog"
-echo "$as_me:2826: found $ac_dir/$ac_word" >&5
+echo "$as_me:2553: found $ac_dir/$ac_word" >&5
break
done
@@ -2831,10 +2558,10 @@ fi
fi
ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
if test -n "$ac_ct_CXX"; then
- echo "$as_me:2834: result: $ac_ct_CXX" >&5
+ echo "$as_me:2561: result: $ac_ct_CXX" >&5
echo "${ECHO_T}$ac_ct_CXX" >&6
else
- echo "$as_me:2837: result: no" >&5
+ echo "$as_me:2564: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -2846,32 +2573,32 @@ test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
fi
# Provide some information about the compiler.
-echo "$as_me:2849:" \
+echo "$as_me:2576:" \
"checking for C++ compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:2852: \"$ac_compiler --version </dev/null >&5\"") >&5
+{ (eval echo "$as_me:2579: \"$ac_compiler --version </dev/null >&5\"") >&5
(eval $ac_compiler --version </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:2855: \$? = $ac_status" >&5
+ echo "$as_me:2582: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:2857: \"$ac_compiler -v </dev/null >&5\"") >&5
+{ (eval echo "$as_me:2584: \"$ac_compiler -v </dev/null >&5\"") >&5
(eval $ac_compiler -v </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:2860: \$? = $ac_status" >&5
+ echo "$as_me:2587: \$? = $ac_status" >&5
(exit $ac_status); }
-{ (eval echo "$as_me:2862: \"$ac_compiler -V </dev/null >&5\"") >&5
+{ (eval echo "$as_me:2589: \"$ac_compiler -V </dev/null >&5\"") >&5
(eval $ac_compiler -V </dev/null >&5) 2>&5
ac_status=$?
- echo "$as_me:2865: \$? = $ac_status" >&5
+ echo "$as_me:2592: \$? = $ac_status" >&5
(exit $ac_status); }
-echo "$as_me:2868: checking whether we are using the GNU C++ compiler" >&5
+echo "$as_me:2595: 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 2874 "configure"
+#line 2601 "configure"
#include "confdefs.h"
int
@@ -2886,16 +2613,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2889: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2616: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2892: \$? = $ac_status" >&5
+ echo "$as_me:2619: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2895: \"$ac_try\"") >&5
+ { (eval echo "$as_me:2622: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2898: \$? = $ac_status" >&5
+ echo "$as_me:2625: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_compiler_gnu=yes
else
@@ -2907,19 +2634,19 @@ rm -f conftest.$ac_objext conftest.$ac_ext
ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
fi
-echo "$as_me:2910: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "$as_me:2637: 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:2916: checking whether $CXX accepts -g" >&5
+echo "$as_me:2643: 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 2922 "configure"
+#line 2649 "configure"
#include "confdefs.h"
int
@@ -2931,16 +2658,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2934: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2661: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2937: \$? = $ac_status" >&5
+ echo "$as_me:2664: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2940: \"$ac_try\"") >&5
+ { (eval echo "$as_me:2667: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:2943: \$? = $ac_status" >&5
+ echo "$as_me:2670: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_prog_cxx_g=yes
else
@@ -2950,7 +2677,7 @@ ac_cv_prog_cxx_g=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:2953: result: $ac_cv_prog_cxx_g" >&5
+echo "$as_me:2680: 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
@@ -2977,7 +2704,7 @@ for ac_declaration in \
'void exit (int);'
do
cat >conftest.$ac_ext <<_ACEOF
-#line 2980 "configure"
+#line 2707 "configure"
#include "confdefs.h"
#include <stdlib.h>
$ac_declaration
@@ -2990,16 +2717,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:2993: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2720: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:2996: \$? = $ac_status" >&5
+ echo "$as_me:2723: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:2999: \"$ac_try\"") >&5
+ { (eval echo "$as_me:2726: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3002: \$? = $ac_status" >&5
+ echo "$as_me:2729: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -3009,7 +2736,7 @@ continue
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 3012 "configure"
+#line 2739 "configure"
#include "confdefs.h"
$ac_declaration
int
@@ -3021,16 +2748,16 @@ exit (42);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:3024: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:2751: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:3027: \$? = $ac_status" >&5
+ echo "$as_me:2754: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:3030: \"$ac_try\"") >&5
+ { (eval echo "$as_me:2757: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:3033: \$? = $ac_status" >&5
+ echo "$as_me:2760: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -3053,11 +2780,11 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
- # autoconf 2.5x removed the error - by hardcoding it to g++.
+ # autoconf 2.5x removed the error (hardcoding it to g++, or just blank)
if test "$CXX" = "g++" ; then
# Extract the first word of "g++", so it can be a program name with args.
set dummy g++; ac_word=$2
-echo "$as_me:3060: checking for $ac_word" >&5
+echo "$as_me:2787: 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
@@ -3074,7 +2801,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_CXX="$ac_dir/$ac_word"
- echo "$as_me:3077: found $ac_dir/$ac_word" >&5
+ echo "$as_me:2804: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -3085,28 +2812,30 @@ fi
CXX=$ac_cv_path_CXX
if test -n "$CXX"; then
- echo "$as_me:3088: result: $CXX" >&5
+ echo "$as_me:2815: result: $CXX" >&5
echo "${ECHO_T}$CXX" >&6
else
- echo "$as_me:3091: result: no" >&5
+ echo "$as_me:2818: result: no" >&5
echo "${ECHO_T}no" >&6
fi
fi
- if test "$CXX" = "g++" ; then
- { echo "$as_me:3097: WARNING: ignoring hardcoded g++" >&5
-echo "$as_me: WARNING: ignoring hardcoded g++" >&2;}
+ case "x$CXX" in #(vi
+ x|xg++)
+ { echo "$as_me:2825: WARNING: You don't have any C++ compiler, too bad" >&5
+echo "$as_me: WARNING: You don't have any C++ compiler, too bad" >&2;}
cf_with_cxx=no; CXX=""; GXX="";
- fi
+ ;;
+ esac
fi
GXX_VERSION=none
if test "$GXX" = yes; then
- echo "$as_me:3105: checking version of g++" >&5
-echo $ECHO_N "checking version of g++... $ECHO_C" >&6
+ echo "$as_me:2834: checking version of ${CXX:-g++}" >&5
+echo $ECHO_N "checking version of ${CXX:-g++}... $ECHO_C" >&6
GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`"
test -z "$GXX_VERSION" && GXX_VERSION=unknown
- echo "$as_me:3109: result: $GXX_VERSION" >&5
+ echo "$as_me:2838: result: $GXX_VERSION" >&5
echo "${ECHO_T}$GXX_VERSION" >&6
fi
@@ -3114,12 +2843,12 @@ case $GXX_VERSION in
1*|2.[0-6]*)
# GXX=""; CXX=""; ac_cv_prog_gxx=no
# cf_cxx_library=no
- { echo "$as_me:3117: WARNING: templates do not work" >&5
+ { echo "$as_me:2846: WARNING: templates do not work" >&5
echo "$as_me: WARNING: templates do not work" >&2;}
;;
esac
-echo "$as_me:3122: checking if you want to build C++ binding and demo" >&5
+echo "$as_me:2851: 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.
@@ -3129,23 +2858,28 @@ if test "${with_cxx_binding+set}" = set; then
else
cf_with_cxx_binding=$cf_with_cxx
fi;
-echo "$as_me:3132: result: $cf_with_cxx_binding" >&5
+echo "$as_me:2861: result: $cf_with_cxx_binding" >&5
echo "${ECHO_T}$cf_with_cxx_binding" >&6
-echo "$as_me:3135: checking if you want to build with Ada95" >&5
+echo "$as_me:2864: checking if you want to build with Ada95" >&5
echo $ECHO_N "checking if you want to build with Ada95... $ECHO_C" >&6
+echo "$as_me:2866: result: $cf_with_ada" >&5
+echo "${ECHO_T}$cf_with_ada" >&6
-# Check whether --with-ada or --without-ada was given.
-if test "${with_ada+set}" = set; then
- withval="$with_ada"
- cf_with_ada=$withval
+echo "$as_me:2869: checking if you want to install terminal database" >&5
+echo $ECHO_N "checking if you want to install terminal database... $ECHO_C" >&6
+
+# Check whether --enable-db-install or --disable-db-install was given.
+if test "${enable_db_install+set}" = set; then
+ enableval="$enable_db_install"
+ cf_with_db_install=$enableval
else
- cf_with_ada=yes
+ cf_with_db_install=yes
fi;
-echo "$as_me:3145: result: $cf_with_ada" >&5
-echo "${ECHO_T}$cf_with_ada" >&6
+echo "$as_me:2879: result: $cf_with_db_install" >&5
+echo "${ECHO_T}$cf_with_db_install" >&6
-echo "$as_me:3148: checking if you want to install manpages" >&5
+echo "$as_me:2882: checking if you want to install manpages" >&5
echo $ECHO_N "checking if you want to install manpages... $ECHO_C" >&6
# Check whether --with-manpages or --without-manpages was given.
@@ -3155,10 +2889,10 @@ if test "${with_manpages+set}" = set; then
else
cf_with_manpages=yes
fi;
-echo "$as_me:3158: result: $cf_with_manpages" >&5
+echo "$as_me:2892: result: $cf_with_manpages" >&5
echo "${ECHO_T}$cf_with_manpages" >&6
-echo "$as_me:3161: checking if you want to build programs such as tic" >&5
+echo "$as_me:2895: 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.
@@ -3168,10 +2902,10 @@ if test "${with_progs+set}" = set; then
else
cf_with_progs=yes
fi;
-echo "$as_me:3171: result: $cf_with_progs" >&5
+echo "$as_me:2905: result: $cf_with_progs" >&5
echo "${ECHO_T}$cf_with_progs" >&6
-echo "$as_me:3174: checking if you want to build test-programs" >&5
+echo "$as_me:2908: checking if you want to build test-programs" >&5
echo $ECHO_N "checking if you want to build test-programs... $ECHO_C" >&6
# Check whether --with-tests or --without-tests was given.
@@ -3181,10 +2915,10 @@ if test "${with_tests+set}" = set; then
else
cf_with_tests=yes
fi;
-echo "$as_me:3184: result: $cf_with_tests" >&5
+echo "$as_me:2918: result: $cf_with_tests" >&5
echo "${ECHO_T}$cf_with_tests" >&6
-echo "$as_me:3187: checking if you wish to install curses.h" >&5
+echo "$as_me:2921: 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.
@@ -3194,7 +2928,7 @@ if test "${with_curses_h+set}" = set; then
else
with_curses_h=yes
fi;
-echo "$as_me:3197: result: $with_curses_h" >&5
+echo "$as_me:2931: result: $with_curses_h" >&5
echo "${ECHO_T}$with_curses_h" >&6
modules_to_build="ncurses"
@@ -3220,7 +2954,7 @@ for ac_prog in mawk gawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-echo "$as_me:3223: checking for $ac_word" >&5
+echo "$as_me:2957: 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
@@ -3235,7 +2969,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AWK="$ac_prog"
-echo "$as_me:3238: found $ac_dir/$ac_word" >&5
+echo "$as_me:2972: found $ac_dir/$ac_word" >&5
break
done
@@ -3243,21 +2977,21 @@ fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- echo "$as_me:3246: result: $AWK" >&5
+ echo "$as_me:2980: result: $AWK" >&5
echo "${ECHO_T}$AWK" >&6
else
- echo "$as_me:3249: result: no" >&5
+ echo "$as_me:2983: result: no" >&5
echo "${ECHO_T}no" >&6
fi
test -n "$AWK" && break
done
-test -z "$AWK" && { { echo "$as_me:3256: error: No awk program found" >&5
+test -z "$AWK" && { { echo "$as_me:2990: error: No awk program found" >&5
echo "$as_me: error: No awk program found" >&2;}
{ (exit 1); exit 1; }; }
-echo "$as_me:3260: checking for egrep" >&5
+echo "$as_me:2994: 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
@@ -3267,11 +3001,11 @@ else
else ac_cv_prog_egrep='egrep'
fi
fi
-echo "$as_me:3270: result: $ac_cv_prog_egrep" >&5
+echo "$as_me:3004: 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:3274: error: No egrep program found" >&5
+test -z "$EGREP" && { { echo "$as_me:3008: error: No egrep program found" >&5
echo "$as_me: error: No egrep program found" >&2;}
{ (exit 1); exit 1; }; }
@@ -3287,7 +3021,7 @@ echo "$as_me: error: No egrep program found" >&2;}
# AFS /usr/afsws/bin/install, which mishandles nonexistent args
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:3290: checking for a BSD compatible install" >&5
+echo "$as_me:3024: checking for a BSD compatible install" >&5
echo $ECHO_N "checking for a BSD compatible install... $ECHO_C" >&6
if test -z "$INSTALL"; then
if test "${ac_cv_path_install+set}" = set; then
@@ -3336,7 +3070,7 @@ fi
INSTALL=$ac_install_sh
fi
fi
-echo "$as_me:3339: result: $INSTALL" >&5
+echo "$as_me:3073: result: $INSTALL" >&5
echo "${ECHO_T}$INSTALL" >&6
# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
@@ -3361,7 +3095,7 @@ for ac_prog in tdlint lint alint splint lclint
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:3364: checking for $ac_word" >&5
+echo "$as_me:3098: 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
@@ -3376,7 +3110,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_LINT="$ac_prog"
-echo "$as_me:3379: found $ac_dir/$ac_word" >&5
+echo "$as_me:3113: found $ac_dir/$ac_word" >&5
break
done
@@ -3384,28 +3118,28 @@ fi
fi
LINT=$ac_cv_prog_LINT
if test -n "$LINT"; then
- echo "$as_me:3387: result: $LINT" >&5
+ echo "$as_me:3121: result: $LINT" >&5
echo "${ECHO_T}$LINT" >&6
else
- echo "$as_me:3390: result: no" >&5
+ echo "$as_me:3124: result: no" >&5
echo "${ECHO_T}no" >&6
fi
test -n "$LINT" && break
done
-echo "$as_me:3397: checking whether ln -s works" >&5
+echo "$as_me:3131: 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:3401: result: yes" >&5
+ echo "$as_me:3135: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:3404: result: no, using $LN_S" >&5
+ echo "$as_me:3138: result: no, using $LN_S" >&5
echo "${ECHO_T}no, using $LN_S" >&6
fi
-echo "$as_me:3408: checking if $LN_S -f options work" >&5
+echo "$as_me:3142: checking if $LN_S -f options work" >&5
echo $ECHO_N "checking if $LN_S -f options work... $ECHO_C" >&6
rm -f conf$$.src conf$$dst
@@ -3417,12 +3151,12 @@ else
cf_prog_ln_sf=no
fi
rm -f conf$$.dst conf$$src
-echo "$as_me:3420: result: $cf_prog_ln_sf" >&5
+echo "$as_me:3154: result: $cf_prog_ln_sf" >&5
echo "${ECHO_T}$cf_prog_ln_sf" >&6
test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f"
-echo "$as_me:3425: checking for long file names" >&5
+echo "$as_me:3159: 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
@@ -3461,7 +3195,7 @@ for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do
rm -rf $ac_xdir 2>/dev/null
done
fi
-echo "$as_me:3464: result: $ac_cv_sys_long_file_names" >&5
+echo "$as_me:3198: 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
@@ -3473,7 +3207,7 @@ fi
# if we find pkg-config, check if we should install the ".pc" files.
-echo "$as_me:3476: checking if you want to use pkg-config" >&5
+echo "$as_me:3210: checking if you want to use pkg-config" >&5
echo $ECHO_N "checking if you want to use pkg-config... $ECHO_C" >&6
# Check whether --with-pkg-config or --without-pkg-config was given.
@@ -3483,7 +3217,7 @@ if test "${with_pkg_config+set}" = set; then
else
cf_pkg_config=yes
fi;
-echo "$as_me:3486: result: $cf_pkg_config" >&5
+echo "$as_me:3220: result: $cf_pkg_config" >&5
echo "${ECHO_T}$cf_pkg_config" >&6
case $cf_pkg_config in #(vi
@@ -3491,10 +3225,11 @@ no) #(vi
PKG_CONFIG=none
;;
yes) #(vi
- if test -n "$ac_tool_prefix"; then
+
+if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-echo "$as_me:3497: checking for $ac_word" >&5
+echo "$as_me:3232: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3511,7 +3246,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_PKG_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:3514: found $ac_dir/$ac_word" >&5
+ echo "$as_me:3249: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -3522,10 +3257,10 @@ fi
PKG_CONFIG=$ac_cv_path_PKG_CONFIG
if test -n "$PKG_CONFIG"; then
- echo "$as_me:3525: result: $PKG_CONFIG" >&5
+ echo "$as_me:3260: result: $PKG_CONFIG" >&5
echo "${ECHO_T}$PKG_CONFIG" >&6
else
- echo "$as_me:3528: result: no" >&5
+ echo "$as_me:3263: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3534,7 +3269,7 @@ if test -z "$ac_cv_path_PKG_CONFIG"; then
ac_pt_PKG_CONFIG=$PKG_CONFIG
# Extract the first word of "pkg-config", so it can be a program name with args.
set dummy pkg-config; ac_word=$2
-echo "$as_me:3537: checking for $ac_word" >&5
+echo "$as_me:3272: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3551,7 +3286,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_ac_pt_PKG_CONFIG="$ac_dir/$ac_word"
- echo "$as_me:3554: found $ac_dir/$ac_word" >&5
+ echo "$as_me:3289: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -3563,10 +3298,10 @@ fi
ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
if test -n "$ac_pt_PKG_CONFIG"; then
- echo "$as_me:3566: result: $ac_pt_PKG_CONFIG" >&5
+ echo "$as_me:3301: result: $ac_pt_PKG_CONFIG" >&5
echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
else
- echo "$as_me:3569: result: no" >&5
+ echo "$as_me:3304: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3597,7 +3332,7 @@ case ".$PKG_CONFIG" in #(vi
;;
.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
;;
-.\${*prefix}*) #(vi
+.\${*prefix}*|.\${*dir}*) #(vi
eval PKG_CONFIG="$PKG_CONFIG"
case ".$PKG_CONFIG" in #(vi
.NONE/*)
@@ -3609,7 +3344,7 @@ case ".$PKG_CONFIG" in #(vi
PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { { echo "$as_me:3612: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
+ { { echo "$as_me:3347: error: expected a pathname, not \"$PKG_CONFIG\"" >&5
echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;}
{ (exit 1); exit 1; }; }
;;
@@ -3617,16 +3352,51 @@ esac
fi
-if test "$PKG_CONFIG" != no ; then
- echo "$as_me:3621: checking if we should install .pc files for $PKG_CONFIG" >&5
-echo $ECHO_N "checking if we should install .pc files for $PKG_CONFIG... $ECHO_C" >&6
+if test "$PKG_CONFIG" != none ; then
+ echo "$as_me:3356: checking for $PKG_CONFIG library directory" >&5
+echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6
- # Leave this as something that can be overridden in the environment.
- if test -z "$PKG_CONFIG_LIBDIR" ; then
- PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`/lib/pkgconfig
- fi
- PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
- if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
+# Check whether --with-pkg-config-libdir or --without-pkg-config-libdir was given.
+if test "${with_pkg_config_libdir+set}" = set; then
+ withval="$with_pkg_config_libdir"
+ PKG_CONFIG_LIBDIR=$withval
+else
+ PKG_CONFIG_LIBDIR=yes
+fi;
+
+ case x$PKG_CONFIG_LIBDIR in #(vi
+ x/*) #(vi
+ ;;
+ xyes) #(vi
+ # look for the library directory using the same prefix as the executable
+ cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`
+ case x`(arch) 2>/dev/null` in #(vi
+ *64) #(vi
+ for cf_config in $cf_path/share $cf_path/lib64 $cf_path/lib32 $cf_path/lib
+ do
+ if test -d $cf_config/pkgconfig
+ then
+ PKG_CONFIG_LIBDIR=$cf_config/pkgconfig
+ break
+ fi
+ done
+ ;;
+ *)
+ PKG_CONFIG_LIBDIR=$cf_path/lib/pkgconfig
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+ esac
+
+ echo "$as_me:3393: result: $PKG_CONFIG_LIBDIR" >&5
+echo "${ECHO_T}$PKG_CONFIG_LIBDIR" >&6
+fi
+
+if test "$PKG_CONFIG" != none ; then
+ echo "$as_me:3398: checking if we should install .pc files for $PKG_CONFIG" >&5
+echo $ECHO_N "checking if we should install .pc files for $PKG_CONFIG... $ECHO_C" >&6
# Check whether --enable-pc-files or --disable-pc-files was given.
if test "${enable_pc_files+set}" = set; then
@@ -3635,18 +3405,48 @@ if test "${enable_pc_files+set}" = set; then
else
enable_pc_files=no
fi;
- echo "$as_me:3638: result: $enable_pc_files" >&5
+ echo "$as_me:3408: result: $enable_pc_files" >&5
echo "${ECHO_T}$enable_pc_files" >&6
- else
- echo "$as_me:3641: result: no" >&5
-echo "${ECHO_T}no" >&6
- { echo "$as_me:3643: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&5
-echo "$as_me: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&2;}
- enable_pc_files=no
+ if test "$enable_pc_files" != no
+ then
+
+if test "x$prefix" != xNONE; then
+ cf_path_syntax="$prefix"
+else
+ cf_path_syntax="$ac_default_prefix"
+fi
+
+case ".$PKG_CONFIG_LIBDIR" in #(vi
+.\$\(*\)*|.\'*\'*) #(vi
+ ;;
+..|./*|.\\*) #(vi
+ ;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
+.\${*prefix}*|.\${*dir}*) #(vi
+ eval PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR"
+ case ".$PKG_CONFIG_LIBDIR" in #(vi
+ .NONE/*)
+ PKG_CONFIG_LIBDIR=`echo $PKG_CONFIG_LIBDIR | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+ esac
+ ;; #(vi
+.no|.NONE/*)
+ PKG_CONFIG_LIBDIR=`echo $PKG_CONFIG_LIBDIR | sed -e s%NONE%$cf_path_syntax%`
+ ;;
+*)
+ { { echo "$as_me:3438: error: expected a pathname, not \"$PKG_CONFIG_LIBDIR\"" >&5
+echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG_LIBDIR\"" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+esac
+
fi
+else
+ enable_pc_files=no
fi
-echo "$as_me:3649: checking if we should assume mixed-case filenames" >&5
+echo "$as_me:3449: checking if we should assume mixed-case filenames" >&5
echo $ECHO_N "checking if we should assume mixed-case filenames... $ECHO_C" >&6
# Check whether --enable-mixed-case or --disable-mixed-case was given.
@@ -3656,11 +3456,11 @@ if test "${enable_mixed_case+set}" = set; then
else
enable_mixedcase=auto
fi;
-echo "$as_me:3659: result: $enable_mixedcase" >&5
+echo "$as_me:3459: result: $enable_mixedcase" >&5
echo "${ECHO_T}$enable_mixedcase" >&6
if test "$enable_mixedcase" = "auto" ; then
-echo "$as_me:3663: checking if filesystem supports mixed-case filenames" >&5
+echo "$as_me:3463: 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
@@ -3668,7 +3468,7 @@ else
if test "$cross_compiling" = yes ; then
case $target_alias in #(vi
- *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi
+ *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*) #(vi
cf_cv_mixedcase=no
;;
*)
@@ -3687,16 +3487,18 @@ else
fi
fi
-echo "$as_me:3690: result: $cf_cv_mixedcase" >&5
+echo "$as_me:3490: result: $cf_cv_mixedcase" >&5
echo "${ECHO_T}$cf_cv_mixedcase" >&6
-test "$cf_cv_mixedcase" = yes && cat >>confdefs.h <<\EOF
+test "$cf_cv_mixedcase" = yes &&
+cat >>confdefs.h <<\EOF
#define MIXEDCASE_FILENAMES 1
EOF
else
cf_cv_mixedcase=$enable_mixedcase
- if test "$enable_mixedcase" = "yes" ; then
- cat >>confdefs.h <<\EOF
+ if test "x$enable_mixedcase" = "xyes" ; then
+
+cat >>confdefs.h <<\EOF
#define MIXEDCASE_FILENAMES 1
EOF
@@ -3704,7 +3506,7 @@ EOF
fi
# do this after mixed-case option (tags/TAGS is not as important as tic).
-echo "$as_me:3707: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "$as_me:3509: 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
@@ -3724,11 +3526,11 @@ fi
rm -f conftest.make
fi
if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
- echo "$as_me:3727: result: yes" >&5
+ echo "$as_me:3529: result: yes" >&5
echo "${ECHO_T}yes" >&6
SET_MAKE=
else
- echo "$as_me:3731: result: no" >&5
+ echo "$as_me:3533: result: no" >&5
echo "${ECHO_T}no" >&6
SET_MAKE="MAKE=${MAKE-make}"
fi
@@ -3737,7 +3539,7 @@ for ac_prog in exctags ctags
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-echo "$as_me:3740: checking for $ac_word" >&5
+echo "$as_me:3542: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_CTAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3752,7 +3554,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_CTAGS="$ac_prog"
-echo "$as_me:3755: found $ac_dir/$ac_word" >&5
+echo "$as_me:3557: found $ac_dir/$ac_word" >&5
break
done
@@ -3760,10 +3562,10 @@ fi
fi
CTAGS=$ac_cv_prog_CTAGS
if test -n "$CTAGS"; then
- echo "$as_me:3763: result: $CTAGS" >&5
+ echo "$as_me:3565: result: $CTAGS" >&5
echo "${ECHO_T}$CTAGS" >&6
else
- echo "$as_me:3766: result: no" >&5
+ echo "$as_me:3568: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3774,7 +3576,7 @@ for ac_prog in exetags etags
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-echo "$as_me:3777: checking for $ac_word" >&5
+echo "$as_me:3579: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_ETAGS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -3789,7 +3591,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ETAGS="$ac_prog"
-echo "$as_me:3792: found $ac_dir/$ac_word" >&5
+echo "$as_me:3594: found $ac_dir/$ac_word" >&5
break
done
@@ -3797,10 +3599,10 @@ fi
fi
ETAGS=$ac_cv_prog_ETAGS
if test -n "$ETAGS"; then
- echo "$as_me:3800: result: $ETAGS" >&5
+ echo "$as_me:3602: result: $ETAGS" >&5
echo "${ECHO_T}$ETAGS" >&6
else
- echo "$as_me:3803: result: no" >&5
+ echo "$as_me:3605: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3809,7 +3611,7 @@ done
# Extract the first word of "${CTAGS:-ctags}", so it can be a program name with args.
set dummy ${CTAGS:-ctags}; ac_word=$2
-echo "$as_me:3812: checking for $ac_word" >&5
+echo "$as_me:3614: 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
@@ -3824,7 +3626,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_MAKE_LOWER_TAGS="yes"
-echo "$as_me:3827: found $ac_dir/$ac_word" >&5
+echo "$as_me:3629: found $ac_dir/$ac_word" >&5
break
done
@@ -3833,17 +3635,17 @@ fi
fi
MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS
if test -n "$MAKE_LOWER_TAGS"; then
- echo "$as_me:3836: result: $MAKE_LOWER_TAGS" >&5
+ echo "$as_me:3638: result: $MAKE_LOWER_TAGS" >&5
echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6
else
- echo "$as_me:3839: result: no" >&5
+ echo "$as_me:3641: result: no" >&5
echo "${ECHO_T}no" >&6
fi
if test "$cf_cv_mixedcase" = yes ; then
# Extract the first word of "${ETAGS:-etags}", so it can be a program name with args.
set dummy ${ETAGS:-etags}; ac_word=$2
-echo "$as_me:3846: checking for $ac_word" >&5
+echo "$as_me:3648: 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
@@ -3858,7 +3660,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_MAKE_UPPER_TAGS="yes"
-echo "$as_me:3861: found $ac_dir/$ac_word" >&5
+echo "$as_me:3663: found $ac_dir/$ac_word" >&5
break
done
@@ -3867,10 +3669,10 @@ fi
fi
MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS
if test -n "$MAKE_UPPER_TAGS"; then
- echo "$as_me:3870: result: $MAKE_UPPER_TAGS" >&5
+ echo "$as_me:3672: result: $MAKE_UPPER_TAGS" >&5
echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6
else
- echo "$as_me:3873: result: no" >&5
+ echo "$as_me:3675: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3890,7 +3692,7 @@ else
MAKE_LOWER_TAGS="#"
fi
-echo "$as_me:3893: checking for makeflags variable" >&5
+echo "$as_me:3695: 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
@@ -3924,13 +3726,13 @@ CF_EOF
rm -f cf_makeflags.tmp
fi
-echo "$as_me:3927: result: $cf_cv_makeflags" >&5
+echo "$as_me:3729: result: $cf_cv_makeflags" >&5
echo "${ECHO_T}$cf_cv_makeflags" >&6
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-echo "$as_me:3933: checking for $ac_word" >&5
+echo "$as_me:3735: 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
@@ -3945,7 +3747,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
-echo "$as_me:3948: found $ac_dir/$ac_word" >&5
+echo "$as_me:3750: found $ac_dir/$ac_word" >&5
break
done
@@ -3953,10 +3755,10 @@ fi
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
- echo "$as_me:3956: result: $RANLIB" >&5
+ echo "$as_me:3758: result: $RANLIB" >&5
echo "${ECHO_T}$RANLIB" >&6
else
- echo "$as_me:3959: result: no" >&5
+ echo "$as_me:3761: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -3965,7 +3767,7 @@ if test -z "$ac_cv_prog_RANLIB"; then
ac_ct_RANLIB=$RANLIB
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
-echo "$as_me:3968: checking for $ac_word" >&5
+echo "$as_me:3770: 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
@@ -3980,7 +3782,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_RANLIB="ranlib"
-echo "$as_me:3983: found $ac_dir/$ac_word" >&5
+echo "$as_me:3785: found $ac_dir/$ac_word" >&5
break
done
@@ -3989,10 +3791,10 @@ fi
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
- echo "$as_me:3992: result: $ac_ct_RANLIB" >&5
+ echo "$as_me:3794: result: $ac_ct_RANLIB" >&5
echo "${ECHO_T}$ac_ct_RANLIB" >&6
else
- echo "$as_me:3995: result: no" >&5
+ echo "$as_me:3797: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4004,7 +3806,7 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
set dummy ${ac_tool_prefix}ld; ac_word=$2
-echo "$as_me:4007: checking for $ac_word" >&5
+echo "$as_me:3809: 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
@@ -4019,7 +3821,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_LD="${ac_tool_prefix}ld"
-echo "$as_me:4022: found $ac_dir/$ac_word" >&5
+echo "$as_me:3824: found $ac_dir/$ac_word" >&5
break
done
@@ -4027,10 +3829,10 @@ fi
fi
LD=$ac_cv_prog_LD
if test -n "$LD"; then
- echo "$as_me:4030: result: $LD" >&5
+ echo "$as_me:3832: result: $LD" >&5
echo "${ECHO_T}$LD" >&6
else
- echo "$as_me:4033: result: no" >&5
+ echo "$as_me:3835: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4039,7 +3841,7 @@ if test -z "$ac_cv_prog_LD"; then
ac_ct_LD=$LD
# Extract the first word of "ld", so it can be a program name with args.
set dummy ld; ac_word=$2
-echo "$as_me:4042: checking for $ac_word" >&5
+echo "$as_me:3844: 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
@@ -4054,7 +3856,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_LD="ld"
-echo "$as_me:4057: found $ac_dir/$ac_word" >&5
+echo "$as_me:3859: found $ac_dir/$ac_word" >&5
break
done
@@ -4063,10 +3865,10 @@ fi
fi
ac_ct_LD=$ac_cv_prog_ac_ct_LD
if test -n "$ac_ct_LD"; then
- echo "$as_me:4066: result: $ac_ct_LD" >&5
+ echo "$as_me:3868: result: $ac_ct_LD" >&5
echo "${ECHO_T}$ac_ct_LD" >&6
else
- echo "$as_me:4069: result: no" >&5
+ echo "$as_me:3871: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4078,7 +3880,7 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:4081: checking for $ac_word" >&5
+echo "$as_me:3883: 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
@@ -4093,7 +3895,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:4096: found $ac_dir/$ac_word" >&5
+echo "$as_me:3898: found $ac_dir/$ac_word" >&5
break
done
@@ -4101,10 +3903,10 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- echo "$as_me:4104: result: $AR" >&5
+ echo "$as_me:3906: result: $AR" >&5
echo "${ECHO_T}$AR" >&6
else
- echo "$as_me:4107: result: no" >&5
+ echo "$as_me:3909: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4113,7 +3915,7 @@ if test -z "$ac_cv_prog_AR"; then
ac_ct_AR=$AR
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
-echo "$as_me:4116: checking for $ac_word" >&5
+echo "$as_me:3918: 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
@@ -4128,7 +3930,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:4131: found $ac_dir/$ac_word" >&5
+echo "$as_me:3933: found $ac_dir/$ac_word" >&5
break
done
@@ -4137,10 +3939,10 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- echo "$as_me:4140: result: $ac_ct_AR" >&5
+ echo "$as_me:3942: result: $ac_ct_AR" >&5
echo "${ECHO_T}$ac_ct_AR" >&6
else
- echo "$as_me:4143: result: no" >&5
+ echo "$as_me:3945: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4150,9 +3952,83 @@ else
fi
if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nm; ac_word=$2
+echo "$as_me:3957: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$NM"; then
+ ac_cv_prog_NM="$NM" # 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_NM="${ac_tool_prefix}nm"
+echo "$as_me:3972: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+NM=$ac_cv_prog_NM
+if test -n "$NM"; then
+ echo "$as_me:3980: result: $NM" >&5
+echo "${ECHO_T}$NM" >&6
+else
+ echo "$as_me:3983: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+fi
+if test -z "$ac_cv_prog_NM"; then
+ ac_ct_NM=$NM
+ # Extract the first word of "nm", so it can be a program name with args.
+set dummy nm; ac_word=$2
+echo "$as_me:3992: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_NM"; then
+ ac_cv_prog_ac_ct_NM="$ac_ct_NM" # 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_NM="nm"
+echo "$as_me:4007: found $ac_dir/$ac_word" >&5
+break
+done
+
+ test -z "$ac_cv_prog_ac_ct_NM" && ac_cv_prog_ac_ct_NM="nm"
+fi
+fi
+ac_ct_NM=$ac_cv_prog_ac_ct_NM
+if test -n "$ac_ct_NM"; then
+ echo "$as_me:4016: result: $ac_ct_NM" >&5
+echo "${ECHO_T}$ac_ct_NM" >&6
+else
+ echo "$as_me:4019: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ NM=$ac_ct_NM
+else
+ NM="$ac_cv_prog_NM"
+fi
+
+if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
set dummy ${ac_tool_prefix}ar; ac_word=$2
-echo "$as_me:4155: checking for $ac_word" >&5
+echo "$as_me:4031: 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
@@ -4167,7 +4043,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_AR="${ac_tool_prefix}ar"
-echo "$as_me:4170: found $ac_dir/$ac_word" >&5
+echo "$as_me:4046: found $ac_dir/$ac_word" >&5
break
done
@@ -4175,10 +4051,10 @@ fi
fi
AR=$ac_cv_prog_AR
if test -n "$AR"; then
- echo "$as_me:4178: result: $AR" >&5
+ echo "$as_me:4054: result: $AR" >&5
echo "${ECHO_T}$AR" >&6
else
- echo "$as_me:4181: result: no" >&5
+ echo "$as_me:4057: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4187,7 +4063,7 @@ if test -z "$ac_cv_prog_AR"; then
ac_ct_AR=$AR
# Extract the first word of "ar", so it can be a program name with args.
set dummy ar; ac_word=$2
-echo "$as_me:4190: checking for $ac_word" >&5
+echo "$as_me:4066: 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
@@ -4202,7 +4078,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_ac_ct_AR="ar"
-echo "$as_me:4205: found $ac_dir/$ac_word" >&5
+echo "$as_me:4081: found $ac_dir/$ac_word" >&5
break
done
@@ -4211,10 +4087,10 @@ fi
fi
ac_ct_AR=$ac_cv_prog_ac_ct_AR
if test -n "$ac_ct_AR"; then
- echo "$as_me:4214: result: $ac_ct_AR" >&5
+ echo "$as_me:4090: result: $ac_ct_AR" >&5
echo "${ECHO_T}$ac_ct_AR" >&6
else
- echo "$as_me:4217: result: no" >&5
+ echo "$as_me:4093: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4223,7 +4099,7 @@ else
AR="$ac_cv_prog_AR"
fi
-echo "$as_me:4226: checking for options to update archives" >&5
+echo "$as_me:4102: checking for options to update archives" >&5
echo $ECHO_N "checking for options to update archives... $ECHO_C" >&6
if test "${cf_cv_ar_flags+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -4246,13 +4122,13 @@ else
rm -f conftest.a
cat >conftest.$ac_ext <<EOF
-#line 4249 "configure"
+#line 4125 "configure"
int testdata[3] = { 123, 456, 789 };
EOF
- if { (eval echo "$as_me:4252: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:4128: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:4255: \$? = $ac_status" >&5
+ echo "$as_me:4131: \$? = $ac_status" >&5
(exit $ac_status); } ; then
echo "$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext" >&5
$AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext 2>&5 1>/dev/null
@@ -4263,7 +4139,7 @@ EOF
else
test -n "$verbose" && echo " cannot compile test-program" 1>&6
-echo "${as_me:-configure}:4266: testing cannot compile test-program ..." 1>&5
+echo "${as_me:-configure}:4142: testing cannot compile test-program ..." 1>&5
break
fi
@@ -4271,7 +4147,7 @@ echo "${as_me:-configure}:4266: testing cannot compile test-program ..." 1>&5
rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext
fi
-echo "$as_me:4274: result: $cf_cv_ar_flags" >&5
+echo "$as_me:4150: result: $cf_cv_ar_flags" >&5
echo "${ECHO_T}$cf_cv_ar_flags" >&6
if test -n "$ARFLAGS" ; then
@@ -4282,20 +4158,20 @@ else
ARFLAGS=$cf_cv_ar_flags
fi
-echo "$as_me:4285: checking if you have specified an install-prefix" >&5
+echo "$as_me:4161: checking if you have specified an install-prefix" >&5
echo $ECHO_N "checking if you have specified an install-prefix... $ECHO_C" >&6
# Check whether --with-install-prefix or --without-install-prefix was given.
if test "${with_install_prefix+set}" = set; then
withval="$with_install_prefix"
- case "$withval" in #(vi
- yes|no) #(vi
+ case "x$withval" in #(vi
+ xyes|xno) #(vi
;;
*) DESTDIR="$withval"
;;
esac
fi;
-echo "$as_me:4298: result: $DESTDIR" >&5
+echo "$as_me:4174: result: $DESTDIR" >&5
echo "${ECHO_T}$DESTDIR" >&6
###############################################################################
@@ -4323,7 +4199,7 @@ else
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:4326: checking for $ac_word" >&5
+echo "$as_me:4202: 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
@@ -4338,7 +4214,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_BUILD_CC="$ac_prog"
-echo "$as_me:4341: found $ac_dir/$ac_word" >&5
+echo "$as_me:4217: found $ac_dir/$ac_word" >&5
break
done
@@ -4346,10 +4222,10 @@ fi
fi
BUILD_CC=$ac_cv_prog_BUILD_CC
if test -n "$BUILD_CC"; then
- echo "$as_me:4349: result: $BUILD_CC" >&5
+ echo "$as_me:4225: result: $BUILD_CC" >&5
echo "${ECHO_T}$BUILD_CC" >&6
else
- echo "$as_me:4352: result: no" >&5
+ echo "$as_me:4228: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -4357,12 +4233,12 @@ fi
done
fi;
- echo "$as_me:4360: checking for native build C compiler" >&5
+ echo "$as_me:4236: checking for native build C compiler" >&5
echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6
- echo "$as_me:4362: result: $BUILD_CC" >&5
+ echo "$as_me:4238: result: $BUILD_CC" >&5
echo "${ECHO_T}$BUILD_CC" >&6
- echo "$as_me:4365: checking for native build C preprocessor" >&5
+ echo "$as_me:4241: 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.
@@ -4372,10 +4248,10 @@ if test "${with_build_cpp+set}" = set; then
else
BUILD_CPP='${BUILD_CC} -E'
fi;
- echo "$as_me:4375: result: $BUILD_CPP" >&5
+ echo "$as_me:4251: result: $BUILD_CPP" >&5
echo "${ECHO_T}$BUILD_CPP" >&6
- echo "$as_me:4378: checking for native build C flags" >&5
+ echo "$as_me:4254: 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.
@@ -4383,10 +4259,10 @@ if test "${with_build_cflags+set}" = set; then
withval="$with_build_cflags"
BUILD_CFLAGS="$withval"
fi;
- echo "$as_me:4386: result: $BUILD_CFLAGS" >&5
+ echo "$as_me:4262: result: $BUILD_CFLAGS" >&5
echo "${ECHO_T}$BUILD_CFLAGS" >&6
- echo "$as_me:4389: checking for native build C preprocessor-flags" >&5
+ echo "$as_me:4265: 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.
@@ -4394,10 +4270,10 @@ if test "${with_build_cppflags+set}" = set; then
withval="$with_build_cppflags"
BUILD_CPPFLAGS="$withval"
fi;
- echo "$as_me:4397: result: $BUILD_CPPFLAGS" >&5
+ echo "$as_me:4273: result: $BUILD_CPPFLAGS" >&5
echo "${ECHO_T}$BUILD_CPPFLAGS" >&6
- echo "$as_me:4400: checking for native build linker-flags" >&5
+ echo "$as_me:4276: 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.
@@ -4405,10 +4281,10 @@ if test "${with_build_ldflags+set}" = set; then
withval="$with_build_ldflags"
BUILD_LDFLAGS="$withval"
fi;
- echo "$as_me:4408: result: $BUILD_LDFLAGS" >&5
+ echo "$as_me:4284: result: $BUILD_LDFLAGS" >&5
echo "${ECHO_T}$BUILD_LDFLAGS" >&6
- echo "$as_me:4411: checking for native build linker-libraries" >&5
+ echo "$as_me:4287: 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.
@@ -4416,7 +4292,7 @@ if test "${with_build_libs+set}" = set; then
withval="$with_build_libs"
BUILD_LIBS="$withval"
fi;
- echo "$as_me:4419: result: $BUILD_LIBS" >&5
+ echo "$as_me:4295: result: $BUILD_LIBS" >&5
echo "${ECHO_T}$BUILD_LIBS" >&6
# this assumes we're on Unix.
@@ -4426,7 +4302,7 @@ echo "${ECHO_T}$BUILD_LIBS" >&6
: ${BUILD_CC:='${CC}'}
if ( test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}' ) ; then
- { { echo "$as_me:4429: error: Cross-build requires two compilers.
+ { { echo "$as_me:4305: 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;}
@@ -4451,7 +4327,7 @@ fi
### shared, for example.
cf_list_models=""
-echo "$as_me:4454: checking if libtool -version-number should be used" >&5
+echo "$as_me:4330: checking if libtool -version-number should be used" >&5
echo $ECHO_N "checking if libtool -version-number should be used... $ECHO_C" >&6
# Check whether --enable-libtool-version or --disable-libtool-version was given.
@@ -4468,7 +4344,7 @@ else
cf_libtool_version=yes
fi;
-echo "$as_me:4471: result: $cf_libtool_version" >&5
+echo "$as_me:4347: result: $cf_libtool_version" >&5
echo "${ECHO_T}$cf_libtool_version" >&6
if test "$cf_libtool_version" = yes ; then
@@ -4493,7 +4369,7 @@ LIB_LINK='${CC}'
LIB_INSTALL=
LIB_UNINSTALL=
-echo "$as_me:4496: checking if you want to build libraries with libtool" >&5
+echo "$as_me:4372: 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.
@@ -4503,7 +4379,7 @@ if test "${with_libtool+set}" = set; then
else
with_libtool=no
fi;
-echo "$as_me:4506: result: $with_libtool" >&5
+echo "$as_me:4382: result: $with_libtool" >&5
echo "${ECHO_T}$with_libtool" >&6
if test "$with_libtool" != "no"; then
@@ -4522,7 +4398,7 @@ case ".$with_libtool" in #(vi
;;
.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
;;
-.\${*prefix}*) #(vi
+.\${*prefix}*|.\${*dir}*) #(vi
eval with_libtool="$with_libtool"
case ".$with_libtool" in #(vi
.NONE/*)
@@ -4534,7 +4410,7 @@ case ".$with_libtool" in #(vi
with_libtool=`echo $with_libtool | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { { echo "$as_me:4537: error: expected a pathname, not \"$with_libtool\"" >&5
+ { { echo "$as_me:4413: error: expected a pathname, not \"$with_libtool\"" >&5
echo "$as_me: error: expected a pathname, not \"$with_libtool\"" >&2;}
{ (exit 1); exit 1; }; }
;;
@@ -4542,50 +4418,199 @@ 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:4547: checking for $ac_word" >&5
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in libtool glibtool
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:4426: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_LIBTOOL+set}" = set; then
+if test "${ac_cv_prog_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.
- ;;
- *)
+ if test -n "$LIBTOOL"; then
+ ac_cv_prog_LIBTOOL="$LIBTOOL" # 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=.
- if $as_executable_p "$ac_dir/$ac_word"; then
- ac_cv_path_LIBTOOL="$ac_dir/$ac_word"
- echo "$as_me:4564: found $ac_dir/$ac_word" >&5
- break
+ $as_executable_p "$ac_dir/$ac_word" || continue
+ac_cv_prog_LIBTOOL="$ac_tool_prefix$ac_prog"
+echo "$as_me:4441: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+LIBTOOL=$ac_cv_prog_LIBTOOL
+if test -n "$LIBTOOL"; then
+ echo "$as_me:4449: result: $LIBTOOL" >&5
+echo "${ECHO_T}$LIBTOOL" >&6
+else
+ echo "$as_me:4452: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
+
+ test -n "$LIBTOOL" && break
+ done
+fi
+if test -z "$LIBTOOL"; then
+ ac_ct_LIBTOOL=$LIBTOOL
+ for ac_prog in libtool glibtool
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:4465: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_LIBTOOL"; then
+ ac_cv_prog_ac_ct_LIBTOOL="$ac_ct_LIBTOOL" # 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_LIBTOOL="$ac_prog"
+echo "$as_me:4480: found $ac_dir/$ac_word" >&5
+break
done
- ;;
-esac
fi
-LIBTOOL=$ac_cv_path_LIBTOOL
+fi
+ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL
+if test -n "$ac_ct_LIBTOOL"; then
+ echo "$as_me:4488: result: $ac_ct_LIBTOOL" >&5
+echo "${ECHO_T}$ac_ct_LIBTOOL" >&6
+else
+ echo "$as_me:4491: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_LIBTOOL" && break
+done
+test -n "$ac_ct_LIBTOOL" || ac_ct_LIBTOOL="none"
+
+ LIBTOOL=$ac_ct_LIBTOOL
+fi
+
+if test -n "$LIBTOOL" && test "$LIBTOOL" != none
+then
+ cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([^)]*)//g' -e 's/^[^1-9]*//' -e 's/[^0-9.].*//'`
+else
+ cf_cv_libtool_version=
+fi
+test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
+
+ if test -z "$cf_cv_libtool_version" && test "$LIBTOOL" = libtool
+ then
+
+unset ac_cv_prog_ac_ct_LIBTOOL
+unset ac_ct_LIBTOOL
+unset LIBTOOL
+
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in glibtool
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+echo "$as_me:4522: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_LIBTOOL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$LIBTOOL"; then
+ ac_cv_prog_LIBTOOL="$LIBTOOL" # 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_LIBTOOL="$ac_tool_prefix$ac_prog"
+echo "$as_me:4537: found $ac_dir/$ac_word" >&5
+break
+done
+fi
+fi
+LIBTOOL=$ac_cv_prog_LIBTOOL
if test -n "$LIBTOOL"; then
- echo "$as_me:4575: result: $LIBTOOL" >&5
+ echo "$as_me:4545: result: $LIBTOOL" >&5
echo "${ECHO_T}$LIBTOOL" >&6
else
- echo "$as_me:4578: result: no" >&5
+ echo "$as_me:4548: result: no" >&5
echo "${ECHO_T}no" >&6
fi
+ test -n "$LIBTOOL" && break
+ done
+fi
+if test -z "$LIBTOOL"; then
+ ac_ct_LIBTOOL=$LIBTOOL
+ for ac_prog in glibtool
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo "$as_me:4561: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_prog_ac_ct_LIBTOOL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_LIBTOOL"; then
+ ac_cv_prog_ac_ct_LIBTOOL="$ac_ct_LIBTOOL" # 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_LIBTOOL="$ac_prog"
+echo "$as_me:4576: found $ac_dir/$ac_word" >&5
+break
+done
+
+fi
+fi
+ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL
+if test -n "$ac_ct_LIBTOOL"; then
+ echo "$as_me:4584: result: $ac_ct_LIBTOOL" >&5
+echo "${ECHO_T}$ac_ct_LIBTOOL" >&6
+else
+ echo "$as_me:4587: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+ test -n "$ac_ct_LIBTOOL" && break
+done
+test -n "$ac_ct_LIBTOOL" || ac_ct_LIBTOOL="none"
+
+ LIBTOOL=$ac_ct_LIBTOOL
+fi
+
+if test -n "$LIBTOOL" && test "$LIBTOOL" != none
+then
+ cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([^)]*)//g' -e 's/^[^1-9]*//' -e 's/[^0-9.].*//'`
+else
+ cf_cv_libtool_version=
+fi
+test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
+
+ fi
fi
if test -z "$LIBTOOL" ; then
- { { echo "$as_me:4584: error: Cannot find libtool" >&5
+ { { echo "$as_me:4609: error: Cannot find libtool" >&5
echo "$as_me: error: Cannot find libtool" >&2;}
{ (exit 1); exit 1; }; }
fi
- LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${DESTDIR}${libdir} ${LIBTOOL_VERSION} `cut -f1 ${srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} -o'
+ LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${DESTDIR}${libdir} ${LIBTOOL_VERSION} `cut -f1 ${srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} $(LIBS) -o'
LIB_OBJECT='${OBJECTS:.o=.lo}'
LIB_SUFFIX=.la
LIB_CLEAN='${LIBTOOL} --mode=clean'
@@ -4595,26 +4620,36 @@ echo "$as_me: error: Cannot find libtool" >&2;}
LIB_UNINSTALL='${LIBTOOL} --mode=uninstall'
LIB_PREP=:
- # Show the version of libtool
- echo "$as_me:4599: checking version of libtool" >&5
-echo $ECHO_N "checking version of libtool... $ECHO_C" >&6
+if test -n "$LIBTOOL" && test "$LIBTOOL" != none
+then
+ echo "$as_me:4625: 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. "("
+if test -n "$LIBTOOL" && test "$LIBTOOL" != none
+then
cf_cv_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' |sed -e '2,$d' -e 's/([^)]*)//g' -e 's/^[^1-9]*//' -e 's/[^0-9.].*//'`
- echo "$as_me:4606: result: $cf_cv_libtool_version" >&5
+else
+ cf_cv_libtool_version=
+fi
+test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version
+
+ echo "$as_me:4636: 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:4609: error: This is not GNU libtool" >&5
+ { { echo "$as_me:4639: error: This is not GNU libtool" >&5
echo "$as_me: error: This is not GNU libtool" >&2;}
{ (exit 1); exit 1; }; }
fi
+else
+ { { echo "$as_me:4644: error: GNU libtool has not been found" >&5
+echo "$as_me: error: GNU libtool has not been found" >&2;}
+ { (exit 1); exit 1; }; }
+fi
# special hack to add -no-undefined (which libtool should do for itself)
LT_UNDEF=
case "$cf_cv_system_name" in #(vi
- cygwin*|mingw32*|uwin*|aix[456]) #(vi
+ cygwin*|msys*|mingw32*|uwin*|aix[4-7]) #(vi
LT_UNDEF=-no-undefined
;;
esac
@@ -4642,7 +4677,7 @@ cf_list_models="$cf_list_models libtool"
else
-echo "$as_me:4645: checking if you want to build shared libraries" >&5
+echo "$as_me:4680: 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.
@@ -4652,11 +4687,11 @@ if test "${with_shared+set}" = set; then
else
with_shared=no
fi;
-echo "$as_me:4655: result: $with_shared" >&5
+echo "$as_me:4690: result: $with_shared" >&5
echo "${ECHO_T}$with_shared" >&6
-test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
+test "x$with_shared" = "xyes" && cf_list_models="$cf_list_models shared"
-echo "$as_me:4659: checking if you want to build static libraries" >&5
+echo "$as_me:4694: 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.
@@ -4666,11 +4701,11 @@ if test "${with_normal+set}" = set; then
else
with_normal=yes
fi;
-echo "$as_me:4669: result: $with_normal" >&5
+echo "$as_me:4704: result: $with_normal" >&5
echo "${ECHO_T}$with_normal" >&6
-test "$with_normal" = "yes" && cf_list_models="$cf_list_models normal"
+test "x$with_normal" = "xyes" && cf_list_models="$cf_list_models normal"
-echo "$as_me:4673: checking if you want to build debug libraries" >&5
+echo "$as_me:4708: 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.
@@ -4680,11 +4715,11 @@ if test "${with_debug+set}" = set; then
else
with_debug=yes
fi;
-echo "$as_me:4683: result: $with_debug" >&5
+echo "$as_me:4718: result: $with_debug" >&5
echo "${ECHO_T}$with_debug" >&6
-test "$with_debug" = "yes" && cf_list_models="$cf_list_models debug"
+test "x$with_debug" = "xyes" && cf_list_models="$cf_list_models debug"
-echo "$as_me:4687: checking if you want to build profiling libraries" >&5
+echo "$as_me:4722: 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.
@@ -4694,27 +4729,44 @@ if test "${with_profile+set}" = set; then
else
with_profile=no
fi;
-echo "$as_me:4697: result: $with_profile" >&5
+echo "$as_me:4732: result: $with_profile" >&5
echo "${ECHO_T}$with_profile" >&6
-test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
+test "x$with_profile" = "xyes" && cf_list_models="$cf_list_models profile"
fi
+if test "X$cf_with_cxx_binding" != Xno; then
+if test "x$with_shared" = "xyes"; then
+echo "$as_me:4740: checking if you want to build C++ shared libraries" >&5
+echo $ECHO_N "checking if you want to build C++ shared libraries... $ECHO_C" >&6
+
+# Check whether --with-cxx-shared or --without-cxx-shared was given.
+if test "${with_cxx_shared+set}" = set; then
+ withval="$with_cxx_shared"
+ with_shared_cxx=$withval
+else
+ with_shared_cxx=no
+fi;
+echo "$as_me:4750: result: $with_shared_cxx" >&5
+echo "${ECHO_T}$with_shared_cxx" >&6
+fi
+fi
+
###############################################################################
-echo "$as_me:4705: checking for specified models" >&5
+echo "$as_me:4757: checking for specified models" >&5
echo $ECHO_N "checking for specified models... $ECHO_C" >&6
test -z "$cf_list_models" && cf_list_models=normal
test "$with_libtool" != "no" && cf_list_models=libtool
-echo "$as_me:4709: result: $cf_list_models" >&5
+echo "$as_me:4761: result: $cf_list_models" >&5
echo "${ECHO_T}$cf_list_models" >&6
### Use the first model as the default, and save its suffix for use in building
### up test-applications.
-echo "$as_me:4714: checking for default model" >&5
+echo "$as_me:4766: 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:4717: result: $DFT_LWR_MODEL" >&5
+echo "$as_me:4769: result: $DFT_LWR_MODEL" >&5
echo "${ECHO_T}$DFT_LWR_MODEL" >&6
DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
@@ -4728,6 +4780,22 @@ LIB_NAME=ncurses
LIB_DIR=../lib
LIB_2ND=../../lib
+echo "$as_me:4783: checking if you want to have a library-prefix" >&5
+echo $ECHO_N "checking if you want to have a library-prefix... $ECHO_C" >&6
+
+# Check whether --with-lib-prefix or --without-lib-prefix was given.
+if test "${with_lib_prefix+set}" = set; then
+ withval="$with_lib_prefix"
+ with_lib_prefix=$withval
+else
+ with_lib_prefix=auto
+fi;
+echo "$as_me:4793: result: $with_lib_prefix" >&5
+echo "${ECHO_T}$with_lib_prefix" >&6
+
+if test $with_lib_prefix = auto
+then
+
case $cf_cv_system_name in #(vi
OS/2*|os2*) #(vi
LIB_PREFIX=''
@@ -4737,13 +4805,28 @@ LIB_2ND=../../lib
esac
cf_prefix=$LIB_PREFIX
-LIB_PREFIX=$cf_prefix
+elif test $with_lib_prefix = no
+then
+ LIB_PREFIX=
+else
+ LIB_PREFIX=$with_lib_prefix
+fi
LIB_SUFFIX=
+ echo "$as_me:4817: checking for PATH separator" >&5
+echo $ECHO_N "checking for PATH separator... $ECHO_C" >&6
+ case $cf_cv_system_name in
+ os2*) PATH_SEPARATOR=';' ;;
+ *) ${PATH_SEPARATOR:=':'} ;;
+ esac
+
+ echo "$as_me:4824: result: $PATH_SEPARATOR" >&5
+echo "${ECHO_T}$PATH_SEPARATOR" >&6
+
###############################################################################
-echo "$as_me:4746: checking if you want to build a separate terminfo library" >&5
+echo "$as_me:4829: 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.
@@ -4753,10 +4836,10 @@ if test "${with_termlib+set}" = set; then
else
with_termlib=no
fi;
-echo "$as_me:4756: result: $with_termlib" >&5
+echo "$as_me:4839: result: $with_termlib" >&5
echo "${ECHO_T}$with_termlib" >&6
-echo "$as_me:4759: checking if you want to build a separate tic library" >&5
+echo "$as_me:4842: checking if you want to build a separate tic library" >&5
echo $ECHO_N "checking if you want to build a separate tic library... $ECHO_C" >&6
# Check whether --with-ticlib or --without-ticlib was given.
@@ -4766,13 +4849,13 @@ if test "${with_ticlib+set}" = set; then
else
with_ticlib=no
fi;
-echo "$as_me:4769: result: $with_ticlib" >&5
+echo "$as_me:4852: result: $with_ticlib" >&5
echo "${ECHO_T}$with_ticlib" >&6
### Checks for special libraries, must be done up-front.
SHLIB_LIST=""
-echo "$as_me:4775: checking if you want to link with the GPM mouse library" >&5
+echo "$as_me:4858: 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.
@@ -4782,27 +4865,27 @@ if test "${with_gpm+set}" = set; then
else
with_gpm=maybe
fi;
-echo "$as_me:4785: result: $with_gpm" >&5
+echo "$as_me:4868: result: $with_gpm" >&5
echo "${ECHO_T}$with_gpm" >&6
if test "$with_gpm" != no ; then
- echo "$as_me:4789: checking for gpm.h" >&5
+ echo "$as_me:4872: checking for gpm.h" >&5
echo $ECHO_N "checking for gpm.h... $ECHO_C" >&6
if test "${ac_cv_header_gpm_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 4795 "configure"
+#line 4878 "configure"
#include "confdefs.h"
#include <gpm.h>
_ACEOF
-if { (eval echo "$as_me:4799: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:4882: \"$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:4805: \$? = $ac_status" >&5
+ echo "$as_me:4888: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -4821,25 +4904,25 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:4824: result: $ac_cv_header_gpm_h" >&5
+echo "$as_me:4907: 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
+cat >>confdefs.h <<\EOF
#define HAVE_GPM_H 1
EOF
if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then
test -n "$verbose" && echo " assuming we really have GPM library" 1>&6
-echo "${as_me:-configure}:4835: testing assuming we really have GPM library ..." 1>&5
+echo "${as_me:-configure}:4918: testing assuming we really have GPM library ..." 1>&5
- cat >>confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define HAVE_LIBGPM 1
EOF
else
- echo "$as_me:4842: checking for Gpm_Open in -lgpm" >&5
+ echo "$as_me:4925: 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
@@ -4847,7 +4930,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 4850 "configure"
+#line 4933 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -4866,16 +4949,16 @@ Gpm_Open ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4869: \"$ac_link\"") >&5
+if { (eval echo "$as_me:4952: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:4872: \$? = $ac_status" >&5
+ echo "$as_me:4955: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4875: \"$ac_try\"") >&5
+ { (eval echo "$as_me:4958: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4878: \$? = $ac_status" >&5
+ echo "$as_me:4961: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_Gpm_Open=yes
else
@@ -4886,13 +4969,13 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:4889: result: $ac_cv_lib_gpm_Gpm_Open" >&5
+echo "$as_me:4972: 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:4895: error: Cannot link with GPM library" >&5
+ { { echo "$as_me:4978: error: Cannot link with GPM library" >&5
echo "$as_me: error: Cannot link with GPM library" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -4902,7 +4985,7 @@ fi
else
- test "$with_gpm" != maybe && { echo "$as_me:4905: WARNING: Cannot find GPM header" >&5
+ test "$with_gpm" != maybe && { echo "$as_me:4988: WARNING: Cannot find GPM header" >&5
echo "$as_me: WARNING: Cannot find GPM header" >&2;}
with_gpm=no
@@ -4911,7 +4994,7 @@ fi
fi
if test "$with_gpm" != no ; then
- echo "$as_me:4914: checking if you want to load GPM dynamically" >&5
+ echo "$as_me:4997: 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.
@@ -4921,18 +5004,18 @@ if test "${with_dlsym+set}" = set; then
else
with_dlsym=yes
fi;
- echo "$as_me:4924: result: $with_dlsym" >&5
+ echo "$as_me:5007: result: $with_dlsym" >&5
echo "${ECHO_T}$with_dlsym" >&6
- if test "$with_dlsym" = yes ; then
+ if test "x$with_dlsym" = xyes ; then
cf_have_dlsym=no
-echo "$as_me:4929: checking for dlsym" >&5
+echo "$as_me:5012: checking for dlsym" >&5
echo $ECHO_N "checking for dlsym... $ECHO_C" >&6
if test "${ac_cv_func_dlsym+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 4935 "configure"
+#line 5018 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char dlsym (); below. */
@@ -4955,7 +5038,7 @@ main ()
#if defined (__stub_dlsym) || defined (__stub___dlsym)
choke me
#else
-f = dlsym;
+f = dlsym; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -4963,16 +5046,16 @@ f = dlsym;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:4966: \"$ac_link\"") >&5
+if { (eval echo "$as_me:5049: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:4969: \$? = $ac_status" >&5
+ echo "$as_me:5052: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:4972: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5055: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:4975: \$? = $ac_status" >&5
+ echo "$as_me:5058: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_dlsym=yes
else
@@ -4982,14 +5065,14 @@ ac_cv_func_dlsym=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:4985: result: $ac_cv_func_dlsym" >&5
+echo "$as_me:5068: 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:4992: checking for dlsym in -ldl" >&5
+echo "$as_me:5075: 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
@@ -4997,7 +5080,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5000 "configure"
+#line 5083 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -5016,16 +5099,16 @@ dlsym ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5019: \"$ac_link\"") >&5
+if { (eval echo "$as_me:5102: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5022: \$? = $ac_status" >&5
+ echo "$as_me:5105: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5025: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5108: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5028: \$? = $ac_status" >&5
+ echo "$as_me:5111: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dl_dlsym=yes
else
@@ -5036,7 +5119,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:5039: result: $ac_cv_lib_dl_dlsym" >&5
+echo "$as_me:5122: 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
@@ -5049,10 +5132,10 @@ fi
if test "$cf_have_dlsym" = yes ; then
test "$cf_have_libdl" = yes && LIBS="-ldl $LIBS"
- echo "$as_me:5052: checking whether able to link to dl*() functions" >&5
+ echo "$as_me:5135: 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 5055 "configure"
+#line 5138 "configure"
#include "confdefs.h"
#include <dlfcn.h>
int
@@ -5070,19 +5153,19 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5073: \"$ac_link\"") >&5
+if { (eval echo "$as_me:5156: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5076: \$? = $ac_status" >&5
+ echo "$as_me:5159: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5079: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5162: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5082: \$? = $ac_status" >&5
+ echo "$as_me:5165: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cat >>confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define HAVE_LIBDL 1
EOF
@@ -5090,28 +5173,28 @@ else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
- { { echo "$as_me:5093: error: Cannot link test program for libdl" >&5
+ { { echo "$as_me:5176: 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:5098: result: ok" >&5
+ echo "$as_me:5181: result: ok" >&5
echo "${ECHO_T}ok" >&6
else
- { { echo "$as_me:5101: error: Cannot find dlsym function" >&5
+ { { echo "$as_me:5184: error: Cannot find dlsym function" >&5
echo "$as_me: error: Cannot find dlsym function" >&2;}
{ (exit 1); exit 1; }; }
fi
- if test "$with_gpm" != yes ; then
+ if test "x$with_gpm" != xyes ; then
test -n "$verbose" && echo " assuming soname for gpm is $with_gpm" 1>&6
-echo "${as_me:-configure}:5109: testing assuming soname for gpm is $with_gpm ..." 1>&5
+echo "${as_me:-configure}:5192: testing assuming soname for gpm is $with_gpm ..." 1>&5
cf_cv_gpm_soname="$with_gpm"
else
-echo "$as_me:5114: checking for soname of gpm library" >&5
+echo "$as_me:5197: 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
@@ -5129,15 +5212,15 @@ if (Gpm_Open(0,0)) Gpm_Close();
CF_EOF
cf_save_LIBS="$LIBS"
LIBS="-lgpm $LIBS"
- if { (eval echo "$as_me:5132: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:5215: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5135: \$? = $ac_status" >&5
+ echo "$as_me:5218: \$? = $ac_status" >&5
(exit $ac_status); } ; then
- if { (eval echo "$as_me:5137: \"$ac_link\"") >&5
+ if { (eval echo "$as_me:5220: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5140: \$? = $ac_status" >&5
+ echo "$as_me:5223: \$? = $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
@@ -5148,11 +5231,12 @@ LIBS="$cf_save_LIBS"
fi
fi
-echo "$as_me:5151: result: $cf_cv_gpm_soname" >&5
+echo "$as_me:5234: result: $cf_cv_gpm_soname" >&5
echo "${ECHO_T}$cf_cv_gpm_soname" >&6
fi
- test "$cf_cv_gpm_soname" != "unknown" && cat >>confdefs.h <<EOF
+ test "$cf_cv_gpm_soname" != "unknown" &&
+cat >>confdefs.h <<EOF
#define LIBGPM_SONAME "$cf_cv_gpm_soname"
EOF
@@ -5161,11 +5245,12 @@ EOF
SHLIB_LIST="-lgpm $SHLIB_LIST"
TEST_LIBS="-lgpm $TEST_LIBS"
fi
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define HAVE_LIBGPM 1
EOF
-echo "$as_me:5168: checking for Gpm_Wgetch in -lgpm" >&5
+echo "$as_me:5253: 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
@@ -5173,7 +5258,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgpm $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5176 "configure"
+#line 5261 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -5192,16 +5277,16 @@ Gpm_Wgetch ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5195: \"$ac_link\"") >&5
+if { (eval echo "$as_me:5280: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5198: \$? = $ac_status" >&5
+ echo "$as_me:5283: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5201: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5286: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5204: \$? = $ac_status" >&5
+ echo "$as_me:5289: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gpm_Gpm_Wgetch=yes
else
@@ -5212,11 +5297,11 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:5215: result: $ac_cv_lib_gpm_Gpm_Wgetch" >&5
+echo "$as_me:5300: 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:5219: checking if GPM is weakly bound to curses library" >&5
+echo "$as_me:5304: checking if GPM is weakly bound to curses library" >&5
echo $ECHO_N "checking if GPM is weakly bound to curses library... $ECHO_C" >&6
if test "${cf_cv_check_gpm_wgetch+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5240,15 +5325,15 @@ CF_EOF
# to rely on the static library, noting that some packagers may not
# include it.
LIBS="-static -lgpm -dynamic $LIBS"
- if { (eval echo "$as_me:5243: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:5328: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5246: \$? = $ac_status" >&5
+ echo "$as_me:5331: \$? = $ac_status" >&5
(exit $ac_status); } ; then
- if { (eval echo "$as_me:5248: \"$ac_link\"") >&5
+ if { (eval echo "$as_me:5333: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5251: \$? = $ac_status" >&5
+ echo "$as_me:5336: \$? = $ac_status" >&5
(exit $ac_status); } ; then
cf_cv_check_gpm_wgetch=`nm conftest$ac_exeext | egrep '\<wgetch\>' | egrep '\<[vVwW]\>'`
test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes
@@ -5260,11 +5345,11 @@ CF_EOF
fi
fi
-echo "$as_me:5263: result: $cf_cv_check_gpm_wgetch" >&5
+echo "$as_me:5348: result: $cf_cv_check_gpm_wgetch" >&5
echo "${ECHO_T}$cf_cv_check_gpm_wgetch" >&6
if test "$cf_cv_check_gpm_wgetch" != yes ; then
- { echo "$as_me:5267: WARNING: GPM library is already linked with curses - read the FAQ" >&5
+ { echo "$as_me:5352: 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
@@ -5274,7 +5359,7 @@ fi
# not everyone has "test -c"
if test -c /dev/sysmouse 2>/dev/null ; then
-echo "$as_me:5277: checking if you want to use sysmouse" >&5
+echo "$as_me:5362: checking if you want to use sysmouse" >&5
echo $ECHO_N "checking if you want to use sysmouse... $ECHO_C" >&6
# Check whether --with-sysmouse or --without-sysmouse was given.
@@ -5286,7 +5371,7 @@ else
fi;
if test "$cf_with_sysmouse" != no ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 5289 "configure"
+#line 5374 "configure"
#include "confdefs.h"
#include <osreldate.h>
@@ -5309,16 +5394,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5312: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5397: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5315: \$? = $ac_status" >&5
+ echo "$as_me:5400: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5318: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5403: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5321: \$? = $ac_status" >&5
+ echo "$as_me:5406: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_with_sysmouse=yes
else
@@ -5328,9 +5413,10 @@ cf_with_sysmouse=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:5331: result: $cf_with_sysmouse" >&5
+echo "$as_me:5416: result: $cf_with_sysmouse" >&5
echo "${ECHO_T}$cf_with_sysmouse" >&6
-test "$cf_with_sysmouse" = yes && cat >>confdefs.h <<\EOF
+test "$cf_with_sysmouse" = yes &&
+cat >>confdefs.h <<\EOF
#define USE_SYSMOUSE 1
EOF
@@ -5338,15 +5424,15 @@ 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=''
+ test -n "$GCC" && test "x${ac_cv_prog_cc_g}" != xyes && CC_G_OPT=''
fi
if test X"$CXX_G_OPT" = X"" ; then
CXX_G_OPT='-g'
- test -n "$GXX" && test "${ac_cv_prog_cxx_g}" != yes && CXX_G_OPT=''
+ test -n "$GXX" && test "x${ac_cv_prog_cxx_g}" != xyes && CXX_G_OPT=''
fi
-echo "$as_me:5349: checking for default loader flags" >&5
+echo "$as_me:5435: checking for default loader flags" >&5
echo $ECHO_N "checking for default loader flags... $ECHO_C" >&6
case $DFT_LWR_MODEL in
libtool) LD_MODEL='' ;;
@@ -5355,13 +5441,13 @@ debug) LD_MODEL=$CC_G_OPT ;;
profile) LD_MODEL='-pg';;
shared) LD_MODEL='' ;;
esac
-echo "$as_me:5358: result: $LD_MODEL" >&5
+echo "$as_me:5444: result: $LD_MODEL" >&5
echo "${ECHO_T}$LD_MODEL" >&6
case $DFT_LWR_MODEL in
shared)
-echo "$as_me:5364: checking if rpath option should be used" >&5
+echo "$as_me:5450: checking if rpath option should be used" >&5
echo $ECHO_N "checking if rpath option should be used... $ECHO_C" >&6
# Check whether --enable-rpath or --disable-rpath was given.
@@ -5371,10 +5457,10 @@ if test "${enable_rpath+set}" = set; then
else
cf_cv_enable_rpath=no
fi;
-echo "$as_me:5374: result: $cf_cv_enable_rpath" >&5
+echo "$as_me:5460: result: $cf_cv_enable_rpath" >&5
echo "${ECHO_T}$cf_cv_enable_rpath" >&6
-echo "$as_me:5377: checking if shared libraries should be relinked during install" >&5
+echo "$as_me:5463: checking if shared libraries should be relinked during install" >&5
echo $ECHO_N "checking if shared libraries should be relinked during install... $ECHO_C" >&6
# Check whether --enable-relink or --disable-relink was given.
@@ -5384,13 +5470,16 @@ if test "${enable_relink+set}" = set; then
else
cf_cv_do_relink=yes
fi;
-echo "$as_me:5387: result: $cf_cv_do_relink" >&5
+echo "$as_me:5473: result: $cf_cv_do_relink" >&5
echo "${ECHO_T}$cf_cv_do_relink" >&6
;;
esac
+# we will build libraries one-level down.
+rel_builddir=..
+
LD_RPATH_OPT=
-echo "$as_me:5393: checking for an rpath option" >&5
+echo "$as_me:5482: checking for an rpath option" >&5
echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6
case $cf_cv_system_name in #(vi
irix*) #(vi
@@ -5403,10 +5492,10 @@ irix*) #(vi
linux*|gnu*|k*bsd*-gnu) #(vi
LD_RPATH_OPT="-Wl,-rpath,"
;;
-openbsd[2-9].*) #(vi
+openbsd[2-9].*|mirbsd*) #(vi
LD_RPATH_OPT="-Wl,-rpath,"
;;
-freebsd*) #(vi
+dragonfly*|freebsd*) #(vi
LD_RPATH_OPT="-rpath "
;;
netbsd*) #(vi
@@ -5421,17 +5510,17 @@ solaris2*) #(vi
*)
;;
esac
-echo "$as_me:5424: result: $LD_RPATH_OPT" >&5
+echo "$as_me:5513: result: $LD_RPATH_OPT" >&5
echo "${ECHO_T}$LD_RPATH_OPT" >&6
case "x$LD_RPATH_OPT" in #(vi
x-R*)
- echo "$as_me:5429: checking if we need a space after rpath option" >&5
+ echo "$as_me:5518: checking if we need a space after rpath option" >&5
echo $ECHO_N "checking if we need a space after rpath option... $ECHO_C" >&6
cf_save_LIBS="$LIBS"
LIBS="${LD_RPATH_OPT}$libdir $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5434 "configure"
+#line 5523 "configure"
#include "confdefs.h"
int
@@ -5443,16 +5532,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5446: \"$ac_link\"") >&5
+if { (eval echo "$as_me:5535: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5449: \$? = $ac_status" >&5
+ echo "$as_me:5538: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5452: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5541: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5455: \$? = $ac_status" >&5
+ echo "$as_me:5544: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_rpath_space=no
else
@@ -5462,22 +5551,28 @@ cf_rpath_space=yes
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save_LIBS"
- echo "$as_me:5465: result: $cf_rpath_space" >&5
+ echo "$as_me:5554: result: $cf_rpath_space" >&5
echo "${ECHO_T}$cf_rpath_space" >&6
test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT "
;;
esac
+ RM_SHARED_OPTS=
LOCAL_LDFLAGS=
LOCAL_LDFLAGS2=
LD_SHARED_OPTS=
INSTALL_LIB="-m 644"
+ : ${rel_builddir:=.}
+
+ shlibdir=$libdir
+
+ MAKE_DLLS="#"
cf_cv_do_symlinks=no
cf_ld_rpath_opt=
test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT"
- echo "$as_me:5480: checking if release/abi version should be used for shared libs" >&5
+ echo "$as_me:5575: checking if release/abi version should be used for shared libs" >&5
echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6
# Check whether --with-shlib-version or --without-shlib-version was given.
@@ -5492,7 +5587,7 @@ if test "${with_shlib_version+set}" = set; then
cf_cv_shlib_version=$withval
;;
*)
- { { echo "$as_me:5495: error: option value must be one of: rel, abi, auto or no" >&5
+ { { echo "$as_me:5590: error: option value must be one of: rel, abi, auto or no" >&5
echo "$as_me: error: option value must be one of: rel, abi, auto or no" >&2;}
{ (exit 1); exit 1; }; }
;;
@@ -5501,23 +5596,24 @@ echo "$as_me: error: option value must be one of: rel, abi, auto or no" >&2;}
else
cf_cv_shlib_version=auto
fi;
- echo "$as_me:5504: result: $cf_cv_shlib_version" >&5
+ echo "$as_me:5599: result: $cf_cv_shlib_version" >&5
echo "${ECHO_T}$cf_cv_shlib_version" >&6
cf_cv_rm_so_locs=no
+ cf_try_cflags=
# Some less-capable ports of gcc support only -fpic
CC_SHARED_OPTS=
if test "$GCC" = yes
then
- echo "$as_me:5513: checking which $CC option to use" >&5
+ echo "$as_me:5609: checking which $CC option to use" >&5
echo $ECHO_N "checking which $CC option to use... $ECHO_C" >&6
cf_save_CFLAGS="$CFLAGS"
for CC_SHARED_OPTS in -fPIC -fpic ''
do
CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5520 "configure"
+#line 5616 "configure"
#include "confdefs.h"
#include <stdio.h>
int
@@ -5529,16 +5625,16 @@ int x = 1
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5532: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5628: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5535: \$? = $ac_status" >&5
+ echo "$as_me:5631: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5538: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5634: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5541: \$? = $ac_status" >&5
+ echo "$as_me:5637: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -5547,7 +5643,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
done
- echo "$as_me:5550: result: $CC_SHARED_OPTS" >&5
+ echo "$as_me:5646: result: $CC_SHARED_OPTS" >&5
echo "${ECHO_T}$CC_SHARED_OPTS" >&6
CFLAGS="$cf_save_CFLAGS"
fi
@@ -5555,10 +5651,14 @@ echo "${ECHO_T}$CC_SHARED_OPTS" >&6
cf_cv_shlib_version_infix=no
case $cf_cv_system_name in #(vi
- aix[56]*) #(vi
+ aix4.3-9*|aix[5-7]*) #(vi
if test "$GCC" = yes; then
CC_SHARED_OPTS=
- MK_SHARED_LIB='$(CC) -shared'
+ MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
+ else
+ # CC_SHARED_OPTS='-qpic=large -G'
+ # perhaps "-bM:SRE -bnoentry -bexpall"
+ MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
fi
;;
beos*) #(vi
@@ -5566,9 +5666,12 @@ echo "${ECHO_T}$CC_SHARED_OPTS" >&6
;;
cygwin*) #(vi
CC_SHARED_OPTS=
- MK_SHARED_LIB='sh ../mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
cf_cv_shlib_version=cygdll
cf_cv_shlib_version_infix=cygdll
+ shlibdir=$bindir
+ MAKE_DLLS=
cat >mk_shared_lib.sh <<-CF_EOF
#!/bin/sh
SHARED_LIB=\$1
@@ -5579,17 +5682,39 @@ echo "${ECHO_T}$CC_SHARED_OPTS" >&6
** SHARED_LIB \$SHARED_LIB
** IMPORT_LIB \$IMPORT_LIB
EOF
- exec \$* -shared -Wl,--out-implib=../lib/\${IMPORT_LIB} -Wl,--export-all-symbols -o ../lib/\${SHARED_LIB}
+ exec \$* -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
+CF_EOF
+ chmod +x mk_shared_lib.sh
+ ;;
+ msys*) #(vi
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
+ cf_cv_shlib_version=msysdll
+ cf_cv_shlib_version_infix=msysdll
+ shlibdir=$bindir
+ MAKE_DLLS=
+ cat >mk_shared_lib.sh <<-CF_EOF
+ #!/bin/sh
+ SHARED_LIB=\$1
+ IMPORT_LIB=\`echo "\$1" | sed -e 's/msys-/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\`
+ shift
+ cat <<-EOF
+ Linking shared library
+ ** SHARED_LIB \$SHARED_LIB
+ ** IMPORT_LIB \$IMPORT_LIB
+EOF
+ exec \$* -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
CF_EOF
chmod +x mk_shared_lib.sh
;;
darwin*) #(vi
- EXTRA_CFLAGS="-no-cpp-precomp"
+ cf_try_cflags="no-cpp-precomp"
CC_SHARED_OPTS="-dynamic"
MK_SHARED_LIB='${CC} ${CFLAGS} -dynamiclib -install_name ${libdir}/`basename $@` -compatibility_version ${ABI_VERSION} -current_version ${ABI_VERSION} -o $@'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=abi
cf_cv_shlib_version_infix=yes
- echo "$as_me:5592: checking if ld -search_paths_first works" >&5
+ echo "$as_me:5717: checking if ld -search_paths_first works" >&5
echo $ECHO_N "checking if ld -search_paths_first works... $ECHO_C" >&6
if test "${cf_cv_ldflags_search_paths_first+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5598,7 +5723,7 @@ else
cf_save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
cat >conftest.$ac_ext <<_ACEOF
-#line 5601 "configure"
+#line 5726 "configure"
#include "confdefs.h"
int
@@ -5610,16 +5735,16 @@ int i;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5613: \"$ac_link\"") >&5
+if { (eval echo "$as_me:5738: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5616: \$? = $ac_status" >&5
+ echo "$as_me:5741: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5619: \"$ac_try\"") >&5
+ { (eval echo "$as_me:5744: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5622: \$? = $ac_status" >&5
+ echo "$as_me:5747: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_ldflags_search_paths_first=yes
else
@@ -5630,12 +5755,20 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$cf_save_LDFLAGS
fi
-echo "$as_me:5633: result: $cf_cv_ldflags_search_paths_first" >&5
+echo "$as_me:5758: result: $cf_cv_ldflags_search_paths_first" >&5
echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
if test $cf_cv_ldflags_search_paths_first = yes; then
LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
fi
;;
+ hpux[7-8]*) #(vi
+ # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
+ if test "$GCC" != yes; then
+ CC_SHARED_OPTS='+Z'
+ fi
+ MK_SHARED_LIB='${LD} -b -o $@'
+ INSTALL_LIB="-m 555"
+ ;;
hpux*) #(vi
# (tested with gcc 2.7.2 -- I don't have c89)
if test "$GCC" = yes; then
@@ -5649,9 +5782,19 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
# readonly to exploit a quirk in the memory manager.
INSTALL_LIB="-m 555"
;;
+ interix*)
+ test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
+ if test "$cf_cv_shlib_version" = rel; then
+ cf_shared_soname='`basename .${REL_VERSION}`.${ABI_VERSION}'
+ else
+ cf_shared_soname='`basename `'
+ fi
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o '
+ ;;
irix*) #(vi
if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
@@ -5668,7 +5811,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
@@ -5680,13 +5823,40 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@'
;;
- openbsd[2-9].*) #(vi
+ mingw*) #(vi
+ cf_cv_shlib_version=mingw
+ cf_cv_shlib_version_infix=mingw
+ shlibdir=$bindir
+ MAKE_DLLS=
+ if test "$DFT_LWR_MODEL" = "shared" ; then
+ LOCAL_LDFLAGS="-Wl,--enable-auto-import"
+ LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+ EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS"
+ fi
+ CC_SHARED_OPTS=
+ MK_SHARED_LIB='sh '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}'
+ RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a"
+ cat >mk_shared_lib.sh <<-CF_EOF
+ #!/bin/sh
+ SHARED_LIB=\$1
+ IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.a/'\`
+ shift
+ cat <<-EOF
+ Linking shared library
+ ** SHARED_LIB \$SHARED_LIB
+ ** IMPORT_LIB \$IMPORT_LIB
+EOF
+ exec \$* -shared -Wl,--enable-auto-import,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB}
+CF_EOF
+ chmod +x mk_shared_lib.sh
+ ;;
+ openbsd[2-9].*|mirbsd*) #(vi
if test "$DFT_LWR_MODEL" = "shared" ; then
LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
@@ -5704,12 +5874,12 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
MK_SHARED_LIB='${LD} -Bshareable -o $@'
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
;;
- freebsd*) #(vi
+ dragonfly*|freebsd*) #(vi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
- LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS"
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
@@ -5726,7 +5896,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
- EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
+ EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
if test "$cf_cv_shlib_version" = auto; then
if test -f /usr/libexec/ld.elf_so; then
cf_cv_shlib_version=abi
@@ -5744,7 +5914,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@'
else
- MK_SHARED_LIB='${LD} -shared -Bshareable -o $@'
+ MK_SHARED_LIB='${CC} -Wl,-shared -Wl,-Bshareable -o $@'
fi
;;
osf*|mls+*) #(vi
@@ -5810,7 +5980,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
do
CFLAGS="$cf_shared_opts $cf_save_CFLAGS"
cat >conftest.$ac_ext <<_ACEOF
-#line 5813 "configure"
+#line 5983 "configure"
#include "confdefs.h"
#include <stdio.h>
int
@@ -5822,16 +5992,16 @@ printf("Hello\n");
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:5825: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:5995: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:5828: \$? = $ac_status" >&5
+ echo "$as_me:5998: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:5831: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6001: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5834: \$? = $ac_status" >&5
+ echo "$as_me:6004: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -5868,21 +6038,64 @@ rm -f conftest.$ac_objext conftest.$ac_ext
test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
;;
*)
- { echo "$as_me:5871: WARNING: ignored --with-shlib-version" >&5
+ { echo "$as_me:6041: WARNING: ignored --with-shlib-version" >&5
echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
;;
esac
;;
esac
- if test -n "$cf_ld_rpath_opt" ; then
- MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}"
+ if test -n "$cf_try_cflags"
+ then
+cat > conftest.$ac_ext <<EOF
+#line 6051 "${as_me:-configure}"
+#include <stdio.h>
+int main(int argc, char *argv[])
+{
+ printf("hello\n");
+ return (argv[argc-1] == 0) ;
+}
+EOF
+ cf_save_CFLAGS="$CFLAGS"
+ for cf_opt in $cf_try_cflags
+ do
+ CFLAGS="$cf_save_CFLAGS -$cf_opt"
+ echo "$as_me:6063: checking if CFLAGS option -$cf_opt works" >&5
+echo $ECHO_N "checking if CFLAGS option -$cf_opt works... $ECHO_C" >&6
+ if { (eval echo "$as_me:6065: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:6068: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ echo "$as_me:6070: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ else
+ echo "$as_me:6074: result: no" >&5
+echo "${ECHO_T}no" >&6
+ fi
+ done
+ CFLAGS="$cf_save_CFLAGS"
fi
+ # RPATH_LIST is a colon-separated list of directories
+ test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
+ test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
+
+ test $cf_cv_rm_so_locs = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations"
+
+ test -n "$verbose" && echo " CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6
+
+echo "${as_me:-configure}:6089: testing CC_SHARED_OPTS: $CC_SHARED_OPTS ..." 1>&5
+
+ test -n "$verbose" && echo " MK_SHARED_LIB: $MK_SHARED_LIB" 1>&6
+
+echo "${as_me:-configure}:6093: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5
+
if test "$CC_SHARED_OPTS" = "unknown"; then
for model in $cf_list_models; do
if test "$model" = "shared"; then
- { { echo "$as_me:5885: error: Shared libraries are not supported in this version" >&5
+ { { echo "$as_me:6098: error: Shared libraries are not supported in this version" >&5
echo "$as_me: error: Shared libraries are not supported in this version" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -5892,7 +6105,7 @@ fi
### If we're building with rpath, try to link non-standard libs that way too.
if test "$DFT_LWR_MODEL" = "shared"; then
-echo "$as_me:5895: checking if rpath-hack should be disabled" >&5
+echo "$as_me:6108: checking if rpath-hack should be disabled" >&5
echo $ECHO_N "checking if rpath-hack should be disabled... $ECHO_C" >&6
# Check whether --enable-rpath-hack or --disable-rpath-hack was given.
@@ -5909,21 +6122,21 @@ else
cf_disable_rpath_hack=no
fi;
-echo "$as_me:5912: result: $cf_disable_rpath_hack" >&5
+echo "$as_me:6125: result: $cf_disable_rpath_hack" >&5
echo "${ECHO_T}$cf_disable_rpath_hack" >&6
if test "$cf_disable_rpath_hack" = no ; then
-echo "$as_me:5916: checking for updated LDFLAGS" >&5
+echo "$as_me:6129: checking for updated LDFLAGS" >&5
echo $ECHO_N "checking for updated LDFLAGS... $ECHO_C" >&6
if test -n "$LD_RPATH_OPT" ; then
- echo "$as_me:5919: result: maybe" >&5
+ echo "$as_me:6132: result: maybe" >&5
echo "${ECHO_T}maybe" >&6
for ac_prog in ldd
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-echo "$as_me:5926: checking for $ac_word" >&5
+echo "$as_me:6139: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_prog_cf_ldd_prog+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -5938,7 +6151,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_cf_ldd_prog="$ac_prog"
-echo "$as_me:5941: found $ac_dir/$ac_word" >&5
+echo "$as_me:6154: found $ac_dir/$ac_word" >&5
break
done
@@ -5946,10 +6159,10 @@ fi
fi
cf_ldd_prog=$ac_cv_prog_cf_ldd_prog
if test -n "$cf_ldd_prog"; then
- echo "$as_me:5949: result: $cf_ldd_prog" >&5
+ echo "$as_me:6162: result: $cf_ldd_prog" >&5
echo "${ECHO_T}$cf_ldd_prog" >&6
else
- echo "$as_me:5952: result: no" >&5
+ echo "$as_me:6165: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -5963,7 +6176,7 @@ test -n "$cf_ldd_prog" || cf_ldd_prog="no"
cf_rpath_oops=
cat >conftest.$ac_ext <<_ACEOF
-#line 5966 "configure"
+#line 6179 "configure"
#include "confdefs.h"
#include <stdio.h>
int
@@ -5975,19 +6188,19 @@ printf("Hello");
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:5978: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6191: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:5981: \$? = $ac_status" >&5
+ echo "$as_me:6194: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:5984: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6197: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:5987: \$? = $ac_status" >&5
+ echo "$as_me:6200: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort -u`
- cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[ ]/%/%' -e 's%/[^/][^/]*$%%' |sort -u`
+ cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort | uniq`
+ cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[ ]/%/%' -e 's%/[^/][^/]*$%%' |sort | uniq`
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
@@ -6012,7 +6225,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
then
test -n "$verbose" && echo " ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6
-echo "${as_me:-configure}:6015: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
+echo "${as_me:-configure}:6228: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5
LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib"
break
@@ -6024,11 +6237,11 @@ echo "${as_me:-configure}:6015: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS
test -n "$verbose" && echo " ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
-echo "${as_me:-configure}:6027: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:6240: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
test -n "$verbose" && echo " ...checking LDFLAGS $LDFLAGS" 1>&6
-echo "${as_me:-configure}:6031: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:6244: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5
cf_rpath_dst=
for cf_rpath_src in $LDFLAGS
@@ -6065,7 +6278,7 @@ do
then
test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
-echo "${as_me:-configure}:6068: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:6281: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
fi
@@ -6078,11 +6291,11 @@ LDFLAGS=$cf_rpath_dst
test -n "$verbose" && echo " ...checked LDFLAGS $LDFLAGS" 1>&6
-echo "${as_me:-configure}:6081: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:6294: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5
test -n "$verbose" && echo " ...checking LIBS $LIBS" 1>&6
-echo "${as_me:-configure}:6085: testing ...checking LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:6298: testing ...checking LIBS $LIBS ..." 1>&5
cf_rpath_dst=
for cf_rpath_src in $LIBS
@@ -6119,7 +6332,7 @@ do
then
test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6
-echo "${as_me:-configure}:6122: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
+echo "${as_me:-configure}:6335: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5
EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS"
fi
@@ -6132,12 +6345,15 @@ LIBS=$cf_rpath_dst
test -n "$verbose" && echo " ...checked LIBS $LIBS" 1>&6
-echo "${as_me:-configure}:6135: testing ...checked LIBS $LIBS ..." 1>&5
+echo "${as_me:-configure}:6348: testing ...checked LIBS $LIBS ..." 1>&5
test -n "$verbose" && echo " ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6
-echo "${as_me:-configure}:6139: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+echo "${as_me:-configure}:6352: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5
+else
+ echo "$as_me:6355: result: no" >&5
+echo "${ECHO_T}no" >&6
fi
fi
@@ -6147,7 +6363,7 @@ fi
###############################################################################
### use option --disable-overwrite to leave out the link to -lcurses
-echo "$as_me:6150: checking if you wish to install ncurses overwriting curses" >&5
+echo "$as_me:6366: 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.
@@ -6157,10 +6373,10 @@ if test "${enable_overwrite+set}" = set; then
else
if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi
fi;
-echo "$as_me:6160: result: $with_overwrite" >&5
+echo "$as_me:6376: result: $with_overwrite" >&5
echo "${ECHO_T}$with_overwrite" >&6
-echo "$as_me:6163: checking if external terminfo-database is used" >&5
+echo "$as_me:6379: 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.
@@ -6170,7 +6386,7 @@ if test "${enable_database+set}" = set; then
else
use_database=yes
fi;
-echo "$as_me:6173: result: $use_database" >&5
+echo "$as_me:6389: result: $use_database" >&5
echo "${ECHO_T}$use_database" >&6
case $host_os in #(vi
@@ -6182,17 +6398,11 @@ os2*) #(vi
;;
esac
- case $cf_cv_system_name in
- os2*) PATH_SEPARATOR=';' ;;
- *) PATH_SEPARATOR=':' ;;
- esac
-
+NCURSES_USE_DATABASE=0
if test "$use_database" != no ; then
- cat >>confdefs.h <<\EOF
-#define USE_DATABASE 1
-EOF
+ NCURSES_USE_DATABASE=1
- echo "$as_me:6195: checking which terminfo source-file will be installed" >&5
+ echo "$as_me:6405: checking which terminfo source-file will be installed" >&5
echo $ECHO_N "checking which terminfo source-file will be installed... $ECHO_C" >&6
# Check whether --with-database or --without-database was given.
@@ -6200,10 +6410,10 @@ if test "${with_database+set}" = set; then
withval="$with_database"
TERMINFO_SRC=$withval
fi;
- echo "$as_me:6203: result: $TERMINFO_SRC" >&5
+ echo "$as_me:6413: result: $TERMINFO_SRC" >&5
echo "${ECHO_T}$TERMINFO_SRC" >&6
- echo "$as_me:6206: checking whether to use hashed database instead of directory/tree" >&5
+ echo "$as_me:6416: 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.
@@ -6213,13 +6423,13 @@ if test "${with_hashed_db+set}" = set; then
else
with_hashed_db=no
fi;
- echo "$as_me:6216: result: $with_hashed_db" >&5
+ echo "$as_me:6426: result: $with_hashed_db" >&5
echo "${ECHO_T}$with_hashed_db" >&6
else
with_hashed_db=no
fi
-echo "$as_me:6222: checking for list of fallback descriptions" >&5
+echo "$as_me:6432: 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.
@@ -6229,11 +6439,11 @@ if test "${with_fallbacks+set}" = set; then
else
with_fallback=
fi;
-echo "$as_me:6232: result: $with_fallback" >&5
+echo "$as_me:6442: result: $with_fallback" >&5
echo "${ECHO_T}$with_fallback" >&6
FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'`
-echo "$as_me:6236: checking if you want modern xterm or antique" >&5
+echo "$as_me:6446: 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.
@@ -6247,17 +6457,42 @@ case $with_xterm_new in
no) with_xterm_new=xterm-old;;
*) with_xterm_new=xterm-new;;
esac
-echo "$as_me:6250: result: $with_xterm_new" >&5
+echo "$as_me:6460: result: $with_xterm_new" >&5
echo "${ECHO_T}$with_xterm_new" >&6
WHICH_XTERM=$with_xterm_new
+echo "$as_me:6464: checking if xterm backspace sends BS or DEL" >&5
+echo $ECHO_N "checking if xterm backspace sends BS or DEL... $ECHO_C" >&6
+
+# Check whether --with-xterm-kbs or --without-xterm-kbs was given.
+if test "${with_xterm_kbs+set}" = set; then
+ withval="$with_xterm_kbs"
+ with_xterm_kbs=$withval
+else
+ with_xterm_kbs=BS
+fi;
+case x$with_xterm_kbs in
+xyes|xno|xBS|xbs|x8)
+ with_xterm_kbs=BS
+ ;;
+xDEL|xdel|x127)
+ with_xterm_kbs=DEL
+ ;;
+*)
+ with_xterm_kbs=$withval
+ ;;
+esac
+echo "$as_me:6485: result: $with_xterm_kbs" >&5
+echo "${ECHO_T}$with_xterm_kbs" >&6
+XTERM_KBS=$with_xterm_kbs
+
MAKE_TERMINFO=
if test "$use_database" = no ; then
TERMINFO="${datadir}/terminfo"
MAKE_TERMINFO="#"
else
-echo "$as_me:6260: checking for list of terminfo directories" >&5
+echo "$as_me:6495: 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.
@@ -6285,7 +6520,7 @@ case ".$cf_src_path" in #(vi
;;
.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
;;
-.\${*prefix}*) #(vi
+.\${*prefix}*|.\${*dir}*) #(vi
eval cf_src_path="$cf_src_path"
case ".$cf_src_path" in #(vi
.NONE/*)
@@ -6297,26 +6532,37 @@ case ".$cf_src_path" in #(vi
cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { { echo "$as_me:6300: error: expected a pathname, not \"$cf_src_path\"" >&5
+ { { echo "$as_me:6535: error: expected a pathname, not \"$cf_src_path\"" >&5
echo "$as_me: error: expected a pathname, not \"$cf_src_path\"" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
- test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:"
+ test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR"
cf_dst_path="${cf_dst_path}${cf_src_path}"
done
IFS="$ac_save_ifs"
-eval 'TERMINFO_DIRS="$cf_dst_path"'
+# This may use the prefix/exec_prefix symbols which will only yield "NONE"
+# so we have to check/work around. We do prefer the result of "eval"...
+eval cf_dst_eval="$cf_dst_path"
+case "x$cf_dst_eval" in #(vi
+xNONE*) #(vi
+ TERMINFO_DIRS=$cf_dst_path
+ ;;
+*)
+ TERMINFO_DIRS="$cf_dst_eval"
+ ;;
+esac
-echo "$as_me:6313: result: $TERMINFO_DIRS" >&5
+echo "$as_me:6558: result: $TERMINFO_DIRS" >&5
echo "${ECHO_T}$TERMINFO_DIRS" >&6
-test -n "$TERMINFO_DIRS" && cat >>confdefs.h <<EOF
+test -n "$TERMINFO_DIRS" &&
+cat >>confdefs.h <<EOF
#define TERMINFO_DIRS "$TERMINFO_DIRS"
EOF
-echo "$as_me:6319: checking for default terminfo directory" >&5
+echo "$as_me:6565: 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.
@@ -6340,7 +6586,7 @@ case ".$withval" in #(vi
;;
.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
;;
-.\${*prefix}*) #(vi
+.\${*prefix}*|.\${*dir}*) #(vi
eval withval="$withval"
case ".$withval" in #(vi
.NONE/*)
@@ -6352,17 +6598,18 @@ case ".$withval" in #(vi
withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { { echo "$as_me:6355: error: expected a pathname, not \"$withval\"" >&5
+ { { echo "$as_me:6601: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
fi
-TERMINFO="$withval"
+eval TERMINFO="$withval"
-echo "$as_me:6364: result: $TERMINFO" >&5
+echo "$as_me:6610: result: $TERMINFO" >&5
echo "${ECHO_T}$TERMINFO" >&6
+
cat >>confdefs.h <<EOF
#define TERMINFO "$TERMINFO"
EOF
@@ -6371,7 +6618,7 @@ fi
### use option --disable-big-core to make tic run on small machines
### We need 4Mb, check if we can allocate 50% more than that.
-echo "$as_me:6374: checking if big-core option selected" >&5
+echo "$as_me:6621: 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.
@@ -6383,7 +6630,7 @@ else
with_big_core=no
else
cat >conftest.$ac_ext <<_ACEOF
-#line 6386 "configure"
+#line 6633 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -6397,15 +6644,15 @@ int main() {
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:6400: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6647: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6403: \$? = $ac_status" >&5
+ echo "$as_me:6650: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:6405: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6652: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6408: \$? = $ac_status" >&5
+ echo "$as_me:6655: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
with_big_core=yes
else
@@ -6417,16 +6664,17 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi;
-echo "$as_me:6420: result: $with_big_core" >&5
+echo "$as_me:6667: result: $with_big_core" >&5
echo "${ECHO_T}$with_big_core" >&6
-test "$with_big_core" = "yes" && cat >>confdefs.h <<\EOF
+test "x$with_big_core" = "xyes" &&
+cat >>confdefs.h <<\EOF
#define HAVE_BIG_CORE 1
EOF
### ISO C only guarantees 512-char strings, we have tables which load faster
### when constructed using "big" strings. More than the C compiler, the awk
### program is a limit on most vendor UNIX systems. Check that we can build.
-echo "$as_me:6429: checking if big-strings option selected" >&5
+echo "$as_me:6677: checking if big-strings option selected" >&5
echo $ECHO_N "checking if big-strings option selected... $ECHO_C" >&6
# Check whether --enable-big-strings or --disable-big-strings was given.
@@ -6440,8 +6688,8 @@ else
eval with_big_strings=no
;;
*) #(vi
- if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < 12000) { xx = xx "x"; }; printf("%s\n", xx); }' \
- | $AWK '{ printf "%d\n", length($0); }' | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ($0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then
+ if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < 12000) { xx = xx "x"; }; printf("%s\n", xx); }' 2>/dev/null \
+ | $AWK '{ printf "%d\n", length($0); }' 2>/dev/null | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ($0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then
eval with_big_strings=yes
else
eval with_big_strings=no
@@ -6450,14 +6698,14 @@ else
esac
fi;
-echo "$as_me:6453: result: $with_big_strings" >&5
+echo "$as_me:6701: result: $with_big_strings" >&5
echo "${ECHO_T}$with_big_strings" >&6
USE_BIG_STRINGS=0
-test "$with_big_strings" = "yes" && USE_BIG_STRINGS=1
+test "x$with_big_strings" = "xyes" && USE_BIG_STRINGS=1
### use option --enable-termcap to compile in the termcap fallback support
-echo "$as_me:6460: checking if you want termcap-fallback support" >&5
+echo "$as_me:6708: 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.
@@ -6467,34 +6715,33 @@ if test "${enable_termcap+set}" = set; then
else
with_termcap=no
fi;
-echo "$as_me:6470: result: $with_termcap" >&5
+echo "$as_me:6718: result: $with_termcap" >&5
echo "${ECHO_T}$with_termcap" >&6
-if test "$with_termcap" != "yes" ; then
+NCURSES_USE_TERMCAP=0
+if test "x$with_termcap" != "xyes" ; then
if test "$use_database" = no ; then
if test -z "$with_fallback" ; then
- { { echo "$as_me:6476: error: You have disabled the database w/o specifying fallbacks" >&5
+ { { echo "$as_me:6725: 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
-if test "$with_ticlib" != no ; then
- { { echo "$as_me:6488: error: Options --with-ticlib and --enable-termcap cannot be combined" >&5
+ if test "$with_ticlib" != no ; then
+ { { echo "$as_me:6738: error: Options --with-ticlib and --enable-termcap cannot be combined" >&5
echo "$as_me: error: Options --with-ticlib and --enable-termcap cannot be combined" >&2;}
{ (exit 1); exit 1; }; }
-fi
-
-cat >>confdefs.h <<\EOF
-#define USE_TERMCAP 1
-EOF
+ fi
-echo "$as_me:6497: checking for list of termcap files" >&5
+ NCURSES_USE_TERMCAP=1
+ echo "$as_me:6744: 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.
@@ -6522,7 +6769,7 @@ case ".$cf_src_path" in #(vi
;;
.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
;;
-.\${*prefix}*) #(vi
+.\${*prefix}*|.\${*dir}*) #(vi
eval cf_src_path="$cf_src_path"
case ".$cf_src_path" in #(vi
.NONE/*)
@@ -6534,27 +6781,38 @@ case ".$cf_src_path" in #(vi
cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { { echo "$as_me:6537: error: expected a pathname, not \"$cf_src_path\"" >&5
+ { { echo "$as_me:6784: error: expected a pathname, not \"$cf_src_path\"" >&5
echo "$as_me: error: expected a pathname, not \"$cf_src_path\"" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
- test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:"
+ test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR"
cf_dst_path="${cf_dst_path}${cf_src_path}"
done
IFS="$ac_save_ifs"
-eval 'TERMPATH="$cf_dst_path"'
+# This may use the prefix/exec_prefix symbols which will only yield "NONE"
+# so we have to check/work around. We do prefer the result of "eval"...
+eval cf_dst_eval="$cf_dst_path"
+case "x$cf_dst_eval" in #(vi
+xNONE*) #(vi
+ TERMPATH=$cf_dst_path
+ ;;
+*)
+ TERMPATH="$cf_dst_eval"
+ ;;
+esac
-echo "$as_me:6550: result: $TERMPATH" >&5
+ echo "$as_me:6807: result: $TERMPATH" >&5
echo "${ECHO_T}$TERMPATH" >&6
-test -n "$TERMPATH" && cat >>confdefs.h <<EOF
+ test -n "$TERMPATH" &&
+cat >>confdefs.h <<EOF
#define TERMPATH "$TERMPATH"
EOF
-### use option --enable-getcap to use a hacked getcap for reading termcaps
-echo "$as_me:6557: checking if fast termcap-loader is needed" >&5
+ ### use option --enable-getcap to use a hacked getcap for reading termcaps
+ echo "$as_me:6815: checking if fast termcap-loader is needed" >&5
echo $ECHO_N "checking if fast termcap-loader is needed... $ECHO_C" >&6
# Check whether --enable-getcap or --disable-getcap was given.
@@ -6564,13 +6822,14 @@ if test "${enable_getcap+set}" = set; then
else
with_getcap=no
fi;
-echo "$as_me:6567: result: $with_getcap" >&5
+ echo "$as_me:6825: result: $with_getcap" >&5
echo "${ECHO_T}$with_getcap" >&6
-test "$with_getcap" = "yes" && cat >>confdefs.h <<\EOF
+ test "x$with_getcap" = "xyes" &&
+cat >>confdefs.h <<\EOF
#define USE_GETCAP 1
EOF
-echo "$as_me:6573: checking if translated termcaps will be cached in ~/.terminfo" >&5
+ echo "$as_me:6832: 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.
@@ -6580,16 +6839,17 @@ if test "${enable_getcap_cache+set}" = set; then
else
with_getcap_cache=no
fi;
-echo "$as_me:6583: result: $with_getcap_cache" >&5
+ echo "$as_me:6842: result: $with_getcap_cache" >&5
echo "${ECHO_T}$with_getcap_cache" >&6
-test "$with_getcap_cache" = "yes" && cat >>confdefs.h <<\EOF
+ test "x$with_getcap_cache" = "xyes" &&
+cat >>confdefs.h <<\EOF
#define USE_GETCAP_CACHE 1
EOF
fi
### Use option --disable-home-terminfo to completely remove ~/.terminfo
-echo "$as_me:6592: checking if ~/.terminfo is wanted" >&5
+echo "$as_me:6852: 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.
@@ -6599,13 +6859,14 @@ if test "${enable_home_terminfo+set}" = set; then
else
with_home_terminfo=yes
fi;
-echo "$as_me:6602: result: $with_home_terminfo" >&5
+echo "$as_me:6862: result: $with_home_terminfo" >&5
echo "${ECHO_T}$with_home_terminfo" >&6
-test "$with_home_terminfo" = "yes" && cat >>confdefs.h <<\EOF
+test "x$with_home_terminfo" = "xyes" &&
+cat >>confdefs.h <<\EOF
#define USE_HOME_TERMINFO 1
EOF
-echo "$as_me:6608: checking if you want to use restricted environment when running as root" >&5
+echo "$as_me:6869: checking if you want to use restricted environment when running as root" >&5
echo $ECHO_N "checking if you want to use restricted environment when running as root... $ECHO_C" >&6
# Check whether --enable-root-environ or --disable-root-environ was given.
@@ -6615,9 +6876,10 @@ if test "${enable_root_environ+set}" = set; then
else
with_root_environ=yes
fi;
-echo "$as_me:6618: result: $with_root_environ" >&5
+echo "$as_me:6879: result: $with_root_environ" >&5
echo "${ECHO_T}$with_root_environ" >&6
-test "$with_root_environ" = yes && cat >>confdefs.h <<\EOF
+test "x$with_root_environ" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_ROOT_ENVIRON 1
EOF
@@ -6629,13 +6891,13 @@ for ac_func in \
unlink
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:6632: checking for $ac_func" >&5
+echo "$as_me:6894: 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 6638 "configure"
+#line 6900 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below. */
@@ -6658,7 +6920,7 @@ main ()
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -6666,16 +6928,16 @@ f = $ac_func;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6669: \"$ac_link\"") >&5
+if { (eval echo "$as_me:6931: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6672: \$? = $ac_status" >&5
+ echo "$as_me:6934: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6675: \"$ac_try\"") >&5
+ { (eval echo "$as_me:6937: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6678: \$? = $ac_status" >&5
+ echo "$as_me:6940: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -6685,7 +6947,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:6688: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:6950: 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
@@ -6702,13 +6964,13 @@ for ac_func in \
symlink
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:6705: checking for $ac_func" >&5
+echo "$as_me:6967: 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 6711 "configure"
+#line 6973 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below. */
@@ -6731,7 +6993,7 @@ main ()
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -6739,16 +7001,16 @@ f = $ac_func;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:6742: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7004: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6745: \$? = $ac_status" >&5
+ echo "$as_me:7007: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:6748: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7010: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6751: \$? = $ac_status" >&5
+ echo "$as_me:7013: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -6758,7 +7020,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:6761: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:7023: 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
@@ -6769,7 +7031,7 @@ fi
done
else
- echo "$as_me:6772: checking if link/symlink functions work" >&5
+ echo "$as_me:7034: 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
@@ -6782,7 +7044,7 @@ else
eval 'ac_cv_func_'$cf_func'=error'
else
cat >conftest.$ac_ext <<_ACEOF
-#line 6785 "configure"
+#line 7047 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -6812,15 +7074,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:6815: \"$ac_link\"") >&5
+if { (eval echo "$as_me:7077: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:6818: \$? = $ac_status" >&5
+ echo "$as_me:7080: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:6820: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7082: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:6823: \$? = $ac_status" >&5
+ echo "$as_me:7085: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
@@ -6838,13 +7100,15 @@ fi
test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no
fi
-echo "$as_me:6841: result: $cf_cv_link_funcs" >&5
+echo "$as_me:7103: result: $cf_cv_link_funcs" >&5
echo "${ECHO_T}$cf_cv_link_funcs" >&6
- test "$ac_cv_func_link" = yes && cat >>confdefs.h <<\EOF
+ 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
@@ -6855,8 +7119,8 @@ with_symlinks=no
# soft links (symbolic links) are useful for some systems where hard links do
# not work, or to make it simpler to copy terminfo trees around.
-if test "$ac_cv_func_symlink" = yes ; then
- echo "$as_me:6859: checking if tic should use symbolic links" >&5
+if test "x$ac_cv_func_symlink" = xyes ; then
+ echo "$as_me:7123: 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.
@@ -6866,34 +7130,36 @@ if test "${enable_symlinks+set}" = set; then
else
with_symlinks=no
fi;
- echo "$as_me:6869: result: $with_symlinks" >&5
+ echo "$as_me:7133: result: $with_symlinks" >&5
echo "${ECHO_T}$with_symlinks" >&6
fi
# If we have hard links and did not choose to use soft links instead, there is
# no reason to make this choice optional - use the hard links.
if test "$with_symlinks" = no ; then
- echo "$as_me:6876: checking if tic should use hard links" >&5
+ echo "$as_me:7140: 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
+ if test "x$ac_cv_func_link" = xyes ; then
with_links=yes
else
with_links=no
fi
- echo "$as_me:6883: result: $with_links" >&5
+ echo "$as_me:7147: result: $with_links" >&5
echo "${ECHO_T}$with_links" >&6
fi
-test "$with_links" = yes && cat >>confdefs.h <<\EOF
+test "x$with_links" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_LINKS 1
EOF
-test "$with_symlinks" = yes && cat >>confdefs.h <<\EOF
+test "x$with_symlinks" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_SYMLINKS 1
EOF
### use option --enable-broken-linker to force on use of broken-linker support
-echo "$as_me:6896: checking if you want broken-linker support code" >&5
+echo "$as_me:7162: 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.
@@ -6903,12 +7169,13 @@ if test "${enable_broken_linker+set}" = set; then
else
with_broken_linker=${BROKEN_LINKER:-no}
fi;
-echo "$as_me:6906: result: $with_broken_linker" >&5
+echo "$as_me:7172: 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
+if test "x$with_broken_linker" = xyes ; then
+
+cat >>confdefs.h <<\EOF
#define BROKEN_LINKER 1
EOF
@@ -6916,21 +7183,22 @@ EOF
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
BROKEN_LINKER=1
test -n "$verbose" && echo " cygwin linker is broken anyway" 1>&6
-echo "${as_me:-configure}:6926: testing cygwin linker is broken anyway ..." 1>&5
+echo "${as_me:-configure}:7194: testing cygwin linker is broken anyway ..." 1>&5
;;
esac
fi
### use option --enable-bsdpad to have tputs process BSD-style prefix padding
-echo "$as_me:6933: checking if tputs should process BSD-style prefix padding" >&5
+echo "$as_me:7201: 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.
@@ -6940,9 +7208,10 @@ if test "${enable_bsdpad+set}" = set; then
else
with_bsdpad=no
fi;
-echo "$as_me:6943: result: $with_bsdpad" >&5
+echo "$as_me:7211: result: $with_bsdpad" >&5
echo "${ECHO_T}$with_bsdpad" >&6
-test "$with_bsdpad" = yes && cat >>confdefs.h <<\EOF
+test "x$with_bsdpad" = xyes &&
+cat >>confdefs.h <<\EOF
#define BSD_TPUTS 1
EOF
@@ -6962,10 +7231,10 @@ cf_POSIX_C_SOURCE=199506L
cf_xopen_source=
case $host_os in #(vi
-aix[456]*) #(vi
+aix[4-7]*) #(vi
cf_xopen_source="-D_ALL_SOURCE"
;;
-cygwin) #(vi
+cygwin|msys) #(vi
cf_XOPEN_SOURCE=600
;;
darwin[0-8].*) #(vi
@@ -6973,6 +7242,7 @@ darwin[0-8].*) #(vi
;;
darwin*) #(vi
cf_xopen_source="-D_DARWIN_C_SOURCE"
+ cf_XOPEN_SOURCE=
;;
freebsd*|dragonfly*) #(vi
# 5.x headers associate
@@ -6990,17 +7260,18 @@ hpux*) #(vi
;;
irix[56].*) #(vi
cf_xopen_source="-D_SGI_SOURCE"
+ cf_XOPEN_SOURCE=
;;
linux*|gnu*|mint*|k*bsd*-gnu) #(vi
-echo "$as_me:6996: checking if we must define _GNU_SOURCE" >&5
+echo "$as_me:7267: 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 7003 "configure"
+#line 7274 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
@@ -7015,16 +7286,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7018: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7289: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7021: \$? = $ac_status" >&5
+ echo "$as_me:7292: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7024: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7295: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7027: \$? = $ac_status" >&5
+ echo "$as_me:7298: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gnu_source=no
else
@@ -7033,7 +7304,7 @@ cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
cat >conftest.$ac_ext <<_ACEOF
-#line 7036 "configure"
+#line 7307 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
@@ -7048,16 +7319,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7051: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7322: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7054: \$? = $ac_status" >&5
+ echo "$as_me:7325: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7057: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7328: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7060: \$? = $ac_status" >&5
+ echo "$as_me:7331: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gnu_source=no
else
@@ -7072,16 +7343,260 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:7075: result: $cf_cv_gnu_source" >&5
+echo "$as_me:7346: 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>
+ # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types
+ cf_XOPEN_SOURCE=
+
+cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
+
+cf_save_CFLAGS="$CFLAGS"
+cf_save_CPPFLAGS="$CPPFLAGS"
+
+cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \
+ sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+cf_trim_CPPFLAGS=`echo "$cf_save_CPPFLAGS" | \
+ sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+echo "$as_me:7368: checking if we should define _POSIX_C_SOURCE" >&5
+echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_posix_c_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+echo "${as_me:-configure}:7374: testing if the symbol is already defined go no further ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7377 "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:7392: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7395: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7398: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7401: \$? = $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 7422 "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:7437: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7440: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7443: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7446: \$? = $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 "${as_me:-configure}:7457: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+
+ CFLAGS="$cf_trim_CFLAGS"
+ CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
+
+echo "${as_me:-configure}:7462: testing if the second compile does not leave our definition intact error ..." 1>&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 7465 "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:7480: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:7483: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:7486: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:7489: \$? = $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:7505: 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"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_cv_posix_c_source
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ 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
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ 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="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
;;
netbsd*) #(vi
- # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+ cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
+ ;;
+openbsd[4-9]*) #(vi
+ # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
+ cf_xopen_source="-D_BSD_SOURCE"
+ cf_XOPEN_SOURCE=600
;;
openbsd*) #(vi
# setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw
@@ -7095,23 +7610,26 @@ nto-qnx*) #(vi
sco*) #(vi
# setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer
;;
-solaris2.1[0-9]) #(vi
- cf_xopen_source="-D__EXTENSIONS__ -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
- ;;
-solaris2.[1-9]) #(vi
+solaris2.*) #(vi
cf_xopen_source="-D__EXTENSIONS__"
+ cf_cv_xopen_source=broken
;;
*)
- echo "$as_me:7105: checking if we should define _XOPEN_SOURCE" >&5
+
+echo "$as_me:7619: 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 7112 "configure"
+#line 7626 "configure"
#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
#include <sys/types.h>
+
int
main ()
{
@@ -7124,16 +7642,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7127: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7645: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7130: \$? = $ac_status" >&5
+ echo "$as_me:7648: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7133: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7651: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7136: \$? = $ac_status" >&5
+ echo "$as_me:7654: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
@@ -7142,9 +7660,13 @@ cat conftest.$ac_ext >&5
cf_save="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE"
cat >conftest.$ac_ext <<_ACEOF
-#line 7145 "configure"
+#line 7663 "configure"
#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.h>
#include <sys/types.h>
+
int
main ()
{
@@ -7157,16 +7679,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7160: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7682: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7163: \$? = $ac_status" >&5
+ echo "$as_me:7685: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7166: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7688: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7169: \$? = $ac_status" >&5
+ echo "$as_me:7691: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_xopen_source=no
else
@@ -7181,9 +7703,10 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:7184: result: $cf_cv_xopen_source" >&5
+echo "$as_me:7706: result: $cf_cv_xopen_source" >&5
echo "${ECHO_T}$cf_cv_xopen_source" >&6
- if test "$cf_cv_xopen_source" != no ; then
+
+if test "$cf_cv_xopen_source" != no ; then
CFLAGS=`echo "$CFLAGS" | \
sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
@@ -7193,7 +7716,7 @@ CPPFLAGS=`echo "$CPPFLAGS" | \
sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
-e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'`
- cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
+ cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
cf_fix_cppflags=no
cf_new_cflags=
@@ -7273,7 +7796,7 @@ if test -n "$cf_new_extra_cppflags" ; then
EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
fi
- fi
+fi
cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE
@@ -7288,16 +7811,16 @@ 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:7291: checking if we should define _POSIX_C_SOURCE" >&5
+echo "$as_me:7814: checking if we should define _POSIX_C_SOURCE" >&5
echo $ECHO_N "checking if we should define _POSIX_C_SOURCE... $ECHO_C" >&6
if test "${cf_cv_posix_c_source+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
-echo "${as_me:-configure}:7297: testing if the symbol is already defined go no further ..." 1>&5
+echo "${as_me:-configure}:7820: testing if the symbol is already defined go no further ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 7300 "configure"
+#line 7823 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
@@ -7312,16 +7835,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7315: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7838: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7318: \$? = $ac_status" >&5
+ echo "$as_me:7841: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7321: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7844: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7324: \$? = $ac_status" >&5
+ echo "$as_me:7847: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_posix_c_source=no
else
@@ -7342,7 +7865,7 @@ cf_want_posix_source=no
esac
if test "$cf_want_posix_source" = yes ; then
cat >conftest.$ac_ext <<_ACEOF
-#line 7345 "configure"
+#line 7868 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
@@ -7357,16 +7880,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7360: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7883: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7363: \$? = $ac_status" >&5
+ echo "$as_me:7886: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7366: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7889: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7369: \$? = $ac_status" >&5
+ echo "$as_me:7892: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -7377,15 +7900,15 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "${as_me:-configure}:7380: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
+echo "${as_me:-configure}:7903: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5
CFLAGS="$cf_trim_CFLAGS"
CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source"
-echo "${as_me:-configure}:7385: testing if the second compile does not leave our definition intact error ..." 1>&5
+echo "${as_me:-configure}:7908: testing if the second compile does not leave our definition intact error ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 7388 "configure"
+#line 7911 "configure"
#include "confdefs.h"
#include <sys/types.h>
int
@@ -7400,16 +7923,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7403: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:7926: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7406: \$? = $ac_status" >&5
+ echo "$as_me:7929: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7409: \"$ac_try\"") >&5
+ { (eval echo "$as_me:7932: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7412: \$? = $ac_status" >&5
+ echo "$as_me:7935: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -7425,7 +7948,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:7428: result: $cf_cv_posix_c_source" >&5
+echo "$as_me:7951: 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
@@ -7597,16 +8120,283 @@ fi
fi
+if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then
+ echo "$as_me:8124: checking if _XOPEN_SOURCE really is set" >&5
+echo $ECHO_N "checking if _XOPEN_SOURCE really is set... $ECHO_C" >&6
+ cat >conftest.$ac_ext <<_ACEOF
+#line 8127 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+int
+main ()
+{
+
+#ifndef _XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:8142: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8145: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8148: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8151: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_XOPEN_SOURCE_set=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_XOPEN_SOURCE_set=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ echo "$as_me:8160: result: $cf_XOPEN_SOURCE_set" >&5
+echo "${ECHO_T}$cf_XOPEN_SOURCE_set" >&6
+ if test $cf_XOPEN_SOURCE_set = yes
+ then
+ cat >conftest.$ac_ext <<_ACEOF
+#line 8165 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+int
+main ()
+{
+
+#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE
+make an error
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:8180: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8183: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8186: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8189: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_XOPEN_SOURCE_set_ok=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_XOPEN_SOURCE_set_ok=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ if test $cf_XOPEN_SOURCE_set_ok = no
+ then
+ { echo "$as_me:8200: WARNING: _XOPEN_SOURCE is lower than requested" >&5
+echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;}
+ fi
+ else
+
+echo "$as_me:8205: checking if we should define _XOPEN_SOURCE" >&5
+echo $ECHO_N "checking if we should define _XOPEN_SOURCE... $ECHO_C" >&6
+if test "${cf_cv_xopen_source+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+#line 8212 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.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:8231: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8234: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8237: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8240: \$? = $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 8249 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <string.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:8268: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:8271: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:8274: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:8277: \$? = $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:8292: result: $cf_cv_xopen_source" >&5
+echo "${ECHO_T}$cf_cv_xopen_source" >&6
+
+if test "$cf_cv_xopen_source" != no ; then
+
+CFLAGS=`echo "$CFLAGS" | \
+ sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'`
+
+ cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
+
+cf_fix_cppflags=no
+cf_new_cflags=
+cf_new_cppflags=
+cf_new_extra_cppflags=
+
+for cf_add_cflags in $cf_temp_xopen_source
+do
+case $cf_fix_cppflags in
+no)
+ case $cf_add_cflags in #(vi
+ -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi
+ 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
+ case $cf_add_cflags in #(vi
+ -D*)
+ cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'`
+
+CPPFLAGS=`echo "$CPPFLAGS" | \
+ sed -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?[ ]/ /g' \
+ -e 's/-[UD]'"$cf_tst_cppflags"'\(=[^ ]*\)\?$//g'`
+
+ ;;
+ esac
+ 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="$CPPFLAGS $cf_new_cppflags"
+fi
+
+if test -n "$cf_new_extra_cppflags" ; then
+
+ EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS"
+fi
+
+fi
+
+ fi
+fi
+
# Work around breakage on OS X
-echo "$as_me:7602: checking if SIGWINCH is defined" >&5
+echo "$as_me:8392: 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 7609 "configure"
+#line 8399 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -7621,23 +8411,23 @@ int x = SIGWINCH
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7624: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8414: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7627: \$? = $ac_status" >&5
+ echo "$as_me:8417: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7630: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8420: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7633: \$? = $ac_status" >&5
+ echo "$as_me:8423: \$? = $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 7640 "configure"
+#line 8430 "configure"
#include "confdefs.h"
#undef _XOPEN_SOURCE
@@ -7655,16 +8445,16 @@ int x = SIGWINCH
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7658: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8448: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7661: \$? = $ac_status" >&5
+ echo "$as_me:8451: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7664: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8454: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7667: \$? = $ac_status" >&5
+ echo "$as_me:8457: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_define_sigwinch=maybe
else
@@ -7678,11 +8468,11 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:7681: result: $cf_cv_define_sigwinch" >&5
+echo "$as_me:8471: 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:7685: checking for actual SIGWINCH definition" >&5
+echo "$as_me:8475: 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
@@ -7693,7 +8483,7 @@ cf_sigwinch=32
while test $cf_sigwinch != 1
do
cat >conftest.$ac_ext <<_ACEOF
-#line 7696 "configure"
+#line 8486 "configure"
#include "confdefs.h"
#undef _XOPEN_SOURCE
@@ -7715,16 +8505,16 @@ int x = SIGWINCH
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7718: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8508: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7721: \$? = $ac_status" >&5
+ echo "$as_me:8511: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7724: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8514: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7727: \$? = $ac_status" >&5
+ echo "$as_me:8517: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_fixup_sigwinch=$cf_sigwinch
break
@@ -7738,7 +8528,7 @@ cf_sigwinch=`expr $cf_sigwinch - 1`
done
fi
-echo "$as_me:7741: result: $cf_cv_fixup_sigwinch" >&5
+echo "$as_me:8531: result: $cf_cv_fixup_sigwinch" >&5
echo "${ECHO_T}$cf_cv_fixup_sigwinch" >&6
if test "$cf_cv_fixup_sigwinch" != unknown ; then
@@ -7748,13 +8538,13 @@ fi
# Checks for CODESET support.
- echo "$as_me:7751: checking for nl_langinfo and CODESET" >&5
+ echo "$as_me:8541: 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 7757 "configure"
+#line 8547 "configure"
#include "confdefs.h"
#include <langinfo.h>
int
@@ -7766,16 +8556,16 @@ char* cs = nl_langinfo(CODESET);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7769: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8559: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:7772: \$? = $ac_status" >&5
+ echo "$as_me:8562: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7775: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8565: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7778: \$? = $ac_status" >&5
+ echo "$as_me:8568: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
am_cv_langinfo_codeset=yes
else
@@ -7786,7 +8576,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:7789: result: $am_cv_langinfo_codeset" >&5
+echo "$as_me:8579: result: $am_cv_langinfo_codeset" >&5
echo "${ECHO_T}$am_cv_langinfo_codeset" >&6
if test $am_cv_langinfo_codeset = yes; then
@@ -7800,7 +8590,7 @@ EOF
NCURSES_OK_WCHAR_T=
NCURSES_OK_WINT_T=
-echo "$as_me:7803: checking if you want wide-character code" >&5
+echo "$as_me:8593: 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.
@@ -7810,23 +8600,72 @@ if test "${enable_widec+set}" = set; then
else
with_widec=no
fi;
-echo "$as_me:7813: result: $with_widec" >&5
+echo "$as_me:8603: result: $with_widec" >&5
echo "${ECHO_T}$with_widec" >&6
-if test "$with_widec" = yes ; then
+if test "x$with_widec" = xyes ; then
LIB_SUFFIX="w${LIB_SUFFIX}"
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define USE_WIDEC_SUPPORT 1
EOF
- case "$CFLAGS $CPPFLAGS" in #(vi
- *-D_XOPEN_SOURCE=500) #(vi
- ;;
- *)
+cat >>confdefs.h <<\EOF
+#define NCURSES_WIDECHAR 1
+EOF
-echo "$as_me:7826: checking if we must define _XOPEN_SOURCE_EXTENDED" >&5
+echo "$as_me:8616: checking if wchar.h can be used as is" >&5
+echo $ECHO_N "checking if wchar.h can be used as is... $ECHO_C" >&6
+if test "${cf_cv_wchar_h_okay+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 8623 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#include <wchar.h>
+
+int
+main ()
+{
+
+ wint_t foo = 0;
+ int bar = iswpunct(foo)
+ ;
+ 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
+ cf_cv_wchar_h_okay=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_wchar_h_okay=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:8659: result: $cf_cv_wchar_h_okay" >&5
+echo "${ECHO_T}$cf_cv_wchar_h_okay" >&6
+
+if test $cf_cv_wchar_h_okay = no
+then
+
+echo "$as_me:8665: checking if we must define _XOPEN_SOURCE_EXTENDED" >&5
echo $ECHO_N "checking if we must define _XOPEN_SOURCE_EXTENDED... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
-#line 7829 "configure"
+#line 8668 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -7842,16 +8681,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7845: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8684: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7848: \$? = $ac_status" >&5
+ echo "$as_me:8687: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7851: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8690: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7854: \$? = $ac_status" >&5
+ echo "$as_me:8693: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=no
else
@@ -7860,16 +8699,16 @@ cat conftest.$ac_ext >&5
cf_result=yes
fi
rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:7863: result: $cf_result" >&5
+echo "$as_me:8702: 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:7869: checking checking for compatible value versus " >&5
+ echo "$as_me:8708: 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 7872 "configure"
+#line 8711 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -7885,16 +8724,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:7888: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:8727: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:7891: \$? = $ac_status" >&5
+ echo "$as_me:8730: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:7894: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8733: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7897: \$? = $ac_status" >&5
+ echo "$as_me:8736: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_result=yes
else
@@ -7903,7 +8742,7 @@ cat conftest.$ac_ext >&5
cf_result=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:7906: result: $cf_result" >&5
+ echo "$as_me:8745: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
if test "$cf_result" = no ; then
# perhaps we can override it - try...
@@ -7911,8 +8750,7 @@ echo "${ECHO_T}$cf_result" >&6
fi
fi
- ;;
- esac
+fi
# with_overwrite=no
NCURSES_CH_T=cchar_t
@@ -7920,13 +8758,13 @@ fi
for ac_func in putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:7923: checking for $ac_func" >&5
+echo "$as_me:8761: 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 7929 "configure"
+#line 8767 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below. */
@@ -7949,7 +8787,7 @@ main ()
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -7957,16 +8795,16 @@ f = $ac_func;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:7960: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8798: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:7963: \$? = $ac_status" >&5
+ echo "$as_me:8801: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:7966: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8804: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:7969: \$? = $ac_status" >&5
+ echo "$as_me:8807: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -7976,7 +8814,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:7979: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:8817: 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
@@ -7986,9 +8824,9 @@ EOF
fi
done
- if test "$ac_cv_func_putwc" != yes ; then
+ if test "x$ac_cv_func_putwc" != xyes ; then
-echo "$as_me:7991: checking for multibyte character support" >&5
+echo "$as_me:8829: checking for multibyte character support" >&5
echo $ECHO_N "checking for multibyte character support... $ECHO_C" >&6
if test "${cf_cv_utf8_lib+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -7996,7 +8834,7 @@ else
cf_save_LIBS="$LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 7999 "configure"
+#line 8837 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8009,16 +8847,16 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8012: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8850: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8015: \$? = $ac_status" >&5
+ echo "$as_me:8853: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8018: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8856: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8021: \$? = $ac_status" >&5
+ echo "$as_me:8859: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_utf8_lib=yes
else
@@ -8030,12 +8868,12 @@ cat conftest.$ac_ext >&5
cf_cv_header_path_utf8=
cf_cv_library_path_utf8=
-echo "${as_me:-configure}:8033: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:8871: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5
cf_save_LIBS="$LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8038 "configure"
+#line 8876 "configure"
#include "confdefs.h"
#include <libutf8.h>
@@ -8048,16 +8886,16 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8051: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8889: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8054: \$? = $ac_status" >&5
+ echo "$as_me:8892: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8057: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8895: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8060: \$? = $ac_status" >&5
+ echo "$as_me:8898: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_find_linkage_utf8=yes
@@ -8071,7 +8909,7 @@ cat conftest.$ac_ext >&5
LIBS="-lutf8 $cf_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 8074 "configure"
+#line 8912 "configure"
#include "confdefs.h"
#include <libutf8.h>
@@ -8084,16 +8922,16 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8087: \"$ac_link\"") >&5
+if { (eval echo "$as_me:8925: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8090: \$? = $ac_status" >&5
+ echo "$as_me:8928: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8093: \"$ac_try\"") >&5
+ { (eval echo "$as_me:8931: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8096: \$? = $ac_status" >&5
+ echo "$as_me:8934: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_find_linkage_utf8=yes
@@ -8110,9 +8948,9 @@ cat conftest.$ac_ext >&5
test -n "$verbose" && echo " find linkage for utf8 library" 1>&6
-echo "${as_me:-configure}:8113: testing find linkage for utf8 library ..." 1>&5
+echo "${as_me:-configure}:8951: testing find linkage for utf8 library ..." 1>&5
-echo "${as_me:-configure}:8115: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:8953: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5
cf_save_CPPFLAGS="$CPPFLAGS"
cf_test_CPPFLAGS="$CPPFLAGS"
@@ -8128,7 +8966,7 @@ if test -n "${CFLAGS}${CPPFLAGS}" ; then
-I*)
cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'`
-test "$cf_header_path" != "NONE" && \
+test "x$cf_header_path" != "xNONE" && \
test -d "$cf_header_path" && \
{
test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path"
@@ -8149,9 +8987,9 @@ fi
cf_search=
-test "/usr" != "$prefix" && \
+test "x/usr" != "x$prefix" && \
test -d "/usr" && \
-(test $prefix = NONE || test "/usr" != "$prefix") && {
+(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
test -n "$verbose" && echo " ... testing for include-directories under /usr"
test -d /usr/include && cf_search="$cf_search /usr/include"
test -d /usr/include/utf8 && cf_search="$cf_search /usr/include/utf8"
@@ -8160,7 +8998,7 @@ test -d "/usr" && \
test -d /usr/utf8/include/utf8 && cf_search="$cf_search /usr/utf8/include/utf8"
}
-test "$prefix" != "NONE" && \
+test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
test -n "$verbose" && echo " ... testing for include-directories under $prefix"
@@ -8171,9 +9009,9 @@ test -d "$prefix" && \
test -d $prefix/utf8/include/utf8 && cf_search="$cf_search $prefix/utf8/include/utf8"
}
-test "/usr/local" != "$prefix" && \
+test "x/usr/local" != "x$prefix" && \
test -d "/usr/local" && \
-(test $prefix = NONE || test "/usr/local" != "$prefix") && {
+(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
test -n "$verbose" && echo " ... testing for include-directories under /usr/local"
test -d /usr/local/include && cf_search="$cf_search /usr/local/include"
test -d /usr/local/include/utf8 && cf_search="$cf_search /usr/local/include/utf8"
@@ -8182,9 +9020,9 @@ test -d "/usr/local" && \
test -d /usr/local/utf8/include/utf8 && cf_search="$cf_search /usr/local/utf8/include/utf8"
}
-test "/opt" != "$prefix" && \
+test "x/opt" != "x$prefix" && \
test -d "/opt" && \
-(test $prefix = NONE || test "/opt" != "$prefix") && {
+(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
test -n "$verbose" && echo " ... testing for include-directories under /opt"
test -d /opt/include && cf_search="$cf_search /opt/include"
test -d /opt/include/utf8 && cf_search="$cf_search /opt/include/utf8"
@@ -8193,9 +9031,9 @@ test -d "/opt" && \
test -d /opt/utf8/include/utf8 && cf_search="$cf_search /opt/utf8/include/utf8"
}
-test "$HOME" != "$prefix" && \
+test "x$HOME" != "x$prefix" && \
test -d "$HOME" && \
-(test $prefix = NONE || test "$HOME" != "$prefix") && {
+(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
test -n "$verbose" && echo " ... testing for include-directories under $HOME"
test -d $HOME/include && cf_search="$cf_search $HOME/include"
test -d $HOME/include/utf8 && cf_search="$cf_search $HOME/include/utf8"
@@ -8225,11 +9063,11 @@ cf_search="$cf_search $cf_header_path_list"
if test -d $cf_cv_header_path_utf8 ; then
test -n "$verbose" && echo " ... testing $cf_cv_header_path_utf8" 1>&6
-echo "${as_me:-configure}:8228: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:9066: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5
CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_utf8"
cat >conftest.$ac_ext <<_ACEOF
-#line 8232 "configure"
+#line 9070 "configure"
#include "confdefs.h"
#include <libutf8.h>
@@ -8242,21 +9080,21 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8245: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9083: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8248: \$? = $ac_status" >&5
+ echo "$as_me:9086: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8251: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9089: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8254: \$? = $ac_status" >&5
+ echo "$as_me:9092: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
test -n "$verbose" && echo " ... found utf8 headers in $cf_cv_header_path_utf8" 1>&6
-echo "${as_me:-configure}:8259: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:9097: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5
cf_cv_find_linkage_utf8=maybe
cf_test_CPPFLAGS="$CPPFLAGS"
@@ -8274,7 +9112,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_cv_find_linkage_utf8" = maybe ; then
-echo "${as_me:-configure}:8277: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
+echo "${as_me:-configure}:9115: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5
cf_save_LIBS="$LIBS"
cf_save_LDFLAGS="$LDFLAGS"
@@ -8290,7 +9128,7 @@ if test -n "${LDFLAGS}${LIBS}" ; then
-L*)
cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'`
-test "$cf_library_path" != "NONE" && \
+test "x$cf_library_path" != "xNONE" && \
test -d "$cf_library_path" && \
{
test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path"
@@ -8309,9 +9147,9 @@ fi
cf_search=
-test "/usr" != "$prefix" && \
+test "x/usr" != "x$prefix" && \
test -d "/usr" && \
-(test $prefix = NONE || test "/usr" != "$prefix") && {
+(test -z "$prefix" || test x$prefix = xNONE || test "x/usr" != "x$prefix") && {
test -n "$verbose" && echo " ... testing for lib-directories under /usr"
test -d /usr/lib && cf_search="$cf_search /usr/lib"
test -d /usr/lib/utf8 && cf_search="$cf_search /usr/lib/utf8"
@@ -8320,7 +9158,7 @@ test -d "/usr" && \
test -d /usr/utf8/lib/utf8 && cf_search="$cf_search /usr/utf8/lib/utf8"
}
-test "$prefix" != "NONE" && \
+test "x$prefix" != "xNONE" && \
test -d "$prefix" && \
{
test -n "$verbose" && echo " ... testing for lib-directories under $prefix"
@@ -8331,9 +9169,9 @@ test -d "$prefix" && \
test -d $prefix/utf8/lib/utf8 && cf_search="$cf_search $prefix/utf8/lib/utf8"
}
-test "/usr/local" != "$prefix" && \
+test "x/usr/local" != "x$prefix" && \
test -d "/usr/local" && \
-(test $prefix = NONE || test "/usr/local" != "$prefix") && {
+(test -z "$prefix" || test x$prefix = xNONE || test "x/usr/local" != "x$prefix") && {
test -n "$verbose" && echo " ... testing for lib-directories under /usr/local"
test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib"
test -d /usr/local/lib/utf8 && cf_search="$cf_search /usr/local/lib/utf8"
@@ -8342,9 +9180,9 @@ test -d "/usr/local" && \
test -d /usr/local/utf8/lib/utf8 && cf_search="$cf_search /usr/local/utf8/lib/utf8"
}
-test "/opt" != "$prefix" && \
+test "x/opt" != "x$prefix" && \
test -d "/opt" && \
-(test $prefix = NONE || test "/opt" != "$prefix") && {
+(test -z "$prefix" || test x$prefix = xNONE || test "x/opt" != "x$prefix") && {
test -n "$verbose" && echo " ... testing for lib-directories under /opt"
test -d /opt/lib && cf_search="$cf_search /opt/lib"
test -d /opt/lib/utf8 && cf_search="$cf_search /opt/lib/utf8"
@@ -8353,9 +9191,9 @@ test -d "/opt" && \
test -d /opt/utf8/lib/utf8 && cf_search="$cf_search /opt/utf8/lib/utf8"
}
-test "$HOME" != "$prefix" && \
+test "x$HOME" != "x$prefix" && \
test -d "$HOME" && \
-(test $prefix = NONE || test "$HOME" != "$prefix") && {
+(test -z "$prefix" || test x$prefix = xNONE || test "x$HOME" != "x$prefix") && {
test -n "$verbose" && echo " ... testing for lib-directories under $HOME"
test -d $HOME/lib && cf_search="$cf_search $HOME/lib"
test -d $HOME/lib/utf8 && cf_search="$cf_search $HOME/lib/utf8"
@@ -8371,13 +9209,13 @@ cf_search="$cf_library_path_list $cf_search"
if test -d $cf_cv_library_path_utf8 ; then
test -n "$verbose" && echo " ... testing $cf_cv_library_path_utf8" 1>&6
-echo "${as_me:-configure}:8374: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:9212: testing ... testing $cf_cv_library_path_utf8 ..." 1>&5
CPPFLAGS="$cf_test_CPPFLAGS"
LIBS="-lutf8 $cf_save_LIBS"
LDFLAGS="$cf_save_LDFLAGS -L$cf_cv_library_path_utf8"
cat >conftest.$ac_ext <<_ACEOF
-#line 8380 "configure"
+#line 9218 "configure"
#include "confdefs.h"
#include <libutf8.h>
@@ -8390,21 +9228,21 @@ putwc(0,0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:8393: \"$ac_link\"") >&5
+if { (eval echo "$as_me:9231: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:8396: \$? = $ac_status" >&5
+ echo "$as_me:9234: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:8399: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9237: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8402: \$? = $ac_status" >&5
+ echo "$as_me:9240: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
test -n "$verbose" && echo " ... found utf8 library in $cf_cv_library_path_utf8" 1>&6
-echo "${as_me:-configure}:8407: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
+echo "${as_me:-configure}:9245: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5
cf_cv_find_linkage_utf8=yes
cf_cv_library_file_utf8="-lutf8"
@@ -8446,13 +9284,14 @@ fi
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:8449: result: $cf_cv_utf8_lib" >&5
+echo "$as_me:9287: result: $cf_cv_utf8_lib" >&5
echo "${ECHO_T}$cf_cv_utf8_lib" >&6
# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between
# ncurses/ncursesw:
if test "$cf_cv_utf8_lib" = "add-on" ; then
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define HAVE_LIBUTF8_H 1
EOF
@@ -8480,7 +9319,7 @@ if test -n "$cf_cv_header_path_utf8" ; then
cf_save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
cat >conftest.$ac_ext <<_ACEOF
-#line 8483 "configure"
+#line 9322 "configure"
#include "confdefs.h"
#include <stdio.h>
int
@@ -8492,16 +9331,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8495: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9334: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8498: \$? = $ac_status" >&5
+ echo "$as_me:9337: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8501: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9340: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8504: \$? = $ac_status" >&5
+ echo "$as_me:9343: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -8518,7 +9357,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:8521: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:9360: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -8552,7 +9391,7 @@ if test -n "$cf_cv_library_path_utf8" ; then
if test "$cf_have_libdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
-echo "${as_me:-configure}:8555: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:9394: testing adding $cf_add_libdir to library-path ..." 1>&5
LDFLAGS="-L$cf_add_libdir $LDFLAGS"
fi
@@ -8569,14 +9408,14 @@ fi
fi
# This is needed on Tru64 5.0 to declare mbstate_t
-echo "$as_me:8572: checking if we must include wchar.h to declare mbstate_t" >&5
+echo "$as_me:9411: 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 8579 "configure"
+#line 9418 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8594,23 +9433,23 @@ mbstate_t state
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8597: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9436: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8600: \$? = $ac_status" >&5
+ echo "$as_me:9439: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8603: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9442: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8606: \$? = $ac_status" >&5
+ echo "$as_me:9445: \$? = $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 8613 "configure"
+#line 9452 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8629,16 +9468,16 @@ mbstate_t value
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8632: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9471: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8635: \$? = $ac_status" >&5
+ echo "$as_me:9474: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8638: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9477: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8641: \$? = $ac_status" >&5
+ echo "$as_me:9480: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_mbstate_t=yes
else
@@ -8650,11 +9489,12 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8653: result: $cf_cv_mbstate_t" >&5
+echo "$as_me:9492: 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
+
+cat >>confdefs.h <<\EOF
#define NEED_WCHAR_H 1
EOF
@@ -8667,14 +9507,14 @@ if test "$cf_cv_mbstate_t" = unknown ; then
fi
# This is needed on Tru64 5.0 to declare wchar_t
-echo "$as_me:8670: checking if we must include wchar.h to declare wchar_t" >&5
+echo "$as_me:9510: 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 8677 "configure"
+#line 9517 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8692,23 +9532,23 @@ wchar_t state
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8695: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9535: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8698: \$? = $ac_status" >&5
+ echo "$as_me:9538: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8701: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9541: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8704: \$? = $ac_status" >&5
+ echo "$as_me:9544: \$? = $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 8711 "configure"
+#line 9551 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8727,16 +9567,16 @@ wchar_t value
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8730: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9570: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8733: \$? = $ac_status" >&5
+ echo "$as_me:9573: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8736: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9576: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8739: \$? = $ac_status" >&5
+ echo "$as_me:9579: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wchar_t=yes
else
@@ -8748,11 +9588,12 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8751: result: $cf_cv_wchar_t" >&5
+echo "$as_me:9591: 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
+
+cat >>confdefs.h <<\EOF
#define NEED_WCHAR_H 1
EOF
@@ -8770,14 +9611,14 @@ if test "$cf_cv_wchar_t" != unknown ; then
fi
# This is needed on Tru64 5.0 to declare wint_t
-echo "$as_me:8773: checking if we must include wchar.h to declare wint_t" >&5
+echo "$as_me:9614: 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 8780 "configure"
+#line 9621 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8795,23 +9636,23 @@ wint_t state
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8798: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9639: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8801: \$? = $ac_status" >&5
+ echo "$as_me:9642: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8804: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9645: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8807: \$? = $ac_status" >&5
+ echo "$as_me:9648: \$? = $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 8814 "configure"
+#line 9655 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -8830,16 +9671,16 @@ wint_t value
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8833: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9674: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8836: \$? = $ac_status" >&5
+ echo "$as_me:9677: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8839: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9680: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8842: \$? = $ac_status" >&5
+ echo "$as_me:9683: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_wint_t=yes
else
@@ -8851,11 +9692,12 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:8854: result: $cf_cv_wint_t" >&5
+echo "$as_me:9695: 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
+
+cat >>confdefs.h <<\EOF
#define NEED_WCHAR_H 1
EOF
@@ -8873,7 +9715,8 @@ if test "$cf_cv_wint_t" != unknown ; then
fi
if test "$NCURSES_MBSTATE_T" != 0; then
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define NEED_MBSTATE_T_DEF 1
EOF
@@ -8890,7 +9733,7 @@ case $cf_cv_abi_version in
;;
esac
-echo "$as_me:8893: checking whether to enable _LP64 definition in curses.h" >&5
+echo "$as_me:9736: 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.
@@ -8900,10 +9743,10 @@ if test "${enable_lp64+set}" = set; then
else
with_lp64=$default_with_lp64
fi;
-echo "$as_me:8903: result: $with_lp64" >&5
+echo "$as_me:9746: result: $with_lp64" >&5
echo "${ECHO_T}$with_lp64" >&6
-if test "$with_lp64" = yes ; then
+if test "x$with_lp64" = xyes ; then
cf_cv_enable_lp64=1
else
cf_cv_enable_lp64=0
@@ -8916,7 +9759,7 @@ if test "${enable_largefile+set}" = set; then
fi;
if test "$enable_largefile" != no; then
- echo "$as_me:8919: checking for special C compiler options needed for large files" >&5
+ echo "$as_me:9762: 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
@@ -8928,7 +9771,7 @@ else
# IRIX 6.2 and later do not support large files by default,
# so use the C compiler's -n32 option if that helps.
cat >conftest.$ac_ext <<_ACEOF
-#line 8931 "configure"
+#line 9774 "configure"
#include "confdefs.h"
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
@@ -8948,16 +9791,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8951: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9794: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8954: \$? = $ac_status" >&5
+ echo "$as_me:9797: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8957: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9800: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8960: \$? = $ac_status" >&5
+ echo "$as_me:9803: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -8967,16 +9810,16 @@ fi
rm -f conftest.$ac_objext
CC="$CC -n32"
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:8970: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9813: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:8973: \$? = $ac_status" >&5
+ echo "$as_me:9816: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:8976: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9819: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:8979: \$? = $ac_status" >&5
+ echo "$as_me:9822: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_largefile_CC=' -n32'; break
else
@@ -8990,13 +9833,13 @@ rm -f conftest.$ac_objext
rm -f conftest.$ac_ext
fi
fi
-echo "$as_me:8993: result: $ac_cv_sys_largefile_CC" >&5
+echo "$as_me:9836: 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:8999: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+ echo "$as_me:9842: 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
@@ -9004,7 +9847,7 @@ else
while :; do
ac_cv_sys_file_offset_bits=no
cat >conftest.$ac_ext <<_ACEOF
-#line 9007 "configure"
+#line 9850 "configure"
#include "confdefs.h"
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
@@ -9024,16 +9867,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9027: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9870: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9030: \$? = $ac_status" >&5
+ echo "$as_me:9873: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9033: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9876: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9036: \$? = $ac_status" >&5
+ echo "$as_me:9879: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9042,7 +9885,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 9045 "configure"
+#line 9888 "configure"
#include "confdefs.h"
#define _FILE_OFFSET_BITS 64
#include <sys/types.h>
@@ -9063,16 +9906,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9066: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9909: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9069: \$? = $ac_status" >&5
+ echo "$as_me:9912: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9072: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9915: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9075: \$? = $ac_status" >&5
+ echo "$as_me:9918: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_file_offset_bits=64; break
else
@@ -9083,7 +9926,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
break
done
fi
-echo "$as_me:9086: result: $ac_cv_sys_file_offset_bits" >&5
+echo "$as_me:9929: 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
@@ -9093,7 +9936,7 @@ EOF
fi
rm -rf conftest*
- echo "$as_me:9096: checking for _LARGE_FILES value needed for large files" >&5
+ echo "$as_me:9939: 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
@@ -9101,7 +9944,7 @@ else
while :; do
ac_cv_sys_large_files=no
cat >conftest.$ac_ext <<_ACEOF
-#line 9104 "configure"
+#line 9947 "configure"
#include "confdefs.h"
#include <sys/types.h>
/* Check that off_t can represent 2**63 - 1 correctly.
@@ -9121,16 +9964,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9124: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:9967: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9127: \$? = $ac_status" >&5
+ echo "$as_me:9970: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9130: \"$ac_try\"") >&5
+ { (eval echo "$as_me:9973: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9133: \$? = $ac_status" >&5
+ echo "$as_me:9976: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9139,7 +9982,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 9142 "configure"
+#line 9985 "configure"
#include "confdefs.h"
#define _LARGE_FILES 1
#include <sys/types.h>
@@ -9160,16 +10003,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9163: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10006: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9166: \$? = $ac_status" >&5
+ echo "$as_me:10009: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9169: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10012: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9172: \$? = $ac_status" >&5
+ echo "$as_me:10015: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_large_files=1; break
else
@@ -9180,7 +10023,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
break
done
fi
-echo "$as_me:9183: result: $ac_cv_sys_large_files" >&5
+echo "$as_me:10026: 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
@@ -9193,7 +10036,7 @@ rm -rf conftest*
fi
if test "$enable_largefile" != no ; then
- echo "$as_me:9196: checking for _LARGEFILE_SOURCE value needed for large files" >&5
+ echo "$as_me:10039: 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
@@ -9201,7 +10044,7 @@ else
while :; do
ac_cv_sys_largefile_source=no
cat >conftest.$ac_ext <<_ACEOF
-#line 9204 "configure"
+#line 10047 "configure"
#include "confdefs.h"
#include <stdio.h>
int
@@ -9213,16 +10056,16 @@ return !fseeko;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9216: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10059: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9219: \$? = $ac_status" >&5
+ echo "$as_me:10062: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9222: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10065: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9225: \$? = $ac_status" >&5
+ echo "$as_me:10068: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
break
else
@@ -9231,7 +10074,7 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
cat >conftest.$ac_ext <<_ACEOF
-#line 9234 "configure"
+#line 10077 "configure"
#include "confdefs.h"
#define _LARGEFILE_SOURCE 1
#include <stdio.h>
@@ -9244,16 +10087,16 @@ return !fseeko;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9247: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10090: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9250: \$? = $ac_status" >&5
+ echo "$as_me:10093: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9253: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10096: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9256: \$? = $ac_status" >&5
+ echo "$as_me:10099: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sys_largefile_source=1; break
else
@@ -9264,7 +10107,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
break
done
fi
-echo "$as_me:9267: result: $ac_cv_sys_largefile_source" >&5
+echo "$as_me:10110: 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
@@ -9278,13 +10121,13 @@ rm -rf conftest*
# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug
# in glibc 2.1.3, but that breaks too many other things.
# If you want fseeko and ftello with glibc, upgrade to a fixed glibc.
-echo "$as_me:9281: checking for fseeko" >&5
+echo "$as_me:10124: 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 9287 "configure"
+#line 10130 "configure"
#include "confdefs.h"
#include <stdio.h>
int
@@ -9296,16 +10139,16 @@ return fseeko && fseeko (stdin, 0, 0);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:9299: \"$ac_link\"") >&5
+if { (eval echo "$as_me:10142: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:9302: \$? = $ac_status" >&5
+ echo "$as_me:10145: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:9305: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10148: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9308: \$? = $ac_status" >&5
+ echo "$as_me:10151: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_fseeko=yes
else
@@ -9315,7 +10158,7 @@ ac_cv_func_fseeko=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:9318: result: $ac_cv_func_fseeko" >&5
+echo "$as_me:10161: result: $ac_cv_func_fseeko" >&5
echo "${ECHO_T}$ac_cv_func_fseeko" >&6
if test $ac_cv_func_fseeko = yes; then
@@ -9336,14 +10179,14 @@ fi
test "$ac_cv_sys_largefile_source" != no && CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE "
test "$ac_cv_sys_file_offset_bits" != no && CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits "
- echo "$as_me:9339: checking whether to use struct dirent64" >&5
+ echo "$as_me:10182: 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 9346 "configure"
+#line 10189 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -9364,16 +10207,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:9367: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:10210: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:9370: \$? = $ac_status" >&5
+ echo "$as_me:10213: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:9373: \"$ac_try\"") >&5
+ { (eval echo "$as_me:10216: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:9376: \$? = $ac_status" >&5
+ echo "$as_me:10219: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_struct_dirent64=yes
else
@@ -9384,16 +10227,17 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:9387: result: $cf_cv_struct_dirent64" >&5
+echo "$as_me:10230: result: $cf_cv_struct_dirent64" >&5
echo "${ECHO_T}$cf_cv_struct_dirent64" >&6
- test "$cf_cv_struct_dirent64" = yes && cat >>confdefs.h <<\EOF
+ 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:9396: checking if you want tparm not to use X/Open fixed-parameter list" >&5
+echo "$as_me:10240: 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.
@@ -9403,14 +10247,14 @@ if test "${enable_tparm_varargs+set}" = set; then
else
with_tparm_varargs=yes
fi;
-echo "$as_me:9406: result: $with_tparm_varargs" >&5
+echo "$as_me:10250: 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
+test "x$with_tparm_varargs" = xyes && NCURSES_TPARM_VARARGS=1
### use option --disable-tic-depends to make libtic not explicitly depend on ncurses/ncursesw
if test "$with_ticlib" != no ; then
-echo "$as_me:9413: checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library" >&5
+echo "$as_me:10257: checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library" >&5
echo $ECHO_N "checking if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library... $ECHO_C" >&6
# Check whether --enable-tic-depends or --disable-tic-depends was given.
@@ -9420,14 +10264,14 @@ if test "${enable_tic_depends+set}" = set; then
else
with_tic_depends=yes
fi;
-echo "$as_me:9423: result: $with_tic_depends" >&5
+echo "$as_me:10267: result: $with_tic_depends" >&5
echo "${ECHO_T}$with_tic_depends" >&6
else
with_tic_depends=no
fi
### use option --with-bool to override bool's type
-echo "$as_me:9430: checking for type of bool" >&5
+echo "$as_me:10274: 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.
@@ -9437,10 +10281,10 @@ if test "${with_bool+set}" = set; then
else
NCURSES_BOOL=auto
fi;
-echo "$as_me:9440: result: $NCURSES_BOOL" >&5
+echo "$as_me:10284: result: $NCURSES_BOOL" >&5
echo "${ECHO_T}$NCURSES_BOOL" >&6
-echo "$as_me:9443: checking for alternate terminal capabilities file" >&5
+echo "$as_me:10287: 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.
@@ -9451,11 +10295,11 @@ else
TERMINFO_CAPS=Caps
fi;
test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps
-echo "$as_me:9454: result: $TERMINFO_CAPS" >&5
+echo "$as_me:10298: result: $TERMINFO_CAPS" >&5
echo "${ECHO_T}$TERMINFO_CAPS" >&6
### use option --with-chtype to override chtype's type
-echo "$as_me:9458: checking for type of chtype" >&5
+echo "$as_me:10302: 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.
@@ -9465,11 +10309,11 @@ if test "${with_chtype+set}" = set; then
else
NCURSES_CHTYPE=auto
fi;
-echo "$as_me:9468: result: $NCURSES_CHTYPE" >&5
+echo "$as_me:10312: result: $NCURSES_CHTYPE" >&5
echo "${ECHO_T}$NCURSES_CHTYPE" >&6
### use option --with-ospeed to override ospeed's type
-echo "$as_me:9472: checking for type of ospeed" >&5
+echo "$as_me:10316: 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.
@@ -9479,11 +10323,11 @@ if test "${with_ospeed+set}" = set; then
else
NCURSES_OSPEED=short
fi;
-echo "$as_me:9482: result: $NCURSES_OSPEED" >&5
+echo "$as_me:10326: result: $NCURSES_OSPEED" >&5
echo "${ECHO_T}$NCURSES_OSPEED" >&6
### use option --with-mmask-t to override mmask_t's type
-echo "$as_me:9486: checking for type of mmask_t" >&5
+echo "$as_me:10330: checking for type of mmask_t" >&5
echo $ECHO_N "checking for type of mmask_t... $ECHO_C" >&6
# Check whether --with-mmask-t or --without-mmask-t was given.
@@ -9493,11 +10337,11 @@ if test "${with_mmask_t+set}" = set; then
else
NCURSES_MMASK_T=auto
fi;
-echo "$as_me:9496: result: $NCURSES_MMASK_T" >&5
+echo "$as_me:10340: result: $NCURSES_MMASK_T" >&5
echo "${ECHO_T}$NCURSES_MMASK_T" >&6
### use option --with-ccharw-max to override CCHARW_MAX size
-echo "$as_me:9500: checking for size CCHARW_MAX" >&5
+echo "$as_me:10344: checking for size CCHARW_MAX" >&5
echo $ECHO_N "checking for size CCHARW_MAX... $ECHO_C" >&6
# Check whether --with-ccharw-max or --without-ccharw-max was given.
@@ -9507,11 +10351,25 @@ if test "${with_ccharw_max+set}" = set; then
else
NCURSES_CCHARW_MAX=5
fi;
-echo "$as_me:9510: result: $NCURSES_CCHARW_MAX" >&5
+echo "$as_me:10354: result: $NCURSES_CCHARW_MAX" >&5
echo "${ECHO_T}$NCURSES_CCHARW_MAX" >&6
+### use option --with-tparm-arg to override tparm's argument type
+echo "$as_me:10358: checking for type of tparm args" >&5
+echo $ECHO_N "checking for type of tparm args... $ECHO_C" >&6
+
+# Check whether --with-tparm-arg or --without-tparm-arg was given.
+if test "${with_tparm_arg+set}" = set; then
+ withval="$with_tparm_arg"
+ NCURSES_TPARM_ARG="$withval"
+else
+ NCURSES_TPARM_ARG=long
+fi;
+echo "$as_me:10368: result: $NCURSES_TPARM_ARG" >&5
+echo "${ECHO_T}$NCURSES_TPARM_ARG" >&6
+
### Enable compiling-in rcs id's
-echo "$as_me:9514: checking if RCS identifiers should be compiled-in" >&5
+echo "$as_me:10372: 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.
@@ -9521,15 +10379,16 @@ if test "${with_rcs_ids+set}" = set; then
else
with_rcs_ids=no
fi;
-echo "$as_me:9524: result: $with_rcs_ids" >&5
+echo "$as_me:10382: result: $with_rcs_ids" >&5
echo "${ECHO_T}$with_rcs_ids" >&6
-test "$with_rcs_ids" = yes && cat >>confdefs.h <<\EOF
+test "x$with_rcs_ids" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_RCS_IDS 1
EOF
###############################################################################
-echo "$as_me:9532: checking format of man-pages" >&5
+echo "$as_me:10391: 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.
@@ -9618,14 +10477,14 @@ unknown)
;;
esac
-echo "$as_me:9621: result: $MANPAGE_FORMAT" >&5
+echo "$as_me:10480: result: $MANPAGE_FORMAT" >&5
echo "${ECHO_T}$MANPAGE_FORMAT" >&6
if test -n "$cf_unknown" ; then
- { echo "$as_me:9624: WARNING: Unexpected manpage-format $cf_unknown" >&5
+ { echo "$as_me:10483: WARNING: Unexpected manpage-format $cf_unknown" >&5
echo "$as_me: WARNING: Unexpected manpage-format $cf_unknown" >&2;}
fi
-echo "$as_me:9628: checking for manpage renaming" >&5
+echo "$as_me:10487: 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.
@@ -9653,7 +10512,7 @@ if test "$MANPAGE_RENAMES" != no ; then
if test -f $srcdir/man/$MANPAGE_RENAMES ; then
MANPAGE_RENAMES=`cd $srcdir/man && pwd`/$MANPAGE_RENAMES
elif test ! -f $MANPAGE_RENAMES ; then
- { { echo "$as_me:9656: error: not a filename: $MANPAGE_RENAMES" >&5
+ { { echo "$as_me:10515: error: not a filename: $MANPAGE_RENAMES" >&5
echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -9667,10 +10526,10 @@ echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;}
fi
fi
-echo "$as_me:9670: result: $MANPAGE_RENAMES" >&5
+echo "$as_me:10529: result: $MANPAGE_RENAMES" >&5
echo "${ECHO_T}$MANPAGE_RENAMES" >&6
-echo "$as_me:9673: checking if manpage aliases will be installed" >&5
+echo "$as_me:10532: 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.
@@ -9681,7 +10540,7 @@ else
MANPAGE_ALIASES=yes
fi;
-echo "$as_me:9684: result: $MANPAGE_ALIASES" >&5
+echo "$as_me:10543: result: $MANPAGE_ALIASES" >&5
echo "${ECHO_T}$MANPAGE_ALIASES" >&6
case "x$LN_S" in #(vi
@@ -9695,7 +10554,7 @@ esac
MANPAGE_SYMLINKS=no
if test "$MANPAGE_ALIASES" = yes ; then
-echo "$as_me:9698: checking if manpage symlinks should be used" >&5
+echo "$as_me:10557: 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.
@@ -9708,17 +10567,17 @@ fi;
if test "$$cf_use_symlinks" = no; then
if test "$MANPAGE_SYMLINKS" = yes ; then
- { echo "$as_me:9711: WARNING: cannot make symlinks" >&5
+ { echo "$as_me:10570: WARNING: cannot make symlinks" >&5
echo "$as_me: WARNING: cannot make symlinks" >&2;}
MANPAGE_SYMLINKS=no
fi
fi
-echo "$as_me:9717: result: $MANPAGE_SYMLINKS" >&5
+echo "$as_me:10576: result: $MANPAGE_SYMLINKS" >&5
echo "${ECHO_T}$MANPAGE_SYMLINKS" >&6
fi
-echo "$as_me:9721: checking for manpage tbl" >&5
+echo "$as_me:10580: 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.
@@ -9729,7 +10588,7 @@ else
MANPAGE_TBL=no
fi;
-echo "$as_me:9732: result: $MANPAGE_TBL" >&5
+echo "$as_me:10591: result: $MANPAGE_TBL" >&5
echo "${ECHO_T}$MANPAGE_TBL" >&6
if test "$prefix" = "NONE" ; then
@@ -9776,6 +10635,7 @@ cat >$cf_edit_man <<CF_EOF
# this script is generated by the configure-script CF_MAN_PAGES macro.
prefix="$cf_prefix"
+datarootdir="$datarootdir"
datadir="$datadir"
NCURSES_MAJOR="$NCURSES_MAJOR"
@@ -9836,11 +10696,12 @@ case \$i in #(vi
if test ! -f $cf_man_alias ; then
cat >>$cf_man_alias <<-CF_EOF2
s,@DATADIR@,\$datadir,g
- s,@TERMINFO@,\$TERMINFO,g
- s,@NCURSES_MAJOR@,\$NCURSES_MAJOR,g
- s,@NCURSES_MINOR@,\$NCURSES_MINOR,g
- s,@NCURSES_PATCH@,\$NCURSES_PATCH,g
- s,@NCURSES_OSPEED@,\$NCURSES_OSPEED,g
+ s,@TERMINFO@,\${TERMINFO:="no default value"},g
+ s,@TERMINFO_DIRS@,\${TERMINFO_DIRS:="no default value"},g
+ s,@NCURSES_MAJOR@,\${NCURSES_MAJOR:="no default value"},g
+ s,@NCURSES_MINOR@,\${NCURSES_MINOR:="no default value"},g
+ s,@NCURSES_PATCH@,\${NCURSES_PATCH:="no default value"},g
+ s,@NCURSES_OSPEED@,\${NCURSES_OSPEED:="no default value"},g
CF_EOF
for cf_name in captoinfo clear infocmp infotocap tabs tic toe tput tset
@@ -9869,7 +10730,9 @@ CF_EOF
if test "$MANPAGE_ALIASES" != no ; then
cat >>$cf_edit_man <<CF_EOF
- aliases=\`sed -f \$top_srcdir/man/manlinks.sed \$inalias |sed -f $cf_man_alias | sort -u\`
+ nCurses=ignore.3x
+ test $with_curses_h = yes && nCurses=ncurses.3x
+ aliases=\`sed -f \$top_srcdir/man/manlinks.sed \$inalias |sed -f $cf_man_alias | sort -u; test \$inalias = \$nCurses && echo curses\`
CF_EOF
fi
@@ -9915,6 +10778,13 @@ if test \$cf_tables = yes ; then
fi
CF_EOF
+if test $with_overwrite != yes ; then
+cat >>$cf_edit_man <<CF_EOF
+ sed -e "/\#[ ]*include/s,<curses.h,<ncurses$LIB_SUFFIX/curses.h," < \$TMP >\$TMP.out
+ mv \$TMP.out \$TMP
+CF_EOF
+fi
+
if test $with_curses_h != yes ; then
cat >>$cf_edit_man <<CF_EOF
sed -e "/\#[ ]*include/s,curses.h,ncurses.h," < \$TMP >\$TMP.out
@@ -10051,7 +10921,7 @@ chmod 755 $cf_edit_man
###############################################################################
### Note that some functions (such as const) are normally disabled anyway.
-echo "$as_me:10054: checking if you want to build with function extensions" >&5
+echo "$as_me:10924: 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.
@@ -10061,39 +10931,52 @@ if test "${enable_ext_funcs+set}" = set; then
else
with_ext_funcs=yes
fi;
-echo "$as_me:10064: result: $with_ext_funcs" >&5
+echo "$as_me:10934: result: $with_ext_funcs" >&5
echo "${ECHO_T}$with_ext_funcs" >&6
-if test "$with_ext_funcs" = yes ; then
+if test "x$with_ext_funcs" = xyes ; then
NCURSES_EXT_FUNCS=1
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
+#define HAVE_ASSUME_DEFAULT_COLORS 1
+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
+cat >>confdefs.h <<\EOF
#define HAVE_TERM_ENTRY_H 1
EOF
- cat >>confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define HAVE_USE_DEFAULT_COLORS 1
EOF
- cat >>confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
+#define HAVE_USE_SCREEN 1
+EOF
+
+cat >>confdefs.h <<\EOF
+#define HAVE_USE_WINDOW 1
+EOF
+
+cat >>confdefs.h <<\EOF
#define HAVE_WRESIZE 1
EOF
- cat >>confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define NCURSES_EXT_FUNCS 1
EOF
@@ -10103,7 +10986,7 @@ else
GENERATED_EXT_FUNCS=
fi
-echo "$as_me:10106: checking if you want to build with experimental SCREEN extensions" >&5
+echo "$as_me:10989: checking if you want to build with experimental SCREEN extensions" >&5
echo $ECHO_N "checking if you want to build with experimental SCREEN extensions... $ECHO_C" >&6
# Check whether --enable-sp-funcs or --disable-sp-funcs was given.
@@ -10113,11 +10996,12 @@ if test "${enable_sp_funcs+set}" = set; then
else
with_sp_funcs=no
fi;
-echo "$as_me:10116: result: $with_sp_funcs" >&5
+echo "$as_me:10999: result: $with_sp_funcs" >&5
echo "${ECHO_T}$with_sp_funcs" >&6
-if test "$with_sp_funcs" = yes ; then
+if test "x$with_sp_funcs" = xyes ; then
NCURSES_SP_FUNCS=1
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define NCURSES_SP_FUNCS 1
EOF
@@ -10127,7 +11011,7 @@ else
GENERATED_SP_FUNCS=
fi
-echo "$as_me:10130: checking if you want to build with experimental terminal-driver" >&5
+echo "$as_me:11014: checking if you want to build with experimental terminal-driver" >&5
echo $ECHO_N "checking if you want to build with experimental terminal-driver... $ECHO_C" >&6
# Check whether --enable-term-driver or --disable-term-driver was given.
@@ -10137,22 +11021,23 @@ if test "${enable_term_driver+set}" = set; then
else
with_term_driver=no
fi;
-echo "$as_me:10140: result: $with_term_driver" >&5
+echo "$as_me:11024: result: $with_term_driver" >&5
echo "${ECHO_T}$with_term_driver" >&6
-if test "$with_term_driver" = yes ; then
- cat >>confdefs.h <<\EOF
+if test "x$with_term_driver" = xyes ; then
+
+cat >>confdefs.h <<\EOF
#define USE_TERM_DRIVER 1
EOF
- if test "$with_sp_funcs" != yes ; then
- { { echo "$as_me:10148: error: The term-driver option relies upon sp-funcs" >&5
+ if test "x$with_sp_funcs" != xyes ; then
+ { { echo "$as_me:11033: error: The term-driver option relies upon sp-funcs" >&5
echo "$as_me: error: The term-driver option relies upon sp-funcs" >&2;}
{ (exit 1); exit 1; }; }
fi
fi
### use option --enable-const to turn on use of const beyond that in XSI.
-echo "$as_me:10155: checking for extended use of const keyword" >&5
+echo "$as_me:11040: 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.
@@ -10162,15 +11047,15 @@ if test "${enable_const+set}" = set; then
else
with_ext_const=no
fi;
-echo "$as_me:10165: result: $with_ext_const" >&5
+echo "$as_me:11050: result: $with_ext_const" >&5
echo "${ECHO_T}$with_ext_const" >&6
NCURSES_CONST='/*nothing*/'
-if test "$with_ext_const" = yes ; then
+if test "x$with_ext_const" = xyes ; then
NCURSES_CONST=const
fi
### use option --enable-ext-colors to turn on use of colors beyond 16.
-echo "$as_me:10173: checking if you want to use extended colors" >&5
+echo "$as_me:11058: checking if you want to use extended colors" >&5
echo $ECHO_N "checking if you want to use extended colors... $ECHO_C" >&6
# Check whether --enable-ext-colors or --disable-ext-colors was given.
@@ -10180,12 +11065,12 @@ if test "${enable_ext_colors+set}" = set; then
else
with_ext_colors=no
fi;
-echo "$as_me:10183: result: $with_ext_colors" >&5
+echo "$as_me:11068: 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:10188: error: This option applies only to wide-character library" >&5
+if test "x$with_ext_colors" = xyes ; then
+ if test "x$with_widec" != xyes ; then
+ { { echo "$as_me:11073: error: This option applies only to wide-character library" >&5
echo "$as_me: error: This option applies only to wide-character library" >&2;}
{ (exit 1); exit 1; }; }
else
@@ -10196,7 +11081,7 @@ if test "${with_abi_version+set}" != set; then
5.*)
cf_cv_rel_version=6.0
cf_cv_abi_version=6
- { echo "$as_me:10199: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5
+ { echo "$as_me:11084: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5
echo "$as_me: WARNING: Overriding ABI version to $cf_cv_abi_version" >&2;}
;;
esac
@@ -10204,14 +11089,15 @@ fi
fi
NCURSES_EXT_COLORS=1
- cat >>confdefs.h <<\EOF
+
+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:10214: checking if you want to use extended mouse encoding" >&5
+echo "$as_me:11100: checking if you want to use extended mouse encoding" >&5
echo $ECHO_N "checking if you want to use extended mouse encoding... $ECHO_C" >&6
# Check whether --enable-ext-mouse or --disable-ext-mouse was given.
@@ -10221,10 +11107,10 @@ if test "${enable_ext_mouse+set}" = set; then
else
with_ext_mouse=no
fi;
-echo "$as_me:10224: result: $with_ext_mouse" >&5
+echo "$as_me:11110: result: $with_ext_mouse" >&5
echo "${ECHO_T}$with_ext_mouse" >&6
NCURSES_MOUSE_VERSION=1
-if test "$with_ext_mouse" = yes ; then
+if test "x$with_ext_mouse" = xyes ; then
NCURSES_MOUSE_VERSION=2
if test "${with_abi_version+set}" != set; then
@@ -10232,7 +11118,7 @@ if test "${with_abi_version+set}" != set; then
5.*)
cf_cv_rel_version=6.0
cf_cv_abi_version=6
- { echo "$as_me:10235: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5
+ { echo "$as_me:11121: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5
echo "$as_me: WARNING: Overriding ABI version to $cf_cv_abi_version" >&2;}
;;
esac
@@ -10240,7 +11126,7 @@ fi
fi
-echo "$as_me:10243: checking if you want \$NCURSES_NO_PADDING code" >&5
+echo "$as_me:11129: 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.
@@ -10250,19 +11136,20 @@ if test "${enable_no_padding+set}" = set; then
else
with_no_padding=$with_ext_funcs
fi;
-echo "$as_me:10253: result: $with_no_padding" >&5
+echo "$as_me:11139: result: $with_no_padding" >&5
echo "${ECHO_T}$with_no_padding" >&6
-test "$with_no_padding" = yes && cat >>confdefs.h <<\EOF
+test "x$with_no_padding" = xyes &&
+cat >>confdefs.h <<\EOF
#define NCURSES_NO_PADDING 1
EOF
-echo "$as_me:10259: checking for ANSI C header files" >&5
+echo "$as_me:11146: checking for ANSI C header files" >&5
echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
if test "${ac_cv_header_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10265 "configure"
+#line 11152 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -10270,13 +11157,13 @@ else
#include <float.h>
_ACEOF
-if { (eval echo "$as_me:10273: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:11160: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:10279: \$? = $ac_status" >&5
+ echo "$as_me:11166: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -10298,7 +11185,7 @@ rm -f conftest.err conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line 10301 "configure"
+#line 11188 "configure"
#include "confdefs.h"
#include <string.h>
@@ -10316,7 +11203,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line 10319 "configure"
+#line 11206 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -10337,7 +11224,7 @@ if test $ac_cv_header_stdc = yes; then
:
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10340 "configure"
+#line 11227 "configure"
#include "confdefs.h"
#include <ctype.h>
#if ((' ' & 0x0FF) == 0x020)
@@ -10363,15 +11250,15 @@ main ()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:10366: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11253: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10369: \$? = $ac_status" >&5
+ echo "$as_me:11256: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:10371: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11258: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10374: \$? = $ac_status" >&5
+ echo "$as_me:11261: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -10384,7 +11271,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
-echo "$as_me:10387: result: $ac_cv_header_stdc" >&5
+echo "$as_me:11274: result: $ac_cv_header_stdc" >&5
echo "${ECHO_T}$ac_cv_header_stdc" >&6
if test $ac_cv_header_stdc = yes; then
@@ -10400,28 +11287,28 @@ 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:10403: checking for $ac_header" >&5
+echo "$as_me:11290: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10409 "configure"
+#line 11296 "configure"
#include "confdefs.h"
$ac_includes_default
#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10415: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11302: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10418: \$? = $ac_status" >&5
+ echo "$as_me:11305: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10421: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11308: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10424: \$? = $ac_status" >&5
+ echo "$as_me:11311: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_Header=yes"
else
@@ -10431,7 +11318,7 @@ eval "$as_ac_Header=no"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:10434: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:11321: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -10441,13 +11328,13 @@ EOF
fi
done
-echo "$as_me:10444: checking for signed char" >&5
+echo "$as_me:11331: checking for signed char" >&5
echo $ECHO_N "checking for signed char... $ECHO_C" >&6
if test "${ac_cv_type_signed_char+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10450 "configure"
+#line 11337 "configure"
#include "confdefs.h"
$ac_includes_default
int
@@ -10462,16 +11349,16 @@ if (sizeof (signed char))
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10465: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11352: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10468: \$? = $ac_status" >&5
+ echo "$as_me:11355: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10471: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11358: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10474: \$? = $ac_status" >&5
+ echo "$as_me:11361: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_type_signed_char=yes
else
@@ -10481,10 +11368,10 @@ ac_cv_type_signed_char=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:10484: result: $ac_cv_type_signed_char" >&5
+echo "$as_me:11371: result: $ac_cv_type_signed_char" >&5
echo "${ECHO_T}$ac_cv_type_signed_char" >&6
-echo "$as_me:10487: checking size of signed char" >&5
+echo "$as_me:11374: checking size of signed char" >&5
echo $ECHO_N "checking size of signed char... $ECHO_C" >&6
if test "${ac_cv_sizeof_signed_char+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -10493,7 +11380,7 @@ else
if test "$cross_compiling" = yes; then
# Depending upon the size, compute the lo and hi bounds.
cat >conftest.$ac_ext <<_ACEOF
-#line 10496 "configure"
+#line 11383 "configure"
#include "confdefs.h"
$ac_includes_default
int
@@ -10505,21 +11392,21 @@ int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)]
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10508: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11395: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10511: \$? = $ac_status" >&5
+ echo "$as_me:11398: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10514: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11401: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10517: \$? = $ac_status" >&5
+ echo "$as_me:11404: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_lo=0 ac_mid=0
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line 10522 "configure"
+#line 11409 "configure"
#include "confdefs.h"
$ac_includes_default
int
@@ -10531,16 +11418,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10534: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11421: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10537: \$? = $ac_status" >&5
+ echo "$as_me:11424: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10540: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11427: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10543: \$? = $ac_status" >&5
+ echo "$as_me:11430: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_hi=$ac_mid; break
else
@@ -10556,7 +11443,7 @@ cat conftest.$ac_ext >&5
ac_hi=-1 ac_mid=-1
while :; do
cat >conftest.$ac_ext <<_ACEOF
-#line 10559 "configure"
+#line 11446 "configure"
#include "confdefs.h"
$ac_includes_default
int
@@ -10568,16 +11455,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)]
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10571: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11458: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10574: \$? = $ac_status" >&5
+ echo "$as_me:11461: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10577: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11464: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10580: \$? = $ac_status" >&5
+ echo "$as_me:11467: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_lo=$ac_mid; break
else
@@ -10593,7 +11480,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
while test "x$ac_lo" != "x$ac_hi"; do
ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
cat >conftest.$ac_ext <<_ACEOF
-#line 10596 "configure"
+#line 11483 "configure"
#include "confdefs.h"
$ac_includes_default
int
@@ -10605,16 +11492,16 @@ int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)]
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:10608: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:11495: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:10611: \$? = $ac_status" >&5
+ echo "$as_me:11498: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:10614: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11501: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10617: \$? = $ac_status" >&5
+ echo "$as_me:11504: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_hi=$ac_mid
else
@@ -10627,12 +11514,12 @@ done
ac_cv_sizeof_signed_char=$ac_lo
else
if test "$cross_compiling" = yes; then
- { { echo "$as_me:10630: error: cannot run test program while cross compiling" >&5
+ { { echo "$as_me:11517: error: cannot run test program while cross compiling" >&5
echo "$as_me: error: cannot run test program while cross compiling" >&2;}
{ (exit 1); exit 1; }; }
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10635 "configure"
+#line 11522 "configure"
#include "confdefs.h"
$ac_includes_default
int
@@ -10648,15 +11535,15 @@ fclose (f);
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:10651: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11538: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10654: \$? = $ac_status" >&5
+ echo "$as_me:11541: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:10656: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11543: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10659: \$? = $ac_status" >&5
+ echo "$as_me:11546: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_sizeof_signed_char=`cat conftest.val`
else
@@ -10672,7 +11559,7 @@ else
ac_cv_sizeof_signed_char=0
fi
fi
-echo "$as_me:10675: result: $ac_cv_sizeof_signed_char" >&5
+echo "$as_me:11562: result: $ac_cv_sizeof_signed_char" >&5
echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6
cat >>confdefs.h <<EOF
#define SIZEOF_SIGNED_CHAR $ac_cv_sizeof_signed_char
@@ -10683,7 +11570,7 @@ if test "$ac_cv_sizeof_signed_char" = 1 ; then
else
NCURSES_SBOOL="char"
fi
-echo "$as_me:10686: checking if you want to use signed Boolean array in term.h" >&5
+echo "$as_me:11573: checking if you want to use signed Boolean array in term.h" >&5
echo $ECHO_N "checking if you want to use signed Boolean array in term.h... $ECHO_C" >&6
# Check whether --enable-signed-char or --disable-signed-char was given.
@@ -10693,12 +11580,12 @@ if test "${enable_signed_char+set}" = set; then
else
with_signed_char=no
fi;
-echo "$as_me:10696: result: $with_signed_char" >&5
+echo "$as_me:11583: result: $with_signed_char" >&5
echo "${ECHO_T}$with_signed_char" >&6
-test "$with_signed_char" != yes && NCURSES_SBOOL="char"
+test "x$with_signed_char" != xyes && NCURSES_SBOOL="char"
### use option --enable-sigwinch to turn on use of SIGWINCH logic
-echo "$as_me:10701: checking if you want SIGWINCH handler" >&5
+echo "$as_me:11588: 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.
@@ -10708,14 +11595,15 @@ if test "${enable_sigwinch+set}" = set; then
else
with_sigwinch=$with_ext_funcs
fi;
-echo "$as_me:10711: result: $with_sigwinch" >&5
+echo "$as_me:11598: result: $with_sigwinch" >&5
echo "${ECHO_T}$with_sigwinch" >&6
-test "$with_sigwinch" = yes && cat >>confdefs.h <<\EOF
+test "x$with_sigwinch" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_SIGWINCH 1
EOF
### use option --enable-tcap-names to allow user to define new capabilities
-echo "$as_me:10718: checking if you want user-definable terminal capabilities like termcap" >&5
+echo "$as_me:11606: 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.
@@ -10725,15 +11613,15 @@ if test "${enable_tcap_names+set}" = set; then
else
with_tcap_names=$with_ext_funcs
fi;
-echo "$as_me:10728: result: $with_tcap_names" >&5
+echo "$as_me:11616: result: $with_tcap_names" >&5
echo "${ECHO_T}$with_tcap_names" >&6
NCURSES_XNAMES=0
-test "$with_tcap_names" = yes && NCURSES_XNAMES=1
+test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1
###############################################################################
# These options are relatively safe to experiment with.
-echo "$as_me:10736: checking if you want all development code" >&5
+echo "$as_me:11624: checking if you want all development code" >&5
echo $ECHO_N "checking if you want all development code... $ECHO_C" >&6
# Check whether --with-develop or --without-develop was given.
@@ -10743,11 +11631,11 @@ if test "${with_develop+set}" = set; then
else
with_develop=no
fi;
-echo "$as_me:10746: result: $with_develop" >&5
+echo "$as_me:11634: result: $with_develop" >&5
echo "${ECHO_T}$with_develop" >&6
### use option --enable-hard-tabs to turn on use of hard-tabs optimize
-echo "$as_me:10750: checking if you want hard-tabs code" >&5
+echo "$as_me:11638: checking if you want hard-tabs code" >&5
echo $ECHO_N "checking if you want hard-tabs code... $ECHO_C" >&6
# Check whether --enable-hard-tabs or --disable-hard-tabs was given.
@@ -10757,14 +11645,15 @@ if test "${enable_hard_tabs+set}" = set; then
else
enable_hard_tabs=$with_develop
fi;
-echo "$as_me:10760: result: $enable_hard_tabs" >&5
+echo "$as_me:11648: result: $enable_hard_tabs" >&5
echo "${ECHO_T}$enable_hard_tabs" >&6
-test "$enable_hard_tabs" = yes && cat >>confdefs.h <<\EOF
+test "x$enable_hard_tabs" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_HARD_TABS 1
EOF
### use option --enable-xmc-glitch to turn on use of magic-cookie optimize
-echo "$as_me:10767: checking if you want limited support for xmc" >&5
+echo "$as_me:11656: checking if you want limited support for xmc" >&5
echo $ECHO_N "checking if you want limited support for xmc... $ECHO_C" >&6
# Check whether --enable-xmc-glitch or --disable-xmc-glitch was given.
@@ -10774,16 +11663,17 @@ if test "${enable_xmc_glitch+set}" = set; then
else
enable_xmc_glitch=$with_develop
fi;
-echo "$as_me:10777: result: $enable_xmc_glitch" >&5
+echo "$as_me:11666: result: $enable_xmc_glitch" >&5
echo "${ECHO_T}$enable_xmc_glitch" >&6
-test "$enable_xmc_glitch" = yes && cat >>confdefs.h <<\EOF
+test "x$enable_xmc_glitch" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_XMC_SUPPORT 1
EOF
###############################################################################
# These are just experimental, probably should not be in a package:
-echo "$as_me:10786: checking if you do not want to assume colors are white-on-black" >&5
+echo "$as_me:11676: checking if you do not want to assume colors are white-on-black" >&5
echo $ECHO_N "checking if you do not want to assume colors are white-on-black... $ECHO_C" >&6
# Check whether --enable-assumed-color or --disable-assumed-color was given.
@@ -10793,14 +11683,15 @@ if test "${enable_assumed_color+set}" = set; then
else
with_assumed_color=yes
fi;
-echo "$as_me:10796: result: $with_assumed_color" >&5
+echo "$as_me:11686: result: $with_assumed_color" >&5
echo "${ECHO_T}$with_assumed_color" >&6
-test "$with_assumed_color" = yes && cat >>confdefs.h <<\EOF
+test "x$with_assumed_color" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_ASSUMED_COLOR 1
EOF
### use option --enable-hashmap to turn on use of hashmap scrolling logic
-echo "$as_me:10803: checking if you want hashmap scrolling-optimization code" >&5
+echo "$as_me:11694: checking if you want hashmap scrolling-optimization code" >&5
echo $ECHO_N "checking if you want hashmap scrolling-optimization code... $ECHO_C" >&6
# Check whether --enable-hashmap or --disable-hashmap was given.
@@ -10810,14 +11701,15 @@ if test "${enable_hashmap+set}" = set; then
else
with_hashmap=yes
fi;
-echo "$as_me:10813: result: $with_hashmap" >&5
+echo "$as_me:11704: result: $with_hashmap" >&5
echo "${ECHO_T}$with_hashmap" >&6
-test "$with_hashmap" = yes && cat >>confdefs.h <<\EOF
+test "x$with_hashmap" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_HASHMAP 1
EOF
### use option --enable-colorfgbg to turn on use of $COLORFGBG environment
-echo "$as_me:10820: checking if you want colorfgbg code" >&5
+echo "$as_me:11712: checking if you want colorfgbg code" >&5
echo $ECHO_N "checking if you want colorfgbg code... $ECHO_C" >&6
# Check whether --enable-colorfgbg or --disable-colorfgbg was given.
@@ -10827,14 +11719,15 @@ if test "${enable_colorfgbg+set}" = set; then
else
with_colorfgbg=no
fi;
-echo "$as_me:10830: result: $with_colorfgbg" >&5
+echo "$as_me:11722: result: $with_colorfgbg" >&5
echo "${ECHO_T}$with_colorfgbg" >&6
-test "$with_colorfgbg" = yes && cat >>confdefs.h <<\EOF
+test "x$with_colorfgbg" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_COLORFGBG 1
EOF
### use option --enable-interop to turn on use of bindings used for interop
-echo "$as_me:10837: checking if you want interop bindings" >&5
+echo "$as_me:11730: checking if you want interop bindings" >&5
echo $ECHO_N "checking if you want interop bindings... $ECHO_C" >&6
# Check whether --enable-interop or --disable-interop was given.
@@ -10844,16 +11737,16 @@ if test "${enable_interop+set}" = set; then
else
with_exp_interop=no
fi;
-echo "$as_me:10847: result: $with_exp_interop" >&5
+echo "$as_me:11740: result: $with_exp_interop" >&5
echo "${ECHO_T}$with_exp_interop" >&6
NCURSES_INTEROP_FUNCS=0
-test "$with_exp_interop" = yes && NCURSES_INTEROP_FUNCS=1
+test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1
# This is still experimental (20080329), but should ultimately be moved to
# the script-block --with-normal, etc.
-echo "$as_me:10856: checking if you want to link with the pthread library" >&5
+echo "$as_me:11749: checking if you want to link with the pthread library" >&5
echo $ECHO_N "checking if you want to link with the pthread library... $ECHO_C" >&6
# Check whether --with-pthread or --without-pthread was given.
@@ -10863,27 +11756,27 @@ if test "${with_pthread+set}" = set; then
else
with_pthread=no
fi;
-echo "$as_me:10866: result: $with_pthread" >&5
+echo "$as_me:11759: result: $with_pthread" >&5
echo "${ECHO_T}$with_pthread" >&6
if test "$with_pthread" != no ; then
- echo "$as_me:10870: checking for pthread.h" >&5
+ echo "$as_me:11763: checking for pthread.h" >&5
echo $ECHO_N "checking for pthread.h... $ECHO_C" >&6
if test "${ac_cv_header_pthread_h+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10876 "configure"
+#line 11769 "configure"
#include "confdefs.h"
#include <pthread.h>
_ACEOF
-if { (eval echo "$as_me:10880: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:11773: \"$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:10886: \$? = $ac_status" >&5
+ echo "$as_me:11779: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -10902,20 +11795,22 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:10905: result: $ac_cv_header_pthread_h" >&5
+echo "$as_me:11798: result: $ac_cv_header_pthread_h" >&5
echo "${ECHO_T}$ac_cv_header_pthread_h" >&6
if test $ac_cv_header_pthread_h = yes; then
- cat >>confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define HAVE_PTHREADS_H 1
EOF
- echo "$as_me:10913: checking if we can link with the pthread library" >&5
-echo $ECHO_N "checking if we can link with the pthread library... $ECHO_C" >&6
- cf_save_LIBS="$LIBS"
- LIBS="-lpthread $LIBS"
- cat >conftest.$ac_ext <<_ACEOF
-#line 10918 "configure"
+ for cf_lib_pthread in pthread c_r
+ do
+ echo "$as_me:11808: checking if we can link with the $cf_lib_pthread library" >&5
+echo $ECHO_N "checking if we can link with the $cf_lib_pthread library... $ECHO_C" >&6
+ cf_save_LIBS="$LIBS"
+ LIBS="-l$cf_lib_pthread $LIBS"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 11813 "configure"
#include "confdefs.h"
#include <pthread.h>
@@ -10924,23 +11819,24 @@ int
main ()
{
- int rc = pthread_create(0,0,0,0);
+ int rc = pthread_create(0,0,0,0);
+ int r2 = pthread_mutexattr_settype(0, 0);
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:10934: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11830: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:10937: \$? = $ac_status" >&5
+ echo "$as_me:11833: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:10940: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11836: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:10943: \$? = $ac_status" >&5
+ echo "$as_me:11839: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
with_pthread=yes
else
@@ -10949,34 +11845,37 @@ cat conftest.$ac_ext >&5
with_pthread=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LIBS="$cf_save_LIBS"
- echo "$as_me:10953: result: $with_pthread" >&5
+ LIBS="$cf_save_LIBS"
+ echo "$as_me:11849: result: $with_pthread" >&5
echo "${ECHO_T}$with_pthread" >&6
+ test "$with_pthread" = yes && break
+ done
+
+ if test "$with_pthread" = yes ; then
+ LIBS="-l$cf_lib_pthread $LIBS"
- if test "$with_pthread" = yes ; then
- LIBS="-lpthread $LIBS"
- cat >>confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define HAVE_LIBPTHREADS 1
EOF
- else
- { { echo "$as_me:10963: error: Cannot link with pthread library" >&5
+ else
+ { { echo "$as_me:11862: error: Cannot link with pthread library" >&5
echo "$as_me: error: Cannot link with pthread library" >&2;}
{ (exit 1); exit 1; }; }
- fi
+ fi
fi
fi
if test "x$with_pthread" != xno; then
- echo "$as_me:10973: checking for pthread_kill" >&5
+ echo "$as_me:11872: checking for pthread_kill" >&5
echo $ECHO_N "checking for pthread_kill... $ECHO_C" >&6
if test "${ac_cv_func_pthread_kill+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 10979 "configure"
+#line 11878 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char pthread_kill (); below. */
@@ -10999,7 +11898,7 @@ main ()
#if defined (__stub_pthread_kill) || defined (__stub___pthread_kill)
choke me
#else
-f = pthread_kill;
+f = pthread_kill; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -11007,16 +11906,16 @@ f = pthread_kill;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11010: \"$ac_link\"") >&5
+if { (eval echo "$as_me:11909: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11013: \$? = $ac_status" >&5
+ echo "$as_me:11912: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11016: \"$ac_try\"") >&5
+ { (eval echo "$as_me:11915: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11019: \$? = $ac_status" >&5
+ echo "$as_me:11918: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_pthread_kill=yes
else
@@ -11026,11 +11925,11 @@ ac_cv_func_pthread_kill=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:11029: result: $ac_cv_func_pthread_kill" >&5
+echo "$as_me:11928: result: $ac_cv_func_pthread_kill" >&5
echo "${ECHO_T}$ac_cv_func_pthread_kill" >&6
if test $ac_cv_func_pthread_kill = yes; then
- echo "$as_me:11033: checking if you want to allow EINTR in wgetch with pthreads" >&5
+ echo "$as_me:11932: checking if you want to allow EINTR in wgetch with pthreads" >&5
echo $ECHO_N "checking if you want to allow EINTR in wgetch with pthreads... $ECHO_C" >&6
# Check whether --enable-pthreads-eintr or --disable-pthreads-eintr was given.
@@ -11040,17 +11939,18 @@ if test "${enable_pthreads_eintr+set}" = set; then
else
use_pthreads_eintr=no
fi;
- echo "$as_me:11043: result: $use_pthreads_eintr" >&5
+ echo "$as_me:11942: result: $use_pthreads_eintr" >&5
echo "${ECHO_T}$use_pthreads_eintr" >&6
- if test $use_pthreads_eintr = yes ; then
- cat >>confdefs.h <<\EOF
+ if test "x$use_pthreads_eintr" = xyes ; then
+
+cat >>confdefs.h <<\EOF
#define USE_PTHREADS_EINTR 1
EOF
fi
fi
- echo "$as_me:11053: checking if you want to use weak-symbols for pthreads" >&5
+ echo "$as_me:11953: checking if you want to use weak-symbols for pthreads" >&5
echo $ECHO_N "checking if you want to use weak-symbols for pthreads... $ECHO_C" >&6
# Check whether --enable-weak-symbols or --disable-weak-symbols was given.
@@ -11060,18 +11960,18 @@ if test "${enable_weak_symbols+set}" = set; then
else
use_weak_symbols=no
fi;
- echo "$as_me:11063: result: $use_weak_symbols" >&5
+ echo "$as_me:11963: result: $use_weak_symbols" >&5
echo "${ECHO_T}$use_weak_symbols" >&6
- if test "$use_weak_symbols" = yes ; then
+ if test "x$use_weak_symbols" = xyes ; then
-echo "$as_me:11067: checking if $CC supports weak symbols" >&5
+echo "$as_me:11967: checking if $CC supports weak symbols" >&5
echo $ECHO_N "checking if $CC supports weak symbols... $ECHO_C" >&6
if test "${cf_cv_weak_symbols+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 11074 "configure"
+#line 11974 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -11097,16 +11997,16 @@ weak_symbol(fopen);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11100: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12000: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11103: \$? = $ac_status" >&5
+ echo "$as_me:12003: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11106: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12006: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11109: \$? = $ac_status" >&5
+ echo "$as_me:12009: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_weak_symbols=yes
else
@@ -11117,15 +12017,16 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:11120: result: $cf_cv_weak_symbols" >&5
+echo "$as_me:12020: result: $cf_cv_weak_symbols" >&5
echo "${ECHO_T}$cf_cv_weak_symbols" >&6
else
cf_cv_weak_symbols=no
fi
- if test $cf_cv_weak_symbols = yes ; then
- cat >>confdefs.h <<\EOF
+ if test "x$cf_cv_weak_symbols" = xyes ; then
+
+cat >>confdefs.h <<\EOF
#define USE_WEAK_SYMBOLS 1
EOF
@@ -11133,13 +12034,14 @@ EOF
fi
PTHREAD=
-if test "$with_pthread" = "yes" ; then
- cat >>confdefs.h <<\EOF
+if test "x$with_pthread" = "xyes" ; then
+
+cat >>confdefs.h <<\EOF
#define USE_PTHREADS 1
EOF
enable_reentrant=yes
- if test $cf_cv_weak_symbols = yes ; then
+ if test "x$cf_cv_weak_symbols" = xyes ; then
PTHREAD=-lpthread
fi
fi
@@ -11148,7 +12050,7 @@ fi
# opaque outside of that, so there is no --enable-opaque option. We can use
# this option without --with-pthreads, but this will be always set for
# pthreads.
-echo "$as_me:11151: checking if you want experimental reentrant code" >&5
+echo "$as_me:12053: checking if you want experimental reentrant code" >&5
echo $ECHO_N "checking if you want experimental reentrant code... $ECHO_C" >&6
# Check whether --enable-reentrant or --disable-reentrant was given.
@@ -11158,14 +12060,14 @@ if test "${enable_reentrant+set}" = set; then
else
with_reentrant=no
fi;
-echo "$as_me:11161: result: $with_reentrant" >&5
+echo "$as_me:12063: result: $with_reentrant" >&5
echo "${ECHO_T}$with_reentrant" >&6
-if test "$with_reentrant" = yes ; then
+if test "x$with_reentrant" = xyes ; then
cf_cv_enable_reentrant=1
cf_cv_enable_opaque="NCURSES_INTERNALS"
NCURSES_OPAQUE=1
NCURSES_SIZE_T=int
- if test $cf_cv_weak_symbols = yes ; then
+ if test "x$cf_cv_weak_symbols" = xyes ; then
# remove pthread library from $LIBS
LIBS=`echo "$LIBS" | sed -e 's/-lpthread[ ]//g' -e 's/-lpthread$//'`
@@ -11173,9 +12075,20 @@ LIBS=`echo "$LIBS" | sed -e 's/-lpthread[ ]//g' -e 's/-lpthread$//'`
TEST_LIBS="-lpthread $TEST_LIBS"
TEST_LIBS2="-lpthread $TEST_LIBS2"
else
- LIB_SUFFIX="t${LIB_SUFFIX}"
+ # when not using weak symbols but with_reentrant,
+ # add 't' to the library suffix on all platforms
+ # except cygwin, where we only do that if ALSO
+ # compiling with full thread support.
+ case "$host" in
+ *cygwin* | *msys*)
+ if test "$with_pthread" = "yes" ; then
+ LIB_SUFFIX="t${LIB_SUFFIX}"
+ fi ;;
+ * ) LIB_SUFFIX="t${LIB_SUFFIX}" ;;
+ esac
fi
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define USE_REENTRANT 1
EOF
@@ -11184,7 +12097,7 @@ if test "${with_abi_version+set}" != set; then
5.*)
cf_cv_rel_version=6.0
cf_cv_abi_version=6
- { echo "$as_me:11187: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5
+ { echo "$as_me:12100: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5
echo "$as_me: WARNING: Overriding ABI version to $cf_cv_abi_version" >&2;}
;;
esac
@@ -11199,7 +12112,7 @@ fi
### Allow using a different wrap-prefix
if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
- echo "$as_me:11202: checking for prefix used to wrap public variables" >&5
+ echo "$as_me:12115: checking for prefix used to wrap public variables" >&5
echo $ECHO_N "checking for prefix used to wrap public variables... $ECHO_C" >&6
# Check whether --with-wrap-prefix or --without-wrap-prefix was given.
@@ -11209,7 +12122,7 @@ if test "${with_wrap_prefix+set}" = set; then
else
NCURSES_WRAP_PREFIX=_nc_
fi;
- echo "$as_me:11212: result: $NCURSES_WRAP_PREFIX" >&5
+ echo "$as_me:12125: result: $NCURSES_WRAP_PREFIX" >&5
echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6
else
NCURSES_WRAP_PREFIX=_nc_
@@ -11219,7 +12132,7 @@ cat >>confdefs.h <<EOF
#define NCURSES_WRAP_PREFIX "$NCURSES_WRAP_PREFIX"
EOF
-echo "$as_me:11222: checking if you want experimental safe-sprintf code" >&5
+echo "$as_me:12135: 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.
@@ -11229,16 +12142,17 @@ if test "${enable_safe_sprintf+set}" = set; then
else
with_safe_sprintf=no
fi;
-echo "$as_me:11232: result: $with_safe_sprintf" >&5
+echo "$as_me:12145: result: $with_safe_sprintf" >&5
echo "${ECHO_T}$with_safe_sprintf" >&6
-test "$with_safe_sprintf" = yes && cat >>confdefs.h <<\EOF
+test "x$with_safe_sprintf" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_SAFE_SPRINTF 1
EOF
### use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic
# when hashmap is used scroll hints are useless
if test "$with_hashmap" = no ; then
-echo "$as_me:11241: checking if you want to experiment without scrolling-hints code" >&5
+echo "$as_me:12155: 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.
@@ -11248,15 +12162,16 @@ if test "${enable_scroll_hints+set}" = set; then
else
with_scroll_hints=yes
fi;
-echo "$as_me:11251: result: $with_scroll_hints" >&5
+echo "$as_me:12165: result: $with_scroll_hints" >&5
echo "${ECHO_T}$with_scroll_hints" >&6
-test "$with_scroll_hints" = yes && cat >>confdefs.h <<\EOF
+test "x$with_scroll_hints" = xyes &&
+cat >>confdefs.h <<\EOF
#define USE_SCROLL_HINTS 1
EOF
fi
-echo "$as_me:11259: checking if you want experimental wgetch-events code" >&5
+echo "$as_me:12174: checking if you want experimental wgetch-events code" >&5
echo $ECHO_N "checking if you want experimental wgetch-events code... $ECHO_C" >&6
# Check whether --enable-wgetch-events or --disable-wgetch-events was given.
@@ -11266,37 +12181,64 @@ if test "${enable_wgetch_events+set}" = set; then
else
with_wgetch_events=no
fi;
-echo "$as_me:11269: result: $with_wgetch_events" >&5
+echo "$as_me:12184: result: $with_wgetch_events" >&5
echo "${ECHO_T}$with_wgetch_events" >&6
-test "$with_wgetch_events" = yes && cat >>confdefs.h <<\EOF
+test "x$with_wgetch_events" = xyes &&
+cat >>confdefs.h <<\EOF
#define NCURSES_WGETCH_EVENTS 1
EOF
###############################################################################
### use option --disable-echo to suppress full display compiling commands
-echo "$as_me:11278: 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
+
+echo "$as_me:12195: checking if you want to see long compiling messages" >&5
+echo $ECHO_N "checking if you want to see long compiling messages... $ECHO_C" >&6
# Check whether --enable-echo or --disable-echo was given.
if test "${enable_echo+set}" = set; then
enableval="$enable_echo"
- with_echo=$enableval
+ test "$enableval" != no && enableval=yes
+ if test "$enableval" != "yes" ; then
+
+ ECHO_LT='--silent'
+ ECHO_LD='@echo linking $@;'
+ RULE_CC='@echo compiling $<'
+ SHOW_CC='@echo compiling $@'
+ ECHO_CC='@'
+
+ else
+
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
+
+ fi
else
- with_echo=yes
+ enableval=yes
+
+ ECHO_LT=''
+ ECHO_LD=''
+ RULE_CC=''
+ SHOW_CC=''
+ ECHO_CC=''
+
fi;
-if test "$with_echo" = yes; then
+echo "$as_me:12229: result: $enableval" >&5
+echo "${ECHO_T}$enableval" >&6
+
+if test "x$enable_echo" = xyes; then
ECHO_LINK=
else
ECHO_LINK='@ echo linking $@ ... ;'
test -n "$LIBTOOL" && LIBTOOL="$LIBTOOL --silent"
test -n "$LIBTOOL_CXX" && LIBTOOL_CXX="$LIBTOOL_CXX --silent"
fi
-echo "$as_me:11295: result: $with_echo" >&5
-echo "${ECHO_T}$with_echo" >&6
### use option --enable-warnings to turn on all gcc warnings
-echo "$as_me:11299: checking if you want to see compiler warnings" >&5
+echo "$as_me:12241: 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.
@@ -11304,7 +12246,7 @@ if test "${enable_warnings+set}" = set; then
enableval="$enable_warnings"
with_warnings=$enableval
fi;
-echo "$as_me:11307: result: $with_warnings" >&5
+echo "$as_me:12249: result: $with_warnings" >&5
echo "${ECHO_T}$with_warnings" >&6
if test "x$with_warnings" = "xyes"; then
@@ -11316,12 +12258,12 @@ INTEL_COMPILER=no
if test "$GCC" = yes ; then
case $host_os in
linux*|gnu*)
- echo "$as_me:11319: checking if this is really Intel C compiler" >&5
+ echo "$as_me:12261: checking if this is really Intel C compiler" >&5
echo $ECHO_N "checking if this is really Intel C compiler... $ECHO_C" >&6
cf_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -no-gcc"
cat >conftest.$ac_ext <<_ACEOF
-#line 11324 "configure"
+#line 12266 "configure"
#include "confdefs.h"
int
@@ -11338,16 +12280,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11341: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12283: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11344: \$? = $ac_status" >&5
+ echo "$as_me:12286: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11347: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12289: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11350: \$? = $ac_status" >&5
+ echo "$as_me:12292: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
INTEL_COMPILER=yes
cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
@@ -11358,14 +12300,63 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
CFLAGS="$cf_save_CFLAGS"
- echo "$as_me:11361: result: $INTEL_COMPILER" >&5
+ echo "$as_me:12303: result: $INTEL_COMPILER" >&5
echo "${ECHO_T}$INTEL_COMPILER" >&6
;;
esac
fi
+CLANG_COMPILER=no
+
+if test "$GCC" = yes ; then
+ echo "$as_me:12312: checking if this is really Clang C compiler" >&5
+echo $ECHO_N "checking if this is really Clang C compiler... $ECHO_C" >&6
+ cf_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Qunused-arguments"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12317 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+#ifdef __clang__
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:12334: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:12337: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:12340: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12343: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ CLANG_COMPILER=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:12354: result: $CLANG_COMPILER" >&5
+echo "${ECHO_T}$CLANG_COMPILER" >&6
+fi
+
cat > conftest.$ac_ext <<EOF
-#line 11368 "${as_me:-configure}"
+#line 12359 "${as_me:-configure}"
int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
EOF
@@ -11382,7 +12373,7 @@ then
# remark #981: operands are evaluated in unspecified order
# warning #279: controlling expression is constant
- { echo "$as_me:11385: checking for $CC warning options..." >&5
+ { echo "$as_me:12376: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS="-Wall"
@@ -11398,12 +12389,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
wd981
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:11401: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:12392: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11404: \$? = $ac_status" >&5
+ echo "$as_me:12395: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:11406: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:12397: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
fi
@@ -11412,16 +12403,20 @@ echo "${ECHO_T}... -$cf_opt" >&6
elif test "$GCC" = yes
then
- { echo "$as_me:11415: checking for $CC warning options..." >&5
+ { echo "$as_me:12406: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS=
cf_warn_CONST=""
test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings"
+ cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs"
+ test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings=
for cf_opt in W Wall \
Wbad-function-cast \
Wcast-align \
Wcast-qual \
+ Wdeclaration-after-statement \
+ Wextra \
Winline \
Wmissing-declarations \
Wmissing-prototypes \
@@ -11429,15 +12424,15 @@ echo "$as_me: checking for $CC warning options..." >&6;}
Wpointer-arith \
Wshadow \
Wstrict-prototypes \
- Wundef $cf_warn_CONST Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum
+ Wundef $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas Wswitch-enum
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo "$as_me:11435: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:12430: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11438: \$? = $ac_status" >&5
+ echo "$as_me:12433: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:11440: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:12435: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
case $cf_opt in #(vi
Wcast-qual) #(vi
@@ -11448,7 +12443,17 @@ echo "${ECHO_T}... -$cf_opt" >&6
[34].*)
test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
-echo "${as_me:-configure}:11451: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+echo "${as_me:-configure}:12446: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
+
+ continue;;
+ esac
+ ;;
+ Wpointer-arith) #(vi
+ case $GCC_VERSION in
+ [12].*)
+ test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6
+
+echo "${as_me:-configure}:12456: testing feature is broken in gcc $GCC_VERSION ..." 1>&5
continue;;
esac
@@ -11461,19 +12466,19 @@ echo "${as_me:-configure}:11451: testing feature is broken in gcc $GCC_VERSION .
fi
rm -rf conftest*
- if test "$cf_with_cxx" = yes ; then
+ if test "x$cf_with_cxx" = xyes ; then
INTEL_CPLUSPLUS=no
if test "$GCC" = yes ; then
case $host_os in
linux*|gnu*)
- echo "$as_me:11471: checking if this is really Intel C++ compiler" >&5
+ echo "$as_me:12476: 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 11476 "configure"
+#line 12481 "configure"
#include "confdefs.h"
int
@@ -11490,16 +12495,16 @@ make an error
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:11493: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:12498: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11496: \$? = $ac_status" >&5
+ echo "$as_me:12501: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:11499: \"$ac_try\"") >&5
+ { (eval echo "$as_me:12504: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11502: \$? = $ac_status" >&5
+ echo "$as_me:12507: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
INTEL_CPLUSPLUS=yes
cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc"
@@ -11510,12 +12515,61 @@ cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest.$ac_ext
CXXFLAGS="$cf_save_CFLAGS"
- echo "$as_me:11513: result: $INTEL_CPLUSPLUS" >&5
+ echo "$as_me:12518: result: $INTEL_CPLUSPLUS" >&5
echo "${ECHO_T}$INTEL_CPLUSPLUS" >&6
;;
esac
fi
+CLANG_CPLUSPLUS=no
+
+if test "$GCC" = yes ; then
+ echo "$as_me:12527: checking if this is really Clang C++ compiler" >&5
+echo $ECHO_N "checking if this is really Clang C++ compiler... $ECHO_C" >&6
+ cf_save_CFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -Qunused-arguments"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12532 "configure"
+#include "confdefs.h"
+
+int
+main ()
+{
+
+#ifdef __clang__
+#else
+make an error
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:12549: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:12552: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:12555: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12558: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ CLANG_CPLUSPLUS=yes
+cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments"
+
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+ CXXFLAGS="$cf_save_CFLAGS"
+ echo "$as_me:12569: result: $CLANG_CPLUSPLUS" >&5
+echo "${ECHO_T}$CLANG_CPLUSPLUS" >&6
+fi
+
ac_ext=cc
ac_cpp='$CXXCPP $CPPFLAGS'
ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -11524,7 +12578,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
cat > conftest.$ac_ext <<EOF
-#line 11527 "configure"
+#line 12581 "configure"
int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
EOF
@@ -11542,7 +12596,7 @@ then
# remark #981: operands are evaluated in unspecified order
# warning #269: invalid format string conversion
- { echo "$as_me:11545: checking for $CC warning options..." >&5
+ { echo "$as_me:12599: checking for $CC warning options..." >&5
echo "$as_me: checking for $CC warning options..." >&6;}
cf_save_CXXFLAGS="$CXXFLAGS"
EXTRA_CXXFLAGS="-Wall"
@@ -11559,12 +12613,12 @@ echo "$as_me: checking for $CC warning options..." >&6;}
wd981
do
CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt"
- if { (eval echo "$as_me:11562: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:12616: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11565: \$? = $ac_status" >&5
+ echo "$as_me:12619: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:11567: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:12621: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
fi
@@ -11573,7 +12627,7 @@ echo "${ECHO_T}... -$cf_opt" >&6
elif test "$GXX" = yes
then
- { echo "$as_me:11576: checking for $CXX warning options..." >&5
+ { echo "$as_me:12630: checking for $CXX warning options..." >&5
echo "$as_me: checking for $CXX warning options..." >&6;}
cf_save_CXXFLAGS="$CXXFLAGS"
EXTRA_CXXFLAGS="-W -Wall"
@@ -11589,29 +12643,30 @@ echo "$as_me: checking for $CXX warning options..." >&6;}
for cf_opt in \
Wabi \
fabi-version=0 \
+ Wextra \
+ Wignored-qualifiers \
+ Wlogical-op \
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:11605: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:12660: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11608: \$? = $ac_status" >&5
+ echo "$as_me:12663: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:11610: result: ... -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:12665: result: ... -$cf_opt" >&5
echo "${ECHO_T}... -$cf_opt" >&6
EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt"
else
- test -n "$verbose" && echo "$as_me:11614: result: ... no -$cf_opt" >&5
+ test -n "$verbose" && echo "$as_me:12669: result: ... no -$cf_opt" >&5
echo "${ECHO_T}... no -$cf_opt" >&6
fi
done
@@ -11647,10 +12702,10 @@ cat > conftest.i <<EOF
EOF
if test "$GCC" = yes
then
- { echo "$as_me:11650: checking for $CC __attribute__ directives..." >&5
+ { echo "$as_me:12705: checking for $CC __attribute__ directives..." >&5
echo "$as_me: checking for $CC __attribute__ directives..." >&6;}
cat > conftest.$ac_ext <<EOF
-#line 11653 "${as_me:-configure}"
+#line 12708 "${as_me:-configure}"
#include "confdefs.h"
#include "conftest.h"
#include "conftest.i"
@@ -11699,36 +12754,60 @@ EOF
;;
esac
- if { (eval echo "$as_me:11702: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:12757: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:11705: \$? = $ac_status" >&5
+ echo "$as_me:12760: \$? = $ac_status" >&5
(exit $ac_status); }; then
- test -n "$verbose" && echo "$as_me:11707: result: ... $cf_attribute" >&5
+ test -n "$verbose" && echo "$as_me:12762: result: ... $cf_attribute" >&5
echo "${ECHO_T}... $cf_attribute" >&6
cat conftest.h >>confdefs.h
case $cf_attribute in #(vi
- printf) #(vi
- if test "$cf_printf_attribute" = no ; then
- cat >>confdefs.h <<EOF
-#define GCC_PRINTFLIKE(fmt,var) /* nothing */
+ noreturn) #(vi
+
+cat >>confdefs.h <<EOF
+#define GCC_NORETURN $cf_directive
EOF
- else
- cat >>confdefs.h <<EOF
-#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var)))
+
+ ;;
+ printf) #(vi
+ cf_value='/* nothing */'
+ if test "$cf_printf_attribute" != no ; then
+ cf_value='__attribute__((format(printf,fmt,var)))'
+
+cat >>confdefs.h <<\EOF
+#define GCC_PRINTF 1
EOF
+
fi
+
+cat >>confdefs.h <<EOF
+#define GCC_PRINTFLIKE(fmt,var) $cf_value
+EOF
+
;;
scanf) #(vi
- if test "$cf_scanf_attribute" = no ; then
- cat >>confdefs.h <<EOF
-#define GCC_SCANFLIKE(fmt,var) /* nothing */
-EOF
- else
- cat >>confdefs.h <<EOF
-#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var)))
+ cf_value='/* nothing */'
+ if test "$cf_scanf_attribute" != no ; then
+ cf_value='__attribute__((format(scanf,fmt,var)))'
+
+cat >>confdefs.h <<\EOF
+#define GCC_SCANF 1
EOF
+
fi
+
+cat >>confdefs.h <<EOF
+#define GCC_SCANFLIKE(fmt,var) $cf_value
+EOF
+
+ ;;
+ unused) #(vi
+
+cat >>confdefs.h <<EOF
+#define GCC_UNUSED $cf_directive
+EOF
+
;;
esac
fi
@@ -11739,8 +12818,101 @@ fi
rm -rf conftest*
fi
+echo "$as_me:12821: checking if you want to work around bogus compiler/loader warnings" >&5
+echo $ECHO_N "checking if you want to work around bogus compiler/loader warnings... $ECHO_C" >&6
+
+# Check whether --enable-string-hacks or --disable-string-hacks was given.
+if test "${enable_string_hacks+set}" = set; then
+ enableval="$enable_string_hacks"
+ with_string_hacks=$enableval
+else
+ with_string_hacks=no
+fi;
+echo "$as_me:12831: result: $with_string_hacks" >&5
+echo "${ECHO_T}$with_string_hacks" >&6
+
+if test "x$with_string_hacks" = "xyes"; then
+
+cat >>confdefs.h <<\EOF
+#define USE_STRING_HACKS 1
+EOF
+
+ { echo "$as_me:12840: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&5
+echo "$as_me: WARNING: enabling string-hacks to work around bogus compiler/loader warnings" >&2;}
+
+for ac_func in strlcat strlcpy snprintf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:12846: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 12852 "configure"
+#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; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:12883: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:12886: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:12889: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:12892: \$? = $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:12902: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+fi
+
### use option --enable-assertions to turn on generation of assertion code
-echo "$as_me:11743: checking if you want to enable runtime assertions" >&5
+echo "$as_me:12915: 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.
@@ -11750,16 +12922,12 @@ if test "${enable_assertions+set}" = set; then
else
with_assertions=no
fi;
-echo "$as_me:11753: result: $with_assertions" >&5
+echo "$as_me:12925: 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
-#define NDEBUG 1
-EOF
-
CPPFLAGS="$CPPFLAGS -DNDEBUG"
else
@@ -11770,13 +12938,14 @@ fi
### use option --disable-leaks to suppress "permanent" leaks, for testing
-echo "$as_me:11773: checking if you want to use dmalloc for testing" >&5
+echo "$as_me:12941: 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
+
+cat >>confdefs.h <<EOF
#define USE_DMALLOC 1
EOF
@@ -11786,7 +12955,7 @@ EOF
else
with_dmalloc=
fi;
-echo "$as_me:11789: result: ${with_dmalloc:-no}" >&5
+echo "$as_me:12958: result: ${with_dmalloc:-no}" >&5
echo "${ECHO_T}${with_dmalloc:-no}" >&6
case .$with_cflags in #(vi
@@ -11880,23 +13049,23 @@ fi
esac
if test "$with_dmalloc" = yes ; then
- echo "$as_me:11883: checking for dmalloc.h" >&5
+ echo "$as_me:13052: 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 11889 "configure"
+#line 13058 "configure"
#include "confdefs.h"
#include <dmalloc.h>
_ACEOF
-if { (eval echo "$as_me:11893: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:13062: \"$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:11899: \$? = $ac_status" >&5
+ echo "$as_me:13068: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -11915,11 +13084,11 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:11918: result: $ac_cv_header_dmalloc_h" >&5
+echo "$as_me:13087: 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:11922: checking for dmalloc_debug in -ldmalloc" >&5
+echo "$as_me:13091: 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
@@ -11927,7 +13096,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldmalloc $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 11930 "configure"
+#line 13099 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -11946,16 +13115,16 @@ dmalloc_debug ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:11949: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13118: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:11952: \$? = $ac_status" >&5
+ echo "$as_me:13121: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:11955: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13124: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:11958: \$? = $ac_status" >&5
+ echo "$as_me:13127: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dmalloc_dmalloc_debug=yes
else
@@ -11966,7 +13135,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:11969: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5
+echo "$as_me:13138: 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
@@ -11981,13 +13150,14 @@ fi
fi
-echo "$as_me:11984: checking if you want to use dbmalloc for testing" >&5
+echo "$as_me:13153: 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
+
+cat >>confdefs.h <<EOF
#define USE_DBMALLOC 1
EOF
@@ -11997,7 +13167,7 @@ EOF
else
with_dbmalloc=
fi;
-echo "$as_me:12000: result: ${with_dbmalloc:-no}" >&5
+echo "$as_me:13170: result: ${with_dbmalloc:-no}" >&5
echo "${ECHO_T}${with_dbmalloc:-no}" >&6
case .$with_cflags in #(vi
@@ -12091,23 +13261,23 @@ fi
esac
if test "$with_dbmalloc" = yes ; then
- echo "$as_me:12094: checking for dbmalloc.h" >&5
+ echo "$as_me:13264: 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 12100 "configure"
+#line 13270 "configure"
#include "confdefs.h"
#include <dbmalloc.h>
_ACEOF
-if { (eval echo "$as_me:12104: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:13274: \"$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:12110: \$? = $ac_status" >&5
+ echo "$as_me:13280: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -12126,11 +13296,11 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:12129: result: $ac_cv_header_dbmalloc_h" >&5
+echo "$as_me:13299: 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:12133: checking for debug_malloc in -ldbmalloc" >&5
+echo "$as_me:13303: 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
@@ -12138,7 +13308,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldbmalloc $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 12141 "configure"
+#line 13311 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -12157,16 +13327,16 @@ debug_malloc ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12160: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13330: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12163: \$? = $ac_status" >&5
+ echo "$as_me:13333: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12166: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13336: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12169: \$? = $ac_status" >&5
+ echo "$as_me:13339: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dbmalloc_debug_malloc=yes
else
@@ -12177,7 +13347,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:12180: result: $ac_cv_lib_dbmalloc_debug_malloc" >&5
+echo "$as_me:13350: 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
@@ -12192,13 +13362,14 @@ fi
fi
-echo "$as_me:12195: checking if you want to use valgrind for testing" >&5
+echo "$as_me:13365: 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
+
+cat >>confdefs.h <<EOF
#define USE_VALGRIND 1
EOF
@@ -12208,7 +13379,7 @@ EOF
else
with_valgrind=
fi;
-echo "$as_me:12211: result: ${with_valgrind:-no}" >&5
+echo "$as_me:13382: result: ${with_valgrind:-no}" >&5
echo "${ECHO_T}${with_valgrind:-no}" >&6
case .$with_cflags in #(vi
@@ -12301,7 +13472,7 @@ fi
;;
esac
-echo "$as_me:12304: checking if you want to perform memory-leak testing" >&5
+echo "$as_me:13475: 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.
@@ -12311,15 +13482,16 @@ if test "${enable_leaks+set}" = set; then
else
: ${with_no_leaks:=no}
fi;
-echo "$as_me:12314: result: $with_no_leaks" >&5
+echo "$as_me:13485: result: $with_no_leaks" >&5
echo "${ECHO_T}$with_no_leaks" >&6
if test "$with_no_leaks" = yes ; then
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define NO_LEAKS 1
EOF
- cat >>confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define YY_NO_LEAKS 1
EOF
@@ -12334,7 +13506,8 @@ EOF
# 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 "x$enableval" = xyes &&
+cat >>confdefs.h <<\EOF
#define NCURSES_EXPANDED 1
EOF
@@ -12345,7 +13518,8 @@ fi;
# 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
@@ -12360,7 +13534,7 @@ case "$CFLAGS $CPPFLAGS" in
;;
esac
-echo "$as_me:12363: checking whether to add trace feature to all models" >&5
+echo "$as_me:13537: 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.
@@ -12370,10 +13544,10 @@ if test "${with_trace+set}" = set; then
else
cf_with_trace=$cf_all_traces
fi;
-echo "$as_me:12373: result: $cf_with_trace" >&5
+echo "$as_me:13547: result: $cf_with_trace" >&5
echo "${ECHO_T}$cf_with_trace" >&6
-if test "$cf_with_trace" = yes ; then
+if test "x$cf_with_trace" = xyes ; then
LIB_TRACING=all
ADA_TRACE=TRUE
@@ -12465,13 +13639,13 @@ case $cf_cv_system_name in #(vi
*mingw32*) #(vi
;;
*)
-echo "$as_me:12468: checking for gettimeofday" >&5
+echo "$as_me:13642: checking for gettimeofday" >&5
echo $ECHO_N "checking for gettimeofday... $ECHO_C" >&6
if test "${ac_cv_func_gettimeofday+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12474 "configure"
+#line 13648 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gettimeofday (); below. */
@@ -12494,7 +13668,7 @@ main ()
#if defined (__stub_gettimeofday) || defined (__stub___gettimeofday)
choke me
#else
-f = gettimeofday;
+f = gettimeofday; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -12502,16 +13676,16 @@ f = gettimeofday;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12505: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13679: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12508: \$? = $ac_status" >&5
+ echo "$as_me:13682: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12511: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13685: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12514: \$? = $ac_status" >&5
+ echo "$as_me:13688: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_gettimeofday=yes
else
@@ -12521,16 +13695,17 @@ ac_cv_func_gettimeofday=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:12524: result: $ac_cv_func_gettimeofday" >&5
+echo "$as_me:13698: 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
+
+cat >>confdefs.h <<\EOF
#define HAVE_GETTIMEOFDAY 1
EOF
else
-echo "$as_me:12533: checking for gettimeofday in -lbsd" >&5
+echo "$as_me:13708: 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
@@ -12538,7 +13713,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 12541 "configure"
+#line 13716 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -12557,16 +13732,16 @@ gettimeofday ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12560: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13735: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12563: \$? = $ac_status" >&5
+ echo "$as_me:13738: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12566: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13741: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12569: \$? = $ac_status" >&5
+ echo "$as_me:13744: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_bsd_gettimeofday=yes
else
@@ -12577,10 +13752,11 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:12580: result: $ac_cv_lib_bsd_gettimeofday" >&5
+echo "$as_me:13755: 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
+
+cat >>confdefs.h <<\EOF
#define HAVE_GETTIMEOFDAY 1
EOF
@@ -12591,14 +13767,14 @@ fi
;;
esac
-echo "$as_me:12594: checking if -lm needed for math functions" >&5
+echo "$as_me:13770: checking if -lm needed for math functions" >&5
echo $ECHO_N "checking if -lm needed for math functions... $ECHO_C" >&6
if test "${cf_cv_need_libm+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12601 "configure"
+#line 13777 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -12607,22 +13783,22 @@ else
int
main ()
{
-double x = rand(); printf("result = %g\n", sin(x))
+double x = rand(); printf("result = %g\n", pow(sin(x),x))
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12616: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13792: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12619: \$? = $ac_status" >&5
+ echo "$as_me:13795: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12622: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13798: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12625: \$? = $ac_status" >&5
+ echo "$as_me:13801: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_need_libm=no
else
@@ -12632,7 +13808,7 @@ cf_cv_need_libm=yes
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:12635: result: $cf_cv_need_libm" >&5
+echo "$as_me:13811: result: $cf_cv_need_libm" >&5
echo "${ECHO_T}$cf_cv_need_libm" >&6
if test "$cf_cv_need_libm" = yes
then
@@ -12640,13 +13816,13 @@ MATH_LIB=-lm
fi
### Checks for header files.
-echo "$as_me:12643: checking for ANSI C header files" >&5
+echo "$as_me:13819: 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 12649 "configure"
+#line 13825 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -12654,13 +13830,13 @@ else
#include <float.h>
_ACEOF
-if { (eval echo "$as_me:12657: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:13833: \"$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:12663: \$? = $ac_status" >&5
+ echo "$as_me:13839: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -12682,7 +13858,7 @@ rm -f conftest.err conftest.$ac_ext
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line 12685 "configure"
+#line 13861 "configure"
#include "confdefs.h"
#include <string.h>
@@ -12700,7 +13876,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat >conftest.$ac_ext <<_ACEOF
-#line 12703 "configure"
+#line 13879 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -12721,7 +13897,7 @@ if test $ac_cv_header_stdc = yes; then
:
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12724 "configure"
+#line 13900 "configure"
#include "confdefs.h"
#include <ctype.h>
#if ((' ' & 0x0FF) == 0x020)
@@ -12747,15 +13923,15 @@ main ()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:12750: \"$ac_link\"") >&5
+if { (eval echo "$as_me:13926: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12753: \$? = $ac_status" >&5
+ echo "$as_me:13929: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:12755: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13931: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12758: \$? = $ac_status" >&5
+ echo "$as_me:13934: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -12768,7 +13944,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
fi
-echo "$as_me:12771: result: $ac_cv_header_stdc" >&5
+echo "$as_me:13947: result: $ac_cv_header_stdc" >&5
echo "${ECHO_T}$ac_cv_header_stdc" >&6
if test $ac_cv_header_stdc = yes; then
@@ -12781,13 +13957,13 @@ fi
ac_header_dirent=no
for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-echo "$as_me:12784: checking for $ac_hdr that defines DIR" >&5
+echo "$as_me:13960: 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 12790 "configure"
+#line 13966 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
@@ -12802,16 +13978,16 @@ return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12805: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:13981: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12808: \$? = $ac_status" >&5
+ echo "$as_me:13984: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12811: \"$ac_try\"") >&5
+ { (eval echo "$as_me:13987: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12814: \$? = $ac_status" >&5
+ echo "$as_me:13990: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_Header=yes"
else
@@ -12821,7 +13997,7 @@ eval "$as_ac_Header=no"
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:12824: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:14000: 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
@@ -12834,7 +14010,7 @@ fi
done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
- echo "$as_me:12837: checking for opendir in -ldir" >&5
+ echo "$as_me:14013: 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
@@ -12842,7 +14018,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldir $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 12845 "configure"
+#line 14021 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -12861,16 +14037,16 @@ opendir ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12864: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14040: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12867: \$? = $ac_status" >&5
+ echo "$as_me:14043: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12870: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14046: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12873: \$? = $ac_status" >&5
+ echo "$as_me:14049: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_dir_opendir=yes
else
@@ -12881,14 +14057,14 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:12884: result: $ac_cv_lib_dir_opendir" >&5
+echo "$as_me:14060: result: $ac_cv_lib_dir_opendir" >&5
echo "${ECHO_T}$ac_cv_lib_dir_opendir" >&6
if test $ac_cv_lib_dir_opendir = yes; then
LIBS="$LIBS -ldir"
fi
else
- echo "$as_me:12891: checking for opendir in -lx" >&5
+ echo "$as_me:14067: 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
@@ -12896,7 +14072,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lx $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 12899 "configure"
+#line 14075 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -12915,16 +14091,16 @@ opendir ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:12918: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14094: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:12921: \$? = $ac_status" >&5
+ echo "$as_me:14097: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:12924: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14100: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12927: \$? = $ac_status" >&5
+ echo "$as_me:14103: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_x_opendir=yes
else
@@ -12935,7 +14111,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:12938: result: $ac_cv_lib_x_opendir" >&5
+echo "$as_me:14114: 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"
@@ -12943,13 +14119,13 @@ fi
fi
-echo "$as_me:12946: checking whether time.h and sys/time.h may both be included" >&5
+echo "$as_me:14122: checking whether time.h and sys/time.h may both be included" >&5
echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6
if test "${ac_cv_header_time+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 12952 "configure"
+#line 14128 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -12965,16 +14141,16 @@ return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:12968: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14144: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:12971: \$? = $ac_status" >&5
+ echo "$as_me:14147: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:12974: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14150: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:12977: \$? = $ac_status" >&5
+ echo "$as_me:14153: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_header_time=yes
else
@@ -12984,7 +14160,7 @@ ac_cv_header_time=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:12987: result: $ac_cv_header_time" >&5
+echo "$as_me:14163: result: $ac_cv_header_time" >&5
echo "${ECHO_T}$ac_cv_header_time" >&6
if test $ac_cv_header_time = yes; then
@@ -12999,17 +14175,17 @@ cf_regex_func=no
cf_regex_libs="regex re"
case $host_os in #(vi
mingw*)
- cf_regex_libs="regex.dll $cf_regex_libs"
+ cf_regex_libs="gnurx $cf_regex_libs"
;;
esac
-echo "$as_me:13006: checking for regcomp" >&5
+echo "$as_me:14182: checking for regcomp" >&5
echo $ECHO_N "checking for regcomp... $ECHO_C" >&6
if test "${ac_cv_func_regcomp+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13012 "configure"
+#line 14188 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char regcomp (); below. */
@@ -13032,7 +14208,7 @@ main ()
#if defined (__stub_regcomp) || defined (__stub___regcomp)
choke me
#else
-f = regcomp;
+f = regcomp; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -13040,16 +14216,16 @@ f = regcomp;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13043: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14219: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13046: \$? = $ac_status" >&5
+ echo "$as_me:14222: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13049: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14225: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13052: \$? = $ac_status" >&5
+ echo "$as_me:14228: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_regcomp=yes
else
@@ -13059,7 +14235,7 @@ ac_cv_func_regcomp=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:13062: result: $ac_cv_func_regcomp" >&5
+echo "$as_me:14238: result: $ac_cv_func_regcomp" >&5
echo "${ECHO_T}$ac_cv_func_regcomp" >&6
if test $ac_cv_func_regcomp = yes; then
cf_regex_func=regcomp
@@ -13068,7 +14244,7 @@ else
for cf_regex_lib in $cf_regex_libs
do
as_ac_Lib=`echo "ac_cv_lib_$cf_regex_lib''_regcomp" | $as_tr_sh`
-echo "$as_me:13071: checking for regcomp in -l$cf_regex_lib" >&5
+echo "$as_me:14247: checking for regcomp in -l$cf_regex_lib" >&5
echo $ECHO_N "checking for regcomp in -l$cf_regex_lib... $ECHO_C" >&6
if eval "test \"\${$as_ac_Lib+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13076,7 +14252,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-l$cf_regex_lib $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 13079 "configure"
+#line 14255 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -13095,16 +14271,16 @@ regcomp ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13098: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14274: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13101: \$? = $ac_status" >&5
+ echo "$as_me:14277: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13104: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14280: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13107: \$? = $ac_status" >&5
+ echo "$as_me:14283: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_Lib=yes"
else
@@ -13115,7 +14291,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:13118: result: `eval echo '${'$as_ac_Lib'}'`" >&5
+echo "$as_me:14294: result: `eval echo '${'$as_ac_Lib'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Lib'}'`" >&6
if test `eval echo '${'$as_ac_Lib'}'` = yes; then
@@ -13129,13 +14305,13 @@ fi
fi
if test "$cf_regex_func" = no ; then
- echo "$as_me:13132: checking for compile" >&5
+ echo "$as_me:14308: checking for compile" >&5
echo $ECHO_N "checking for compile... $ECHO_C" >&6
if test "${ac_cv_func_compile+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13138 "configure"
+#line 14314 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char compile (); below. */
@@ -13158,7 +14334,7 @@ main ()
#if defined (__stub_compile) || defined (__stub___compile)
choke me
#else
-f = compile;
+f = compile; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -13166,16 +14342,16 @@ f = compile;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13169: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14345: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13172: \$? = $ac_status" >&5
+ echo "$as_me:14348: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13175: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14351: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13178: \$? = $ac_status" >&5
+ echo "$as_me:14354: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_compile=yes
else
@@ -13185,13 +14361,13 @@ ac_cv_func_compile=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:13188: result: $ac_cv_func_compile" >&5
+echo "$as_me:14364: result: $ac_cv_func_compile" >&5
echo "${ECHO_T}$ac_cv_func_compile" >&6
if test $ac_cv_func_compile = yes; then
cf_regex_func=compile
else
- echo "$as_me:13194: checking for compile in -lgen" >&5
+ echo "$as_me:14370: checking for compile in -lgen" >&5
echo $ECHO_N "checking for compile in -lgen... $ECHO_C" >&6
if test "${ac_cv_lib_gen_compile+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13199,7 +14375,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgen $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 13202 "configure"
+#line 14378 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -13218,16 +14394,16 @@ compile ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13221: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14397: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13224: \$? = $ac_status" >&5
+ echo "$as_me:14400: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13227: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14403: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13230: \$? = $ac_status" >&5
+ echo "$as_me:14406: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_gen_compile=yes
else
@@ -13238,7 +14414,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:13241: result: $ac_cv_lib_gen_compile" >&5
+echo "$as_me:14417: result: $ac_cv_lib_gen_compile" >&5
echo "${ECHO_T}$ac_cv_lib_gen_compile" >&6
if test $ac_cv_lib_gen_compile = yes; then
@@ -13251,11 +14427,11 @@ fi
fi
if test "$cf_regex_func" = no ; then
- { echo "$as_me:13254: WARNING: cannot find regular expression library" >&5
+ { echo "$as_me:14430: WARNING: cannot find regular expression library" >&5
echo "$as_me: WARNING: cannot find regular expression library" >&2;}
fi
-echo "$as_me:13258: checking for regular-expression headers" >&5
+echo "$as_me:14434: checking for regular-expression headers" >&5
echo $ECHO_N "checking for regular-expression headers... $ECHO_C" >&6
if test "${cf_cv_regex_hdrs+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13267,7 +14443,7 @@ compile) #(vi
for cf_regex_hdr in regexp.h regexpr.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 13270 "configure"
+#line 14446 "configure"
#include "confdefs.h"
#include <$cf_regex_hdr>
int
@@ -13282,16 +14458,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13285: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14461: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13288: \$? = $ac_status" >&5
+ echo "$as_me:14464: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13291: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14467: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13294: \$? = $ac_status" >&5
+ echo "$as_me:14470: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_regex_hdrs=$cf_regex_hdr
@@ -13308,7 +14484,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
for cf_regex_hdr in regex.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 13311 "configure"
+#line 14487 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$cf_regex_hdr>
@@ -13326,16 +14502,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13329: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14505: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13332: \$? = $ac_status" >&5
+ echo "$as_me:14508: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13335: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14511: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13338: \$? = $ac_status" >&5
+ echo "$as_me:14514: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_regex_hdrs=$cf_regex_hdr
@@ -13351,21 +14527,24 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
esac
fi
-echo "$as_me:13354: result: $cf_cv_regex_hdrs" >&5
+echo "$as_me:14530: result: $cf_cv_regex_hdrs" >&5
echo "${ECHO_T}$cf_cv_regex_hdrs" >&6
case $cf_cv_regex_hdrs in #(vi
- no) { echo "$as_me:13358: WARNING: no regular expression header found" >&5
+ no) { echo "$as_me:14534: WARNING: no regular expression header found" >&5
echo "$as_me: WARNING: no regular expression header found" >&2;} ;; #(vi
- regex.h) cat >>confdefs.h <<\EOF
+ regex.h)
+cat >>confdefs.h <<\EOF
#define HAVE_REGEX_H_FUNCS 1
EOF
;; #(vi
- regexp.h) cat >>confdefs.h <<\EOF
+ regexp.h)
+cat >>confdefs.h <<\EOF
#define HAVE_REGEXP_H_FUNCS 1
EOF
;; #(vi
- regexpr.h) cat >>confdefs.h <<\EOF
+ regexpr.h)
+cat >>confdefs.h <<\EOF
#define HAVE_REGEXPR_H_FUNCS 1
EOF
;;
@@ -13391,23 +14570,23 @@ wctype.h \
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:13394: checking for $ac_header" >&5
+echo "$as_me:14573: 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 13400 "configure"
+#line 14579 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:13404: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:14583: \"$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:13410: \$? = $ac_status" >&5
+ echo "$as_me:14589: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -13426,7 +14605,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:13429: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:14608: 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
@@ -13436,11 +14615,113 @@ EOF
fi
done
+for ac_header in unistd.h getopt.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:14621: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 14627 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:14631: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:14637: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null; then
+ if test -s conftest.err; then
+ ac_cpp_err=$ac_c_preproc_warn_flag
+ else
+ ac_cpp_err=
+ fi
+else
+ ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:14656: 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:14666: checking for header declaring getopt variables" >&5
+echo $ECHO_N "checking for header declaring getopt variables... $ECHO_C" >&6
+if test "${cf_cv_getopt_header+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cf_cv_getopt_header=none
+for cf_header in stdio.h stdlib.h unistd.h getopt.h
+do
+cat >conftest.$ac_ext <<_ACEOF
+#line 14676 "configure"
+#include "confdefs.h"
+
+#include <$cf_header>
+int
+main ()
+{
+int x = optind; char *y = optarg
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:14689: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:14692: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:14695: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:14698: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_getopt_header=$cf_header
+ break
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+done
+
+fi
+echo "$as_me:14710: result: $cf_cv_getopt_header" >&5
+echo "${ECHO_T}$cf_cv_getopt_header" >&6
+if test $cf_cv_getopt_header != none ; then
+
+cat >>confdefs.h <<\EOF
+#define HAVE_GETOPT_HEADER 1
+EOF
+
+fi
+
# check for ISC (this may also define _POSIX_SOURCE)
# Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
-if test "$ISC" = yes ; then
+if test "x$ISC" = xyes ; then
-echo "$as_me:13443: checking for main in -lcposix" >&5
+echo "$as_me:14724: 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
@@ -13448,7 +14729,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lcposix $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 13451 "configure"
+#line 14732 "configure"
#include "confdefs.h"
int
@@ -13460,16 +14741,16 @@ main ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13463: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14744: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13466: \$? = $ac_status" >&5
+ echo "$as_me:14747: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13469: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14750: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13472: \$? = $ac_status" >&5
+ echo "$as_me:14753: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_cposix_main=yes
else
@@ -13480,7 +14761,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:13483: result: $ac_cv_lib_cposix_main" >&5
+echo "$as_me:14764: 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
@@ -13491,7 +14772,7 @@ EOF
fi
- echo "$as_me:13494: checking for bzero in -linet" >&5
+ echo "$as_me:14775: 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
@@ -13499,7 +14780,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-linet $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 13502 "configure"
+#line 14783 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -13518,16 +14799,16 @@ bzero ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:13521: \"$ac_link\"") >&5
+if { (eval echo "$as_me:14802: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:13524: \$? = $ac_status" >&5
+ echo "$as_me:14805: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:13527: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14808: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13530: \$? = $ac_status" >&5
+ echo "$as_me:14811: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_inet_bzero=yes
else
@@ -13538,21 +14819,21 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:13541: result: $ac_cv_lib_inet_bzero" >&5
+echo "$as_me:14822: result: $ac_cv_lib_inet_bzero" >&5
echo "${ECHO_T}$ac_cv_lib_inet_bzero" >&6
if test $ac_cv_lib_inet_bzero = yes; then
LIBS="-linet $LIBS"
fi
fi
-echo "$as_me:13548: checking if sys/time.h works with sys/select.h" >&5
+echo "$as_me:14829: checking if sys/time.h works with sys/select.h" >&5
echo $ECHO_N "checking if sys/time.h works with sys/select.h... $ECHO_C" >&6
if test "${cf_cv_sys_time_select+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13555 "configure"
+#line 14836 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -13572,16 +14853,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13575: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14856: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13578: \$? = $ac_status" >&5
+ echo "$as_me:14859: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13581: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14862: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13584: \$? = $ac_status" >&5
+ echo "$as_me:14865: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_sys_time_select=yes
else
@@ -13593,9 +14874,10 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:13596: result: $cf_cv_sys_time_select" >&5
+echo "$as_me:14877: 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
+test "$cf_cv_sys_time_select" = yes &&
+cat >>confdefs.h <<\EOF
#define HAVE_SYS_TIME_SELECT 1
EOF
@@ -13607,104 +14889,13 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_main_return=return
-echo "$as_me:13610: 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 13618 "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:13667: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:13670: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13673: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:13676: \$? = $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
-
-case "x$ac_cv_prog_cc_stdc" in
- x|xno)
- echo "$as_me:13693: result: none needed" >&5
-echo "${ECHO_T}none needed" >&6 ;;
- *)
- echo "$as_me:13696: 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:13701: checking for an ANSI C-conforming const" >&5
+echo "$as_me:14892: checking for an ANSI C-conforming const" >&5
echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6
if test "${ac_cv_c_const+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 13707 "configure"
+#line 14898 "configure"
#include "confdefs.h"
int
@@ -13762,16 +14953,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13765: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:14956: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13768: \$? = $ac_status" >&5
+ echo "$as_me:14959: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13771: \"$ac_try\"") >&5
+ { (eval echo "$as_me:14962: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13774: \$? = $ac_status" >&5
+ echo "$as_me:14965: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_c_const=yes
else
@@ -13781,7 +14972,7 @@ ac_cv_c_const=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:13784: result: $ac_cv_c_const" >&5
+echo "$as_me:14975: result: $ac_cv_c_const" >&5
echo "${ECHO_T}$ac_cv_c_const" >&6
if test $ac_cv_c_const = no; then
@@ -13791,7 +14982,7 @@ EOF
fi
-echo "$as_me:13794: checking for inline" >&5
+echo "$as_me:14985: 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
@@ -13799,7 +14990,7 @@ else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat >conftest.$ac_ext <<_ACEOF
-#line 13802 "configure"
+#line 14993 "configure"
#include "confdefs.h"
#ifndef __cplusplus
static $ac_kw int static_foo () {return 0; }
@@ -13808,16 +14999,16 @@ $ac_kw int foo () {return 0; }
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13811: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15002: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13814: \$? = $ac_status" >&5
+ echo "$as_me:15005: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13817: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15008: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13820: \$? = $ac_status" >&5
+ echo "$as_me:15011: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_c_inline=$ac_kw; break
else
@@ -13828,7 +15019,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:13831: result: $ac_cv_c_inline" >&5
+echo "$as_me:15022: result: $ac_cv_c_inline" >&5
echo "${ECHO_T}$ac_cv_c_inline" >&6
case $ac_cv_c_inline in
inline | yes) ;;
@@ -13849,9 +15040,12 @@ if test "$ac_cv_c_inline" != no ; then
if test "$INTEL_COMPILER" = yes
then
:
+ elif test "$CLANG_COMPILER" = yes
+ then
+ :
elif test "$GCC" = yes
then
- echo "$as_me:13854: checking if $CC supports options to tune inlining" >&5
+ echo "$as_me:15048: checking if $CC supports options to tune inlining" >&5
echo $ECHO_N "checking if $CC supports options to tune inlining... $ECHO_C" >&6
if test "${cf_cv_gcc_inline+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13860,7 +15054,7 @@ else
cf_save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS --param max-inline-insns-single=1200"
cat >conftest.$ac_ext <<_ACEOF
-#line 13863 "configure"
+#line 15057 "configure"
#include "confdefs.h"
inline int foo(void) { return 1; }
int
@@ -13872,16 +15066,16 @@ ${cf_cv_main_return:-return} foo()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:13875: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15069: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:13878: \$? = $ac_status" >&5
+ echo "$as_me:15072: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:13881: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15075: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:13884: \$? = $ac_status" >&5
+ echo "$as_me:15078: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_gcc_inline=yes
else
@@ -13893,7 +15087,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
CFLAGS=$cf_save_CFLAGS
fi
-echo "$as_me:13896: result: $cf_cv_gcc_inline" >&5
+echo "$as_me:15090: result: $cf_cv_gcc_inline" >&5
echo "${ECHO_T}$cf_cv_gcc_inline" >&6
if test "$cf_cv_gcc_inline" = yes ; then
@@ -13979,7 +15173,7 @@ fi
fi
fi
-echo "$as_me:13982: checking for signal global datatype" >&5
+echo "$as_me:15176: checking for signal global datatype" >&5
echo $ECHO_N "checking for signal global datatype... $ECHO_C" >&6
if test "${cf_cv_sig_atomic_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -13991,7 +15185,7 @@ else
"int"
do
cat >conftest.$ac_ext <<_ACEOF
-#line 13994 "configure"
+#line 15188 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -14014,16 +15208,16 @@ signal(SIGINT, handler);
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14017: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15211: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14020: \$? = $ac_status" >&5
+ echo "$as_me:15214: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14023: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15217: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14026: \$? = $ac_status" >&5
+ echo "$as_me:15220: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_sig_atomic_t=$cf_type
else
@@ -14037,15 +15231,16 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14040: result: $cf_cv_sig_atomic_t" >&5
+echo "$as_me:15234: result: $cf_cv_sig_atomic_t" >&5
echo "${ECHO_T}$cf_cv_sig_atomic_t" >&6
-test "$cf_cv_sig_atomic_t" != no && cat >>confdefs.h <<EOF
+test "$cf_cv_sig_atomic_t" != no &&
+cat >>confdefs.h <<EOF
#define SIG_ATOMIC_T $cf_cv_sig_atomic_t
EOF
if test $NCURSES_CHTYPE = auto ; then
-echo "$as_me:14048: checking for type of chtype" >&5
+echo "$as_me:15243: 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
@@ -14055,7 +15250,7 @@ else
cf_cv_typeof_chtype=long
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14058 "configure"
+#line 15253 "configure"
#include "confdefs.h"
#define WANT_BITS 31
@@ -14090,15 +15285,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14093: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15288: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14096: \$? = $ac_status" >&5
+ echo "$as_me:15291: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14098: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15293: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14101: \$? = $ac_status" >&5
+ echo "$as_me:15296: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_typeof_chtype=`cat cf_test.out`
else
@@ -14113,7 +15308,7 @@ fi
fi
-echo "$as_me:14116: result: $cf_cv_typeof_chtype" >&5
+echo "$as_me:15311: result: $cf_cv_typeof_chtype" >&5
echo "${ECHO_T}$cf_cv_typeof_chtype" >&6
cat >>confdefs.h <<EOF
@@ -14125,14 +15320,14 @@ else
fi
test "$cf_cv_typeof_chtype" = unsigned && cf_cv_typeof_chtype=""
-echo "$as_me:14128: checking if unsigned literals are legal" >&5
+echo "$as_me:15323: 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 14135 "configure"
+#line 15330 "configure"
#include "confdefs.h"
int
@@ -14144,16 +15339,16 @@ long x = 1L + 1UL + 1U + 1
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14147: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15342: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14150: \$? = $ac_status" >&5
+ echo "$as_me:15345: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14153: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15348: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14156: \$? = $ac_status" >&5
+ echo "$as_me:15351: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_unsigned_literals=yes
else
@@ -14165,7 +15360,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14168: result: $cf_cv_unsigned_literals" >&5
+echo "$as_me:15363: result: $cf_cv_unsigned_literals" >&5
echo "${ECHO_T}$cf_cv_unsigned_literals" >&6
cf_cv_1UL="1"
@@ -14181,14 +15376,14 @@ test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t=""
### Checks for external-data
-echo "$as_me:14184: checking if external errno is declared" >&5
+echo "$as_me:15379: checking if external errno is declared" >&5
echo $ECHO_N "checking if external errno is declared... $ECHO_C" >&6
if test "${cf_cv_dcl_errno+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14191 "configure"
+#line 15386 "configure"
#include "confdefs.h"
#ifdef HAVE_STDLIB_H
@@ -14206,16 +15401,16 @@ int x = (int) errno
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14209: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15404: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14212: \$? = $ac_status" >&5
+ echo "$as_me:15407: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14215: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15410: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14218: \$? = $ac_status" >&5
+ echo "$as_me:15413: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_dcl_errno=yes
else
@@ -14226,7 +15421,7 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:14229: result: $cf_cv_dcl_errno" >&5
+echo "$as_me:15424: result: $cf_cv_dcl_errno" >&5
echo "${ECHO_T}$cf_cv_dcl_errno" >&6
if test "$cf_cv_dcl_errno" = no ; then
@@ -14241,14 +15436,14 @@ fi
# It's possible (for near-UNIX clones) that the data doesn't exist
-echo "$as_me:14244: checking if external errno exists" >&5
+echo "$as_me:15439: checking if external errno exists" >&5
echo $ECHO_N "checking if external errno exists... $ECHO_C" >&6
if test "${cf_cv_have_errno+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14251 "configure"
+#line 15446 "configure"
#include "confdefs.h"
#undef errno
@@ -14263,16 +15458,16 @@ errno = 2
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14266: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15461: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14269: \$? = $ac_status" >&5
+ echo "$as_me:15464: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14272: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15467: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14275: \$? = $ac_status" >&5
+ echo "$as_me:15470: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have_errno=yes
else
@@ -14283,7 +15478,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:14286: result: $cf_cv_have_errno" >&5
+echo "$as_me:15481: result: $cf_cv_have_errno" >&5
echo "${ECHO_T}$cf_cv_have_errno" >&6
if test "$cf_cv_have_errno" = yes ; then
@@ -14296,7 +15491,7 @@ EOF
fi
-echo "$as_me:14299: checking if data-only library module links" >&5
+echo "$as_me:15494: 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
@@ -14304,20 +15499,20 @@ else
rm -f conftest.a
cat >conftest.$ac_ext <<EOF
-#line 14307 "configure"
+#line 15502 "configure"
int testdata[3] = { 123, 456, 789 };
EOF
- if { (eval echo "$as_me:14310: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:15505: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14313: \$? = $ac_status" >&5
+ echo "$as_me:15508: \$? = $ac_status" >&5
(exit $ac_status); } ; then
mv conftest.o data.o && \
( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null
fi
rm -f conftest.$ac_ext data.o
cat >conftest.$ac_ext <<EOF
-#line 14320 "configure"
+#line 15515 "configure"
int testfunc()
{
#if defined(NeXT)
@@ -14330,10 +15525,10 @@ int testfunc()
#endif
}
EOF
- if { (eval echo "$as_me:14333: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:15528: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14336: \$? = $ac_status" >&5
+ echo "$as_me:15531: \$? = $ac_status" >&5
(exit $ac_status); }; then
mv conftest.o func.o && \
( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null
@@ -14346,7 +15541,7 @@ EOF
cf_cv_link_dataonly=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14349 "configure"
+#line 15544 "configure"
#include "confdefs.h"
int main()
@@ -14357,15 +15552,15 @@ else
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14360: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15555: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14363: \$? = $ac_status" >&5
+ echo "$as_me:15558: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14365: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15560: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14368: \$? = $ac_status" >&5
+ echo "$as_me:15563: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_link_dataonly=yes
else
@@ -14380,11 +15575,12 @@ fi
fi
-echo "$as_me:14383: result: $cf_cv_link_dataonly" >&5
+echo "$as_me:15578: 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
@@ -14400,10 +15596,12 @@ geteuid \
getttynam \
issetugid \
poll \
+putenv \
remove \
select \
setbuf \
setbuffer \
+setenv \
setvbuf \
sigaction \
sigvec \
@@ -14415,13 +15613,13 @@ vsnprintf \
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:14418: checking for $ac_func" >&5
+echo "$as_me:15616: 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 14424 "configure"
+#line 15622 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below. */
@@ -14444,7 +15642,7 @@ main ()
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -14452,16 +15650,16 @@ f = $ac_func;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14455: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15653: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14458: \$? = $ac_status" >&5
+ echo "$as_me:15656: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14461: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15659: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14464: \$? = $ac_status" >&5
+ echo "$as_me:15662: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -14471,7 +15669,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:14474: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:15672: 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
@@ -14481,16 +15679,16 @@ EOF
fi
done
-if test "$with_getcap" = "yes" ; then
+if test "x$with_getcap" = "xyes" ; then
-echo "$as_me:14486: checking for terminal-capability database functions" >&5
+echo "$as_me:15684: checking for terminal-capability database functions" >&5
echo $ECHO_N "checking for terminal-capability database functions... $ECHO_C" >&6
if test "${cf_cv_cgetent+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14493 "configure"
+#line 15691 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -14501,7 +15699,7 @@ main ()
char temp[128];
char *buf = temp;
char *db_array = temp;
- cgetent(&buf, /* int *, */ &db_array, "vt100");
+ cgetent(&buf, &db_array, "vt100");
cgetcap(buf, "tc", '=');
cgetmatch(buf, "tc");
@@ -14510,16 +15708,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14513: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15711: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14516: \$? = $ac_status" >&5
+ echo "$as_me:15714: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14519: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15717: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14522: \$? = $ac_status" >&5
+ echo "$as_me:15720: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_cgetent=yes
else
@@ -14530,23 +15728,87 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-
-echo "$as_me:14534: result: $cf_cv_cgetent" >&5
+echo "$as_me:15731: result: $cf_cv_cgetent" >&5
echo "${ECHO_T}$cf_cv_cgetent" >&6
-test "$cf_cv_cgetent" = yes && cat >>confdefs.h <<\EOF
+
+if test "$cf_cv_cgetent" = yes
+then
+
+cat >>confdefs.h <<\EOF
#define HAVE_BSD_CGETENT 1
EOF
+echo "$as_me:15741: checking if cgetent uses const parameter" >&5
+echo $ECHO_N "checking if cgetent uses const parameter... $ECHO_C" >&6
+if test "${cf_cv_cgetent_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+cat >conftest.$ac_ext <<_ACEOF
+#line 15748 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+int
+main ()
+{
+
+ char temp[128];
+ char *buf = temp;
+#ifndef _NETBSD_SOURCE /* given, since April 2004 in stdlib.h */
+ const char *db_array = temp;
+ cgetent(&buf, &db_array, "vt100");
+#endif
+ cgetcap(buf, "tc", '=');
+ cgetmatch(buf, "tc");
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:15770: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:15773: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:15776: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:15779: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cf_cv_cgetent_const=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+cf_cv_cgetent_const=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+
+fi
+echo "$as_me:15790: result: $cf_cv_cgetent_const" >&5
+echo "${ECHO_T}$cf_cv_cgetent_const" >&6
+ if test "$cf_cv_cgetent_const" = yes
+ then
+
+cat >>confdefs.h <<EOF
+#define CGETENT_CONST const
+EOF
+
+ fi
+fi
+
fi
-echo "$as_me:14542: checking for isascii" >&5
+echo "$as_me:15804: checking for isascii" >&5
echo $ECHO_N "checking for isascii... $ECHO_C" >&6
if test "${cf_cv_have_isascii+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14549 "configure"
+#line 15811 "configure"
#include "confdefs.h"
#include <ctype.h>
int
@@ -14558,16 +15820,16 @@ int x = isascii(' ')
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14561: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15823: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14564: \$? = $ac_status" >&5
+ echo "$as_me:15826: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14567: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15829: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14570: \$? = $ac_status" >&5
+ echo "$as_me:15832: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have_isascii=yes
else
@@ -14578,17 +15840,18 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:14581: result: $cf_cv_have_isascii" >&5
+echo "$as_me:15843: result: $cf_cv_have_isascii" >&5
echo "${ECHO_T}$cf_cv_have_isascii" >&6
-test "$cf_cv_have_isascii" = yes && cat >>confdefs.h <<\EOF
+test "$cf_cv_have_isascii" = yes &&
+cat >>confdefs.h <<\EOF
#define HAVE_ISASCII 1
EOF
if test "$ac_cv_func_sigaction" = yes; then
-echo "$as_me:14588: checking whether sigaction needs _POSIX_SOURCE" >&5
+echo "$as_me:15851: 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 14591 "configure"
+#line 15854 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -14602,16 +15865,16 @@ struct sigaction act
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14605: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15868: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14608: \$? = $ac_status" >&5
+ echo "$as_me:15871: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14611: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15874: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14614: \$? = $ac_status" >&5
+ echo "$as_me:15877: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
sigact_bad=no
else
@@ -14619,7 +15882,7 @@ else
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 14622 "configure"
+#line 15885 "configure"
#include "confdefs.h"
#define _POSIX_SOURCE
@@ -14634,20 +15897,21 @@ struct sigaction act
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14637: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:15900: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14640: \$? = $ac_status" >&5
+ echo "$as_me:15903: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14643: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15906: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14646: \$? = $ac_status" >&5
+ echo "$as_me:15909: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
sigact_bad=yes
- cat >>confdefs.h <<\EOF
-#define SVR4_ACTION 1
+
+cat >>confdefs.h <<\EOF
+#define _POSIX_SOURCE 1
EOF
else
@@ -14658,11 +15922,11 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:14661: result: $sigact_bad" >&5
+echo "$as_me:15925: result: $sigact_bad" >&5
echo "${ECHO_T}$sigact_bad" >&6
fi
-echo "$as_me:14665: checking if nanosleep really works" >&5
+echo "$as_me:15929: 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
@@ -14672,7 +15936,7 @@ if test "$cross_compiling" = yes; then
cf_cv_func_nanosleep=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14675 "configure"
+#line 15939 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -14697,15 +15961,15 @@ int main() {
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:14700: \"$ac_link\"") >&5
+if { (eval echo "$as_me:15964: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14703: \$? = $ac_status" >&5
+ echo "$as_me:15967: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:14705: \"$ac_try\"") >&5
+ { (eval echo "$as_me:15969: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14708: \$? = $ac_status" >&5
+ echo "$as_me:15972: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_nanosleep=yes
else
@@ -14717,10 +15981,11 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:14720: result: $cf_cv_func_nanosleep" >&5
+echo "$as_me:15984: result: $cf_cv_func_nanosleep" >&5
echo "${ECHO_T}$cf_cv_func_nanosleep" >&6
-test "$cf_cv_func_nanosleep" = "yes" && cat >>confdefs.h <<\EOF
+test "$cf_cv_func_nanosleep" = "yes" &&
+cat >>confdefs.h <<\EOF
#define HAVE_NANOSLEEP 1
EOF
@@ -14731,23 +15996,23 @@ unistd.h \
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:14734: checking for $ac_header" >&5
+echo "$as_me:15999: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14740 "configure"
+#line 16005 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:14744: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:16009: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
- echo "$as_me:14750: \$? = $ac_status" >&5
+ echo "$as_me:16015: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -14766,7 +16031,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:14769: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:16034: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<EOF
@@ -14781,23 +16046,23 @@ if test "$ISC" = yes ; then
for ac_header in sys/termio.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:14784: checking for $ac_header" >&5
+echo "$as_me:16049: 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 14790 "configure"
+#line 16055 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:14794: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:16059: \"$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:14800: \$? = $ac_status" >&5
+ echo "$as_me:16065: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -14816,7 +16081,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:14819: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:16084: 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
@@ -14834,10 +16099,10 @@ if test "$ac_cv_header_termios_h" = yes ; then
*) termios_bad=maybe ;;
esac
if test "$termios_bad" = maybe ; then
- echo "$as_me:14837: checking whether termios.h needs _POSIX_SOURCE" >&5
+ echo "$as_me:16102: 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 14840 "configure"
+#line 16105 "configure"
#include "confdefs.h"
#include <termios.h>
int
@@ -14849,16 +16114,16 @@ struct termios foo; int x = foo.c_iflag
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14852: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16117: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14855: \$? = $ac_status" >&5
+ echo "$as_me:16120: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14858: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16123: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14861: \$? = $ac_status" >&5
+ echo "$as_me:16126: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
termios_bad=no
else
@@ -14866,7 +16131,7 @@ else
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 14869 "configure"
+#line 16134 "configure"
#include "confdefs.h"
#define _POSIX_SOURCE
@@ -14880,23 +16145,24 @@ struct termios foo; int x = foo.c_iflag
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:14883: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16148: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:14886: \$? = $ac_status" >&5
+ echo "$as_me:16151: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:14889: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16154: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14892: \$? = $ac_status" >&5
+ echo "$as_me:16157: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
termios_bad=unknown
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-termios_bad=yes cat >>confdefs.h <<\EOF
-#define SVR4_TERMIO 1
+termios_bad=yes
+cat >>confdefs.h <<\EOF
+#define _POSIX_SOURCE 1
EOF
fi
@@ -14904,19 +16170,19 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:14907: result: $termios_bad" >&5
+ echo "$as_me:16173: result: $termios_bad" >&5
echo "${ECHO_T}$termios_bad" >&6
fi
fi
-echo "$as_me:14912: checking for tcgetattr" >&5
+echo "$as_me:16178: checking for tcgetattr" >&5
echo $ECHO_N "checking for tcgetattr... $ECHO_C" >&6
if test "${cf_cv_have_tcgetattr+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14919 "configure"
+#line 16185 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -14944,16 +16210,16 @@ tcgetattr(1, &foo);
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14947: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16213: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14950: \$? = $ac_status" >&5
+ echo "$as_me:16216: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:14953: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16219: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:14956: \$? = $ac_status" >&5
+ echo "$as_me:16222: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have_tcgetattr=yes
else
@@ -14963,20 +16229,21 @@ cf_cv_have_tcgetattr=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:14966: result: $cf_cv_have_tcgetattr" >&5
+echo "$as_me:16232: result: $cf_cv_have_tcgetattr" >&5
echo "${ECHO_T}$cf_cv_have_tcgetattr" >&6
-test "$cf_cv_have_tcgetattr" = yes && cat >>confdefs.h <<\EOF
+test "$cf_cv_have_tcgetattr" = yes &&
+cat >>confdefs.h <<\EOF
#define HAVE_TCGETATTR 1
EOF
-echo "$as_me:14972: checking for vsscanf function or workaround" >&5
+echo "$as_me:16239: checking for vsscanf function or workaround" >&5
echo $ECHO_N "checking for vsscanf function or workaround... $ECHO_C" >&6
if test "${cf_cv_func_vsscanf+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 14979 "configure"
+#line 16246 "configure"
#include "confdefs.h"
#include <stdarg.h>
@@ -14992,16 +16259,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:14995: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16262: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:14998: \$? = $ac_status" >&5
+ echo "$as_me:16265: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15001: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16268: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15004: \$? = $ac_status" >&5
+ echo "$as_me:16271: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_vsscanf=vsscanf
else
@@ -15009,7 +16276,7 @@ else
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 15012 "configure"
+#line 16279 "configure"
#include "confdefs.h"
#include <stdarg.h>
@@ -15031,16 +16298,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15034: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16301: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15037: \$? = $ac_status" >&5
+ echo "$as_me:16304: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15040: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16307: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15043: \$? = $ac_status" >&5
+ echo "$as_me:16310: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_vsscanf=vfscanf
else
@@ -15048,7 +16315,7 @@ else
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 15051 "configure"
+#line 16318 "configure"
#include "confdefs.h"
#include <stdarg.h>
@@ -15070,16 +16337,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15073: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16340: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15076: \$? = $ac_status" >&5
+ echo "$as_me:16343: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15079: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16346: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15082: \$? = $ac_status" >&5
+ echo "$as_me:16349: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_vsscanf=_doscan
else
@@ -15094,25 +16361,28 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15097: result: $cf_cv_func_vsscanf" >&5
+echo "$as_me:16364: 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 "$as_me:15115: checking for working mkstemp" >&5
+echo "$as_me:16385: 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
@@ -15120,68 +16390,10 @@ else
rm -rf conftest*
if test "$cross_compiling" = yes; then
- echo "$as_me:15123: 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
+ cf_cv_func_mkstemp=maybe
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15129 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char mkstemp (); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char mkstemp ();
-char (*f) ();
-
-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
-f = mkstemp;
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15160: \"$ac_link\"") >&5
- (eval $ac_link) 2>&5
- ac_status=$?
- echo "$as_me:15163: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15166: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:15169: \$? = $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:15179: result: $ac_cv_func_mkstemp" >&5
-echo "${ECHO_T}$ac_cv_func_mkstemp" >&6
-
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line 15184 "configure"
+#line 16396 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -15219,15 +16431,15 @@ int main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15222: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16434: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15225: \$? = $ac_status" >&5
+ echo "$as_me:16437: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15227: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16439: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15230: \$? = $ac_status" >&5
+ echo "$as_me:16442: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_mkstemp=yes
@@ -15242,10 +16454,72 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:15245: result: $cf_cv_func_mkstemp" >&5
+echo "$as_me:16457: result: $cf_cv_func_mkstemp" >&5
echo "${ECHO_T}$cf_cv_func_mkstemp" >&6
+if test "x$cf_cv_func_mkstemp" = xmaybe ; then
+ echo "$as_me:16460: checking for mkstemp" >&5
+echo $ECHO_N "checking for mkstemp... $ECHO_C" >&6
+if test "${ac_cv_func_mkstemp+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 16466 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char mkstemp (); below. */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error. */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+ builtin and then its argument prototype would still apply. */
+char mkstemp ();
+char (*f) ();
+
+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
+f = mkstemp; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:16497: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:16500: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest$ac_exeext'
+ { (eval echo "$as_me:16503: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:16506: \$? = $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:16516: result: $ac_cv_func_mkstemp" >&5
+echo "${ECHO_T}$ac_cv_func_mkstemp" >&6
+
+fi
if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define HAVE_MKSTEMP 1
EOF
@@ -15259,22 +16533,22 @@ else
HAVE_VSSCANF=0
fi
-if test "$cross_compiling" = yes ; then
- { echo "$as_me:15263: WARNING: cross compiling: assume setvbuf params not reversed" >&5
+if test "x$cross_compiling" = xyes ; then
+ { echo "$as_me:16537: WARNING: cross compiling: assume setvbuf params not reversed" >&5
echo "$as_me: WARNING: cross compiling: assume setvbuf params not reversed" >&2;}
else
- echo "$as_me:15266: checking whether setvbuf arguments are reversed" >&5
+ echo "$as_me:16540: checking whether setvbuf arguments are reversed" >&5
echo $ECHO_N "checking whether setvbuf arguments are reversed... $ECHO_C" >&6
if test "${ac_cv_func_setvbuf_reversed+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
if test "$cross_compiling" = yes; then
- { { echo "$as_me:15272: error: cannot run test program while cross compiling" >&5
+ { { echo "$as_me:16546: 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 15277 "configure"
+#line 16551 "configure"
#include "confdefs.h"
#include <stdio.h>
/* If setvbuf has the reversed format, exit 0. */
@@ -15291,15 +16565,15 @@ main ()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15294: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16568: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15297: \$? = $ac_status" >&5
+ echo "$as_me:16571: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15299: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16573: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15302: \$? = $ac_status" >&5
+ echo "$as_me:16576: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_setvbuf_reversed=yes
else
@@ -15312,7 +16586,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
rm -f core core.* *.core
fi
-echo "$as_me:15315: result: $ac_cv_func_setvbuf_reversed" >&5
+echo "$as_me:16589: 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
@@ -15323,68 +16597,66 @@ EOF
fi
fi
-echo "$as_me:15326: 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 "$as_me:16600: checking for intptr_t" >&5
+echo $ECHO_N "checking for intptr_t... $ECHO_C" >&6
+if test "${ac_cv_type_intptr_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15332 "configure"
+#line 16606 "configure"
#include "confdefs.h"
-#include <sys/types.h>
-#include <signal.h>
-#ifdef signal
-# undef signal
-#endif
-#ifdef __cplusplus
-extern "C" void (*signal (int, void (*)(int)))(int);
-#else
-void (*signal ()) ();
-#endif
-
+$ac_includes_default
int
main ()
{
-int i;
+if ((intptr_t *) 0)
+ return 0;
+if (sizeof (intptr_t))
+ return 0;
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15354: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16621: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15357: \$? = $ac_status" >&5
+ echo "$as_me:16624: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15360: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16627: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15363: \$? = $ac_status" >&5
+ echo "$as_me:16630: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_type_signal=void
+ ac_cv_type_intptr_t=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
-ac_cv_type_signal=int
+ac_cv_type_intptr_t=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:15373: result: $ac_cv_type_signal" >&5
-echo "${ECHO_T}$ac_cv_type_signal" >&6
+echo "$as_me:16640: result: $ac_cv_type_intptr_t" >&5
+echo "${ECHO_T}$ac_cv_type_intptr_t" >&6
+if test $ac_cv_type_intptr_t = yes; then
+ :
+else
cat >>confdefs.h <<EOF
-#define RETSIGTYPE $ac_cv_type_signal
+#define intptr_t long
EOF
-echo "$as_me:15380: checking for type sigaction_t" >&5
+fi
+
+echo "$as_me:16652: checking for type sigaction_t" >&5
echo $ECHO_N "checking for type sigaction_t... $ECHO_C" >&6
if test "${cf_cv_type_sigaction+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15387 "configure"
+#line 16659 "configure"
#include "confdefs.h"
#include <signal.h>
@@ -15397,16 +16669,16 @@ sigaction_t x
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15400: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16672: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15403: \$? = $ac_status" >&5
+ echo "$as_me:16675: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15406: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16678: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15409: \$? = $ac_status" >&5
+ echo "$as_me:16681: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_type_sigaction=yes
else
@@ -15417,13 +16689,14 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:15420: result: $cf_cv_type_sigaction" >&5
+echo "$as_me:16692: result: $cf_cv_type_sigaction" >&5
echo "${ECHO_T}$cf_cv_type_sigaction" >&6
-test "$cf_cv_type_sigaction" = yes && cat >>confdefs.h <<\EOF
+test "$cf_cv_type_sigaction" = yes &&
+cat >>confdefs.h <<\EOF
#define HAVE_TYPE_SIGACTION 1
EOF
-echo "$as_me:15426: checking declaration of size-change" >&5
+echo "$as_me:16699: 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
@@ -15438,7 +16711,7 @@ do
CPPFLAGS="$cf_save_CPPFLAGS"
test -n "$cf_opts" && CPPFLAGS="$CPPFLAGS -D$cf_opts"
cat >conftest.$ac_ext <<_ACEOF
-#line 15441 "configure"
+#line 16714 "configure"
#include "confdefs.h"
#include <sys/types.h>
#ifdef HAVE_TERMIOS_H
@@ -15482,16 +16755,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15485: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:16758: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15488: \$? = $ac_status" >&5
+ echo "$as_me:16761: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15491: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16764: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15494: \$? = $ac_status" >&5
+ echo "$as_me:16767: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_sizechange=yes
else
@@ -15510,10 +16783,11 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:15513: result: $cf_cv_sizechange" >&5
+echo "$as_me:16786: 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
@@ -15527,13 +16801,13 @@ EOF
esac
fi
-echo "$as_me:15530: checking for memmove" >&5
+echo "$as_me:16804: checking for memmove" >&5
echo $ECHO_N "checking for memmove... $ECHO_C" >&6
if test "${ac_cv_func_memmove+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15536 "configure"
+#line 16810 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char memmove (); below. */
@@ -15556,7 +16830,7 @@ main ()
#if defined (__stub_memmove) || defined (__stub___memmove)
choke me
#else
-f = memmove;
+f = memmove; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -15564,16 +16838,16 @@ f = memmove;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15567: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16841: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15570: \$? = $ac_status" >&5
+ echo "$as_me:16844: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15573: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16847: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15576: \$? = $ac_status" >&5
+ echo "$as_me:16850: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_memmove=yes
else
@@ -15583,19 +16857,19 @@ ac_cv_func_memmove=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15586: result: $ac_cv_func_memmove" >&5
+echo "$as_me:16860: result: $ac_cv_func_memmove" >&5
echo "${ECHO_T}$ac_cv_func_memmove" >&6
if test $ac_cv_func_memmove = yes; then
:
else
-echo "$as_me:15592: checking for bcopy" >&5
+echo "$as_me:16866: checking for bcopy" >&5
echo $ECHO_N "checking for bcopy... $ECHO_C" >&6
if test "${ac_cv_func_bcopy+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15598 "configure"
+#line 16872 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char bcopy (); below. */
@@ -15618,7 +16892,7 @@ main ()
#if defined (__stub_bcopy) || defined (__stub___bcopy)
choke me
#else
-f = bcopy;
+f = bcopy; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -15626,16 +16900,16 @@ f = bcopy;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15629: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16903: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15632: \$? = $ac_status" >&5
+ echo "$as_me:16906: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15635: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16909: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15638: \$? = $ac_status" >&5
+ echo "$as_me:16912: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_bcopy=yes
else
@@ -15645,11 +16919,11 @@ ac_cv_func_bcopy=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15648: result: $ac_cv_func_bcopy" >&5
+echo "$as_me:16922: 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:15652: checking if bcopy does overlapping moves" >&5
+ echo "$as_me:16926: 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
@@ -15659,7 +16933,7 @@ else
cf_cv_good_bcopy=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15662 "configure"
+#line 16936 "configure"
#include "confdefs.h"
int main() {
@@ -15673,15 +16947,15 @@ int main() {
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15676: \"$ac_link\"") >&5
+if { (eval echo "$as_me:16950: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15679: \$? = $ac_status" >&5
+ echo "$as_me:16953: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15681: \"$ac_try\"") >&5
+ { (eval echo "$as_me:16955: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15684: \$? = $ac_status" >&5
+ echo "$as_me:16958: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_good_bcopy=yes
else
@@ -15694,7 +16968,7 @@ rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:15697: result: $cf_cv_good_bcopy" >&5
+echo "$as_me:16971: result: $cf_cv_good_bcopy" >&5
echo "${ECHO_T}$cf_cv_good_bcopy" >&6
else
@@ -15702,12 +16976,14 @@ else
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
@@ -15715,7 +16991,7 @@ EOF
fi
-echo "$as_me:15718: checking if poll really works" >&5
+echo "$as_me:16994: 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
@@ -15725,10 +17001,13 @@ if test "$cross_compiling" = yes; then
cf_cv_working_poll=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15728 "configure"
+#line 17004 "configure"
#include "confdefs.h"
+#include <stdlib.h>
#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
#ifdef HAVE_POLL_H
#include <poll.h>
#else
@@ -15738,23 +17017,46 @@ int main() {
struct pollfd myfds;
int ret;
- myfds.fd = 0;
+ /* check for Darwin bug with respect to "devices" */
+ myfds.fd = open("/dev/null", 1); /* O_WRONLY */
+ if (myfds.fd < 0)
+ myfds.fd = 0;
myfds.events = POLLIN;
+ myfds.revents = 0;
ret = poll(&myfds, 1, 100);
- ${cf_cv_main_return:-return}(ret != 0);
+
+ if (ret < 0 || (myfds.revents & POLLNVAL)) {
+ ret = -1;
+ } else {
+ int fd = 0;
+ if (!isatty(fd)) {
+ fd = open("/dev/tty", 2); /* O_RDWR */
+ }
+
+ if (fd >= 0) {
+ /* also check with standard input */
+ myfds.fd = fd;
+ myfds.events = POLLIN;
+ myfds.revents = 0;
+ ret = poll(&myfds, 1, 100);
+ } else {
+ ret = -1;
+ }
+ }
+ ${cf_cv_main_return:-return}(ret < 0);
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:15749: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17051: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15752: \$? = $ac_status" >&5
+ echo "$as_me:17054: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:15754: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17056: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15757: \$? = $ac_status" >&5
+ echo "$as_me:17059: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_working_poll=yes
else
@@ -15766,20 +17068,21 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:15769: result: $cf_cv_working_poll" >&5
+echo "$as_me:17071: result: $cf_cv_working_poll" >&5
echo "${ECHO_T}$cf_cv_working_poll" >&6
-test "$cf_cv_working_poll" = "yes" && cat >>confdefs.h <<\EOF
+test "$cf_cv_working_poll" = "yes" &&
+cat >>confdefs.h <<\EOF
#define HAVE_WORKING_POLL 1
EOF
-echo "$as_me:15775: checking for va_copy" >&5
+echo "$as_me:17078: checking for va_copy" >&5
echo $ECHO_N "checking for va_copy... $ECHO_C" >&6
if test "${cf_cv_have_va_copy+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15782 "configure"
+#line 17085 "configure"
#include "confdefs.h"
#include <stdarg.h>
@@ -15796,16 +17099,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15799: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17102: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15802: \$? = $ac_status" >&5
+ echo "$as_me:17105: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15805: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17108: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15808: \$? = $ac_status" >&5
+ echo "$as_me:17111: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have_va_copy=yes
else
@@ -15815,21 +17118,22 @@ cf_cv_have_va_copy=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15818: result: $cf_cv_have_va_copy" >&5
+echo "$as_me:17121: result: $cf_cv_have_va_copy" >&5
echo "${ECHO_T}$cf_cv_have_va_copy" >&6
-test "$cf_cv_have_va_copy" = yes && cat >>confdefs.h <<\EOF
+test "$cf_cv_have_va_copy" = yes &&
+cat >>confdefs.h <<\EOF
#define HAVE_VA_COPY 1
EOF
-echo "$as_me:15825: checking for __va_copy" >&5
+echo "$as_me:17129: checking for __va_copy" >&5
echo $ECHO_N "checking for __va_copy... $ECHO_C" >&6
if test "${cf_cv_have___va_copy+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15832 "configure"
+#line 17136 "configure"
#include "confdefs.h"
#include <stdarg.h>
@@ -15846,16 +17150,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:15849: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17153: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:15852: \$? = $ac_status" >&5
+ echo "$as_me:17156: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:15855: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17159: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15858: \$? = $ac_status" >&5
+ echo "$as_me:17162: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_have___va_copy=yes
else
@@ -15865,20 +17169,21 @@ cf_cv_have___va_copy=no
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:15868: result: $cf_cv_have___va_copy" >&5
+echo "$as_me:17172: result: $cf_cv_have___va_copy" >&5
echo "${ECHO_T}$cf_cv_have___va_copy" >&6
-test "$cf_cv_have___va_copy" = yes && cat >>confdefs.h <<\EOF
+test "$cf_cv_have___va_copy" = yes &&
+cat >>confdefs.h <<\EOF
#define HAVE___VA_COPY 1
EOF
-echo "$as_me:15875: checking for pid_t" >&5
+echo "$as_me:17180: checking for pid_t" >&5
echo $ECHO_N "checking for pid_t... $ECHO_C" >&6
if test "${ac_cv_type_pid_t+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
-#line 15881 "configure"
+#line 17186 "configure"
#include "confdefs.h"
$ac_includes_default
int
@@ -15893,16 +17198,16 @@ if (sizeof (pid_t))
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:15896: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17201: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:15899: \$? = $ac_status" >&5
+ echo "$as_me:17204: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:15902: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17207: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:15905: \$? = $ac_status" >&5
+ echo "$as_me:17210: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_type_pid_t=yes
else
@@ -15912,7 +17217,7 @@ ac_cv_type_pid_t=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:15915: result: $ac_cv_type_pid_t" >&5
+echo "$as_me:17220: result: $ac_cv_type_pid_t" >&5
echo "${ECHO_T}$ac_cv_type_pid_t" >&6
if test $ac_cv_type_pid_t = yes; then
:
@@ -15927,23 +17232,23 @@ fi
for ac_header in unistd.h vfork.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:15930: checking for $ac_header" >&5
+echo "$as_me:17235: 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 15936 "configure"
+#line 17241 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:15940: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:17245: \"$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:15946: \$? = $ac_status" >&5
+ echo "$as_me:17251: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -15962,7 +17267,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:15965: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:17270: 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
@@ -15975,13 +17280,13 @@ done
for ac_func in fork vfork
do
as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:15978: checking for $ac_func" >&5
+echo "$as_me:17283: 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 15984 "configure"
+#line 17289 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below. */
@@ -16004,7 +17309,7 @@ main ()
#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
choke me
#else
-f = $ac_func;
+f = $ac_func; /* workaround for ICC 12.0.3 */ if (f == 0) return 1;
#endif
;
@@ -16012,16 +17317,16 @@ f = $ac_func;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16015: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17320: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16018: \$? = $ac_status" >&5
+ echo "$as_me:17323: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16021: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17326: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16024: \$? = $ac_status" >&5
+ echo "$as_me:17329: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
eval "$as_ac_var=yes"
else
@@ -16031,7 +17336,7 @@ eval "$as_ac_var=no"
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
-echo "$as_me:16034: result: `eval echo '${'$as_ac_var'}'`" >&5
+echo "$as_me:17339: 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
@@ -16043,7 +17348,7 @@ done
ac_cv_func_fork_works=$ac_cv_func_fork
if test "x$ac_cv_func_fork" = xyes; then
- echo "$as_me:16046: checking for working fork" >&5
+ echo "$as_me:17351: checking for working fork" >&5
echo $ECHO_N "checking for working fork... $ECHO_C" >&6
if test "${ac_cv_func_fork_works+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16066,15 +17371,15 @@ else
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:16069: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17374: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16072: \$? = $ac_status" >&5
+ echo "$as_me:17377: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:16074: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17379: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16077: \$? = $ac_status" >&5
+ echo "$as_me:17382: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_fork_works=yes
else
@@ -16086,7 +17391,7 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:16089: result: $ac_cv_func_fork_works" >&5
+echo "$as_me:17394: result: $ac_cv_func_fork_works" >&5
echo "${ECHO_T}$ac_cv_func_fork_works" >&6
fi
@@ -16100,12 +17405,12 @@ if test "x$ac_cv_func_fork_works" = xcross; then
ac_cv_func_fork_works=yes
;;
esac
- { echo "$as_me:16103: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&5
+ { echo "$as_me:17408: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&5
echo "$as_me: WARNING: CROSS: Result $ac_cv_func_fork_works guessed due to cross-compiling." >&2;}
fi
ac_cv_func_vfork_works=$ac_cv_func_vfork
if test "x$ac_cv_func_vfork" = xyes; then
- echo "$as_me:16108: checking for working vfork" >&5
+ echo "$as_me:17413: checking for working vfork" >&5
echo $ECHO_N "checking for working vfork... $ECHO_C" >&6
if test "${ac_cv_func_vfork_works+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16114,7 +17419,7 @@ else
ac_cv_func_vfork_works=cross
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16117 "configure"
+#line 17422 "configure"
#include "confdefs.h"
/* Thanks to Paul Eggert for this test. */
#include <stdio.h>
@@ -16211,15 +17516,15 @@ main ()
}
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:16214: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17519: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16217: \$? = $ac_status" >&5
+ echo "$as_me:17522: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:16219: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17524: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16222: \$? = $ac_status" >&5
+ echo "$as_me:17527: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_func_vfork_works=yes
else
@@ -16231,13 +17536,13 @@ fi
rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
-echo "$as_me:16234: result: $ac_cv_func_vfork_works" >&5
+echo "$as_me:17539: result: $ac_cv_func_vfork_works" >&5
echo "${ECHO_T}$ac_cv_func_vfork_works" >&6
fi;
if test "x$ac_cv_func_fork_works" = xcross; then
ac_cv_func_vfork_works=ac_cv_func_vfork
- { echo "$as_me:16240: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&5
+ { echo "$as_me:17545: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&5
echo "$as_me: WARNING: CROSS: Result $ac_cv_func_vfork_works guessed due to cross-compiling." >&2;}
fi
@@ -16264,7 +17569,7 @@ fi
# special check for test/ditto.c
-echo "$as_me:16267: checking for openpty in -lutil" >&5
+echo "$as_me:17572: checking for openpty in -lutil" >&5
echo $ECHO_N "checking for openpty in -lutil... $ECHO_C" >&6
if test "${ac_cv_lib_util_openpty+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16272,7 +17577,7 @@ else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lutil $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 16275 "configure"
+#line 17580 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
@@ -16291,16 +17596,16 @@ openpty ();
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16294: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17599: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16297: \$? = $ac_status" >&5
+ echo "$as_me:17602: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16300: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17605: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16303: \$? = $ac_status" >&5
+ echo "$as_me:17608: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_util_openpty=yes
else
@@ -16311,7 +17616,7 @@ fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-echo "$as_me:16314: result: $ac_cv_lib_util_openpty" >&5
+echo "$as_me:17619: result: $ac_cv_lib_util_openpty" >&5
echo "${ECHO_T}$ac_cv_lib_util_openpty" >&6
if test $ac_cv_lib_util_openpty = yes; then
cf_cv_lib_util=yes
@@ -16319,7 +17624,7 @@ else
cf_cv_lib_util=no
fi
-echo "$as_me:16322: checking for openpty header" >&5
+echo "$as_me:17627: checking for openpty header" >&5
echo $ECHO_N "checking for openpty header... $ECHO_C" >&6
if test "${cf_cv_func_openpty+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -16330,7 +17635,7 @@ else
for cf_header in pty.h libutil.h util.h
do
cat >conftest.$ac_ext <<_ACEOF
-#line 16333 "configure"
+#line 17638 "configure"
#include "confdefs.h"
#include <$cf_header>
@@ -16347,16 +17652,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16350: \"$ac_link\"") >&5
+if { (eval echo "$as_me:17655: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16353: \$? = $ac_status" >&5
+ echo "$as_me:17658: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16356: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17661: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16359: \$? = $ac_status" >&5
+ echo "$as_me:17664: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_func_openpty=$cf_header
@@ -16374,25 +17679,27 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save_LIBS"
fi
-echo "$as_me:16377: result: $cf_cv_func_openpty" >&5
+echo "$as_me:17682: result: $cf_cv_func_openpty" >&5
echo "${ECHO_T}$cf_cv_func_openpty" >&6
if test "$cf_cv_func_openpty" != no ; then
- cat >>confdefs.h <<EOF
+
+cat >>confdefs.h <<EOF
#define USE_OPENPTY_HEADER <$cf_cv_func_openpty>
EOF
- cat >>confdefs.h <<\EOF
+cat >>confdefs.h <<\EOF
#define USE_XTERM_PTY 1
EOF
- if test "$cf_cv_lib_util" = yes ; then
+ if test "x$cf_cv_lib_util" = xyes ; then
TEST_LIBS="-lutil $TEST_LIBS"
fi
fi
if test "$with_hashed_db" != no ; then
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define USE_HASHED_DB 1
EOF
@@ -16426,7 +17733,7 @@ if test -n "$with_hashed_db/include" ; then
cf_save_CPPFLAGS=$CPPFLAGS
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
cat >conftest.$ac_ext <<_ACEOF
-#line 16429 "configure"
+#line 17736 "configure"
#include "confdefs.h"
#include <stdio.h>
int
@@ -16438,16 +17745,16 @@ printf("Hello")
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16441: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17748: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16444: \$? = $ac_status" >&5
+ echo "$as_me:17751: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16447: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17754: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16450: \$? = $ac_status" >&5
+ echo "$as_me:17757: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
:
else
@@ -16464,7 +17771,7 @@ rm -f conftest.$ac_objext conftest.$ac_ext
if test "$cf_have_incdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6
-echo "${as_me:-configure}:16467: testing adding $cf_add_incdir to include-path ..." 1>&5
+echo "${as_me:-configure}:17774: testing adding $cf_add_incdir to include-path ..." 1>&5
CPPFLAGS="$CPPFLAGS -I$cf_add_incdir"
@@ -16498,7 +17805,7 @@ if test -n "$with_hashed_db/lib" ; then
if test "$cf_have_libdir" = no ; then
test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6
-echo "${as_me:-configure}:16501: testing adding $cf_add_libdir to library-path ..." 1>&5
+echo "${as_me:-configure}:17808: testing adding $cf_add_libdir to library-path ..." 1>&5
LDFLAGS="-L$cf_add_libdir $LDFLAGS"
fi
@@ -16509,23 +17816,23 @@ fi
fi
esac
-echo "$as_me:16512: checking for db.h" >&5
+echo "$as_me:17819: 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 16518 "configure"
+#line 17825 "configure"
#include "confdefs.h"
#include <db.h>
_ACEOF
-if { (eval echo "$as_me:16522: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:17829: \"$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:16528: \$? = $ac_status" >&5
+ echo "$as_me:17835: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
@@ -16544,11 +17851,11 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:16547: result: $ac_cv_header_db_h" >&5
+echo "$as_me:17854: 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:16551: checking for version of db" >&5
+echo "$as_me:17858: 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
@@ -16559,10 +17866,10 @@ cf_cv_hashed_db_version=unknown
for cf_db_version in 1 2 3 4 5
do
-echo "${as_me:-configure}:16562: testing checking for db version $cf_db_version ..." 1>&5
+echo "${as_me:-configure}:17869: testing checking for db version $cf_db_version ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 16565 "configure"
+#line 17872 "configure"
#include "confdefs.h"
$ac_includes_default
@@ -16592,16 +17899,16 @@ DBT *foo = 0
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16595: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:17902: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16598: \$? = $ac_status" >&5
+ echo "$as_me:17905: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16601: \"$ac_try\"") >&5
+ { (eval echo "$as_me:17908: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16604: \$? = $ac_status" >&5
+ echo "$as_me:17911: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_hashed_db_version=$cf_db_version
@@ -16615,16 +17922,16 @@ rm -f conftest.$ac_objext conftest.$ac_ext
done
fi
-echo "$as_me:16618: result: $cf_cv_hashed_db_version" >&5
+echo "$as_me:17925: 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:16622: error: Cannot determine version of db" >&5
+ { { echo "$as_me:17929: error: Cannot determine version of db" >&5
echo "$as_me: error: Cannot determine version of db" >&2;}
{ (exit 1); exit 1; }; }
else
-echo "$as_me:16627: checking for db libraries" >&5
+echo "$as_me:17934: 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
@@ -16638,10 +17945,10 @@ do
LIBS="-l$cf_db_libs $LIBS"
fi
-echo "${as_me:-configure}:16641: testing checking for library "$cf_db_libs" ..." 1>&5
+echo "${as_me:-configure}:17948: testing checking for library "$cf_db_libs" ..." 1>&5
cat >conftest.$ac_ext <<_ACEOF
-#line 16644 "configure"
+#line 17951 "configure"
#include "confdefs.h"
$ac_includes_default
@@ -16696,16 +18003,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16699: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18006: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16702: \$? = $ac_status" >&5
+ echo "$as_me:18009: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16705: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18012: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16708: \$? = $ac_status" >&5
+ echo "$as_me:18015: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
if test -n "$cf_db_libs" ; then
@@ -16725,11 +18032,11 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
done
fi
-echo "$as_me:16728: result: $cf_cv_hashed_db_libs" >&5
+echo "$as_me:18035: 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:16732: error: Cannot determine library for db" >&5
+ { { echo "$as_me:18039: 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
@@ -16739,7 +18046,7 @@ fi
else
- { { echo "$as_me:16742: error: Cannot find db.h" >&5
+ { { echo "$as_me:18049: error: Cannot find db.h" >&5
echo "$as_me: error: Cannot find db.h" >&2;}
{ (exit 1); exit 1; }; }
@@ -16754,7 +18061,7 @@ fi
# Just in case, check if the C compiler has a bool type.
-echo "$as_me:16757: checking if we should include stdbool.h" >&5
+echo "$as_me:18064: 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
@@ -16762,7 +18069,7 @@ if test "${cf_cv_header_stdbool_h+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16765 "configure"
+#line 18072 "configure"
#include "confdefs.h"
int
@@ -16774,23 +18081,23 @@ bool foo = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16777: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18084: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16780: \$? = $ac_status" >&5
+ echo "$as_me:18087: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16783: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18090: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16786: \$? = $ac_status" >&5
+ echo "$as_me:18093: \$? = $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 16793 "configure"
+#line 18100 "configure"
#include "confdefs.h"
#ifndef __BEOS__
@@ -16806,16 +18113,16 @@ bool foo = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16809: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18116: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16812: \$? = $ac_status" >&5
+ echo "$as_me:18119: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16815: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18122: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16818: \$? = $ac_status" >&5
+ echo "$as_me:18125: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_header_stdbool_h=1
else
@@ -16829,13 +18136,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
if test "$cf_cv_header_stdbool_h" = 1
-then echo "$as_me:16832: result: yes" >&5
+then echo "$as_me:18139: result: yes" >&5
echo "${ECHO_T}yes" >&6
-else echo "$as_me:16834: result: no" >&5
+else echo "$as_me:18141: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-echo "$as_me:16838: checking for builtin bool type" >&5
+echo "$as_me:18145: 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
@@ -16843,7 +18150,7 @@ if test "${cf_cv_cc_bool_type+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line 16846 "configure"
+#line 18153 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -16858,16 +18165,16 @@ bool x = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:16861: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18168: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:16864: \$? = $ac_status" >&5
+ echo "$as_me:18171: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:16867: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18174: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16870: \$? = $ac_status" >&5
+ echo "$as_me:18177: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_cc_bool_type=1
else
@@ -16880,9 +18187,9 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
if test "$cf_cv_cc_bool_type" = 1
-then echo "$as_me:16883: result: yes" >&5
+then echo "$as_me:18190: result: yes" >&5
echo "${ECHO_T}yes" >&6
-else echo "$as_me:16885: result: no" >&5
+else echo "$as_me:18192: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -16904,7 +18211,7 @@ os2*) #(vi
cf_stdcpp_libname=stdc++
;;
esac
-echo "$as_me:16907: checking for library $cf_stdcpp_libname" >&5
+echo "$as_me:18214: 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
@@ -16913,7 +18220,7 @@ else
cf_save="$LIBS"
LIBS="-l$cf_stdcpp_libname $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 16916 "configure"
+#line 18223 "configure"
#include "confdefs.h"
#include <strstream.h>
@@ -16929,16 +18236,16 @@ strstreambuf foo(buf, sizeof(buf))
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:16932: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18239: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:16935: \$? = $ac_status" >&5
+ echo "$as_me:18242: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:16938: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18245: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16941: \$? = $ac_status" >&5
+ echo "$as_me:18248: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_libstdcpp=yes
else
@@ -16950,12 +18257,12 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save"
fi
-echo "$as_me:16953: result: $cf_cv_libstdcpp" >&5
+echo "$as_me:18260: result: $cf_cv_libstdcpp" >&5
echo "${ECHO_T}$cf_cv_libstdcpp" >&6
test "$cf_cv_libstdcpp" = yes && CXXLIBS="-l$cf_stdcpp_libname $CXXLIBS"
fi
- echo "$as_me:16958: checking whether $CXX understands -c and -o together" >&5
+ echo "$as_me:18265: 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
@@ -16971,15 +18278,15 @@ 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:16974: \"$ac_try\"") >&5
+if { (eval echo "$as_me:18281: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16977: \$? = $ac_status" >&5
+ echo "$as_me:18284: \$? = $ac_status" >&5
(exit $ac_status); } &&
- test -f conftest2.$ac_objext && { (eval echo "$as_me:16979: \"$ac_try\"") >&5
+ test -f conftest2.$ac_objext && { (eval echo "$as_me:18286: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:16982: \$? = $ac_status" >&5
+ echo "$as_me:18289: \$? = $ac_status" >&5
(exit $ac_status); };
then
eval cf_cv_prog_CXX_c_o=yes
@@ -16990,10 +18297,10 @@ rm -rf conftest*
fi
if test $cf_cv_prog_CXX_c_o = yes; then
- echo "$as_me:16993: result: yes" >&5
+ echo "$as_me:18300: result: yes" >&5
echo "${ECHO_T}yes" >&6
else
- echo "$as_me:16996: result: no" >&5
+ echo "$as_me:18303: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -17013,12 +18320,12 @@ os2*) #(vi
;;
esac
if test "$GXX" = yes; then
- echo "$as_me:17016: checking for lib$cf_gpp_libname" >&5
+ echo "$as_me:18323: checking for lib$cf_gpp_libname" >&5
echo $ECHO_N "checking for lib$cf_gpp_libname... $ECHO_C" >&6
cf_save="$LIBS"
LIBS="-l$cf_gpp_libname $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 17021 "configure"
+#line 18328 "configure"
#include "confdefs.h"
#include <$cf_gpp_libname/builtin.h>
@@ -17032,26 +18339,28 @@ two_arg_error_handler_t foo2 = lib_error_handler
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17035: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18342: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17038: \$? = $ac_status" >&5
+ echo "$as_me:18345: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17041: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18348: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17044: \$? = $ac_status" >&5
+ echo "$as_me:18351: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cxx_library=yes
CXXLIBS="-l$cf_gpp_libname $CXXLIBS"
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
@@ -17060,7 +18369,7 @@ else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
cat >conftest.$ac_ext <<_ACEOF
-#line 17063 "configure"
+#line 18372 "configure"
#include "confdefs.h"
#include <builtin.h>
@@ -17074,20 +18383,21 @@ two_arg_error_handler_t foo2 = lib_error_handler
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:17077: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18386: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17080: \$? = $ac_status" >&5
+ echo "$as_me:18389: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:17083: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18392: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17086: \$? = $ac_status" >&5
+ echo "$as_me:18395: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cxx_library=yes
CXXLIBS="-l$cf_gpp_libname $CXXLIBS"
- cat >>confdefs.h <<\EOF
+
+cat >>confdefs.h <<\EOF
#define HAVE_BUILTIN_H 1
EOF
@@ -17100,7 +18410,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS="$cf_save"
- echo "$as_me:17103: result: $cf_cxx_library" >&5
+ echo "$as_me:18413: result: $cf_cxx_library" >&5
echo "${ECHO_T}$cf_cxx_library" >&6
fi
@@ -17116,7 +18426,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
-echo "$as_me:17119: checking how to run the C++ preprocessor" >&5
+echo "$as_me:18429: checking how to run the C++ preprocessor" >&5
echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
if test -z "$CXXCPP"; then
if test "${ac_cv_prog_CXXCPP+set}" = set; then
@@ -17133,18 +18443,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 17136 "configure"
+#line 18446 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:17141: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:18451: \"$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:17147: \$? = $ac_status" >&5
+ echo "$as_me:18457: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -17167,17 +18477,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 17170 "configure"
+#line 18480 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:17174: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:18484: \"$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:17180: \$? = $ac_status" >&5
+ echo "$as_me:18490: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -17214,7 +18524,7 @@ fi
else
ac_cv_prog_CXXCPP=$CXXCPP
fi
-echo "$as_me:17217: result: $CXXCPP" >&5
+echo "$as_me:18527: result: $CXXCPP" >&5
echo "${ECHO_T}$CXXCPP" >&6
ac_preproc_ok=false
for ac_cxx_preproc_warn_flag in '' yes
@@ -17224,18 +18534,18 @@ do
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat >conftest.$ac_ext <<_ACEOF
-#line 17227 "configure"
+#line 18537 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax error
_ACEOF
-if { (eval echo "$as_me:17232: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:18542: \"$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:17238: \$? = $ac_status" >&5
+ echo "$as_me:18548: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -17258,17 +18568,17 @@ rm -f conftest.err conftest.$ac_ext
# OK, works on sane cases. Now check whether non-existent headers
# can be detected and how.
cat >conftest.$ac_ext <<_ACEOF
-#line 17261 "configure"
+#line 18571 "configure"
#include "confdefs.h"
#include <ac_nonexistent.h>
_ACEOF
-if { (eval echo "$as_me:17265: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:18575: \"$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:17271: \$? = $ac_status" >&5
+ echo "$as_me:18581: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -17296,7 +18606,7 @@ rm -f conftest.err conftest.$ac_ext
if $ac_preproc_ok; then
:
else
- { { echo "$as_me:17299: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5
+ { { echo "$as_me:18609: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5
echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -17308,26 +18618,74 @@ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ex
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
-for ac_header in iostream typeinfo
+for ac_header in typeinfo
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+echo "$as_me:18624: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 18630 "configure"
+#include "confdefs.h"
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:18634: \"$ac_cpp conftest.$ac_ext\"") >&5
+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+ ac_status=$?
+ egrep -v '^ *\+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:18640: \$? = $ac_status" >&5
+ (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 "$as_me: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ eval "$as_ac_Header=no"
+fi
+rm -f conftest.err conftest.$ac_ext
+fi
+echo "$as_me:18659: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<EOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+EOF
+
+fi
+done
+
+for ac_header in iostream
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-echo "$as_me:17314: checking for $ac_header" >&5
+echo "$as_me:18672: 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 17320 "configure"
+#line 18678 "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
-if { (eval echo "$as_me:17324: \"$ac_cpp conftest.$ac_ext\"") >&5
+if { (eval echo "$as_me:18682: \"$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:17330: \$? = $ac_status" >&5
+ echo "$as_me:18688: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_cxx_preproc_warn_flag
@@ -17346,7 +18704,7 @@ else
fi
rm -f conftest.err conftest.$ac_ext
fi
-echo "$as_me:17349: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "$as_me:18707: 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
@@ -17356,11 +18714,11 @@ EOF
fi
done
- if test x"$ac_cv_header_iostream" = xyes ; then
- echo "$as_me:17360: checking if iostream uses std-namespace" >&5
+if test x"$ac_cv_header_iostream" = xyes ; then
+ echo "$as_me:18718: checking if iostream uses std-namespace" >&5
echo $ECHO_N "checking if iostream uses std-namespace... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
-#line 17363 "configure"
+ cat >conftest.$ac_ext <<_ACEOF
+#line 18721 "configure"
#include "confdefs.h"
#include <iostream>
@@ -17377,16 +18735,16 @@ cerr << "testing" << endl;
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17380: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18738: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:17383: \$? = $ac_status" >&5
+ echo "$as_me:18741: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17386: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18744: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17389: \$? = $ac_status" >&5
+ echo "$as_me:18747: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_iostream_namespace=yes
else
@@ -17395,17 +18753,18 @@ cat conftest.$ac_ext >&5
cf_iostream_namespace=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
- echo "$as_me:17398: result: $cf_iostream_namespace" >&5
+ echo "$as_me:18756: result: $cf_iostream_namespace" >&5
echo "${ECHO_T}$cf_iostream_namespace" >&6
- if test "$cf_iostream_namespace" = yes ; then
- cat >>confdefs.h <<\EOF
+ if test "$cf_iostream_namespace" = yes ; then
+
+cat >>confdefs.h <<\EOF
#define IOSTREAM_NAMESPACE 1
EOF
- fi
- fi
+ fi
+fi
-echo "$as_me:17408: checking if we should include stdbool.h" >&5
+echo "$as_me:18767: 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
@@ -17413,7 +18772,7 @@ if test "${cf_cv_header_stdbool_h+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17416 "configure"
+#line 18775 "configure"
#include "confdefs.h"
int
@@ -17425,23 +18784,23 @@ bool foo = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17428: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18787: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:17431: \$? = $ac_status" >&5
+ echo "$as_me:18790: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17434: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18793: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17437: \$? = $ac_status" >&5
+ echo "$as_me:18796: \$? = $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 17444 "configure"
+#line 18803 "configure"
#include "confdefs.h"
#ifndef __BEOS__
@@ -17457,16 +18816,16 @@ bool foo = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17460: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18819: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:17463: \$? = $ac_status" >&5
+ echo "$as_me:18822: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17466: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18825: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17469: \$? = $ac_status" >&5
+ echo "$as_me:18828: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_header_stdbool_h=1
else
@@ -17480,13 +18839,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
if test "$cf_cv_header_stdbool_h" = 1
-then echo "$as_me:17483: result: yes" >&5
+then echo "$as_me:18842: result: yes" >&5
echo "${ECHO_T}yes" >&6
-else echo "$as_me:17485: result: no" >&5
+else echo "$as_me:18844: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-echo "$as_me:17489: checking for builtin bool type" >&5
+echo "$as_me:18848: 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
@@ -17494,7 +18853,7 @@ if test "${cf_cv_builtin_bool+set}" = set; then
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17497 "configure"
+#line 18856 "configure"
#include "confdefs.h"
#include <stdio.h>
@@ -17509,16 +18868,16 @@ bool x = false
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17512: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:18871: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:17515: \$? = $ac_status" >&5
+ echo "$as_me:18874: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17518: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18877: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17521: \$? = $ac_status" >&5
+ echo "$as_me:18880: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_builtin_bool=1
else
@@ -17531,13 +18890,13 @@ rm -f conftest.$ac_objext conftest.$ac_ext
fi
if test "$cf_cv_builtin_bool" = 1
-then echo "$as_me:17534: result: yes" >&5
+then echo "$as_me:18893: result: yes" >&5
echo "${ECHO_T}yes" >&6
-else echo "$as_me:17536: result: no" >&5
+else echo "$as_me:18895: result: no" >&5
echo "${ECHO_T}no" >&6
fi
-echo "$as_me:17540: checking for size of bool" >&5
+echo "$as_me:18899: 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
@@ -17548,7 +18907,7 @@ else
cf_cv_type_of_bool=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17551 "configure"
+#line 18910 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -17572,7 +18931,7 @@ else
#endif
-main()
+int main()
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
@@ -17590,15 +18949,15 @@ main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17593: \"$ac_link\"") >&5
+if { (eval echo "$as_me:18952: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17596: \$? = $ac_status" >&5
+ echo "$as_me:18955: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17598: \"$ac_try\"") >&5
+ { (eval echo "$as_me:18957: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17601: \$? = $ac_status" >&5
+ echo "$as_me:18960: \$? = $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
@@ -17616,30 +18975,36 @@ fi
fi
rm -f cf_test.out
-echo "$as_me:17619: result: $cf_cv_type_of_bool" >&5
+echo "$as_me:18978: 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 "$as_me:17625: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
+ { echo "$as_me:18984: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
echo "$as_me: WARNING: Assuming $NCURSES_BOOL for type of bool" >&2;}
cf_cv_type_of_bool=$NCURSES_BOOL
fi
-echo "$as_me:17630: checking for special defines needed for etip.h" >&5
+echo "$as_me:18989: 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"
+
+# etip.h includes ncurses.h which includes ncurses_dll.h
+# But ncurses_dll.h is generated - fix here.
+test -d include || mkdir include
+test -f include/ncurses_dll.h || sed -e 's/@NCURSES_WRAP_PREFIX@/'$NCURSES_WRAP_PREFIX'/g' ${srcdir}/include/ncurses_dll.h.in >include/ncurses_dll.h
+
for cf_math in "" MATH_H
do
for cf_excp in "" MATH_EXCEPTION
do
- CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -I${srcdir}/include"
+ CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -Iinclude -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 <<_ACEOF
-#line 17642 "configure"
+#line 19007 "configure"
#include "confdefs.h"
#include <etip.h.in>
@@ -17653,16 +19018,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17656: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19021: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:17659: \$? = $ac_status" >&5
+ echo "$as_me:19024: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17662: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19027: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17665: \$? = $ac_status" >&5
+ echo "$as_me:19030: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
test -n "$cf_math" && cat >>confdefs.h <<EOF
@@ -17674,7 +19039,7 @@ EOF
EOF
cf_result="$cf_math $cf_excp"
- break
+ break 2
else
echo "$as_me: failed program was:" >&5
@@ -17683,12 +19048,12 @@ fi
rm -f conftest.$ac_objext conftest.$ac_ext
done
done
-echo "$as_me:17686: result: $cf_result" >&5
+echo "$as_me:19051: result: $cf_result" >&5
echo "${ECHO_T}$cf_result" >&6
CXXFLAGS="$cf_save_CXXFLAGS"
if test -n "$CXX"; then
-echo "$as_me:17691: checking if $CXX accepts parameter initialization" >&5
+echo "$as_me:19056: 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
@@ -17705,7 +19070,7 @@ ac_main_return=return
cf_cv_cpp_param_init=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17708 "configure"
+#line 19073 "configure"
#include "confdefs.h"
class TEST {
@@ -17720,19 +19085,19 @@ TEST::TEST(int x = 1) // some compilers do not like second initializer
{
value = x;
}
-void main() { }
+int main() { }
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17727: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19092: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17730: \$? = $ac_status" >&5
+ echo "$as_me:19095: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17732: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19097: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17735: \$? = $ac_status" >&5
+ echo "$as_me:19100: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_cpp_param_init=yes
else
@@ -17751,16 +19116,17 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
fi
-echo "$as_me:17754: result: $cf_cv_cpp_param_init" >&5
+echo "$as_me:19119: 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
+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:17763: checking if $CXX accepts static_cast" >&5
+echo "$as_me:19129: 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
@@ -17774,7 +19140,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
cat >conftest.$ac_ext <<_ACEOF
-#line 17777 "configure"
+#line 19143 "configure"
#include "confdefs.h"
class NCursesPanel
@@ -17786,7 +19152,7 @@ public:
int begin_x = 0)
{
}
-
+ NCursesPanel();
~NCursesPanel();
};
@@ -17818,16 +19184,16 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext
-if { (eval echo "$as_me:17821: \"$ac_compile\"") >&5
+if { (eval echo "$as_me:19187: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:17824: \$? = $ac_status" >&5
+ echo "$as_me:19190: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:17827: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19193: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17830: \$? = $ac_status" >&5
+ echo "$as_me:19196: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
cf_cv_cpp_static_cast=yes
else
@@ -17845,12 +19211,13 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
ac_main_return=return
fi
-echo "$as_me:17848: result: $cf_cv_cpp_static_cast" >&5
+echo "$as_me:19214: result: $cf_cv_cpp_static_cast" >&5
echo "${ECHO_T}$cf_cv_cpp_static_cast" >&6
fi
-test "$cf_cv_cpp_static_cast" = yes && cat >>confdefs.h <<\EOF
+test "$cf_cv_cpp_static_cast" = yes &&
+cat >>confdefs.h <<\EOF
#define CPP_HAS_STATIC_CAST 1
EOF
@@ -17893,7 +19260,7 @@ else
else
if test "$cf_cv_header_stdbool_h" = 1 ; then
-echo "$as_me:17896: checking for size of bool" >&5
+echo "$as_me:19263: 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
@@ -17904,7 +19271,7 @@ else
cf_cv_type_of_bool=unknown
else
cat >conftest.$ac_ext <<_ACEOF
-#line 17907 "configure"
+#line 19274 "configure"
#include "confdefs.h"
#include <stdlib.h>
@@ -17928,7 +19295,7 @@ else
#endif
-main()
+int main()
{
FILE *fp = fopen("cf_test.out", "w");
if (fp != 0) {
@@ -17946,15 +19313,15 @@ main()
_ACEOF
rm -f conftest$ac_exeext
-if { (eval echo "$as_me:17949: \"$ac_link\"") >&5
+if { (eval echo "$as_me:19316: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:17952: \$? = $ac_status" >&5
+ echo "$as_me:19319: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
- { (eval echo "$as_me:17954: \"$ac_try\"") >&5
+ { (eval echo "$as_me:19321: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:17957: \$? = $ac_status" >&5
+ echo "$as_me:19324: \$? = $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
@@ -17972,25 +19339,25 @@ fi
fi
rm -f cf_test.out
-echo "$as_me:17975: result: $cf_cv_type_of_bool" >&5
+echo "$as_me:19342: 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 "$as_me:17981: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
+ { echo "$as_me:19348: WARNING: Assuming $NCURSES_BOOL for type of bool" >&5
echo "$as_me: WARNING: Assuming $NCURSES_BOOL for type of bool" >&2;}
cf_cv_type_of_bool=$NCURSES_BOOL
fi
else
- echo "$as_me:17987: checking for fallback type of bool" >&5
+ echo "$as_me:19354: 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 "$as_me:17993: result: $cf_cv_type_of_bool" >&5
+ echo "$as_me:19360: result: $cf_cv_type_of_bool" >&5
echo "${ECHO_T}$cf_cv_type_of_bool" >&6
fi
fi
@@ -18019,7 +19386,7 @@ if test -f "${srcdir}/Ada95/Makefile.in" ; then
if test "$cf_with_ada" != "no" ; then
if test "$with_libtool" != "no"; then
- { echo "$as_me:18022: WARNING: libtool does not support Ada - disabling feature" >&5
+ { echo "$as_me:19389: WARNING: libtool does not support Ada - disabling feature" >&5
echo "$as_me: WARNING: libtool does not support Ada - disabling feature" >&2;}
cf_with_ada=no
fi
@@ -18030,7 +19397,7 @@ echo "$as_me: WARNING: libtool does not support Ada - disabling feature" >&2;}
cf_ada_make=gnatmake
# Extract the first word of "$cf_ada_make", so it can be a program name with args.
set dummy $cf_ada_make; ac_word=$2
-echo "$as_me:18033: checking for $ac_word" >&5
+echo "$as_me:19400: 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
@@ -18045,7 +19412,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_gnat_exists="yes"
-echo "$as_me:18048: found $ac_dir/$ac_word" >&5
+echo "$as_me:19415: found $ac_dir/$ac_word" >&5
break
done
@@ -18054,31 +19421,32 @@ fi
fi
gnat_exists=$ac_cv_prog_gnat_exists
if test -n "$gnat_exists"; then
- echo "$as_me:18057: result: $gnat_exists" >&5
+ echo "$as_me:19424: result: $gnat_exists" >&5
echo "${ECHO_T}$gnat_exists" >&6
else
- echo "$as_me:18060: result: no" >&5
+ echo "$as_me:19427: result: no" >&5
echo "${ECHO_T}no" >&6
fi
if test "$ac_cv_prog_gnat_exists" = no; then
cf_ada_make=
+ cf_cv_prog_gnat_correct=no
else
-echo "$as_me:18068: checking for gnat version" >&5
+echo "$as_me:19436: 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:18073: result: $cf_gnat_version" >&5
+echo "$as_me:19441: result: $cf_gnat_version" >&5
echo "${ECHO_T}$cf_gnat_version" >&6
case $cf_gnat_version in #(vi
-3.1[1-9]*|3.[2-9]*|[4-9].*) #(vi
+3.1[1-9]*|3.[2-9]*|[4-9].*|20[0-9][0-9]) #(vi
cf_cv_prog_gnat_correct=yes
;;
*)
- { echo "$as_me:18081: WARNING: Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
+ { echo "$as_me:19449: WARNING: Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5
echo "$as_me: WARNING: Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&2;}
cf_cv_prog_gnat_correct=no
;;
@@ -18086,7 +19454,7 @@ esac
# Extract the first word of "m4", so it can be a program name with args.
set dummy m4; ac_word=$2
-echo "$as_me:18089: checking for $ac_word" >&5
+echo "$as_me:19457: 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
@@ -18101,7 +19469,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
$as_executable_p "$ac_dir/$ac_word" || continue
ac_cv_prog_M4_exists="yes"
-echo "$as_me:18104: found $ac_dir/$ac_word" >&5
+echo "$as_me:19472: found $ac_dir/$ac_word" >&5
break
done
@@ -18110,10 +19478,10 @@ fi
fi
M4_exists=$ac_cv_prog_M4_exists
if test -n "$M4_exists"; then
- echo "$as_me:18113: result: $M4_exists" >&5
+ echo "$as_me:19481: result: $M4_exists" >&5
echo "${ECHO_T}$M4_exists" >&6
else
- echo "$as_me:18116: result: no" >&5
+ echo "$as_me:19484: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -18122,7 +19490,7 @@ fi
echo Ada95 binding required program m4 not found. Ada95 binding disabled.
fi
if test "$cf_cv_prog_gnat_correct" = yes; then
- echo "$as_me:18125: checking if GNAT works" >&5
+ echo "$as_me:19493: checking if GNAT works" >&5
echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6
rm -rf conftest* *~conftest*
@@ -18150,32 +19518,36 @@ else
fi
rm -rf conftest* *~conftest*
- echo "$as_me:18153: result: $cf_cv_prog_gnat_correct" >&5
+ echo "$as_me:19521: 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
+ if test "x$cf_cv_prog_gnat_correct" = xyes; then
ADAFLAGS="$ADAFLAGS -gnatpn"
- # make ADAFLAGS consistent with CFLAGS
- case "$CFLAGS" in
- *-g*)
+ echo "$as_me:19530: checking optimization options for ADAFLAGS" >&5
+echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6
+ case "$CFLAGS" in
+ *-g*)
ADAFLAGS="$ADAFLAGS -g"
- ;;
- esac
- case "$CFLAGS" in
- *-O*)
+ ;;
+ esac
+ case "$CFLAGS" in
+ *-O*)
+ cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[ ].*//'`
- ADAFLAGS="$ADAFLAGS -O3"
+ ADAFLAGS="$ADAFLAGS $cf_O_flag"
- ;;
- esac
+ ;;
+ esac
+ echo "$as_me:19547: result: $ADAFLAGS" >&5
+echo "${ECHO_T}$ADAFLAGS" >&6
-echo "$as_me:18178: checking if GNAT supports generics" >&5
+echo "$as_me:19550: checking if GNAT supports generics" >&5
echo $ECHO_N "checking if GNAT supports generics... $ECHO_C" >&6
case $cf_gnat_version in #(vi
3.[1-9]*|[4-9].*) #(vi
@@ -18185,7 +19557,7 @@ case $cf_gnat_version in #(vi
cf_gnat_generics=no
;;
esac
-echo "$as_me:18188: result: $cf_gnat_generics" >&5
+echo "$as_me:19560: result: $cf_gnat_generics" >&5
echo "${ECHO_T}$cf_gnat_generics" >&6
if test "$cf_gnat_generics" = yes
@@ -18197,7 +19569,7 @@ else
cf_generic_objects=
fi
-echo "$as_me:18200: checking if GNAT supports SIGINT" >&5
+echo "$as_me:19572: checking if GNAT supports SIGINT" >&5
echo $ECHO_N "checking if GNAT supports SIGINT... $ECHO_C" >&6
if test "${cf_cv_gnat_sigint+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -18245,7 +19617,7 @@ fi
rm -rf conftest* *~conftest*
fi
-echo "$as_me:18248: result: $cf_cv_gnat_sigint" >&5
+echo "$as_me:19620: result: $cf_cv_gnat_sigint" >&5
echo "${ECHO_T}$cf_cv_gnat_sigint" >&6
if test $cf_cv_gnat_sigint = yes ; then
@@ -18254,7 +19626,7 @@ else
USE_GNAT_SIGINT="#"
fi
-echo "$as_me:18257: checking if GNAT pragma Unreferenced works" >&5
+echo "$as_me:19629: checking if GNAT pragma Unreferenced works" >&5
echo $ECHO_N "checking if GNAT pragma Unreferenced works... $ECHO_C" >&6
if test "${cf_cv_pragma_unreferenced+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -18285,7 +19657,7 @@ fi
rm -rf conftest* *~conftest*
fi
-echo "$as_me:18288: result: $cf_cv_pragma_unreferenced" >&5
+echo "$as_me:19660: result: $cf_cv_pragma_unreferenced" >&5
echo "${ECHO_T}$cf_cv_pragma_unreferenced" >&6
# if the pragma is supported, use it (needed in the Trace code).
@@ -18298,14 +19670,14 @@ fi
cf_gnat_libraries=no
cf_gnat_projects=no
-echo "$as_me:18301: checking if GNAT supports project files" >&5
+echo "$as_me:19673: checking if GNAT supports project files" >&5
echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6
case $cf_gnat_version in #(vi
3.[0-9]*) #(vi
;;
*)
case $cf_cv_system_name in #(vi
- cygwin*) #(vi
+ cygwin*|msys*) #(vi
;;
*)
mkdir conftest.src conftest.bin conftest.lib
@@ -18366,14 +19738,14 @@ CF_EOF
esac
;;
esac
-echo "$as_me:18369: result: $cf_gnat_projects" >&5
+echo "$as_me:19741: result: $cf_gnat_projects" >&5
echo "${ECHO_T}$cf_gnat_projects" >&6
if test $cf_gnat_projects = yes
then
- echo "$as_me:18374: checking if GNAT supports libraries" >&5
+ echo "$as_me:19746: checking if GNAT supports libraries" >&5
echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6
- echo "$as_me:18376: result: $cf_gnat_libraries" >&5
+ echo "$as_me:19748: result: $cf_gnat_libraries" >&5
echo "${ECHO_T}$cf_gnat_libraries" >&6
fi
@@ -18393,7 +19765,7 @@ else
USE_GNAT_LIBRARIES="#"
fi
-echo "$as_me:18396: checking for ada-compiler" >&5
+echo "$as_me:19768: checking for ada-compiler" >&5
echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6
# Check whether --with-ada-compiler or --without-ada-compiler was given.
@@ -18404,12 +19776,12 @@ else
cf_ada_compiler=gnatmake
fi;
-echo "$as_me:18407: result: $cf_ada_compiler" >&5
+echo "$as_me:19779: result: $cf_ada_compiler" >&5
echo "${ECHO_T}$cf_ada_compiler" >&6
cf_ada_package=terminal_interface
-echo "$as_me:18412: checking for ada-include" >&5
+echo "$as_me:19784: checking for ada-include" >&5
echo $ECHO_N "checking for ada-include... $ECHO_C" >&6
# Check whether --with-ada-include or --without-ada-include was given.
@@ -18433,7 +19805,7 @@ case ".$withval" in #(vi
;;
.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
;;
-.\${*prefix}*) #(vi
+.\${*prefix}*|.\${*dir}*) #(vi
eval withval="$withval"
case ".$withval" in #(vi
.NONE/*)
@@ -18445,19 +19817,19 @@ case ".$withval" in #(vi
withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { { echo "$as_me:18448: error: expected a pathname, not \"$withval\"" >&5
+ { { echo "$as_me:19820: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
fi
-ADA_INCLUDE="$withval"
+eval ADA_INCLUDE="$withval"
-echo "$as_me:18457: result: $ADA_INCLUDE" >&5
+echo "$as_me:19829: result: $ADA_INCLUDE" >&5
echo "${ECHO_T}$ADA_INCLUDE" >&6
-echo "$as_me:18460: checking for ada-objects" >&5
+echo "$as_me:19832: checking for ada-objects" >&5
echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6
# Check whether --with-ada-objects or --without-ada-objects was given.
@@ -18481,7 +19853,7 @@ case ".$withval" in #(vi
;;
.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
;;
-.\${*prefix}*) #(vi
+.\${*prefix}*|.\${*dir}*) #(vi
eval withval="$withval"
case ".$withval" in #(vi
.NONE/*)
@@ -18493,19 +19865,19 @@ case ".$withval" in #(vi
withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
;;
*)
- { { echo "$as_me:18496: error: expected a pathname, not \"$withval\"" >&5
+ { { echo "$as_me:19868: error: expected a pathname, not \"$withval\"" >&5
echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
{ (exit 1); exit 1; }; }
;;
esac
fi
-ADA_OBJECTS="$withval"
+eval ADA_OBJECTS="$withval"
-echo "$as_me:18505: result: $ADA_OBJECTS" >&5
+echo "$as_me:19877: result: $ADA_OBJECTS" >&5
echo "${ECHO_T}$ADA_OBJECTS" >&6
-echo "$as_me:18508: checking if an Ada95 shared-library should be built" >&5
+echo "$as_me:19880: checking if an Ada95 shared-library should be built" >&5
echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6
# Check whether --with-ada-sharedlib or --without-ada-sharedlib was given.
@@ -18515,7 +19887,7 @@ if test "${with_ada_sharedlib+set}" = set; then
else
with_ada_sharedlib=no
fi;
-echo "$as_me:18518: result: $with_ada_sharedlib" >&5
+echo "$as_me:19890: result: $with_ada_sharedlib" >&5
echo "${ECHO_T}$with_ada_sharedlib" >&6
ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
@@ -18536,6 +19908,247 @@ else
cf_with_ada=no
fi
+# do this "late" to avoid conflict with header-checks
+if test "x$with_widec" = xyes ; then
+ echo "$as_me:19913: checking for wchar_t" >&5
+echo $ECHO_N "checking for wchar_t... $ECHO_C" >&6
+if test "${ac_cv_type_wchar_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 19919 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+if ((wchar_t *) 0)
+ return 0;
+if (sizeof (wchar_t))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:19934: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:19937: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:19940: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:19943: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_wchar_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+cat conftest.$ac_ext >&5
+ac_cv_type_wchar_t=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:19953: result: $ac_cv_type_wchar_t" >&5
+echo "${ECHO_T}$ac_cv_type_wchar_t" >&6
+
+echo "$as_me:19956: checking size of wchar_t" >&5
+echo $ECHO_N "checking size of wchar_t... $ECHO_C" >&6
+if test "${ac_cv_sizeof_wchar_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$ac_cv_type_wchar_t" = yes; then
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+#line 19965 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+int _array_ [1 - 2 * !((sizeof (wchar_t)) >= 0)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:19977: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:19980: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:19983: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:19986: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+#line 19991 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:20003: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:20006: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:20009: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:20012: \$? = $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 20028 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+int _array_ [1 - 2 * !((sizeof (wchar_t)) >= $ac_mid)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:20040: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:20043: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:20046: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:20049: \$? = $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 20065 "configure"
+#include "confdefs.h"
+$ac_includes_default
+int
+main ()
+{
+int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)]
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:20077: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:20080: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:20083: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:20086: \$? = $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_wchar_t=$ac_lo
+else
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:20099: error: cannot run test program while cross compiling" >&5
+echo "$as_me: error: cannot run test program while cross compiling" >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#line 20104 "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 (wchar_t)));
+fclose (f);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:20120: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:20123: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (eval echo "$as_me:20125: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:20128: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_wchar_t=`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_wchar_t=0
+fi
+fi
+echo "$as_me:20144: result: $ac_cv_sizeof_wchar_t" >&5
+echo "${ECHO_T}$ac_cv_sizeof_wchar_t" >&6
+cat >>confdefs.h <<EOF
+#define SIZEOF_WCHAR_T $ac_cv_sizeof_wchar_t
+EOF
+
+fi
+
### Construct the ncurses library-subsets, if any, from this set of keywords:
### none, base, ext_funcs, ext_tinfo, ticlib, termlib, widechar
###
@@ -18546,11 +20159,11 @@ fi
### chooses to split module lists into libraries.
###
### (see CF_LIB_RULES).
-echo "$as_me:18549: checking for library subsets" >&5
+echo "$as_me:20162: checking for library subsets" >&5
echo $ECHO_N "checking for library subsets... $ECHO_C" >&6
LIB_SUBSETS=
-if test "$cf_with_progs" = yes || test "$with_ticlib" != no || test "$with_termcap" != no; then
+if test "x$cf_with_progs" = xyes || test "$with_ticlib" != no || test "$with_termcap" != no; then
LIB_SUBSETS="${LIB_SUBSETS}ticlib"
if test "$with_ticlib" != no ; then
LIB_SUBSETS="${LIB_SUBSETS} "
@@ -18560,7 +20173,7 @@ if test "$cf_with_progs" = yes || test "$with_ticlib" != no || test "$with_termc
fi
LIB_SUBSETS="${LIB_SUBSETS}termlib"
-test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo"
+test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo"
if test "$with_termlib" != no ; then
LIB_SUBSETS="${LIB_SUBSETS} "
@@ -18584,29 +20197,29 @@ if test "$with_term_driver" != no ; then
esac
fi
-test "$with_widec" = yes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
-test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
+test "x$with_widec" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
+test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
-echo "$as_me:18590: result: $LIB_SUBSETS" >&5
+echo "$as_me:20203: result: $LIB_SUBSETS" >&5
echo "${ECHO_T}$LIB_SUBSETS" >&6
### Construct the list of include-directories to be generated
-CPPFLAGS="$CPPFLAGS -I. -I../include"
-if test "$srcdir" != "."; then
- CPPFLAGS="$CPPFLAGS -I\${srcdir}/../include"
-fi
if test "$GCC" != yes; then
- CPPFLAGS="$CPPFLAGS -I\${includedir}"
+ CPPFLAGS="-I\${includedir} $CPPFLAGS"
elif test "$includedir" != "/usr/include"; then
if test "$includedir" = '${prefix}/include' ; then
- if test $prefix != /usr ; then
- CPPFLAGS="$CPPFLAGS -I\${includedir}"
+ if test x$prefix != x/usr ; then
+ CPPFLAGS="-I\${includedir} $CPPFLAGS"
fi
else
- CPPFLAGS="$CPPFLAGS -I\${includedir}"
+ CPPFLAGS="-I\${includedir} $CPPFLAGS"
fi
fi
+if test "$srcdir" != "."; then
+ CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS"
+fi
+CPPFLAGS="-I. -I../include $CPPFLAGS"
ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS"
if test "$srcdir" != "."; then
@@ -18616,7 +20229,7 @@ if test "$GCC" != yes; then
ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
elif test "$includedir" != "/usr/include"; then
if test "$includedir" = '${prefix}/include' ; then
- if test $prefix != /usr ; then
+ if test x$prefix != x/usr ; then
ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
fi
else
@@ -18625,7 +20238,7 @@ elif test "$includedir" != "/usr/include"; then
fi
### Build up pieces for makefile rules
-echo "$as_me:18628: checking default library suffix" >&5
+echo "$as_me:20241: checking default library suffix" >&5
echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
case $DFT_LWR_MODEL in
@@ -18636,36 +20249,32 @@ echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
shared) DFT_ARG_SUFFIX='' ;;
esac
test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}"
-echo "$as_me:18639: result: $DFT_ARG_SUFFIX" >&5
+echo "$as_me:20252: result: $DFT_ARG_SUFFIX" >&5
echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6
-echo "$as_me:18642: checking default library-dependency suffix" >&5
+echo "$as_me:20255: checking default library-dependency suffix" >&5
echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
- case $DFT_LWR_MODEL in #(vi
- libtool) #(vi
+ case X$DFT_LWR_MODEL in #(vi
+ Xlibtool) #(vi
DFT_LIB_SUFFIX='.la'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- normal) #(vi
- DFT_LIB_SUFFIX='.a'
- DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
- ;;
- debug) #(vi
+ Xdebug) #(vi
DFT_LIB_SUFFIX='_g.a'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- profile) #(vi
+ Xprofile) #(vi
DFT_LIB_SUFFIX='_p.a'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- shared) #(vi
+ Xshared) #(vi
case $cf_cv_system_name in
- aix[56]*) #(vi
+ aix[5-7]*) #(vi
DFT_LIB_SUFFIX='.a'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
- cygwin*) #(vi
+ cygwin*|msys*|mingw*) #(vi
DFT_LIB_SUFFIX='.dll'
DFT_DEP_SUFFIX='.dll.a'
;;
@@ -18685,17 +20294,23 @@ echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
;;
esac
;;
- *) DFT_LIB_SUFFIX='.so'
+ *) #(vi
+ DFT_LIB_SUFFIX='.so'
DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
;;
esac
+ ;;
+ *)
+ DFT_LIB_SUFFIX='.a'
+ DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX
+ ;;
esac
test -n "$LIB_SUFFIX" && DFT_LIB_SUFFIX="${LIB_SUFFIX}${DFT_LIB_SUFFIX}"
test -n "$LIB_SUFFIX" && DFT_DEP_SUFFIX="${LIB_SUFFIX}${DFT_DEP_SUFFIX}"
-echo "$as_me:18695: result: $DFT_DEP_SUFFIX" >&5
+echo "$as_me:20310: result: $DFT_DEP_SUFFIX" >&5
echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6
-echo "$as_me:18698: checking default object directory" >&5
+echo "$as_me:20313: checking default object directory" >&5
echo $ECHO_N "checking default object directory... $ECHO_C" >&6
case $DFT_LWR_MODEL in
@@ -18705,47 +20320,47 @@ echo $ECHO_N "checking default object directory... $ECHO_C" >&6
profile) DFT_OBJ_SUBDIR='obj_p' ;;
shared)
case $cf_cv_system_name in #(vi
- cygwin) #(vi
+ cygwin|msys) #(vi
DFT_OBJ_SUBDIR='objects' ;;
*)
DFT_OBJ_SUBDIR='obj_s' ;;
esac
esac
-echo "$as_me:18714: result: $DFT_OBJ_SUBDIR" >&5
+echo "$as_me:20329: result: $DFT_OBJ_SUBDIR" >&5
echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6
-# libtool thinks it can make c++ shared libraries (perhaps only g++)
-if test "$cf_with_cxx" = yes ; then
-echo "$as_me:18719: checking c++ library-dependency suffix" >&5
+if test "x$cf_with_cxx" = xyes ; then
+echo "$as_me:20333: checking c++ library-dependency suffix" >&5
echo $ECHO_N "checking c++ library-dependency suffix... $ECHO_C" >&6
if test "$with_libtool" != "no"; then
+ # libtool thinks it can make c++ shared libraries (perhaps only g++)
+ CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX
+elif test "$with_shared_cxx" != "no"; then
+ # also for g++ users...
CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX
else
+ # we normally make a static library because C/C++ library rules differ
- case normal in #(vi
- libtool) #(vi
+ case Xnormal in #(vi
+ Xlibtool) #(vi
CXX_LIB_SUFFIX='.la'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- normal) #(vi
- CXX_LIB_SUFFIX='.a'
- CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
- ;;
- debug) #(vi
+ Xdebug) #(vi
CXX_LIB_SUFFIX='_g.a'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- profile) #(vi
+ Xprofile) #(vi
CXX_LIB_SUFFIX='_p.a'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- shared) #(vi
+ Xshared) #(vi
case $cf_cv_system_name in
- aix[56]*) #(vi
+ aix[5-7]*) #(vi
CXX_LIB_SUFFIX='.a'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
- cygwin*) #(vi
+ cygwin*|msys*|mingw*) #(vi
CXX_LIB_SUFFIX='.dll'
CXX_DEP_SUFFIX='.dll.a'
;;
@@ -18765,21 +20380,28 @@ else
;;
esac
;;
- *) CXX_LIB_SUFFIX='.so'
+ *) #(vi
+ CXX_LIB_SUFFIX='.so'
CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
;;
esac
+ ;;
+ *)
+ CXX_LIB_SUFFIX='.a'
+ CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX
+ ;;
esac
test -n "$LIB_SUFFIX" && CXX_LIB_SUFFIX="${LIB_SUFFIX}${CXX_LIB_SUFFIX}"
test -n "$LIB_SUFFIX" && CXX_DEP_SUFFIX="${LIB_SUFFIX}${CXX_DEP_SUFFIX}"
+
fi
-echo "$as_me:18776: result: $CXX_LIB_SUFFIX" >&5
+echo "$as_me:20398: result: $CXX_LIB_SUFFIX" >&5
echo "${ECHO_T}$CXX_LIB_SUFFIX" >&6
fi
# do not want -ldl in build except as needed for -lncurses dependency
-if test "$with_dlsym" = yes ; then
+if test "x$with_dlsym" = xyes ; then
if test $DFT_LWR_MODEL = shared || \
test $DFT_LWR_MODEL = libtool ; then
@@ -18793,7 +20415,7 @@ fi
# TICS_LIST and TINFO_LIST are needed to build libtic.so and libterm.so, but
# do not need libdl
TICS_LIST=
-if test "$with_dlsym" = yes ; then
+if test "x$with_dlsym" = xyes ; then
# remove dl library from $SHLIB_LIST
TINFO_LIST=`echo "$SHLIB_LIST" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'`
@@ -18802,7 +20424,7 @@ fi
if test "$with_ticlib" != no ; then
- if test "$with_ticlib" != yes ; then
+ if test "x$with_ticlib" != xyes ; then
TICS_NAME=$with_ticlib
TICS_ARG_SUFFIX="${with_ticlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TICS_DEP_SUFFIX="${with_ticlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
@@ -18812,14 +20434,16 @@ if test "$with_ticlib" != no ; then
TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}"
TICS_LIB_SUFFIX="${TICS_NAME}${LIB_SUFFIX}"
fi
- TICS_ARGS="-L${LIB_DIR} -l${TICS_LIB_SUFFIX}"
+ TICS_LDFLAGS="-L${LIB_DIR}"
+ TICS_LIBS="-l${TICS_LIB_SUFFIX}"
else
- TICS_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TICS_LDFLAGS="-L${LIB_DIR}"
+ TICS_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX}"
fi
if test "$with_termlib" != no ; then
- if test "$with_termlib" != yes ; then
+ if test "x$with_termlib" != xyes ; then
TINFO_NAME=$with_termlib
TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TINFO_ARG_SUFFIX="${with_termlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
@@ -18837,14 +20461,22 @@ if test "$with_termlib" != no ; then
if test "$DFT_LWR_MODEL" = "libtool"; then
TEST_ARGS="${TEST_DEPS}"
TEST_ARG2="${TEST_DEP2}"
- TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
+ TINFO_LDFLAGS="-L${LIB_DIR}"
+ TINFO_LIBS="$TEST_ARGS"
TICS_LIST="$SHLIB_LIST $TEST_ARGS"
SHLIB_LIST="${SHLIB_LIST} $TEST_ARGS"
else
TEST_ARGS="-l${TINFO_ARG_SUFFIX}"
TEST_ARG2="-l${TINFO_ARG_SUFFIX}"
- TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
- TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
+ if test "x$with_term_driver" != xno ; then
+ TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TICS_LIBS="$TICS_LIBS -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
+ else
+ TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
+ TINFO_LIBS="$TEST_ARGS"
+ fi
+ TINFO_LDFLAGS="-L${LIB_DIR}"
SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
fi
else
@@ -18852,25 +20484,26 @@ else
TINFO_NAME=${LIB_NAME}
TINFO_SUFFIX=${DFT_LIB_SUFFIX}
TINFO_ARG_SUFFIX=${LIB_NAME}${DFT_ARG_SUFFIX}
- if test "$with_tic_depends" = yes ; then
+ if test "x$with_tic_depends" = xyes ; then
TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}"
else
TICS_LIST="$SHLIB_LIST"
fi
- TINFO_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_LDFLAGS="-L${LIB_DIR}"
+ TINFO_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX}"
fi
if test "$DFT_LWR_MODEL" = shared ; then
case $cf_cv_system_name in #(vi
- cygwin*)
- # "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
+ cygwin*|msys*)
+ # "lib" files have ".dll.a" suffix, "cyg"or "msys-" files have ".dll"
TINFO_SUFFIX=.dll
;;
esac
fi
-if test "$with_dlsym" = yes ; then
+if test "x$with_dlsym" = xyes ; then
# remove dl library from $TICS_LIST
TICS_LIST=`echo "$TICS_LIST" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'`
@@ -18882,7 +20515,7 @@ if test "$DFT_LWR_MODEL" = "libtool"; then
fi
# needed for Ada95
-TINFO_ARGS2=`echo "$TINFO_ARGS" | sed -e 's,-L\.\./,-L../../,'`
+TINFO_LDFLAGS2=`echo "$TINFO_LDFLAGS" | sed -e 's,-L\.\./,-L../../,'`
case $DFT_LWR_MODEL in
normal|debug|profile)
@@ -18900,7 +20533,7 @@ if test "$GCC" = yes ; then
esac
else
case $cf_cv_system_name in #(
- aix[456]*) #( from ld manpage
+ aix[4-7]*) #( from ld manpage
LDFLAGS_STATIC=-bstatic
LDFLAGS_SHARED=-bdynamic
;;
@@ -18927,19 +20560,19 @@ fi
if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED"
then
- echo "$as_me:18930: checking if linker supports switching between static/dynamic" >&5
+ echo "$as_me:20563: checking if linker supports switching between static/dynamic" >&5
echo $ECHO_N "checking if linker supports switching between static/dynamic... $ECHO_C" >&6
rm -f libconftest.a
cat >conftest.$ac_ext <<EOF
-#line 18935 "configure"
+#line 20568 "configure"
#include <stdio.h>
int cf_ldflags_static(FILE *fp) { return fflush(fp); }
EOF
- if { (eval echo "$as_me:18939: \"$ac_compile\"") >&5
+ if { (eval echo "$as_me:20572: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
- echo "$as_me:18942: \$? = $ac_status" >&5
+ echo "$as_me:20575: \$? = $ac_status" >&5
(exit $ac_status); } ; then
( $AR $ARFLAGS libconftest.a conftest.o ) 2>&5 1>/dev/null
( eval $RANLIB libconftest.a ) 2>&5 >/dev/null
@@ -18950,10 +20583,10 @@ EOF
LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS"
cat >conftest.$ac_ext <<_ACEOF
-#line 18953 "configure"
+#line 20586 "configure"
#include "confdefs.h"
-#line 18956 "configure"
+#line 20589 "configure"
#include <stdio.h>
int cf_ldflags_static(FILE *fp);
@@ -18968,18 +20601,28 @@ main ()
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:18971: \"$ac_link\"") >&5
+if { (eval echo "$as_me:20604: \"$ac_link\"") >&5
(eval $ac_link) 2>&5
ac_status=$?
- echo "$as_me:18974: \$? = $ac_status" >&5
+ echo "$as_me:20607: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest$ac_exeext'
- { (eval echo "$as_me:18977: \"$ac_try\"") >&5
+ { (eval echo "$as_me:20610: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
- echo "$as_me:18980: \$? = $ac_status" >&5
+ echo "$as_me:20613: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- cf_ldflags_static=yes
+
+ # some linkers simply ignore the -dynamic
+ case x`file conftest$ac_exeext 2>/dev/null` in #(vi
+ *static*) # (vi
+ cf_ldflags_static=no
+ ;;
+ *)
+ cf_ldflags_static=yes
+ ;;
+ esac
+
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
@@ -18990,7 +20633,7 @@ rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
rm -f libconftest.*
LIBS="$cf_save_LIBS"
- echo "$as_me:18993: result: $cf_ldflags_static" >&5
+ echo "$as_me:20636: result: $cf_ldflags_static" >&5
echo "${ECHO_T}$cf_ldflags_static" >&6
if test $cf_ldflags_static != yes
@@ -19006,20 +20649,25 @@ fi
;;
esac
-echo "$as_me:19009: checking where we will install curses.h" >&5
+echo "$as_me:20652: 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:19014: result: $includedir" >&5
-echo "${ECHO_T}$includedir" >&6
+
+includesubdir=
+if test "$with_overwrite" = no && \
+ ( test "x$includedir" = 'x${prefix}/include' || \
+ test "x$includedir" = "x${prefix}/include" )
+then
+ includesubdir="/ncurses${LIB_SUFFIX}"
+fi
+echo "$as_me:20662: result: ${includedir}${includesubdir}" >&5
+echo "${ECHO_T}${includedir}${includesubdir}" >&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:19022: WARNING: Wide-character applications must define HAVE_LIBUTF8_H to include curses.h" >&5
+ { echo "$as_me:20670: 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
@@ -19029,6 +20677,7 @@ WITH_OVERWRITE=$with_overwrite
NCURSES_TREE=
### predefined stuff for the test programs
+
cat >>confdefs.h <<\EOF
#define HAVE_SLK_COLOR 1
EOF
@@ -19036,7 +20685,7 @@ EOF
### Construct the list of subdirectories for which we'll customize makefiles
### with the appropriate compile-rules.
-echo "$as_me:19039: checking for src modules" >&5
+echo "$as_me:20688: checking for src modules" >&5
echo $ECHO_N "checking for src modules... $ECHO_C" >&6
# dependencies and linker-arguments for test-programs
@@ -19050,6 +20699,7 @@ else
TEST_ARG2="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARG2"
fi
+PC_MODULES_TO_MAKE="ncurses${DFT_ARG_SUFFIX}"
cf_cv_src_modules=
for cf_dir in $modules_to_build
do
@@ -19096,10 +20746,11 @@ EOF
TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
TEST_ARG2="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARG2"
fi
+ PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${DFT_ARG_SUFFIX}"
fi
fi
done
-echo "$as_me:19102: result: $cf_cv_src_modules" >&5
+echo "$as_me:20753: result: $cf_cv_src_modules" >&5
echo "${ECHO_T}$cf_cv_src_modules" >&6
TEST_ARGS="-L${LIB_DIR} $TEST_ARGS"
@@ -19117,11 +20768,19 @@ done
if test "x$cf_with_tests" != "xno" ; then
SRC_SUBDIRS="$SRC_SUBDIRS test"
fi
-test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc"
-test "$cf_with_cxx_binding" != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
+if test "x$cf_with_db_install" = xyes; then
+ test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc"
+fi
+if test "$cf_with_cxx_binding" != no; then
+ PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${DFT_ARG_SUFFIX}"
+ SRC_SUBDIRS="$SRC_SUBDIRS c++"
+fi
+
+test "x$with_termlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TINFO_ARG_SUFFIX"
+test "x$with_ticlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TICS_ARG_SUFFIX"
ADA_SUBDIRS=
-if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then
+if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = xyes && test -f $srcdir/Ada95/Makefile.in; then
SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
ADA_SUBDIRS="gen src"
if test "x$cf_with_tests" != "xno" ; then
@@ -19143,7 +20802,7 @@ if test -n "$ADA_SUBDIRS"; then
fi
-if test "$cf_with_ada" != "no" && test "$cf_cv_prog_gnat_correct" != "no"; then
+if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then
SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${DFT_ARG_SUFFIX}-config:Ada95/gen/adacurses-config.in"
SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${DFT_ARG_SUFFIX}-config.1:man/MKada_config.in"
fi
@@ -19159,7 +20818,7 @@ do
profile) cf_subdir='obj_p' ;;
shared)
case $cf_cv_system_name in #(vi
- cygwin) #(vi
+ cygwin|msys) #(vi
cf_subdir='objects' ;;
*)
cf_subdir='obj_s' ;;
@@ -19181,6 +20840,7 @@ done
NCURSES_SHLIB2='sh $(top_srcdir)/misc/shlib'
# values to use as strings
+
cat >>confdefs.h <<EOF
#define NCURSES_PATHSEP '$PATH_SEPARATOR'
EOF
@@ -19271,32 +20931,32 @@ fi
### Define substitutions for header files to avoid name-pollution
-if test "$cf_cv_have_tcgetattr" = yes ; then
+if test "x$cf_cv_have_tcgetattr" = xyes ; then
HAVE_TCGETATTR=1
else
HAVE_TCGETATTR=0
fi
-if test "$ac_cv_header_termio_h" = yes ; then
+if test "x$ac_cv_header_termio_h" = xyes ; then
HAVE_TERMIO_H=1
else
HAVE_TERMIO_H=0
fi
-if test "$ac_cv_header_termios_h" = yes ; then
+if test "x$ac_cv_header_termios_h" = xyes ; then
HAVE_TERMIOS_H=1
else
HAVE_TERMIOS_H=0
fi
################################################################################
-test "$use_database" = yes && \
+test "x$use_database" = xyes && \
SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in"
SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${DFT_ARG_SUFFIX}${cf_cv_abi_version}-config.1:man/MKncu_config.in"
-if test x"$enable_pc_files" = xyes ; then \
+if test "x$enable_pc_files" = xyes ; then \
SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
MAKE_PC_FILES=
else
@@ -19305,7 +20965,7 @@ fi
# Extract the first word of "tic", so it can be a program name with args.
set dummy tic; ac_word=$2
-echo "$as_me:19308: checking for $ac_word" >&5
+echo "$as_me:20968: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
if test "${ac_cv_path_TIC_PATH+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
@@ -19322,7 +20982,7 @@ for ac_dir in $ac_dummy; do
test -z "$ac_dir" && ac_dir=.
if $as_executable_p "$ac_dir/$ac_word"; then
ac_cv_path_TIC_PATH="$ac_dir/$ac_word"
- echo "$as_me:19325: found $ac_dir/$ac_word" >&5
+ echo "$as_me:20985: found $ac_dir/$ac_word" >&5
break
fi
done
@@ -19334,10 +20994,10 @@ fi
TIC_PATH=$ac_cv_path_TIC_PATH
if test -n "$TIC_PATH"; then
- echo "$as_me:19337: result: $TIC_PATH" >&5
+ echo "$as_me:20997: result: $TIC_PATH" >&5
echo "${ECHO_T}$TIC_PATH" >&6
else
- echo "$as_me:19340: result: no" >&5
+ echo "$as_me:21000: result: no" >&5
echo "${ECHO_T}no" >&6
fi
@@ -19345,7 +21005,7 @@ if test -n "$FALLBACK_LIST"
then
if test "$TIC_PATH" = unknown
then
- { echo "$as_me:19348: WARNING: no tic program found for fallbacks" >&5
+ { echo "$as_me:21008: WARNING: no tic program found for fallbacks" >&5
echo "$as_me: WARNING: no tic program found for fallbacks" >&2;}
fi
fi
@@ -19358,13 +21018,44 @@ fi
ADAHTML_DIR=../../doc/html/ada
-SUB_SCRIPTS=
+# these could be configurable, but are not currently
+PANEL_NAME=panel
+MENU_NAME=menu
+FORM_NAME=form
+CXX_NAME=ncurses++
+
+# workaround for g++ versus Solaris (20131116)
case $cf_cv_system_name in #(vi
-*mingw32*) #(vi
- SUB_SCRIPTS="mk-dlls.sh"
+solaris2*) #(vi
+ case "x$CPPFLAGS" in #(vi
+ *-D_XOPEN_SOURCE_EXTENDED*)
+ test -n "$verbose" && echo " moving _XOPEN_SOURCE_EXTENDED to work around g++ problem" 1>&6
+
+echo "${as_me:-configure}:21034: testing moving _XOPEN_SOURCE_EXTENDED to work around g++ problem ..." 1>&5
+
+ CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
+ CPPFLAGS=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/-D_XOPEN_SOURCE_EXTENDED//'`
+ ;;
+ esac
;;
esac
+# AC_CHECK_SIZEOF demands a literal parameter, no variables. So we do this.
+case "x$NCURSES_OSPEED" in #(vi
+*short*) #(vi
+ cf_compatible=1
+ ;;
+*)
+ cf_compatible=0
+ ;;
+esac
+
+cat >>confdefs.h <<EOF
+#define NCURSES_OSPEED_COMPAT $cf_compatible
+EOF
+
+SUB_SCRIPTS=
+
ac_config_files="$ac_config_files include/MKterm.h.awk include/curses.head:include/curses.h.in include/ncurses_dll.h include/termcap.h include/unctrl.h $SUB_SCRIPTS $SUB_MAKEFILES Makefile"
ac_config_commands="$ac_config_commands default"
cat >confcache <<\_ACEOF
@@ -19446,7 +21137,7 @@ DEFS=-DHAVE_CONFIG_H
: ${CONFIG_STATUS=./config.status}
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:19449: creating $CONFIG_STATUS" >&5
+{ echo "$as_me:21140: creating $CONFIG_STATUS" >&5
echo "$as_me: creating $CONFIG_STATUS" >&6;}
cat >$CONFIG_STATUS <<_ACEOF
#! $SHELL
@@ -19578,7 +21269,7 @@ EOF
cat >>$CONFIG_STATUS <<EOF
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.52.20101002,
+configured by $0, generated by GNU Autoconf 2.52.20121002,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
@@ -19622,7 +21313,7 @@ cat >>$CONFIG_STATUS <<\EOF
echo "$ac_cs_version"; exit 0 ;;
--he | --h)
# Conflict between --help and --header
- { { echo "$as_me:19625: error: ambiguous option: $1
+ { { echo "$as_me:21316: 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;}
@@ -19641,7 +21332,7 @@ Try \`$0 --help' for more information." >&2;}
ac_need_defaults=false;;
# This is an error.
- -*) { { echo "$as_me:19644: error: unrecognized option: $1
+ -*) { { echo "$as_me:21335: 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;}
@@ -19660,7 +21351,7 @@ cat >&5 << _ACEOF
## Running config.status. ##
## ----------------------- ##
-This file was extended by $as_me 2.52.20101002, executed with
+This file was extended by $as_me 2.52.20121002, executed with
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
CONFIG_LINKS = $CONFIG_LINKS
@@ -19682,10 +21373,11 @@ cat >>$CONFIG_STATUS <<EOF
AWK="$AWK"
DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
DFT_LWR_MODEL="$DFT_LWR_MODEL"
-ECHO_LINK="$ECHO_LINK"
+ECHO_LD="$ECHO_LD"
LDCONFIG="$LDCONFIG"
LIBTOOL_VERSION="$LIBTOOL_VERSION"
LIB_NAME="$LIB_NAME"
+LIB_PREFIX="$LIB_PREFIX"
LIB_SUBSETS="$LIB_SUBSETS"
LIB_SUFFIX="$LIB_SUFFIX"
LIB_TRACING="$LIB_TRACING"
@@ -19707,7 +21399,7 @@ TINFO_NAME="$TINFO_NAME"
TINFO_SUFFIX="$TINFO_SUFFIX"
USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
WITH_CURSES_H="$with_curses_h"
-WITH_ECHO="$with_echo"
+WITH_ECHO="${enable_echo:=yes}"
WITH_OVERWRITE="$with_overwrite"
cf_LIST_MODELS="$cf_list_models"
cf_cv_abi_version="$cf_cv_abi_version"
@@ -19717,16 +21409,20 @@ cf_cv_enable_lp64="$cf_cv_enable_lp64"
cf_cv_enable_opaque="$cf_cv_enable_opaque"
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_prog_gnat_correct=$cf_cv_prog_gnat_correct
cf_cv_rel_version="$cf_cv_rel_version"
cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
cf_cv_shared_soname='$cf_cv_shared_soname'
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_cv_term_driver="$with_term_driver"
cf_with_ada="$cf_with_ada"
cf_with_cxx_binding="$cf_with_cxx_binding"
+cf_with_db_install="$cf_with_db_install"
cf_with_manpages="$cf_with_manpages"
cf_with_tests="$cf_with_tests"
+with_shared_cxx="$with_shared_cxx"
host="$host"
target="$target"
@@ -19747,7 +21443,7 @@ do
"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:19750: error: invalid argument: $ac_config_target" >&5
+ *) { { echo "$as_me:21446: error: invalid argument: $ac_config_target" >&5
echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
{ (exit 1); exit 1; }; };;
esac
@@ -19806,6 +21502,7 @@ 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,@datarootdir@,$datarootdir,;t t
s,@datadir@,$datadir,;t t
s,@sysconfdir@,$sysconfdir,;t t
s,@sharedstatedir@,$sharedstatedir,;t t
@@ -19858,9 +21555,8 @@ 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,@CPP@,$CPP,;t t
s,@LDCONFIG@,$LDCONFIG,;t t
s,@CXX@,$CXX,;t t
s,@CXXFLAGS@,$CXXFLAGS,;t t
@@ -19887,6 +21583,8 @@ 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,@NM@,$NM,;t t
+s,@ac_ct_NM@,$ac_ct_NM,;t t
s,@ARFLAGS@,$ARFLAGS,;t t
s,@DESTDIR@,$DESTDIR,;t t
s,@BUILD_CC@,$BUILD_CC,;t t
@@ -19900,6 +21598,7 @@ s,@BUILD_OBJEXT@,$BUILD_OBJEXT,;t t
s,@cf_list_models@,$cf_list_models,;t t
s,@LIBTOOL_VERSION@,$LIBTOOL_VERSION,;t t
s,@LIBTOOL@,$LIBTOOL,;t t
+s,@ac_ct_LIBTOOL@,$ac_ct_LIBTOOL,;t t
s,@LT_UNDEF@,$LT_UNDEF,;t t
s,@LIBTOOL_CXX@,$LIBTOOL_CXX,;t t
s,@LIBTOOL_OPTS@,$LIBTOOL_OPTS,;t t
@@ -19921,25 +21620,32 @@ 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,@shlibdir@,$shlibdir,;t t
+s,@MAKE_DLLS@,$MAKE_DLLS,;t t
s,@CC_SHARED_OPTS@,$CC_SHARED_OPTS,;t t
s,@LD_RPATH_OPT@,$LD_RPATH_OPT,;t t
s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t
s,@MK_SHARED_LIB@,$MK_SHARED_LIB,;t t
+s,@RM_SHARED_OPTS@,$RM_SHARED_OPTS,;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,@RPATH_LIST@,$RPATH_LIST,;t t
s,@cf_ldd_prog@,$cf_ldd_prog,;t t
s,@TERMINFO_SRC@,$TERMINFO_SRC,;t t
+s,@NCURSES_USE_DATABASE@,$NCURSES_USE_DATABASE,;t t
s,@FALLBACK_LIST@,$FALLBACK_LIST,;t t
s,@WHICH_XTERM@,$WHICH_XTERM,;t t
+s,@XTERM_KBS@,$XTERM_KBS,;t t
s,@TERMINFO_DIRS@,$TERMINFO_DIRS,;t t
s,@TERMINFO@,$TERMINFO,;t t
s,@MAKE_TERMINFO@,$MAKE_TERMINFO,;t t
s,@USE_BIG_STRINGS@,$USE_BIG_STRINGS,;t t
s,@TERMPATH@,$TERMPATH,;t t
+s,@NCURSES_USE_TERMCAP@,$NCURSES_USE_TERMCAP,;t t
s,@BROKEN_LINKER@,$BROKEN_LINKER,;t t
s,@NCURSES_CH_T@,$NCURSES_CH_T,;t t
s,@NCURSES_LIBUTF8@,$NCURSES_LIBUTF8,;t t
@@ -19955,6 +21661,7 @@ s,@NCURSES_BOOL@,$NCURSES_BOOL,;t t
s,@TERMINFO_CAPS@,$TERMINFO_CAPS,;t t
s,@NCURSES_OSPEED@,$NCURSES_OSPEED,;t t
s,@NCURSES_CCHARW_MAX@,$NCURSES_CCHARW_MAX,;t t
+s,@NCURSES_TPARM_ARG@,$NCURSES_TPARM_ARG,;t t
s,@MANPAGE_RENAMES@,$MANPAGE_RENAMES,;t t
s,@NCURSES_EXT_FUNCS@,$NCURSES_EXT_FUNCS,;t t
s,@GENERATED_EXT_FUNCS@,$GENERATED_EXT_FUNCS,;t t
@@ -19972,6 +21679,11 @@ s,@cf_cv_enable_opaque@,$cf_cv_enable_opaque,;t t
s,@NCURSES_OPAQUE@,$NCURSES_OPAQUE,;t t
s,@NCURSES_SIZE_T@,$NCURSES_SIZE_T,;t t
s,@NCURSES_WRAP_PREFIX@,$NCURSES_WRAP_PREFIX,;t t
+s,@ECHO_LT@,$ECHO_LT,;t t
+s,@ECHO_LD@,$ECHO_LD,;t t
+s,@RULE_CC@,$RULE_CC,;t t
+s,@SHOW_CC@,$SHOW_CC,;t t
+s,@ECHO_CC@,$ECHO_CC,;t t
s,@ECHO_LINK@,$ECHO_LINK,;t t
s,@ADAFLAGS@,$ADAFLAGS,;t t
s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t
@@ -20015,14 +21727,17 @@ s,@CXX_LIB_SUFFIX@,$CXX_LIB_SUFFIX,;t t
s,@TICS_ARG_SUFFIX@,$TICS_ARG_SUFFIX,;t t
s,@TICS_DEP_SUFFIX@,$TICS_DEP_SUFFIX,;t t
s,@TICS_LIB_SUFFIX@,$TICS_LIB_SUFFIX,;t t
-s,@TICS_ARGS@,$TICS_ARGS,;t t
+s,@TICS_LDFLAGS@,$TICS_LDFLAGS,;t t
+s,@TICS_LIBS@,$TICS_LIBS,;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,@TINFO_LDFLAGS@,$TINFO_LDFLAGS,;t t
+s,@TINFO_LIBS@,$TINFO_LIBS,;t t
+s,@TINFO_LDFLAGS2@,$TINFO_LDFLAGS2,;t t
s,@LDFLAGS_STATIC@,$LDFLAGS_STATIC,;t t
s,@LDFLAGS_SHARED@,$LDFLAGS_SHARED,;t t
+s,@includesubdir@,$includesubdir,;t t
s,@WITH_OVERWRITE@,$WITH_OVERWRITE,;t t
s,@TICS_LIST@,$TICS_LIST,;t t
s,@TINFO_LIST@,$TINFO_LIST,;t t
@@ -20032,6 +21747,7 @@ 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,@PC_MODULES_TO_MAKE@,$PC_MODULES_TO_MAKE,;t t
s,@ADA_SUBDIRS@,$ADA_SUBDIRS,;t t
s,@DIRS_TO_MAKE@,$DIRS_TO_MAKE,;t t
s,@NCURSES_SHLIB2@,$NCURSES_SHLIB2,;t t
@@ -20043,6 +21759,10 @@ s,@cross_compiling@,$cross_compiling,;t t
s,@TIC_PATH@,$TIC_PATH,;t t
s,@MAKE_TESTS@,$MAKE_TESTS,;t t
s,@ADAHTML_DIR@,$ADAHTML_DIR,;t t
+s,@PANEL_NAME@,$PANEL_NAME,;t t
+s,@MENU_NAME@,$MENU_NAME,;t t
+s,@FORM_NAME@,$FORM_NAME,;t t
+s,@CXX_NAME@,$CXX_NAME,;t t
CEOF
EOF
@@ -20157,7 +21877,7 @@ done; }
esac
if test x"$ac_file" != x-; then
- { echo "$as_me:20160: creating $ac_file" >&5
+ { echo "$as_me:21880: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
@@ -20175,7 +21895,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:20178: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:21898: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@@ -20188,13 +21908,45 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
- { { echo "$as_me:20191: error: cannot find input file: $f" >&5
+ { { echo "$as_me:21911: 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
+ ac_warn_datarootdir=no
+ if test x"$ac_file" != x-; then
+ for ac_item in $ac_file_inputs
+ do
+ ac_seen=`grep '@\(datadir\|mandir\|infodir\)@' $ac_item`
+ if test -n "$ac_seen"; then
+ ac_used=`grep '@datarootdir@' $ac_item`
+ if test -z "$ac_used"; then
+ { echo "$as_me:21927: WARNING: datarootdir was used implicitly but not set:
+$ac_seen" >&5
+echo "$as_me: WARNING: datarootdir was used implicitly but not set:
+$ac_seen" >&2;}
+ ac_warn_datarootdir=yes
+ fi
+ fi
+ ac_seen=`grep '${datarootdir}' $ac_item`
+ if test -n "$ac_seen"; then
+ { echo "$as_me:21936: WARNING: datarootdir was used explicitly but not set:
+$ac_seen" >&5
+echo "$as_me: WARNING: datarootdir was used explicitly but not set:
+$ac_seen" >&2;}
+ ac_warn_datarootdir=yes
+ fi
+ done
+ fi
+
+if test "x$ac_warn_datarootdir" = xyes; then
+ ac_sed_cmds="$ac_sed_cmds | sed -e 's,@datarootdir@,\${prefix}/share,g' -e 's,\${datarootdir},\${prefix}/share,g'"
+fi
+
+EOF
cat >>$CONFIG_STATUS <<EOF
sed "$ac_vpsub
$extrasub
@@ -20209,11 +21961,35 @@ 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
+ cp $tmp/out $ac_file
+
+ for ac_name in prefix exec_prefix datarootdir
+ do
+ ac_seen=`fgrep -n '${'$ac_name'[:=].*}' $ac_file`
+ if test -n "$ac_seen"; then
+ ac_init=`egrep '[ ]*'$ac_name'[ ]*=' $ac_file`
+ if test -z "$ac_init"; then
+ ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'`
+ { echo "$as_me:21973: WARNING: Variable $ac_name is used but was not set:
+$ac_seen" >&5
+echo "$as_me: WARNING: Variable $ac_name is used but was not set:
+$ac_seen" >&2;}
+ fi
+ fi
+ done
+ egrep -n '@[a-z_][a-z_0-9]+@' $ac_file >$tmp/out
+ egrep -n '@[A-Z_][A-Z_0-9]+@' $ac_file >>$tmp/out
+ if test -s $tmp/out; then
+ ac_seen=`sed -e 's,^,'$ac_file':,' < $tmp/out`
+ { echo "$as_me:21984: WARNING: Some variables may not be substituted:
+$ac_seen" >&5
+echo "$as_me: WARNING: Some variables may not be substituted:
+$ac_seen" >&2;}
+ fi
else
cat $tmp/out
- rm -f $tmp/out
fi
+ rm -f $tmp/out
done
EOF
@@ -20254,7 +22030,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
* ) ac_file_in=$ac_file.in ;;
esac
- test x"$ac_file" != x- && { echo "$as_me:20257: creating $ac_file" >&5
+ test x"$ac_file" != x- && { echo "$as_me:22033: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
# First look for the input files in the build tree, otherwise in the
@@ -20265,7 +22041,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
- test -f "$f" || { { echo "$as_me:20268: error: cannot find input file: $f" >&5
+ test -f "$f" || { { echo "$as_me:22044: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@@ -20278,7 +22054,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
- { { echo "$as_me:20281: error: cannot find input file: $f" >&5
+ { { echo "$as_me:22057: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@@ -20336,7 +22112,7 @@ cat >>$CONFIG_STATUS <<\EOF
rm -f $tmp/in
if test x"$ac_file" != x-; then
if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
- { echo "$as_me:20339: $ac_file is unchanged" >&5
+ { echo "$as_me:22115: $ac_file is unchanged" >&5
echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
@@ -20394,25 +22170,20 @@ do
if test ! -d $srcdir/$cf_dir; then
continue
elif test -f $srcdir/$cf_dir/programs; then
- $AWK -f $srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LINK" $srcdir/$cf_dir/programs >>$cf_dir/Makefile
+ $AWK -f $srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LD" $srcdir/$cf_dir/programs >>$cf_dir/Makefile
fi
done
fi
- case $cf_cv_system_name in #(vi
- OS/2*|os2*) #(vi
- LIB_PREFIX=''
- ;;
- *) LIB_PREFIX='lib'
- ;;
- esac
cf_prefix=$LIB_PREFIX
-if test $cf_cv_shlib_version = cygdll ; then
+case $cf_cv_shlib_version in #(vi
+cygdll|msysdll|mingw)
TINFO_NAME=$TINFO_ARG_SUFFIX
TINFO_SUFFIX=.dll
-fi
+ ;;
+esac
if test -n "$TINFO_SUFFIX" ; then
case $TINFO_SUFFIX in
@@ -20438,34 +22209,30 @@ do
elif test -f $srcdir/$cf_dir/modules; then
SHARED_LIB=
- LIBS_TO_MAKE=
+ Libs_To_Make=
for cf_item in $cf_LIST_MODELS
do
- case $cf_item in #(vi
- libtool) #(vi
+ case X$cf_item in #(vi
+ Xlibtool) #(vi
cf_suffix='.la'
cf_depsuf=$cf_suffix
;;
- normal) #(vi
- cf_suffix='.a'
- cf_depsuf=$cf_suffix
- ;;
- debug) #(vi
+ Xdebug) #(vi
cf_suffix='_g.a'
cf_depsuf=$cf_suffix
;;
- profile) #(vi
+ Xprofile) #(vi
cf_suffix='_p.a'
cf_depsuf=$cf_suffix
;;
- shared) #(vi
+ Xshared) #(vi
case $cf_cv_system_name in
- aix[56]*) #(vi
+ aix[5-7]*) #(vi
cf_suffix='.a'
cf_depsuf=$cf_suffix
;;
- cygwin*) #(vi
+ cygwin*|msys*|mingw*) #(vi
cf_suffix='.dll'
cf_depsuf='.dll.a'
;;
@@ -20485,83 +22252,88 @@ do
;;
esac
;;
- *) cf_suffix='.so'
+ *) #(vi
+ cf_suffix='.so'
cf_depsuf=$cf_suffix
;;
esac
+ ;;
+ *)
+ cf_suffix='.a'
+ cf_depsuf=$cf_suffix
+ ;;
esac
test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}"
test -n "$LIB_SUFFIX" && cf_depsuf="${LIB_SUFFIX}${cf_depsuf}"
+ cf_libname=$cf_dir
+ test "$cf_dir" = c++ && cf_libname=ncurses++
if test $cf_item = shared ; then
- if test "$cf_cv_do_symlinks" = yes ; then
- case "$cf_cv_shlib_version" in #(vi
- rel) #(vi
- case "$cf_cv_system_name" in #(vi
- darwin*)
- case .${LIB_SUFFIX} in
- .tw*)
- cf_suffix=`echo $cf_suffix | sed 's/^tw//'`
- cf_suffix=tw'.${REL_VERSION}'"$cf_suffix"
- ;;
- .t*)
- cf_suffix=`echo $cf_suffix | sed 's/^t//'`
- cf_suffix=t'.${REL_VERSION}'"$cf_suffix"
- ;;
- .w*)
- cf_suffix=`echo $cf_suffix | sed 's/^w//'`
- cf_suffix=w'.${REL_VERSION}'"$cf_suffix"
+ if test -n "${LIB_SUFFIX}"
+ then
+ cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${LIB_SUFFIX}"'//'`
+ else
+ cf_shared_suffix="$cf_suffix"
+ fi
+ if test "$cf_cv_do_symlinks" = yes ; then
+ cf_version_name=
+
+ case "$cf_cv_shlib_version" in #(vi
+ rel) #(vi
+ cf_version_name=REL_VERSION
;;
- *)
- cf_suffix='.${REL_VERSION}'"$cf_suffix"
+ abi)
+ cf_version_name=ABI_VERSION
;;
esac
- ;; #(vi
- *) cf_suffix="$cf_suffix"'.${REL_VERSION}' ;;
- esac
+
+ if test -n "$cf_version_name"
+ then
+ case "$cf_cv_system_name" in #(vi
+ darwin*)
+ # "w", etc?
+ cf_suffix="${LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix"
+ ;; #(vi
+ *)
+ cf_suffix="$cf_suffix"'.${'$cf_version_name'}'
+ ;;
+ esac
+ fi
+ if test -n "${LIB_SUFFIX}"
+ then
+ cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${LIB_SUFFIX}"'//'`
+ else
+ cf_shared_suffix="$cf_suffix"
+ fi
+ 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.
+ case $cf_cv_shlib_version in #(vi
+ cygdll) #(vi
+ cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
+ Libs_To_Make="$Libs_To_Make ../lib/cyg${cf_libname}${cf_cygsuf}"
+ continue
;;
- abi)
- case "$cf_cv_system_name" in #(vi
- darwin*)
- case .${LIB_SUFFIX} in
- .tw*)
- cf_suffix=`echo $cf_suffix | sed 's/^tw//'`
- cf_suffix=tw'.${ABI_VERSION}'"$cf_suffix"
- ;;
- .t*)
- cf_suffix=`echo $cf_suffix | sed 's/^t//'`
- cf_suffix=t'.${ABI_VERSION}'"$cf_suffix"
- ;;
- .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
+ msysdll) #(vi
+ cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
+ Libs_To_Make="$Libs_To_Make ../lib/msys-${cf_libname}${cf_cygsuf}"
+ continue
+ ;;
+ mingw)
+ cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
+ Libs_To_Make="$Libs_To_Make ../lib/lib${cf_libname}${cf_cygsuf}"
+ continue
;;
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
- cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'`
- LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/cyg${cf_dir}${cf_cygsuf}"
- continue
- fi
- fi
- LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/${cf_prefix}${cf_dir}${cf_suffix}"
+ Libs_To_Make="$Libs_To_Make ../lib/${cf_prefix}${cf_libname}${cf_suffix}"
done
if test $cf_dir = ncurses ; then
cf_subsets="$LIB_SUBSETS"
cf_r_parts="$cf_subsets"
- cf_liblist="$LIBS_TO_MAKE"
+ cf_liblist="$Libs_To_Make"
while test -n "$cf_r_parts"
do
@@ -20581,7 +22353,7 @@ do
;;
esac
if test -n "$cf_item"; then
- LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE"
+ Libs_To_Make="$cf_item $Libs_To_Make"
fi
else
break
@@ -20591,13 +22363,40 @@ do
cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'`
fi
- sed -e "s%@LIBS_TO_MAKE@%$LIBS_TO_MAKE%" \
+ if test $cf_dir = c++; then
+ if test "x$with_shared_cxx" != xyes && test -n "$cf_shared_suffix"; then
+ cf_list=
+ for cf_item in $Libs_To_Make
+ do
+ case $cf_item in
+ *.a)
+ ;;
+ *)
+ cf_item=`echo "$cf_item" | sed -e "s,"$cf_shared_suffix",.a,"`
+ ;;
+ esac
+ for cf_test in $cf_list
+ do
+ if test "$cf_test" = "$cf_item"
+ then
+ cf_LIST_MODELS=`echo "$cf_LIST_MODELS" | sed -e 's/normal//'`
+ cf_item=
+ break
+ fi
+ done
+ test -n "$cf_item" && cf_list="$cf_list $cf_item"
+ done
+ Libs_To_Make="$cf_list"
+ fi
+ fi
+
+ sed -e "s%@Libs_To_Make@%$Libs_To_Make%" \
-e "s%@SHARED_LIB@%$SHARED_LIB%" \
$cf_dir/Makefile >$cf_dir/Makefile.out
mv $cf_dir/Makefile.out $cf_dir/Makefile
$AWK -f $srcdir/mk-0th.awk \
- libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" \
+ libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" ticlib="$TICS_LIB_SUFFIX" termlib="$TINFO_LIB_SUFFIX" \
$srcdir/$cf_dir/modules >>$cf_dir/Makefile
for cf_subset in $cf_subsets
@@ -20605,34 +22404,47 @@ do
cf_subdirs=
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___%`
- case $cf_item in #(vi
- libtool) #(vi
+ CXX_MODEL=$cf_ITEM
+ if test "$CXX_MODEL" = SHARED; then
+ case $cf_cv_shlib_version in #(vi
+ cygdll|msysdll|mingw) #(vi
+ test "x$with_shared_cxx" = xno && test -n "$verbose" && echo " overriding CXX_MODEL to SHARED" 1>&6
+
+echo "${as_me:-configure}:22418: testing overriding CXX_MODEL to SHARED ..." 1>&5
+
+ with_shared_cxx=yes
+ ;;
+ *)
+ test "x$with_shared_cxx" = xno && CXX_MODEL=NORMAL
+ ;;
+ esac
+ fi
+
+ case X$cf_item in #(vi
+ Xlibtool) #(vi
cf_suffix='.la'
cf_depsuf=$cf_suffix
;;
- normal) #(vi
- cf_suffix='.a'
- cf_depsuf=$cf_suffix
- ;;
- debug) #(vi
+ Xdebug) #(vi
cf_suffix='_g.a'
cf_depsuf=$cf_suffix
;;
- profile) #(vi
+ Xprofile) #(vi
cf_suffix='_p.a'
cf_depsuf=$cf_suffix
;;
- shared) #(vi
+ Xshared) #(vi
case $cf_cv_system_name in
- aix[56]*) #(vi
+ aix[5-7]*) #(vi
cf_suffix='.a'
cf_depsuf=$cf_suffix
;;
- cygwin*) #(vi
+ cygwin*|msys*|mingw*) #(vi
cf_suffix='.dll'
cf_depsuf='.dll.a'
;;
@@ -20652,10 +22464,16 @@ cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
;;
esac
;;
- *) cf_suffix='.so'
+ *) #(vi
+ cf_suffix='.so'
cf_depsuf=$cf_suffix
;;
esac
+ ;;
+ *)
+ cf_suffix='.a'
+ cf_depsuf=$cf_suffix
+ ;;
esac
test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}"
test -n "$LIB_SUFFIX" && cf_depsuf="${LIB_SUFFIX}${cf_depsuf}"
@@ -20667,7 +22485,7 @@ cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
profile) cf_subdir='obj_p' ;;
shared)
case $cf_cv_system_name in #(vi
- cygwin) #(vi
+ cygwin|msys) #(vi
cf_subdir='objects' ;;
*)
cf_subdir='obj_s' ;;
@@ -20688,6 +22506,8 @@ cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
cf_libname=$TICS_LIB_SUFFIX
;;
esac
+ elif test $cf_dir = c++ ; then
+ cf_libname=ncurses++$LIB_SUFFIX
else
cf_libname=${cf_libname}$LIB_SUFFIX
fi
@@ -20739,10 +22559,12 @@ cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
name=${cf_libname}${cf_dir_suffix} \
traces=$LIB_TRACING \
MODEL=$cf_ITEM \
+ CXX_MODEL=$CXX_MODEL \
model=$cf_subdir \
prefix=$cf_prefix \
suffix=$cf_suffix \
subset=$cf_subset \
+ driver=$cf_cv_term_driver \
SymLink="$LN_S" \
TermlibRoot=$TINFO_NAME \
TermlibSuffix=$TINFO_SUFFIX \
@@ -20781,7 +22603,7 @@ cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQ
done
fi
- echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} $@' >>Makefile
+ echo ' cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} $@' >>Makefile
done
for cf_dir in $SRC_SUBDIRS
@@ -20796,7 +22618,7 @@ do
echo 'libs \' >> Makefile
echo 'install.libs \' >> Makefile
echo 'uninstall.libs ::' >> Makefile
- echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} $@' >> Makefile
+ echo ' cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} $@' >> Makefile
;;
esac
fi
@@ -20819,7 +22641,7 @@ install.libs \\
uninstall.libs \\
install.$cf_dir \\
uninstall.$cf_dir ::
- cd $cf_dir && \${MAKE} \${CF_MFLAGS} \$@
+ cd $cf_dir && \${MAKE} \${TOP_MFLAGS} \$@
CF_EOF
elif test -f $srcdir/$cf_dir/headers; then
cat >> Makefile <<CF_EOF
@@ -20829,24 +22651,26 @@ install.libs \\
uninstall.libs \\
install.includes \\
uninstall.includes ::
- cd $cf_dir && \${MAKE} \${CF_MFLAGS} \$@
+ cd $cf_dir && \${MAKE} \${TOP_MFLAGS} \$@
CF_EOF
fi
done
+if test "x$cf_with_db_install" = xyes; then
cat >> Makefile <<CF_EOF
install.libs uninstall.libs \\
install.data uninstall.data ::
-$MAKE_TERMINFO cd misc && \${MAKE} \${CF_MFLAGS} \$@
+$MAKE_TERMINFO cd misc && \${MAKE} \${TOP_MFLAGS} \$@
CF_EOF
+fi
if test "x$cf_with_manpages" = xyes; then
cat >> Makefile <<CF_EOF
install.man \\
uninstall.man ::
- cd man && \${MAKE} \${CF_MFLAGS} \$@
+ cd man && \${MAKE} \${TOP_MFLAGS} \$@
CF_EOF
fi
@@ -20867,7 +22691,7 @@ cat >> Makefile <<CF_EOF
install.man \\
uninstall.man ::
- cd tack && \${MAKE} \${CF_MFLAGS} \$@
+ cd tack && \${MAKE} \${TOP_MFLAGS} \$@
CF_EOF
fi
fi
@@ -20979,7 +22803,7 @@ CF_EOF
fi
done
-if test "x$cf_with_ada" != xno ; then
+if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then
if test -z "$USE_OLD_MAKERULES" ; then
$AWK -f $srcdir/Ada95/mk-1st.awk <$srcdir/Ada95/src/modules >>Ada95/src/Makefile
fi
diff --git a/contrib/ncurses/configure.in b/contrib/ncurses/configure.in
index d5bc841e9b04..c14ebe791441 100644
--- a/contrib/ncurses/configure.in
+++ b/contrib/ncurses/configure.in
@@ -1,5 +1,5 @@
dnl***************************************************************************
-dnl Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+dnl Copyright (c) 1998-2012,2013 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,14 +28,14 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: configure.in,v 1.520 2011/03/28 00:22:26 tom Exp $
+dnl $Id: configure.in,v 1.577 2013/12/15 00:03:02 tom Exp $
dnl Process this file with autoconf to produce a configure script.
dnl
dnl See http://invisible-island.net/autoconf/ for additional information.
dnl
dnl ---------------------------------------------------------------------------
-AC_PREREQ(2.13.20020210)
-AC_REVISION($Revision: 1.520 $)
+AC_PREREQ(2.52.20030208)
+AC_REVISION($Revision: 1.577 $)
AC_INIT(ncurses/base/lib_initscr.c)
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
@@ -45,11 +45,7 @@ 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])
+CF_WITH_SYSTYPE
### Save the given $CFLAGS to allow user-override.
cf_user_CFLAGS="$CFLAGS"
@@ -58,15 +54,22 @@ cf_user_CFLAGS="$CFLAGS"
CF_CFG_DEFAULTS
### Checks for programs.
-AC_PROG_CC
-CF_GCC_VERSION
+AC_ARG_WITH(ada,
+ [ --without-ada suppress check for Ada95, don't build demo],
+ [cf_with_ada=$withval],
+ [cf_with_ada=yes])
+if test "x$cf_with_ada" = xyes
+then
+ cf_PROG_CC="gnatgcc gcc cc"
+else
+ cf_PROG_CC="gcc cc"
+fi
+
+CF_PROG_CC($cf_PROG_CC)
AC_PROG_CPP
AC_PROG_GCC_TRADITIONAL
CF_PROG_CC_C_O(CC)
-AC_ISC_POSIX
-CF_ANSI_CC_REQD
-CF_PROG_EXT
CF_PROG_LDCONFIG
dnl DEFECT in autoconf 2.12: an attempt to set policy, this breaks the
@@ -89,14 +92,16 @@ else
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++.
+ # autoconf 2.5x removed the error (hardcoding it to g++, or just blank)
if test "$CXX" = "g++" ; then
AC_PATH_PROG(CXX,g++)
fi
- if test "$CXX" = "g++" ; then
- AC_MSG_WARN(ignoring hardcoded g++)
+ case "x$CXX" in #(vi
+ x|xg++)
+ AC_MSG_WARN([You don't have any C++ compiler, too bad])
cf_with_cxx=no; CXX=""; GXX="";
- fi
+ ;;
+ esac
fi
CF_GXX_VERSION
@@ -116,12 +121,15 @@ AC_ARG_WITH(cxx-binding,
AC_MSG_RESULT($cf_with_cxx_binding)
AC_MSG_CHECKING(if you want to build with Ada95)
-AC_ARG_WITH(ada,
- [ --without-ada suppress check for Ada95, don't build demo],
- [cf_with_ada=$withval],
- [cf_with_ada=yes])
AC_MSG_RESULT($cf_with_ada)
+AC_MSG_CHECKING(if you want to install terminal database)
+AC_ARG_ENABLE(db-install,
+ [ --disable-db-install suppress install of terminal database],
+ [cf_with_db_install=$enableval],
+ [cf_with_db_install=yes])
+AC_MSG_RESULT($cf_with_db_install)
+
AC_MSG_CHECKING(if you want to install manpages)
AC_ARG_WITH(manpages,
[ --without-manpages suppress install of manpages],
@@ -131,14 +139,14 @@ AC_MSG_RESULT($cf_with_manpages)
AC_MSG_CHECKING(if you want to build programs such as tic)
AC_ARG_WITH(progs,
- [ --without-progs suppress build with programs (e.g., tic)],
+ [ --without-progs suppress build/install with programs (e.g., tic)],
[cf_with_progs=$withval],
[cf_with_progs=yes])
AC_MSG_RESULT($cf_with_progs)
AC_MSG_CHECKING(if you want to build test-programs)
AC_ARG_WITH(tests,
- [ --without-tests suppress build with test-programs],
+ [ --without-tests suppress build/install with test-programs],
[cf_with_tests=$withval],
[cf_with_tests=yes])
AC_MSG_RESULT($cf_with_tests)
@@ -168,28 +176,8 @@ AC_SYS_LONG_FILE_NAMES
# if we find pkg-config, check if we should install the ".pc" files.
CF_PKG_CONFIG
-
-if test "$PKG_CONFIG" != no ; then
- AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
-
- # Leave this as something that can be overridden in the environment.
- if test -z "$PKG_CONFIG_LIBDIR" ; then
- PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`/lib/pkgconfig
- fi
- PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
- if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
- AC_ARG_ENABLE(pc-files,
- [ --enable-pc-files generate and install .pc files for pkg-config],
- [enable_pc_files=$enableval],
- [enable_pc_files=no])
- AC_MSG_RESULT($enable_pc_files)
- else
- AC_MSG_RESULT(no)
- AC_MSG_WARN(did not find library $PKG_CONFIG_LIBDIR)
- enable_pc_files=no
- fi
-fi
-AC_SUBST(PKG_CONFIG_LIBDIR)
+CF_WITH_PKG_CONFIG_LIBDIR
+CF_ENABLE_PC_FILES
AC_MSG_CHECKING(if we should assume mixed-case filenames)
AC_ARG_ENABLE(mixed-case,
@@ -201,8 +189,8 @@ if test "$enable_mixedcase" = "auto" ; then
CF_MIXEDCASE_FILENAMES
else
cf_cv_mixedcase=$enable_mixedcase
- if test "$enable_mixedcase" = "yes" ; then
- AC_DEFINE(MIXEDCASE_FILENAMES)
+ if test "x$enable_mixedcase" = "xyes" ; then
+ AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if tic should assume mixed-case filenames])
fi
fi
@@ -215,6 +203,7 @@ dnl These are standard among *NIX systems, but not when cross-compiling
AC_CHECK_TOOL(RANLIB, ranlib, ':')
AC_CHECK_TOOL(LD, ld, ld)
AC_CHECK_TOOL(AR, ar, ar)
+AC_CHECK_TOOL(NM, nm, nm)
CF_AR_FLAGS
dnl Special option for use by system-builders: the install-prefix is used to
@@ -223,8 +212,8 @@ dnl archive can be built without modifying the host system's configuration.
AC_MSG_CHECKING(if you have specified an install-prefix)
AC_ARG_WITH(install-prefix,
[ --with-install-prefix prefixes actual install-location ($DESTDIR)],
- [case "$withval" in #(vi
- yes|no) #(vi
+ [case "x$withval" in #(vi
+ xyes|xno) #(vi
;;
*) DESTDIR="$withval"
;;
@@ -261,7 +250,7 @@ AC_ARG_WITH(shared,
[with_shared=$withval],
[with_shared=no])
AC_MSG_RESULT($with_shared)
-test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
+test "x$with_shared" = "xyes" && cf_list_models="$cf_list_models shared"
AC_MSG_CHECKING(if you want to build static libraries)
AC_ARG_WITH(normal,
@@ -269,7 +258,7 @@ AC_ARG_WITH(normal,
[with_normal=$withval],
[with_normal=yes])
AC_MSG_RESULT($with_normal)
-test "$with_normal" = "yes" && cf_list_models="$cf_list_models normal"
+test "x$with_normal" = "xyes" && cf_list_models="$cf_list_models normal"
AC_MSG_CHECKING(if you want to build debug libraries)
AC_ARG_WITH(debug,
@@ -277,7 +266,7 @@ AC_ARG_WITH(debug,
[with_debug=$withval],
[with_debug=yes])
AC_MSG_RESULT($with_debug)
-test "$with_debug" = "yes" && cf_list_models="$cf_list_models debug"
+test "x$with_debug" = "xyes" && cf_list_models="$cf_list_models debug"
AC_MSG_CHECKING(if you want to build profiling libraries)
AC_ARG_WITH(profile,
@@ -285,8 +274,19 @@ AC_ARG_WITH(profile,
[with_profile=$withval],
[with_profile=no])
AC_MSG_RESULT($with_profile)
-test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
+test "x$with_profile" = "xyes" && cf_list_models="$cf_list_models profile"
+
+fi
+if test "X$cf_with_cxx_binding" != Xno; then
+if test "x$with_shared" = "xyes"; then
+AC_MSG_CHECKING(if you want to build C++ shared libraries)
+AC_ARG_WITH(cxx-shared,
+ [ --with-cxx-shared generate C++ shared-libraries],
+ [with_shared_cxx=$withval],
+ [with_shared_cxx=no])
+AC_MSG_RESULT($with_shared_cxx)
+fi
fi
###############################################################################
@@ -321,12 +321,11 @@ AC_SUBST(LIB_NAME)
LIB_DIR=../lib
LIB_2ND=../../lib
-CF_LIB_PREFIX(cf_prefix)
-LIB_PREFIX=$cf_prefix
-AC_SUBST(LIB_PREFIX)
+CF_WITH_LIB_PREFIX(cf_prefix)
LIB_SUFFIX=
AC_SUBST(LIB_SUFFIX)
+CF_PATHSEP
###############################################################################
@@ -354,21 +353,21 @@ if test "$with_gpm" != no ; then
[with_dlsym=$withval],
[with_dlsym=yes])
AC_MSG_RESULT($with_dlsym)
- if test "$with_dlsym" = yes ; then
+ if test "x$with_dlsym" = xyes ; then
CF_FUNC_DLSYM
- if test "$with_gpm" != yes ; then
+ if test "x$with_gpm" != xyes ; then
CF_VERBOSE(assuming soname for gpm is $with_gpm)
cf_cv_gpm_soname="$with_gpm"
else
CF_LIB_SONAME([#include <gpm.h>],[if (Gpm_Open(0,0)) Gpm_Close();],gpm)
fi
- test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname")
+ test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname",[Define as needed to set the gpm share library soname])
SHLIB_LIST="-ldl $SHLIB_LIST"
else
SHLIB_LIST="-lgpm $SHLIB_LIST"
CF_ADD_LIB(gpm,TEST_LIBS)
fi
- AC_DEFINE(HAVE_LIBGPM)
+ AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library])
CF_CHECK_GPM_WGETCH
fi
@@ -378,13 +377,13 @@ dnl Not all ports of gcc support the -g option
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=''
+ test -n "$GCC" && test "x${ac_cv_prog_cc_g}" != xyes && CC_G_OPT=''
fi
AC_SUBST(CC_G_OPT)
if test X"$CXX_G_OPT" = X"" ; then
CXX_G_OPT='-g'
- test -n "$GXX" && test "${ac_cv_prog_cxx_g}" != yes && CXX_G_OPT=''
+ test -n "$GXX" && test "x${ac_cv_prog_cxx_g}" != xyes && CXX_G_OPT=''
fi
AC_SUBST(CXX_G_OPT)
@@ -411,6 +410,8 @@ AC_MSG_RESULT($cf_cv_do_relink)
;;
esac
+# we will build libraries one-level down.
+rel_builddir=..
CF_SHARED_OPTS
if test "$CC_SHARED_OPTS" = "unknown"; then
for model in $cf_list_models; do
@@ -453,9 +454,9 @@ os2*) #(vi
esac
AC_SUBST(TERMINFO_SRC)
-CF_PATHSEP
+NCURSES_USE_DATABASE=0
if test "$use_database" != no ; then
- AC_DEFINE(USE_DATABASE)
+ NCURSES_USE_DATABASE=1
AC_MSG_CHECKING(which terminfo source-file will be installed)
AC_ARG_WITH(database,
@@ -471,6 +472,7 @@ if test "$use_database" != no ; then
else
with_hashed_db=no
fi
+AC_SUBST(NCURSES_USE_DATABASE)
AC_MSG_CHECKING(for list of fallback descriptions)
AC_ARG_WITH(fallbacks,
@@ -494,6 +496,26 @@ AC_MSG_RESULT($with_xterm_new)
WHICH_XTERM=$with_xterm_new
AC_SUBST(WHICH_XTERM)
+AC_MSG_CHECKING(if xterm backspace sends BS or DEL)
+AC_ARG_WITH(xterm-kbs,
+ [ --with-xterm-kbs=XXX specify if xterm backspace sends BS or DEL],
+ [with_xterm_kbs=$withval],
+ [with_xterm_kbs=BS])
+case x$with_xterm_kbs in
+xyes|xno|xBS|xbs|x8)
+ with_xterm_kbs=BS
+ ;;
+xDEL|xdel|x127)
+ with_xterm_kbs=DEL
+ ;;
+*)
+ with_xterm_kbs=$withval
+ ;;
+esac
+AC_MSG_RESULT($with_xterm_kbs)
+XTERM_KBS=$with_xterm_kbs
+AC_SUBST(XTERM_KBS)
+
MAKE_TERMINFO=
if test "$use_database" = no ; then
TERMINFO="${datadir}/terminfo"
@@ -507,7 +529,7 @@ CF_WITH_PATHLIST(terminfo-dirs,
DATADIR/terminfo,
${datadir}/terminfo)
AC_MSG_RESULT($TERMINFO_DIRS)
-test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS")
+test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS",[Define as needed to predefine the TERMINFO_DIR searchlist])
AC_MSG_CHECKING(for default terminfo directory)
CF_WITH_PATH(default-terminfo-dir,
@@ -516,7 +538,7 @@ CF_WITH_PATH(default-terminfo-dir,
DATADIR/terminfo,
${datadir}/terminfo)
AC_MSG_RESULT($TERMINFO)
-AC_DEFINE_UNQUOTED(TERMINFO,"$TERMINFO")
+AC_DEFINE_UNQUOTED(TERMINFO,"$TERMINFO",[Define to set the default terminal database path])
fi
@@ -543,7 +565,7 @@ int main() {
[with_big_core=no],
[with_big_core=no])])
AC_MSG_RESULT($with_big_core)
-test "$with_big_core" = "yes" && AC_DEFINE(HAVE_BIG_CORE)
+test "x$with_big_core" = "xyes" && AC_DEFINE(HAVE_BIG_CORE,1,[Define to 1 if machine has ample memory for tic])
### ISO C only guarantees 512-char strings, we have tables which load faster
### when constructed using "big" strings. More than the C compiler, the awk
@@ -556,7 +578,7 @@ AC_ARG_ENABLE(big-strings,
AC_MSG_RESULT($with_big_strings)
USE_BIG_STRINGS=0
-test "$with_big_strings" = "yes" && USE_BIG_STRINGS=1
+test "x$with_big_strings" = "xyes" && USE_BIG_STRINGS=1
AC_SUBST(USE_BIG_STRINGS)
### use option --enable-termcap to compile in the termcap fallback support
@@ -567,46 +589,48 @@ AC_ARG_ENABLE(termcap,
[with_termcap=no])
AC_MSG_RESULT($with_termcap)
-if test "$with_termcap" != "yes" ; then
+NCURSES_USE_TERMCAP=0
+if test "x$with_termcap" != "xyes" ; then
if test "$use_database" = no ; then
if test -z "$with_fallback" ; then
AC_ERROR(You have disabled the database w/o specifying fallbacks)
fi
fi
- AC_DEFINE(PURE_TERMINFO)
+ AC_DEFINE(PURE_TERMINFO,1,[Define to 1 if we should support only terminfo])
else
-if test "$with_ticlib" != no ; then
- AC_ERROR(Options --with-ticlib and --enable-termcap cannot be combined)
-fi
-
-AC_DEFINE(USE_TERMCAP)
-AC_MSG_CHECKING(for list of termcap files)
-CF_WITH_PATHLIST(termpath,
- [ --with-termpath=XXX specify list of termcap files],
- TERMPATH,
- /etc/termcap:/usr/share/misc/termcap)
-AC_MSG_RESULT($TERMPATH)
-test -n "$TERMPATH" && AC_DEFINE_UNQUOTED(TERMPATH,"$TERMPATH")
-
-### use option --enable-getcap to use a hacked getcap for reading termcaps
-AC_MSG_CHECKING(if fast termcap-loader is needed)
-AC_ARG_ENABLE(getcap,
- [ --enable-getcap fast termcap load, no xrefs to terminfo],
- [with_getcap=$enableval],
- [with_getcap=no])
-AC_MSG_RESULT($with_getcap)
-test "$with_getcap" = "yes" && AC_DEFINE(USE_GETCAP)
-
-AC_MSG_CHECKING(if translated termcaps will be cached in ~/.terminfo)
-AC_ARG_ENABLE(getcap-cache,
- [ --enable-getcap-cache cache translated termcaps in ~/.terminfo],
- [with_getcap_cache=$enableval],
- [with_getcap_cache=no])
-AC_MSG_RESULT($with_getcap_cache)
-test "$with_getcap_cache" = "yes" && AC_DEFINE(USE_GETCAP_CACHE)
+ if test "$with_ticlib" != no ; then
+ AC_ERROR(Options --with-ticlib and --enable-termcap cannot be combined)
+ fi
-fi
+ NCURSES_USE_TERMCAP=1
+ AC_MSG_CHECKING(for list of termcap files)
+ CF_WITH_PATHLIST(termpath,
+ [ --with-termpath=XXX specify list of termcap files],
+ TERMPATH,
+ /etc/termcap:/usr/share/misc/termcap)
+ AC_MSG_RESULT($TERMPATH)
+ test -n "$TERMPATH" && AC_DEFINE_UNQUOTED(TERMPATH,"$TERMPATH",[Define to set the termcap searchlist])
+
+ ### use option --enable-getcap to use a hacked getcap for reading termcaps
+ AC_MSG_CHECKING(if fast termcap-loader is needed)
+ AC_ARG_ENABLE(getcap,
+ [ --enable-getcap fast termcap load, no xrefs to terminfo],
+ [with_getcap=$enableval],
+ [with_getcap=no])
+ AC_MSG_RESULT($with_getcap)
+ test "x$with_getcap" = "xyes" && AC_DEFINE(USE_GETCAP,1,[Define to 1 to use fast termcap-loader])
+
+ AC_MSG_CHECKING(if translated termcaps will be cached in ~/.terminfo)
+ AC_ARG_ENABLE(getcap-cache,
+ [ --enable-getcap-cache cache translated termcaps in ~/.terminfo],
+ [with_getcap_cache=$enableval],
+ [with_getcap_cache=no])
+ AC_MSG_RESULT($with_getcap_cache)
+ test "x$with_getcap_cache" = "xyes" && AC_DEFINE(USE_GETCAP_CACHE,1,[Define to 1 if translated termcap should be stored in $HOME/.terminfo])
+
+fi
+AC_SUBST(NCURSES_USE_TERMCAP)
### Use option --disable-home-terminfo to completely remove ~/.terminfo
AC_MSG_CHECKING(if ~/.terminfo is wanted)
@@ -615,7 +639,7 @@ AC_ARG_ENABLE(home-terminfo,
[with_home_terminfo=$enableval],
[with_home_terminfo=yes])
AC_MSG_RESULT($with_home_terminfo)
-test "$with_home_terminfo" = "yes" && AC_DEFINE(USE_HOME_TERMINFO)
+test "x$with_home_terminfo" = "xyes" && AC_DEFINE(USE_HOME_TERMINFO,1,[Define to 1 if $HOME/.terminfo feature is wanted])
AC_MSG_CHECKING(if you want to use restricted environment when running as root)
AC_ARG_ENABLE(root-environ,
@@ -623,7 +647,7 @@ AC_ARG_ENABLE(root-environ,
[with_root_environ=$enableval],
[with_root_environ=yes])
AC_MSG_RESULT($with_root_environ)
-test "$with_root_environ" = yes && AC_DEFINE(USE_ROOT_ENVIRON)
+test "x$with_root_environ" = xyes && AC_DEFINE(USE_ROOT_ENVIRON,1,[Define to 1 if environment should be restricted for root user])
### Use option --enable-symlinks to make tic use symlinks, not hard links
### to reduce storage requirements for the terminfo database.
@@ -634,7 +658,7 @@ with_symlinks=no
# soft links (symbolic links) are useful for some systems where hard links do
# not work, or to make it simpler to copy terminfo trees around.
-if test "$ac_cv_func_symlink" = yes ; then
+if test "x$ac_cv_func_symlink" = xyes ; then
AC_MSG_CHECKING(if tic should use symbolic links)
AC_ARG_ENABLE(symlinks,
[ --enable-symlinks make tic use symbolic links not hard links],
@@ -647,7 +671,7 @@ fi
# 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
+ if test "x$ac_cv_func_link" = xyes ; then
with_links=yes
else
with_links=no
@@ -655,8 +679,8 @@ if test "$with_symlinks" = no ; then
AC_MSG_RESULT($with_links)
fi
-test "$with_links" = yes && AC_DEFINE(USE_LINKS)
-test "$with_symlinks" = yes && AC_DEFINE(USE_SYMLINKS)
+test "x$with_links" = xyes && AC_DEFINE(USE_LINKS,1,[Define to 1 if hardlinks should be used in terminfo database])
+test "x$with_symlinks" = xyes && AC_DEFINE(USE_SYMLINKS,1,[Define to 1 if symbolic links should be used in terminfo database])
### use option --enable-broken-linker to force on use of broken-linker support
AC_MSG_CHECKING(if you want broken-linker support code)
@@ -667,13 +691,13 @@ AC_ARG_ENABLE(broken_linker,
AC_MSG_RESULT($with_broken_linker)
BROKEN_LINKER=0
-if test "$with_broken_linker" = yes ; then
- AC_DEFINE(BROKEN_LINKER)
+if test "x$with_broken_linker" = xyes ; then
+ AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
BROKEN_LINKER=1
elif test "$DFT_LWR_MODEL" = shared ; then
case $cf_cv_system_name in #(vi
cygwin*)
- AC_DEFINE(BROKEN_LINKER)
+ AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules])
BROKEN_LINKER=1
CF_VERBOSE(cygwin linker is broken anyway)
;;
@@ -688,7 +712,7 @@ AC_ARG_ENABLE(bsdpad,
[with_bsdpad=$enableval],
[with_bsdpad=no])
AC_MSG_RESULT($with_bsdpad)
-test "$with_bsdpad" = yes && AC_DEFINE(BSD_TPUTS)
+test "x$with_bsdpad" = xyes && AC_DEFINE(BSD_TPUTS,1,[Define to 1 to recognize BSD-style prefix padding])
### use option --enable-widec to turn on use of wide-character support
NCURSES_CH_T=chtype
@@ -718,22 +742,17 @@ AC_ARG_ENABLE(widec,
[with_widec=$enableval],
[with_widec=no])
AC_MSG_RESULT($with_widec)
-if test "$with_widec" = yes ; then
+if test "x$with_widec" = xyes ; then
LIB_SUFFIX="w${LIB_SUFFIX}"
- AC_DEFINE(USE_WIDEC_SUPPORT)
+ AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to compile with wide-char/UTF-8 code])
+ AC_DEFINE(NCURSES_WIDECHAR,1,[Define to 1 to compile with wide-char/UTF-8 code])
- case "$CFLAGS $CPPFLAGS" in #(vi
- *-D_XOPEN_SOURCE=500) #(vi
- ;;
- *)
- CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED)
- ;;
- esac
+ CF_CHECK_WCHAR_H
# with_overwrite=no
NCURSES_CH_T=cchar_t
AC_CHECK_FUNCS(putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs)
- if test "$ac_cv_func_putwc" != yes ; then
+ if test "x$ac_cv_func_putwc" != xyes ; then
CF_UTF8_LIB
if test "$cf_cv_utf8_lib" != no ; then
NCURSES_LIBUTF8=1
@@ -744,7 +763,7 @@ if test "$with_widec" = yes ; then
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)
+ AC_DEFINE(NEED_MBSTATE_T_DEF,1,[Define to 1 if we must declare mbstate_t])
fi
fi
AC_SUBST(NCURSES_CH_T)
@@ -775,7 +794,7 @@ AC_ARG_ENABLE(lp64,
[with_lp64=$default_with_lp64])
AC_MSG_RESULT($with_lp64)
-if test "$with_lp64" = yes ; then
+if test "x$with_lp64" = xyes ; then
cf_cv_enable_lp64=1
else
cf_cv_enable_lp64=0
@@ -792,7 +811,7 @@ AC_ARG_ENABLE(tparm-varargs,
[with_tparm_varargs=yes])
AC_MSG_RESULT($with_tparm_varargs)
NCURSES_TPARM_VARARGS=0
-test "$with_tparm_varargs" = yes && NCURSES_TPARM_VARARGS=1
+test "x$with_tparm_varargs" = xyes && NCURSES_TPARM_VARARGS=1
AC_SUBST(NCURSES_TPARM_VARARGS)
### use option --disable-tic-depends to make libtic not explicitly depend on ncurses/ncursesw
@@ -859,6 +878,15 @@ AC_ARG_WITH(ccharw-max,
AC_MSG_RESULT($NCURSES_CCHARW_MAX)
AC_SUBST(NCURSES_CCHARW_MAX)
+### use option --with-tparm-arg to override tparm's argument type
+AC_MSG_CHECKING(for type of tparm args)
+AC_ARG_WITH(tparm-arg,
+ [ --with-tparm-arg=TYPE override parameter type of tparm],
+ [NCURSES_TPARM_ARG="$withval"],
+ [NCURSES_TPARM_ARG=long])
+AC_MSG_RESULT($NCURSES_TPARM_ARG)
+AC_SUBST(NCURSES_TPARM_ARG)
+
### Enable compiling-in rcs id's
AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
AC_ARG_WITH(rcs-ids,
@@ -866,7 +894,7 @@ AC_ARG_WITH(rcs-ids,
[with_rcs_ids=$withval],
[with_rcs_ids=no])
AC_MSG_RESULT($with_rcs_ids)
-test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS)
+test "x$with_rcs_ids" = xyes && AC_DEFINE(USE_RCS_IDS,1,[Define to 1 to compile-in RCS identifiers])
###############################################################################
CF_MAN_PAGES([ captoinfo clear infocmp infotocap tabs tic toe tput tset ])
@@ -881,16 +909,19 @@ AC_ARG_ENABLE(ext-funcs,
[with_ext_funcs=$enableval],
[with_ext_funcs=yes])
AC_MSG_RESULT($with_ext_funcs)
-if test "$with_ext_funcs" = yes ; then
+if test "x$with_ext_funcs" = xyes ; then
NCURSES_EXT_FUNCS=1
- AC_DEFINE(HAVE_CURSES_VERSION)
- AC_DEFINE(HAVE_HAS_KEY)
- AC_DEFINE(HAVE_RESIZETERM)
- AC_DEFINE(HAVE_RESIZE_TERM)
- AC_DEFINE(HAVE_TERM_ENTRY_H)
- AC_DEFINE(HAVE_USE_DEFAULT_COLORS)
- AC_DEFINE(HAVE_WRESIZE)
- AC_DEFINE(NCURSES_EXT_FUNCS)
+ AC_DEFINE(HAVE_ASSUME_DEFAULT_COLORS,1,[Define to 1 to enable assume_default_colors() function])
+ AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 to enable curses_version() function])
+ AC_DEFINE(HAVE_HAS_KEY,1,[Define to 1 to enable has_key() function])
+ AC_DEFINE(HAVE_RESIZETERM,1,[Define to 1 to enable resizeterm() function])
+ AC_DEFINE(HAVE_RESIZE_TERM,1,[Define to 1 to enable resize_term() function])
+ AC_DEFINE(HAVE_TERM_ENTRY_H,1,[Define to 1 to enable term_entry() function])
+ AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 to enable use_default_colors() function])
+ AC_DEFINE(HAVE_USE_SCREEN,1,[Define to 1 to enable use_screen() function])
+ AC_DEFINE(HAVE_USE_WINDOW,1,[Define to 1 to enable use_window() function])
+ AC_DEFINE(HAVE_WRESIZE,1,[Define to 1 to enable wresize() function])
+ AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 to enable ncurses extended functions])
GENERATED_EXT_FUNCS=generated
else
NCURSES_EXT_FUNCS=0
@@ -905,9 +936,9 @@ AC_ARG_ENABLE(sp-funcs,
[with_sp_funcs=$enableval],
[with_sp_funcs=no])
AC_MSG_RESULT($with_sp_funcs)
-if test "$with_sp_funcs" = yes ; then
+if test "x$with_sp_funcs" = xyes ; then
NCURSES_SP_FUNCS=1
- AC_DEFINE(NCURSES_SP_FUNCS)
+ AC_DEFINE(NCURSES_SP_FUNCS,1,[Define to 1 to enable experimental SCREEN-extensions])
GENERATED_SP_FUNCS=generated
else
NCURSES_SP_FUNCS=0
@@ -922,9 +953,9 @@ AC_ARG_ENABLE(term-driver,
[with_term_driver=$enableval],
[with_term_driver=no])
AC_MSG_RESULT($with_term_driver)
-if test "$with_term_driver" = yes ; then
- AC_DEFINE(USE_TERM_DRIVER)
- if test "$with_sp_funcs" != yes ; then
+if test "x$with_term_driver" = xyes ; then
+ AC_DEFINE(USE_TERM_DRIVER,1,[Define to 1 to enable experimental terminal-driver])
+ if test "x$with_sp_funcs" != xyes ; then
AC_MSG_ERROR(The term-driver option relies upon sp-funcs)
fi
fi
@@ -937,7 +968,7 @@ AC_ARG_ENABLE(const,
[with_ext_const=no])
AC_MSG_RESULT($with_ext_const)
NCURSES_CONST='/*nothing*/'
-if test "$with_ext_const" = yes ; then
+if test "x$with_ext_const" = xyes ; then
NCURSES_CONST=const
fi
AC_SUBST(NCURSES_CONST)
@@ -950,15 +981,15 @@ AC_ARG_ENABLE(ext-colors,
[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
+if test "x$with_ext_colors" = xyes ; then
+ if test "x$with_widec" != xyes ; then
AC_MSG_ERROR(This option applies only to wide-character library)
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)
+ AC_DEFINE(NCURSES_EXT_COLORS,1,[Define to 1 to compile for 256-color support])
fi
AC_SUBST(NCURSES_EXT_COLORS)
@@ -970,7 +1001,7 @@ AC_ARG_ENABLE(ext-mouse,
[with_ext_mouse=no])
AC_MSG_RESULT($with_ext_mouse)
NCURSES_MOUSE_VERSION=1
-if test "$with_ext_mouse" = yes ; then
+if test "x$with_ext_mouse" = xyes ; then
NCURSES_MOUSE_VERSION=2
CF_NCURSES_ABI_6
fi
@@ -982,7 +1013,7 @@ AC_ARG_ENABLE(no-padding,
[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)
+test "x$with_no_padding" = xyes && AC_DEFINE(NCURSES_NO_PADDING,1,[Define to 1 to compile with $NCURSES_NO_PADDING code])
AC_CHECK_SIZEOF([signed char], 0)
if test "$ac_cv_sizeof_signed_char" = 1 ; then
@@ -996,7 +1027,7 @@ AC_ARG_ENABLE(signed-char,
[with_signed_char=$enableval],
[with_signed_char=no])
AC_MSG_RESULT($with_signed_char)
-test "$with_signed_char" != yes && NCURSES_SBOOL="char"
+test "x$with_signed_char" != xyes && NCURSES_SBOOL="char"
AC_SUBST(NCURSES_SBOOL)
### use option --enable-sigwinch to turn on use of SIGWINCH logic
@@ -1006,7 +1037,7 @@ AC_ARG_ENABLE(sigwinch,
[with_sigwinch=$enableval],
[with_sigwinch=$with_ext_funcs])
AC_MSG_RESULT($with_sigwinch)
-test "$with_sigwinch" = yes && AC_DEFINE(USE_SIGWINCH)
+test "x$with_sigwinch" = xyes && AC_DEFINE(USE_SIGWINCH,1,[Define to 1 to compile with SIGWINCH handler])
### use option --enable-tcap-names to allow user to define new capabilities
AC_MSG_CHECKING(if you want user-definable terminal capabilities like termcap)
@@ -1016,7 +1047,7 @@ AC_ARG_ENABLE(tcap-names,
[with_tcap_names=$with_ext_funcs])
AC_MSG_RESULT($with_tcap_names)
NCURSES_XNAMES=0
-test "$with_tcap_names" = yes && NCURSES_XNAMES=1
+test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1
AC_SUBST(NCURSES_XNAMES)
###############################################################################
@@ -1035,7 +1066,7 @@ AC_ARG_ENABLE(hard-tabs,
[ --enable-hard-tabs compile with hard-tabs code],,
[enable_hard_tabs=$with_develop])
AC_MSG_RESULT($enable_hard_tabs)
-test "$enable_hard_tabs" = yes && AC_DEFINE(USE_HARD_TABS)
+test "x$enable_hard_tabs" = xyes && AC_DEFINE(USE_HARD_TABS,1,[Define to 1 to compile with hard-tabs code])
### use option --enable-xmc-glitch to turn on use of magic-cookie optimize
AC_MSG_CHECKING(if you want limited support for xmc)
@@ -1043,7 +1074,7 @@ AC_ARG_ENABLE(xmc-glitch,
[ --enable-xmc-glitch compile with support for xmc (magic-cookie)],,
[enable_xmc_glitch=$with_develop])
AC_MSG_RESULT($enable_xmc_glitch)
-test "$enable_xmc_glitch" = yes && AC_DEFINE(USE_XMC_SUPPORT)
+test "x$enable_xmc_glitch" = xyes && AC_DEFINE(USE_XMC_SUPPORT,1,[Define to 1 to compile with support for xmc (magic-cookie)])
###############################################################################
# These are just experimental, probably should not be in a package:
@@ -1055,7 +1086,7 @@ AC_ARG_ENABLE(assumed-color,
[with_assumed_color=$enableval],
[with_assumed_color=yes])
AC_MSG_RESULT($with_assumed_color)
-test "$with_assumed_color" = yes && AC_DEFINE(USE_ASSUMED_COLOR)
+test "x$with_assumed_color" = xyes && AC_DEFINE(USE_ASSUMED_COLOR,1,[Define to 1 to assume things about default-colors])
### use option --enable-hashmap to turn on use of hashmap scrolling logic
AC_MSG_CHECKING(if you want hashmap scrolling-optimization code)
@@ -1064,7 +1095,7 @@ AC_ARG_ENABLE(hashmap,
[with_hashmap=$enableval],
[with_hashmap=yes])
AC_MSG_RESULT($with_hashmap)
-test "$with_hashmap" = yes && AC_DEFINE(USE_HASHMAP)
+test "x$with_hashmap" = xyes && AC_DEFINE(USE_HASHMAP,1,[Define to 1 to compile with hashmap scrolling-optimization])
### use option --enable-colorfgbg to turn on use of $COLORFGBG environment
AC_MSG_CHECKING(if you want colorfgbg code)
@@ -1073,7 +1104,7 @@ AC_ARG_ENABLE(colorfgbg,
[with_colorfgbg=$enableval],
[with_colorfgbg=no])
AC_MSG_RESULT($with_colorfgbg)
-test "$with_colorfgbg" = yes && AC_DEFINE(USE_COLORFGBG)
+test "x$with_colorfgbg" = xyes && AC_DEFINE(USE_COLORFGBG,1,[Define to 1 to compile-in experimental $COLORFGBG code])
### use option --enable-interop to turn on use of bindings used for interop
AC_MSG_CHECKING(if you want interop bindings)
@@ -1084,7 +1115,7 @@ AC_ARG_ENABLE(interop,
AC_MSG_RESULT($with_exp_interop)
NCURSES_INTEROP_FUNCS=0
-test "$with_exp_interop" = yes && NCURSES_INTEROP_FUNCS=1
+test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1
AC_SUBST(NCURSES_INTEROP_FUNCS)
# This is still experimental (20080329), but should ultimately be moved to
@@ -1099,8 +1130,8 @@ if test "x$with_pthread" != xno; then
[use_pthreads_eintr=$enableval],
[use_pthreads_eintr=no])
AC_MSG_RESULT($use_pthreads_eintr)
- if test $use_pthreads_eintr = yes ; then
- AC_DEFINE(USE_PTHREADS_EINTR)
+ if test "x$use_pthreads_eintr" = xyes ; then
+ AC_DEFINE(USE_PTHREADS_EINTR,1,[Define to 1 to enable EINTR in wgetch with pthreads])
fi])
AC_MSG_CHECKING(if you want to use weak-symbols for pthreads)
@@ -1109,22 +1140,22 @@ if test "x$with_pthread" != xno; then
[use_weak_symbols=$enableval],
[use_weak_symbols=no])
AC_MSG_RESULT($use_weak_symbols)
- if test "$use_weak_symbols" = yes ; then
+ if test "x$use_weak_symbols" = xyes ; then
CF_WEAK_SYMBOLS
else
cf_cv_weak_symbols=no
fi
- if test $cf_cv_weak_symbols = yes ; then
- AC_DEFINE(USE_WEAK_SYMBOLS)
+ if test "x$cf_cv_weak_symbols" = xyes ; then
+ AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define to 1 to enable weak-symbols for pthreads])
fi
fi
PTHREAD=
-if test "$with_pthread" = "yes" ; then
- AC_DEFINE(USE_PTHREADS)
+if test "x$with_pthread" = "xyes" ; then
+ AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use pthreads feature])
enable_reentrant=yes
- if test $cf_cv_weak_symbols = yes ; then
+ if test "x$cf_cv_weak_symbols" = xyes ; then
PTHREAD=-lpthread
fi
fi
@@ -1140,19 +1171,29 @@ AC_ARG_ENABLE(reentrant,
[with_reentrant=$enableval],
[with_reentrant=no])
AC_MSG_RESULT($with_reentrant)
-if test "$with_reentrant" = yes ; then
+if test "x$with_reentrant" = xyes ; then
cf_cv_enable_reentrant=1
cf_cv_enable_opaque="NCURSES_INTERNALS"
NCURSES_OPAQUE=1
NCURSES_SIZE_T=int
- if test $cf_cv_weak_symbols = yes ; then
+ if test "x$cf_cv_weak_symbols" = xyes ; then
CF_REMOVE_LIB(LIBS,$LIBS,pthread)
CF_ADD_LIB(pthread,TEST_LIBS)
CF_ADD_LIB(pthread,TEST_LIBS2)
else
- LIB_SUFFIX="t${LIB_SUFFIX}"
+ # when not using weak symbols but with_reentrant,
+ # add 't' to the library suffix on all platforms
+ # except cygwin, where we only do that if ALSO
+ # compiling with full thread support.
+ case "$host" in
+ *cygwin* | *msys*)
+ if test "$with_pthread" = "yes" ; then
+ LIB_SUFFIX="t${LIB_SUFFIX}"
+ fi ;;
+ * ) LIB_SUFFIX="t${LIB_SUFFIX}" ;;
+ esac
fi
- AC_DEFINE(USE_REENTRANT)
+ AC_DEFINE(USE_REENTRANT,1,[Define to 1 to use experimental reentrant feature])
CF_NCURSES_ABI_6
else
cf_cv_enable_reentrant=0
@@ -1177,7 +1218,7 @@ else
NCURSES_WRAP_PREFIX=_nc_
fi
AC_SUBST(NCURSES_WRAP_PREFIX)
-AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX")
+AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX",[Define to override _nc_ prefix])
AC_MSG_CHECKING(if you want experimental safe-sprintf code)
AC_ARG_ENABLE(safe-sprintf,
@@ -1185,7 +1226,7 @@ AC_ARG_ENABLE(safe-sprintf,
[with_safe_sprintf=$enableval],
[with_safe_sprintf=no])
AC_MSG_RESULT($with_safe_sprintf)
-test "$with_safe_sprintf" = yes && AC_DEFINE(USE_SAFE_SPRINTF)
+test "x$with_safe_sprintf" = xyes && AC_DEFINE(USE_SAFE_SPRINTF,1,[Define to 1 to compile with experimental safe-sprintf code])
### use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic
# when hashmap is used scroll hints are useless
@@ -1196,7 +1237,7 @@ AC_ARG_ENABLE(scroll-hints,
[with_scroll_hints=$enableval],
[with_scroll_hints=yes])
AC_MSG_RESULT($with_scroll_hints)
-test "$with_scroll_hints" = yes && AC_DEFINE(USE_SCROLL_HINTS)
+test "x$with_scroll_hints" = xyes && AC_DEFINE(USE_SCROLL_HINTS,1,[Define to 1 to compile without scroll-hints code])
fi
AC_MSG_CHECKING(if you want experimental wgetch-events code)
@@ -1205,25 +1246,20 @@ AC_ARG_ENABLE(wgetch-events,
[with_wgetch_events=$enableval],
[with_wgetch_events=no])
AC_MSG_RESULT($with_wgetch_events)
-test "$with_wgetch_events" = yes && AC_DEFINE(NCURSES_WGETCH_EVENTS)
+test "x$with_wgetch_events" = xyes && AC_DEFINE(NCURSES_WGETCH_EVENTS,1,[Define to 1 to compile with experimental wgetch-events code])
###############################################################################
CF_HELP_MESSAGE(Testing/development Options:)
### use option --disable-echo to suppress full display compiling commands
-AC_MSG_CHECKING(if you want to display full commands during build)
-AC_ARG_ENABLE(echo,
- [ --enable-echo build: display "compiling" commands (default)],
- [with_echo=$enableval],
- [with_echo=yes])
-if test "$with_echo" = yes; then
+CF_DISABLE_ECHO
+if test "x$enable_echo" = xyes; then
ECHO_LINK=
else
ECHO_LINK='@ echo linking $@ ... ;'
test -n "$LIBTOOL" && LIBTOOL="$LIBTOOL --silent"
test -n "$LIBTOOL_CXX" && LIBTOOL_CXX="$LIBTOOL_CXX --silent"
fi
-AC_MSG_RESULT($with_echo)
AC_SUBST(ECHO_LINK)
### use option --enable-warnings to turn on all gcc warnings
@@ -1235,12 +1271,13 @@ AC_MSG_RESULT($with_warnings)
if test "x$with_warnings" = "xyes"; then
CF_ADD_ADAFLAGS(-gnatg)
- CF_GCC_WARNINGS(Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum)
- if test "$cf_with_cxx" = yes ; then
+ CF_GCC_WARNINGS(Wno-unknown-pragmas Wswitch-enum)
+ if test "x$cf_with_cxx" = xyes ; then
CF_GXX_WARNINGS(Wno-unused)
fi
fi
CF_GCC_ATTRIBUTES
+CF_ENABLE_STRING_HACKS
### use option --enable-assertions to turn on generation of assertion code
AC_MSG_CHECKING(if you want to enable runtime assertions)
@@ -1253,7 +1290,6 @@ if test -n "$GCC"
then
if test "$with_assertions" = no
then
- AC_DEFINE(NDEBUG)
CPPFLAGS="$CPPFLAGS -DNDEBUG"
else
CF_ADD_ADAFLAGS(-gnata)
@@ -1262,17 +1298,17 @@ fi
### use option --disable-leaks to suppress "permanent" leaks, for testing
CF_DISABLE_LEAKS
-AC_DEFINE(HAVE_NC_ALLOC_H)
+AC_DEFINE(HAVE_NC_ALLOC_H,1,[Define to 1 if we have nc_alloc.h header])
### use option --enable-expanded to generate certain macros as functions
AC_ARG_ENABLE(expanded,
[ --enable-expanded test: generate functions for certain macros],
- [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED)])
+ [test "x$enableval" = xyes && AC_DEFINE(NCURSES_EXPANDED,1,[Define to 1 to generate functions for certain macros])])
### use option --disable-macros to suppress macros in favor of functions
AC_ARG_ENABLE(macros,
[ --disable-macros test: use functions rather than macros],
- [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS)])
+ [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS,1,[Define to 1 to use functions rather than macros])])
# Normally we only add trace() to the debug-library. Allow this to be
# extended to all models of the ncurses library:
@@ -1290,7 +1326,7 @@ AC_ARG_WITH(trace,
[cf_with_trace=$cf_all_traces])
AC_MSG_RESULT($cf_with_trace)
-if test "$cf_with_trace" = yes ; then
+if test "x$cf_with_trace" = xyes ; then
LIB_TRACING=all
ADA_TRACE=TRUE
CF_ADD_CFLAGS(-DTRACE)
@@ -1307,15 +1343,15 @@ case $cf_cv_system_name in #(vi
;;
*)
AC_CHECK_FUNC(gettimeofday,
- AC_DEFINE(HAVE_GETTIMEOFDAY),[
+ AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[
AC_CHECK_LIB(bsd, gettimeofday,
- AC_DEFINE(HAVE_GETTIMEOFDAY)
+ AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function])
CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
;;
esac
-CF_MATH_LIB(MATH_LIB,sin(x))
+CF_MATH_LIB(MATH_LIB,pow(sin(x),x))
AC_SUBST(MATH_LIB)
### Checks for header files.
@@ -1344,9 +1380,11 @@ unistd.h \
wctype.h \
)
+CF_GETOPT_HEADER
+
# 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
+if test "x$ISC" = xyes ; then
AC_CHECK_LIB(cposix,main)
AC_CHECK_LIB(inet,bzero,CF_ADD_LIB(inet))dnl also 'select()'
fi
@@ -1393,10 +1431,12 @@ geteuid \
getttynam \
issetugid \
poll \
+putenv \
remove \
select \
setbuf \
setbuffer \
+setenv \
setvbuf \
sigaction \
sigvec \
@@ -1406,7 +1446,7 @@ tcgetpgrp \
times \
vsnprintf \
)
-if test "$with_getcap" = "yes" ; then
+if test "x$with_getcap" = "xyes" ; then
CF_CGETENT
fi
@@ -1421,12 +1461,12 @@ CF_MKSTEMP
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
+if test "x$cross_compiling" = xyes ; then
AC_MSG_WARN(cross compiling: assume setvbuf params not reversed)
else
AC_FUNC_SETVBUF_REVERSED
fi
-AC_TYPE_SIGNAL
+AC_CHECK_TYPE(intptr_t, long)
CF_TYPE_SIGACTION
CF_SIZECHANGE
CF_FUNC_MEMMOVE
@@ -1437,9 +1477,9 @@ AC_FUNC_VFORK
# special check for test/ditto.c
CF_FUNC_OPENPTY
if test "$cf_cv_func_openpty" != no ; then
- AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>)
- AC_DEFINE(USE_XTERM_PTY)
- if test "$cf_cv_lib_util" = yes ; then
+ AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>,[Define to actual header for openpty function])
+ AC_DEFINE(USE_XTERM_PTY,1,[Define to 1 if we should assume xterm pseudoterminal interface])
+ if test "x$cf_cv_lib_util" = xyes ; then
CF_ADD_LIB(util,TEST_LIBS)
fi
fi
@@ -1447,7 +1487,7 @@ AC_SUBST(TEST_LIBS)
AC_SUBST(TEST_LIBS2)
if test "$with_hashed_db" != no ; then
- AC_DEFINE(USE_HASHED_DB)
+ AC_DEFINE(USE_HASHED_DB,1,[Define to 1 if we should build terminfo in hashed database])
CF_HASHED_DB($with_hashed_db)
fi
@@ -1478,50 +1518,14 @@ if test -n "$CXX" ; then
;;
esac
- AC_CHECK_HEADERS(iostream typeinfo)
-
- if test x"$ac_cv_header_iostream" = xyes ; then
- AC_MSG_CHECKING(if iostream uses std-namespace)
- AC_TRY_COMPILE([
-#include <iostream>
-using std::endl;
-using std::cerr;],[
-cerr << "testing" << endl;
-],[cf_iostream_namespace=yes],[cf_iostream_namespace=no])
- AC_MSG_RESULT($cf_iostream_namespace)
- if test "$cf_iostream_namespace" = yes ; then
- AC_DEFINE(IOSTREAM_NAMESPACE)
- fi
- fi
-
+ AC_CHECK_HEADERS(typeinfo)
+ CF_CXX_IOSTREAM_NAMESPACE
CF_BOOL_DECL
CF_BOOL_SIZE
CF_ETIP_DEFINES
CF_CPP_PARAM_INIT
CF_CPP_STATIC_CAST
-
- CXX_AR='$(AR)'
- CXX_ARFLAGS='$(ARFLAGS)'
- case $cf_cv_system_name in #(vi
- irix*) #(vi
- if test "$GXX" != yes ; then
- CXX_AR='$(CXX)'
- CXX_ARFLAGS='-ar -o'
- fi
- ;;
- sco3.2v5*) #(vi
- CXXLDFLAGS="-u main"
- ;;
- solaris2*)
- if test "$GXX" != yes ; then
- CXX_AR='$(CXX)'
- CXX_ARFLAGS='-xar -o'
- fi
- ;;
- esac
- AC_SUBST(CXXLDFLAGS)
- AC_SUBST(CXX_AR)
- AC_SUBST(CXX_ARFLAGS)
+ CF_CXX_AR_FLAGS
else
cf_cxx_library=no
cf_cv_builtin_bool=1
@@ -1593,20 +1597,9 @@ dnl Check for availability of GNU Ada Translator (GNAT).
dnl At the moment we support no other Ada95 compiler.
if test "$cf_with_ada" != "no" ; then
CF_PROG_GNAT
- if test "$cf_cv_prog_gnat_correct" = yes; then
+ if test "x$cf_cv_prog_gnat_correct" = xyes; then
CF_ADD_ADAFLAGS(-gnatpn)
-
- # make ADAFLAGS consistent with CFLAGS
- case "$CFLAGS" in
- *-g*)
- CF_ADD_ADAFLAGS(-g)
- ;;
- esac
- case "$CFLAGS" in
- *-O*)
- CF_ADD_ADAFLAGS(-O3)
- ;;
- esac
+ CF_FIXUP_ADAFLAGS
CF_GNAT_GENERICS
CF_GNAT_SIGINT
@@ -1627,6 +1620,11 @@ else
cf_with_ada=no
fi
+# do this "late" to avoid conflict with header-checks
+if test "x$with_widec" = xyes ; then
+ AC_CHECK_SIZEOF(wchar_t)
+fi
+
### Construct the ncurses library-subsets, if any, from this set of keywords:
### none, base, ext_funcs, ext_tinfo, ticlib, termlib, widechar
###
@@ -1640,7 +1638,7 @@ fi
AC_MSG_CHECKING(for library subsets)
LIB_SUBSETS=
-if test "$cf_with_progs" = yes || test "$with_ticlib" != no || test "$with_termcap" != no; then
+if test "x$cf_with_progs" = xyes || test "$with_ticlib" != no || test "$with_termcap" != no; then
LIB_SUBSETS="${LIB_SUBSETS}ticlib"
if test "$with_ticlib" != no ; then
LIB_SUBSETS="${LIB_SUBSETS} "
@@ -1650,7 +1648,7 @@ if test "$cf_with_progs" = yes || test "$with_ticlib" != no || test "$with_termc
fi
LIB_SUBSETS="${LIB_SUBSETS}termlib"
-test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo"
+test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo"
if test "$with_termlib" != no ; then
LIB_SUBSETS="${LIB_SUBSETS} "
@@ -1674,8 +1672,8 @@ if test "$with_term_driver" != no ; then
esac
fi
-test "$with_widec" = yes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
-test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
+test "x$with_widec" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
+test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
AC_MSG_RESULT($LIB_SUBSETS)
@@ -1699,20 +1697,24 @@ CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
AC_MSG_RESULT($DFT_OBJ_SUBDIR)
-# libtool thinks it can make c++ shared libraries (perhaps only g++)
-if test "$cf_with_cxx" = yes ; then
+if test "x$cf_with_cxx" = xyes ; then
AC_MSG_CHECKING(c++ library-dependency suffix)
if test "$with_libtool" != "no"; then
+ # libtool thinks it can make c++ shared libraries (perhaps only g++)
+ CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX
+elif test "$with_shared_cxx" != "no"; then
+ # also for g++ users...
CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX
else
- CF_LIB_SUFFIX(normal,CXX_LIB_SUFFIX,CXX_DEP_SUFFIX)dnl we normally make a static library
+ # we normally make a static library because C/C++ library rules differ
+ CF_LIB_SUFFIX(normal,CXX_LIB_SUFFIX,CXX_DEP_SUFFIX)
fi
AC_MSG_RESULT($CXX_LIB_SUFFIX)
AC_SUBST(CXX_LIB_SUFFIX)
fi
# do not want -ldl in build except as needed for -lncurses dependency
-if test "$with_dlsym" = yes ; then
+if test "x$with_dlsym" = xyes ; then
if test $DFT_LWR_MODEL = shared || \
test $DFT_LWR_MODEL = libtool ; then
CF_REMOVE_LIB(LIBS,$LIBS,dl)
@@ -1723,13 +1725,13 @@ fi
# TICS_LIST and TINFO_LIST are needed to build libtic.so and libterm.so, but
# do not need libdl
TICS_LIST=
-if test "$with_dlsym" = yes ; then
+if test "x$with_dlsym" = xyes ; then
CF_REMOVE_LIB(TINFO_LIST,$SHLIB_LIST,dl)
fi
if test "$with_ticlib" != no ; then
- if test "$with_ticlib" != yes ; then
+ if test "x$with_ticlib" != xyes ; then
TICS_NAME=$with_ticlib
TICS_ARG_SUFFIX="${with_ticlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TICS_DEP_SUFFIX="${with_ticlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
@@ -1739,18 +1741,21 @@ if test "$with_ticlib" != no ; then
TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}"
TICS_LIB_SUFFIX="${TICS_NAME}${LIB_SUFFIX}"
fi
- TICS_ARGS="-L${LIB_DIR} -l${TICS_LIB_SUFFIX}"
+ TICS_LDFLAGS="-L${LIB_DIR}"
+ TICS_LIBS="-l${TICS_LIB_SUFFIX}"
else
- TICS_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TICS_LDFLAGS="-L${LIB_DIR}"
+ TICS_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX}"
fi
AC_SUBST(TICS_ARG_SUFFIX)
AC_SUBST(TICS_DEP_SUFFIX)
AC_SUBST(TICS_LIB_SUFFIX)
-AC_SUBST(TICS_ARGS)
+AC_SUBST(TICS_LDFLAGS)
+AC_SUBST(TICS_LIBS)
if test "$with_termlib" != no ; then
- if test "$with_termlib" != yes ; then
+ if test "x$with_termlib" != xyes ; then
TINFO_NAME=$with_termlib
TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
TINFO_ARG_SUFFIX="${with_termlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
@@ -1768,14 +1773,22 @@ if test "$with_termlib" != no ; then
if test "$DFT_LWR_MODEL" = "libtool"; then
TEST_ARGS="${TEST_DEPS}"
TEST_ARG2="${TEST_DEP2}"
- TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
+ TINFO_LDFLAGS="-L${LIB_DIR}"
+ TINFO_LIBS="$TEST_ARGS"
TICS_LIST="$SHLIB_LIST $TEST_ARGS"
SHLIB_LIST="${SHLIB_LIST} $TEST_ARGS"
else
TEST_ARGS="-l${TINFO_ARG_SUFFIX}"
TEST_ARG2="-l${TINFO_ARG_SUFFIX}"
- TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
- TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
+ if test "x$with_term_driver" != xno ; then
+ TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TICS_LIBS="$TICS_LIBS -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
+ else
+ TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
+ TINFO_LIBS="$TEST_ARGS"
+ fi
+ TINFO_LDFLAGS="-L${LIB_DIR}"
SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
fi
else
@@ -1783,19 +1796,20 @@ else
TINFO_NAME=${LIB_NAME}
TINFO_SUFFIX=${DFT_LIB_SUFFIX}
TINFO_ARG_SUFFIX=${LIB_NAME}${DFT_ARG_SUFFIX}
- if test "$with_tic_depends" = yes ; then
+ if test "x$with_tic_depends" = xyes ; then
TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}"
else
TICS_LIST="$SHLIB_LIST"
fi
- TINFO_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+ TINFO_LDFLAGS="-L${LIB_DIR}"
+ TINFO_LIBS="-l${LIB_NAME}${DFT_ARG_SUFFIX}"
fi
if test "$DFT_LWR_MODEL" = shared ; then
case $cf_cv_system_name in #(vi
- cygwin*)
- # "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
+ cygwin*|msys*)
+ # "lib" files have ".dll.a" suffix, "cyg"or "msys-" files have ".dll"
TINFO_SUFFIX=.dll
;;
esac
@@ -1804,9 +1818,10 @@ fi
AC_SUBST(TINFO_ARG_SUFFIX)
AC_SUBST(TINFO_DEP_SUFFIX)
AC_SUBST(TINFO_LIB_SUFFIX)
-AC_SUBST(TINFO_ARGS)
+AC_SUBST(TINFO_LDFLAGS)
+AC_SUBST(TINFO_LIBS)
-if test "$with_dlsym" = yes ; then
+if test "x$with_dlsym" = xyes ; then
CF_REMOVE_LIB(TICS_LIST,$TICS_LIST,dl)
fi
@@ -1815,8 +1830,8 @@ if test "$DFT_LWR_MODEL" = "libtool"; then
fi
# needed for Ada95
-TINFO_ARGS2=`echo "$TINFO_ARGS" | sed -e 's,-L\.\./,-L../../,'`
-AC_SUBST(TINFO_ARGS2)
+TINFO_LDFLAGS2=`echo "$TINFO_LDFLAGS" | sed -e 's,-L\.\./,-L../../,'`
+AC_SUBST(TINFO_LDFLAGS2)
case $DFT_LWR_MODEL in
normal|debug|profile)
@@ -1825,10 +1840,15 @@ normal|debug|profile)
esac
AC_MSG_CHECKING(where we will install curses.h)
-test "$with_overwrite" = no && \
-test "x$includedir" = 'x${prefix}/include' && \
- includedir='${prefix}/include/ncurses'${LIB_SUFFIX}
-AC_MSG_RESULT($includedir)
+AC_SUBST(includesubdir)
+includesubdir=
+if test "$with_overwrite" = no && \
+ ( test "x$includedir" = 'x${prefix}/include' || \
+ test "x$includedir" = "x${prefix}/include" )
+then
+ includesubdir="/ncurses${LIB_SUFFIX}"
+fi
+AC_MSG_RESULT(${includedir}${includesubdir})
### Resolve a conflict between normal and wide-curses by forcing applications
### that will need libutf8 to add it to their configure script.
@@ -1850,14 +1870,14 @@ NCURSES_TREE=
AC_SUBST(NCURSES_TREE)
### predefined stuff for the test programs
-AC_DEFINE(HAVE_SLK_COLOR)
+AC_DEFINE(HAVE_SLK_COLOR,1,[Define to 1 if we have slk_color for test-programs])
### Construct the list of subdirectories for which we'll customize makefiles
### with the appropriate compile-rules.
CF_SRC_MODULES($modules_to_build)
-if test "$cf_with_ada" != "no" && test "$cf_cv_prog_gnat_correct" != "no"; then
+if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then
SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${DFT_ARG_SUFFIX}-config:Ada95/gen/adacurses-config.in"
SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${DFT_ARG_SUFFIX}-config.1:man/MKada_config.in"
fi
@@ -1869,26 +1889,26 @@ NCURSES_SHLIB2='sh $(top_srcdir)/misc/shlib'
AC_SUBST(NCURSES_SHLIB2)
# values to use as strings
-AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR')
+AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as library path-separator])
-AC_DEFINE_UNQUOTED(NCURSES_VERSION_STRING, "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}")
+AC_DEFINE_UNQUOTED(NCURSES_VERSION_STRING, "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}",[Define to 1 if machine has ample memory for tic])
### Now that we're done running tests, add the compiler-warnings, if any
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)
+CF_SUBST_IF(["x$cf_cv_have_tcgetattr" = xyes], HAVE_TCGETATTR, 1, 0)
+CF_SUBST_IF(["x$ac_cv_header_termio_h" = xyes], HAVE_TERMIO_H, 1, 0)
+CF_SUBST_IF(["x$ac_cv_header_termios_h" = xyes], HAVE_TERMIOS_H, 1, 0)
################################################################################
-test "$use_database" = yes && \
+test "x$use_database" = xyes && \
SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in"
SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${DFT_ARG_SUFFIX}${cf_cv_abi_version}-config.1:man/MKncu_config.in"
-if test x"$enable_pc_files" = xyes ; then \
+if test "x$enable_pc_files" = xyes ; then \
SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
MAKE_PC_FILES=
else
@@ -1917,13 +1937,43 @@ AC_SUBST(MAKE_TESTS)
ADAHTML_DIR=../../doc/html/ada
AC_SUBST(ADAHTML_DIR)
-SUB_SCRIPTS=
+# these could be configurable, but are not currently
+PANEL_NAME=panel
+MENU_NAME=menu
+FORM_NAME=form
+CXX_NAME=ncurses++
+
+AC_SUBST(PANEL_NAME)
+AC_SUBST(MENU_NAME)
+AC_SUBST(FORM_NAME)
+AC_SUBST(CXX_NAME)
+
+# workaround for g++ versus Solaris (20131116)
case $cf_cv_system_name in #(vi
-*mingw32*) #(vi
- SUB_SCRIPTS="mk-dlls.sh"
+solaris2*) #(vi
+ case "x$CPPFLAGS" in #(vi
+ *-D_XOPEN_SOURCE_EXTENDED*)
+ CF_VERBOSE(moving _XOPEN_SOURCE_EXTENDED to work around g++ problem)
+ CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
+ CPPFLAGS=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/-D_XOPEN_SOURCE_EXTENDED//'`
+ ;;
+ esac
;;
esac
+# AC_CHECK_SIZEOF demands a literal parameter, no variables. So we do this.
+case "x$NCURSES_OSPEED" in #(vi
+*short*) #(vi
+ cf_compatible=1
+ ;;
+*)
+ cf_compatible=0
+ ;;
+esac
+AC_DEFINE_UNQUOTED(NCURSES_OSPEED_COMPAT,$cf_compatible,[Define to 1 if termcap variable ospeed is short])
+
+SUB_SCRIPTS=
+
AC_OUTPUT( \
include/MKterm.h.awk \
include/curses.head:include/curses.h.in \
@@ -1934,11 +1984,11 @@ AC_OUTPUT( \
$SUB_MAKEFILES \
Makefile,[
if test "x$cf_with_tests" != xno ; then
- CF_PRG_RULES([$srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LINK"], test)
+ CF_PRG_RULES([$srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LD"], test)
fi
CF_LIB_RULES($SRC_SUBDIRS)
-if test "x$cf_with_ada" != xno ; then
+if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then
if test -z "$USE_OLD_MAKERULES" ; then
$AWK -f $srcdir/Ada95/mk-1st.awk <$srcdir/Ada95/src/modules >>Ada95/src/Makefile
fi
@@ -1950,10 +2000,11 @@ fi
AWK="$AWK"
DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
DFT_LWR_MODEL="$DFT_LWR_MODEL"
-ECHO_LINK="$ECHO_LINK"
+ECHO_LD="$ECHO_LD"
LDCONFIG="$LDCONFIG"
LIBTOOL_VERSION="$LIBTOOL_VERSION"
LIB_NAME="$LIB_NAME"
+LIB_PREFIX="$LIB_PREFIX"
LIB_SUBSETS="$LIB_SUBSETS"
LIB_SUFFIX="$LIB_SUFFIX"
LIB_TRACING="$LIB_TRACING"
@@ -1975,7 +2026,7 @@ TINFO_NAME="$TINFO_NAME"
TINFO_SUFFIX="$TINFO_SUFFIX"
USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
WITH_CURSES_H="$with_curses_h"
-WITH_ECHO="$with_echo"
+WITH_ECHO="${enable_echo:=yes}"
WITH_OVERWRITE="$with_overwrite"
cf_LIST_MODELS="$cf_list_models"
cf_cv_abi_version="$cf_cv_abi_version"
@@ -1985,16 +2036,20 @@ cf_cv_enable_lp64="$cf_cv_enable_lp64"
cf_cv_enable_opaque="$cf_cv_enable_opaque"
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_prog_gnat_correct=$cf_cv_prog_gnat_correct
cf_cv_rel_version="$cf_cv_rel_version"
cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
cf_cv_shared_soname='$cf_cv_shared_soname'
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_cv_term_driver="$with_term_driver"
cf_with_ada="$cf_with_ada"
cf_with_cxx_binding="$cf_with_cxx_binding"
+cf_with_db_install="$cf_with_db_install"
cf_with_manpages="$cf_with_manpages"
cf_with_tests="$cf_with_tests"
+with_shared_cxx="$with_shared_cxx"
host="$host"
target="$target"
diff --git a/contrib/ncurses/dist.mk b/contrib/ncurses/dist.mk
index 371f0043b3fa..11db597de4c9 100644
--- a/contrib/ncurses/dist.mk
+++ b/contrib/ncurses/dist.mk
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: dist.mk,v 1.810 2011/04/04 22:42:20 tom Exp $
+# $Id: dist.mk,v 1.973 2014/02/22 16:55:12 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
@@ -37,20 +37,21 @@ SHELL = /bin/sh
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 5
NCURSES_MINOR = 9
-NCURSES_PATCH = 20110404
+NCURSES_PATCH = 20140222
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
-# The most recent html files were generated with lynx 2.8.6, using ncurses
-# configured with
+# The most recent html files were generated with lynx 2.8.6 (or later), 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`
+# gcc's file is "gnathtml.pl"
+GNATHTML= gnathtml
# man2html 3.0.1 is a Perl script which assumes that pages are fixed size.
# Not all man programs agree with this assumption; some use half-spacing, which
@@ -98,7 +99,13 @@ doc/hackguide.doc: doc/html/hackguide.html
MANPROG = tbl | nroff -mandoc -rLL=65n -rLT=71n -Tascii
manhtml:
- @rm -f doc/html/man/*.html
+ @for f in doc/html/man/*.html; do \
+ test -f $$f || continue; \
+ case $$f in \
+ */index.html) ;; \
+ *) rm -f $$f ;; \
+ esac; \
+ done
@mkdir -p doc/html/man
@rm -f subst.tmp ;
@for f in man/*.[0-9]*; do \
@@ -126,7 +133,7 @@ manhtml:
g=$${m}.html ;\
if [ -f doc/html/$$g ]; then chmod +w doc/html/$$g; fi;\
echo "Converting $$m to HTML" ;\
- echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">' > doc/html/man/$$g ;\
+ echo '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">' > doc/html/man/$$g ;\
echo '<!-- ' >> doc/html/man/$$g ;\
egrep '^.\\"[^#]' $$f | \
sed -e 's/\$$/@/g' \
@@ -135,9 +142,15 @@ manhtml:
-e 's/>/\&gt;/g' \
>> doc/html/man/$$g ;\
echo '-->' >> doc/html/man/$$g ;\
- ./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' \
+ ./edit_man.sh normal editing /usr/man man $$f | \
+ $(MANPROG) | \
+ tr '\255' '-' | \
+ $(MAN2HTML) \
+ -title "$$T" \
+ -aliases man/manhtml.aliases \
+ -externs man/manhtml.externs | \
+ sed -f subst.sed |\
+ sed -e 's/"curses.3x.html"/"ncurses.3x.html"/g' \
>> doc/html/man/$$g ;\
done
@rm -f subst.sed
@@ -149,7 +162,7 @@ manhtml:
# .ali files contain cross referencing information required by gnathtml.
adahtml:
if [ ! -z "$(GNATHTML)" ]; then \
- (cd ./Ada95/gen ; make html) ;\
+ (cd ./Ada95/gen ; make html GNATHTML=$(GNATHTML) ) ;\
fi
# This only works on a clean source tree, of course.
diff --git a/contrib/ncurses/doc/html/NCURSES-Programming-HOWTO.html b/contrib/ncurses/doc/html/NCURSES-Programming-HOWTO.html
index 3a1010635ff0..b1e40a2809a3 100644
--- a/contrib/ncurses/doc/html/NCURSES-Programming-HOWTO.html
+++ b/contrib/ncurses/doc/html/NCURSES-Programming-HOWTO.html
@@ -1,516 +1,1282 @@
-<!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
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
+<HTML
+><HEAD
+><TITLE
+> NCURSES Programming HOWTO </TITLE
+><META
+NAME="GENERATOR"
+CONTENT="Modular DocBook HTML Stylesheet Version 1.79"></HEAD
+><BODY
+CLASS="ARTICLE"
+BGCOLOR="#FFFFFF"
+TEXT="#000000"
+LINK="#0000FF"
+VLINK="#840084"
+ALINK="#0000FF"
+><DIV
+CLASS="ARTICLE"
+><DIV
+CLASS="TITLEPAGE"
+><H1
+CLASS="TITLE"
+><A
+NAME="AEN2"
+>NCURSES Programming HOWTO</A
+></H1
+><H3
+CLASS="AUTHOR"
+><A
+NAME="AEN4"
+> Pradeep Padala </A
+></H3
+><DIV
+CLASS="AFFILIATION"
+><DIV
+CLASS="ADDRESS"
+><P
+CLASS="ADDRESS"
+><CODE
+CLASS="EMAIL"
+>&#60;<A
+HREF="mailto:ppadala@gmail.com"
+>ppadala@gmail.com</A
+>&#62;</CODE
+></P
+></DIV
+></DIV
+><P
+CLASS="PUBDATE"
+>v1.9, 2005-06-20<BR></P
+><DIV
+CLASS="REVHISTORY"
+><TABLE
+WIDTH="100%"
+BORDER="0"
+><TR
+><TH
+ALIGN="LEFT"
+VALIGN="TOP"
+COLSPAN="3"
+><B
+>Revision History</B
+></TH
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.9</TD
+><TD
+ALIGN="LEFT"
+>2005-06-20</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>The license has been changed to the MIT-style license used
+ by NCURSES. Note that the programs are also re-licensed under this.</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.8</TD
+><TD
+ALIGN="LEFT"
+>2005-06-17</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Lots of updates. Added references and perl examples.
+ Changes to examples. Many grammatical and stylistic changes to the
+ content. Changes to NCURSES history.</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.7.1</TD
+><TD
+ALIGN="LEFT"
+>2002-06-25</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Added a README file for building and instructions
+ for building from source.</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.7</TD
+><TD
+ALIGN="LEFT"
+>2002-06-25</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Added "Other formats" section and made a lot of fancy
+ changes to the programs. Inlining of programs is gone.</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.6.1</TD
+><TD
+ALIGN="LEFT"
+>2002-02-24</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Removed the old Changelog section, cleaned the makefiles</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.6</TD
+><TD
+ALIGN="LEFT"
+>2002-02-16</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Corrected a lot of spelling mistakes, added ACS variables
+ section</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.5</TD
+><TD
+ALIGN="LEFT"
+>2002-01-05</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Changed structure to present proper TOC</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.3.1</TD
+><TD
+ALIGN="LEFT"
+>2001-07-26</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Corrected maintainers paragraph, Corrected stable release number</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.3</TD
+><TD
+ALIGN="LEFT"
+>2001-07-24</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Added copyright notices to main document (LDP license)
+ and programs (GPL), Corrected
+ printw_example.</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.2</TD
+><TD
+ALIGN="LEFT"
+>2001-06-05</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Incorporated ravi's changes. Mainly to introduction, menu,
+ form, justforfun sections</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+>Revision 1.1</TD
+><TD
+ALIGN="LEFT"
+>2001-05-22</TD
+><TD
+ALIGN="LEFT"
+>Revised by: ppadala</TD
+></TR
+><TR
+><TD
+ALIGN="LEFT"
+COLSPAN="3"
+>Added "a word about window" section, Added scanw_example.</TD
+></TR
+></TABLE
+></DIV
+><DIV
+><DIV
+CLASS="ABSTRACT"
+><P
+></P
+><A
+NAME="AEN67"
+></A
+><P
+> <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>This document is intended to be an "All in One" guide for programming with
+ncurses and its sister libraries. We graduate from a simple "Hello World"
+program to more complex form manipulation. No prior experience in ncurses is
+assumed. Send comments to <A
+HREF="mailto:ppadala@gmail.com"
+TARGET="_top"
+>this address</A
+>
+ </I
+></SPAN
+>
+ </P
+><P
+></P
+></DIV
+></DIV
+><HR></DIV
+><DIV
+CLASS="TOC"
+><DL
+><DT
+><B
+>Table of Contents</B
+></DT
+><DT
+>1. <A
+HREF="#INTRO"
+>Introduction</A
+></DT
+><DD
+><DL
+><DT
+>1.1. <A
+HREF="#WHATIS"
+>What is NCURSES?</A
+></DT
+><DT
+>1.2. <A
+HREF="#WHATCANWEDO"
+>What we can do with NCURSES</A
+></DT
+><DT
+>1.3. <A
+HREF="#WHERETOGETIT"
+>Where to get it</A
+></DT
+><DT
+>1.4. <A
+HREF="#PURPOSE"
+>Purpose/Scope of the document</A
+></DT
+><DT
+>1.5. <A
+HREF="#ABOUTPROGRAMS"
+>About the Programs</A
+></DT
+><DT
+>1.6. <A
+HREF="#OTHERFORMATS"
+>Other Formats of the document</A
+></DT
+><DD
+><DL
+><DT
+>1.6.1. <A
+HREF="#LISTFORMATS"
+>Readily available formats from tldp.org</A
+></DT
+><DT
+>1.6.2. <A
+HREF="#BUILDSOURCE"
+>Building from source</A
+></DT
+></DL
+></DD
+><DT
+>1.7. <A
+HREF="#CREDITS"
+>Credits</A
+></DT
+><DT
+>1.8. <A
+HREF="#WISHLIST"
+>Wish List</A
+></DT
+><DT
+>1.9. <A
+HREF="#COPYRIGHT"
+>Copyright</A
+></DT
+></DL
+></DD
+><DT
+>2. <A
+HREF="#HELLOWORLD"
+>Hello World !!!</A
+></DT
+><DD
+><DL
+><DT
+>2.1. <A
+HREF="#COMPILECURSES"
+>Compiling With the NCURSES Library</A
+></DT
+><DT
+>2.2. <A
+HREF="#DISSECTION"
+>Dissection</A
+></DT
+><DD
+><DL
+><DT
+>2.2.1. <A
+HREF="#ABOUT-INITSCR"
+>About initscr()</A
+></DT
+><DT
+>2.2.2. <A
+HREF="#MYST-REFRESH"
+>The mysterious refresh()</A
+></DT
+><DT
+>2.2.3. <A
+HREF="#ABOUT-ENDWIN"
+>About endwin()</A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+>3. <A
+HREF="#GORY"
+>The Gory Details</A
+></DT
+><DT
+>4. <A
+HREF="#INIT"
+>Initialization</A
+></DT
+><DD
+><DL
+><DT
+>4.1. <A
+HREF="#ABOUTINIT"
+>Initialization functions</A
+></DT
+><DT
+>4.2. <A
+HREF="#RAWCBREAK"
+>raw() and cbreak()</A
+></DT
+><DT
+>4.3. <A
+HREF="#ECHONOECHO"
+>echo() and noecho()</A
+></DT
+><DT
+>4.4. <A
+HREF="#KEYPAD"
+>keypad()</A
+></DT
+><DT
+>4.5. <A
+HREF="#HALFDELAY"
+>halfdelay()</A
+></DT
+><DT
+>4.6. <A
+HREF="#MISCINIT"
+>Miscellaneous Initialization functions</A
+></DT
+><DT
+>4.7. <A
+HREF="#INITEX"
+>An Example</A
+></DT
+></DL
+></DD
+><DT
+>5. <A
+HREF="#AWORDWINDOWS"
+>A Word about Windows</A
+></DT
+><DT
+>6. <A
+HREF="#PRINTW"
+>Output functions</A
+></DT
+><DD
+><DL
+><DT
+>6.1. <A
+HREF="#ADDCHCLASS"
+>addch() class of functions</A
+></DT
+><DT
+>6.2. <A
+HREF="#AEN298"
+>mvaddch(), waddch() and mvwaddch()</A
+></DT
+><DT
+>6.3. <A
+HREF="#PRINTWCLASS"
+>printw() class of functions</A
+></DT
+><DD
+><DL
+><DT
+>6.3.1. <A
+HREF="#PRINTWMVPRINTW"
+>printw() and mvprintw</A
+></DT
+><DT
+>6.3.2. <A
+HREF="#WPRINTWMVWPRINTW"
+>wprintw() and mvwprintw</A
+></DT
+><DT
+>6.3.3. <A
+HREF="#VWPRINTW"
+>vwprintw()</A
+></DT
+><DT
+>6.3.4. <A
+HREF="#SIMPLEPRINTWEX"
+>A Simple printw example</A
+></DT
+></DL
+></DD
+><DT
+>6.4. <A
+HREF="#ADDSTRCLASS"
+>addstr() class of functions</A
+></DT
+><DT
+>6.5. <A
+HREF="#ACAUTION"
+>A word of caution</A
+></DT
+></DL
+></DD
+><DT
+>7. <A
+HREF="#SCANW"
+>Input functions</A
+></DT
+><DD
+><DL
+><DT
+>7.1. <A
+HREF="#GETCHCLASS"
+>getch() class of functions</A
+></DT
+><DT
+>7.2. <A
+HREF="#SCANWCLASS"
+>scanw() class of functions</A
+></DT
+><DD
+><DL
+><DT
+>7.2.1. <A
+HREF="#SCANWMVSCANW"
+>scanw() and mvscanw</A
+></DT
+><DT
+>7.2.2. <A
+HREF="#WSCANWMVWSCANW"
+>wscanw() and mvwscanw()</A
+></DT
+><DT
+>7.2.3. <A
+HREF="#VWSCANW"
+>vwscanw()</A
+></DT
+></DL
+></DD
+><DT
+>7.3. <A
+HREF="#GETSTRCLASS"
+>getstr() class of functions</A
+></DT
+><DT
+>7.4. <A
+HREF="#GETSTREX"
+>Some examples</A
+></DT
+></DL
+></DD
+><DT
+>8. <A
+HREF="#ATTRIB"
+>Attributes</A
+></DT
+><DD
+><DL
+><DT
+>8.1. <A
+HREF="#ATTRIBDETAILS"
+>The details</A
+></DT
+><DT
+>8.2. <A
+HREF="#ATTRONVSATTRSET"
+>attron() vs attrset()</A
+></DT
+><DT
+>8.3. <A
+HREF="#ATTR_GET"
+>attr_get()</A
+></DT
+><DT
+>8.4. <A
+HREF="#ATTR_FUNCS"
+>attr_ functions</A
+></DT
+><DT
+>8.5. <A
+HREF="#WATTRFUNCS"
+>wattr functions</A
+></DT
+><DT
+>8.6. <A
+HREF="#CHGAT"
+>chgat() functions</A
+></DT
+></DL
+></DD
+><DT
+>9. <A
+HREF="#WINDOWS"
+>Windows</A
+></DT
+><DD
+><DL
+><DT
+>9.1. <A
+HREF="#WINDOWBASICS"
+>The basics</A
+></DT
+><DT
+>9.2. <A
+HREF="#LETBEWINDOW"
+>Let there be a Window !!!</A
+></DT
+><DT
+>9.3. <A
+HREF="#BORDEREXEXPL"
+>Explanation</A
+></DT
+><DT
+>9.4. <A
+HREF="#OTHERSTUFF"
+>The other stuff in the example</A
+></DT
+><DT
+>9.5. <A
+HREF="#OTHERBORDERFUNCS"
+>Other Border functions</A
+></DT
+></DL
+></DD
+><DT
+>10. <A
+HREF="#COLOR"
+>Colors</A
+></DT
+><DD
+><DL
+><DT
+>10.1. <A
+HREF="#COLORBASICS"
+>The basics</A
+></DT
+><DT
+>10.2. <A
+HREF="#CHANGECOLORDEFS"
+>Changing Color Definitions</A
+></DT
+><DT
+>10.3. <A
+HREF="#COLORCONTENT"
+>Color Content</A
+></DT
+></DL
+></DD
+><DT
+>11. <A
+HREF="#KEYS"
+>Interfacing with the key board</A
+></DT
+><DD
+><DL
+><DT
+>11.1. <A
+HREF="#KEYSBASICS"
+>The Basics</A
+></DT
+><DT
+>11.2. <A
+HREF="#SIMPLEKEYEX"
+>A Simple Key Usage example</A
+></DT
+></DL
+></DD
+><DT
+>12. <A
+HREF="#MOUSE"
+>Interfacing with the mouse</A
+></DT
+><DD
+><DL
+><DT
+>12.1. <A
+HREF="#MOUSEBASICS"
+>The Basics</A
+></DT
+><DT
+>12.2. <A
+HREF="#GETTINGEVENTS"
+>Getting the events</A
+></DT
+><DT
+>12.3. <A
+HREF="#MOUSETOGETHER"
+>Putting it all Together</A
+></DT
+><DT
+>12.4. <A
+HREF="#MISCMOUSEFUNCS"
+>Miscellaneous Functions</A
+></DT
+></DL
+></DD
+><DT
+>13. <A
+HREF="#SCREEN"
+>Screen Manipulation</A
+></DT
+><DD
+><DL
+><DT
+>13.1. <A
+HREF="#GETYX"
+>getyx() functions</A
+></DT
+><DT
+>13.2. <A
+HREF="#SCREENDUMP"
+>Screen Dumping</A
+></DT
+><DT
+>13.3. <A
+HREF="#WINDOWDUMP"
+>Window Dumping</A
+></DT
+></DL
+></DD
+><DT
+>14. <A
+HREF="#MISC"
+>Miscellaneous features</A
+></DT
+><DD
+><DL
+><DT
+>14.1. <A
+HREF="#CURSSET"
+>curs_set()</A
+></DT
+><DT
+>14.2. <A
+HREF="#TEMPLEAVE"
+>Temporarily Leaving Curses mode</A
+></DT
+><DT
+>14.3. <A
+HREF="#ACSVARS"
+>ACS_ variables</A
+></DT
+></DL
+></DD
+><DT
+>15. <A
+HREF="#OTHERLIB"
+>Other libraries</A
+></DT
+><DT
+>16. <A
+HREF="#PANELS"
+>Panel Library</A
+></DT
+><DD
+><DL
+><DT
+>16.1. <A
+HREF="#PANELBASICS"
+>The Basics</A
+></DT
+><DT
+>16.2. <A
+HREF="#COMPILEPANELS"
+>Compiling With the Panels Library</A
+></DT
+><DT
+>16.3. <A
+HREF="#PANELBROWSING"
+>Panel Window Browsing</A
+></DT
+><DT
+>16.4. <A
+HREF="#USERPTRUSING"
+>Using User Pointers</A
+></DT
+><DT
+>16.5. <A
+HREF="#PANELMOVERESIZE"
+>Moving and Resizing Panels</A
+></DT
+><DT
+>16.6. <A
+HREF="#PANELSHOWHIDE"
+>Hiding and Showing Panels</A
+></DT
+><DT
+>16.7. <A
+HREF="#PANELABOVE"
+>panel_above() and panel_below() Functions</A
+></DT
+></DL
+></DD
+><DT
+>17. <A
+HREF="#MENUS"
+>Menus Library</A
+></DT
+><DD
+><DL
+><DT
+>17.1. <A
+HREF="#MENUBASICS"
+>The Basics</A
+></DT
+><DT
+>17.2. <A
+HREF="#COMPILEMENUS"
+>Compiling With the Menu Library</A
+></DT
+><DT
+>17.3. <A
+HREF="#MENUDRIVER"
+>Menu Driver: The work horse of the menu system</A
+></DT
+><DT
+>17.4. <A
+HREF="#MENUWINDOWS"
+>Menu Windows</A
+></DT
+><DT
+>17.5. <A
+HREF="#SCROLLMENUS"
+>Scrolling Menus</A
+></DT
+><DT
+>17.6. <A
+HREF="#MULTICOLUMN"
+>Multi Columnar Menus</A
+></DT
+><DT
+>17.7. <A
+HREF="#MULTIVALUEMENUS"
+>Multi Valued Menus</A
+></DT
+><DT
+>17.8. <A
+HREF="#MENUOPT"
+>Menu Options</A
+></DT
+><DT
+>17.9. <A
+HREF="#MENUUSERPTR"
+>The useful User Pointer</A
+></DT
+></DL
+></DD
+><DT
+>18. <A
+HREF="#FORMS"
+>Forms Library</A
+></DT
+><DD
+><DL
+><DT
+>18.1. <A
+HREF="#FORMBASICS"
+>The Basics</A
+></DT
+><DT
+>18.2. <A
+HREF="#COMPILEFORMS"
+>Compiling With the Forms Library</A
+></DT
+><DT
+>18.3. <A
+HREF="#PLAYFIELDS"
+>Playing with Fields</A
+></DT
+><DD
+><DL
+><DT
+>18.3.1. <A
+HREF="#FETCHINFO"
+>Fetching Size and Location of Field</A
+></DT
+><DT
+>18.3.2. <A
+HREF="#MOVEFIELD"
+>Moving the field</A
+></DT
+><DT
+>18.3.3. <A
+HREF="#JUSTIFYFIELD"
+>Field Justification</A
+></DT
+><DT
+>18.3.4. <A
+HREF="#FIELDDISPATTRIB"
+>Field Display Attributes</A
+></DT
+><DT
+>18.3.5. <A
+HREF="#FIELDOPTIONBITS"
+>Field Option Bits</A
+></DT
+><DT
+>18.3.6. <A
+HREF="#FIELDSTATUS"
+>Field Status</A
+></DT
+><DT
+>18.3.7. <A
+HREF="#FIELDUSERPTR"
+>Field User Pointer</A
+></DT
+><DT
+>18.3.8. <A
+HREF="#VARIABLESIZEFIELDS"
+>Variable-Sized Fields</A
+></DT
+></DL
+></DD
+><DT
+>18.4. <A
+HREF="#FORMWINDOWS"
+>Form Windows</A
+></DT
+><DT
+>18.5. <A
+HREF="#FILEDVALIDATE"
+>Field Validation</A
+></DT
+><DT
+>18.6. <A
+HREF="#FORMDRIVER"
+>Form Driver: The work horse of the forms system</A
+></DT
+><DD
+><DL
+><DT
+>18.6.1. <A
+HREF="#PAGENAVREQ"
+>Page Navigation Requests</A
+></DT
+><DT
+>18.6.2. <A
+HREF="#INTERFIELDNAVREQ"
+>Inter-Field Navigation Requests</A
+></DT
+><DT
+>18.6.3. <A
+HREF="#INTRAFIELDNAVREQ"
+>Intra-Field Navigation Requests</A
+></DT
+><DT
+>18.6.4. <A
+HREF="#SCROLLREQ"
+>Scrolling Requests</A
+></DT
+><DT
+>18.6.5. <A
+HREF="#EDITREQ"
+>Editing Requests</A
+></DT
+><DT
+>18.6.6. <A
+HREF="#ORDERREQ"
+>Order Requests</A
+></DT
+><DT
+>18.6.7. <A
+HREF="#APPLICCOMMANDS"
+>Application Commands</A
+></DT
+></DL
+></DD
+></DL
+></DD
+><DT
+>19. <A
+HREF="#TOOLS"
+>Tools and Widget Libraries</A
+></DT
+><DD
+><DL
+><DT
+>19.1. <A
+HREF="#CDK"
+>CDK (Curses Development Kit)</A
+></DT
+><DD
+><DL
+><DT
+>19.1.1. <A
+HREF="#WIDGETLIST"
+>Widget List</A
+></DT
+><DT
+>19.1.2. <A
+HREF="#CDKATTRACT"
+>Some Attractive Features</A
+></DT
+><DT
+>19.1.3. <A
+HREF="#CDKCONCLUSION"
+>Conclusion</A
+></DT
+></DL
+></DD
+><DT
+>19.2. <A
+HREF="#DIALOG"
+>The dialog</A
+></DT
+><DT
+>19.3. <A
+HREF="#PERLCURSES"
+>Perl Curses Modules CURSES::FORM and CURSES::WIDGETS</A
+></DT
+></DL
+></DD
+><DT
+>20. <A
+HREF="#JUSTFORFUN"
+>Just For Fun !!!</A
+></DT
+><DD
+><DL
+><DT
+>20.1. <A
+HREF="#GAMEOFLIFE"
+>The Game of Life</A
+></DT
+><DT
+>20.2. <A
+HREF="#MAGIC"
+>Magic Square</A
+></DT
+><DT
+>20.3. <A
+HREF="#HANOI"
+>Towers of Hanoi</A
+></DT
+><DT
+>20.4. <A
+HREF="#QUEENS"
+>Queens Puzzle</A
+></DT
+><DT
+>20.5. <A
+HREF="#SHUFFLE"
+>Shuffle</A
+></DT
+><DT
+>20.6. <A
+HREF="#TT"
+>Typing Tutor</A
+></DT
+></DL
+></DD
+><DT
+>21. <A
+HREF="#REF"
+>References</A
+></DT
+></DL
+></DIV
+><DIV
+CLASS="SECT1"
+><H2
+CLASS="SECT1"
+><A
+NAME="INTRO"
+>1. Introduction</A
+></H2
+><P
+>In the olden days of teletype terminals, terminals were away from computers and
+were connected to them through serial cables. The terminals could be configured
+by sending a series of bytes. All the capabilities (such as
+moving the cursor to a new location, erasing part of the screen, scrolling the
+screen, changing modes etc.) of terminals could be accessed through these
+series of bytes. These control seeuqnces are usually called escape sequences,
+because they start
+with an escape(0x1B) character. Even today, with proper emulation, we can send
+escape sequences to the emulator and achieve the same effect on a terminal
+window.</P
+><P
+>Suppose you wanted to print a line in color. Try typing this on your console.</P
+><PRE
+CLASS="PROGRAMLISTING"
+>echo "^[[0;31;40mIn Color"</PRE
+><P
+>The first character is an escape character, which looks like two characters ^
+and [. To be able to print it, you have to press CTRL+V and then the ESC key.
+All the others are normal printable characters. You should be able to see the
+string "In Color" in red. It stays that way and to revert back to the original
+mode type this.</P
+><PRE
+CLASS="PROGRAMLISTING"
+>echo "^[[0;37;40m"</PRE
+><P
+>Now, what do these magic characters mean? Difficult to comprehend? They might
+even be different for different terminals. So the designers of UNIX invented a
+mechanism named <TT
+CLASS="LITERAL"
+>termcap</TT
+>. It is a file that
+lists all the capabilities of a particular terminal, along with the escape
+sequences needed to achieve a particular effect. In the later years, this was
+replaced by <TT
+CLASS="LITERAL"
+>terminfo</TT
+>. Without delving too
+much into details, this mechanism allows application
+programs to query the terminfo database and obtain the control characters to be
+sent to a terminal or terminal emulator.</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="WHATIS"
+>1.1. What is NCURSES?</A
+></H3
+><P
+>
+You might be wondering, what the import of all this technical gibberish is. In
+the above scenario, every application program is supposed to query the terminfo
+and perform the necessary stuff (sending control characters etc.). It soon became
+difficult to manage this complexity and this gave birth to 'CURSES'. Curses is
+a pun on the name "cursor optimization". The Curses library forms a wrapper
+over working with raw terminal codes, and provides highly flexible and
+efficient API (Application Programming Interface). It provides functions to
+move the cursor, create windows, produce colors, play with mouse etc. The
+application programs need not worry about the underlying terminal capabilities.</P
+><P
+>So what is NCURSES? NCURSES is a clone of the original System V Release 4.0
+(SVr4) curses. It is a freely distributable library, fully compatible with
+older version of curses. In short, it is a library of functions that manages
+an application's display on character-cell terminals. In the remainder of the
+document, the terms curses and ncurses are used interchangeably. </P
+><P
+>A detailed history of NCURSES can be found in the NEWS file from the source
+distribution. The current package is maintained by
+<A
+HREF="mailto:dickey@his.com"
+TARGET="_top"
+>Thomas Dickey</A
+>.
+You can contact the maintainers at <A
+HREF="mailto:bug-ncurses@gnu.org"
+TARGET="_top"
+>bug-ncurses@gnu.org</A
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="WHATCANWEDO"
+>1.2. What we can do with NCURSES</A
+></H3
+><P
+>NCURSES not only creates a wrapper over terminal capabilities, but also gives a
+robust framework to create nice looking UI (User Interface)s in text mode. It
+provides functions to create windows etc. Its sister libraries panel, menu and
+form provide an extension to the basic curses library. These libraries usually
+come along with curses. One can create applications that contain multiple
+windows, menus, panels and forms. Windows can be managed independently, can
+provide 'scrollability' and even can be hidden.</P
+><P
+>
+Menus provide the user with an easy command selection option. Forms allow the
+creation of easy-to-use data entry and display windows. Panels extend the
+capabilities of ncurses to deal with overlapping and stacked windows.</P
+><P
+>These are just some of the basic things we can do with ncurses. As we move
+along, We will see all the capabilities of these libraries. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="WHERETOGETIT"
+>1.3. Where to get it</A
+></H3
+><P
+>All right, now that you know what you can do with ncurses, you must be rearing
+to get started. NCURSES is usually shipped with your installation. In case
+you don't have the library or want to compile it on your own, read on.</P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>Compiling the package</I
+></SPAN
+> </P
+><P
+>NCURSES can be obtained from <A
+HREF="ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz"
+TARGET="_top"
+>ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz</A
+> or any of the ftp
+sites mentioned in <A
+HREF="http://www.gnu.org/order/ftp.html"
+TARGET="_top"
+>http://www.gnu.org/order/ftp.html</A
+>. </P
+><P
+>Read the README and INSTALL files for details on to how to install it. It
+usually involves the following operations.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> tar zxvf ncurses&lt;version&gt;.tar.gz # unzip and untar the archive
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
+ make install # install it</PRE
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>Using the RPM </I
+></SPAN
+></P
+><P
+>NCURSES RPM can be found and downloaded from <A
+HREF="http://rpmfind.net"
+TARGET="_top"
+>http://rpmfind.net </A
+>. The RPM can be installed with the following
+command after becoming root.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> rpm -i &lt;downloaded rpm&gt;</PRE
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="PURPOSE"
+>1.4. Purpose/Scope of the document</A
+></H3
+><P
+>This document is intended to be a "All in One" guide for programming with
+ncurses and its sister libraries. We graduate from a simple "Hello World"
+program to more complex form manipulation. No prior experience in ncurses is
+assumed. The writing is informal, but a lot of detail is provided for
+each of the examples.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ABOUTPROGRAMS"
+>1.5. About the Programs</A
+></H3
+><P
+>All the programs in the document are available in zipped form
+<A
+HREF="http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs.tar.gz"
+TARGET="_top"
+>here</A
+>. Unzip and untar it. The directory structure looks like this.</P
+><PRE
+CLASS="PROGRAMLISTING"
+>ncurses
|
|----&gt; JustForFun -- just for fun programs
|----&gt; basics -- basic programs
@@ -524,16 +1290,12 @@ looks like this.</p>
| 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
+ |----&gt; COPYING -- copyright notice</PRE
+><P
+>The individual directories contain the following files.</P
+><PRE
+CLASS="PROGRAMLISTING"
+>Description of files in each directory
--------------------------------------
JustForFun
|
@@ -592,73 +1354,96 @@ JustForFun
|----&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
+ |----&gt; 01-10.pl -- Perl equivalents of first ten example programs</PRE
+><P
+>There is a top level Makefile included in the main directory. It builds all the
+files and puts the ready-to-use exes in demo/exe directory. You can also
+do selective make by going into the corresponding directory. Each directory
+contains a README file explaining the purpose of each c file in the directory.</P
+><P
+>For every example, I have included path name for the file relative to the
+examples directory. </P
+><P
+> If you prefer browsing individual programs, point your browser to
+<A
+HREF="http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/"
+TARGET="_top"
+>http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/</A
+></P
+><P
+>All the programs are released under the same license that is used by ncurses
+(MIT-style). This gives you the ability to do pretty much anything other than
+claiming them as yours. Feel free to use them in your programs as appropriate.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="OTHERFORMATS"
+>1.6. Other Formats of the document</A
+></H3
+><P
+>This howto is also availabe in various other formats on the tldp.org site.
+Here are the links to other formats of this document.</P
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="LISTFORMATS"
+>1.6.1. Readily available formats from tldp.org</A
+></H4
+><P
+></P
+><UL
+><LI
+><P
+><A
+HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/pdf/NCURSES-Programming-HOWTO.pdf"
+TARGET="_top"
+>Acrobat PDF Format</A
+></P
+></LI
+><LI
+><P
+><A
+HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/ps/NCURSES-Programming-HOWTO.ps.gz"
+TARGET="_top"
+>PostScript Format</A
+></P
+></LI
+><LI
+><P
+><A
+HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html/NCURSES-Programming-HOWTO-html.tar.gz"
+TARGET="_top"
+>In Multiple HTML pages</A
+></P
+></LI
+><LI
+><P
+><A
+HREF="http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/NCURSES-Programming-HOWTO.html"
+TARGET="_top"
+>In One big HTML format</A
+></P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="BUILDSOURCE"
+>1.6.2. Building from source</A
+></H4
+><P
+>If above links are broken or if you want to experiment with sgml read on.
+<PRE
+CLASS="PROGRAMLISTING"
+>&#13; Get both the source and the tar,gzipped programs, available at
http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
NCURSES-HOWTO/NCURSES-Programming-HOWTO.sgml
http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
@@ -679,588 +1464,862 @@ read on.</p>
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;
+ NCURSES-ONE-BIG-FILE.html</PRE
+></P
+><P
+>See <A
+HREF="http://www.tldp.org/LDP/LDP-Author-Guide/"
+TARGET="_top"
+>LDP Author guide</A
+> for more details. If all else failes, mail me at
+<A
+HREF="ppadala@gmail.com"
+TARGET="_top"
+>ppadala@gmail.com</A
+></P
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="CREDITS"
+>1.7. Credits</A
+></H3
+><P
+>I thank <A
+HREF="mailto:sharath_1@usa.net"
+TARGET="_top"
+>Sharath</A
+> and Emre Akbas for
+helping me with few sections. The introduction was initially written by sharath.
+I rewrote it with few excerpts taken from his initial work. Emre helped in
+writing printw and scanw sections.</P
+><P
+>Perl equivalents of the example programs are contributed by <A
+HREF="mailto:Aratnaweera@virtusa.com"
+TARGET="_top"
+>Anuradha Ratnaweera</A
+>. </P
+><P
+>Then comes <A
+HREF="mailto:parimi@ece.arizona.edu"
+TARGET="_top"
+>Ravi Parimi</A
+>, my
+dearest friend, who has been on this project before even one line was written.
+He constantly bombarded me with suggestions and patiently reviewed the whole
+text. He also checked each program on Linux and Solaris. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="WISHLIST"
+>1.8. Wish List</A
+></H3
+><P
+>This is the wish list, in the order of priority. If you have a wish or you want
+to work on completing the wish, mail <A
+HREF="mailto:ppadala@gmail.com"
+TARGET="_top"
+>me</A
+>. </P
+><P
+></P
+><UL
+><LI
+><P
+>Add examples to last parts of forms section.</P
+></LI
+><LI
+><P
+>Prepare a Demo showing all the programs and allow the user to browse through
+description of each program. Let the user compile and see the program in action.
+A dialog based interface is preferred.</P
+></LI
+><LI
+><P
+>Add debug info. _tracef, _tracemouse stuff.</P
+></LI
+><LI
+><P
+>Accessing termcap, terminfo using functions provided by ncurses
+package.</P
+></LI
+><LI
+><P
+>Working on two terminals simultaneously.</P
+></LI
+><LI
+><P
+>Add more stuff to miscellaneous section.</P
+></LI
+></UL
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="COPYRIGHT"
+>1.9. Copyright</A
+></H3
+><P
+>Copyright &copy; 2001 by Pradeep Padala. </P
+><P
+>Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, distribute with
+modifications, sublicense, and/or sell copies of the Software, and to permit
+persons to whom the Software is furnished to do so, subject to the following
+conditions:</P
+><P
+>The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.</P
+><P
+>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</P
+><P
+>Except as contained in this notice, the name(s) of the above copyright holders
+shall not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization. </P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="HELLOWORLD"
+>2. Hello World !!!</A
+></H2
+><P
+>Welcome to the world of curses. Before we plunge into the library and look into
+its various features, let's write a simple program and say
+hello to the world. </P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="COMPILECURSES"
+>2.1. Compiling With the NCURSES Library</A
+></H3
+><P
+>To use ncurses library functions, you have to include ncurses.h in your
+programs. To link the
+program with ncurses the flag -lncurses should be added.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> #include &lt;ncurses.h&gt;
.
.
.
- 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;
+ compile and link: gcc &lt;program file&gt; -lncurses</PRE
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BHW"
+></A
+><P
+><B
+>Example 1. The Hello World !!! Program </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62;
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;
+{
+ initscr(); /* Start curses mode */
+ printw("Hello World !!!"); /* Print Hello World */
+ refresh(); /* Print it on to the real screen */
+ getch(); /* Wait for user input */
+ endwin(); /* End curses mode */
+
+ return 0;
+}</SPAN
+></PRE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="DISSECTION"
+>2.2. Dissection</A
+></H3
+><P
+>
+The above program prints "Hello World !!!" to the screen and exits. This
+program shows how to initialize curses and do screen manipulation and
+end curses mode. Let's dissect it line by line. </P
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="ABOUT-INITSCR"
+>2.2.1. About initscr()</A
+></H4
+><P
+>The function initscr() initializes the terminal in curses mode. In some
+implementations, it clears the screen and presents a blank screen. To do any
+screen manipulation using curses package this has to be called first. This
+function initializes the curses system and allocates memory for our present
+window (called <TT
+CLASS="LITERAL"
+>stdscr</TT
+>) and some other data-structures. Under extreme
+cases this function might fail due to insufficient memory to allocate memory
+for curses library's data structures. </P
+><P
+>
+After this is done, we can do a variety of initializations to customize
+our curses settings. These details will be explained <A
+HREF="#INIT"
+>later </A
+>.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="MYST-REFRESH"
+>2.2.2. The mysterious refresh()</A
+></H4
+><P
+>The next line printw prints the string "Hello World !!!" on to the screen. This
+function is analogous to normal printf in all respects except that it prints
+the data on a window called stdscr at the current (y,x) co-ordinates. Since our
+present co-ordinates are at 0,0 the string is printed at the left hand corner
+of the window.</P
+><P
+>This brings us to that mysterious refresh(). Well, when we called printw
+the data is actually written to an imaginary window, which is not updated
+on the screen yet. The job of printw is to update a few flags
+and data structures and write the data to a buffer corresponding to stdscr.
+In order to show it on the screen, we need to call refresh() and tell the
+curses system to dump the contents on the screen.</P
+><P
+>The philosophy behind all this is to allow the programmer to do multiple updates
+on the imaginary screen or windows and do a refresh once all his screen update
+is done. refresh() checks the window and updates only the portion which has been
+changed. This improves performance and offers greater flexibility too. But, it is
+sometimes frustrating to beginners. A common mistake committed by beginners is
+to forget to call refresh() after they did some update through printw() class of
+functions. I still forget to add it sometimes :-) </P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="ABOUT-ENDWIN"
+>2.2.3. About endwin()</A
+></H4
+><P
+>And finally don't forget to end the curses mode. Otherwise your terminal might
+behave strangely after the program quits. endwin() frees the memory taken by
+curses sub-system and its data structures and puts the terminal in normal
+mode. This function must be called after you are done with the curses mode. </P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="GORY"
+>3. The Gory Details</A
+></H2
+><P
+>Now that we have seen how to write a simple curses program let's get into the
+details. There are many functions that help customize what you see on screen and
+many features which can be put to full use. </P
+><P
+>Here we go...</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="INIT"
+>4. Initialization</A
+></H2
+><P
+>We now know that to initialize curses system the function initscr() has to be
+called. There are functions which can be called after this initialization to
+customize our curses session. We may ask the curses system to set the terminal
+in raw mode or initialize color or initialize the mouse etc.. Let's discuss some
+of the functions that are normally called immediately after initscr();</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ABOUTINIT"
+>4.1. Initialization functions</A
+></H3
+><P
+> </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="RAWCBREAK"
+>4.2. raw() and cbreak()</A
+></H3
+><P
+>Normally the terminal driver buffers the characters a user types until a new
+line or carriage return is encountered. But most programs require that the
+characters be available as soon as the user types them. The above two functions
+are used to disable line buffering. The difference between these two functions
+is in the way control characters like suspend (CTRL-Z), interrupt and quit
+(CTRL-C) are passed to the program. In the raw() mode these characters are
+directly passed to the program without generating a signal. In the
+<TT
+CLASS="LITERAL"
+>cbreak()</TT
+> mode these control characters are
+interpreted as any other character by the terminal driver. I personally prefer
+to use raw() as I can exercise greater control over what the user does.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ECHONOECHO"
+>4.3. echo() and noecho()</A
+></H3
+><P
+>
+These functions control the echoing of characters typed by the user to the
+terminal. <TT
+CLASS="LITERAL"
+>noecho()</TT
+> switches off echoing. The
+reason you might want to do this is to gain more control over echoing or to
+suppress unnecessary echoing while taking input from the user through the
+getch() etc. functions. Most of the interactive programs call
+<TT
+CLASS="LITERAL"
+>noecho()</TT
+> at initialization and do the echoing
+of characters in a controlled manner. It gives the programmer the flexibility
+of echoing characters at any place in the window without updating current (y,x)
+co-ordinates. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="KEYPAD"
+>4.4. keypad()</A
+></H3
+><P
+>This is my favorite initialization function. It enables the reading of function
+keys like F1, F2, arrow keys etc. Almost every interactive program enables this,
+as arrow keys are a major part of any User Interface. Do
+<TT
+CLASS="LITERAL"
+>keypad(stdscr, TRUE) </TT
+> to enable this feature
+for the regular screen (stdscr). You will learn more about key management in
+later sections of this document.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="HALFDELAY"
+>4.5. halfdelay()</A
+></H3
+><P
+>This function, though not used very often, is a useful one at times.
+halfdelay()is called to enable the half-delay mode, which is similar to the
+cbreak() mode in that characters typed are immediately available to program.
+However, it waits for 'X' tenths of a second for input and then returns ERR, if
+no input is available. 'X' is the timeout value passed to the function
+halfdelay(). This function is useful when you want to ask the user for input,
+and if he doesn't respond with in certain time, we can do some thing else. One
+possible example is a timeout at the password prompt. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MISCINIT"
+>4.6. Miscellaneous Initialization functions</A
+></H3
+><P
+>There are few more functions which are called at initialization to
+customize curses behavior. They are not used as extensively as those mentioned
+above. Some of them are explained where appropriate.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="INITEX"
+>4.7. An Example</A
+></H3
+><P
+>Let's write a program which will clarify the usage of these functions.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BINFU"
+></A
+><P
+><B
+>Example 2. Initialization Function Usage example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62;
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 */
+{ int ch;
+
+ initscr(); /* Start curses mode */
+ raw(); /* Line buffering disabled */
+ keypad(stdscr, TRUE); /* We get F1, F2 etc.. */
+ noecho(); /* Don't echo() while we do getch */
+
+ printw("Type any character to see it in bold\n");
+ ch = getch(); /* If raw() hadn't been called
+ * we have to press enter before it
+ * gets to the program */
+ if(ch == KEY_F(1)) /* Without keypad enabled this will */
+ printw("F1 Key pressed");/* not get to us either */
+ /* Without noecho() some ugly escape
+ * charachters might have been printed
+ * on screen */
+ else
+ { printw("The pressed key is ");
+ attron(A_BOLD);
+ printw("%c", ch);
+ attroff(A_BOLD);
+ }
+ refresh(); /* Print it on to the real screen */
+ getch(); /* Wait for user input */
+ endwin(); /* End curses mode */
+
+ return 0;
+}</SPAN
+></PRE
+></DIV
+><P
+>This program is self-explanatory. But I used functions which aren't explained
+yet. The function <TT
+CLASS="LITERAL"
+>getch()</TT
+> is used to get a
+character from user. It is equivalent to normal
+<TT
+CLASS="LITERAL"
+>getchar()</TT
+> except that we can disable the line
+buffering to avoid &lt;enter&gt; after input. Look for more about
+<TT
+CLASS="LITERAL"
+>getch()</TT
+>and reading keys in the <A
+HREF="#KEYS"
+> key management section </A
+>. The functions attron and attroff
+are used to switch some attributes on and off respectively. In the example I
+used them to print the character in bold. These functions are explained in detail
+later.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="AWORDWINDOWS"
+>5. A Word about Windows</A
+></H2
+><P
+>
+Before we plunge into the myriad ncurses functions, let me clear few things
+about windows. Windows are explained in detail in following <A
+HREF="#WINDOWS"
+> sections </A
+></P
+><P
+>A Window is an imaginary screen defined by curses system. A window does not mean
+a bordered window which you usually see on Win9X platforms. When curses is
+initialized, it creates a default window named
+<TT
+CLASS="LITERAL"
+>stdscr</TT
+> which represents your 80x25 (or the size
+of window in which you are running) screen. If you are doing simple tasks like
+printing few strings, reading input etc., you can safely use this single window
+for all of your purposes. You can also create windows and call functions which
+explicitly work on the specified window.</P
+><P
+>For example, if you call</P
+><PRE
+CLASS="PROGRAMLISTING"
+> printw("Hi There !!!");
+ refresh();</PRE
+><P
+>It prints the string on stdscr at the present cursor position. Similarly the
+call to refresh(), works on stdscr only. </P
+><P
+>Say you have created <A
+HREF="#WINDOWS"
+>windows</A
+> then you have to
+call a function with a 'w' added to the usual function.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> wprintw(win, "Hi There !!!");
+ wrefresh(win);</PRE
+><P
+>As you will see in the rest of the document, naming of functions follow the
+same convention. For each function there usually are three more functions.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> printw(string); /* Print on stdscr at present cursor position */
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>
+ /* co-ordinates and then print */</PRE
+><P
+>Usually the w-less functions are macros which expand to corresponding w-function
+with stdscr as the window parameter.</P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="PRINTW"
+>6. Output functions</A
+></H2
+><P
+>I guess you can't wait any more to see some action. Back to our odyssey of
+curses functions. Now that curses is initialized, let's interact with
+world.</P
+><P
+>There are three classes of functions which you can use to do output on screen.
+<P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>addch() class: Print single character with attributes </P
+></LI
+><LI
+><P
+>printw() class: Print formatted output similar to printf()</P
+></LI
+><LI
+><P
+>addstr() class: Print strings</P
+></LI
+></OL
+></P
+><P
+>These functions can be used interchangeably and it's a matter of style as to
+which class is used. Let's see each one in detail.</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ADDCHCLASS"
+>6.1. addch() class of functions</A
+></H3
+><P
+>These functions put a single character into the current cursor location and
+advance the position of the cursor. You can give the character to be printed but
+they usually are used to print a character with some attributes. Attributes are
+explained in detail in later <A
+HREF="#ATTRIB"
+> sections </A
+> of the
+document. If a character is associated with an attribute(bold, reverse video
+etc.), when curses prints the character, it is printed in that attribute.</P
+><P
+>In order to combine a character with some attributes, you have two options:</P
+><P
+></P
+><UL
+><LI
+><P
+>By OR'ing a single character with the desired attribute macros. These attribute
+macros could be found in the header file
+<TT
+CLASS="LITERAL"
+>ncurses.h</TT
+>. For example, you want to print a
+character ch(of type char) bold and underlined, you would call addch() as below.
+<PRE
+CLASS="PROGRAMLISTING"
+> addch(ch | A_BOLD | A_UNDERLINE);</PRE
+></P
+></LI
+><LI
+><P
+>By using functions like <TT
+CLASS="LITERAL"
+>attrset(),attron(),attroff()</TT
+>. These functions are explained in the <A
+HREF="#ATTRIB"
+>Attributes</A
+> section. Briefly, they manipulate the current attributes of
+the given window. Once set, the character printed in the window are associated
+with the attributes until it is turned off.</P
+></LI
+></UL
+><P
+>Additionally, <TT
+CLASS="LITERAL"
+>curses</TT
+> provides some special
+characters for character-based graphics. You can draw tables, horizontal or
+vertical lines, etc. You can find all avaliable characters in the header file
+<TT
+CLASS="LITERAL"
+>ncurses.h</TT
+>. Try looking for macros beginning
+with <TT
+CLASS="LITERAL"
+>ACS_</TT
+> in this file. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="AEN298"
+>6.2. mvaddch(), waddch() and mvwaddch()</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>mvaddch()</TT
+> is used to move the cursor to a
+given point, and then print. Thus, the calls:
+<PRE
+CLASS="PROGRAMLISTING"
+> move(row,col); /* moves the cursor to row<SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>th</I
+></SPAN
+> row and col<SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>th</I
+></SPAN
+> column */
+ addch(ch);</PRE
+>
can be replaced by
-<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;
+<PRE
+CLASS="PROGRAMLISTING"
+> mvaddch(row,col,ch);</PRE
+></P
+><P
+><TT
+CLASS="LITERAL"
+>waddch()</TT
+> is similar to
+<TT
+CLASS="LITERAL"
+>addch()</TT
+>, except that it adds a character into
+the given window. (Note that <TT
+CLASS="LITERAL"
+>addch()</TT
+> adds a
+character into the window <TT
+CLASS="LITERAL"
+>stdscr</TT
+>.)</P
+><P
+>In a similar fashion <TT
+CLASS="LITERAL"
+>mvwaddch()</TT
+> function is
+used to add a character into the given window at the given coordinates.</P
+><P
+>Now, we are familiar with the basic output function
+<TT
+CLASS="LITERAL"
+>addch()</TT
+>. But, if we want to print a string, it
+would be very annoying to print it character by character. Fortunately,
+<TT
+CLASS="LITERAL"
+>ncurses</TT
+> provides <TT
+CLASS="LITERAL"
+>printf</TT
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>-like</I
+></SPAN
+> or
+<TT
+CLASS="LITERAL"
+>puts</TT
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>-like</I
+></SPAN
+> functions.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="PRINTWCLASS"
+>6.3. printw() class of functions</A
+></H3
+><P
+>These functions are similar to <TT
+CLASS="LITERAL"
+>printf()</TT
+> with
+the added capability of printing at any position on the screen. </P
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="PRINTWMVPRINTW"
+>6.3.1. printw() and mvprintw</A
+></H4
+><P
+>These two functions work much like <TT
+CLASS="LITERAL"
+>printf()</TT
+>.
+<TT
+CLASS="LITERAL"
+>mvprintw()</TT
+> can be used to move the cursor to a
+position and then print. If you want to move the cursor first and then print
+using <TT
+CLASS="LITERAL"
+>printw()</TT
+> function, use
+<TT
+CLASS="LITERAL"
+>move() </TT
+> first and then use
+<TT
+CLASS="LITERAL"
+>printw()</TT
+> though I see no point why one should
+avoid using <TT
+CLASS="LITERAL"
+>mvprintw()</TT
+>, you have the
+flexibility to manipulate. </P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="WPRINTWMVWPRINTW"
+>6.3.2. wprintw() and mvwprintw</A
+></H4
+><P
+>These two functions are similar to above two except that they print in the
+corresponding window given as argument. </P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="VWPRINTW"
+>6.3.3. vwprintw()</A
+></H4
+><P
+>This function is similar to <TT
+CLASS="LITERAL"
+>vprintf()</TT
+>. This can
+be used when variable number of arguments are to be printed.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="SIMPLEPRINTWEX"
+>6.3.4. A Simple printw example</A
+></H4
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BPREX"
+></A
+><P
+><B
+>Example 3. A Simple printw example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62; /* ncurses.h includes stdio.h */
+#include &#60;string.h&#62;
int main()
{
- char mesg[]="Just a string"; /* message to be appeared on the screen */
- int row,col; /* to store the number of rows and *
- * the number of colums of the screen */
- initscr(); /* start the curses mode */
- getmaxyx(stdscr,row,col); /* get the number of rows and columns */
+ char mesg[]="Just a string"; /* message to be appeared on the screen */
+ int row,col; /* to store the number of rows and *
+ * the number of colums of the screen */
+ initscr(); /* start the curses mode */
+ getmaxyx(stdscr,row,col); /* get the number of rows and columns */
mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
- /* print the message at the center of the screen */
+ /* print the message at the center of the screen */
mvprintw(row-2,0,"This screen has %d rows and %d columns\n",row,col);
printw("Try resizing your window(if possible) and then run this program again");
refresh();
@@ -1268,192 +2327,302 @@ int main()
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;
+}</SPAN
+></PRE
+></DIV
+><P
+>Above program demonstrates how easy it is to use <TT
+CLASS="LITERAL"
+>printw</TT
+>. You just feed the coordinates and the message to be appeared
+on the screen, then it does what you want.</P
+><P
+>The above program introduces us to a new function
+<TT
+CLASS="LITERAL"
+>getmaxyx()</TT
+>, a macro defined in
+<TT
+CLASS="LITERAL"
+>ncurses.h</TT
+>. It gives the number of columns and
+the number of rows in a given window.
+<TT
+CLASS="LITERAL"
+>getmaxyx()</TT
+> does this by updating the variables
+given to it. Since <TT
+CLASS="LITERAL"
+>getmaxyx()</TT
+> is not a function
+we don't pass pointers to it, we just give two integer variables. </P
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ADDSTRCLASS"
+>6.4. addstr() class of functions</A
+></H3
+><P
+><TT
+CLASS="LITERAL"
+>addstr()</TT
+> is used to put a character string into
+a given window. This function is similar to calling
+<TT
+CLASS="LITERAL"
+>addch()</TT
+> once for each character in a given
+string. This is true for all output functions. There are other functions from
+this family such as <TT
+CLASS="LITERAL"
+>mvaddstr(),mvwaddstr()</TT
+> and
+<TT
+CLASS="LITERAL"
+>waddstr()</TT
+>, which obey the naming convention of
+curses.(e.g. mvaddstr() is similar to the respective calls move() and then
+addstr().) Another function of this family is addnstr(), which takes an integer
+parameter(say n) additionally. This function puts at most n characters into the
+screen. If n is negative, then the entire string will be added. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ACAUTION"
+>6.5. A word of caution</A
+></H3
+><P
+>All these functions take y co-ordinate first and then x in their arguments.
+A common mistake by beginners is to pass x,y in that order. If you are
+doing too many manipulations of (y,x) co-ordinates, think of dividing the
+screen into windows and manipulate each one separately. Windows are explained
+in the <A
+HREF="#WINDOWS"
+> windows </A
+> section.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="SCANW"
+>7. Input functions</A
+></H2
+><P
+>Well, printing without taking input, is boring. Let's see functions which
+allow us to get input from user. These functions also can be divided into
+three categories.</P
+><P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>getch() class: Get a character</P
+></LI
+><LI
+><P
+>scanw() class: Get formatted input</P
+></LI
+><LI
+><P
+>getstr() class: Get strings</P
+></LI
+></OL
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="GETCHCLASS"
+>7.1. getch() class of functions</A
+></H3
+><P
+>These functions read a single character from the terminal. But there are several
+subtle facts to consider. For example if you don't use the function cbreak(),
+curses will not read your input characters contiguously but will begin read them
+only after a new line or an EOF is encountered. In order to avoid this, the
+cbreak() function must used so that characters are immediately available to your
+program. Another widely used function is noecho(). As the name suggests, when
+this function is set (used), the characters that are keyed in by the user will
+not show up on the screen. The two functions cbreak() and noecho() are typical
+examples of key management. Functions of this genre are explained in the
+<A
+HREF="#KEYS"
+>key management section </A
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="SCANWCLASS"
+>7.2. scanw() class of functions</A
+></H3
+><P
+>These functions are similar to <TT
+CLASS="LITERAL"
+>scanf()</TT
+> with the
+added capability of getting the input from any location on the screen.</P
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="SCANWMVSCANW"
+>7.2.1. scanw() and mvscanw</A
+></H4
+><P
+>The usage of these functions is similar to that of
+<TT
+CLASS="LITERAL"
+>sscanf()</TT
+>, where the line to be scanned is
+provided by <TT
+CLASS="LITERAL"
+>wgetstr()</TT
+> function. That is, these
+functions call to <TT
+CLASS="LITERAL"
+>wgetstr()</TT
+> function(explained
+below) and uses the resulting line for a scan. </P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="WSCANWMVWSCANW"
+>7.2.2. wscanw() and mvwscanw()</A
+></H4
+><P
+>These are similar to above two functions except that they read from a window,
+which is supplied as one of the arguments to these functions. </P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="VWSCANW"
+>7.2.3. vwscanw()</A
+></H4
+><P
+>This function is similar to <TT
+CLASS="LITERAL"
+>vscanf()</TT
+>. This can
+be used when a variable number of arguments are to be scanned.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="GETSTRCLASS"
+>7.3. getstr() class of functions</A
+></H3
+><P
+>These functions are used to get strings from the terminal. In essence, this
+function performs the same task as would be achieved by a series of calls to
+<TT
+CLASS="LITERAL"
+>getch()</TT
+> until a newline, carriage return, or
+end-of-file is received. The resulting string of characters are pointed to by
+<TT
+CLASS="LITERAL"
+>str</TT
+>, which is a character pointer provided by
+the user.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="GETSTREX"
+>7.4. Some examples</A
+></H3
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BSCEX"
+></A
+><P
+><B
+>Example 4. A Simple scanw example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62; /* ncurses.h includes stdio.h */
+#include &#60;string.h&#62;
int main()
{
- char mesg[]="Enter a string: "; /* message to be appeared on the screen */
+ char mesg[]="Enter a string: "; /* message to be appeared on the screen */
char str[80];
- int row,col; /* to store the number of rows and *
- * the number of colums of the screen */
- initscr(); /* start the curses mode */
- getmaxyx(stdscr,row,col); /* get the number of rows and columns */
+ int row,col; /* to store the number of rows and *
+ * the number of colums of the screen */
+ initscr(); /* start the curses mode */
+ getmaxyx(stdscr,row,col); /* get the number of rows and columns */
mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
- /* print the message at the center of the screen */
+ /* print the message at the center of the screen */
getstr(str);
mvprintw(LINES - 2, 0, "You Entered: %s", str);
getch();
endwin();
return 0;
-}</span></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;
+}</SPAN
+></PRE
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="ATTRIB"
+>8. Attributes</A
+></H2
+><P
+>We have seen an example of how attributes can be used to print characters with
+some special effects. Attributes, when set prudently, can present information in
+an easy, understandable manner. The following program takes a C file as input
+and prints the file with comments in bold. Scan through the code. </P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BSIAT"
+></A
+><P
+><B
+>Example 5. A Simple Attributes example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>/* pager functionality by Joseph Spainhour" &#60;spainhou@bellsouth.net&#62; */
+#include &#60;ncurses.h&#62;
+#include &#60;stdlib.h&#62;
int main(int argc, char *argv[])
{
@@ -1464,7 +2633,7 @@ int main(int argc, char *argv[])
if(argc != 2)
{
- printf("Usage: %s &lt;a c file name&gt;\n", argv[0]);
+ printf("Usage: %s &#60;a c file name&#62;\n", argv[0]);
exit(1);
}
fp = fopen(argv[1], "r");
@@ -1473,77 +2642,101 @@ int main(int argc, char *argv[])
perror("Cannot open input file");
exit(1);
}
- initscr(); /* Start curses mode */
- getmaxyx(stdscr, row, col); /* find the boundaries of the screeen */
- while((ch = fgetc(fp)) != EOF) /* read the file till we reach the end */
+ initscr(); /* Start curses mode */
+ getmaxyx(stdscr, row, col); /* find the boundaries of the screeen */
+ while((ch = fgetc(fp)) != EOF) /* read the file till we reach the end */
{
- getyx(stdscr, y, x); /* get the current curser position */
- if(y == (row - 1)) /* are we are at the end of the screen */
+ getyx(stdscr, y, x); /* get the current curser position */
+ if(y == (row - 1)) /* are we are at the end of the screen */
{
- printw("&lt;-Press Any Key-&gt;"); /* tell the user to press a key */
+ printw("&#60;-Press Any Key-&#62;"); /* tell the user to press a key */
getch();
- clear(); /* clear the screen */
- move(0, 0); /* start at the beginning of the screen */
+ clear(); /* clear the screen */
+ move(0, 0); /* start at the beginning of the screen */
}
- if(prev == '/' &amp;&amp; ch == '*') /* If it is / and * then only
- * switch bold on */
+ if(prev == '/' &#38;&#38; ch == '*') /* If it is / and * then only
+ * switch bold on */
{
- attron(A_BOLD); /* cut bold on */
- getyx(stdscr, y, x); /* get the current curser position */
- move(y, x - 1); /* back up one space */
- printw("%c%c", '/', ch); /* The actual printing is done here */
+ attron(A_BOLD); /* cut bold on */
+ getyx(stdscr, y, x); /* get the current curser position */
+ move(y, x - 1); /* back up one space */
+ printw("%c%c", '/', ch); /* The actual printing is done here */
}
else
printw("%c", ch);
refresh();
- if(prev == '*' &amp;&amp; ch == '/')
- attroff(A_BOLD); /* Switch it off once we got *
- * and then / */
+ if(prev == '*' &#38;&#38; ch == '/')
+ attroff(A_BOLD); /* Switch it off once we got *
+ * and then / */
prev = ch;
}
- endwin(); /* End curses mode */
+ endwin(); /* End curses mode */
fclose(fp);
return 0;
-}</span></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
+}</SPAN
+></PRE
+></DIV
+><P
+>
+Don't worry about all those initialization and other crap. Concentrate on
+the while loop. It reads each character in the file and searches for the
+pattern /*. Once it spots the pattern, it switches the BOLD attribute on with
+<TT
+CLASS="LITERAL"
+> attron()</TT
+> . When we get the pattern */ it is
+switched off by <TT
+CLASS="LITERAL"
+> attroff()</TT
+> .</P
+><P
+>
+The above program also introduces us to two useful functions
+<TT
+CLASS="LITERAL"
+>getyx() </TT
+> and
+<TT
+CLASS="LITERAL"
+>move()</TT
+>. The first function gets the
+co-ordinates of the present cursor into the variables y, x. Since getyx() is a
macro we don't have to pass pointers to variables. The function
-<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">
+<TT
+CLASS="LITERAL"
+>move()</TT
+> moves the cursor to the co-ordinates
+given to it. </P
+><P
+>
+The above program is really a simple one which doesn't do much. On these lines
+one could write a more useful program which reads a C file, parses it and prints
+it in different colors. One could even extend it to other languages as well.</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ATTRIBDETAILS"
+>8.1. The details</A
+></H3
+><P
+>Let's get into more details of attributes. The functions <TT
+CLASS="LITERAL"
+>attron(), attroff(), attrset() </TT
+>, and their sister functions
+<TT
+CLASS="LITERAL"
+> attr_get()</TT
+> etc.. can be used to switch
+attributes on/off , get attributes and produce a colorful display.</P
+><P
+>The functions attron and attroff take a bit-mask of attributes and switch them
+on or off, respectively. The following video attributes, which are defined in
+&lt;curses.h&gt; can be passed to these functions. </P
+><PRE
+CLASS="PROGRAMLISTING"
+>
A_NORMAL Normal display (no highlight)
A_STANDOUT Best highlighting mode of the terminal.
A_UNDERLINE Underlining
@@ -1556,368 +2749,445 @@ these functions.</p>
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;
+ </PRE
+><P
+>
+The last one is the most colorful one :-) Colors are explained in the
+<A
+HREF="#color"
+TARGET="_top"
+>next sections</A
+>.</P
+><P
+>We can OR(|) any number of above attributes to get a combined effect. If you
+wanted reverse video with blinking characters you can use</P
+><PRE
+CLASS="PROGRAMLISTING"
+> attron(A_REVERSE | A_BLINK);</PRE
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ATTRONVSATTRSET"
+>8.2. attron() vs attrset()</A
+></H3
+><P
+>Then what is the difference between attron() and attrset()? attrset sets the
+attributes of window whereas attron just switches on the attribute given to it.
+So attrset() fully overrides whatever attributes the window previously had and
+sets it to the new attribute(s). Similarly attroff() just switches off the
+attribute(s) given to it as an argument. This gives us the flexibility of
+managing attributes easily.But if you use them carelessly you may loose track of
+what attributes the window has and garble the display. This is especially true
+while managing menus with colors and highlighting. So decide on a consistent
+policy and stick to it. You can always use <TT
+CLASS="LITERAL"
+> standend()</TT
+> which is equivalent to <TT
+CLASS="LITERAL"
+> attrset(A_NORMAL)</TT
+> which turns off all attributes and brings you to normal mode.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ATTR_GET"
+>8.3. attr_get()</A
+></H3
+><P
+>&#13;The function attr_get() gets the current attributes and color pair of the
+window. Though we might not use this as often as the above functions, this is
+useful in scanning areas of screen. Say we wanted to do some complex update on
+screen and we are not sure what attribute each character is associated with.
+Then this function can be used with either attrset or attron to produce the
+desired effect.&#13;</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ATTR_FUNCS"
+>8.4. attr_ functions</A
+></H3
+><P
+>There are series of functions like attr_set(), attr_on etc.. These are similar
+to above functions except that they take parameters of type
+<TT
+CLASS="LITERAL"
+>attr_t</TT
+>.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="WATTRFUNCS"
+>8.5. wattr functions</A
+></H3
+><P
+>For each of the above functions we have a corresponding function with 'w' which
+operates on a particular window. The above functions operate on stdscr. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="CHGAT"
+>8.6. chgat() functions</A
+></H3
+><P
+>The function chgat() is listed in the end of the man page curs_attr. It actually
+is a useful one. This function can be used to set attributes for a group of
+characters without moving. I mean it !!! without moving the cursor :-) It
+changes the attributes of a given number of characters starting at the current
+cursor location.</P
+><P
+>We can give -1 as the character count to update till end of line. If you want to
+change attributes of characters from current position to end of line, just use
+this.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> chgat(-1, A_REVERSE, 0, NULL);</PRE
+><P
+>
+This function is useful when changing attributes for characters that are
+already on the screen. Move to the character from which you want to change and
+change the attribute. </P
+><P
+>Other functions wchgat(), mvchgat(), wchgat() behave similarly except that the w
+functions operate on the particular window. The mv functions first move the
+cursor then perform the work given to them. Actually chgat is a macro which is
+replaced by a wchgat() with stdscr as the window. Most of the "w-less" functions
+are macros.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BWICH"
+></A
+><P
+><B
+>Example 6. Chgat() Usage example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62;
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;
+{ initscr(); /* Start curses mode */
+ start_color(); /* Start color functionality */
+
+ init_pair(1, COLOR_CYAN, COLOR_BLACK);
+ printw("A Big string which i didn't care to type fully ");
+ mvchgat(0, 0, -1, A_BLINK, 1, NULL);
+ /*
+ * First two parameters specify the position at which to start
+ * Third parameter number of characters to update. -1 means till
+ * end of line
+ * Forth parameter is the normal attribute you wanted to give
+ * to the charcter
+ * Fifth is the color index. It is the index given during init_pair()
+ * use 0 if you didn't want color
+ * Sixth one is always NULL
+ */
+ refresh();
+ getch();
+ endwin(); /* End curses mode */
+ return 0;
+}</SPAN
+></PRE
+></DIV
+><P
+>This example also introduces us to the color world of curses. Colors will be
+explained in detail later. Use 0 for no color.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="WINDOWS"
+>9. Windows</A
+></H2
+><P
+>Windows form the most important concept in curses. You have seen the standard
+window stdscr above where all the functions implicitly operated on this window.
+Now to make design even a simplest GUI, you need to resort to windows. The main
+reason you may want to use windows is to manipulate parts of the screen
+separately, for better efficiency, by updating only the windows that need to be
+changed and for a better design. I would say the last reason is the most
+important in going for windows. You should always strive for a better and
+easy-to-manage design in your programs. If you are writing big, complex GUIs
+this is of pivotal importance before you start doing anything.</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="WINDOWBASICS"
+>9.1. The basics</A
+></H3
+><P
+>A Window can be created by calling the function
+<TT
+CLASS="LITERAL"
+>newwin()</TT
+>. It doesn't create any thing on the
+screen actually. It allocates memory for a structure to manipulate the window
+and updates the structure with data regarding the window like it's size, beginy,
+beginx etc.. Hence in curses, a window is just an abstraction of an imaginary
+window, which can be manipulated independent of other parts of screen. The
+function newwin() returns a pointer to structure WINDOW, which can be passed to
+window related functions like wprintw() etc.. Finally the window can be
+destroyed with delwin(). It will deallocate the memory associated with the
+window structure.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="LETBEWINDOW"
+>9.2. Let there be a Window !!!</A
+></H3
+><P
+>What fun is it, if a window is created and we can't see it. So the fun part
+begins by displaying the window. The function
+<TT
+CLASS="LITERAL"
+>box()</TT
+> can be used to draw a border around the
+window. Let's explore these functions in more detail in this example.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BWIBO"
+></A
+><P
+><B
+>Example 7. Window Border example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62;
WINDOW *create_newwin(int height, int width, int starty, int startx);
void destroy_win(WINDOW *local_win);
int main(int argc, char *argv[])
-{ WINDOW *my_win;
- int startx, starty, width, height;
- int ch;
-
- initscr(); /* Start curses mode */
- cbreak(); /* Line buffering disabled, Pass on
- * everty thing to me */
- keypad(stdscr, TRUE); /* I need that nifty F1 */
-
- height = 3;
- width = 10;
- starty = (LINES - height) / 2; /* Calculating for a center placement */
- startx = (COLS - width) / 2; /* of the window */
- printw("Press F1 to exit");
- refresh();
- my_win = create_newwin(height, width, starty, startx);
-
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case KEY_LEFT:
- destroy_win(my_win);
- my_win = create_newwin(height, width, starty,--startx);
- break;
- case KEY_RIGHT:
- destroy_win(my_win);
- my_win = create_newwin(height, width, starty,++startx);
- break;
- case KEY_UP:
- destroy_win(my_win);
- my_win = create_newwin(height, width, --starty,startx);
- break;
- case KEY_DOWN:
- destroy_win(my_win);
- my_win = create_newwin(height, width, ++starty,startx);
- break;
- }
- }
-
- endwin(); /* End curses mode */
- return 0;
+{ WINDOW *my_win;
+ int startx, starty, width, height;
+ int ch;
+
+ initscr(); /* Start curses mode */
+ cbreak(); /* Line buffering disabled, Pass on
+ * everty thing to me */
+ keypad(stdscr, TRUE); /* I need that nifty F1 */
+
+ height = 3;
+ width = 10;
+ starty = (LINES - height) / 2; /* Calculating for a center placement */
+ startx = (COLS - width) / 2; /* of the window */
+ printw("Press F1 to exit");
+ refresh();
+ my_win = create_newwin(height, width, starty, startx);
+
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_LEFT:
+ destroy_win(my_win);
+ my_win = create_newwin(height, width, starty,--startx);
+ break;
+ case KEY_RIGHT:
+ destroy_win(my_win);
+ my_win = create_newwin(height, width, starty,++startx);
+ break;
+ case KEY_UP:
+ destroy_win(my_win);
+ my_win = create_newwin(height, width, --starty,startx);
+ break;
+ case KEY_DOWN:
+ destroy_win(my_win);
+ my_win = create_newwin(height, width, ++starty,startx);
+ break;
+ }
+ }
+
+ endwin(); /* End curses mode */
+ return 0;
}
WINDOW *create_newwin(int height, int width, int starty, int startx)
-{ WINDOW *local_win;
+{ WINDOW *local_win;
- local_win = newwin(height, width, starty, startx);
- box(local_win, 0 , 0); /* 0, 0 gives default characters
- * for the vertical and horizontal
- * lines */
- wrefresh(local_win); /* Show that box */
+ local_win = newwin(height, width, starty, startx);
+ box(local_win, 0 , 0); /* 0, 0 gives default characters
+ * for the vertical and horizontal
+ * lines */
+ wrefresh(local_win); /* Show that box */
- return local_win;
+ return local_win;
}
void destroy_win(WINDOW *local_win)
-{
- /* box(local_win, ' ', ' '); : This won't produce the desired
- * result of erasing the window. It will leave it's four corners
- * and so an ugly remnant of window.
- */
- wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
- /* The parameters taken are
- * 1. win: the window on which to operate
- * 2. ls: character to be used for the left side of the window
- * 3. rs: character to be used for the right side of the window
- * 4. ts: character to be used for the top side of the window
- * 5. bs: character to be used for the bottom side of the window
- * 6. tl: character to be used for the top left corner of the window
- * 7. tr: character to be used for the top right corner of the window
- * 8. bl: character to be used for the bottom left corner of the window
- * 9. br: character to be used for the bottom right corner of the window
- */
- wrefresh(local_win);
- delwin(local_win);
-}</span></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"> +------------+
+{
+ /* box(local_win, ' ', ' '); : This won't produce the desired
+ * result of erasing the window. It will leave it's four corners
+ * and so an ugly remnant of window.
+ */
+ wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
+ /* The parameters taken are
+ * 1. win: the window on which to operate
+ * 2. ls: character to be used for the left side of the window
+ * 3. rs: character to be used for the right side of the window
+ * 4. ts: character to be used for the top side of the window
+ * 5. bs: character to be used for the bottom side of the window
+ * 6. tl: character to be used for the top left corner of the window
+ * 7. tr: character to be used for the top right corner of the window
+ * 8. bl: character to be used for the bottom left corner of the window
+ * 9. br: character to be used for the bottom right corner of the window
+ */
+ wrefresh(local_win);
+ delwin(local_win);
+}</SPAN
+></PRE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="BORDEREXEXPL"
+>9.3. Explanation</A
+></H3
+><P
+>Don't scream. I know it's a big example. But I have to explain some important
+things here :-). This program creates a rectangular window that can be moved
+with left, right, up, down arrow keys. It repeatedly creates and destroys
+windows as user press a key. Don't go beyond the screen limits. Checking for
+those limits is left as an exercise for the reader. Let's dissect it by line by line.</P
+><P
+>The <TT
+CLASS="LITERAL"
+>create_newwin()</TT
+> function creates a window
+with <TT
+CLASS="LITERAL"
+>newwin() </TT
+> and displays a border around it
+with box. The function <TT
+CLASS="LITERAL"
+> destroy_win()</TT
+> first
+erases the window from screen by painting a border with ' ' character and then
+calling <TT
+CLASS="LITERAL"
+>delwin()</TT
+> to deallocate memory related
+to it. Depending on the key the user presses, starty or startx is changed and a
+new window is created.</P
+><P
+>In the destroy_win, as you can see, I used wborder instead of box. The reason is
+written in the comments (You missed it. I know. Read the code :-)). wborder
+draws a border around the window with the characters given to it as the 4 corner
+points and the 4 lines. To put it clearly, if you have called wborder as below:
+<PRE
+CLASS="PROGRAMLISTING"
+> wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');</PRE
+></P
+><P
+>it produces some thing like </P
+><PRE
+CLASS="PROGRAMLISTING"
+> +------------+
| |
| |
| |
| |
| |
| |
- +------------+</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;
+ +------------+</PRE
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="OTHERSTUFF"
+>9.4. The other stuff in the example</A
+></H3
+><P
+>You can also see in the above examples, that I have used the variables COLS,
+LINES which are initialized to the screen sizes after initscr(). They can be
+useful in finding screen dimensions and finding the center co-ordinate of the
+screen as above. The function <TT
+CLASS="LITERAL"
+>getch()</TT
+> as usual
+gets the key from keyboard and according to the key it does the corresponding
+work. This type of switch- case is very common in any GUI based programs.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="OTHERBORDERFUNCS"
+>9.5. Other Border functions</A
+></H3
+><P
+>Above program is grossly inefficient in that with each press of a key, a window
+is destroyed and another is created. So let's write a more efficient program
+which uses other border related functions.</P
+><P
+>The following program uses <TT
+CLASS="LITERAL"
+>mvhline()</TT
+> and
+<TT
+CLASS="LITERAL"
+>mvvline()</TT
+> to achieve similar effect. These two
+functions are simple. They create a horizontal or vertical line of the specified
+length at the specified position.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BOTBO"
+></A
+><P
+><B
+>Example 8. More border functions</B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62;
typedef struct _win_border_struct {
- chtype ls, rs, ts, bs,
- tl, tr, bl, br;
+ chtype ls, rs, ts, bs,
+ tl, tr, bl, br;
}WIN_BORDER;
typedef struct _WIN_struct {
- int startx, starty;
- int height, width;
- WIN_BORDER border;
+ int startx, starty;
+ int height, width;
+ WIN_BORDER border;
}WIN;
void init_win_params(WIN *p_win);
@@ -1925,319 +3195,380 @@ 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;
+{ WIN win;
+ int ch;
+
+ initscr(); /* Start curses mode */
+ start_color(); /* Start the color functionality */
+ cbreak(); /* Line buffering disabled, Pass on
+ * everty thing to me */
+ keypad(stdscr, TRUE); /* I need that nifty F1 */
+ noecho();
+ init_pair(1, COLOR_CYAN, COLOR_BLACK);
+
+ /* Initialize the window parameters */
+ init_win_params(&#38;win);
+ print_win_params(&#38;win);
+
+ attron(COLOR_PAIR(1));
+ printw("Press F1 to exit");
+ refresh();
+ attroff(COLOR_PAIR(1));
+
+ create_box(&#38;win, TRUE);
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_LEFT:
+ create_box(&#38;win, FALSE);
+ --win.startx;
+ create_box(&#38;win, TRUE);
+ break;
+ case KEY_RIGHT:
+ create_box(&#38;win, FALSE);
+ ++win.startx;
+ create_box(&#38;win, TRUE);
+ break;
+ case KEY_UP:
+ create_box(&#38;win, FALSE);
+ --win.starty;
+ create_box(&#38;win, TRUE);
+ break;
+ case KEY_DOWN:
+ create_box(&#38;win, FALSE);
+ ++win.starty;
+ create_box(&#38;win, TRUE);
+ break;
+ }
+ }
+ endwin(); /* End curses mode */
+ return 0;
}
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 = '+';
+ p_win-&#62;height = 3;
+ p_win-&#62;width = 10;
+ p_win-&#62;starty = (LINES - p_win-&#62;height)/2;
+ p_win-&#62;startx = (COLS - p_win-&#62;width)/2;
+
+ p_win-&#62;border.ls = '|';
+ p_win-&#62;border.rs = '|';
+ p_win-&#62;border.ts = '-';
+ p_win-&#62;border.bs = '-';
+ p_win-&#62;border.tl = '+';
+ p_win-&#62;border.tr = '+';
+ p_win-&#62;border.bl = '+';
+ p_win-&#62;border.br = '+';
}
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();
+ mvprintw(25, 0, "%d %d %d %d", p_win-&#62;startx, p_win-&#62;starty,
+ p_win-&#62;width, p_win-&#62;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;
+{ int i, j;
+ int x, y, w, h;
+
+ x = p_win-&#62;startx;
+ y = p_win-&#62;starty;
+ w = p_win-&#62;width;
+ h = p_win-&#62;height;
+
+ if(flag == TRUE)
+ { mvaddch(y, x, p_win-&#62;border.tl);
+ mvaddch(y, x + w, p_win-&#62;border.tr);
+ mvaddch(y + h, x, p_win-&#62;border.bl);
+ mvaddch(y + h, x + w, p_win-&#62;border.br);
+ mvhline(y, x + 1, p_win-&#62;border.ts, w - 1);
+ mvhline(y + h, x + 1, p_win-&#62;border.bs, w - 1);
+ mvvline(y + 1, x, p_win-&#62;border.ls, h - 1);
+ mvvline(y + 1, x + w, p_win-&#62;border.rs, h - 1);
+
+ }
+ else
+ for(j = y; j &#60;= y + h; ++j)
+ for(i = x; i &#60;= x + w; ++i)
+ mvaddch(j, i, ' ');
+
+ refresh();
+
+}</SPAN
+></PRE
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="COLOR"
+>10. Colors</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="COLORBASICS"
+>10.1. The basics</A
+></H3
+><P
+>Life seems dull with no colors. Curses has a nice mechanism to handle colors.
+Let's get into the thick of the things with a small program.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BSICO"
+></A
+><P
+><B
+>Example 9. A Simple Color example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62;
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string);
int main(int argc, char *argv[])
-{ initscr(); /* Start curses mode */
- if(has_colors() == FALSE)
- { endwin();
- printf("Your terminal does not support color\n");
- exit(1);
- }
- start_color(); /* Start color */
- init_pair(1, COLOR_RED, COLOR_BLACK);
-
- attron(COLOR_PAIR(1));
- print_in_middle(stdscr, LINES / 2, 0, 0, "Viola !!! In color ...");
- attroff(COLOR_PAIR(1));
- getch();
- endwin();
+{ initscr(); /* Start curses mode */
+ if(has_colors() == FALSE)
+ { endwin();
+ printf("Your terminal does not support color\n");
+ exit(1);
+ }
+ start_color(); /* Start color */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+
+ attron(COLOR_PAIR(1));
+ print_in_middle(stdscr, LINES / 2, 0, 0, "Viola !!! In color ...");
+ attroff(COLOR_PAIR(1));
+ getch();
+ endwin();
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- mvwprintw(win, y, x, "%s", string);
- refresh();
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ mvwprintw(win, y, x, "%s", string);
+ refresh();
}
-</span></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
+</SPAN
+></PRE
+></DIV
+><P
+>As you can see, to start using color, you should first call the function
+<TT
+CLASS="LITERAL"
+> start_color()</TT
+>. After that, you can use color
+capabilities of your terminals using various functions. To find out whether a
+terminal has color capabilities or not, you can use
+<TT
+CLASS="LITERAL"
+>has_colors()</TT
+> function, which returns FALSE if
+the terminal does not support color. </P
+><P
+>Curses initializes all the colors supported by terminal when start_color() is
+called. These can be accessed by the define constants like
+<TT
+CLASS="LITERAL"
+>COLOR_BLACK </TT
+> etc. Now to actually start using
+colors, you have to define pairs. Colors are always used in pairs. That means
+you have to use the function <TT
+CLASS="LITERAL"
+>init_pair() </TT
+> to
+define the foreground and background for the pair number you give. After that
+that pair number can be used as a normal attribute with <TT
+CLASS="LITERAL"
+>COLOR_PAIR()</TT
+>function. This may seem to be cumbersome at first.
+But this elegant solution allows us to manage color pairs very easily. To
+appreciate it, you have to look into the the source code of "dialog", a utility
+for displaying dialog boxes from shell scripts. The developers have defined
+foreground and background combinations for all the colors they might need and
+initialized at the beginning. This makes it very easy to set attributes just by
+accessing a pair which we already have defined as a constant.</P
+><P
+>The following colors are defined in <TT
+CLASS="LITERAL"
+>curses.h</TT
+>.
+You can use these as parameters for various color functions.
+<PRE
+CLASS="PROGRAMLISTING"
+> COLOR_BLACK 0
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);
+ COLOR_WHITE 7</PRE
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="CHANGECOLORDEFS"
+>10.2. Changing Color Definitions</A
+></H3
+><P
+>The function <TT
+CLASS="LITERAL"
+>init_color()</TT
+>can be used to change
+the rgb values for the colors defined by curses initially. Say you wanted to
+lighten the intensity of red color by a minuscule. Then you can use this
+function as</P
+><PRE
+CLASS="PROGRAMLISTING"
+> init_color(COLOR_RED, 700, 0, 0);
/* 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;
+ * param 2, 3, 4 : rgb content min = 0, max = 1000 */</PRE
+><P
+>If your terminal cannot change the color definitions, the function returns ERR.
+The function <TT
+CLASS="LITERAL"
+>can_change_color()</TT
+> can be used to
+find out whether the terminal has the capability of changing color content or
+not. The rgb content is scaled from 0 to 1000. Initially RED color is defined
+with content 1000(r), 0(g), 0(b). </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="COLORCONTENT"
+>10.3. Color Content</A
+></H3
+><P
+>The functions <TT
+CLASS="LITERAL"
+>color_content()</TT
+> and
+<TT
+CLASS="LITERAL"
+>pair_content()</TT
+> can be used to find the color
+content and foreground, background combination for the pair. </P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="KEYS"
+>11. Interfacing with the key board</A
+></H2
+><DIV
+CLASS="SECT2"
+><H3
+CLASS="SECT2"
+><A
+NAME="KEYSBASICS"
+>11.1. The Basics</A
+></H3
+><P
+>No GUI is complete without a strong user interface and to interact with the
+user, a curses program should be sensitive to key presses or the mouse actions
+done by the user. Let's deal with the keys first.</P
+><P
+>As you have seen in almost all of the above examples, it's very easy to get key
+input from the user. A simple way of getting key presses is to use
+<TT
+CLASS="LITERAL"
+>getch()</TT
+> function. The cbreak mode should be
+enabled to read keys when you are interested in reading individual key hits
+rather than complete lines of text (which usually end with a carriage return).
+keypad should be enabled to get the Functions keys, arrow keys etc. See the
+initialization section for details.</P
+><P
+><TT
+CLASS="LITERAL"
+>getch()</TT
+> returns an integer corresponding to the
+key pressed. If it is a normal character, the integer value will be equivalent
+to the character. Otherwise it returns a number which can be matched with the
+constants defined in <TT
+CLASS="LITERAL"
+>curses.h</TT
+>. For example if
+the user presses F1, the integer returned is 265. This can be checked using the
+macro KEY_F() defined in curses.h. This makes reading keys portable and easy to
+manage.</P
+><P
+>For example, if you call getch() like this</P
+><PRE
+CLASS="PROGRAMLISTING"
+> int ch;
+
+ ch = getch();</PRE
+><P
+>getch() will wait for the user to press a key, (unless you specified a timeout)
+and when user presses a key, the corresponding integer is returned. Then you can
+check the value returned with the constants defined in curses.h to match against
+the keys you want.</P
+><P
+>The following code piece will do that job.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> if(ch == KEY_LEFT)
+ printw("Left arrow is pressed\n");</PRE
+><P
+>Let's write a small program which creates a menu which can be navigated by up
+and down arrows.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="SIMPLEKEYEX"
+>11.2. A Simple Key Usage example</A
+></H3
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BSIKE"
+></A
+><P
+><B
+>Example 10. A Simple Key Usage example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;stdio.h&#62;
+#include &#60;ncurses.h&#62;
#define WIDTH 30
#define HEIGHT 10
@@ -2246,127 +3577,132 @@ int startx = 0;
int starty = 0;
char *choices[] = {
- "Choice 1",
- "Choice 2",
- "Choice 3",
- "Choice 4",
- "Exit",
- };
+ "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "Exit",
+ };
int n_choices = sizeof(choices) / sizeof(char *);
void print_menu(WINDOW *menu_win, int highlight);
int main()
-{ WINDOW *menu_win;
- int highlight = 1;
- int choice = 0;
- int c;
-
- initscr();
- clear();
- noecho();
- cbreak(); /* Line buffering disabled. pass on everything */
- startx = (80 - WIDTH) / 2;
- starty = (24 - HEIGHT) / 2;
-
- menu_win = newwin(HEIGHT, WIDTH, starty, startx);
- keypad(menu_win, TRUE);
- mvprintw(0, 0, "Use arrow keys to go up and down, Press enter to select a choice");
- refresh();
- print_menu(menu_win, highlight);
- while(1)
- { c = wgetch(menu_win);
- switch(c)
- { case KEY_UP:
- if(highlight == 1)
- highlight = n_choices;
- else
- --highlight;
- break;
- case KEY_DOWN:
- if(highlight == n_choices)
- highlight = 1;
- else
- ++highlight;
- break;
- case 10:
- choice = highlight;
- break;
- default:
- mvprintw(24, 0, "Charcter pressed is = %3d Hopefully it can be printed as '%c'", c, c);
- refresh();
- break;
- }
- print_menu(menu_win, highlight);
- if(choice != 0) /* User did a choice come out of the infinite loop */
- break;
- }
- mvprintw(23, 0, "You chose choice %d with choice string %s\n", choice, choices[choice - 1]);
- clrtoeol();
- refresh();
- endwin();
- return 0;
+{ WINDOW *menu_win;
+ int highlight = 1;
+ int choice = 0;
+ int c;
+
+ initscr();
+ clear();
+ noecho();
+ cbreak(); /* Line buffering disabled. pass on everything */
+ startx = (80 - WIDTH) / 2;
+ starty = (24 - HEIGHT) / 2;
+
+ menu_win = newwin(HEIGHT, WIDTH, starty, startx);
+ keypad(menu_win, TRUE);
+ mvprintw(0, 0, "Use arrow keys to go up and down, Press enter to select a choice");
+ refresh();
+ print_menu(menu_win, highlight);
+ while(1)
+ { c = wgetch(menu_win);
+ switch(c)
+ { case KEY_UP:
+ if(highlight == 1)
+ highlight = n_choices;
+ else
+ --highlight;
+ break;
+ case KEY_DOWN:
+ if(highlight == n_choices)
+ highlight = 1;
+ else
+ ++highlight;
+ break;
+ case 10:
+ choice = highlight;
+ break;
+ default:
+ mvprintw(24, 0, "Charcter pressed is = %3d Hopefully it can be printed as '%c'", c, c);
+ refresh();
+ break;
+ }
+ print_menu(menu_win, highlight);
+ if(choice != 0) /* User did a choice come out of the infinite loop */
+ break;
+ }
+ mvprintw(23, 0, "You chose choice %d with choice string %s\n", choice, choices[choice - 1]);
+ clrtoeol();
+ refresh();
+ endwin();
+ return 0;
}
void print_menu(WINDOW *menu_win, int highlight)
{
- int x, y, i;
-
- x = 2;
- y = 2;
- box(menu_win, 0, 0);
- for(i = 0; i &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);
+ int x, y, i;
+
+ x = 2;
+ y = 2;
+ box(menu_win, 0, 0);
+ for(i = 0; i &#60; n_choices; ++i)
+ { if(highlight == i + 1) /* High light the present choice */
+ { wattron(menu_win, A_REVERSE);
+ mvwprintw(menu_win, y, x, "%s", choices[i]);
+ wattroff(menu_win, A_REVERSE);
+ }
+ else
+ mvwprintw(menu_win, y, x, "%s", choices[i]);
+ ++y;
+ }
+ wrefresh(menu_win);
}
-</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
+</SPAN
+></PRE
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="MOUSE"
+>12. Interfacing with the mouse</A
+></H2
+><P
+>Now that you have seen how to get keys, lets do the same thing from mouse.
+Usually each UI allows the user to interact with both keyboard and mouse. </P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MOUSEBASICS"
+>12.1. The Basics</A
+></H3
+><P
+>Before you do any thing else, the events you want to receive have to be enabled
+with <TT
+CLASS="LITERAL"
+>mousemask()</TT
+>.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> mousemask( mmask_t newmask, /* The events you want to listen to */
+ mmask_t *oldmask) /* The old events mask */</PRE
+><P
+>The first parameter to above function is a bit mask of events you would like to
+listen. By default, all the events are turned off. The bit mask <TT
+CLASS="LITERAL"
+> ALL_MOUSE_EVENTS</TT
+> can be used to get all the events.</P
+><P
+>The following are all the event masks:</P
+><PRE
+CLASS="PROGRAMLISTING"
+> Name Description
---------------------------------------------------------------------
BUTTON1_PRESSED mouse button 1 down
BUTTON1_RELEASED mouse button 1 up
@@ -2392,79 +3728,85 @@ be used to get all the events.</p>
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;
+ REPORT_MOUSE_POSITION report mouse movement</PRE
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="GETTINGEVENTS"
+>12.2. Getting the events</A
+></H3
+><P
+>Once a class of mouse events have been enabled, getch() class of functions
+return KEY_MOUSE every time some mouse event happens. Then the mouse event can
+be retrieved with <TT
+CLASS="LITERAL"
+>getmouse()</TT
+>.</P
+><P
+>The code approximately looks like this:</P
+><PRE
+CLASS="PROGRAMLISTING"
+> MEVENT event;
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
+ .</PRE
+><P
+>
+getmouse() returns the event into the pointer given to it. It's a structure
+which contains</P
+><PRE
+CLASS="PROGRAMLISTING"
+> typedef struct
{
short id; /* ID to distinguish multiple devices */
int x, y, z; /* event coordinates */
mmask_t bstate; /* button state bits */
- } </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;
+ } </PRE
+><P
+>The <TT
+CLASS="LITERAL"
+>bstate</TT
+> is the main variable we are
+interested in. It tells the button state of the mouse.</P
+><P
+>Then with a code snippet like the following, we can find out what happened.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> if(event.bstate &amp; BUTTON1_PRESSED)
+ printw("Left Button Pressed");</PRE
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MOUSETOGETHER"
+>12.3. Putting it all Together</A
+></H3
+><P
+>That's pretty much interfacing with mouse. Let's create the same menu and enable
+mouse interaction. To make things simpler, key handling is removed.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BMOME"
+></A
+><P
+><B
+>Example 11. Access the menu with mouse !!! </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62;
#define WIDTH 30
#define HEIGHT 10
@@ -2472,12 +3814,12 @@ handling is removed.</p>
int startx = 0;
int starty = 0;
-char *choices[] = { "Choice 1",
- "Choice 2",
- "Choice 3",
- "Choice 4",
- "Exit",
- };
+char *choices[] = { "Choice 1",
+ "Choice 2",
+ "Choice 3",
+ "Choice 4",
+ "Exit",
+ };
int n_choices = sizeof(choices) / sizeof(char *);
@@ -2485,270 +3827,338 @@ 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;
- }
- }
+{ int c, choice = 0;
+ WINDOW *menu_win;
+ MEVENT event;
+
+ /* Initialize curses */
+ initscr();
+ clear();
+ noecho();
+ cbreak(); //Line buffering disabled. pass on everything
+
+ /* Try to put the window in the middle of screen */
+ startx = (80 - WIDTH) / 2;
+ starty = (24 - HEIGHT) / 2;
+
+ attron(A_REVERSE);
+ mvprintw(23, 1, "Click on Exit to quit (Works best in a virtual console)");
+ refresh();
+ attroff(A_REVERSE);
+
+ /* Print the menu for the first time */
+ menu_win = newwin(HEIGHT, WIDTH, starty, startx);
+ print_menu(menu_win, 1);
+ /* Get all the mouse events */
+ mousemask(ALL_MOUSE_EVENTS, NULL);
+
+ while(1)
+ { c = wgetch(menu_win);
+ switch(c)
+ { case KEY_MOUSE:
+ if(getmouse(&#38;event) == OK)
+ { /* When the user clicks left mouse button */
+ if(event.bstate &#38; BUTTON1_PRESSED)
+ { report_choice(event.x + 1, event.y + 1, &#38;choice);
+ if(choice == -1) //Exit chosen
+ goto end;
+ mvprintw(22, 1, "Choice made is : %d String Chosen is \"%10s\"", choice, choices[choice - 1]);
+ refresh();
+ }
+ }
+ print_menu(menu_win, choice);
+ break;
+ }
+ }
end:
- endwin();
- return 0;
+ endwin();
+ return 0;
}
void print_menu(WINDOW *menu_win, int highlight)
{
- int x, y, i;
-
- x = 2;
- y = 2;
- box(menu_win, 0, 0);
- for(i = 0; i &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);
+ int x, y, i;
+
+ x = 2;
+ y = 2;
+ box(menu_win, 0, 0);
+ for(i = 0; i &#60; n_choices; ++i)
+ { if(highlight == i + 1)
+ { wattron(menu_win, A_REVERSE);
+ mvwprintw(menu_win, y, x, "%s", choices[i]);
+ wattroff(menu_win, A_REVERSE);
+ }
+ else
+ mvwprintw(menu_win, y, x, "%s", choices[i]);
+ ++y;
+ }
+ wrefresh(menu_win);
}
/* 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);
+{ int i,j, choice;
+
+ i = startx + 2;
+ j = starty + 3;
+
+ for(choice = 0; choice &#60; n_choices; ++choice)
+ if(mouse_y == j + choice &#38;&#38; mouse_x &#62;= i &#38;&#38; mouse_x &#60;= i + strlen(choices[choice]))
+ { if(choice == n_choices - 1)
+ *p_choice = -1;
+ else
+ *p_choice = choice + 1;
+ break;
+ }
+}</SPAN
+></PRE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MISCMOUSEFUNCS"
+>12.4. Miscellaneous Functions</A
+></H3
+><P
+>The functions mouse_trafo() and wmouse_trafo() can be used to convert to mouse
+co-ordinates to screen relative co-ordinates. See curs_mouse(3X) man page for details.</P
+><P
+>The mouseinterval function sets the maximum time (in thousands of a
+second) that can elapse between press and release events in order for
+them to be recognized as a click. This function returns the previous
+interval value. The default is one fifth of a second.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="SCREEN"
+>13. Screen Manipulation</A
+></H2
+><P
+>In this section, we will look into some functions, which allow us to manage the
+screen efficiently and to write some fancy programs. This is especially
+important in writing games. </P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="GETYX"
+>13.1. getyx() functions</A
+></H3
+><P
+>&#13;The function <TT
+CLASS="LITERAL"
+>getyx()</TT
+> can be used to find out
+the present cursor co-ordinates. It will fill the values of x and y co-ordinates
+in the arguments given to it. Since getyx() is a macro you don't have to pass
+the address of the variables. It can be called as</P
+><PRE
+CLASS="PROGRAMLISTING"
+> getyx(win, y, x);
/* 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
+ */</PRE
+><P
+>The function getparyx() gets the beginning co-ordinates of the sub window
+relative to the main window. This is some times useful to update a sub window.
+When designing fancy stuff like writing multiple menus, it becomes difficult to
+store the menu positions, their first option co-ordinates etc. A simple solution
+to this problem, is to create menus in sub windows and later find the starting
+co-ordinates of the menus by using getparyx().</P
+><P
+>The functions getbegyx() and getmaxyx() store current window's beginning and
+maximum co-ordinates. These functions are useful in the same way as above in
+managing the windows and sub windows effectively.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="SCREENDUMP"
+>13.2. Screen Dumping</A
+></H3
+><P
+>While writing games, some times it becomes necessary to store the state of the
+screen and restore it back to the same state. The function scr_dump() can be
+used to dump the screen contents to a file given as an argument. Later it can be
+restored by scr_restore function. These two simple functions can be used
+effectively to maintain a fast moving game with changing scenarios. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="WINDOWDUMP"
+>13.3. Window Dumping</A
+></H3
+><P
+>To store and restore windows, the functions
+<TT
+CLASS="LITERAL"
+>putwin()</TT
+> and <TT
+CLASS="LITERAL"
+>getwin()</TT
+> can be used. <TT
+CLASS="LITERAL"
+>putwin()</TT
+> puts
+the present window state into a file, which can be later restored by
+<TT
+CLASS="LITERAL"
+>getwin()</TT
+>.</P
+><P
+>
+The function <TT
+CLASS="LITERAL"
+>copywin()</TT
+> can be used to copy a
+window completely onto another window. It takes the source and destination
+windows as parameters and according to the rectangle specified, it copies the
+rectangular region from source to destination window. It's last parameter
+specifies whether to overwrite or just overlay the contents on to the
+destination window. If this argument is true, then the copying is
+non-destructive.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="MISC"
+>14. Miscellaneous features</A
+></H2
+><P
+>Now you know enough features to write a good curses program, with all bells and
+whistles. There are some miscellaneous functions which are useful in various
+cases. Let's go headlong into some of those.</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="CURSSET"
+>14.1. curs_set()</A
+></H3
+><P
+>This function can be used to make the cursor invisible. The parameter to this
+function should be </P
+><PRE
+CLASS="PROGRAMLISTING"
+> 0 : invisible or
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;
+ 2 : very visible.</PRE
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="TEMPLEAVE"
+>14.2. Temporarily Leaving Curses mode</A
+></H3
+><P
+>Some times you may want to get back to cooked mode (normal line buffering mode)
+temporarily. In such a case you will first need to save the tty modes with a
+call to <TT
+CLASS="LITERAL"
+>def_prog_mode()</TT
+> and then call
+<TT
+CLASS="LITERAL"
+>endwin()</TT
+> to end the curses mode. This will
+leave you in the original tty mode. To get back to curses once you are done,
+call <TT
+CLASS="LITERAL"
+>reset_prog_mode() </TT
+>. This function returns
+the tty to the state stored by <TT
+CLASS="LITERAL"
+>def_prog_mode()</TT
+>. Then do refresh(), and you are back to the curses mode. Here
+is an example showing the sequence of things to be done.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BTELE"
+></A
+><P
+><B
+>Example 12. Temporarily Leaving Curses Mode </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62;
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;
+{
+ initscr(); /* Start curses mode */
+ printw("Hello World !!!\n"); /* Print Hello World */
+ refresh(); /* Print it on to the real screen */
+ def_prog_mode(); /* Save the tty modes */
+ endwin(); /* End curses mode temporarily */
+ system("/bin/sh"); /* Do whatever you like in cooked mode */
+ reset_prog_mode(); /* Return to the previous tty mode*/
+ /* stored by def_prog_mode() */
+ refresh(); /* Do refresh() to restore the */
+ /* Screen contents */
+ printw("Another String\n"); /* Back to curses use the full */
+ refresh(); /* capabilities of curses */
+ endwin(); /* End curses mode */
+
+ return 0;
+}</SPAN
+></PRE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="ACSVARS"
+>14.3. ACS_ variables</A
+></H3
+><P
+>If you have ever programmed in DOS, you know about those nifty characters in
+extended character set. They are printable only on some terminals. NCURSES
+functions like <TT
+CLASS="LITERAL"
+>box()</TT
+> use these characters. All
+these variables start with ACS meaning alternative character set. You might have
+noticed me using these characters in some of the programs above. Here's an example
+showing all the characters.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="BACSVARS"
+></A
+><P
+><B
+>Example 13. ACS Variables Example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;ncurses.h&#62;
int main()
{
@@ -2790,181 +4200,218 @@ int main()
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;
+ return 0;
+}</SPAN
+></PRE
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="OTHERLIB"
+>15. Other libraries</A
+></H2
+><P
+>Apart from the curses library, there are few text mode libraries, which provide
+more functionality and a lot of features. The following sections explain three
+standard libraries which are usually distributed along with curses. </P
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="PANELS"
+>16. Panel Library</A
+></H2
+><P
+>Now that you are proficient in curses, you wanted to do some thing big. You
+created a lot of overlapping windows to give a professional windows-type look.
+Unfortunately, it soon becomes difficult to manage these. The multiple
+refreshes, updates plunge you into a nightmare. The overlapping windows create
+blotches, whenever you forget to refresh the windows in the proper order. </P
+><P
+>Don't despair. There's an elegant solution provided in panels library. In the
+words of developers of ncurses </P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>When your interface design is such that windows may dive deeper into the
+visibility stack or pop to the top at runtime, the resulting book-keeping can be
+tedious and difficult to get right. Hence the panels library.</I
+></SPAN
+></P
+><P
+>If you have lot of overlapping windows, then panels library is the way to go. It
+obviates the need of doing series of wnoutrefresh(), doupdate() and relieves the
+burden of doing it correctly(bottom up). The library maintains information about
+the order of windows, their overlapping and update the screen properly. So why
+wait? Let's take a close peek into panels.</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="PANELBASICS"
+>16.1. The Basics</A
+></H3
+><P
+>Panel object is a window that is implicitly treated as part of a deck including
+all other panel objects. The deck is treated as a stack with the top panel being
+completely visible and the other panels may or may not be obscured according to
+their positions. So the basic idea is to create a stack of overlapping panels
+and use panels library to display them correctly. There is a function similar to
+refresh() which, when called , displays panels in the correct order. Functions
+are provided to hide or show panels, move panels, change its size etc.. The
+overlapping problem is managed by the panels library during all the calls to
+these functions. </P
+><P
+>The general flow of a panel program goes like this:
+
+<P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>Create the windows (with newwin()) to be attached to the panels.</P
+></LI
+><LI
+><P
+>Create panels with the chosen visibility order. Stack them up according to the
+desired visibility. The function new_panel() is used to created panels.</P
+></LI
+><LI
+><P
+>Call update_panels() to write the panels to the virtual screen in correct
+visibility order. Do a doupdate() to show it on the screen. </P
+></LI
+><LI
+><P
+>Mainpulate the panels with show_panel(), hide_panel(), move_panel() etc. Make
+use of helper functions like panel_hidden() and panel_window(). Make use of user
+pointer to store custom data for a panel. Use the functions set_panel_userptr()
+and panel_userptr() to set and get the user pointer for a panel.</P
+></LI
+><LI
+><P
+>When you are done with the panel use del_panel() to delete the panel.</P
+></LI
+></OL
+></P
+><P
+>Let's make the concepts clear, with some programs. The following is a simple
+program which creates 3 overlapping panels and shows them on the screen. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="COMPILEPANELS"
+>16.2. Compiling With the Panels Library</A
+></H3
+><P
+>To use panels library functions, you have to include panel.h and to link the
+program with panels library the flag -lpanel should be added along with
+-lncurses in that order.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> #include &lt;panel.h&gt;
.
.
.
- 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;
+ compile and link: gcc &lt;program file&gt; -lpanel -lncurses</PRE
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="PPASI"
+></A
+><P
+><B
+>Example 14. Panel basics</B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;panel.h&#62;
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();
+{ WINDOW *my_wins[3];
+ PANEL *my_panels[3];
+ int lines = 10, cols = 40, y = 2, x = 4, i;
+
+ initscr();
+ cbreak();
+ noecho();
+
+ /* Create windows for the panels */
+ my_wins[0] = newwin(lines, cols, y, x);
+ my_wins[1] = newwin(lines, cols, y + 1, x + 5);
+ my_wins[2] = newwin(lines, cols, y + 2, x + 10);
+
+ /*
+ * Create borders around the windows so that you can see the effect
+ * of panels
+ */
+ for(i = 0; i &#60; 3; ++i)
+ box(my_wins[i], 0, 0);
+
+ /* Attach a panel to each window */ /* Order is bottom up */
+ my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
+ my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
+ my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
+
+ /* Update the stacking order. 2nd panel will be on top */
+ update_panels();
+
+ /* Show it on the screen */
+ doupdate();
+
+ getch();
+ endwin();
}
-</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;
+</SPAN
+></PRE
+></DIV
+><P
+>As you can see, above program follows a simple flow as explained. The windows
+are created with newwin() and then they are attached to panels with new_panel().
+As we attach one panel after another, the stack of panels gets updated. To put
+them on screen update_panels() and doupdate() are called.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="PANELBROWSING"
+>16.3. Panel Window Browsing</A
+></H3
+><P
+>A slightly complicated example is given below. This program creates 3
+windows which can be cycled through using tab. Have a look at the code.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="PPABR"
+></A
+><P
+><B
+>Example 15. Panel Window Browsing Example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;panel.h&#62;
#define NLINES 10
#define NCOLS 40
@@ -2974,172 +4421,191 @@ void win_show(WINDOW *win, char *label, int label_color);
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
int main()
-{ WINDOW *my_wins[3];
- PANEL *my_panels[3];
- PANEL *top;
- int ch;
-
- /* Initialize curses */
- initscr();
- start_color();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- /* Initialize all the colors */
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_GREEN, COLOR_BLACK);
- init_pair(3, COLOR_BLUE, COLOR_BLACK);
- init_pair(4, COLOR_CYAN, COLOR_BLACK);
-
- init_wins(my_wins, 3);
-
- /* Attach a panel to each window */ /* Order is bottom up */
- my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
- my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
- my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
-
- /* Set up the user pointers to the next panel */
- set_panel_userptr(my_panels[0], my_panels[1]);
- set_panel_userptr(my_panels[1], my_panels[2]);
- set_panel_userptr(my_panels[2], my_panels[0]);
-
- /* Update the stacking order. 2nd panel will be on top */
- update_panels();
-
- /* Show it on the screen */
- attron(COLOR_PAIR(4));
- mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
- attroff(COLOR_PAIR(4));
- doupdate();
-
- top = my_panels[2];
- while((ch = getch()) != KEY_F(1))
- { switch(ch)
- { case 9:
- top = (PANEL *)panel_userptr(top);
- top_panel(top);
- break;
- }
- update_panels();
- doupdate();
- }
- endwin();
- return 0;
+{ WINDOW *my_wins[3];
+ PANEL *my_panels[3];
+ PANEL *top;
+ int ch;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize all the colors */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_BLUE, COLOR_BLACK);
+ init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+ init_wins(my_wins, 3);
+
+ /* Attach a panel to each window */ /* Order is bottom up */
+ my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
+ my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
+ my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
+
+ /* Set up the user pointers to the next panel */
+ set_panel_userptr(my_panels[0], my_panels[1]);
+ set_panel_userptr(my_panels[1], my_panels[2]);
+ set_panel_userptr(my_panels[2], my_panels[0]);
+
+ /* Update the stacking order. 2nd panel will be on top */
+ update_panels();
+
+ /* Show it on the screen */
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+ attroff(COLOR_PAIR(4));
+ doupdate();
+
+ top = my_panels[2];
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case 9:
+ top = (PANEL *)panel_userptr(top);
+ top_panel(top);
+ break;
+ }
+ update_panels();
+ doupdate();
+ }
+ endwin();
+ return 0;
}
/* Put all the windows */
void init_wins(WINDOW **wins, int n)
-{ int x, y, i;
- char label[80];
-
- y = 2;
- x = 10;
- for(i = 0; i &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;
- }
+{ int x, y, i;
+ char label[80];
+
+ y = 2;
+ x = 10;
+ for(i = 0; i &#60; n; ++i)
+ { wins[i] = newwin(NLINES, NCOLS, y, x);
+ sprintf(label, "Window Number %d", i + 1);
+ win_show(wins[i], label, i + 1);
+ y += 3;
+ x += 7;
+ }
}
/* Show the window with a border and a label */
void win_show(WINDOW *win, char *label, int label_color)
-{ int startx, starty, height, width;
+{ int startx, starty, height, width;
- getbegyx(win, starty, startx);
- getmaxyx(win, height, width);
+ getbegyx(win, starty, startx);
+ getmaxyx(win, height, width);
- box(win, 0, 0);
- mvwaddch(win, 2, 0, ACS_LTEE);
- mvwhline(win, 2, 1, ACS_HLINE, width - 2);
- mvwaddch(win, 2, width - 1, ACS_RTEE);
-
- print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+ box(win, 0, 0);
+ mvwaddch(win, 2, 0, ACS_LTEE);
+ mvwhline(win, 2, 1, ACS_HLINE, width - 2);
+ mvwaddch(win, 2, width - 1, ACS_RTEE);
+
+ print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</span></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;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</SPAN
+></PRE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="USERPTRUSING"
+>16.4. Using User Pointers</A
+></H3
+><P
+>In the above example I used user pointers to find out the next window in the
+cycle. We can attach custom information to the panel by specifying a user
+pointer, which can point to any information you want to store. In this case I
+stored the pointer to the next panel in the cycle. User pointer for a panel can
+be set with the function <TT
+CLASS="LITERAL"
+> set_panel_userptr()</TT
+>.
+It can be accessed using the function <TT
+CLASS="LITERAL"
+>panel_userptr()</TT
+> which will return the user pointer for the panel given as
+argument. After finding the next panel in the cycle It's brought to the top by
+the function top_panel(). This function brings the panel given as argument to
+the top of the panel stack. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="PANELMOVERESIZE"
+>16.5. Moving and Resizing Panels</A
+></H3
+><P
+>The function <TT
+CLASS="LITERAL"
+>move_panel()</TT
+> can be used to move a
+panel to the desired location. It does not change the position of the panel in
+the stack. Make sure that you use move_panel() instead mvwin() on the window
+associated with the panel.</P
+><P
+>Resizing a panel is slightly complex. There is no straight forward function
+just to resize the window associated with a panel. A solution to resize a panel
+is to create a new window with the desired sizes, change the window associated
+with the panel using replace_panel(). Don't forget to delete the old window. The
+window associated with a panel can be found by using the function
+panel_window().</P
+><P
+>The following program shows these concepts, in supposedly simple program. You
+can cycle through the window with &lt;TAB&gt; as usual. To resize or move the
+active panel press 'r' for resize 'm' for moving. Then use arrow keys to resize
+or move it to the desired way and press enter to end your resizing or moving.
+This example makes use of user data to get the required data to do the
+operations. </P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="PPARE"
+></A
+><P
+><B
+>Example 16. Panel Moving and Resizing example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;panel.h&#62;
typedef struct _PANEL_DATA {
- int x, y, w, h;
- char label[80];
- int label_color;
- PANEL *next;
+ int x, y, w, h;
+ char label[80];
+ int label_color;
+ PANEL *next;
}PANEL_DATA;
#define NLINES 10
@@ -3151,275 +4617,289 @@ void print_in_middle(WINDOW *win, int starty, int startx, int width, char *strin
void set_user_ptrs(PANEL **panels, int n);
int main()
-{ WINDOW *my_wins[3];
- PANEL *my_panels[3];
- PANEL_DATA *top;
- PANEL *stack_top;
- WINDOW *temp_win, *old_win;
- int ch;
- int newx, newy, neww, newh;
- int size = FALSE, move = FALSE;
-
- /* Initialize curses */
- initscr();
- start_color();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- /* Initialize all the colors */
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_GREEN, COLOR_BLACK);
- init_pair(3, COLOR_BLUE, COLOR_BLACK);
- init_pair(4, COLOR_CYAN, COLOR_BLACK);
-
- init_wins(my_wins, 3);
-
- /* Attach a panel to each window */ /* Order is bottom up */
- my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
- my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
- my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
-
- set_user_ptrs(my_panels, 3);
- /* Update the stacking order. 2nd panel will be on top */
- update_panels();
-
- /* Show it on the screen */
- attron(COLOR_PAIR(4));
- mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
- mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
- attroff(COLOR_PAIR(4));
- doupdate();
-
- stack_top = my_panels[2];
- top = (PANEL_DATA *)panel_userptr(stack_top);
- newx = top-&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;
+{ WINDOW *my_wins[3];
+ PANEL *my_panels[3];
+ PANEL_DATA *top;
+ PANEL *stack_top;
+ WINDOW *temp_win, *old_win;
+ int ch;
+ int newx, newy, neww, newh;
+ int size = FALSE, move = FALSE;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize all the colors */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_BLUE, COLOR_BLACK);
+ init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+ init_wins(my_wins, 3);
+
+ /* Attach a panel to each window */ /* Order is bottom up */
+ my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
+ my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
+ my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
+
+ set_user_ptrs(my_panels, 3);
+ /* Update the stacking order. 2nd panel will be on top */
+ update_panels();
+
+ /* Show it on the screen */
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
+ mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+ attroff(COLOR_PAIR(4));
+ doupdate();
+
+ stack_top = my_panels[2];
+ top = (PANEL_DATA *)panel_userptr(stack_top);
+ newx = top-&#62;x;
+ newy = top-&#62;y;
+ neww = top-&#62;w;
+ newh = top-&#62;h;
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case 9: /* Tab */
+ top = (PANEL_DATA *)panel_userptr(stack_top);
+ top_panel(top-&#62;next);
+ stack_top = top-&#62;next;
+ top = (PANEL_DATA *)panel_userptr(stack_top);
+ newx = top-&#62;x;
+ newy = top-&#62;y;
+ neww = top-&#62;w;
+ newh = top-&#62;h;
+ break;
+ case 'r': /* Re-Size*/
+ size = TRUE;
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 4, 0, "Entered Resizing :Use Arrow Keys to resize and press &#60;ENTER&#62; to end resizing");
+ refresh();
+ attroff(COLOR_PAIR(4));
+ break;
+ case 'm': /* Move */
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 4, 0, "Entered Moving: Use Arrow Keys to Move and press &#60;ENTER&#62; to end moving");
+ refresh();
+ attroff(COLOR_PAIR(4));
+ move = TRUE;
+ break;
+ case KEY_LEFT:
+ if(size == TRUE)
+ { --newx;
+ ++neww;
+ }
+ if(move == TRUE)
+ --newx;
+ break;
+ case KEY_RIGHT:
+ if(size == TRUE)
+ { ++newx;
+ --neww;
+ }
+ if(move == TRUE)
+ ++newx;
+ break;
+ case KEY_UP:
+ if(size == TRUE)
+ { --newy;
+ ++newh;
+ }
+ if(move == TRUE)
+ --newy;
+ break;
+ case KEY_DOWN:
+ if(size == TRUE)
+ { ++newy;
+ --newh;
+ }
+ if(move == TRUE)
+ ++newy;
+ break;
+ case 10: /* Enter */
+ move(LINES - 4, 0);
+ clrtoeol();
+ refresh();
+ if(size == TRUE)
+ { old_win = panel_window(stack_top);
+ temp_win = newwin(newh, neww, newy, newx);
+ replace_panel(stack_top, temp_win);
+ win_show(temp_win, top-&#62;label, top-&#62;label_color);
+ delwin(old_win);
+ size = FALSE;
+ }
+ if(move == TRUE)
+ { move_panel(stack_top, newy, newx);
+ move = FALSE;
+ }
+ break;
+
+ }
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
+ mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+ attroff(COLOR_PAIR(4));
+ refresh();
+ update_panels();
+ doupdate();
+ }
+ endwin();
+ return 0;
}
/* 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;
- }
+{ int x, y, i;
+ char label[80];
+
+ y = 2;
+ x = 10;
+ for(i = 0; i &#60; n; ++i)
+ { wins[i] = newwin(NLINES, NCOLS, y, x);
+ sprintf(label, "Window Number %d", i + 1);
+ win_show(wins[i], label, i + 1);
+ y += 3;
+ x += 7;
+ }
}
/* 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]);
- }
+{ PANEL_DATA *ptrs;
+ WINDOW *win;
+ int x, y, w, h, i;
+ char temp[80];
+
+ ptrs = (PANEL_DATA *)calloc(n, sizeof(PANEL_DATA));
+
+ for(i = 0;i &#60; n; ++i)
+ { win = panel_window(panels[i]);
+ getbegyx(win, y, x);
+ getmaxyx(win, h, w);
+ ptrs[i].x = x;
+ ptrs[i].y = y;
+ ptrs[i].w = w;
+ ptrs[i].h = h;
+ sprintf(temp, "Window Number %d", i + 1);
+ strcpy(ptrs[i].label, temp);
+ ptrs[i].label_color = i + 1;
+ if(i + 1 == n)
+ ptrs[i].next = panels[0];
+ else
+ ptrs[i].next = panels[i + 1];
+ set_panel_userptr(panels[i], &#38;ptrs[i]);
+ }
}
/* Show the window with a border and a label */
void win_show(WINDOW *win, char *label, int label_color)
-{ int startx, starty, height, width;
+{ int startx, starty, height, width;
- getbegyx(win, starty, startx);
- getmaxyx(win, height, width);
+ getbegyx(win, starty, startx);
+ getmaxyx(win, height, width);
- box(win, 0, 0);
- mvwaddch(win, 2, 0, ACS_LTEE);
- mvwhline(win, 2, 1, ACS_HLINE, width - 2);
- mvwaddch(win, 2, width - 1, ACS_RTEE);
-
- print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+ box(win, 0, 0);
+ mvwaddch(win, 2, 0, ACS_LTEE);
+ mvwhline(win, 2, 1, ACS_HLINE, width - 2);
+ mvwaddch(win, 2, width - 1, ACS_RTEE);
+
+ print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</span></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;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</SPAN
+></PRE
+></DIV
+><P
+>Concentrate on the main while loop. Once it finds out the type of key pressed,
+it takes appropriate action. If 'r' is pressed resizing mode is started. After
+this the new sizes are updated as the user presses the arrow keys. When the user
+presses &lt;ENTER&gt; present selection ends and panel is resized by using the
+concept explained. While in resizing mode the program doesn't show how the
+window is getting resized. It's left as an exercise to the reader to print a
+dotted border while it gets resized to a new position. </P
+><P
+>When the user presses 'm' the move mode starts. This is a bit simpler than
+resizing. As the arrow keys are pressed the new position is updated and
+pressing of &lt;ENTER&gt; causes the panel to be moved by calling the function
+move_panel().</P
+><P
+>In this program the user data which is represented as PANEL_DATA, plays very
+important role in finding the associated information with a panel. As written in
+the comments, the PANEL_DATA stores the panel sizes, label, label color and a
+pointer to the next panel in the cycle.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="PANELSHOWHIDE"
+>16.6. Hiding and Showing Panels</A
+></H3
+><P
+>A Panel can be hidden by using the function hide_panel(). This function merely
+removes it form the stack of panels, thus hiding it on the screen once you do
+update_panels() and doupdate(). It doesn't destroy the PANEL structure
+associated with the hidden panel. It can be shown again by using the
+show_panel() function.</P
+><P
+>The following program shows the hiding of panels. Press 'a' or 'b' or 'c' to
+show or hide first, second and third windows respectively. It uses a user data
+with a small variable hide, which keeps track of whether the window is hidden or
+not. For some reason the function
+<TT
+CLASS="LITERAL"
+>panel_hidden()</TT
+> which tells whether a panel is
+hidden or not is not working. A bug report was also presented by Michael Andres
+<A
+HREF="http://www.geocrawler.com/archives/3/344/1999/9/0/2643549/"
+TARGET="_top"
+> here</A
+></P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="PPAHI"
+></A
+><P
+><B
+>Example 17. Panel Hiding and Showing example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;panel.h&#62;
typedef struct _PANEL_DATA {
- int hide; /* TRUE if panel is hidden */
+ int hide; /* TRUE if panel is hidden */
}PANEL_DATA;
#define NLINES 10
@@ -3430,257 +4910,292 @@ 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;
+{ WINDOW *my_wins[3];
+ PANEL *my_panels[3];
+ PANEL_DATA panel_datas[3];
+ PANEL_DATA *temp;
+ int ch;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize all the colors */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_BLUE, COLOR_BLACK);
+ init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+ init_wins(my_wins, 3);
+
+ /* Attach a panel to each window */ /* Order is bottom up */
+ my_panels[0] = new_panel(my_wins[0]); /* Push 0, order: stdscr-0 */
+ my_panels[1] = new_panel(my_wins[1]); /* Push 1, order: stdscr-0-1 */
+ my_panels[2] = new_panel(my_wins[2]); /* Push 2, order: stdscr-0-1-2 */
+
+ /* Initialize panel datas saying that nothing is hidden */
+ panel_datas[0].hide = FALSE;
+ panel_datas[1].hide = FALSE;
+ panel_datas[2].hide = FALSE;
+
+ set_panel_userptr(my_panels[0], &#38;panel_datas[0]);
+ set_panel_userptr(my_panels[1], &#38;panel_datas[1]);
+ set_panel_userptr(my_panels[2], &#38;panel_datas[2]);
+
+ /* Update the stacking order. 2nd panel will be on top */
+ update_panels();
+
+ /* Show it on the screen */
+ attron(COLOR_PAIR(4));
+ mvprintw(LINES - 3, 0, "Show or Hide a window with 'a'(first window) 'b'(Second Window) 'c'(Third Window)");
+ mvprintw(LINES - 2, 0, "F1 to Exit");
+
+ attroff(COLOR_PAIR(4));
+ doupdate();
+
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case 'a':
+ temp = (PANEL_DATA *)panel_userptr(my_panels[0]);
+ if(temp-&#62;hide == FALSE)
+ { hide_panel(my_panels[0]);
+ temp-&#62;hide = TRUE;
+ }
+ else
+ { show_panel(my_panels[0]);
+ temp-&#62;hide = FALSE;
+ }
+ break;
+ case 'b':
+ temp = (PANEL_DATA *)panel_userptr(my_panels[1]);
+ if(temp-&#62;hide == FALSE)
+ { hide_panel(my_panels[1]);
+ temp-&#62;hide = TRUE;
+ }
+ else
+ { show_panel(my_panels[1]);
+ temp-&#62;hide = FALSE;
+ }
+ break;
+ case 'c':
+ temp = (PANEL_DATA *)panel_userptr(my_panels[2]);
+ if(temp-&#62;hide == FALSE)
+ { hide_panel(my_panels[2]);
+ temp-&#62;hide = TRUE;
+ }
+ else
+ { show_panel(my_panels[2]);
+ temp-&#62;hide = FALSE;
+ }
+ break;
+ }
+ update_panels();
+ doupdate();
+ }
+ endwin();
+ return 0;
}
/* 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;
- }
+{ int x, y, i;
+ char label[80];
+
+ y = 2;
+ x = 10;
+ for(i = 0; i &#60; n; ++i)
+ { wins[i] = newwin(NLINES, NCOLS, y, x);
+ sprintf(label, "Window Number %d", i + 1);
+ win_show(wins[i], label, i + 1);
+ y += 3;
+ x += 7;
+ }
}
/* Show the window with a border and a label */
void win_show(WINDOW *win, char *label, int label_color)
-{ int startx, starty, height, width;
+{ int startx, starty, height, width;
- getbegyx(win, starty, startx);
- getmaxyx(win, height, width);
+ getbegyx(win, starty, startx);
+ getmaxyx(win, height, width);
- box(win, 0, 0);
- mvwaddch(win, 2, 0, ACS_LTEE);
- mvwhline(win, 2, 1, ACS_HLINE, width - 2);
- mvwaddch(win, 2, width - 1, ACS_RTEE);
-
- print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+ box(win, 0, 0);
+ mvwaddch(win, 2, 0, ACS_LTEE);
+ mvwhline(win, 2, 1, ACS_HLINE, width - 2);
+ mvwaddch(win, 2, width - 1, ACS_RTEE);
+
+ print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</span></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;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</SPAN
+></PRE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="PANELABOVE"
+>16.7. panel_above() and panel_below() Functions</A
+></H3
+><P
+>The functions <TT
+CLASS="LITERAL"
+>panel_above()</TT
+> and
+<TT
+CLASS="LITERAL"
+>panel_below()</TT
+> can be used to find out the panel
+above and below a panel. If the argument to these functions is NULL, then they
+return a pointer to bottom panel and top panel respectively.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="MENUS"
+>17. Menus Library</A
+></H2
+><P
+>The menus library provides a nice extension to basic curses, through which you
+can create menus. It provides a set of functions to create menus. But they have
+to be customized to give a nicer look, with colors etc. Let's get into the
+details.</P
+><P
+>A menu is a screen display that assists the user to choose some subset of a
+given set of items. To put it simple, a menu is a collection of items from which
+one or more items can be chosen. Some readers might not be aware of multiple
+item selection capability. Menu library provides functionality to write menus
+from which the user can chose more than one item as the preferred choice. This
+is dealt with in a later section. Now it is time for some rudiments.</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MENUBASICS"
+>17.1. The Basics</A
+></H3
+><P
+>To create menus, you first create items, and then post the menu to the display.
+After that, all the processing of user responses is done in an elegant function
+menu_driver() which is the work horse of any menu program. </P
+><P
+>The general flow of control of a menu program looks like this.
+<P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>Initialize curses</P
+></LI
+><LI
+><P
+>Create items using new_item(). You can specify a name and description for the
+items.</P
+></LI
+><LI
+><P
+>Create the menu with new_menu() by specifying the items to be attached with.</P
+></LI
+><LI
+><P
+>Post the menu with menu_post() and refresh the screen.</P
+></LI
+><LI
+><P
+>Process the user requests with a loop and do necessary updates to menu with
+menu_driver.</P
+></LI
+><LI
+><P
+>Unpost the menu with menu_unpost()</P
+></LI
+><LI
+><P
+>Free the memory allocated to menu by free_menu()</P
+></LI
+><LI
+><P
+>Free the memory allocated to the items with free_item() </P
+></LI
+><LI
+><P
+>End curses </P
+></LI
+></OL
+></P
+><P
+>Let's see a program which prints a simple menu and updates the current selection
+with up, down arrows. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="COMPILEMENUS"
+>17.2. Compiling With the Menu Library</A
+></H3
+><P
+>To use menu library functions, you have to include menu.h and to link the
+program with menu library the flag -lmenu should be added along with -lncurses
+in that order.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> #include &lt;menu.h&gt;
.
.
.
- 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;
+ compile and link: gcc &lt;program file&gt; -lmenu -lncurses</PRE
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="MMESI"
+></A
+><P
+><B
+>Example 18. Menu Basics </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;curses.h&#62;
+#include &#60;menu.h&#62;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
@@ -3691,69 +5206,64 @@ char *choices[] = {
};
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
- int n_choices, i;
- ITEM *cur_item;
-
-
- initscr();
- cbreak();
- noecho();
- keypad(stdscr, TRUE);
-
- n_choices = ARRAY_SIZE(choices);
- my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
-
- for(i = 0; i &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();
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
+ int n_choices, i;
+ ITEM *cur_item;
+
+
+ initscr();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ n_choices = ARRAY_SIZE(choices);
+ my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+
+ for(i = 0; i &#60; n_choices; ++i)
+ my_items[i] = new_item(choices[i], choices[i]);
+ my_items[n_choices] = (ITEM *)NULL;
+
+ my_menu = new_menu((ITEM **)my_items);
+ mvprintw(LINES - 2, 0, "F1 to Exit");
+ post_menu(my_menu);
+ refresh();
+
+ while((c = getch()) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ }
+ }
+
+ free_item(my_items[0]);
+ free_item(my_items[1]);
+ free_menu(my_menu);
+ endwin();
}
- </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.
+ </SPAN
+></PRE
+></DIV
+><P
+>This program demonstrates the basic concepts involved in creating a menu using
+menus library. First we create the items using new_item() and then attach them
+to the menu with new_menu() function. After posting the menu and refreshing the
+screen, the main processing loop starts. It reads user input and takes
+corresponding action. The function menu_driver() is the main work horse of the
+menu system. The second parameter to this function tells what's to be done with
+the menu. According to the parameter, menu_driver() does the corresponding task.
+The value can be either a menu navigational request, an ascii character, or a
+KEY_MOUSE special key associated with a mouse event.</P
+><P
+>The menu_driver accepts following navigational requests.
+<PRE
+CLASS="PROGRAMLISTING"
+>&#13; REQ_LEFT_ITEM Move left to an item.
REQ_RIGHT_ITEM Move right to an item.
REQ_UP_ITEM Move up to an item.
REQ_DOWN_ITEM Move down to an item.
@@ -3769,87 +5279,144 @@ special key associated with a mouse event.</p>
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
+ REQ_PREV_MATCH Move to the previous item matching the pattern match.&#13;</PRE
+></P
+><P
+>Don't get overwhelmed by the number of options. We will see them slowly one
+after another. The options of interest in this example are REQ_UP_ITEM and
+REQ_DOWN_ITEM. These two options when passed to menu_driver, menu driver
+updates the current item to one item up or down respectively.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MENUDRIVER"
+>17.3. Menu Driver: The work horse of the menu system</A
+></H3
+><P
+>As you have seen in the above example, menu_driver plays an important role in
+updating the menu. It is very important to understand various options it takes
+and what they do. As explained above, the second parameter to menu_driver() can
+be either a navigational request, a printable character or a KEY_MOUSE key.
+Let's dissect the different navigational requests.</P
+><P
+></P
+><UL
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_LEFT_ITEM and REQ_RIGHT_ITEM</I
+></SPAN
+></P
+><P
+>A Menu can be displayed with multiple columns for more than one item. This can
+be done by using the <TT
+CLASS="LITERAL"
+>menu_format()</TT
+>function.
+When a multi columnar menu is displayed these requests cause the menu driver to
+move the current selection to left or right.</P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_UP_ITEM and REQ_DOWN_ITEM </I
+></SPAN
+> </P
+><P
+>These two options you have seen in the above example. These options when given,
+makes the menu_driver to move the current selection to an item up or down.</P
+></LI
+><LI
+><P
+> <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_* options</I
+></SPAN
+> </P
+><P
+>The four options REQ_SCR_ULINE, REQ_SCR_DLINE, REQ_SCR_DPAGE, REQ_SCR_UPAGE are
+related to scrolling. If all the items in the menu cannot be displayed in the
+menu sub window, then the menu is scrollable. These requests can be given to the
+menu_driver to do the scrolling either one line up, down or one page down or up
+respectively. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_NEXT_ITEM and
+REQ_PREV_ITEM </I
+></SPAN
+> </P
+><P
+>These requests are self explanatory.</P
+></LI
+><LI
+><P
+> <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_TOGGLE_ITEM</I
+></SPAN
+> </P
+><P
+>This request when given, toggles the present selection. This option is to be
+used only in a multi valued menu. So to use this request the option O_ONEVALUE
+must be off. This option can be made off or on with set_menu_opts().</P
+></LI
+><LI
+><P
+> <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>Pattern Requests </I
+></SPAN
+></P
+><P
+>Every menu has an associated pattern buffer, which is used to find the nearest
+match to the ascii characters entered by the user. Whenever ascii characters are
+given to menu_driver, it puts in to the pattern buffer. It also tries to find
+the nearest match to the pattern in the items list and moves current selection
+to that item. The request REQ_CLEAR_PATTERN clears the pattern buffer. The
+request REQ_BACK_PATTERN deletes the previous character in the pattern buffer.
+In case the pattern matches more than one item then the matched items can be
+cycled through REQ_NEXT_MATCH and REQ_PREV_MATCH which move the current
+selection to the next and previous matches respectively.</P
+></LI
+><LI
+><P
+> <SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>Mouse Requests</I
+></SPAN
+></P
+><P
+>In case of KEY_MOUSE requests, according to the mouse position an action is
+taken accordingly. The action to be taken is explained in the man page as, </P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+> If the second argument is the KEY_MOUSE special key, the
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;
@@ -3861,39 +5428,49 @@ in the man page as,</p>
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;
+ the menu cursor is positioned to that item.</I
+></SPAN
+></PRE
+></LI
+></UL
+><P
+>Each of the above requests will be explained in the following lines with several
+examples whenever appropriate.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MENUWINDOWS"
+>17.4. Menu Windows</A
+></H3
+><P
+>Every menu created is associated with a window and a sub window. The menu window
+displays any title or border associated with the menu. The menu sub window
+displays the menu items currently available for selection. But we didn't specify
+any window or sub window in the simple example. When a window is not specified,
+stdscr is taken as the main window, and then menu system calculates the sub
+window size required for the display of items. Then items are displayed in the
+calculated sub window. So let's play with these windows and display a menu with
+a border and a title.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="MMEWI"
+></A
+><P
+><B
+>Example 19. Menu Windows Usage example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;menu.h&#62;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
@@ -3906,392 +5483,403 @@ char *choices[] = {
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
WINDOW *my_menu_win;
int n_choices, i;
-
- /* Initialize curses */
- initscr();
- start_color();
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
- /* Create items */
+ /* Create items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
- for(i = 0; i &lt; n_choices; ++i)
+ for(i = 0; i &#60; n_choices; ++i)
my_items[i] = new_item(choices[i], choices[i]);
- /* Crate menu */
- my_menu = new_menu((ITEM **)my_items);
+ /* Crate menu */
+ my_menu = new_menu((ITEM **)my_items);
- /* Create the window to be associated with the menu */
+ /* Create the window to be associated with the menu */
my_menu_win = newwin(10, 40, 4, 4);
keypad(my_menu_win, TRUE);
- /* Set main window and sub window */
+ /* Set main window and sub window */
set_menu_win(my_menu, my_menu_win);
set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
- /* Set menu mark to the string " * " */
+ /* Set menu mark to the string " * " */
set_menu_mark(my_menu, " * ");
- /* Print a border around the main window and print a title */
+ /* Print a border around the main window and print a title */
box(my_menu_win, 0, 0);
- print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
- mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
- mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
- mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
- mvprintw(LINES - 2, 0, "F1 to exit");
- refresh();
+ print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
+ mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
+ mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
+ mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
+ mvprintw(LINES - 2, 0, "F1 to exit");
+ refresh();
- /* Post the menu */
- post_menu(my_menu);
- wrefresh(my_menu_win);
-
- while((c = wgetch(my_menu_win)) != KEY_F(1))
- { switch(c)
- { case KEY_DOWN:
- menu_driver(my_menu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(my_menu, REQ_UP_ITEM);
- break;
- }
+ /* Post the menu */
+ post_menu(my_menu);
+ wrefresh(my_menu_win);
+
+ while((c = wgetch(my_menu_win)) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ }
wrefresh(my_menu_win);
- }
+ }
- /* Unpost and free all the memory taken up */
+ /* Unpost and free all the memory taken up */
unpost_menu(my_menu);
free_menu(my_menu);
- for(i = 0; i &lt; n_choices; ++i)
+ for(i = 0; i &#60; n_choices; ++i)
free_item(my_items[i]);
- endwin();
+ endwin();
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</span></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;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</SPAN
+></PRE
+></DIV
+><P
+>This example creates a menu with a title, border, a fancy line separating title
+and the items. As you can see, in order to attach a window to a menu the
+function set_menu_win() has to be used. Then we attach the sub window also. This
+displays the items in the sub window. You can also set the mark string which
+gets displayed to the left of the selected item with set_menu_mark().</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="SCROLLMENUS"
+>17.5. Scrolling Menus</A
+></H3
+><P
+>If the sub window given for a window is not big enough to show all the items,
+then the menu will be scrollable. When you are on the last item in the present
+list, if you send REQ_DOWN_ITEM, it gets translated into REQ_SCR_DLINE and the
+menu scrolls by one item. You can manually give REQ_SCR_ operations to do
+scrolling. Let's see how it can be done.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="MMESC"
+></A
+><P
+><B
+>Example 20. Scrolling Menus example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;curses.h&#62;
+#include &#60;menu.h&#62;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
"Choice 2",
"Choice 3",
"Choice 4",
- "Choice 5",
- "Choice 6",
- "Choice 7",
- "Choice 8",
- "Choice 9",
- "Choice 10",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
+ "Choice 8",
+ "Choice 9",
+ "Choice 10",
"Exit",
(char *)NULL,
};
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
WINDOW *my_menu_win;
int n_choices, i;
-
- /* Initialize curses */
- initscr();
- start_color();
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_CYAN, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_CYAN, COLOR_BLACK);
- /* Create items */
+ /* Create items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
- for(i = 0; i &lt; n_choices; ++i)
+ for(i = 0; i &#60; n_choices; ++i)
my_items[i] = new_item(choices[i], choices[i]);
- /* Crate menu */
- my_menu = new_menu((ITEM **)my_items);
+ /* Crate menu */
+ my_menu = new_menu((ITEM **)my_items);
- /* Create the window to be associated with the menu */
+ /* Create the window to be associated with the menu */
my_menu_win = newwin(10, 40, 4, 4);
keypad(my_menu_win, TRUE);
- /* Set main window and sub window */
+ /* Set main window and sub window */
set_menu_win(my_menu, my_menu_win);
set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
- set_menu_format(my_menu, 5, 1);
-
- /* Set menu mark to the string " * " */
+ set_menu_format(my_menu, 5, 1);
+
+ /* Set menu mark to the string " * " */
set_menu_mark(my_menu, " * ");
- /* Print a border around the main window and print a title */
+ /* Print a border around the main window and print a title */
box(my_menu_win, 0, 0);
- print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
- mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
- mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
- mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
-
- /* Post the menu */
- post_menu(my_menu);
- wrefresh(my_menu_win);
+ 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);
- 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;
- }
+ /* 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 and free all the memory taken up */
unpost_menu(my_menu);
free_menu(my_menu);
- for(i = 0; i &lt; n_choices; ++i)
+ for(i = 0; i &#60; n_choices; ++i)
free_item(my_items[i]);
- endwin();
+ endwin();
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</span></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;
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</SPAN
+></PRE
+></DIV
+><P
+>This program is self-explanatory. In this example the number of choices has been
+increased to ten, which is larger than our sub window size which can hold 6
+items. This message has to be explicitly conveyed to the menu system with the
+function set_menu_format(). In here we specify the number of rows and columns we
+want to be displayed for a single page. We can specify any number of items to be
+shown, in the rows variables, if it is less than the height of the sub window.
+If the key pressed by the user is a PAGE UP or PAGE DOWN, the menu is scrolled a
+page due to the requests (REQ_SCR_DPAGE and REQ_SCR_UPAGE) given to
+menu_driver().</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MULTICOLUMN"
+>17.6. Multi Columnar Menus</A
+></H3
+><P
+>In the above example you have seen how to use the function set_menu_format(). I
+didn't mention what the cols variable (third parameter) does. Well, If your sub
+window is wide enough, you can opt to display more than one item per row. This
+can be specified in the cols variable. To make things simpler, the following
+example doesn't show descriptions for the items.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="MMEMUCO"
+></A
+><P
+><B
+>Example 21. Milt Columnar Menus Example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;curses.h&#62;
+#include &#60;menu.h&#62;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1", "Choice 2", "Choice 3", "Choice 4", "Choice 5",
- "Choice 6", "Choice 7", "Choice 8", "Choice 9", "Choice 10",
- "Choice 11", "Choice 12", "Choice 13", "Choice 14", "Choice 15",
- "Choice 16", "Choice 17", "Choice 18", "Choice 19", "Choice 20",
+ "Choice 6", "Choice 7", "Choice 8", "Choice 9", "Choice 10",
+ "Choice 11", "Choice 12", "Choice 13", "Choice 14", "Choice 15",
+ "Choice 16", "Choice 17", "Choice 18", "Choice 19", "Choice 20",
"Exit",
(char *)NULL,
};
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
WINDOW *my_menu_win;
int n_choices, i;
-
- /* Initialize curses */
- initscr();
- start_color();
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_CYAN, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_CYAN, COLOR_BLACK);
- /* Create items */
+ /* Create items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
- for(i = 0; i &lt; n_choices; ++i)
+ for(i = 0; i &#60; n_choices; ++i)
my_items[i] = new_item(choices[i], choices[i]);
- /* Crate menu */
- my_menu = new_menu((ITEM **)my_items);
+ /* Crate menu */
+ my_menu = new_menu((ITEM **)my_items);
- /* Set menu option not to show the description */
- menu_opts_off(my_menu, O_SHOWDESC);
+ /* Set menu option not to show the description */
+ menu_opts_off(my_menu, O_SHOWDESC);
- /* Create the window to be associated with the menu */
+ /* Create the window to be associated with the menu */
my_menu_win = newwin(10, 70, 4, 4);
keypad(my_menu_win, TRUE);
- /* Set main window and sub window */
+ /* Set main window and sub window */
set_menu_win(my_menu, my_menu_win);
set_menu_sub(my_menu, derwin(my_menu_win, 6, 68, 3, 1));
- set_menu_format(my_menu, 5, 3);
- set_menu_mark(my_menu, " * ");
+ set_menu_format(my_menu, 5, 3);
+ set_menu_mark(my_menu, " * ");
- /* Print a border around the main window and print a title */
+ /* Print a border around the main window and print a title */
box(my_menu_win, 0, 0);
-
- attron(COLOR_PAIR(2));
- mvprintw(LINES - 3, 0, "Use PageUp and PageDown to scroll");
- mvprintw(LINES - 2, 0, "Use Arrow Keys to navigate (F1 to Exit)");
- attroff(COLOR_PAIR(2));
- refresh();
-
- /* Post the menu */
- post_menu(my_menu);
- wrefresh(my_menu_win);
-
- while((c = wgetch(my_menu_win)) != KEY_F(1))
- { switch(c)
- { case KEY_DOWN:
- menu_driver(my_menu, REQ_DOWN_ITEM);
- break;
- case KEY_UP:
- menu_driver(my_menu, REQ_UP_ITEM);
- break;
- case KEY_LEFT:
- menu_driver(my_menu, REQ_LEFT_ITEM);
- break;
- case KEY_RIGHT:
- menu_driver(my_menu, REQ_RIGHT_ITEM);
- break;
- case KEY_NPAGE:
- menu_driver(my_menu, REQ_SCR_DPAGE);
- break;
- case KEY_PPAGE:
- menu_driver(my_menu, REQ_SCR_UPAGE);
- break;
- }
+
+ attron(COLOR_PAIR(2));
+ mvprintw(LINES - 3, 0, "Use PageUp and PageDown to scroll");
+ mvprintw(LINES - 2, 0, "Use Arrow Keys to navigate (F1 to Exit)");
+ attroff(COLOR_PAIR(2));
+ refresh();
+
+ /* Post the menu */
+ post_menu(my_menu);
+ wrefresh(my_menu_win);
+
+ while((c = wgetch(my_menu_win)) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ case KEY_LEFT:
+ menu_driver(my_menu, REQ_LEFT_ITEM);
+ break;
+ case KEY_RIGHT:
+ menu_driver(my_menu, REQ_RIGHT_ITEM);
+ break;
+ case KEY_NPAGE:
+ menu_driver(my_menu, REQ_SCR_DPAGE);
+ break;
+ case KEY_PPAGE:
+ menu_driver(my_menu, REQ_SCR_UPAGE);
+ break;
+ }
wrefresh(my_menu_win);
- }
+ }
- /* Unpost and free all the memory taken up */
+ /* Unpost and free all the memory taken up */
unpost_menu(my_menu);
free_menu(my_menu);
- for(i = 0; i &lt; n_choices; ++i)
+ for(i = 0; i &#60; 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
+ endwin();
+}</SPAN
+></PRE
+></DIV
+><P
+>Watch the function call to set_menu_format(). It specifies the number of columns
+to be 3, thus displaying 3 items per row. We have also switched off the showing
+descriptions with the function menu_opts_off(). There are couple of functions
+set_menu_opts(), menu_opts_on() and menu_opts() which can be used to manipulate
+menu options. The following menu options can be specified.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> O_ONEVALUE
Only one item can be selected for this menu.
O_SHOWDESC
@@ -4310,633 +5898,684 @@ options. The following menu options can be specified.</p>
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;
+ requests to the other end of the menu.</PRE
+><P
+>All options are on by default. You can switch specific attributes on or off with
+menu_opts_on() and menu_opts_off() functions. You can also use set_menu_opts()
+to directly specify the options. The argument to this function should be a OR ed
+value of some of those above constants. The function menu_opts() can be used to
+find out a menu's present options. </P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MULTIVALUEMENUS"
+>17.7. Multi Valued Menus</A
+></H3
+><P
+>You might be wondering what if you switch off the option O_ONEVALUE. Then the
+menu becomes multi-valued. That means you can select more than one item. This
+brings us to the request REQ_TOGGLE_ITEM. Let's see it in action.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="MMETO"
+></A
+><P
+><B
+>Example 22. Multi Valued Menus example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;curses.h&#62;
+#include &#60;menu.h&#62;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
"Choice 2",
"Choice 3",
"Choice 4",
- "Choice 5",
- "Choice 6",
- "Choice 7",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
"Exit",
};
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
int n_choices, i;
- ITEM *cur_item;
-
- /* Initialize curses */
- initscr();
+ ITEM *cur_item;
+
+ /* Initialize curses */
+ initscr();
cbreak();
noecho();
- keypad(stdscr, TRUE);
+ keypad(stdscr, TRUE);
- /* Initialize items */
+ /* Initialize items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
- for(i = 0; i &lt; n_choices; ++i)
+ for(i = 0; i &#60; n_choices; ++i)
my_items[i] = new_item(choices[i], choices[i]);
- my_items[n_choices] = (ITEM *)NULL;
-
- my_menu = new_menu((ITEM **)my_items);
-
- /* 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]);
+ my_items[n_choices] = (ITEM *)NULL;
+
+ my_menu = new_menu((ITEM **)my_items);
+
+ /* Make the menu multi valued */
+ menu_opts_off(my_menu, O_ONEVALUE);
+
+ mvprintw(LINES - 3, 0, "Use &#60;SPACE&#62; to select or unselect an item.");
+ mvprintw(LINES - 2, 0, "&#60;ENTER&#62; to see presently selected items(F1 to Exit)");
+ post_menu(my_menu);
+ refresh();
+
+ while((c = getch()) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ case ' ':
+ menu_driver(my_menu, REQ_TOGGLE_ITEM);
+ break;
+ case 10: /* Enter */
+ { char temp[200];
+ ITEM **items;
+
+ items = menu_items(my_menu);
+ temp[0] = '\0';
+ for(i = 0; i &#60; item_count(my_menu); ++i)
+ if(item_value(items[i]) == TRUE)
+ { strcat(temp, item_name(items[i]));
+ strcat(temp, " ");
+ }
+ move(20, 0);
+ clrtoeol();
+ mvprintw(20, 0, temp);
+ refresh();
+ }
+ break;
+ }
+ }
+
+ free_item(my_items[0]);
free_item(my_items[1]);
- free_menu(my_menu);
- endwin();
+ 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;
+ </SPAN
+></PRE
+></DIV
+><P
+>Whew, A lot of new functions. Let's take them one after another. Firstly, the
+REQ_TOGGLE_ITEM. In a multi-valued menu, the user should be allowed to select
+or un select more than one item. The request REQ_TOGGLE_ITEM toggles the present
+selection. In this case when space is pressed REQ_TOGGLE_ITEM request is sent to
+menu_driver to achieve the result.</P
+><P
+>Now when the user presses &lt;ENTER&gt; we show the items he presently selected.
+First we find out the items associated with the menu using the function
+menu_items(). Then we loop through the items to find out if the item is selected
+or not. The function item_value() returns TRUE if an item is selected. The
+function item_count() returns the number of items in the menu. The item name can
+be found with item_name(). You can also find the description associated with an
+item using item_description().</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MENUOPT"
+>17.8. Menu Options</A
+></H3
+><P
+>Well, by this time you must be itching for some difference in your menu, with
+lots of functionality. I know. You want Colors !!!. You want to create nice
+menus similar to those text mode <A
+HREF="http://www.jersey.net/~debinjoe/games/"
+TARGET="_top"
+>dos games</A
+>. The functions
+set_menu_fore() and set_menu_back() can be used to change the attribute of the
+selected item and unselected item. The names are misleading. They don't change
+menu's foreground or background which would have been useless. </P
+><P
+>The function set_menu_grey() can be used to set the display attribute for the
+non-selectable items in the menu. This brings us to the interesting option for
+an item the one and only O_SELECTABLE. We can turn it off by the function
+item_opts_off() and after that that item is not selectable. It's like a grayed
+item in those fancy windows menus. Let's put these concepts in practice with
+this example</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="MMEAT"
+></A
+><P
+><B
+>Example 23. Menu Options example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;menu.h&#62;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
"Choice 2",
"Choice 3",
"Choice 4",
- "Choice 5",
- "Choice 6",
- "Choice 7",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
"Exit",
};
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
int n_choices, i;
- ITEM *cur_item;
-
- /* Initialize curses */
- initscr();
- start_color();
+ ITEM *cur_item;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_GREEN, COLOR_BLACK);
- init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
- /* Initialize items */
+ /* Initialize items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
- for(i = 0; i &lt; n_choices; ++i)
+ for(i = 0; i &#60; 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();
+ my_items[n_choices] = (ITEM *)NULL;
+ item_opts_off(my_items[3], O_SELECTABLE);
+ item_opts_off(my_items[6], O_SELECTABLE);
+
+ /* Create menu */
+ my_menu = new_menu((ITEM **)my_items);
+
+ /* Set fore ground and back ground of the menu */
+ set_menu_fore(my_menu, COLOR_PAIR(1) | A_REVERSE);
+ set_menu_back(my_menu, COLOR_PAIR(2));
+ set_menu_grey(my_menu, COLOR_PAIR(3));
+
+ /* Post the menu */
+ mvprintw(LINES - 3, 0, "Press &#60;ENTER&#62; to see the option selected");
+ mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+ post_menu(my_menu);
+ refresh();
+
+ while((c = getch()) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ case 10: /* Enter */
+ move(20, 0);
+ clrtoeol();
+ mvprintw(20, 0, "Item selected is : %s",
+ item_name(current_item(my_menu)));
+ pos_menu_cursor(my_menu);
+ break;
+ }
+ }
+ unpost_menu(my_menu);
+ for(i = 0; i &#60; n_choices; ++i)
+ free_item(my_items[i]);
+ free_menu(my_menu);
+ endwin();
}
- </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;
+ </SPAN
+></PRE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MENUUSERPTR"
+>17.9. The useful User Pointer</A
+></H3
+><P
+>We can associate a user pointer with each item in the menu. It works the same
+way as user pointer in panels. It's not touched by menu system. You can store
+any thing you like in that. I usually use it to store the function to be
+executed when the menu option is chosen (It's selected and may be the user
+pressed &lt;ENTER&gt;);</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="MMEUS"
+></A
+><P
+><B
+>Example 24. Menu User Pointer Usage </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;curses.h&#62;
+#include &#60;menu.h&#62;
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD 4
+#define CTRLD 4
char *choices[] = {
"Choice 1",
"Choice 2",
"Choice 3",
"Choice 4",
- "Choice 5",
- "Choice 6",
- "Choice 7",
+ "Choice 5",
+ "Choice 6",
+ "Choice 7",
"Exit",
};
void func(char *name);
int main()
-{ ITEM **my_items;
- int c;
- MENU *my_menu;
+{ ITEM **my_items;
+ int c;
+ MENU *my_menu;
int n_choices, i;
- ITEM *cur_item;
-
- /* Initialize curses */
- initscr();
- start_color();
+ ITEM *cur_item;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
cbreak();
noecho();
- keypad(stdscr, TRUE);
- init_pair(1, COLOR_RED, COLOR_BLACK);
- init_pair(2, COLOR_GREEN, COLOR_BLACK);
- init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
+ keypad(stdscr, TRUE);
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+ init_pair(2, COLOR_GREEN, COLOR_BLACK);
+ init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
- /* Initialize items */
+ /* Initialize items */
n_choices = ARRAY_SIZE(choices);
my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
- for(i = 0; i &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();
+ for(i = 0; i &#60; n_choices; ++i)
+ { my_items[i] = new_item(choices[i], choices[i]);
+ /* Set the user pointer */
+ set_item_userptr(my_items[i], func);
+ }
+ my_items[n_choices] = (ITEM *)NULL;
+
+ /* Create menu */
+ my_menu = new_menu((ITEM **)my_items);
+
+ /* Post the menu */
+ mvprintw(LINES - 3, 0, "Press &#60;ENTER&#62; to see the option selected");
+ mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+ post_menu(my_menu);
+ refresh();
+
+ while((c = getch()) != KEY_F(1))
+ { switch(c)
+ { case KEY_DOWN:
+ menu_driver(my_menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(my_menu, REQ_UP_ITEM);
+ break;
+ case 10: /* Enter */
+ { ITEM *cur;
+ void (*p)(char *);
+
+ cur = current_item(my_menu);
+ p = item_userptr(cur);
+ p((char *)item_name(cur));
+ pos_menu_cursor(my_menu);
+ break;
+ }
+ break;
+ }
+ }
+ unpost_menu(my_menu);
+ for(i = 0; i &#60; n_choices; ++i)
+ free_item(my_items[i]);
+ free_menu(my_menu);
+ endwin();
}
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;
+{ move(20, 0);
+ clrtoeol();
+ mvprintw(20, 0, "Item selected is : %s", name);
+} </SPAN
+></PRE
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="FORMS"
+>18. Forms Library</A
+></H2
+><P
+>Well. If you have seen those forms on web pages which take input from users and
+do various kinds of things, you might be wondering how would any one create such
+forms in text mode display. It's quite difficult to write those nifty forms in
+plain ncurses. Forms library tries to provide a basic frame work to build and
+maintain forms with ease. It has lot of features(functions) which manage
+validation, dynamic expansion of fields etc.. Let's see it in full flow.</P
+><P
+>A form is a collection of fields; each field can be either a label(static text)
+or a data-entry location. The forms also library provides functions to divide
+forms into multiple pages. </P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="FORMBASICS"
+>18.1. The Basics</A
+></H3
+><P
+>Forms are created in much the same way as menus. First the fields related to the
+form are created with new_field(). You can set options for the fields, so that
+they can be displayed with some fancy attributes, validated before the field
+looses focus etc.. Then the fields are attached to form. After this, the form
+can be posted to display and is ready to receive inputs. On the similar lines to
+menu_driver(), the form is manipulated with form_driver(). We can send requests
+to form_driver to move focus to a certain field, move cursor to end of the field
+etc.. After the user enters values in the fields and validation done, form can
+be unposted and memory allocated can be freed.</P
+><P
+>The general flow of control of a forms program looks like this.
+
+<P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>Initialize curses</P
+></LI
+><LI
+><P
+>Create fields using new_field(). You can specify the height and
+width of the field, and its position on the form.</P
+></LI
+><LI
+><P
+>Create the forms with new_form() by specifying the fields to be
+attached with.</P
+></LI
+><LI
+><P
+>Post the form with form_post() and refresh the screen.</P
+></LI
+><LI
+><P
+>Process the user requests with a loop and do necessary updates
+to form with form_driver.</P
+></LI
+><LI
+><P
+>Unpost the menu with form_unpost()</P
+></LI
+><LI
+><P
+>Free the memory allocated to menu by free_form()</P
+></LI
+><LI
+><P
+>Free the memory allocated to the items with free_field()</P
+></LI
+><LI
+><P
+>End curses</P
+></LI
+></OL
+></P
+><P
+>As you can see, working with forms library is much similar to handling menu
+library. The following examples will explore various aspects of form
+processing. Let's start the journey with a simple example. first.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="COMPILEFORMS"
+>18.2. Compiling With the Forms Library</A
+></H3
+><P
+>To use forms library functions, you have to include form.h and to link the
+program with forms library the flag -lform should be added along with -lncurses
+in that order.</P
+><PRE
+CLASS="PROGRAMLISTING"
+> #include &lt;form.h&gt;
.
.
.
- 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;
+ compile and link: gcc &lt;program file&gt; -lform -lncurses</PRE
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="FFOSI"
+></A
+><P
+><B
+>Example 25. Forms Basics </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;form.h&#62;
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 */
+{ FIELD *field[3];
+ FORM *my_form;
+ int ch;
+
+ /* Initialize curses */
+ initscr();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize the fields */
+ field[0] = new_field(1, 10, 4, 18, 0, 0);
+ field[1] = new_field(1, 10, 6, 18, 0, 0);
+ field[2] = NULL;
+
+ /* Set field options */
+ set_field_back(field[0], A_UNDERLINE); /* Print a line for the option */
+ field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
+ /* Field is filled up */
+ set_field_back(field[1], A_UNDERLINE);
+ field_opts_off(field[1], O_AUTOSKIP);
+
+ /* Create the form and post it */
+ my_form = new_form(field);
+ post_form(my_form);
+ refresh();
+
+ mvprintw(4, 10, "Value 1:");
+ mvprintw(6, 10, "Value 2:");
+ refresh();
+
+ /* Loop through to get user requests */
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_DOWN:
+ /* Go to next field */
+ form_driver(my_form, REQ_NEXT_FIELD);
+ /* Go to the end of the present buffer */
+ /* Leaves nicely at the last character */
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ case KEY_UP:
+ /* Go to previous field */
+ form_driver(my_form, REQ_PREV_FIELD);
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ default:
+ /* If this is a normal character, it gets */
+ /* Printed */
+ form_driver(my_form, ch);
+ break;
+ }
+ }
+
+ /* Un post form and free the memory */
+ unpost_form(my_form);
+ free_form(my_form);
+ free_field(field[0]);
+ free_field(field[1]);
+
+ endwin();
+ return 0;
+}</SPAN
+></PRE
+></DIV
+><P
+>Above example is pretty straight forward. It creates two fields with
+<TT
+CLASS="LITERAL"
+>new_field()</TT
+>. new_field() takes height, width,
+starty, startx, number of offscreen rows and number of additional working
+buffers. The fifth argument number of offscreen rows specifies how much of the
+field to be shown. If it is zero, the entire field is always displayed otherwise
+the form will be scrollable when the user accesses not displayed parts of the
+field. The forms library allocates one buffer per field to store the data user
+enters. Using the last parameter to new_field() we can specify it to allocate
+some additional buffers. These can be used for any purpose you like.</P
+><P
+>After creating the fields, back ground attribute of both of them is set to an
+underscore with set_field_back(). The AUTOSKIP option is turned off using
+field_opts_off(). If this option is turned on, focus will move to the next
+field in the form once the active field is filled up completely.</P
+><P
+>After attaching the fields to the form, it is posted. Here on, user inputs are
+processed in the while loop, by making corresponding requests to form_driver.
+The details of all the requests to the form_driver() are explained later.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="PLAYFIELDS"
+>18.3. Playing with Fields</A
+></H3
+><P
+>Each form field is associated with a lot of attributes. They can be manipulated
+to get the required effect and to have fun !!!. So why wait? </P
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="FETCHINFO"
+>18.3.1. Fetching Size and Location of Field</A
+></H4
+><P
+>The parameters we have given at the time of creation of a field can be retrieved
+with field_info(). It returns height, width, starty, startx, number of offscreen
+rows, and number of additional buffers into the parameters given to it. It is a
+sort of inverse of new_field().</P
+><PRE
+CLASS="PROGRAMLISTING"
+>int field_info( FIELD *field, /* field from which to fetch */
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 *nbuf); /* number of working buffers */</PRE
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="MOVEFIELD"
+>18.3.2. Moving the field</A
+></H4
+><P
+>The location of the field can be moved to a different position with
+move_field().</P
+><PRE
+CLASS="PROGRAMLISTING"
+>int move_field( FIELD *field, /* field to alter */
+ int top, int left); /* new upper-left corner */</PRE
+><P
+>As usual, the changed position can be queried with field_infor().</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="JUSTIFYFIELD"
+>18.3.3. Field Justification</A
+></H4
+><P
+>The justification to be done for the field can be fixed using the function
+set_field_just().</P
+><PRE
+CLASS="PROGRAMLISTING"
+> int set_field_just(FIELD *field, /* field to alter */
int 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 */
+ int field_just(FIELD *field); /* fetch justify mode of field */</PRE
+><P
+>The justification mode valued accepted and returned by these functions are
+NO_JUSTIFICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="FIELDDISPATTRIB"
+>18.3.4. Field Display Attributes</A
+></H4
+><P
+>As you have seen, in the above example, display attribute for the fields can be
+set with set_field_fore() and setfield_back(). These functions set foreground
+and background attribute of the fields. You can also specify a pad character
+which will be filled in the unfilled portion of the field. The pad character is
+set with a call to set_field_pad(). Default pad value is a space. The functions
+field_fore(), field_back, field_pad() can be used to query the present
+foreground, background attributes and pad character for the field. The following
+list gives the usage of functions.</P
+><PRE
+CLASS="PROGRAMLISTING"
+>&#13;int set_field_fore(FIELD *field, /* field to alter */
chtype attr); /* attribute to set */
chtype field_fore(FIELD *field); /* field to query */
@@ -4952,124 +6591,127 @@ 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;
+ /* returns present pad character */&#13;</PRE
+><P
+>Though above functions seem quite simple, using colors with set_field_fore() may
+be frustrating in the beginning. Let me first explain about foreground and
+background attributes of a field. The foreground attribute is associated with
+the character. That means a character in the field is printed with the attribute
+you have set with set_field_fore(). Background attribute is the attribute used
+to fill background of field, whether any character is there or not. So what
+about colors? Since colors are always defined in pairs, what is the right way to
+display colored fields? Here's an example clarifying color attributes.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="FFOAT"
+></A
+><P
+><B
+>Example 26. Form Attributes example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;form.h&#62;
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 */
+{ FIELD *field[3];
+ FORM *my_form;
+ int ch;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize few color pairs */
+ init_pair(1, COLOR_WHITE, COLOR_BLUE);
+ init_pair(2, COLOR_WHITE, COLOR_BLUE);
+
+ /* Initialize the fields */
+ field[0] = new_field(1, 10, 4, 18, 0, 0);
+ field[1] = new_field(1, 10, 6, 18, 0, 0);
+ field[2] = NULL;
+
+ /* Set field options */
+ set_field_fore(field[0], COLOR_PAIR(1));/* Put the field with blue background */
+ set_field_back(field[0], COLOR_PAIR(2));/* and white foreground (characters */
+ /* are printed in white */
+ field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
+ /* Field is filled up */
+ set_field_back(field[1], A_UNDERLINE);
+ field_opts_off(field[1], O_AUTOSKIP);
+
+ /* Create the form and post it */
+ my_form = new_form(field);
+ post_form(my_form);
+ refresh();
+
+ set_current_field(my_form, field[0]); /* Set focus to the colored field */
+ mvprintw(4, 10, "Value 1:");
+ mvprintw(6, 10, "Value 2:");
+ mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
+ refresh();
+
+ /* Loop through to get user requests */
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_DOWN:
+ /* Go to next field */
+ form_driver(my_form, REQ_NEXT_FIELD);
+ /* Go to the end of the present buffer */
+ /* Leaves nicely at the last character */
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ case KEY_UP:
+ /* Go to previous field */
+ form_driver(my_form, REQ_PREV_FIELD);
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ default:
+ /* If this is a normal character, it gets */
+ /* Printed */
+ form_driver(my_form, ch);
+ break;
+ }
+ }
+
+ /* Un post form and free the memory */
+ unpost_form(my_form);
+ free_form(my_form);
+ free_field(field[0]);
+ free_field(field[1]);
+
+ endwin();
+ return 0;
+}</SPAN
+></PRE
+></DIV
+><P
+>Play with the color pairs and try to understand the foreground and background
+attributes. In my programs using color attributes, I usually set only the
+background with set_field_back(). Curses simply doesn't allow defining
+individual color attributes. </P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="FIELDOPTIONBITS"
+>18.3.5. Field Option Bits</A
+></H4
+><P
+>There is also a large collection of field option bits you can set to control
+various aspects of forms processing. You can manipulate them with these
+functions:</P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_field_opts(FIELD *field, /* field to alter */
int attr); /* attribute to set */
int field_opts_on(FIELD *field, /* field to alter */
@@ -5078,108 +6720,134 @@ int field_opts_on(FIELD *field, /* field to alter */
int field_opts_off(FIELD *field, /* field to alter */
int attr); /* attributes to turn off */
-int field_opts(FIELD *field); /* field to query */ </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;
+int field_opts(FIELD *field); /* field to query */ </PRE
+><P
+>The function set_field_opts() can be used to directly set attributes of a field
+or you can choose to switch a few attributes on and off with field_opts_on() and
+field_opts_off() selectively. Anytime you can query the attributes of a field
+with field_opts(). The following is the list of available options. By default,
+all options are on.</P
+><P
+></P
+><DIV
+CLASS="VARIABLELIST"
+><DL
+><DT
+>O_VISIBLE</DT
+><DD
+><P
+>Controls whether the field is visible on the screen. Can be used
+during form processing to hide or pop up fields depending on the value
+of parent fields.</P
+></DD
+><DT
+>O_ACTIVE</DT
+><DD
+><P
+>Controls whether the field is active during forms processing (i.e.
+visited by form navigation keys). Can be used to make labels or derived
+fields with buffer values alterable by the forms application, not the user.</P
+></DD
+><DT
+>O_PUBLIC</DT
+><DD
+><P
+>Controls whether data is displayed during field entry. If this option is
+turned off on a field, the library will accept and edit data in that field,
+but it will not be displayed and the visible field cursor will not move.
+You can turn off the O_PUBLIC bit to define password fields.</P
+></DD
+><DT
+>O_EDIT</DT
+><DD
+><P
+>Controls whether the field's data can be modified. When this option is
+off, all editing requests except <TT
+CLASS="LITERAL"
+>REQ_PREV_CHOICE</TT
+> and <TT
+CLASS="LITERAL"
+>REQ_NEXT_CHOICE</TT
+>will
+fail. Such read-only fields may be useful for help messages.</P
+></DD
+><DT
+>O_WRAP</DT
+><DD
+><P
+>Controls word-wrapping in multi-line fields. Normally, when any
+character of a (blank-separated) word reaches the end of the current line, the
+entire word is wrapped to the next line (assuming there is one). When this
+option is off, the word will be split across the line break.</P
+></DD
+><DT
+>O_BLANK</DT
+><DD
+><P
+>Controls field blanking. When this option is on, entering a character at
+the first field position erases the entire field (except for the just-entered
+character).</P
+></DD
+><DT
+>O_AUTOSKIP</DT
+><DD
+><P
+>Controls automatic skip to next field when this one fills. Normally,
+when the forms user tries to type more data into a field than will fit,
+the editing location jumps to next field. When this option is off, the
+user's cursor will hang at the end of the field. This option is ignored
+in dynamic fields that have not reached their size limit.</P
+></DD
+><DT
+>O_NULLOK</DT
+><DD
+><P
+>Controls whether validation is applied to
+blank fields. Normally, it is not; the user can leave a field blank
+without invoking the usual validation check on exit. If this option is
+off on a field, exit from it will invoke a validation check.</P
+></DD
+><DT
+>O_PASSOK</DT
+><DD
+><P
+>Controls whether validation occurs on every exit, or only after
+the field is modified. Normally the latter is true. Setting O_PASSOK
+may be useful if your field's validation function may change during
+forms processing.</P
+></DD
+><DT
+>O_STATIC</DT
+><DD
+><P
+>Controls whether the field is fixed to its initial dimensions. If you
+turn this off, the field becomes dynamic and will
+stretch to fit entered data.</P
+></DD
+></DL
+></DIV
+><P
+>A field's options cannot be changed while the field is currently selected.
+However, options may be changed on posted fields that are not current. </P
+><P
+>The option values are bit-masks and can be composed with logical-or in
+the obvious way. You have seen the usage of switching off O_AUTOSKIP option.
+The following example clarifies usage of some more options. Other options
+are explained where appropriate.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="FFOOP"
+></A
+><P
+><B
+>Example 27. Field Options Usage example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;form.h&#62;
#define STARTX 15
#define STARTY 4
@@ -5188,975 +6856,1476 @@ appropriate.</p>
#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 */
+{ FIELD *field[N_FIELDS];
+ FORM *my_form;
+ int ch, i;
+
+ /* Initialize curses */
+ initscr();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize the fields */
+ for(i = 0; i &#60; N_FIELDS - 1; ++i)
+ field[i] = new_field(1, WIDTH, STARTY + i * 2, STARTX, 0, 0);
+ field[N_FIELDS - 1] = NULL;
+
+ /* Set field options */
+ set_field_back(field[1], A_UNDERLINE); /* Print a line for the option */
+
+ field_opts_off(field[0], O_ACTIVE); /* This field is a static label */
+ field_opts_off(field[1], O_PUBLIC); /* This filed is like a password field*/
+ field_opts_off(field[1], O_AUTOSKIP); /* To avoid entering the same field */
+ /* after last character is entered */
+
+ /* Create the form and post it */
+ my_form = new_form(field);
+ post_form(my_form);
+ refresh();
+
+ set_field_just(field[0], JUSTIFY_CENTER); /* Center Justification */
+ set_field_buffer(field[0], 0, "This is a static Field");
+ /* Initialize the field */
+ mvprintw(STARTY, STARTX - 10, "Field 1:");
+ mvprintw(STARTY + 2, STARTX - 10, "Field 2:");
+ refresh();
+
+ /* Loop through to get user requests */
+ while((ch = getch()) != KEY_F(1))
+ { switch(ch)
+ { case KEY_DOWN:
+ /* Go to next field */
+ form_driver(my_form, REQ_NEXT_FIELD);
+ /* Go to the end of the present buffer */
+ /* Leaves nicely at the last character */
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ case KEY_UP:
+ /* Go to previous field */
+ form_driver(my_form, REQ_PREV_FIELD);
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ default:
+ /* If this is a normal character, it gets */
+ /* Printed */
+ form_driver(my_form, ch);
+ break;
+ }
+ }
+
+ /* Un post form and free the memory */
+ unpost_form(my_form);
+ free_form(my_form);
+ free_field(field[0]);
+ free_field(field[1]);
+
+ endwin();
+ return 0;
+}</SPAN
+></PRE
+></DIV
+><P
+>This example, though useless, shows the usage of options. If used properly, they
+can present information very effectively in a form. The second field being not
+O_PUBLIC, does not show the characters you are typing.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="FIELDSTATUS"
+>18.3.6. Field Status</A
+></H4
+><P
+>The field status specifies whether the field has got edited or not. It is
+initially set to FALSE and when user enters something and the data buffer gets
+modified it becomes TRUE. So a field's status can be queried to find out whether
+it has been modified or not. The following functions can assist in those
+operations.</P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_field_status(FIELD *field, /* field to alter */
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,
+int field_status(FIELD *field); /* fetch status of field */</PRE
+><P
+>It's better to check the field's status only after after leaving the field, as
+data buffer might not have been updated yet as the validation is still due. To
+guarantee that right status is returned, call field_status() either (1) in the
+field's exit validation check routine, (2) from the field's or form's
+initialization or termination hooks, or (3) just after a REQ_VALIDATION request
+has been processed by the forms driver</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="FIELDUSERPTR"
+>18.3.7. Field User Pointer</A
+></H4
+><P
+>Every field structure contains one pointer that can be used by the user for
+various purposes. It is not touched by forms library and can be used for any
+purpose by the user. The following functions set and fetch user pointer.</P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_field_userptr(FIELD *field,
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 */
+char *field_userptr(FIELD *field); /* fetch user pointer of the field */</PRE
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="VARIABLESIZEFIELDS"
+>18.3.8. Variable-Sized Fields</A
+></H4
+><P
+>If you want a dynamically changing field with variable width, this is the
+feature you want to put to full use. This will allow the user to enter more data
+than the original size of the field and let the field grow. According to the
+field orientation it will scroll horizontally or vertically to incorporate the
+new data.</P
+><P
+>To make a field dynamically growable, the option O_STATIC should be turned off.
+This can be done with a
+<PRE
+CLASS="PROGRAMLISTING"
+> field_opts_off(field_pointer, O_STATIC);</PRE
+></P
+><P
+>But it's usually not advisable to allow a field to grow infinitely. You can set
+a maximum limit to the growth of the field with
+<PRE
+CLASS="PROGRAMLISTING"
+>int set_max_field(FIELD *field, /* Field on which to operate */
+ int max_growth); /* maximum growth allowed for the field */</PRE
+></P
+><P
+>The field info for a dynamically growable field can be retrieved by
+<PRE
+CLASS="PROGRAMLISTING"
+>int dynamic_field_info( FIELD *field, /* Field on which to operate */
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;
+ /* in this */</PRE
+>
+Though field_info work as usual, it is advisable to use this function to get the
+proper attributes of a dynamically growable field.</P
+><P
+>Recall the library routine new_field; a new field created with height set to one
+will be defined to be a one line field. A new field created with height greater
+than one will be defined to be a multi line field. </P
+><P
+>A one line field with O_STATIC turned off (dynamically growable field) will
+contain a single fixed row, but the number of columns can increase if the user
+enters more data than the initial field will hold. The number of columns
+displayed will remain fixed and the additional data will scroll horizontally. </P
+><P
+>A multi line field with O_STATIC turned off (dynamically growable field) will
+contain a fixed number of columns, but the number of rows can increase if the
+user enters more data than the initial field will hold. The number of rows
+displayed will remain fixed and the additional data will scroll vertically.</P
+><P
+>The above two paragraphs pretty much describe a dynamically growable field's
+behavior. The way other parts of forms library behaves is described below:</P
+><P
+></P
+><OL
+TYPE="1"
+><LI
+><P
+>The field option O_AUTOSKIP will be ignored if the option O_STATIC is off and
+there is no maximum growth specified for the field. Currently, O_AUTOSKIP
+generates an automatic REQ_NEXT_FIELD form driver request when the user types in
+the last character position of a field. On a growable field with no maximum
+growth specified, there is no last character position. If a maximum growth is
+specified, the O_AUTOSKIP option will work as normal if the field has grown to
+its maximum size. </P
+></LI
+><LI
+><P
+>The field justification will be ignored if the option O_STATIC is off.
+Currently, set_field_just can be used to JUSTIFY_LEFT, JUSTIFY_RIGHT,
+JUSTIFY_CENTER the contents of a one line field. A growable one line field will,
+by definition, grow and scroll horizontally and may contain more data than can
+be justified. The return from field_just will be unchanged. </P
+></LI
+><LI
+><P
+>The overloaded form driver request REQ_NEW_LINE will operate the same way
+regardless of the O_NL_OVERLOAD form option if the field option O_STATIC is off
+and there is no maximum growth specified for the field. Currently, if the form
+option O_NL_OVERLOAD is on, REQ_NEW_LINE implicitly generates a REQ_NEXT_FIELD
+if called from the last line of a field. If a field can grow without bound,
+there is no last line, so REQ_NEW_LINE will never implicitly generate a
+REQ_NEXT_FIELD. If a maximum growth limit is specified and the O_NL_OVERLOAD
+form option is on, REQ_NEW_LINE will only implicitly generate REQ_NEXT_FIELD if
+the field has grown to its maximum size and the user is on the last line. </P
+></LI
+><LI
+><P
+>The library call dup_field will work as usual; it will duplicate the field,
+including the current buffer size and contents of the field being duplicated.
+Any specified maximum growth will also be duplicated. </P
+></LI
+><LI
+><P
+>The library call link_field will work as usual; it will duplicate all field
+attributes and share buffers with the field being linked. If the O_STATIC field
+option is subsequently changed by a field sharing buffers, how the system reacts
+to an attempt to enter more data into the field than the buffer will currently
+hold will depend on the setting of the option in the current field. </P
+></LI
+><LI
+><P
+>The library call field_info will work as usual; the variable nrow will contain
+the value of the original call to new_field. The user should use
+dynamic_field_info, described above, to query the current size of the buffer.</P
+></LI
+></OL
+><P
+>Some of the above points make sense only after explaining form driver. We will
+be looking into that in next few sections.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="FORMWINDOWS"
+>18.4. Form Windows</A
+></H3
+><P
+>The form windows concept is pretty much similar to menu windows. Every form is
+associated with a main window and a sub window. The form main window displays
+any title or border associated or whatever the user wishes. Then the sub window
+contains all the fields and displays them according to their position. This
+gives the flexibility of manipulating fancy form displaying very easily. </P
+><P
+>Since this is pretty much similar to menu windows, I am providing an example
+with out much explanation. The functions are similar and they work the same way.</P
+><DIV
+CLASS="EXAMPLE"
+><A
+NAME="FFOWI"
+></A
+><P
+><B
+>Example 28. Form Windows Example </B
+></P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="INLINEMEDIAOBJECT"
+>#include &#60;form.h&#62;
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 */
+ FIELD *field[3];
+ FORM *my_form;
+ WINDOW *my_form_win;
+ int ch, rows, cols;
+
+ /* Initialize curses */
+ initscr();
+ start_color();
+ cbreak();
+ noecho();
+ keypad(stdscr, TRUE);
+
+ /* Initialize few color pairs */
+ init_pair(1, COLOR_RED, COLOR_BLACK);
+
+ /* Initialize the fields */
+ field[0] = new_field(1, 10, 6, 1, 0, 0);
+ field[1] = new_field(1, 10, 8, 1, 0, 0);
+ field[2] = NULL;
+
+ /* Set field options */
+ set_field_back(field[0], A_UNDERLINE);
+ field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
+ /* Field is filled up */
+ set_field_back(field[1], A_UNDERLINE);
+ field_opts_off(field[1], O_AUTOSKIP);
+
+ /* Create the form and post it */
+ my_form = new_form(field);
+
+ /* Calculate the area required for the form */
+ scale_form(my_form, &#38;rows, &#38;cols);
+
+ /* Create the window to be associated with the form */
my_form_win = newwin(rows + 4, cols + 4, 4, 4);
keypad(my_form_win, TRUE);
- /* Set main window and sub window */
+ /* Set main window and sub window */
set_form_win(my_form, my_form_win);
set_form_sub(my_form, derwin(my_form_win, rows, cols, 2, 2));
- /* Print a border around the main window and print a title */
+ /* Print a border around the main window and print a title */
box(my_form_win, 0, 0);
- print_in_middle(my_form_win, 1, 0, cols + 4, "My Form", COLOR_PAIR(1));
-
- post_form(my_form);
- wrefresh(my_form_win);
-
- mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
- refresh();
-
- /* Loop through to get user requests */
- while((ch = wgetch(my_form_win)) != KEY_F(1))
- { switch(ch)
- { case KEY_DOWN:
- /* Go to next field */
- form_driver(my_form, REQ_NEXT_FIELD);
- /* Go to the end of the present buffer */
- /* Leaves nicely at the last character */
- form_driver(my_form, REQ_END_LINE);
- break;
- case KEY_UP:
- /* Go to previous field */
- form_driver(my_form, REQ_PREV_FIELD);
- form_driver(my_form, REQ_END_LINE);
- break;
- default:
- /* If this is a normal character, it gets */
- /* Printed */
- form_driver(my_form, ch);
- break;
- }
- }
-
- /* Un post form and free the memory */
- unpost_form(my_form);
- free_form(my_form);
- free_field(field[0]);
- free_field(field[1]);
-
- endwin();
- return 0;
+ print_in_middle(my_form_win, 1, 0, cols + 4, "My Form", COLOR_PAIR(1));
+
+ post_form(my_form);
+ wrefresh(my_form_win);
+
+ mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
+ refresh();
+
+ /* Loop through to get user requests */
+ while((ch = wgetch(my_form_win)) != KEY_F(1))
+ { switch(ch)
+ { case KEY_DOWN:
+ /* Go to next field */
+ form_driver(my_form, REQ_NEXT_FIELD);
+ /* Go to the end of the present buffer */
+ /* Leaves nicely at the last character */
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ case KEY_UP:
+ /* Go to previous field */
+ form_driver(my_form, REQ_PREV_FIELD);
+ form_driver(my_form, REQ_END_LINE);
+ break;
+ default:
+ /* If this is a normal character, it gets */
+ /* Printed */
+ form_driver(my_form, ch);
+ break;
+ }
+ }
+
+ /* Un post form and free the memory */
+ unpost_form(my_form);
+ free_form(my_form);
+ free_field(field[0]);
+ free_field(field[1]);
+
+ endwin();
+ return 0;
}
void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{ int length, x, y;
- float temp;
-
- if(win == NULL)
- win = stdscr;
- getyx(win, y, x);
- if(startx != 0)
- x = startx;
- if(starty != 0)
- y = starty;
- if(width == 0)
- width = 80;
-
- length = strlen(string);
- temp = (width - length)/ 2;
- x = startx + (int)temp;
- wattron(win, color);
- mvwprintw(win, y, x, "%s", string);
- wattroff(win, color);
- refresh();
-}</span></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 */
+{ int length, x, y;
+ float temp;
+
+ if(win == NULL)
+ win = stdscr;
+ getyx(win, y, x);
+ if(startx != 0)
+ x = startx;
+ if(starty != 0)
+ y = starty;
+ if(width == 0)
+ width = 80;
+
+ length = strlen(string);
+ temp = (width - length)/ 2;
+ x = startx + (int)temp;
+ wattron(win, color);
+ mvwprintw(win, y, x, "%s", string);
+ wattroff(win, color);
+ refresh();
+}</SPAN
+></PRE
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="FILEDVALIDATE"
+>18.5. Field Validation</A
+></H3
+><P
+>By default, a field will accept any data input by the user. It is possible to
+attach validation to the field. Then any attempt by the user to leave the field,
+while it contains data that doesn't match the validation type will fail. Some
+validation types also have a character-validity check for each time a character
+is entered in the field.</P
+><P
+>Validation can be attached to a field with the following function.
+<PRE
+CLASS="PROGRAMLISTING"
+>int set_field_type(FIELD *field, /* field to alter */
FIELDTYPE *ftype, /* type to associate */
- ...); /* additional arguments*/</font>
-</pre></td>
-</tr>
-</table>
+ ...); /* additional arguments*/</PRE
+>
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 */
+<PRE
+CLASS="PROGRAMLISTING"
+>FIELDTYPE *field_type(FIELD *field); /* field to query */</PRE
+></P
+><P
+>The form driver validates the data in a field only when data is entered by the
+end-user. Validation does not occur when </P
+><P
+></P
+><UL
+><LI
+><P
+>the application program changes the field value by calling set_field_buffer. </P
+></LI
+><LI
+><P
+>linked field values are changed indirectly -- by changing the field to which
+they are linked</P
+></LI
+></UL
+><P
+>The following are the pre-defined validation types. You can also specify custom
+validation, though it's a bit tricky and cumbersome.</P
+><H1
+CLASS="BRIDGEHEAD"
+><A
+NAME="AEN1069"
+></A
+>TYPE_ALPHA</H1
+><P
+>This field type accepts alphabetic data; no blanks, no digits, no special
+characters (this is checked at character-entry time). It is set up with: </P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_field_type(FIELD *field, /* field to alter */
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 */
+ int width); /* maximum width of field */</PRE
+><P
+>The width argument sets a minimum width of data. The user has to enter at-least
+width number of characters before he can leave the field. Typically
+you'll want to set this to the field width; if it's greater than the
+field width, the validation check will always fail. A minimum width
+of zero makes field completion optional. </P
+><H1
+CLASS="BRIDGEHEAD"
+><A
+NAME="AEN1073"
+></A
+>TYPE_ALNUM</H1
+><P
+>This field type accepts alphabetic data and digits; no blanks, no special
+characters (this is checked at character-entry time). It is set up with: </P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_field_type(FIELD *field, /* field to alter */
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 */
+ int width); /* maximum width of field */</PRE
+><P
+>The width argument sets a minimum width of data. As with
+TYPE_ALPHA, typically you'll want to set this to the field width; if it's
+greater than the field width, the validation check will always fail. A
+minimum width of zero makes field completion optional. </P
+><H1
+CLASS="BRIDGEHEAD"
+><A
+NAME="AEN1077"
+></A
+>TYPE_ENUM</H1
+><P
+>This type allows you to restrict a field's values to be among a specified
+set of string values (for example, the two-letter postal codes for U.S.
+states). It is set up with: </P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_field_type(FIELD *field, /* field to alter */
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 */
+ int checkunique); /* must specify uniquely? */</PRE
+><P
+>The valuelist parameter must point at a NULL-terminated list of
+valid strings. The checkcase argument, if true, makes comparison
+with the string case-sensitive. </P
+><P
+>When the user exits a TYPE_ENUM field, the validation procedure tries to
+complete the data in the buffer to a valid entry. If a complete choice string
+has been entered, it is of course valid. But it is also possible to enter a
+prefix of a valid string and have it completed for you. </P
+><P
+>By default, if you enter such a prefix and it matches more than one value
+in the string list, the prefix will be completed to the first matching
+value. But the checkunique argument, if true, requires prefix
+matches to be unique in order to be valid. </P
+><P
+>The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests can be particularly
+useful with these fields. </P
+><H1
+CLASS="BRIDGEHEAD"
+><A
+NAME="AEN1084"
+></A
+>TYPE_INTEGER</H1
+><P
+>This field type accepts an integer. It is set up as follows: </P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_field_type(FIELD *field, /* field to alter */
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 */
+ int vmin, int vmax); /* valid range */</PRE
+><P
+>Valid characters consist of an optional leading minus and digits.
+The range check is performed on exit. If the range maximum is less
+than or equal to the minimum, the range is ignored. </P
+><P
+>If the value passes its range check, it is padded with as many leading
+zero digits as necessary to meet the padding argument. </P
+><P
+>A TYPE_INTEGER value buffer can conveniently be interpreted with the C library
+function atoi(3).</P
+><H1
+CLASS="BRIDGEHEAD"
+><A
+NAME="AEN1090"
+></A
+>TYPE_NUMERIC</H1
+><P
+>This field type accepts a decimal number. It is set up as follows: </P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_field_type(FIELD *field, /* field to alter */
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 */
+ int vmin, int vmax); /* valid range */</PRE
+><P
+>Valid characters consist of an optional leading minus and digits. possibly
+including a decimal point. The range check is performed on exit. If the
+range maximum is less than or equal to the minimum, the range is
+ignored. </P
+><P
+>If the value passes its range check, it is padded with as many trailing
+zero digits as necessary to meet the padding argument. </P
+><P
+>A TYPE_NUMERIC value buffer can conveniently be interpreted with the C library
+function atof(3).</P
+><H1
+CLASS="BRIDGEHEAD"
+><A
+NAME="AEN1096"
+></A
+>TYPE_REGEXP</H1
+><P
+>This field type accepts data matching a regular expression. It is set up
+as follows: </P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_field_type(FIELD *field, /* field to alter */
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
+ char *regexp); /* expression to match */</PRE
+><P
+>The syntax for regular expressions is that of regcomp(3).
+The check for regular-expression match is performed on exit.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="FORMDRIVER"
+>18.6. Form Driver: The work horse of the forms system</A
+></H3
+><P
+>As in the menu system, form_driver() plays a very important role in forms
+system. All types of requests to forms system should be funneled through
+form_driver().</P
+><PRE
+CLASS="PROGRAMLISTING"
+>int form_driver(FORM *form, /* form on which to operate */
+ int request) /* form request code */</PRE
+><P
+>As you have seen some of the examples above, you have to be in a loop looking
+for user input and then decide whether it's a field data or a form request. The
+form requests are then passed to form_driver() to do the work.</P
+><P
+>The requests roughly can be divided into following categories. Different
+requests and their usage is explained below:</P
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="PAGENAVREQ"
+>18.6.1. Page Navigation Requests</A
+></H4
+><P
+>These requests cause page-level moves through the form, triggering display of a
+new form screen. A form can be made of multiple pages. If you have a big form
+with lot of fields and logical sections, then you can divide the form into
+pages. The function set_new_page() to set a new page at the field specified.</P
+><PRE
+CLASS="PROGRAMLISTING"
+>int set_new_page(FIELD *field,/* Field at which page break to be set or unset */
+ bool new_page_flag); /* should be TRUE to put a break */</PRE
+><P
+>The following requests allow you to move to different pages</P
+><P
+></P
+><UL
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_NEXT_PAGE</I
+></SPAN
+> Move to the next form page.</P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_PREV_PAGE</I
+></SPAN
+> Move to the previous
+form page.</P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_FIRST_PAGE</I
+></SPAN
+> Move to the first form page.</P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_LAST_PAGE</I
+></SPAN
+> Move to the last form page. </P
+></LI
+></UL
+><P
+>These requests treat the list as cyclic; that is, REQ_NEXT_PAGE from the
+last page goes to the first, and REQ_PREV_PAGE from the first page goes to
+the last.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="INTERFIELDNAVREQ"
+>18.6.2. Inter-Field Navigation Requests</A
+></H4
+><P
+>These requests handle navigation between fields on the same page.</P
+><P
+></P
+><UL
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_NEXT_FIELD</I
+></SPAN
+>
+ Move to next field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_PREV_FIELD</I
+></SPAN
+>
+ Move to previous field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_FIRST_FIELD</I
+></SPAN
+>
+ Move to the first field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_LAST_FIELD</I
+></SPAN
+>
+ Move to the last field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SNEXT_FIELD</I
+></SPAN
+>
+ Move to sorted next field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SPREV_FIELD</I
+></SPAN
+>
+ Move to sorted previous field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SFIRST_FIELD</I
+></SPAN
+>
+ Move to the sorted first field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SLAST_FIELD</I
+></SPAN
+>
+ Move to the sorted last field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_LEFT_FIELD</I
+></SPAN
+>
+ Move left to field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_RIGHT_FIELD</I
+></SPAN
+>
+ Move right to field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_UP_FIELD</I
+></SPAN
+>
+ Move up to field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_DOWN_FIELD</I
+></SPAN
+>
+ Move down to field. </P
+></LI
+></UL
+><P
+>These requests treat the list of fields on a page as cyclic; that is,
+REQ_NEXT_FIELD from the last field goes to the first, and REQ_PREV_FIELD
+from the first field goes to the last. The order of the fields for these
+(and the REQ_FIRST_FIELD and REQ_LAST_FIELD requests) is simply the order of
+the field pointers in the form array (as set up by new_form() or
+set_form_fields()</P
+><P
+>It is also possible to traverse the fields as if they had been sorted in
+screen-position order, so the sequence goes left-to-right and top-to-bottom.
+To do this, use the second group of four sorted-movement requests.</P
+><P
+>Finally, it is possible to move between fields using visual directions up,
+down, right, and left. To accomplish this, use the third group of four
+requests. Note, however, that the position of a form for purposes of these
+requests is its upper-left corner.</P
+><P
+>For example, suppose you have a multi-line field B, and two single-line
+fields A and C on the same line with B, with A to the left of B and C to the
+right of B. A REQ_MOVE_RIGHT from A will go to B only if A, B, and C all
+share the same first line; otherwise it will skip over B to C.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="INTRAFIELDNAVREQ"
+>18.6.3. Intra-Field Navigation Requests</A
+></H4
+><P
+>These requests drive movement of the edit cursor within the currently
+selected field.</P
+><P
+></P
+><UL
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_NEXT_CHAR</I
+></SPAN
+>
+ Move to next character. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_PREV_CHAR</I
+></SPAN
+>
+ Move to previous character. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_NEXT_LINE</I
+></SPAN
+>
+ Move to next line. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_PREV_LINE</I
+></SPAN
+>
+ Move to previous line. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_NEXT_WORD</I
+></SPAN
+>
+ Move to next word. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_PREV_WORD</I
+></SPAN
+>
+ Move to previous word. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_BEG_FIELD</I
+></SPAN
+>
+ Move to beginning of field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_END_FIELD</I
+></SPAN
+>
+ Move to end of field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_BEG_LINE</I
+></SPAN
+>
+ Move to beginning of line. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_END_LINE</I
+></SPAN
+>
+ Move to end of line. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_LEFT_CHAR</I
+></SPAN
+>
+ Move left in field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_RIGHT_CHAR</I
+></SPAN
+>
+ Move right in field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_UP_CHAR</I
+></SPAN
+>
+ Move up in field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_DOWN_CHAR</I
+></SPAN
+>
+ Move down in field. </P
+></LI
+></UL
+><P
+>Each word is separated from the previous and next characters by whitespace.
+The commands to move to beginning and end of line or field look for the
+first or last non-pad character in their ranges.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="SCROLLREQ"
+>18.6.4. Scrolling Requests</A
+></H4
+><P
+>Fields that are dynamic and have grown and fields explicitly created with
+offscreen rows are scrollable. One-line fields scroll horizontally;
+multi-line fields scroll vertically. Most scrolling is triggered by editing
+and intra-field movement (the library scrolls the field to keep the cursor
+visible). It is possible to explicitly request scrolling with the following
+requests:</P
+><P
+></P
+><UL
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_FLINE</I
+></SPAN
+>
+ Scroll vertically forward a line. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_BLINE</I
+></SPAN
+>
+ Scroll vertically backward a line. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_FPAGE</I
+></SPAN
+>
+ Scroll vertically forward a page. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_BPAGE</I
+></SPAN
+>
+ Scroll vertically backward a page. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_FHPAGE</I
+></SPAN
+>
+ Scroll vertically forward half a page. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_BHPAGE</I
+></SPAN
+>
+ Scroll vertically backward half a page. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_FCHAR</I
+></SPAN
+>
+ Scroll horizontally forward a character. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_BCHAR</I
+></SPAN
+>
+ Scroll horizontally backward a character. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_HFLINE</I
+></SPAN
+>
+ Scroll horizontally one field width forward. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_HBLINE</I
+></SPAN
+>
+ Scroll horizontally one field width backward. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_HFHALF</I
+></SPAN
+>
+ Scroll horizontally one half field width forward. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_SCR_HBHALF</I
+></SPAN
+>
+ Scroll horizontally one half field width backward. </P
+></LI
+></UL
+><P
+>For scrolling purposes, a page of a field is the height of its visible part.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="EDITREQ"
+>18.6.5. Editing Requests</A
+></H4
+><P
+>When you pass the forms driver an ASCII character, it is treated as a
+request to add the character to the field's data buffer. Whether this is an
+insertion or a replacement depends on the field's edit mode (insertion is
+the default.</P
+><P
+>The following requests support editing the field and changing the edit mode:</P
+><P
+></P
+><UL
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_INS_MODE</I
+></SPAN
+>
+ Set insertion mode. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_OVL_MODE</I
+></SPAN
+>
+ Set overlay mode. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_NEW_LINE</I
+></SPAN
+>
+ New line request (see below for explanation). </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_INS_CHAR</I
+></SPAN
+>
+ Insert space at character location. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_INS_LINE</I
+></SPAN
+>
+ Insert blank line at character location. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_DEL_CHAR</I
+></SPAN
+>
+ Delete character at cursor. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_DEL_PREV</I
+></SPAN
+>
+ Delete previous word at cursor. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_DEL_LINE</I
+></SPAN
+>
+ Delete line at cursor. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_DEL_WORD</I
+></SPAN
+>
+ Delete word at cursor. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_CLR_EOL</I
+></SPAN
+>
+ Clear to end of line. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_CLR_EOF</I
+></SPAN
+>
+ Clear to end of field. </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_CLR_FIELD</I
+></SPAN
+>
+ Clear entire field. </P
+></LI
+></UL
+><P
+>The behavior of the REQ_NEW_LINE and REQ_DEL_PREV requests is complicated
+and partly controlled by a pair of forms options. The special cases are
+triggered when the cursor is at the beginning of a field, or on the last
+line of the field.</P
+><P
+>First, we consider REQ_NEW_LINE:</P
+><P
+>The normal behavior of REQ_NEW_LINE in insert mode is to break the current
+line at the position of the edit cursor, inserting the portion of the
+current line after the cursor as a new line following the current and moving
+the cursor to the beginning of that new line (you may think of this as
+inserting a newline in the field buffer).</P
+><P
+>The normal behavior of REQ_NEW_LINE in overlay mode is to clear the current
+line from the position of the edit cursor to end of line. The cursor is then
+moved to the beginning of the next line.</P
+><P
+>However, REQ_NEW_LINE at the beginning of a field, or on the last line of a
+field, instead does a REQ_NEXT_FIELD. O_NL_OVERLOAD option is off, this
+special action is disabled.</P
+><P
+>Now, let us consider REQ_DEL_PREV:</P
+><P
+>The normal behavior of REQ_DEL_PREV is to delete the previous character. If
+insert mode is on, and the cursor is at the start of a line, and the text on
+that line will fit on the previous one, it instead appends the contents of
+the current line to the previous one and deletes the current line (you may
+think of this as deleting a newline from the field buffer).</P
+><P
+>However, REQ_DEL_PREV at the beginning of a field is instead treated as a
+REQ_PREV_FIELD.</P
+><P
+>If the O_BS_OVERLOAD option is off, this special action is disabled and the
+forms driver just returns E_REQUEST_DENIED.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="ORDERREQ"
+>18.6.6. Order Requests</A
+></H4
+><P
+>If the type of your field is ordered, and has associated functions for
+getting the next and previous values of the type from a given value, there
+are requests that can fetch that value into the field buffer:</P
+><P
+></P
+><UL
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_NEXT_CHOICE</I
+></SPAN
+>
+ Place the successor value of the current value in the buffer.
+ </P
+></LI
+><LI
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>REQ_PREV_CHOICE</I
+></SPAN
+>
+ Place the predecessor value of the current value in the buffer.
+ </P
+></LI
+></UL
+><P
+>Of the built-in field types, only TYPE_ENUM has built-in successor and
+predecessor functions. When you define a field type of your own (see Custom
+Validation Types), you can associate our own ordering functions.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="APPLICCOMMANDS"
+>18.6.7. Application Commands</A
+></H4
+><P
+>Form requests are represented as integers above the curses value greater than
+KEY_MAX and less than or equal to the constant MAX_COMMAND. A value within this
+range gets ignored by form_driver(). So this can be used for any purpose by the
+application. It can be treated as an application specific action and take
+corresponding action.</P
+></DIV
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="TOOLS"
+>19. Tools and Widget Libraries</A
+></H2
+><P
+>
+Now that you have seen the capabilities of ncurses and its sister libraries, you
+are rolling your sleeves up and gearing for a project that heavily manipulates
+screen. But wait.. It can be pretty difficult to write and maintain complex GUI
+widgets in plain ncurses or even with the additional libraries. There are some
+ready-to-use tools and widget libraries that can be used instead of writing your
+own widgets. You can use some of them, get ideas from the code, or even extend
+them.</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="CDK"
+>19.1. CDK (Curses Development Kit)</A
+></H3
+><P
+>In the author's words </P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>
+CDK stands for 'Curses Development Kit' and it currently contains 21 ready
+to use widgets which facilitate the speedy development of full screen
+curses programs. </I
+></SPAN
+></P
+><P
+>The kit provides some useful widgets, which can be used in your programs
+directly. It's pretty well written and the documentation is very good. The
+examples in the examples directory can be a good place to start for beginners.
+The CDK can be downloaded from <A
+HREF="http://invisible-island.net/cdk/"
+TARGET="_top"
+>http://invisible-island.net/cdk/</A
+>
+. Follow the instructions in
+README file to install it.</P
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="WIDGETLIST"
+>19.1.1. Widget List</A
+></H4
+><P
+>The following is the list of widgets provided with cdk and their description.</P
+><PRE
+CLASS="PROGRAMLISTING"
+>Widget Type Quick Description
===========================================================================
Alphalist Allows a user to select from a list of words, with
the ability to narrow the search list by typing in a
@@ -6199,215 +8368,346 @@ Template Creates a entry field with character sensitive
dates and phone numbers.
Viewer This is a file/information viewer. Very useful
when you need to display loads of information.
-===========================================================================</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
+===========================================================================</PRE
+><P
+>A few of the widgets are modified by Thomas Dickey in recent versions.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="CDKATTRACT"
+>19.1.2. Some Attractive Features</A
+></H4
+><P
+>Apart from making our life easier with readily usable widgets, cdk solves one
+frustrating problem with printing multi colored strings, justified strings
+elegantly. Special formatting tags can be embedded in the strings which are
+passed to CDK functions. For Example</P
+><P
+>If the string</P
+><PRE
+CLASS="PROGRAMLISTING"
+>"&lt;/B/1&gt;This line should have a yellow foreground and a blue
+background.&lt;!1&gt;"</PRE
+><P
+>given as a parameter to newCDKLabel(), it prints the line with yellow foreground
+and blue background. There are other tags available for justifying string,
+embedding special drawing characters etc.. Please refer to the man page
+cdk_display(3X) for details. The man page explains the usage with nice examples.</P
+></DIV
+><DIV
+CLASS="SECT3"
+><HR><H4
+CLASS="SECT3"
+><A
+NAME="CDKCONCLUSION"
+>19.1.3. Conclusion</A
+></H4
+><P
+>All in all, CDK is a well-written package of widgets, which if used properly can
+form a strong frame work for developing complex GUI.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="DIALOG"
+>19.2. The dialog</A
+></H3
+><P
+>Long long ago, in September 1994, when few people knew linux, Jeff Tranter wrote
+an <A
+HREF="http://www2.linuxjournal.com/lj-issues/issue5/2807.html"
+TARGET="_top"
+>article</A
+> on dialog in Linux Journal. He starts the article with these words..</P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>Linux is based on the Unix operating system, but also features a number of
+unique and useful kernel features and application programs that often go beyond
+what is available under Unix. One little-known gem is "dialog", a utility for
+creating professional-looking dialog boxes from within shell scripts. This
+article presents a tutorial introduction to the dialog utility, and shows
+examples of how and where it can be used</I
+></SPAN
+></P
+><P
+>
+As he explains, dialog is a real gem in making professional-looking dialog boxes
+with ease. It creates a variety of dialog boxes, menus, check lists etc.. It is
+usually installed by default. If not, you can download it from <A
+HREF="http://invisible-island.net/dialog/"
+TARGET="_top"
+>Thomas Dickey</A
+>'s site. </P
+><P
+>The above-mentioned article gives a very good overview of its uses and
+capabilites. The man page has more details. It can be used in variety of
+situations. One good example is building of linux kernel in text mode. Linux
+kernel uses a modified version of dialog tailored for its needs. </P
+><P
+>dialog was initially designed to be used with shell scripts. If you want to use
+its functionality in a c program, then you can use libdialog. The documentation
+regarding this is sparse. Definitive reference is the dialog.h header file which
+comes with the library. You may need to hack here and there to get the required
+output. The source is easily customizable. I have used it on a number of
+occasions by modifying the code.</P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="PERLCURSES"
+>19.3. Perl Curses Modules CURSES::FORM and CURSES::WIDGETS</A
+></H3
+><P
+>The perl module Curses, Curses::Form and Curses::Widgets give access to curses
+from perl. If you have curses and basic perl is installed, you can get these
+modules from <A
+HREF="http://www.cpan.org/modules/01modules.index.html"
+TARGET="_top"
+> CPAN
+All Modules page</A
+>. Get the three zipped modules in the Curses category.
+Once installed you can use these modules from perl scripts like any other
+module. For more information on perl modules see perlmod man page. The above
+modules come with good documentation and they have some demo scripts to test the
+functionality. Though the widgets provided are very rudimentary, these modules
+provide good access to curses library from perl.</P
+><P
+>Some of my code examples are converted to perl by Anuradha Ratnaweera and they
+are available in the <TT
+CLASS="LITERAL"
+>perl</TT
+> directory.</P
+><P
+>
+For more information see man pages Curses(3) , Curses::Form(3) and
+Curses::Widgets(3). These pages are installed only when the above modules are
+acquired and installed.</P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="JUSTFORFUN"
+>20. Just For Fun !!!</A
+></H2
+><P
+>This section contains few programs written by me just for fun. They don't
+signify a better programming practice or the best way of using ncurses. They are
+provided here so as to allow beginners to get ideas and add more programs to
+this section. If you have written a couple of nice, simple programs in curses
+and want them to included here, contact <A
+HREF="mailto:ppadala@gmail.com"
+TARGET="_top"
+>me</A
+>.</P
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="GAMEOFLIFE"
+>20.1. The Game of Life</A
+></H3
+><P
+>Game of life is a wonder of math. In
+<A
+HREF="http://www.math.com/students/wonders/life/life.html"
+TARGET="_top"
+>Paul Callahan</A
+>'s words</P
+><PRE
+CLASS="PROGRAMLISTING"
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>The Game of Life (or simply Life) is not a game in the conventional sense. There
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>
+only way to find out is to follow the rules of the game.</I
+></SPAN
+></PRE
+><P
+>This program starts with a simple inverted U pattern and shows how wonderful
+life works. There is a lot of room for improvement in the program. You can let
+the user enter pattern of his choice or even take input from a file. You can
+also change rules and play with a lot of variations. Search on <A
+HREF="http://www.google.com"
+TARGET="_top"
+>google</A
+> for interesting information on game
+of life.</P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>File Path: JustForFun/life.c</I
+></SPAN
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="MAGIC"
+>20.2. Magic Square</A
+></H3
+><P
+>Magic Square, another wonder of math, is very simple to understand but very
+difficult to make. In a magic square sum of the numbers in each row, each column
+is equal. Even diagnol sum can be equal. There are many variations which have
+special properties.</P
+><P
+>This program creates a simple magic square of odd order.</P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>File Path: JustForFun/magic.c</I
+></SPAN
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="HANOI"
+>20.3. Towers of Hanoi</A
+></H3
+><P
+>The famous towers of hanoi solver. The aim of the game is to move the disks on
+the first peg to last peg, using middle peg as a temporary stay. The catch is
+not to place a larger disk over a small disk at any time.</P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>File Path: JustForFun/hanoi.c</I
+></SPAN
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="QUEENS"
+>20.4. Queens Puzzle</A
+></H3
+><P
+>The objective of the famous N-Queen puzzle is to put N queens on a N X N chess
+board without attacking each other. </P
+><P
+>This program solves it with a simple backtracking technique.</P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>File Path: JustForFun/queens.c</I
+></SPAN
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="SHUFFLE"
+>20.5. Shuffle</A
+></H3
+><P
+>A fun game, if you have time to kill. </P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>File Path: JustForFun/shuffle.c</I
+></SPAN
+></P
+></DIV
+><DIV
+CLASS="SECT2"
+><HR><H3
+CLASS="SECT2"
+><A
+NAME="TT"
+>20.6. Typing Tutor</A
+></H3
+><P
+>A simple typing tutor, I created more out of need than for ease of use. If you
+know how to put your fingers correctly on the keyboard, but lack practice, this
+can be helpful. </P
+><P
+><SPAN
+CLASS="emphasis"
+><I
+CLASS="EMPHASIS"
+>File Path: JustForFun/tt.c</I
+></SPAN
+></P
+></DIV
+></DIV
+><DIV
+CLASS="SECT1"
+><HR><H2
+CLASS="SECT1"
+><A
+NAME="REF"
+>21. References</A
+></H2
+><P
+></P
+><UL
+><LI
+><P
+>NCURSES man pages </P
+></LI
+><LI
+><P
+>NCURSES FAQ at <A
+HREF="http://invisible-island.net/ncurses/ncurses.faq.html"
+TARGET="_top"
+>http://invisible-island.net/ncurses/ncurses.faq.html</A
+>
+ </P
+></LI
+><LI
+><P
+>Writing programs with NCURSES by Eric Raymond and Zeyd M.
+Ben-Halim at
+<A
+HREF="http://invisible-island.net/ncurses/ncurses-intro.html"
+TARGET="_top"
+>http://invisible-island.net/ncurses/ncurses-intro.html</A
+> - somewhat
+obsolete. I was inspired by this document and the structure of this HOWTO
+follows from the original document</P
+></LI
+></UL
+></DIV
+></DIV
+></BODY
+></HTML
+> \ No newline at end of file
diff --git a/contrib/ncurses/doc/html/announce.html b/contrib/ncurses/doc/html/announce.html
index 961e7571cf61..ffc115de1e66 100644
--- a/contrib/ncurses/doc/html/announce.html
+++ b/contrib/ncurses/doc/html/announce.html
@@ -1,6 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
- $Id: announce.html,v 1.55 2011/04/04 09:46:33 tom Exp $
+ $Id: announce.html,v 1.56 2013/05/17 23:34:26 tom Exp $
****************************************************************************
* Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
* *
diff --git a/contrib/ncurses/doc/html/hackguide.html b/contrib/ncurses/doc/html/hackguide.html
index 417f4c9855e3..84370809ebf3 100644
--- a/contrib/ncurses/doc/html/hackguide.html
+++ b/contrib/ncurses/doc/html/hackguide.html
@@ -1,8 +1,8 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
- $Id: hackguide.html,v 1.28 2010/12/04 16:44:21 tom Exp $
+ $Id: hackguide.html,v 1.29 2013/05/17 23:29:18 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
diff --git a/contrib/ncurses/doc/html/ncurses-intro.html b/contrib/ncurses/doc/html/ncurses-intro.html
index fc529f293e23..a6cd40c74ddb 100644
--- a/contrib/ncurses/doc/html/ncurses-intro.html
+++ b/contrib/ncurses/doc/html/ncurses-intro.html
@@ -1,8 +1,8 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!--
- $Id: ncurses-intro.html,v 1.44 2010/12/04 16:46:22 tom Exp $
+ $Id: ncurses-intro.html,v 1.46 2013/05/17 23:29:27 tom Exp $
****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -431,6 +431,7 @@ mentioned above. <P>
Here is a sample program to motivate the discussion:
<PRE>
+#include &lt;stdlib.h&gt;
#include &lt;curses.h&gt;
#include &lt;signal.h&gt;
diff --git a/contrib/ncurses/doc/ncurses-intro.doc b/contrib/ncurses/doc/ncurses-intro.doc
index 85179d166696..b44800503a32 100644
--- a/contrib/ncurses/doc/ncurses-intro.doc
+++ b/contrib/ncurses/doc/ncurses-intro.doc
@@ -333,6 +333,7 @@ Using the Library
Here is a sample program to motivate the discussion:
#include <curses.h>
+#include <curses.h>
#include <signal.h>
static void finish(int sig);
diff --git a/contrib/ncurses/form/Makefile.in b/contrib/ncurses/form/Makefile.in
index 1a07e140d3e9..2a8db8d54bd6 100644
--- a/contrib/ncurses/form/Makefile.in
+++ b/contrib/ncurses/form/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.53 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.56 2013/08/04 20:23:20 tom Exp $
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -57,6 +57,9 @@ exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
includedir = @includedir@
+includesubdir = @includesubdir@
+
+INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
LIBTOOL = @LIBTOOL@
LIBTOOL_CLEAN = @LIB_CLEAN@
@@ -102,6 +105,7 @@ LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
+RPATH_LIST = @RPATH_LIST@
MK_SHARED_LIB = @MK_SHARED_LIB@
NCURSES_MAJOR = @NCURSES_MAJOR@
@@ -111,7 +115,7 @@ ABI_VERSION = @cf_cv_abi_version@
RANLIB = @LIB_PREP@
-LIBRARIES = @LIBS_TO_MAKE@
+LIBRARIES = @Libs_To_Make@
LINT = @LINT@
LINT_OPTS = @LINT_OPTS@
diff --git a/contrib/ncurses/form/fld_arg.c b/contrib/ncurses/form/fld_arg.c
index a07bdb195900..001c1d157a00 100644
--- a/contrib/ncurses/form/fld_arg.c
+++ b/contrib/ncurses/form/fld_arg.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_arg.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
+MODULE_ID("$Id: fld_arg.c,v 1.13 2012/06/10 00:27:49 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -71,7 +71,7 @@ set_fieldtype_arg(FIELDTYPE *typ,
if (typ != 0 && make_arg != (void *)0)
{
- typ->status |= _HAS_ARGS;
+ SetStatus(typ, _HAS_ARGS);
typ->makearg = make_arg;
typ->copyarg = copy_arg;
typ->freearg = free_arg;
diff --git a/contrib/ncurses/form/fld_def.c b/contrib/ncurses/form/fld_def.c
index 6d7bd34a16ca..681a3713e8c7 100644
--- a/contrib/ncurses/form/fld_def.c
+++ b/contrib/ncurses/form/fld_def.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_def.c,v 1.38 2010/01/23 21:14:35 tom Exp $")
+MODULE_ID("$Id: fld_def.c,v 1.40 2012/03/11 00:37:16 tom Exp $")
/* this can't be readonly */
static FIELD default_field =
@@ -65,8 +65,7 @@ static FIELD default_field =
NCURSES_FIELD_EXTENSION
};
-NCURSES_EXPORT_VAR(FIELD *)
-_nc_Default_Field = &default_field;
+NCURSES_EXPORT_VAR(FIELD *) _nc_Default_Field = &default_field;
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -186,10 +185,12 @@ _nc_Free_Argument(const FIELDTYPE *typ, TypeArgument *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);
+ if (argp != 0)
+ {
+ _nc_Free_Argument(typ->left, argp->left);
+ _nc_Free_Argument(typ->right, argp->right);
+ free(argp);
+ }
}
else
{
@@ -293,14 +294,14 @@ new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf)
{
T((T_CREATE("field %p"), (void *)New_Field));
*New_Field = default_field;
- New_Field->rows = rows;
- New_Field->cols = cols;
+ New_Field->rows = (short) rows;
+ New_Field->cols = (short) cols;
New_Field->drows = rows + nrow;
New_Field->dcols = cols;
- New_Field->frow = frow;
- New_Field->fcol = fcol;
+ New_Field->frow = (short) frow;
+ New_Field->fcol = (short) fcol;
New_Field->nrow = nrow;
- New_Field->nbuf = nbuf;
+ New_Field->nbuf = (short) nbuf;
New_Field->link = New_Field;
#if USE_WIDEC_SUPPORT
diff --git a/contrib/ncurses/form/fld_dup.c b/contrib/ncurses/form/fld_dup.c
index b8e501b38329..2df40ee0590e 100644
--- a/contrib/ncurses/form/fld_dup.c
+++ b/contrib/ncurses/form/fld_dup.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_dup.c,v 1.13 2010/01/23 21:14:35 tom Exp $")
+MODULE_ID("$Id: fld_dup.c,v 1.14 2012/03/11 00:37:16 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -60,8 +60,8 @@ dup_field(FIELD *field, int frow, int fcol)
{
T((T_CREATE("field %p"), (void *)New_Field));
*New_Field = *_nc_Default_Field;
- New_Field->frow = frow;
- New_Field->fcol = fcol;
+ New_Field->frow = (short) frow;
+ New_Field->fcol = (short) fcol;
New_Field->link = New_Field;
New_Field->rows = field->rows;
New_Field->cols = field->cols;
diff --git a/contrib/ncurses/form/fld_ftchoice.c b/contrib/ncurses/form/fld_ftchoice.c
index 3aac5be2b158..090130678f95 100644
--- a/contrib/ncurses/form/fld_ftchoice.c
+++ b/contrib/ncurses/form/fld_ftchoice.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_ftchoice.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
+MODULE_ID("$Id: fld_ftchoice.c,v 1.13 2012/06/10 00:27:49 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -56,7 +56,7 @@ set_fieldtype_choice(FIELDTYPE *typ,
if (!typ || !next_choice || !prev_choice)
RETURN(E_BAD_ARGUMENT);
- typ->status |= _HAS_CHOICE;
+ SetStatus(typ, _HAS_CHOICE);
#if NCURSES_INTEROP_FUNCS
typ->enum_next.onext = next_choice;
typ->enum_prev.oprev = prev_choice;
diff --git a/contrib/ncurses/form/fld_ftlink.c b/contrib/ncurses/form/fld_ftlink.c
index c2cd251f42a7..e7b1440ac538 100644
--- a/contrib/ncurses/form/fld_ftlink.c
+++ b/contrib/ncurses/form/fld_ftlink.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_ftlink.c,v 1.14 2010/01/23 21:14:35 tom Exp $")
+MODULE_ID("$Id: fld_ftlink.c,v 1.15 2012/06/10 00:27:49 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -62,11 +62,11 @@ link_fieldtype(FIELDTYPE *type1, FIELDTYPE *type2)
{
T((T_CREATE("fieldtype %p"), (void *)nftyp));
*nftyp = *_nc_Default_FieldType;
- nftyp->status |= _LINKED_TYPE;
+ SetStatus(nftyp, _LINKED_TYPE);
if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS))
- nftyp->status |= _HAS_ARGS;
+ SetStatus(nftyp, _HAS_ARGS);
if ((type1->status & _HAS_CHOICE) || (type2->status & _HAS_CHOICE))
- nftyp->status |= _HAS_CHOICE;
+ SetStatus(nftyp, _HAS_CHOICE);
nftyp->left = type1;
nftyp->right = type2;
type1->ref++;
diff --git a/contrib/ncurses/form/fld_just.c b/contrib/ncurses/form/fld_just.c
index 58a1750cc092..dea20b79b41c 100644
--- a/contrib/ncurses/form/fld_just.c
+++ b/contrib/ncurses/form/fld_just.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_just.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
+MODULE_ID("$Id: fld_just.c,v 1.13 2012/03/11 00:37:16 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -59,7 +59,7 @@ set_field_just(FIELD *field, int just)
Normalize_Field(field);
if (field->just != just)
{
- field->just = just;
+ field->just = (short) just;
res = _nc_Synchronize_Attributes(field);
}
else
diff --git a/contrib/ncurses/form/fld_link.c b/contrib/ncurses/form/fld_link.c
index 18103bee1910..b6c47680aa87 100644
--- a/contrib/ncurses/form/fld_link.c
+++ b/contrib/ncurses/form/fld_link.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_link.c,v 1.12 2010/01/23 21:14:35 tom Exp $")
+MODULE_ID("$Id: fld_link.c,v 1.13 2012/03/11 00:37:16 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -61,8 +61,8 @@ link_field(FIELD *field, int frow, int fcol)
{
T((T_CREATE("field %p"), (void *)New_Field));
*New_Field = *_nc_Default_Field;
- New_Field->frow = frow;
- New_Field->fcol = fcol;
+ New_Field->frow = (short) frow;
+ New_Field->fcol = (short) fcol;
New_Field->link = field->link;
field->link = New_Field;
diff --git a/contrib/ncurses/form/fld_max.c b/contrib/ncurses/form/fld_max.c
index 5ce918e4e079..6c7fe728bd98 100644
--- a/contrib/ncurses/form/fld_max.c
+++ b/contrib/ncurses/form/fld_max.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_max.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: fld_max.c,v 1.13 2013/08/24 22:59:28 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -62,13 +62,13 @@ set_max_field(FIELD *field, int maxgrow)
RETURN(E_BAD_ARGUMENT);
}
field->maxgrow = maxgrow;
- field->status &= ~_MAY_GROW;
- if (!(field->opts & O_STATIC))
+ ClrStatus(field, _MAY_GROW);
+ if (!((unsigned)field->opts & O_STATIC))
{
if ((maxgrow == 0) ||
(single_line_field && (field->dcols < maxgrow)) ||
(!single_line_field && (field->drows < maxgrow)))
- field->status |= _MAY_GROW;
+ SetStatus(field, _MAY_GROW);
}
}
RETURN(E_OK);
diff --git a/contrib/ncurses/form/fld_move.c b/contrib/ncurses/form/fld_move.c
index dfba22d72aaa..99f549041b56 100644
--- a/contrib/ncurses/form/fld_move.c
+++ b/contrib/ncurses/form/fld_move.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_move.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: fld_move.c,v 1.11 2012/03/11 00:37:16 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -56,8 +56,8 @@ move_field(FIELD *field, int frow, int fcol)
if (field->form)
RETURN(E_CONNECTED);
- field->frow = frow;
- field->fcol = fcol;
+ field->frow = (short) frow;
+ field->fcol = (short) fcol;
RETURN(E_OK);
}
diff --git a/contrib/ncurses/form/fld_page.c b/contrib/ncurses/form/fld_page.c
index e4d18c556be6..bcce4cf1fca2 100644
--- a/contrib/ncurses/form/fld_page.c
+++ b/contrib/ncurses/form/fld_page.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_page.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: fld_page.c,v 1.12 2012/06/10 00:12:47 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -54,9 +54,9 @@ set_new_page(FIELD *field, bool new_page_flag)
RETURN(E_CONNECTED);
if (new_page_flag)
- field->status |= _NEWPAGE;
+ SetStatus(field, _NEWPAGE);
else
- field->status &= ~_NEWPAGE;
+ ClrStatus(field, _NEWPAGE);
RETURN(E_OK);
}
diff --git a/contrib/ncurses/form/fld_stat.c b/contrib/ncurses/form/fld_stat.c
index 46f89e674836..9bbe76e0b169 100644
--- a/contrib/ncurses/form/fld_stat.c
+++ b/contrib/ncurses/form/fld_stat.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fld_stat.c,v 1.12 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: fld_stat.c,v 1.14 2012/06/10 00:13:09 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -51,9 +51,9 @@ set_field_status(FIELD *field, bool status)
Normalize_Field(field);
if (status)
- field->status |= _CHANGED;
+ SetStatus(field, _CHANGED);
else
- field->status &= ~_CHANGED;
+ ClrStatus(field, _CHANGED);
RETURN(E_OK);
}
diff --git a/contrib/ncurses/form/form.h b/contrib/ncurses/form/form.h
index f52893b952d6..f1a6635ec5e7 100644
--- a/contrib/ncurses/form/form.h
+++ b/contrib/ncurses/form/form.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -30,7 +30,7 @@
* Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
-/* $Id: form.h,v 0.21 2009/11/07 19:31:11 tom Exp $ */
+/* $Id: form.h,v 0.23 2013/12/07 17:57:32 tom Exp $ */
#ifndef FORM_H
#define FORM_H
@@ -396,6 +396,9 @@ extern NCURSES_EXPORT(int) post_form (FORM *);
extern NCURSES_EXPORT(int) unpost_form (FORM *);
extern NCURSES_EXPORT(int) pos_form_cursor (FORM *);
extern NCURSES_EXPORT(int) form_driver (FORM *,int);
+# if NCURSES_WIDECHAR
+extern NCURSES_EXPORT(int) form_driver_w (FORM *,int,wchar_t);
+# endif
extern NCURSES_EXPORT(int) set_form_userptr (FORM *,void *);
extern NCURSES_EXPORT(int) set_form_opts (FORM *,Form_Options);
extern NCURSES_EXPORT(int) form_opts_on (FORM *,Form_Options);
diff --git a/contrib/ncurses/form/form.priv.h b/contrib/ncurses/form/form.priv.h
index 49250b4e5b3b..38dd8caa263e 100644
--- a/contrib/ncurses/form/form.priv.h
+++ b/contrib/ncurses/form/form.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -30,11 +30,11 @@
* Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
-/* $Id: form.priv.h,v 0.32 2009/11/07 21:26:43 tom Exp $ */
+/* $Id: form.priv.h,v 0.33 2012/03/11 00:37:46 tom Exp $ */
#ifndef FORM_PRIV_H
#define FORM_PRIV_H 1
-
+/* *INDENT-OFF*/
#include "curses.priv.h"
#include "mf_common.h"
@@ -119,7 +119,7 @@ extern NCURSES_EXPORT_VAR(FIELDTYPE *) _nc_Default_FieldType;
/* Calculate the total size of all buffers for this field */
#define Total_Buffer_Size(field) \
- ( (Buffer_Length(field) + 1) * (1+(field)->nbuf) * sizeof(FIELD_CELL) )
+ ( (size_t)(Buffer_Length(field) + 1) * (size_t)(1+(field)->nbuf) * sizeof(FIELD_CELL) )
/* Logic to determine whether or not a field is single lined */
#define Single_Line_Field(field) \
@@ -293,5 +293,6 @@ extern NCURSES_EXPORT(Form_Hook) _nc_retrace_form_hook (Form_Hook);
result = ((*buffer || (l < width)) ? FALSE : TRUE); \
}
#endif
+/* *INDENT-ON*/
#endif /* FORM_PRIV_H */
diff --git a/contrib/ncurses/form/frm_data.c b/contrib/ncurses/form/frm_data.c
index 93917d5bbea1..a936060d6c2d 100644
--- a/contrib/ncurses/form/frm_data.c
+++ b/contrib/ncurses/form/frm_data.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_data.c,v 1.15 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: frm_data.c,v 1.16 2013/08/24 22:44:05 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -103,7 +103,7 @@ Only_Padding(WINDOW *w, int len, int pad)
}
}
#else
- cell = winch(w);
+ cell = (FIELD_CELL) winch(w);
if (ChCharOf(cell) != ChCharOf(pad))
{
result = FALSE;
diff --git a/contrib/ncurses/form/frm_def.c b/contrib/ncurses/form/frm_def.c
index 86500f239863..fd7b56a421c5 100644
--- a/contrib/ncurses/form/frm_def.c
+++ b/contrib/ncurses/form/frm_def.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_def.c,v 1.25 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: frm_def.c,v 1.26 2012/03/11 00:37:16 tom Exp $")
/* this can't be readonly */
static FORM default_form =
@@ -199,14 +199,14 @@ Connect_Fields(FORM *form, FIELD **fields)
for (j = 0; j < field_cnt; j++)
{
if (j == 0)
- pg->pmin = j;
+ pg->pmin = (short) j;
else
{
if (fields[j]->status & _NEWPAGE)
{
- pg->pmax = j - 1;
+ pg->pmax = (short) (j - 1);
pg++;
- pg->pmin = j;
+ pg->pmin = (short) j;
}
}
@@ -214,14 +214,14 @@ Connect_Fields(FORM *form, FIELD **fields)
maximum_col_in_field = fields[j]->fcol + fields[j]->cols;
if (form->rows < maximum_row_in_field)
- form->rows = maximum_row_in_field;
+ form->rows = (short) maximum_row_in_field;
if (form->cols < maximum_col_in_field)
- form->cols = maximum_col_in_field;
+ form->cols = (short) maximum_col_in_field;
}
- pg->pmax = field_cnt - 1;
- form->maxfield = field_cnt;
- form->maxpage = page_nr;
+ pg->pmax = (short) (field_cnt - 1);
+ form->maxfield = (short) field_cnt;
+ form->maxpage = (short) page_nr;
/* Sort fields on form pages */
for (page_nr = 0; page_nr < form->maxpage; page_nr++)
@@ -230,8 +230,8 @@ Connect_Fields(FORM *form, FIELD **fields)
for (j = form->page[page_nr].pmin; j <= form->page[page_nr].pmax; j++)
{
- fields[j]->index = j;
- fields[j]->page = page_nr;
+ fields[j]->index = (short) j;
+ fields[j]->page = (short) page_nr;
fld = Insert_Field_By_Position(fields[j], fld);
}
if (fld)
diff --git a/contrib/ncurses/form/frm_driver.c b/contrib/ncurses/form/frm_driver.c
index e0892bf8d4f2..ed561bf1e9e5 100644
--- a/contrib/ncurses/form/frm_driver.c
+++ b/contrib/ncurses/form/frm_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_driver.c,v 1.98 2010/05/01 21:11:43 tom Exp $")
+MODULE_ID("$Id: frm_driver.c,v 1.110 2014/02/10 00:42:48 tom Exp $")
/*----------------------------------------------------------------------------
This is the core module of the form library. It contains the majority
@@ -172,7 +172,7 @@ static int FE_Delete_Previous(FORM *);
instead of a derived window because it contains invisible parts.
This is true for non-public fields and for scrollable fields. */
#define Has_Invisible_Parts(field) \
- (!((field)->opts & O_PUBLIC) || \
+ (!((unsigned)(field)->opts & O_PUBLIC) || \
Is_Scroll_Field(field))
/* Logic to decide whether or not a field needs justification */
@@ -180,21 +180,21 @@ static int FE_Delete_Previous(FORM *);
(((field)->just != NO_JUSTIFICATION) && \
(Single_Line_Field(field)) && \
(((field)->dcols == (field)->cols) && \
- ((field)->opts & O_STATIC)) )
+ ((unsigned)(field)->opts & O_STATIC)))
/* Logic to determine whether or not a dynamic field may still grow */
#define Growable(field) ((field)->status & _MAY_GROW)
/* Macro to set the attributes for a fields window */
#define Set_Field_Window_Attributes(field,win) \
-( wbkgdset((win),(chtype)((field)->pad | (field)->back)), \
- (void) wattrset((win),(field)->fore) )
+( wbkgdset((win),(chtype)((chtype)((field)->pad) | (field)->back)), \
+ (void) wattrset((win), (int)(field)->fore) )
/* Logic to decide whether or not a field really appears on the form */
#define Field_Really_Appears(field) \
((field->form) &&\
(field->form->status & _POSTED) &&\
- (field->opts & O_VISIBLE) &&\
+ ((unsigned)field->opts & O_VISIBLE) &&\
(field->page == field->form->curpage))
/* Logic to determine whether or not we are on the first position in the
@@ -601,8 +601,8 @@ Synchronize_Buffer(FORM *form)
{
if (form->status & _WINDOW_MODIFIED)
{
- form->status &= ~_WINDOW_MODIFIED;
- form->status |= _FCHECK_REQUIRED;
+ ClrStatus(form, _WINDOW_MODIFIED);
+ SetStatus(form, _FCHECK_REQUIRED);
Window_To_Buffer(form, form->current);
wmove(form->w, form->currow, form->curcol);
}
@@ -653,7 +653,7 @@ Field_Grown(FIELD *field, int amount)
growth = Minimum(field->maxgrow - field->dcols, growth);
field->dcols += growth;
if (field->dcols == field->maxgrow)
- field->status &= ~_MAY_GROW;
+ ClrStatus(field, _MAY_GROW);
}
else
{
@@ -662,7 +662,7 @@ Field_Grown(FIELD *field, int amount)
growth = Minimum(field->maxgrow - field->drows, growth);
field->drows += growth;
if (field->drows == field->maxgrow)
- field->status &= ~_MAY_GROW;
+ ClrStatus(field, _MAY_GROW);
}
/* drows, dcols changed, so we get really the new buffer length */
new_buflen = Buffer_Length(field);
@@ -674,7 +674,7 @@ Field_Grown(FIELD *field, int amount)
field->drows = old_drows;
if ((single_line_field && (field->dcols != field->maxgrow)) ||
(!single_line_field && (field->drows != field->maxgrow)))
- field->status |= _MAY_GROW;
+ SetStatus(field, _MAY_GROW);
}
else
{
@@ -753,7 +753,7 @@ Field_Grown(FIELD *field, int amount)
(field->dcols != field->maxgrow)) ||
(!single_line_field &&
(field->drows != field->maxgrow)))
- field->status |= _MAY_GROW;
+ SetStatus(field, _MAY_GROW);
free(newbuf);
}
}
@@ -860,7 +860,7 @@ _nc_Refresh_Current_Field(FORM *form)
field = form->current;
formwin = Get_Form_Window(form);
- if (field->opts & O_PUBLIC)
+ if ((unsigned)field->opts & O_PUBLIC)
{
if (Is_Scroll_Field(field))
{
@@ -897,19 +897,19 @@ _nc_Refresh_Current_Field(FORM *form)
if (form->currow < form->toprow)
{
form->toprow = form->currow;
- field->status |= _NEWTOP;
+ SetStatus(field, _NEWTOP);
}
if (form->currow >= row_after_bottom)
{
form->toprow = form->currow - field->rows + 1;
- field->status |= _NEWTOP;
+ SetStatus(field, _NEWTOP);
}
if (field->status & _NEWTOP)
{
/* means we have to copy whole range */
first_modified_row = form->toprow;
first_unmodified_row = first_modified_row + field->rows;
- field->status &= ~_NEWTOP;
+ ClrStatus(field, _NEWTOP);
}
else
{
@@ -1111,27 +1111,27 @@ Display_Or_Erase_Field(FIELD *field, bool bEraseFlag)
return E_SYSTEM_ERROR;
else
{
- if (field->opts & O_VISIBLE)
+ if ((unsigned)field->opts & O_VISIBLE)
{
Set_Field_Window_Attributes(field, win);
}
else
{
- (void)wattrset(win, WINDOW_ATTRS(fwin));
+ (void)wattrset(win, (int)WINDOW_ATTRS(fwin));
}
werase(win);
}
if (!bEraseFlag)
{
- if (field->opts & O_PUBLIC)
+ if ((unsigned)field->opts & O_PUBLIC)
{
if (Justification_Allowed(field))
Perform_Justification(field, win);
else
Buffer_To_Window(field, win);
}
- field->status &= ~_NEWTOP;
+ ClrStatus(field, _NEWTOP);
}
wsyncup(win);
delwin(win);
@@ -1170,18 +1170,18 @@ Synchronize_Field(FIELD *field)
form->currow = form->curcol = form->toprow = form->begincol = 0;
werase(form->w);
- if ((field->opts & O_PUBLIC) && Justification_Allowed(field))
+ if (((unsigned)field->opts & O_PUBLIC) && Justification_Allowed(field))
Undo_Justification(field, form->w);
else
Buffer_To_Window(field, form->w);
- field->status |= _NEWTOP;
+ SetStatus(field, _NEWTOP);
res = _nc_Refresh_Current_Field(form);
}
else
res = Display_Field(field);
}
- field->status |= _CHANGED;
+ SetStatus(field, _CHANGED);
return (res);
}
@@ -1211,7 +1211,7 @@ Synchronize_Linked_Fields(FIELD *field)
return (E_SYSTEM_ERROR);
for (linked_field = field->link;
- linked_field != field;
+ (linked_field != field) && (linked_field != 0);
linked_field = linked_field->link)
{
if (((syncres = Synchronize_Field(linked_field)) != E_OK) &&
@@ -1256,7 +1256,7 @@ _nc_Synchronize_Attributes(FIELD *field)
werase(form->w);
wmove(form->w, form->currow, form->curcol);
- if (field->opts & O_PUBLIC)
+ if ((unsigned)field->opts & O_PUBLIC)
{
if (Justification_Allowed(field))
Undo_Justification(field, form->w);
@@ -1272,7 +1272,7 @@ _nc_Synchronize_Attributes(FIELD *field)
field->rows - 1, field->cols - 1, 0);
wsyncup(formwin);
Buffer_To_Window(field, form->w);
- field->status |= _NEWTOP; /* fake refresh to paint all */
+ SetStatus(field, _NEWTOP); /* fake refresh to paint all */
_nc_Refresh_Current_Field(form);
}
}
@@ -1326,34 +1326,34 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts)
field->opts = oldopts;
returnCode(E_CURRENT);
}
- if ((form->curpage == field->page))
+ if (form->curpage == field->page)
{
- if (changed_opts & O_VISIBLE)
+ if ((unsigned)changed_opts & O_VISIBLE)
{
- if (newopts & O_VISIBLE)
+ if ((unsigned)newopts & O_VISIBLE)
res = Display_Field(field);
else
res = Erase_Field(field);
}
else
{
- if ((changed_opts & O_PUBLIC) &&
- (newopts & O_VISIBLE))
+ if (((unsigned)changed_opts & O_PUBLIC) &&
+ ((unsigned)newopts & O_VISIBLE))
res = Display_Field(field);
}
}
}
}
- if (changed_opts & O_STATIC)
+ if ((unsigned)changed_opts & O_STATIC)
{
bool single_line_field = Single_Line_Field(field);
int res2 = E_OK;
- if (newopts & O_STATIC)
+ if ((unsigned)newopts & O_STATIC)
{
/* the field becomes now static */
- field->status &= ~_MAY_GROW;
+ ClrStatus(field, _MAY_GROW);
/* if actually we have no hidden columns, justification may
occur again */
if (single_line_field &&
@@ -1371,7 +1371,7 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts)
(single_line_field && (field->dcols < field->maxgrow)) ||
(!single_line_field && (field->drows < field->maxgrow)))
{
- field->status |= _MAY_GROW;
+ SetStatus(field, _MAY_GROW);
/* a field with justification now changes its behavior,
so we must redisplay it */
if (single_line_field &&
@@ -1424,18 +1424,18 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield)
!(form->status & _POSTED))
{
if ((form->w) &&
- (field->opts & O_VISIBLE) &&
+ ((unsigned)field->opts & O_VISIBLE) &&
(field->form->curpage == field->page))
{
_nc_Refresh_Current_Field(form);
- if (field->opts & O_PUBLIC)
+ if ((unsigned)field->opts & O_PUBLIC)
{
if (field->drows > field->rows)
{
if (form->toprow == 0)
- field->status &= ~_NEWTOP;
+ ClrStatus(field, _NEWTOP);
else
- field->status |= _NEWTOP;
+ SetStatus(field, _NEWTOP);
}
else
{
@@ -1469,7 +1469,7 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield)
delwin(form->w);
form->w = new_window;
- form->status &= ~_WINDOW_MODIFIED;
+ ClrStatus(form, _WINDOW_MODIFIED);
Set_Field_Window_Attributes(field, form->w);
if (Has_Invisible_Parts(field))
@@ -1998,7 +1998,7 @@ Vertical_Scrolling(int (*const fct) (FORM *), FORM *form)
{
res = fct(form);
if (res == E_OK)
- form->current->status |= _NEWTOP;
+ SetStatus(form, _NEWTOP);
}
return (res);
}
@@ -2430,7 +2430,7 @@ Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM *form)
int result = E_REQUEST_DENIED;
bool Last_Row = ((field->drows - 1) == form->currow);
- if ((field->opts & O_WRAP) && /* wrapping wanted */
+ if (((unsigned)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 */
@@ -2513,7 +2513,7 @@ Field_Editing(int (*const fct) (FORM *), FORM *form)
editable fields.
*/
if ((fct == FE_Delete_Previous) &&
- (form->opts & O_BS_OVERLOAD) &&
+ ((unsigned)form->opts & O_BS_OVERLOAD) &&
First_Position_In_Current_Field(form))
{
res = Inter_Field_Navigation(FN_Previous_Field, form);
@@ -2522,7 +2522,7 @@ Field_Editing(int (*const fct) (FORM *), FORM *form)
{
if (fct == FE_New_Line)
{
- if ((form->opts & O_NL_OVERLOAD) &&
+ if (((unsigned)form->opts & O_NL_OVERLOAD) &&
First_Position_In_Current_Field(form))
{
res = Inter_Field_Navigation(FN_Next_Field, form);
@@ -2534,11 +2534,11 @@ Field_Editing(int (*const fct) (FORM *), FORM *form)
else
{
/* From now on, everything must be editable */
- if (form->current->opts & O_EDIT)
+ if ((unsigned)form->current->opts & O_EDIT)
{
res = fct(form);
if (res == E_OK)
- form->status |= _WINDOW_MODIFIED;
+ SetStatus(form, _WINDOW_MODIFIED);
}
}
}
@@ -2571,7 +2571,7 @@ FE_New_Line(FORM *form)
if (Last_Row &&
(!(Growable(field) && !Single_Line_Field(field))))
{
- if (!(form->opts & O_NL_OVERLOAD))
+ if (!((unsigned)form->opts & O_NL_OVERLOAD))
returnCode(E_REQUEST_DENIED);
wmove(form->w, form->currow, form->curcol);
wclrtoeol(form->w);
@@ -2579,7 +2579,7 @@ FE_New_Line(FORM *form)
handled in the generic routine. The reason is,
that FN_Next_Field may fail, but the form is
definitively changed */
- form->status |= _WINDOW_MODIFIED;
+ SetStatus(form, _WINDOW_MODIFIED);
returnCode(Inter_Field_Navigation(FN_Next_Field, form));
}
else
@@ -2595,7 +2595,7 @@ FE_New_Line(FORM *form)
wclrtoeol(form->w);
form->currow++;
form->curcol = 0;
- form->status |= _WINDOW_MODIFIED;
+ SetStatus(form, _WINDOW_MODIFIED);
returnCode(E_OK);
}
}
@@ -2605,7 +2605,7 @@ FE_New_Line(FORM *form)
if (Last_Row &&
!(Growable(field) && !Single_Line_Field(field)))
{
- if (!(form->opts & O_NL_OVERLOAD))
+ if (!((unsigned)form->opts & O_NL_OVERLOAD))
returnCode(E_REQUEST_DENIED);
returnCode(Inter_Field_Navigation(FN_Next_Field, form));
}
@@ -2627,7 +2627,7 @@ FE_New_Line(FORM *form)
wmove(form->w, form->currow, form->curcol);
winsertln(form->w);
myADDNSTR(form->w, bp, (int)(t - bp));
- form->status |= _WINDOW_MODIFIED;
+ SetStatus(form, _WINDOW_MODIFIED);
returnCode(E_OK);
}
}
@@ -2926,7 +2926,7 @@ static int
EM_Overlay_Mode(FORM *form)
{
T((T_CALLED("EM_Overlay_Mode(%p)"), (void *)form));
- form->status |= _OVLMODE;
+ SetStatus(form, _OVLMODE);
returnCode(E_OK);
}
@@ -2942,7 +2942,7 @@ static int
EM_Insert_Mode(FORM *form)
{
T((T_CALLED("EM_Insert_Mode(%p)"), (void *)form));
- form->status &= ~_OVLMODE;
+ ClrStatus(form, _OVLMODE);
returnCode(E_OK);
}
@@ -3111,7 +3111,7 @@ Check_Field(FORM *form, FIELDTYPE *typ, FIELD *field, TypeArgument *argp)
{
if (typ)
{
- if (field->opts & O_NULLOK)
+ if ((unsigned)field->opts & O_NULLOK)
{
FIELD_CELL *bp = field->buf;
@@ -3168,12 +3168,12 @@ _nc_Internal_Validation(FORM *form)
Synchronize_Buffer(form);
if ((form->status & _FCHECK_REQUIRED) ||
- (!(field->opts & O_PASSOK)))
+ (!((unsigned)field->opts & O_PASSOK)))
{
if (!Check_Field(form, field->type, field, (TypeArgument *)(field->arg)))
return FALSE;
- form->status &= ~_FCHECK_REQUIRED;
- field->status |= _CHANGED;
+ ClrStatus(form, _FCHECK_REQUIRED);
+ SetStatus(field, _CHANGED);
Synchronize_Linked_Fields(field);
}
return TRUE;
@@ -3273,14 +3273,15 @@ _nc_First_Active_Field(FORM *form)
do
{
field = (field == last_on_page) ? first : field + 1;
- if (((*field)->opts & O_VISIBLE))
+ if (((unsigned)(*field)->opts & O_VISIBLE))
break;
}
while (proposed != (*field));
proposed = *field;
- if ((proposed == *last_on_page) && !(proposed->opts & O_VISIBLE))
+ if ((proposed == *last_on_page) &&
+ !((unsigned)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...
@@ -3816,11 +3817,11 @@ _nc_Set_Form_Page(FORM *form, int page, FIELD *field)
FIELD *last_field, *field_on_page;
werase(Get_Form_Window(form));
- form->curpage = page;
+ form->curpage = (short)page;
last_field = field_on_page = form->field[form->page[page].smin];
do
{
- if (field_on_page->opts & O_VISIBLE)
+ if ((unsigned)field_on_page->opts & O_VISIBLE)
if ((res = Display_Field(field_on_page)) != E_OK)
return (res);
field_on_page = field_on_page->snext;
@@ -3981,6 +3982,94 @@ PN_Last_Page(FORM *form)
Helper routines for the core form driver.
--------------------------------------------------------------------------*/
+# if USE_WIDEC_SUPPORT
+/*---------------------------------------------------------------------------
+| Facility : libnform
+| Function : static int Data_Entry_w(FORM * form, wchar_t c)
+|
+| Description : Enter the wide character c into at the current
+| position of the current field of the form.
+|
+| Return Values : E_OK - success
+| E_REQUEST_DENIED - driver could not process the request
+| E_SYSTEM_ERROR -
++--------------------------------------------------------------------------*/
+static int
+Data_Entry_w(FORM *form, wchar_t c)
+{
+ FIELD *field = form->current;
+ int result = E_REQUEST_DENIED;
+
+ T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c)));
+ if (((unsigned)field->opts & O_EDIT)
+#if FIX_FORM_INACTIVE_BUG
+ && ((unsigned)field->opts & O_ACTIVE)
+#endif
+ )
+ {
+ wchar_t given[2];
+ cchar_t temp_ch;
+
+ given[0] = c;
+ given[1] = 1;
+ setcchar(&temp_ch, given, 0, 0, (void *)0);
+ if (((unsigned)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)
+ {
+ wadd_wch(form->w, &temp_ch);
+ }
+ 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);
+
+ if (!There_Is_Room && !Field_Grown(field, 1))
+ RETURN(E_SYSTEM_ERROR);
+
+ wins_wch(form->w, &temp_ch);
+ }
+
+ 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));
+
+ form->status |= _WINDOW_MODIFIED;
+ if (End_Of_Field && !Growable(field) && ((unsigned)field->opts & O_AUTOSKIP))
+ result = Inter_Field_Navigation(FN_Next_Field, form);
+ else
+ {
+ if (End_Of_Field && Growable(field) && !Field_Grown(field, 1))
+ result = E_SYSTEM_ERROR;
+ else
+ {
+ /*
+ * 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);
+
+ result = E_OK;
+ }
+ }
+ }
+ }
+ RETURN(result);
+}
+# endif
+
/*---------------------------------------------------------------------------
| Facility : libnform
| Function : static int Data_Entry(FORM * form,int c)
@@ -3999,13 +4088,13 @@ Data_Entry(FORM *form, int c)
int result = E_REQUEST_DENIED;
T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c)));
- if ((field->opts & O_EDIT)
+ if (((unsigned)field->opts & O_EDIT)
#if FIX_FORM_INACTIVE_BUG
- && (field->opts & O_ACTIVE)
+ && ((unsigned)field->opts & O_ACTIVE)
#endif
)
{
- if ((field->opts & O_BLANK) &&
+ if (((unsigned)field->opts & O_BLANK) &&
First_Position_In_Current_Field(form) &&
!(form->status & _FCHECK_REQUIRED) &&
!(form->status & _WINDOW_MODIFIED))
@@ -4035,8 +4124,8 @@ Data_Entry(FORM *form, int c)
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))
+ SetStatus(form, _WINDOW_MODIFIED);
+ if (End_Of_Field && !Growable(field) && ((unsigned)field->opts & O_AUTOSKIP))
result = Inter_Field_Navigation(FN_Next_Field, form);
else
{
@@ -4228,7 +4317,10 @@ form_driver(FORM *form, int c)
if ((c >= MIN_FORM_COMMAND && c <= MAX_FORM_COMMAND) &&
((bindings[c - MIN_FORM_COMMAND].keycode & Key_Mask) == c))
- BI = &(bindings[c - MIN_FORM_COMMAND]);
+ {
+ TR(TRACE_CALLS, ("form_request %s", form_request_name(c)));
+ BI = &(bindings[c - MIN_FORM_COMMAND]);
+ }
if (BI)
{
@@ -4246,7 +4338,7 @@ form_driver(FORM *form, int c)
NULL /* Choice Request is generic */
};
size_t nMethods = (sizeof(Generic_Methods) / sizeof(Generic_Methods[0]));
- size_t method = (BI->keycode >> ID_Shft) & 0xffff; /* see ID_Mask */
+ size_t method = (size_t) ((BI->keycode >> ID_Shft) & 0xffff); /* see ID_Mask */
if ((method >= nMethods) || !(BI->cmd))
res = E_SYSTEM_ERROR;
@@ -4255,9 +4347,13 @@ form_driver(FORM *form, int c)
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);
+ }
}
}
#ifdef NCURSES_MOUSE_VERSION
@@ -4360,6 +4456,195 @@ form_driver(FORM *form, int c)
RETURN(res);
}
+# if USE_WIDEC_SUPPORT
+/*---------------------------------------------------------------------------
+| Facility : libnform
+| Function : int form_driver_w(FORM * form,int type,wchar_t c)
+|
+| Description : This is the workhorse of the forms system.
+|
+| Input is either a key code (request) or a wide char
+| returned by e.g. get_wch (). The type must be passed
+| as well,so that we are able to determine whether the char
+| is a multibyte char or a request.
+
+| If it is a request, the form driver executes
+| the request and returns the result. If it is data
+| (printable character), it enters the data into the
+| current position in the current field. If it is not
+| recognized, the form driver assumes it is an application
+| defined command and returns E_UNKNOWN_COMMAND.
+| Application defined command should be defined relative
+| to MAX_FORM_COMMAND, the maximum value of a request.
+|
+| Return Values : E_OK - success
+| E_SYSTEM_ERROR - system error
+| E_BAD_ARGUMENT - an argument is incorrect
+| E_NOT_POSTED - form is not posted
+| 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_w(FORM *form, int type, wchar_t c)
+{
+ const Binding_Info *BI = (Binding_Info *) 0;
+ int res = E_UNKNOWN_COMMAND;
+
+ T((T_CALLED("form_driver(%p,%d)"), (void *)form, (int) c));
+
+ if (!form)
+ RETURN(E_BAD_ARGUMENT);
+
+ if (!(form->field))
+ RETURN(E_NOT_CONNECTED);
+
+ assert(form->page);
+
+ if (c == FIRST_ACTIVE_MAGIC)
+ {
+ form->current = _nc_First_Active_Field(form);
+ RETURN(E_OK);
+ }
+
+ assert(form->current &&
+ form->current->buf &&
+ (form->current->form == form)
+ );
+
+ if (form->status & _IN_DRIVER)
+ RETURN(E_BAD_STATE);
+
+ if (!(form->status & _POSTED))
+ RETURN(E_NOT_POSTED);
+
+ /* check if this is a keycode or a (wide) char */
+ if (type == KEY_CODE_YES)
+ {
+ 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 = (size_t) (BI->keycode >> ID_Shft) & 0xffff; /* see ID_Mask */
+
+ if ((method >= nMethods) || !(BI->cmd))
+ res = E_SYSTEM_ERROR;
+ else
+ {
+ Generic_Method fct = Generic_Methods[method];
+
+ if (fct)
+ res = fct(BI->cmd, form);
+ else
+ res = (BI->cmd) (form);
+ }
+ }
+#ifdef NCURSES_MOUSE_VERSION
+ else if (KEY_MOUSE == c)
+ {
+ MEVENT event;
+ WINDOW *win = form->win ? form->win : StdScreen(Get_Form_Screen(form));
+ WINDOW *sub = form->sub ? form->sub : win;
+
+ getmouse(&event);
+ if ((event.bstate & (BUTTON1_CLICKED |
+ BUTTON1_DOUBLE_CLICKED |
+ BUTTON1_TRIPLE_CLICKED))
+ && wenclose(win, event.y, event.x))
+ { /* we react only if the click was in the userwin, that means
+ * inside the form display area or at the decoration window.
+ */
+ int ry = event.y, rx = event.x; /* screen coordinates */
+
+ res = 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)
+ res = form_driver(form, REQ_PREV_FIELD);
+ else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
+ res = form_driver(form, REQ_PREV_PAGE);
+ else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
+ res = form_driver(form, REQ_FIRST_FIELD);
+ }
+ 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)
+ res = form_driver(form, REQ_NEXT_FIELD);
+ else if (event.bstate & BUTTON1_DOUBLE_CLICKED)
+ res = form_driver(form, REQ_NEXT_PAGE);
+ else if (event.bstate & BUTTON1_TRIPLE_CLICKED)
+ res = form_driver(form, REQ_LAST_FIELD);
+ }
+ else if (wenclose(sub, event.y, event.x))
+ { /* Inside the area we try to find the hit item */
+ int i;
+
+ ry = event.y;
+ rx = event.x;
+ if (wmouse_trafo(sub, &ry, &rx, FALSE))
+ {
+ int min_field = form->page[form->curpage].pmin;
+ int max_field = form->page[form->curpage].pmax;
+
+ for (i = min_field; i <= max_field; ++i)
+ {
+ FIELD *field = form->field[i];
+
+ if (Field_Is_Selectable(field)
+ && Field_encloses(field, ry, rx) == E_OK)
+ {
+ res = _nc_Set_Current_Field(form, field);
+ if (res == E_OK)
+ res = _nc_Position_Form_Cursor(form);
+ if (res == E_OK
+ && (event.bstate & BUTTON1_DOUBLE_CLICKED))
+ res = E_UNKNOWN_COMMAND;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ else
+ res = E_REQUEST_DENIED;
+ }
+#endif /* NCURSES_MOUSE_VERSION */
+ else if (type == OK)
+ {
+ res = Data_Entry_w(form, c);
+ }
+
+ _nc_Refresh_Current_Field(form);
+ RETURN(res);
+}
+# endif /* USE_WIDEC_SUPPORT */
+
/*----------------------------------------------------------------------------
Field-Buffer manipulation routines.
The effects of setting a buffer are tightly coupled to the core of the form
@@ -4389,8 +4674,8 @@ set_field_buffer(FIELD *field, int buffer, const char *value)
{
FIELD_CELL *p;
int res = E_OK;
- unsigned int i;
- unsigned int len;
+ int i;
+ int len;
#if USE_WIDEC_SUPPORT
FIELD_CELL *widevalue = 0;
@@ -4408,7 +4693,7 @@ set_field_buffer(FIELD *field, int buffer, const char *value)
/* for a growable field we must assume zero terminated strings, because
somehow we have to detect the length of what should be copied.
*/
- unsigned int vlen = strlen(value);
+ int vlen = (int)strlen(value);
if (vlen > len)
{
@@ -4448,10 +4733,10 @@ set_field_buffer(FIELD *field, int buffer, const char *value)
}
else
{
- for (i = 0; i < (unsigned)field->drows; ++i)
+ for (i = 0; i < field->drows; ++i)
{
- (void)mvwin_wchnstr(field->working, 0, i * field->dcols,
- widevalue + (i * field->dcols),
+ (void)mvwin_wchnstr(field->working, 0, (int)i * field->dcols,
+ widevalue + ((int)i * field->dcols),
field->dcols);
}
for (i = 0; i < len; ++i)
@@ -4512,7 +4797,7 @@ field_buffer(const FIELD *field, int buffer)
{
#if USE_WIDEC_SUPPORT
FIELD_CELL *data = Address_Of_Nth_Buffer(field, buffer);
- unsigned need = 0;
+ size_t need = 0;
int size = Buffer_Length(field);
int n;
@@ -4526,7 +4811,7 @@ field_buffer(const FIELD *field, int buffer)
init_mb(state);
next = _nc_wcrtomb(0, data[n].chars[0], &state);
- if (!isEILSEQ(next))
+ if (next > 0)
need += next;
}
}
@@ -4613,7 +4898,7 @@ _nc_Widen_String(char *source, int *lengthp)
{
result[need] = wch;
}
- passed += status;
+ passed += (size_t) status;
++need;
}
else
@@ -4633,7 +4918,7 @@ _nc_Widen_String(char *source, int *lengthp)
break;
result = typeCalloc(wchar_t, need);
- *lengthp = need;
+ *lengthp = (int)need;
if (result == 0)
break;
}
diff --git a/contrib/ncurses/form/frm_hook.c b/contrib/ncurses/form/frm_hook.c
index 7daa396b704a..23850bfd1f8e 100644
--- a/contrib/ncurses/form/frm_hook.c
+++ b/contrib/ncurses/form/frm_hook.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,13 +32,13 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_hook.c,v 1.15 2010/01/23 21:12:08 tom Exp $")
+MODULE_ID("$Id: frm_hook.c,v 1.16 2012/03/11 00:37:16 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));\
+ T((T_CALLED("set_" #typ"_"#name"(%p,%p)"), (void *) form, func));\
(Normalize_Form( form ) -> typ ## name) = func ;\
RETURN(E_OK);\
}
diff --git a/contrib/ncurses/form/frm_opts.c b/contrib/ncurses/form/frm_opts.c
index 3557fcd7ff04..42d6267fba0b 100644
--- a/contrib/ncurses/form/frm_opts.c
+++ b/contrib/ncurses/form/frm_opts.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_opts.c,v 1.15 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: frm_opts.c,v 1.17 2013/08/24 22:58:47 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -49,8 +49,8 @@ set_form_opts(FORM *form, Form_Options opts)
{
T((T_CALLED("set_form_opts(%p,%d)"), (void *)form, opts));
- opts &= ALL_FORM_OPTS;
- if (opts & ~ALL_FORM_OPTS)
+ opts &= (Form_Options) ALL_FORM_OPTS;
+ if ((unsigned)opts & ~ALL_FORM_OPTS)
RETURN(E_BAD_ARGUMENT);
else
{
@@ -71,7 +71,7 @@ NCURSES_EXPORT(Form_Options)
form_opts(const FORM *form)
{
T((T_CALLED("form_opts(%p)"), (const void *)form));
- returnCode((int)(Normalize_Form(form)->opts & ALL_FORM_OPTS));
+ returnCode((Form_Options) ((unsigned)Normalize_Form(form)->opts & ALL_FORM_OPTS));
}
/*---------------------------------------------------------------------------
@@ -89,8 +89,8 @@ form_opts_on(FORM *form, Form_Options opts)
{
T((T_CALLED("form_opts_on(%p,%d)"), (void *)form, opts));
- opts &= ALL_FORM_OPTS;
- if (opts & ~ALL_FORM_OPTS)
+ opts &= (Form_Options) ALL_FORM_OPTS;
+ if ((unsigned)opts & ~ALL_FORM_OPTS)
RETURN(E_BAD_ARGUMENT);
else
{
@@ -114,8 +114,8 @@ form_opts_off(FORM *form, Form_Options opts)
{
T((T_CALLED("form_opts_off(%p,%d)"), (void *)form, opts));
- opts &= ALL_FORM_OPTS;
- if (opts & ~ALL_FORM_OPTS)
+ opts &= (Form_Options) ALL_FORM_OPTS;
+ if ((unsigned)opts & ~ALL_FORM_OPTS)
RETURN(E_BAD_ARGUMENT);
else
{
diff --git a/contrib/ncurses/form/frm_page.c b/contrib/ncurses/form/frm_page.c
index 5a76ca995793..13520da95dfa 100644
--- a/contrib/ncurses/form/frm_page.c
+++ b/contrib/ncurses/form/frm_page.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_page.c,v 1.11 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: frm_page.c,v 1.12 2012/06/10 00:28:04 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -58,7 +58,7 @@ set_form_page(FORM *form, int page)
if (!(form->status & _POSTED))
{
- form->curpage = page;
+ form->curpage = (short)page;
form->current = _nc_First_Active_Field(form);
}
else
diff --git a/contrib/ncurses/form/frm_post.c b/contrib/ncurses/form/frm_post.c
index 8e29aff5f62a..31568b2a6e1f 100644
--- a/contrib/ncurses/form/frm_post.c
+++ b/contrib/ncurses/form/frm_post.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_post.c,v 1.10 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: frm_post.c,v 1.11 2012/06/10 00:27:49 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnform
@@ -77,7 +77,7 @@ post_form(FORM *form)
if ((err = _nc_Set_Form_Page(form, page, form->current)) != E_OK)
RETURN(err);
- form->status |= _POSTED;
+ SetStatus(form, _POSTED);
Call_Hook(form, forminit);
Call_Hook(form, fieldinit);
@@ -117,7 +117,7 @@ unpost_form(FORM *form)
werase(Get_Form_Window(form));
delwin(form->w);
form->w = (WINDOW *)0;
- form->status &= ~_POSTED;
+ ClrStatus(form, _POSTED);
RETURN(E_OK);
}
diff --git a/contrib/ncurses/form/frm_req_name.c b/contrib/ncurses/form/frm_req_name.c
index 99abd7e3c1d9..c24db1a8a924 100644
--- a/contrib/ncurses/form/frm_req_name.c
+++ b/contrib/ncurses/form/frm_req_name.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: frm_req_name.c,v 1.17 2009/10/10 16:17:01 tom Exp $")
+MODULE_ID("$Id: frm_req_name.c,v 1.18 2012/07/21 23:17:23 tom Exp $")
static const char *request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] =
{
@@ -144,23 +144,26 @@ 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];
+ size_t i = 0;
+ char buf[16]; /* longest name is 10 chars */
T((T_CALLED("form_request_by_name(%s)"), _nc_visbuf(str)));
- if (str)
+ if (str != 0 && (i = strlen(str)) != 0)
{
- strncpy(buf, str, sizeof(buf));
- while ((i < sizeof(buf)) && (buf[i] != '\0'))
+ if (i > sizeof(buf) - 2)
+ i = sizeof(buf) - 2;
+ memcpy(buf, str, i);
+ buf[i] = '\0';
+
+ for (i = 0; buf[i] != '\0'; ++i)
{
buf[i] = (char)toupper(UChar(buf[i]));
- i++;
}
for (i = 0; i < A_SIZE; i++)
{
- if (strncmp(request_names[i], buf, sizeof(buf)) == 0)
+ if (strcmp(request_names[i], buf) == 0)
returnCode(MIN_FORM_COMMAND + (int)i);
}
}
diff --git a/contrib/ncurses/form/fty_generic.c b/contrib/ncurses/form/fty_generic.c
index 3e7a575a2623..429ceac44a05 100644
--- a/contrib/ncurses/form/fty_generic.c
+++ b/contrib/ncurses/form/fty_generic.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -34,7 +34,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fty_generic.c,v 1.5 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: fty_generic.c,v 1.6 2012/06/10 00:27:49 tom Exp $")
/*
* This is not a full implementation of a field type, but adds some
@@ -119,7 +119,7 @@ _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *),
if (res)
{
*res = *_nc_Default_FieldType;
- res->status |= (_HAS_ARGS | _GENERIC);
+ SetStatus(res, (_HAS_ARGS | _GENERIC));
res->fieldcheck.gfcheck = field_check;
res->charcheck.gccheck = char_check;
res->genericarg = Generic_This_Type;
diff --git a/contrib/ncurses/form/fty_int.c b/contrib/ncurses/form/fty_int.c
index e643ad975fc5..1e43874ef64f 100644
--- a/contrib/ncurses/form/fty_int.c
+++ b/contrib/ncurses/form/fty_int.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -34,7 +34,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fty_int.c,v 1.25 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: fty_int.c,v 1.26 2012/02/23 10:02:15 tom Exp $")
#if USE_WIDEC_SUPPORT
#define isDigit(c) (iswdigit((wint_t)(c)) || isdigit(UChar(c)))
@@ -233,7 +233,8 @@ Check_This_Field(FIELD *field, const void *argp)
}
if (result)
{
- sprintf(buf, "%.*ld", (prec > 0 ? prec : 0), val);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%.*ld", (prec > 0 ? prec : 0), val);
set_field_buffer(field, 0, buf);
}
}
diff --git a/contrib/ncurses/form/fty_num.c b/contrib/ncurses/form/fty_num.c
index 4bd71321d66a..8cce43f83a17 100644
--- a/contrib/ncurses/form/fty_num.c
+++ b/contrib/ncurses/form/fty_num.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -34,7 +34,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fty_num.c,v 1.28 2010/01/23 21:14:36 tom Exp $")
+MODULE_ID("$Id: fty_num.c,v 1.29 2012/02/23 10:02:15 tom Exp $")
#if HAVE_LOCALE_H
#include <locale.h>
@@ -271,7 +271,8 @@ Check_This_Field(FIELD *field, const void *argp)
}
if (result)
{
- sprintf(buf, "%.*f", (prec > 0 ? prec : 0), val);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%.*f", (prec > 0 ? prec : 0), val);
set_field_buffer(field, 0, buf);
}
}
diff --git a/contrib/ncurses/form/fty_regex.c b/contrib/ncurses/form/fty_regex.c
index 2c0a4caa6bb3..7a42e7eee7f0 100644
--- a/contrib/ncurses/form/fty_regex.c
+++ b/contrib/ncurses/form/fty_regex.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -34,7 +34,7 @@
#include "form.priv.h"
-MODULE_ID("$Id: fty_regex.c,v 1.24 2010/01/23 21:14:37 tom Exp $")
+MODULE_ID("$Id: fty_regex.c,v 1.25 2012/10/27 20:12:53 tom Exp $")
#if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */
#include <regex.h>
@@ -123,9 +123,8 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED)
(REG_EXTENDED | REG_NOSUB | REG_NEWLINE)))
{
T((T_CREATE("regex_t %p"), (void *)preg->pRegExp));
- preg->refCount = typeMalloc(unsigned long, 1);
-
- *(preg->refCount) = 1;
+ if ((preg->refCount = typeMalloc(unsigned long, 1)) != 0)
+ *(preg->refCount) = 1;
}
else
{
@@ -151,9 +150,8 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED)
T((T_CREATE("RegExp_Arg %p"), pArg));
pArg->compiled_expression = NULL;
- pArg->refCount = typeMalloc(unsigned long, 1);
-
- *(pArg->refCount) = 1;
+ if ((pArg->refCount = typeMalloc(unsigned long, 1)) != 0)
+ *(pArg->refCount) = 1;
do
{
diff --git a/contrib/ncurses/form/llib-lformtw b/contrib/ncurses/form/llib-lformtw
index 10639490e399..6e9cd13f8070 100644
--- a/contrib/ncurses/form/llib-lformtw
+++ b/contrib/ncurses/form/llib-lformtw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2010,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2010 *
+ * Author: Thomas E. Dickey 2010-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -494,6 +494,13 @@ int form_driver(
int c)
{ return(*(int *)0); }
+#undef form_driver_w
+int form_driver_w(
+ FORM *form,
+ int type,
+ wchar_t c)
+ { return(*(int *)0); }
+
#undef set_field_buffer
int set_field_buffer(
FIELD *field,
diff --git a/contrib/ncurses/form/llib-lformw b/contrib/ncurses/form/llib-lformw
index 30c24b56029e..04cbe2b6e36c 100644
--- a/contrib/ncurses/form/llib-lformw
+++ b/contrib/ncurses/form/llib-lformw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2005,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2010,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2002-2005,2010 *
+ * Author: Thomas E. Dickey 2002-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -494,6 +494,13 @@ int form_driver(
int c)
{ return(*(int *)0); }
+#undef form_driver_w
+int form_driver_w(
+ FORM *form,
+ int type,
+ wchar_t c)
+ { return(*(int *)0); }
+
#undef set_field_buffer
int set_field_buffer(
FIELD *field,
diff --git a/contrib/ncurses/include/Caps b/contrib/ncurses/include/Caps
index f9a8ebd32aac..cb650a6be900 100644
--- a/contrib/ncurses/include/Caps
+++ b/contrib/ncurses/include/Caps
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -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.37 2010/12/04 18:47:13 tom Exp $
+# $Id: Caps,v 1.38 2011/10/15 23:10:18 tom Exp $
#
# This is the master termcap/terminfo capability table.
#
@@ -738,11 +738,13 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%.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
+#%The XSI Curses standard added these hardcopy capabilities.
+#%They were used in some post-4.1 versions of System V curses,
+#%e.g., Solaris 2.5 and IRIX 6.x.
+#%Except for \fBYI\fP, 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
@@ -760,7 +762,7 @@ enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
-set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch
+set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
#%.TE
#%.ad
#
diff --git a/contrib/ncurses/include/Caps.aix4 b/contrib/ncurses/include/Caps.aix4
index 5864d7b7afe6..faa9822e59b2 100644
--- a/contrib/ncurses/include/Caps.aix4
+++ b/contrib/ncurses/include/Caps.aix4
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001-2006,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2010,2011 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -28,7 +28,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.aix4,v 1.8 2010/12/04 18:47:13 tom Exp $
+# $Id: Caps.aix4,v 1.9 2011/10/15 23:19:16 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with AIX 4.x's terminfo.
@@ -840,11 +840,13 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%.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
+#%The XSI Curses standard added these hardcopy capabilities.
+#%They were used in some post-4.1 versions of System V curses,
+#%e.g., Solaris 2.5 and IRIX 6.x.
+#%Except for \fBYI\fP, 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
@@ -862,7 +864,7 @@ enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
-set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch
+set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
#%.TE
#%.ad
#
diff --git a/contrib/ncurses/include/Caps.hpux11 b/contrib/ncurses/include/Caps.hpux11
index 8dbe656cd617..b7bb99872774 100644
--- a/contrib/ncurses/include/Caps.hpux11
+++ b/contrib/ncurses/include/Caps.hpux11
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -28,7 +28,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.hpux11,v 1.5 2010/12/04 18:47:13 tom Exp $
+# $Id: Caps.hpux11,v 1.6 2011/10/15 23:20:04 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with HPUX 11.x's terminfo.
@@ -746,11 +746,13 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%.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
+#%The XSI Curses standard added these hardcopy capabilities.
+#%They were used in some post-4.1 versions of System V curses,
+#%e.g., Solaris 2.5 and IRIX 6.x.
+#%Except for \fBYI\fP, 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
@@ -761,7 +763,7 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%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
+set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode
enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode
enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode
diff --git a/contrib/ncurses/include/Caps.keys b/contrib/ncurses/include/Caps.keys
index 4d4fe30b8130..99c65b782394 100644
--- a/contrib/ncurses/include/Caps.keys
+++ b/contrib/ncurses/include/Caps.keys
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001-2006,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2011,2013 Free Software 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.4 2010/12/04 18:47:13 tom Exp $
+# $Id: Caps.keys,v 1.7 2013/07/20 17:59:24 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is illustrates an experimental extension to describe alt-, shift- and
@@ -229,11 +229,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
@@ -277,7 +277,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
#%
@@ -828,11 +828,13 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio
#%.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
+#%The XSI Curses standard added these hardcopy capabilities.
+#%They were used in some post-4.1 versions of System V curses,
+#%e.g., Solaris 2.5 and IRIX 6.x.
+#%Except for \fBYI\fP, 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
@@ -850,7 +852,7 @@ enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
-set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch
+set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
#%.TE
#%.ad
#
diff --git a/contrib/ncurses/include/Caps.osf1r5 b/contrib/ncurses/include/Caps.osf1r5
index 79dbf50fd3db..b9400b97ea1a 100644
--- a/contrib/ncurses/include/Caps.osf1r5
+++ b/contrib/ncurses/include/Caps.osf1r5
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -28,7 +28,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.osf1r5,v 1.5 2010/12/04 18:47:13 tom Exp $
+# $Id: Caps.osf1r5,v 1.6 2011/10/15 22:52:09 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with OSF/1 version 5 (Tru64) terminfo.
@@ -769,7 +769,7 @@ wait_tone wait str WA - - ----- wait for dial-tone
xoff_character xoffc str XF - - ----- XOFF character
xon_character xonc str XN - - ----- XON character
zero_motion zerom str Zx - - ----- No motion for subsequent character
-set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch
+set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap).
enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode
enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode
enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode
diff --git a/contrib/ncurses/include/MKkey_defs.sh b/contrib/ncurses/include/MKkey_defs.sh
index b3cb4f7f72cb..45a06d032771 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.14 2003/12/06 17:10:09 tom Exp $
+# $Id: MKkey_defs.sh,v 1.15 2013/03/09 16:32:01 tom Exp $
##############################################################################
-# Copyright (c) 2001-2002,2003 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2003,2013 Free Software 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,9 +65,12 @@ key_resize kr1 str R1 KEY_RESIZE + ----- Terminal resize event
key_event kv1 str V1 KEY_EVENT + ----- We were interrupted by an event
EOF
+THIS=./`basename $0`
+PARM=./`basename $DATA`
+
cat <<EOF
/*
- * These definitions were generated by $0 $DATA
+ * These definitions were generated by $THIS $PARM
*/
EOF
diff --git a/contrib/ncurses/include/MKterm.h.awk.in b/contrib/ncurses/include/MKterm.h.awk.in
index 261c40d75619..587ee5212388 100644
--- a/contrib/ncurses/include/MKterm.h.awk.in
+++ b/contrib/ncurses/include/MKterm.h.awk.in
@@ -1,7 +1,7 @@
# vile:awkmode
BEGIN {
print "/****************************************************************************"
- print " * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *"
+ print " * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *"
print " * *"
print " * Permission is hereby granted, free of charge, to any person obtaining a *"
print " * copy of this software and associated documentation files (the *"
@@ -34,7 +34,7 @@ BEGIN {
print "/* and: Thomas E. Dickey 1995-on */"
print "/****************************************************************************/"
print ""
- print "/* $Id: MKterm.h.awk.in,v 1.58 2010/01/09 19:53:26 tom Exp $ */"
+ print "/* $Id: MKterm.h.awk.in,v 1.62 2013/08/17 19:21:56 tom Exp $ */"
print ""
print "/*"
print "** term.h -- Definition of struct term"
@@ -62,6 +62,12 @@ BEGIN {
print "#undef NCURSES_SBOOL"
print "#define NCURSES_SBOOL @NCURSES_SBOOL@"
print ""
+ print "#undef NCURSES_USE_DATABASE"
+ print "#define NCURSES_USE_DATABASE @NCURSES_USE_DATABASE@"
+ print ""
+ print "#undef NCURSES_USE_TERMCAP"
+ print "#define NCURSES_USE_TERMCAP @NCURSES_USE_TERMCAP@"
+ print ""
print "#undef NCURSES_XNAMES"
print "#define NCURSES_XNAMES @NCURSES_XNAMES@"
print ""
@@ -93,41 +99,6 @@ BEGIN {
print "#include <termio.h>"
print "#define TTY struct termio"
print ""
- print "/* Add definitions to make termio look like termios."
- print " * But ifdef it, since there are some implementations"
- print " * that try to do this for us in a fake <termio.h>."
- print " */"
- print "#ifndef TCSANOW"
- print "#define TCSANOW TCSETA"
- print "#endif"
- print "#ifndef TCSADRAIN"
- print "#define TCSADRAIN TCSETAW"
- print "#endif"
- print "#ifndef TCSAFLUSH"
- print "#define TCSAFLUSH TCSETAF"
- print "#endif"
- print "#ifndef tcsetattr"
- print "#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)"
- print "#endif"
- print "#ifndef tcgetattr"
- print "#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)"
- print "#endif"
- print "#ifndef cfgetospeed"
- print "#define cfgetospeed(t) ((t)->c_cflag & CBAUD)"
- print "#endif"
- print "#ifndef TCIFLUSH "
- print "#define TCIFLUSH 0"
- print "#endif"
- print "#ifndef TCOFLUSH "
- print "#define TCOFLUSH 1"
- print "#endif"
- print "#ifndef TCIOFLUSH "
- print "#define TCIOFLUSH 2"
- print "#endif"
- print "#ifndef tcflush"
- print "#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)"
- print "#endif"
- print ""
print "#else /* !HAVE_TERMIO_H */"
print ""
print "#if __MINGW32__"
@@ -281,6 +252,7 @@ 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(void) _nc_init_termtype (TERMTYPE *const);"
print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int);"
print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);"
print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);"
diff --git a/contrib/ncurses/include/Makefile.in b/contrib/ncurses/include/Makefile.in
index e2a2f8a22866..61f388461ef8 100644
--- a/contrib/ncurses/include/Makefile.in
+++ b/contrib/ncurses/include/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.40 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.41 2013/08/03 23:10:51 tom Exp $
##############################################################################
-# Copyright (c) 1998,2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -48,6 +48,9 @@ srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
includedir = @includedir@
+includesubdir = @includesubdir@
+
+INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
diff --git a/contrib/ncurses/include/curses.h.in b/contrib/ncurses/include/curses.h.in
index 5774154e8538..15c9f7f24375 100644
--- a/contrib/ncurses/include/curses.h.in
+++ b/contrib/ncurses/include/curses.h.in
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
* and: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: curses.h.in,v 1.220 2011/01/22 19:47:20 tom Exp $ */
+/* $Id: curses.h.in,v 1.237 2014/02/01 22:08:12 tom Exp $ */
#ifndef __NCURSES_H
#define __NCURSES_H
@@ -91,11 +91,20 @@
#define NCURSES_INLINE @NCURSES_INLINE@
/*
- * The internal type used for color values
+ * The internal type used for color values, and for color-pairs. The latter
+ * allows the curses library to enumerate the combinations of foreground and
+ * background colors used by an application, and is normally the product of the
+ * total foreground and background colors.
+ *
+ * X/Open uses "short" for both of these types, ultimately because they are
+ * numbers from the terminal database, which uses 16-bit signed values.
*/
#undef NCURSES_COLOR_T
#define NCURSES_COLOR_T short
+#undef NCURSES_PAIRS_T
+#define NCURSES_PAIRS_T short
+
/*
* Definition used to make WINDOW and similar structs opaque.
*/
@@ -129,6 +138,13 @@
#define NCURSES_TPARM_VARARGS @NCURSES_TPARM_VARARGS@
/*
+ * Control type used for tparm's arguments. While X/Open equates long and
+ * char* values, this is not always workable for 64-bit platforms.
+ */
+#undef NCURSES_TPARM_ARG
+#define NCURSES_TPARM_ARG @NCURSES_TPARM_ARG@
+
+/*
* 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.
@@ -151,15 +167,21 @@ typedef unsigned @cf_cv_typeof_mmask_t@ mmask_t;
/*
* With XPG4, you must define _XOPEN_SOURCE_EXTENDED, it is redundant (or
- * conflicting) when _XOPEN_SOURCE is 500 or greater.
+ * conflicting) when _XOPEN_SOURCE is 500 or greater. If NCURSES_WIDECHAR is
+ * not already defined, e.g., if the platform relies upon nonstandard feature
+ * test macros, define it at this point if the standard feature test macros
+ * indicate that it should be defined.
*/
-#undef NCURSES_WIDECHAR
-#if defined(_XOPEN_SOURCE_EXTENDED) || defined(_XPG5)
-#define NCURSES_WIDECHAR
+#ifndef NCURSES_WIDECHAR
+#if defined(_XOPEN_SOURCE_EXTENDED) || (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 >= 500))
+#define NCURSES_WIDECHAR 1
+#else
+#define NCURSES_WIDECHAR 0
#endif
+#endif /* NCURSES_WIDECHAR */
#include <stdarg.h> /* we need va_list */
-#ifdef NCURSES_WIDECHAR
+#if NCURSES_WIDECHAR
#include <stddef.h> /* we want wchar_t */
#endif
@@ -231,6 +253,10 @@ extern "C" {
#define WA_TOP A_TOP
#define WA_VERTICAL A_VERTICAL
+#if @NCURSES_EXT_FUNCS@
+#define WA_ITALIC A_ITALIC /* ncurses extension */
+#endif
+
/* colors */
#define COLOR_BLACK 0
#define COLOR_RED 1
@@ -250,7 +276,7 @@ NCURSES_WRAPPED_VAR(chtype*, acs_map);
extern NCURSES_EXPORT_VAR(chtype) acs_map[];
#endif
-#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)])
+#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,(c))])
/* VT100 symbols begin here */
#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */
@@ -342,7 +368,7 @@ typedef struct _win_st WINDOW;
typedef chtype attr_t; /* ...must be at least as wide as chtype */
-#ifdef NCURSES_WIDECHAR
+#if NCURSES_WIDECHAR
#if @NCURSES_LIBUTF8@
#ifdef mblen /* libutf8.h defines it w/o undefining first */
@@ -366,7 +392,7 @@ typedef unsigned int wint_t@NCURSES_OK_WCHAR_T@;
/*
* cchar_t stores an array of CCHARW_MAX wide characters. The first is
* normally a spacing character. The others are non-spacing. If those
- * (spacing and nonspacing) do not fill the array, a null L'\0' follows.
+ * (spacing and nonspacing) do not fill the array, a null L'\0' follows.
* Otherwise, a null is assumed to follow when extracting via getcchar().
*/
#define CCHARW_MAX @NCURSES_CCHARW_MAX@
@@ -434,7 +460,7 @@ struct _win_st
NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */
-#ifdef NCURSES_WIDECHAR
+#if NCURSES_WIDECHAR
cchar_t _bkgrnd; /* current background char/attribute pair */
#if @NCURSES_EXT_COLORS@
int _color; /* current color-pair for non-space character */
@@ -556,10 +582,10 @@ extern NCURSES_EXPORT(int) addstr (const char *); /* generated */
extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T); /* generated */
extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T); /* generated */
extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T); /* generated */
-extern NCURSES_EXPORT(int) attr_get (attr_t *, short *, void *); /* generated */
+extern NCURSES_EXPORT(int) attr_get (attr_t *, NCURSES_PAIRS_T *, void *); /* generated */
extern NCURSES_EXPORT(int) attr_off (attr_t, void *); /* generated */
extern NCURSES_EXPORT(int) attr_on (attr_t, void *); /* generated */
-extern NCURSES_EXPORT(int) attr_set (attr_t, short, void *); /* generated */
+extern NCURSES_EXPORT(int) attr_set (attr_t, NCURSES_PAIRS_T, void *); /* generated */
extern NCURSES_EXPORT(int) baudrate (void); /* implemented */
extern NCURSES_EXPORT(int) beep (void); /* implemented */
extern NCURSES_EXPORT(int) bkgd (chtype); /* generated */
@@ -568,13 +594,13 @@ extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,cht
extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype); /* generated */
extern NCURSES_EXPORT(bool) can_change_color (void); /* implemented */
extern NCURSES_EXPORT(int) cbreak (void); /* implemented */
-extern NCURSES_EXPORT(int) chgat (int, attr_t, short, const void *); /* generated */
+extern NCURSES_EXPORT(int) chgat (int, attr_t, NCURSES_PAIRS_T, const void *); /* generated */
extern NCURSES_EXPORT(int) clear (void); /* generated */
extern NCURSES_EXPORT(int) clearok (WINDOW *,bool); /* implemented */
extern NCURSES_EXPORT(int) clrtobot (void); /* generated */
extern NCURSES_EXPORT(int) clrtoeol (void); /* generated */
-extern NCURSES_EXPORT(int) color_content (short,short*,short*,short*); /* implemented */
-extern NCURSES_EXPORT(int) color_set (short,void*); /* generated */
+extern NCURSES_EXPORT(int) color_content (NCURSES_COLOR_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*,NCURSES_COLOR_T*); /* implemented */
+extern NCURSES_EXPORT(int) color_set (NCURSES_PAIRS_T,void*); /* generated */
extern NCURSES_EXPORT(int) COLOR_PAIR (int); /* generated */
extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */
extern NCURSES_EXPORT(int) curs_set (int); /* implemented */
@@ -613,8 +639,8 @@ extern NCURSES_EXPORT(chtype) inch (void); /* generated */
extern NCURSES_EXPORT(int) inchnstr (chtype *, int); /* generated */
extern NCURSES_EXPORT(int) inchstr (chtype *); /* generated */
extern NCURSES_EXPORT(WINDOW *) initscr (void); /* implemented */
-extern NCURSES_EXPORT(int) init_color (short,short,short,short); /* implemented */
-extern NCURSES_EXPORT(int) init_pair (short,short,short); /* implemented */
+extern NCURSES_EXPORT(int) init_color (NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T); /* implemented */
+extern NCURSES_EXPORT(int) init_pair (NCURSES_PAIRS_T,NCURSES_COLOR_T,NCURSES_COLOR_T); /* implemented */
extern NCURSES_EXPORT(int) innstr (char *, int); /* generated */
extern NCURSES_EXPORT(int) insch (chtype); /* generated */
extern NCURSES_EXPORT(int) insdelln (int); /* generated */
@@ -638,7 +664,7 @@ extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* gener
extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *); /* generated */
extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */
extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *); /* generated */
-extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, short, const void *); /* generated */
+extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, NCURSES_PAIRS_T, const void *); /* generated */
extern NCURSES_EXPORT(int) mvcur (int,int,int,int); /* implemented */
extern NCURSES_EXPORT(int) mvdelch (int, int); /* generated */
extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int); /* implemented */
@@ -664,7 +690,7 @@ extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int
extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *); /* generated */
extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int); /* generated */
extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *); /* generated */
-extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, short, const void *);/* generated */
+extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, NCURSES_PAIRS_T, const void *);/* generated */
extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int); /* generated */
extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int); /* generated */
extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int); /* generated */
@@ -698,7 +724,7 @@ extern NCURSES_EXPORT(int) noraw (void); /* implemented */
extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool); /* implemented */
extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *); /* implemented */
extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *); /* implemented */
-extern NCURSES_EXPORT(int) pair_content (short,short*,short*); /* implemented */
+extern NCURSES_EXPORT(int) pair_content (NCURSES_PAIRS_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*); /* implemented */
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 */
@@ -732,9 +758,9 @@ extern NCURSES_EXPORT(int) slk_attron (const chtype); /* implemented */
extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*); /* generated:WIDEC */
extern NCURSES_EXPORT(int) slk_attrset (const chtype); /* implemented */
extern NCURSES_EXPORT(attr_t) slk_attr (void); /* implemented */
-extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,short,void*); /* implemented */
+extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,NCURSES_PAIRS_T,void*); /* implemented */
extern NCURSES_EXPORT(int) slk_clear (void); /* implemented */
-extern NCURSES_EXPORT(int) slk_color (short); /* implemented */
+extern NCURSES_EXPORT(int) slk_color (NCURSES_PAIRS_T); /* implemented */
extern NCURSES_EXPORT(int) slk_init (int); /* implemented */
extern NCURSES_EXPORT(char *) slk_label (int); /* implemented */
extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */
@@ -757,6 +783,7 @@ extern NCURSES_EXPORT(int) typeahead (int); /* implemented */
extern NCURSES_EXPORT(int) ungetch (int); /* implemented */
extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */
extern NCURSES_EXPORT(void) use_env (bool); /* implemented */
+extern NCURSES_EXPORT(void) use_tioctl (bool); /* implemented */
extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */
extern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC); /* implemented */
extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */
@@ -772,18 +799,18 @@ 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_get (WINDOW *, attr_t *, NCURSES_PAIRS_T *, void *); /* generated */
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) wattr_set (WINDOW *, attr_t, NCURSES_PAIRS_T, 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 */
+extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, NCURSES_PAIRS_T, const void *);/* implemented */
extern NCURSES_EXPORT(int) wclear (WINDOW *); /* implemented */
extern NCURSES_EXPORT(int) wclrtobot (WINDOW *); /* implemented */
extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *); /* implemented */
-extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,short,void*); /* implemented */
+extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,NCURSES_PAIRS_T,void*); /* implemented */
extern NCURSES_EXPORT(void) wcursyncup (WINDOW *); /* implemented */
extern NCURSES_EXPORT(int) wdelch (WINDOW *); /* implemented */
extern NCURSES_EXPORT(int) wdeleteln (WINDOW *); /* generated */
@@ -832,7 +859,7 @@ extern NCURSES_EXPORT(int) putp (const char *); /* implemented */
#if NCURSES_TPARM_VARARGS
extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */
#else
-extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG); /* special */
extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */
#endif
@@ -854,7 +881,7 @@ extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */
/*
* vid_attr() was implemented originally based on a draft of X/Open curses.
*/
-#ifndef NCURSES_WIDECHAR
+#if !NCURSES_WIDECHAR
#define vid_attr(a,pair,opts) vidattr(a)
#endif
@@ -929,7 +956,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(beep) (SCREEN*); /* implemented:SP_FU
extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(can_change_color) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(cbreak) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(curs_set) (SCREEN*, int); /* implemented:SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(color_content) (SCREEN*, short, short*, short*, short*); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(color_content) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T*, NCURSES_COLOR_T*, NCURSES_COLOR_T*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_prog_mode) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_shell_mode) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(delay_output) (SCREEN*, int); /* implemented:SP_FUNC */
@@ -945,8 +972,8 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(halfdelay) (SCREEN*, int); /* impleme
extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_colors) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_ic) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_il) (SCREEN*); /* implemented:SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_color) (SCREEN*, short, short, short, short); /* implemented:SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_pair) (SCREEN*, short, short, short); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_color) (SCREEN*, NCURSES_COLOR_T, NCURSES_COLOR_T, NCURSES_COLOR_T, NCURSES_COLOR_T); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_pair) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T, NCURSES_COLOR_T); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(intrflush) (SCREEN*, WINDOW*, bool); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(isendwin) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(keyname) (SCREEN*, int); /* implemented:SP_FUNC */
@@ -963,7 +990,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noecho) (SCREEN*); /* implemented:SP_
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nonl) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(noqiflush) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noraw) (SCREEN*); /* implemented:SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(pair_content) (SCREEN*, short, short*, short*); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(pair_content) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T*, NCURSES_COLOR_T*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(qiflush) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(raw) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_prog_mode) (SCREEN*); /* implemented:SP_FUNC */
@@ -978,9 +1005,9 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attroff) (SCREEN*, const chtype);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attron) (SCREEN*, const chtype); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attrset) (SCREEN*, const chtype); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(slk_attr) (SCREEN*); /* implemented:SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (SCREEN*, const attr_t, short, void*); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (SCREEN*, const attr_t, NCURSES_PAIRS_T, void*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_clear) (SCREEN*); /* implemented:SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_color) (SCREEN*, short); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_color) (SCREEN*, NCURSES_PAIRS_T); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_init) (SCREEN*, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(slk_label) (SCREEN*, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_noutrefresh) (SCREEN*); /* implemented:SP_FUNC */
@@ -994,6 +1021,7 @@ extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(termname) (SCREEN*); /* implemente
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(typeahead) (SCREEN*, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetch) (SCREEN*, int); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_env) (SCREEN*, bool); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_tioctl) (SCREEN*, bool); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidattr) (SCREEN*, chtype); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vidputs) (SCREEN*, chtype, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
#if @NCURSES_EXT_FUNCS@
@@ -1022,7 +1050,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
/* attributes */
#define NCURSES_ATTR_SHIFT 8
-#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT))
+#define NCURSES_BITS(mask,shift) (NCURSES_CAST(chtype,(mask)) << ((shift) + NCURSES_ATTR_SHIFT))
#define A_NORMAL (@cf_cv_1UL@ - @cf_cv_1UL@)
#define A_ATTRIBUTES NCURSES_BITS(~(@cf_cv_1UL@ - @cf_cv_1UL@),0)
@@ -1044,6 +1072,10 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
#define A_TOP NCURSES_BITS(@cf_cv_1UL@,21)
#define A_VERTICAL NCURSES_BITS(@cf_cv_1UL@,22)
+#if @NCURSES_EXT_FUNCS@
+#define A_ITALIC NCURSES_BITS(@cf_cv_1UL@,23) /* ncurses extension */
+#endif
+
/*
* Most of the pseudo functions are macros that either provide compatibility
* with older versions of curses, or provide inline functionality to improve
@@ -1084,7 +1116,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
*/
#define wgetstr(w, s) wgetnstr(w, s, -1)
-#define getnstr(s, n) wgetnstr(stdscr, s, n)
+#define getnstr(s, n) wgetnstr(stdscr, s, (n))
#define setterm(term) setupterm(term, 1, (int *)0)
@@ -1115,7 +1147,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
#if !NCURSES_OPAQUE
-#if defined(NCURSES_WIDECHAR) && @NCURSES_EXT_COLORS@
+#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
#define wattrset(win,at) ((win) \
? ((win)->_color = PAIR_NUMBER(at), \
(win)->_attrs = NCURSES_CAST(attr_t, at), \
@@ -1137,15 +1169,15 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
#define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0)
#define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br)
-#define hline(ch, n) whline(stdscr, ch, n)
-#define vline(ch, n) wvline(stdscr, ch, n)
+#define hline(ch, n) whline(stdscr, ch, (n))
+#define vline(ch, n) wvline(stdscr, ch, (n))
#define winstr(w, s) winnstr(w, s, -1)
#define winchstr(w, s) winchnstr(w, s, -1)
#define winsstr(w, s) winsnstr(w, s, -1)
#if !NCURSES_OPAQUE
-#define redrawwin(win) wredrawln(win, 0, (win)->_maxy+1)
+#define redrawwin(win) wredrawln(win, 0, ((win) ? (win)->_maxy+1 : -1))
#endif /* NCURSES_OPAQUE */
#define waddstr(win,str) waddnstr(win,str,-1)
@@ -1154,55 +1186,55 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
/*
* These apply to the first 256 color pairs.
*/
-#define COLOR_PAIR(n) NCURSES_BITS(n, 0)
-#define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,a) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
+#define COLOR_PAIR(n) NCURSES_BITS((n), 0)
+#define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,(a)) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
/*
* pseudo functions for standard screen
*/
-#define addch(ch) waddch(stdscr,ch)
-#define addchnstr(str,n) waddchnstr(stdscr,str,n)
-#define addchstr(str) waddchstr(stdscr,str)
-#define addnstr(str,n) waddnstr(stdscr,str,n)
-#define addstr(str) waddnstr(stdscr,str,-1)
-#define attroff(at) wattroff(stdscr,at)
-#define attron(at) wattron(stdscr,at)
-#define attrset(at) wattrset(stdscr,at)
-#define attr_get(ap,cp,o) wattr_get(stdscr,ap,cp,o)
-#define attr_off(a,o) wattr_off(stdscr,a,o)
-#define attr_on(a,o) wattr_on(stdscr,a,o)
-#define attr_set(a,c,o) wattr_set(stdscr,a,c,o)
-#define bkgd(ch) wbkgd(stdscr,ch)
-#define bkgdset(ch) wbkgdset(stdscr,ch)
-#define chgat(n,a,c,o) wchgat(stdscr,n,a,c,o)
+#define addch(ch) waddch(stdscr,(ch))
+#define addchnstr(str,n) waddchnstr(stdscr,(str),(n))
+#define addchstr(str) waddchstr(stdscr,(str))
+#define addnstr(str,n) waddnstr(stdscr,(str),(n))
+#define addstr(str) waddnstr(stdscr,(str),-1)
+#define attroff(at) wattroff(stdscr,(at))
+#define attron(at) wattron(stdscr,(at))
+#define attrset(at) wattrset(stdscr,(at))
+#define attr_get(ap,cp,o) wattr_get(stdscr,(ap),(cp),(o))
+#define attr_off(a,o) wattr_off(stdscr,(a),(o))
+#define attr_on(a,o) wattr_on(stdscr,(a),(o))
+#define attr_set(a,c,o) wattr_set(stdscr,(a),(c),(o))
+#define bkgd(ch) wbkgd(stdscr,(ch))
+#define bkgdset(ch) wbkgdset(stdscr,(ch))
+#define chgat(n,a,c,o) wchgat(stdscr,(n),(a),(c),(o))
#define clear() wclear(stdscr)
#define clrtobot() wclrtobot(stdscr)
#define clrtoeol() wclrtoeol(stdscr)
-#define color_set(c,o) wcolor_set(stdscr,c,o)
+#define color_set(c,o) wcolor_set(stdscr,(c),(o))
#define delch() wdelch(stdscr)
#define deleteln() winsdelln(stdscr,-1)
-#define echochar(c) wechochar(stdscr,c)
+#define echochar(c) wechochar(stdscr,(c))
#define erase() werase(stdscr)
#define getch() wgetch(stdscr)
-#define getstr(str) wgetstr(stdscr,str)
+#define getstr(str) wgetstr(stdscr,(str))
#define inch() winch(stdscr)
-#define inchnstr(s,n) winchnstr(stdscr,s,n)
-#define inchstr(s) winchstr(stdscr,s)
-#define innstr(s,n) winnstr(stdscr,s,n)
-#define insch(c) winsch(stdscr,c)
-#define insdelln(n) winsdelln(stdscr,n)
+#define inchnstr(s,n) winchnstr(stdscr,(s),(n))
+#define inchstr(s) winchstr(stdscr,(s))
+#define innstr(s,n) winnstr(stdscr,(s),(n))
+#define insch(c) winsch(stdscr,(c))
+#define insdelln(n) winsdelln(stdscr,(n))
#define insertln() winsdelln(stdscr,1)
-#define insnstr(s,n) winsnstr(stdscr,s,n)
-#define insstr(s) winsstr(stdscr,s)
-#define instr(s) winstr(stdscr,s)
-#define move(y,x) wmove(stdscr,y,x)
+#define insnstr(s,n) winsnstr(stdscr,(s),(n))
+#define insstr(s) winsstr(stdscr,(s))
+#define instr(s) winstr(stdscr,(s))
+#define move(y,x) wmove(stdscr,(y),(x))
#define refresh() wrefresh(stdscr)
-#define scrl(n) wscrl(stdscr,n)
-#define setscrreg(t,b) wsetscrreg(stdscr,t,b)
+#define scrl(n) wscrl(stdscr,(n))
+#define setscrreg(t,b) wsetscrreg(stdscr,(t),(b))
#define standend() wstandend(stdscr)
#define standout() wstandout(stdscr)
-#define timeout(delay) wtimeout(stdscr,delay)
+#define timeout(delay) wtimeout(stdscr,(delay))
#define wdeleteln(win) winsdelln(win,-1)
#define winsertln(win) winsdelln(win,1)
@@ -1210,70 +1242,75 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (SCREEN*, int); /*
* mv functions
*/
-#define mvwaddch(win,y,x,ch) (wmove(win,y,x) == ERR ? ERR : waddch(win,ch))
-#define mvwaddchnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n))
-#define mvwaddchstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1))
-#define mvwaddnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n))
-#define mvwaddstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1))
-#define mvwdelch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wdelch(win))
-#define mvwchgat(win,y,x,n,a,c,o) (wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o))
-#define mvwgetch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wgetch(win))
-#define mvwgetnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n))
-#define mvwgetstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : wgetstr(win,str))
-#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 ? 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))
-#define mvwinsch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winsch(win,c))
-#define mvwinsnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n))
-#define mvwinsstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winsstr(win,s))
-#define mvwinstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winstr(win,s))
-#define mvwvline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline(win,c,n))
-
-#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch)
-#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,y,x,str,n)
-#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,y,x,str)
-#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,y,x,str,n)
-#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str)
-#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,y,x,n,a,c,o)
-#define mvdelch(y,x) mvwdelch(stdscr,y,x)
-#define mvgetch(y,x) mvwgetch(stdscr,y,x)
-#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,y,x,str,n)
-#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str)
-#define mvhline(y,x,c,n) mvwhline(stdscr,y,x,c,n)
-#define mvinch(y,x) mvwinch(stdscr,y,x)
-#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,y,x,s,n)
-#define mvinchstr(y,x,s) mvwinchstr(stdscr,y,x,s)
-#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,y,x,s,n)
-#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c)
-#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,y,x,s,n)
-#define mvinsstr(y,x,s) mvwinsstr(stdscr,y,x,s)
-#define mvinstr(y,x,s) mvwinstr(stdscr,y,x,s)
-#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n)
+#define mvwaddch(win,y,x,ch) (wmove((win),(y),(x)) == ERR ? ERR : waddch((win),(ch)))
+#define mvwaddchnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),(n)))
+#define mvwaddchstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),-1))
+#define mvwaddnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),(n)))
+#define mvwaddstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),-1))
+#define mvwdelch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wdelch(win))
+#define mvwchgat(win,y,x,n,a,c,o) (wmove((win),(y),(x)) == ERR ? ERR : wchgat((win),(n),(a),(c),(o)))
+#define mvwgetch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wgetch(win))
+#define mvwgetnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : wgetnstr((win),(str),(n)))
+#define mvwgetstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : wgetstr((win),(str)))
+#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 ? 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)))
+#define mvwinsch(win,y,x,c) (wmove((win),(y),(x)) == ERR ? ERR : winsch((win),(c)))
+#define mvwinsnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winsnstr((win),(s),(n)))
+#define mvwinsstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winsstr((win),(s)))
+#define mvwinstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winstr((win),(s)))
+#define mvwvline(win,y,x,c,n) (wmove((win),(y),(x)) == ERR ? ERR : wvline((win),(c),(n)))
+
+#define mvaddch(y,x,ch) mvwaddch(stdscr,(y),(x),(ch))
+#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,(y),(x),(str),(n))
+#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,(y),(x),(str))
+#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,(y),(x),(str),(n))
+#define mvaddstr(y,x,str) mvwaddstr(stdscr,(y),(x),(str))
+#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,(y),(x),(n),(a),(c),(o))
+#define mvdelch(y,x) mvwdelch(stdscr,(y),(x))
+#define mvgetch(y,x) mvwgetch(stdscr,(y),(x))
+#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,(y),(x),(str),(n))
+#define mvgetstr(y,x,str) mvwgetstr(stdscr,(y),(x),(str))
+#define mvhline(y,x,c,n) mvwhline(stdscr,(y),(x),(c),(n))
+#define mvinch(y,x) mvwinch(stdscr,(y),(x))
+#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,(y),(x),(s),(n))
+#define mvinchstr(y,x,s) mvwinchstr(stdscr,(y),(x),(s))
+#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,(y),(x),(s),(n))
+#define mvinsch(y,x,c) mvwinsch(stdscr,(y),(x),(c))
+#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,(y),(x),(s),(n))
+#define mvinsstr(y,x,s) mvwinsstr(stdscr,(y),(x),(s))
+#define mvinstr(y,x,s) mvwinstr(stdscr,(y),(x),(s))
+#define mvvline(y,x,c,n) mvwvline(stdscr,(y),(x),(c),(n))
/*
* Some wide-character functions can be implemented without the extensions.
*/
#if !NCURSES_OPAQUE
-#define getbkgd(win) ((win)->_bkgd)
+#define getbkgd(win) ((win) ? ((win)->_bkgd) : 0)
#endif /* NCURSES_OPAQUE */
#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a))
#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a))
#if !NCURSES_OPAQUE
-#if defined(NCURSES_WIDECHAR) && @NCURSES_EXT_COLORS@
-#define wattr_set(win,a,p,opts) ((win)->_attrs = ((a) & ~A_COLOR), \
- (win)->_color = (p), \
+#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@
+#define wattr_set(win,a,p,opts) (((win) \
+ ? ((win)->_attrs = ((a) & ~A_COLOR), \
+ (win)->_color = (p)) \
+ : OK), \
OK)
-#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \
- (void)((p) != (void *)0 && (*(p) = (short)(win)->_color)), \
+#define wattr_get(win,a,p,opts) ((void)(((a) != (void *)0) ? (*(a) = (win) ? (win)->_attrs : 0) : OK), \
+ (void)(((p) != (void *)0) ? (*(p) = (NCURSES_PAIRS_T) ((win) ? (win)->_color : 0)) : OK), \
OK)
#else
-#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | (attr_t)COLOR_PAIR(p)), OK)
-#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \
- (void)((p) != (void *)0 && (*(p) = (short)PAIR_NUMBER((win)->_attrs))), \
+#define wattr_set(win,a,p,opts) (((win) \
+ ? ((win)->_attrs = (((a) & ~A_COLOR) | (attr_t)COLOR_PAIR(p))) \
+ : OK), \
+ OK)
+#define wattr_get(win,a,p,opts) ((void)(((a) != (void *)0) ? (*(a) = (win) ? (win)->_attrs : 0) : OK), \
+ (void)(((p) != (void *)0) ? (*(p) = (NCURSES_PAIRS_T) ((win) ? PAIR_NUMBER((win)->_attrs) : 0)) : OK), \
OK)
#endif
#endif /* NCURSES_OPAQUE */
diff --git a/contrib/ncurses/include/curses.tail b/contrib/ncurses/include/curses.tail
index 098c898ed571..5f911aee7b15 100644
--- a/contrib/ncurses/include/curses.tail
+++ b/contrib/ncurses/include/curses.tail
@@ -1,4 +1,4 @@
-/* $Id: curses.tail,v 1.20 2010/03/28 19:10:55 tom Exp $ */
+/* $Id: curses.tail,v 1.21 2011/10/29 20:03:22 tom Exp $ */
/*
* vile:cmode:
* This file is part of ncurses, designed to be appended after curses.h.in
@@ -133,7 +133,7 @@ extern NCURSES_EXPORT(char *) _nc_tracebits (void);
extern NCURSES_EXPORT(char *) _tracechar (int);
extern NCURSES_EXPORT(char *) _tracechtype (chtype);
extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype);
-#ifdef NCURSES_WIDECHAR
+#if NCURSES_WIDECHAR
#define _tracech_t _tracecchar_t
extern NCURSES_EXPORT(char *) _tracecchar_t (const cchar_t *);
#define _tracech_t2 _tracecchar_t2
diff --git a/contrib/ncurses/include/curses.wide b/contrib/ncurses/include/curses.wide
index 44135eecb9d2..5d130a962284 100644
--- a/contrib/ncurses/include/curses.wide
+++ b/contrib/ncurses/include/curses.wide
@@ -1,4 +1,4 @@
-/* $Id: curses.wide,v 1.42 2010/03/30 00:39:41 tom Exp $ */
+/* $Id: curses.wide,v 1.46 2014/02/01 22:00:32 tom Exp $ */
/*
* vile:cmode:
* This file is part of ncurses, designed to be appended after curses.h.in
@@ -6,11 +6,11 @@
*/
#define _XOPEN_CURSES 1
-#ifdef NCURSES_WIDECHAR
+#if NCURSES_WIDECHAR
extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
-#define NCURSES_WACS(c) (&_nc_wacs[(unsigned char)c])
+#define NCURSES_WACS(c) (&_nc_wacs[NCURSES_CAST(unsigned char,(c))])
#define WACS_BSSB NCURSES_WACS('l')
#define WACS_SSBB NCURSES_WACS('m')
@@ -135,7 +135,7 @@ 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) getcchar (const cchar_t *, wchar_t*, attr_t*, NCURSES_PAIRS_T*, 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 (cchar_t *); /* generated:WIDEC */
@@ -185,12 +185,12 @@ extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *); /*
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 *); /* implemented */
-extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, short, const void *); /* implemented */
+extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, NCURSES_PAIRS_T, const void *); /* implemented */
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 *, NCURSES_OUTC); /* implemented */
+extern NCURSES_EXPORT(int) vid_attr (attr_t, NCURSES_PAIRS_T, void *); /* implemented */
+extern NCURSES_EXPORT(int) vid_puts (attr_t, NCURSES_PAIRS_T, void *, NCURSES_OUTC); /* 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 */
@@ -221,8 +221,8 @@ extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* imple
extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(term_attrs) (SCREEN*); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(unget_wch) (SCREEN*, const wchar_t); /* implemented:SP_FUNC */
extern NCURSES_EXPORT(wchar_t*) NCURSES_SP_NAME(wunctrl) (SCREEN*, cchar_t *); /* implemented:SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_attr) (SCREEN*, attr_t, short, void *); /* implemented:SP_FUNC */
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, short, void *, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_attr) (SCREEN*, attr_t, NCURSES_PAIRS_T, void *); /* implemented:SP_FUNC */
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, NCURSES_PAIRS_T, void *, NCURSES_SP_OUTC); /* implemented:SP_FUNC */
#endif
#ifndef NCURSES_NOMACROS
@@ -230,77 +230,77 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, short, vo
/*
* XSI curses macros for XPG4 conformance.
*/
-#define add_wch(c) wadd_wch(stdscr,c)
-#define add_wchnstr(str,n) wadd_wchnstr(stdscr,str,n)
-#define add_wchstr(str) wadd_wchstr(stdscr,str)
-#define addnwstr(wstr,n) waddnwstr(stdscr,wstr,n)
-#define addwstr(wstr) waddwstr(stdscr,wstr)
-#define bkgrnd(c) wbkgrnd(stdscr,c)
-#define bkgrndset(c) wbkgrndset(stdscr,c)
-#define border_set(l,r,t,b,tl,tr,bl,br) wborder_set(stdscr,l,r,t,b,tl,tr,bl,br)
-#define box_set(w,v,h) wborder_set(w,v,v,h,h,0,0,0,0)
-#define echo_wchar(c) wecho_wchar(stdscr,c)
-#define get_wch(c) wget_wch(stdscr,c)
-#define get_wstr(t) wget_wstr(stdscr,t)
-#define getbkgrnd(wch) wgetbkgrnd(stdscr,wch)
-#define getn_wstr(t,n) wgetn_wstr(stdscr,t,n)
-#define hline_set(c,n) whline_set(stdscr,c,n)
-#define in_wch(c) win_wch(stdscr,c)
-#define in_wchnstr(c,n) win_wchnstr(stdscr,c,n)
-#define in_wchstr(c) win_wchstr(stdscr,c)
-#define innwstr(c,n) winnwstr(stdscr,c,n)
-#define ins_nwstr(t,n) wins_nwstr(stdscr,t,n)
-#define ins_wch(c) wins_wch(stdscr,c)
-#define ins_wstr(t) wins_wstr(stdscr,t)
-#define inwstr(c) winwstr(stdscr,c)
-#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 wget_wstr(w,t) wgetn_wstr(w,t,-1)
-#define win_wchstr(w,c) win_wchnstr(w,c,-1)
-#define wins_wstr(w,t) wins_nwstr(w,t,-1)
+#define add_wch(c) wadd_wch(stdscr,(c))
+#define add_wchnstr(str,n) wadd_wchnstr(stdscr,(str),(n))
+#define add_wchstr(str) wadd_wchstr(stdscr,(str))
+#define addnwstr(wstr,n) waddnwstr(stdscr,(wstr),(n))
+#define addwstr(wstr) waddwstr(stdscr,(wstr))
+#define bkgrnd(c) wbkgrnd(stdscr,(c))
+#define bkgrndset(c) wbkgrndset(stdscr,(c))
+#define border_set(l,r,t,b,tl,tr,bl,br) wborder_set(stdscr,(l),(r),(t),(b),tl,tr,bl,br)
+#define box_set(w,v,h) wborder_set((w),(v),(v),(h),(h),0,0,0,0)
+#define echo_wchar(c) wecho_wchar(stdscr,(c))
+#define get_wch(c) wget_wch(stdscr,(c))
+#define get_wstr(t) wget_wstr(stdscr,(t))
+#define getbkgrnd(wch) wgetbkgrnd(stdscr,(wch))
+#define getn_wstr(t,n) wgetn_wstr(stdscr,(t),(n))
+#define hline_set(c,n) whline_set(stdscr,(c),(n))
+#define in_wch(c) win_wch(stdscr,(c))
+#define in_wchnstr(c,n) win_wchnstr(stdscr,(c),(n))
+#define in_wchstr(c) win_wchstr(stdscr,(c))
+#define innwstr(c,n) winnwstr(stdscr,(c),(n))
+#define ins_nwstr(t,n) wins_nwstr(stdscr,(t),(n))
+#define ins_wch(c) wins_wch(stdscr,(c))
+#define ins_wstr(t) wins_wstr(stdscr,(t))
+#define inwstr(c) winwstr(stdscr,(c))
+#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 wget_wstr(w,t) wgetn_wstr((w),(t),-1)
+#define win_wchstr(w,c) win_wchnstr((w),(c),-1)
+#define wins_wstr(w,t) wins_nwstr((w),(t),-1)
#if !NCURSES_OPAQUE
-#define wgetbkgrnd(win,wch) (*wch = win->_bkgrnd, OK)
+#define wgetbkgrnd(win,wch) ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK)
#endif
-#define mvadd_wch(y,x,c) mvwadd_wch(stdscr,y,x,c)
-#define mvadd_wchnstr(y,x,s,n) mvwadd_wchnstr(stdscr,y,x,s,n)
-#define mvadd_wchstr(y,x,s) mvwadd_wchstr(stdscr,y,x,s)
-#define mvaddnwstr(y,x,wstr,n) mvwaddnwstr(stdscr,y,x,wstr,n)
-#define mvaddwstr(y,x,wstr) mvwaddwstr(stdscr,y,x,wstr)
-#define mvget_wch(y,x,c) mvwget_wch(stdscr,y,x,c)
-#define mvget_wstr(y,x,t) mvwget_wstr(stdscr,y,x,t)
-#define mvgetn_wstr(y,x,t,n) mvwgetn_wstr(stdscr,y,x,t,n)
-#define mvhline_set(y,x,c,n) mvwhline_set(stdscr,y,x,c,n)
-#define mvin_wch(y,x,c) mvwin_wch(stdscr,y,x,c)
-#define mvin_wchnstr(y,x,c,n) mvwin_wchnstr(stdscr,y,x,c,n)
-#define mvin_wchstr(y,x,c) mvwin_wchstr(stdscr,y,x,c)
-#define mvinnwstr(y,x,c,n) mvwinnwstr(stdscr,y,x,c,n)
-#define mvins_nwstr(y,x,t,n) mvwins_nwstr(stdscr,y,x,t,n)
-#define mvins_wch(y,x,c) mvwins_wch(stdscr,y,x,c)
-#define mvins_wstr(y,x,t) mvwins_wstr(stdscr,y,x,t)
-#define mvinwstr(y,x,c) mvwinwstr(stdscr,y,x,c)
-#define mvvline_set(y,x,c,n) mvwvline_set(stdscr,y,x,c,n)
+#define mvadd_wch(y,x,c) mvwadd_wch(stdscr,(y),(x),(c))
+#define mvadd_wchnstr(y,x,s,n) mvwadd_wchnstr(stdscr,(y),(x),(s),(n))
+#define mvadd_wchstr(y,x,s) mvwadd_wchstr(stdscr,(y),(x),(s))
+#define mvaddnwstr(y,x,wstr,n) mvwaddnwstr(stdscr,(y),(x),(wstr),(n))
+#define mvaddwstr(y,x,wstr) mvwaddwstr(stdscr,(y),(x),(wstr))
+#define mvget_wch(y,x,c) mvwget_wch(stdscr,(y),(x),(c))
+#define mvget_wstr(y,x,t) mvwget_wstr(stdscr,(y),(x),(t))
+#define mvgetn_wstr(y,x,t,n) mvwgetn_wstr(stdscr,(y),(x),(t),(n))
+#define mvhline_set(y,x,c,n) mvwhline_set(stdscr,(y),(x),(c),(n))
+#define mvin_wch(y,x,c) mvwin_wch(stdscr,(y),(x),(c))
+#define mvin_wchnstr(y,x,c,n) mvwin_wchnstr(stdscr,(y),(x),(c),(n))
+#define mvin_wchstr(y,x,c) mvwin_wchstr(stdscr,(y),(x),(c))
+#define mvinnwstr(y,x,c,n) mvwinnwstr(stdscr,(y),(x),(c),(n))
+#define mvins_nwstr(y,x,t,n) mvwins_nwstr(stdscr,(y),(x),(t),(n))
+#define mvins_wch(y,x,c) mvwins_wch(stdscr,(y),(x),(c))
+#define mvins_wstr(y,x,t) mvwins_wstr(stdscr,(y),(x),(t))
+#define mvinwstr(y,x,c) mvwinwstr(stdscr,(y),(x),(c))
+#define mvvline_set(y,x,c,n) mvwvline_set(stdscr,(y),(x),(c),(n))
-#define mvwadd_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wadd_wch(win,c))
-#define mvwadd_wchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : wadd_wchnstr(win,s,n))
-#define mvwadd_wchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : wadd_wchstr(win,s))
-#define mvwaddnwstr(win,y,x,wstr,n) (wmove(win,y,x) == ERR ? ERR : waddnwstr(win,wstr,n))
-#define mvwaddwstr(win,y,x,wstr) (wmove(win,y,x) == ERR ? ERR : waddwstr(win,wstr))
-#define mvwget_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wget_wch(win,c))
-#define mvwget_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wget_wstr(win,t))
-#define mvwgetn_wstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,n))
-#define mvwhline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline_set(win,c,n))
-#define mvwin_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wch(win,c))
-#define mvwin_wchnstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : win_wchnstr(win,c,n))
-#define mvwin_wchstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wchstr(win,c))
-#define mvwinnwstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : winnwstr(win,c,n))
-#define mvwins_nwstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wins_nwstr(win,t,n))
-#define mvwins_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wins_wch(win,c))
-#define mvwins_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wins_wstr(win,t))
-#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))
+#define mvwadd_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wch((win),(c)))
+#define mvwadd_wchnstr(win,y,x,s,n) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wchnstr((win),(s),(n)))
+#define mvwadd_wchstr(win,y,x,s) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wchstr((win),(s)))
+#define mvwaddnwstr(win,y,x,wstr,n) (wmove(win,(y),(x)) == ERR ? ERR : waddnwstr((win),(wstr),(n)))
+#define mvwaddwstr(win,y,x,wstr) (wmove(win,(y),(x)) == ERR ? ERR : waddwstr((win),(wstr)))
+#define mvwget_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : wget_wch((win),(c)))
+#define mvwget_wstr(win,y,x,t) (wmove(win,(y),(x)) == ERR ? ERR : wget_wstr((win),(t)))
+#define mvwgetn_wstr(win,y,x,t,n) (wmove(win,(y),(x)) == ERR ? ERR : wgetn_wstr((win),(t),(n)))
+#define mvwhline_set(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : whline_set((win),(c),(n)))
+#define mvwin_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : win_wch((win),(c)))
+#define mvwin_wchnstr(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : win_wchnstr((win),(c),(n)))
+#define mvwin_wchstr(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : win_wchstr((win),(c)))
+#define mvwinnwstr(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : winnwstr((win),(c),(n)))
+#define mvwins_nwstr(win,y,x,t,n) (wmove(win,(y),(x)) == ERR ? ERR : wins_nwstr((win),(t),(n)))
+#define mvwins_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : wins_wch((win),(c)))
+#define mvwins_wstr(win,y,x,t) (wmove(win,(y),(x)) == ERR ? ERR : wins_wstr((win),(t)))
+#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 */
diff --git a/contrib/ncurses/include/headers b/contrib/ncurses/include/headers
index 6c367950c9f4..2f20bed80e33 100644
--- a/contrib/ncurses/include/headers
+++ b/contrib/ncurses/include/headers
@@ -1,6 +1,6 @@
-# $Id: headers,v 1.10 2009/09/05 17:46:30 tom Exp $
+# $Id: headers,v 1.13 2013/10/20 00:32:21 tom Exp $
##############################################################################
-# Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -29,14 +29,24 @@
#
# Author: Thomas E. Dickey 1996-on
#
-term.h
curses.h
unctrl.h
-termcap.h
ncurses_dll.h
+
+# Support for termcap (and tic, etc.), which can be a separate library
+@ termlib
+term.h
+termcap.h
+
+# Headers used only for tic, other programs using internal interfaces
@ ticlib
$(srcdir)/tic.h
$(srcdir)/term_entry.h
$(srcdir)/nc_tparm.h
+# Porting
+@ port_win32con
+$(srcdir)/ncurses_mingw.h
+$(srcdir)/nc_mingw.h
+
# vile:makemode
diff --git a/contrib/ncurses/include/nc_alloc.h b/contrib/ncurses/include/nc_alloc.h
index da70906f552f..356f6056d521 100644
--- a/contrib/ncurses/include/nc_alloc.h
+++ b/contrib/ncurses/include/nc_alloc.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: nc_alloc.h,v 1.18 2010/11/20 22:59:49 tom Exp $ */
+/* $Id: nc_alloc.h,v 1.22 2013/01/26 21:56:51 tom Exp $ */
#ifndef NC_ALLOC_included
#define NC_ALLOC_included 1
+/* *INDENT-OFF* */
#ifdef __cplusplus
extern "C" {
@@ -94,6 +95,7 @@ extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int) GCC
/* doalloc.c */
extern NCURSES_EXPORT(void *) _nc_doalloc(void *, size_t);
#if !HAVE_STRDUP
+#undef strdup
#define strdup _nc_strdup
extern NCURSES_EXPORT(char *) _nc_strdup(const char *);
#endif
@@ -101,12 +103,14 @@ extern NCURSES_EXPORT(char *) _nc_strdup(const char *);
/* entries.c */
extern NCURSES_EXPORT(void) _nc_leaks_tinfo(void);
-#define typeMalloc(type,elts) (type *)malloc((elts)*sizeof(type))
-#define typeCalloc(type,elts) (type *)calloc((elts),sizeof(type))
-#define typeRealloc(type,elts,ptr) (type *)_nc_doalloc(ptr, (elts)*sizeof(type))
+#define typeMalloc(type,elts) (type *)malloc((size_t)(elts)*sizeof(type))
+#define typeCalloc(type,elts) (type *)calloc((size_t)(elts),sizeof(type))
+#define typeRealloc(type,elts,ptr) (type *)_nc_doalloc(ptr, (size_t)(elts)*sizeof(type))
#ifdef __cplusplus
}
#endif
+/* *INDENT-ON* */
+
#endif /* NC_ALLOC_included */
diff --git a/contrib/ncurses/ncurses/tty/tty_input.h b/contrib/ncurses/include/nc_string.h
index e520793eea64..7e6ccd410cbf 100644
--- a/contrib/ncurses/ncurses/tty/tty_input.h
+++ b/contrib/ncurses/include/nc_string.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 2012,2013 Free 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,52 @@
* authorization. *
****************************************************************************/
+/****************************************************************************
+ * Author: Thomas E. Dickey 2012 *
+ ****************************************************************************/
+
+#ifndef STRING_HACKS_H
+#define STRING_HACKS_H 1
+
+#include <ncurses_cfg.h>
+
/*
- * $Id: tty_input.h,v 1.2 2000/12/10 02:26:51 tom Exp $
+ * $Id: nc_string.h,v 1.4 2013/12/15 01:09:19 tom Exp $
+ *
+ * String-hacks. Use these macros to stifle warnings on (presumably) correct
+ * uses of strcat, strcpy and sprintf.
+ *
+ * By the way -
+ * A fundamental limitation of the interfaces (and frequent issue in bug
+ * reports using these functions) is that sizes are passed as unsigned values
+ * (with associated sign-extension problems), limiting their effectiveness
+ * when checking for buffer overflow.
*/
-#ifndef TTY_INPUT_H
-#define TTY_INPUT_H 1
-
-extern NCURSES_EXPORT(bool) _nc_tty_mouse_mask (mmask_t);
-extern NCURSES_EXPORT(bool) _nc_tty_pending (void);
-extern NCURSES_EXPORT(int) _nc_tty_next_event (int);
-extern NCURSES_EXPORT(void) _nc_tty_flags_changed (void);
-extern NCURSES_EXPORT(void) _nc_tty_flush (void);
-extern NCURSES_EXPORT(void) _nc_tty_input_resume (void);
-extern NCURSES_EXPORT(void) _nc_tty_input_suspend (void);
-
-struct tty_input_data {
- int _ifd; /* input file ptr for screen */
- int _keypad_xmit; /* current terminal state */
- int _meta_on; /* current terminal state */
-
- /*
- * These are the data that support the mouse interface.
- */
- bool (*_mouse_event) (SCREEN *);
- bool (*_mouse_inline)(SCREEN *);
- bool (*_mouse_parse) (int);
- void (*_mouse_resume)(SCREEN *);
- void (*_mouse_wrap) (SCREEN *);
- int _mouse_fd; /* file-descriptor, if any */
- int mousetype;
-};
-
-#endif /* TTY_INPUT_H */
+#ifdef __cplusplus
+#define NCURSES_VOID /* nothing */
+#else
+#define NCURSES_VOID (void)
+#endif
+
+#if USE_STRING_HACKS && HAVE_STRLCAT
+#define _nc_STRCAT(d,s,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,n))
+#else
+#define _nc_STRCAT(d,s,n) NCURSES_VOID strcat((d),(s))
+#endif
+
+#if USE_STRING_HACKS && HAVE_STRLCPY
+#define _nc_STRCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n))
+#else
+#define _nc_STRCPY(d,s,n) NCURSES_VOID strcpy((d),(s))
+#endif
+
+#if USE_STRING_HACKS && HAVE_SNPRINTF
+#define _nc_SPRINTF NCURSES_VOID snprintf
+#define _nc_SLIMIT(n) NCURSES_CAST(size_t,n),
+#else
+#define _nc_SPRINTF NCURSES_VOID sprintf
+#define _nc_SLIMIT(n) /* nothing */
+#endif
+
+#endif /* STRING_HACKS_H */
diff --git a/contrib/ncurses/include/nc_termios.h b/contrib/ncurses/include/nc_termios.h
new file mode 100644
index 000000000000..5a6360698b2a
--- /dev/null
+++ b/contrib/ncurses/include/nc_termios.h
@@ -0,0 +1,171 @@
+/****************************************************************************
+ * Copyright (c) 2011 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Author: Thomas E. Dickey 2011 *
+ ****************************************************************************/
+
+/* $Id: nc_termios.h,v 1.2 2011/06/25 20:44:05 tom Exp $ */
+
+#ifndef NC_TERMIOS_included
+#define NC_TERMIOS_included 1
+
+#if HAVE_TERMIOS_H && HAVE_TCGETATTR
+
+#else /* !HAVE_TERMIOS_H */
+
+#if HAVE_TERMIO_H
+
+/* Add definitions to make termio look like termios.
+ * But ifdef it, since there are some implementations
+ * that try to do this for us in a fake <termio.h>.
+ */
+#ifndef TCSADRAIN
+#define TCSADRAIN TCSETAW
+#endif
+#ifndef TCSAFLUSH
+#define TCSAFLUSH TCSETAF
+#endif
+#ifndef tcsetattr
+#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)
+#endif
+#ifndef tcgetattr
+#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)
+#endif
+#ifndef cfgetospeed
+#define cfgetospeed(t) ((t)->c_cflag & CBAUD)
+#endif
+#ifndef TCIFLUSH
+#define TCIFLUSH 0
+#endif
+#ifndef tcflush
+#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)
+#endif
+
+#else /* !HAVE_TERMIO_H */
+
+#if __MINGW32__
+
+/* c_cc chars */
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VTIME 5
+#define VMIN 6
+
+/* c_iflag bits */
+#define ISTRIP 0000040
+#define INLCR 0000100
+#define IGNCR 0000200
+#define ICRNL 0000400
+#define BRKINT 0000002
+#define PARMRK 0000010
+#define IXON 0002000
+#define IGNBRK 0000001
+#define IGNPAR 0000004
+#define INPCK 0000020
+#define IXOFF 0010000
+
+/* c_oflag bits */
+#define OPOST 0000001
+
+/* c_cflag bit meaning */
+#define CBAUD 0010017
+#define CSIZE 0000060
+#define CS8 0000060
+#define B0 0000000
+#define B50 0000001
+#define B75 0000002
+#define B110 0000003
+#define B134 0000004
+#define B150 0000005
+#define B200 0000006
+#define B300 0000007
+#define B600 0000010
+#define B1200 0000011
+#define B1800 0000012
+#define B2400 0000013
+#define B4800 0000014
+#define B9600 0000015
+#define CLOCAL 0004000
+#define CREAD 0000200
+#define CSTOPB 0000100
+#define HUPCL 0002000
+#define PARENB 0000400
+#define PARODD 0001000
+
+/* c_lflag bits */
+#define ECHO 0000010
+#define ECHONL 0000100
+#define ISIG 0000001
+#define IEXTEN 0100000
+#define ICANON 0000002
+#define NOFLSH 0000200
+#define ECHOE 0000020
+#define ECHOK 0000040
+
+/* tcflush() */
+#define TCIFLUSH 0
+
+/* tcsetattr uses these */
+#define TCSADRAIN 1
+
+/* ioctls */
+#define TCGETA 0x5405
+#define TCFLSH 0x540B
+#define TIOCGWINSZ 0x5413
+
+#ifndef cfgetospeed
+#define cfgetospeed(t) ((t)->c_cflag & CBAUD)
+#endif
+
+#ifndef tcsetattr
+#define tcsetattr(fd, cmd, arg) _nc_mingw_ioctl(fd, cmd, arg)
+#endif
+
+#ifndef tcgetattr
+#define tcgetattr(fd, arg) _nc_mingw_ioctl(fd, TCGETA, arg)
+#endif
+
+#ifndef tcflush
+#define tcflush(fd, arg) _nc_mingw_ioctl(fd, TCFLSH, arg)
+#endif
+
+#undef ttyname
+#define ttyname(fd) NULL
+
+#else
+
+#endif /* __MINGW32__ */
+#endif /* HAVE_TERMIO_H */
+
+#endif /* HAVE_TERMIOS_H */
+
+#endif /* NC_TERMIOS_included */
diff --git a/contrib/ncurses/include/nc_tparm.h b/contrib/ncurses/include/nc_tparm.h
index a8dbcacb1e31..248f6c077994 100644
--- a/contrib/ncurses/include/nc_tparm.h
+++ b/contrib/ncurses/include/nc_tparm.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2010,2012 Free 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 2006 *
****************************************************************************/
-/* $Id: nc_tparm.h,v 1.5 2010/12/25 20:27:22 tom Exp $ */
+/* $Id: nc_tparm.h,v 1.6 2012/02/18 21:34:42 tom Exp $ */
#ifndef NC_TPARM_included
#define NC_TPARM_included 1
@@ -40,8 +40,12 @@
* assumption of the varargs code.
*/
#ifndef TPARM_ARG
+#ifdef NCURSES_TPARM_ARG
+#define TPARM_ARG NCURSES_TPARM_ARG
+#else
#define TPARM_ARG long
#endif
+#endif /* TPARAM_ARG */
#define TPARM_N(n) (TPARM_ARG)(n)
diff --git a/contrib/ncurses/include/ncurses_defs b/contrib/ncurses/include/ncurses_defs
index 42d5908457cc..01ce9ea141cf 100644
--- a/contrib/ncurses/include/ncurses_defs
+++ b/contrib/ncurses/include/ncurses_defs
@@ -1,6 +1,6 @@
-# $Id: ncurses_defs,v 1.46 2011/03/22 09:17:59 tom Exp $
+# $Id: ncurses_defs,v 1.62 2013/12/14 23:52:07 tom Exp $
##############################################################################
-# Copyright (c) 2000-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 2000-2012,2013 Free Software 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,7 +33,7 @@
BROKEN_LINKER
BSD_TPUTS
-CC_HAS_PROTOS
+CGETENT_CONST /* nothing */
CPP_HAS_PARAM_INIT
CURSES_ACS_ARRAY acs_map
CURSES_WACS_ARRAY _nc_wacs
@@ -41,6 +41,7 @@ DECL_ERRNO
ETIP_NEEDS_MATH_H
GCC_NORETURN /* nothing */
GCC_UNUSED /* nothing */
+HAVE_ASSUME_DEFAULT_COLORS
HAVE_BIG_CORE
HAVE_BSD_CGETENT
HAVE_BSD_SIGNAL_H
@@ -69,6 +70,7 @@ HAVE_GPM_H
HAVE_GPP_BUILTIN_H
HAVE_GXX_BUILTIN_H
HAVE_HAS_KEY
+HAVE_INTTYPES_H
HAVE_IOSTREAM
HAVE_ISASCII
HAVE_ISSETUGID
@@ -102,6 +104,7 @@ HAVE_PANEL_H
HAVE_POLL
HAVE_POLL_H
HAVE_PURIFY
+HAVE_PUTENV
HAVE_PUTWC
HAVE_PUTWIN 1
HAVE_REGEXPR_H_FUNCS
@@ -115,6 +118,7 @@ HAVE_SCR_DUMP 1
HAVE_SELECT
HAVE_SETBUF
HAVE_SETBUFFER
+HAVE_SETENV
HAVE_SETUPTERM 1
HAVE_SETVBUF
HAVE_SGTTY_H
@@ -123,7 +127,11 @@ HAVE_SIGVEC
HAVE_SIZECHANGE
HAVE_SLK_COLOR
HAVE_SLK_INIT 1
+HAVE_SNPRINTF
+HAVE_STDINT_H
HAVE_STRDUP
+HAVE_STRLCAT
+HAVE_STRLCPY
HAVE_STRSTR
HAVE_SYMLINK
HAVE_SYS_BSDTYPES_H
@@ -153,9 +161,12 @@ HAVE_TYPEAHEAD 1
HAVE_TYPEINFO
HAVE_TYPE_ATTR_T
HAVE_TYPE_SIGACTION
+HAVE_UNCTRL_H 1
HAVE_UNISTD_H
HAVE_UNLINK
HAVE_USE_DEFAULT_COLORS
+HAVE_USE_SCREEN
+HAVE_USE_WINDOW
HAVE_VFSCANF
HAVE_VSNPRINTF
HAVE_VSSCANF
@@ -175,11 +186,12 @@ NCURSES_EXPANDED
NCURSES_EXT_COLORS
NCURSES_EXT_FUNCS
NCURSES_NO_PADDING
+NCURSES_OSPEED_COMPAT
NCURSES_PATHSEP ':'
+NCURSES_WIDECHAR
NEED_PTEM_H
NO_LEAKS
PURE_TERMINFO
-RETSIGTYPE
STDC_HEADERS
SVR4_ACTION
SVR4_TERMIO
@@ -189,7 +201,6 @@ TERMPATH "none"
TIME_WITH_SYS_TIME
TYPEOF_CHTYPE
USE_COLORFGBG
-USE_DATABASE
USE_GETCAP
USE_GETCAP_CACHE
USE_HARD_TABS
@@ -205,9 +216,9 @@ USE_REENTRANT
USE_SAFE_SPRINTF
USE_SCROLL_HINTS
USE_SIGWINCH
+USE_STRING_HACKS
USE_SYMLINKS
USE_SYSMOUSE
-USE_TERMCAP
USE_WEAK_SYMBOLS
USE_WIDEC_SUPPORT
USE_XMC_SUPPORT
diff --git a/contrib/ncurses/include/ncurses_mingw.h b/contrib/ncurses/include/ncurses_mingw.h
index 4ea1dad53737..7feb4c51c912 100644
--- a/contrib/ncurses/include/ncurses_mingw.h
+++ b/contrib/ncurses/include/ncurses_mingw.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -31,10 +31,10 @@
* *
****************************************************************************/
-/* $Id: ncurses_mingw.h,v 1.1 2008/12/14 19:22:16 juergen Exp $ */
+/* $Id: ncurses_mingw.h,v 1.2 2011/06/25 20:51:00 tom Exp $ */
/*
- * This is a placholder up to now and describes what needs to be implemented
+ * This is a placeholder up to now and describes what needs to be implemented
* to support I/O to external terminals with ncurses on the Windows OS.
*/
@@ -67,98 +67,8 @@ struct termios
speed_t c_ospeed; /* c_ospeed */
};
-/* c_cc chars */
-#define VINTR 0
-#define VQUIT 1
-#define VERASE 2
-#define VKILL 3
-#define VEOF 4
-#define VTIME 5
-#define VMIN 6
-
-/* c_iflag bits */
-#define ISTRIP 0000040
-#define INLCR 0000100
-#define IGNCR 0000200
-#define ICRNL 0000400
-#define BRKINT 0000002
-#define PARMRK 0000010
-#define IXON 0002000
-#define IGNBRK 0000001
-#define IGNPAR 0000004
-#define INPCK 0000020
-#define IXOFF 0010000
-
-/* c_oflag bits */
-#define OPOST 0000001
-
-/* c_cflag bit meaning */
-#define CBAUD 0010017
-#define CSIZE 0000060
-#define CS8 0000060
-#define B0 0000000
-#define B50 0000001
-#define B75 0000002
-#define B110 0000003
-#define B134 0000004
-#define B150 0000005
-#define B200 0000006
-#define B300 0000007
-#define B600 0000010
-#define B1200 0000011
-#define B1800 0000012
-#define B2400 0000013
-#define B4800 0000014
-#define B9600 0000015
-#define CLOCAL 0004000
-#define CREAD 0000200
-#define CSTOPB 0000100
-#define HUPCL 0002000
-#define PARENB 0000400
-#define PARODD 0001000
-
-/* c_lflag bits */
-#define ECHO 0000010
-#define ECHONL 0000100
-#define ISIG 0000001
-#define IEXTEN 0100000
-#define ICANON 0000002
-#define NOFLSH 0000200
-#define ECHOE 0000020
-#define ECHOK 0000040
-
-/* tcflush() */
-#define TCIFLUSH 0
-
-/* tcsetattr uses these */
-#define TCSADRAIN 1
-
-/* ioctls */
-#define TCGETA 0x5405
-#define TCFLSH 0x540B
-#define TIOCGWINSZ 0x5413
-
extern int _nc_mingw_ioctl(int fd, long int request, struct termios* arg);
extern void _nc_set_term_driver(void* term);
-#ifndef cfgetospeed
-#define cfgetospeed(t) ((t)->c_cflag & CBAUD)
-#endif
-
-#ifndef tcsetattr
-#define tcsetattr(fd, cmd, arg) _nc_mingw_ioctl(fd, cmd, arg)
-#endif
-
-#ifndef tcgetattr
-#define tcgetattr(fd, arg) _nc_mingw_ioctl(fd, TCGETA, arg)
-#endif
-
-#ifndef tcflush
-#define tcflush(fd, arg) _nc_mingw_ioctl(fd, TCFLSH, arg)
-#endif
-
-#undef ttyname
-#define ttyname(fd) NULL
-
-#endif
-#endif
+#endif /* _NC_MINGWH */
+#endif /* __MINGW32__ */
diff --git a/contrib/ncurses/include/term_entry.h b/contrib/ncurses/include/term_entry.h
index 4770f8659c48..f7c32c6cf61c 100644
--- a/contrib/ncurses/include/term_entry.h
+++ b/contrib/ncurses/include/term_entry.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
* and: Thomas E. Dickey 1998-on *
****************************************************************************/
-/* $Id: term_entry.h,v 1.37 2009/07/11 16:52:29 tom Exp $ */
+/* $Id: term_entry.h,v 1.44 2013/05/25 20:13:38 tom Exp $ */
/*
* term_entry.h -- interface to entry-manipulation code
@@ -47,28 +47,46 @@ extern "C" {
#include <term.h>
+ /*
+ * see db_iterator.c - this enumeration lists the places searched for a
+ * terminal description and defines the order in which they are searched.
+ */
+ typedef enum {
+ dbdTIC = 0, /* special, used by tic when writing entry */
+#if NCURSES_USE_DATABASE
+ dbdEnvOnce, /* the $TERMINFO environment variable */
+ dbdHome, /* $HOME/.terminfo */
+ dbdEnvList, /* the $TERMINFO_DIRS environment variable */
+ dbdCfgList, /* the compiled-in TERMINFO_DIRS value */
+ dbdCfgOnce, /* the compiled-in TERMINFO value */
+#endif
+#if NCURSES_USE_TERMCAP
+ dbdEnvOnce2, /* the $TERMCAP environment variable */
+ dbdEnvList2, /* the $TERMPATH environment variable */
+ dbdCfgList2, /* the compiled-in TERMPATH */
+#endif
+ dbdLAST
+ } DBDIRS;
+
#define MAX_USES 32
#define MAX_CROSSLINKS 16
-typedef struct entry {
- TERMTYPE tterm;
- unsigned nuses;
- struct
- {
- char *name;
- struct entry *link;
- long line;
- }
- uses[MAX_USES];
- int ncrosslinks;
- struct entry *crosslinks[MAX_CROSSLINKS];
- long cstart, cend;
- long startline;
- struct entry *next;
- struct entry *last;
-}
-ENTRY;
-
+ typedef struct entry {
+ TERMTYPE tterm;
+ unsigned nuses;
+ struct {
+ char *name;
+ struct entry *link;
+ long line;
+ } uses[MAX_USES];
+ int ncrosslinks;
+ struct entry *crosslinks[MAX_CROSSLINKS];
+ long cstart, cend;
+ long startline;
+ struct entry *next;
+ struct entry *last;
+ } ENTRY;
+/* *INDENT-OFF* */
#if NCURSES_XNAMES
#define NUM_BOOLEANS(tp) (tp)->num_Booleans
#define NUM_NUMBERS(tp) (tp)->num_Numbers
@@ -132,7 +150,7 @@ extern NCURSES_EXPORT(void) _nc_wrap_entry (ENTRY *const, bool);
/* alloc_ttype.c: elementary allocation code */
extern NCURSES_EXPORT(void) _nc_align_termtype (TERMTYPE *, TERMTYPE *);
-extern NCURSES_EXPORT(void) _nc_copy_termtype (TERMTYPE *, TERMTYPE *);
+extern NCURSES_EXPORT(void) _nc_copy_termtype (TERMTYPE *, const TERMTYPE *);
/* free_ttype.c: elementary allocation code */
extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *);
@@ -166,9 +184,9 @@ extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE *, bool);
/* trace_xnames.c */
extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *);
+/* *INDENT-ON* */
#ifdef __cplusplus
}
#endif
-
-#endif /* NCURSES_TERM_ENTRY_H_incl */
+#endif /* NCURSES_TERM_ENTRY_H_incl */
diff --git a/contrib/ncurses/include/tic.h b/contrib/ncurses/include/tic.h
index 4f3a21c22b3f..528a1b7d5af3 100644
--- a/contrib/ncurses/include/tic.h
+++ b/contrib/ncurses/include/tic.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free 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,14 +33,14 @@
****************************************************************************/
/*
- * $Id: tic.h,v 1.65 2009/08/08 17:52:46 tom Exp $
+ * $Id: tic.h,v 1.69 2012/03/17 18:22:10 tom Exp $
* tic.h - Global variables and structures for the terminfo
* compiler.
*/
#ifndef __TIC_H
#define __TIC_H
-
+/* *INDENT-OFF* */
#ifdef __cplusplus
extern "C" {
#endif
@@ -224,6 +224,12 @@ extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
#define NOTFOUND ((struct name_table_entry *) 0)
+/*
+ * The casts are required for correct sign-propagation with systems such as
+ * AIX, IRIX64, Solaris which default to unsigned characters. The C standard
+ * leaves this detail unspecified.
+ */
+
/* out-of-band values for representing absent capabilities */
#define ABSENT_BOOLEAN ((signed char)-1) /* 255 */
#define ABSENT_NUMERIC (-1)
@@ -248,6 +254,8 @@ extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool);
#define TERMINFO "/usr/share/terminfo"
#endif
+#ifdef NCURSES_TERM_ENTRY_H_incl
+
/* access.c */
extern NCURSES_EXPORT(unsigned) _nc_pathlast (const char *);
extern NCURSES_EXPORT(bool) _nc_is_abs_path (const char *);
@@ -270,6 +278,7 @@ extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *);
extern NCURSES_EXPORT_VAR(int) _nc_curr_col;
extern NCURSES_EXPORT_VAR(int) _nc_curr_line;
extern NCURSES_EXPORT_VAR(int) _nc_syntax;
+extern NCURSES_EXPORT_VAR(int) _nc_strict_bsd;
extern NCURSES_EXPORT_VAR(long) _nc_comment_end;
extern NCURSES_EXPORT_VAR(long) _nc_comment_start;
extern NCURSES_EXPORT_VAR(long) _nc_curr_file_pos;
@@ -314,23 +323,6 @@ extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent *
extern const char * _nc_progname;
/* 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 *);
@@ -339,8 +331,11 @@ extern NCURSES_EXPORT(void) _nc_last_db(void);
/* write_entry.c */
extern NCURSES_EXPORT(int) _nc_tic_written (void);
+#endif /* NCURSES_TERM_ENTRY_H_incl */
+
#ifdef __cplusplus
}
#endif
+/* *INDENT-ON* */
#endif /* __TIC_H */
diff --git a/contrib/ncurses/man/Makefile.in b/contrib/ncurses/man/Makefile.in
index 82a67065c322..ad40bc53a2c2 100644
--- a/contrib/ncurses/man/Makefile.in
+++ b/contrib/ncurses/man/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.45 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.47 2013/08/04 20:23:20 tom Exp $
##############################################################################
-# Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2010,2013 Free Software 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,8 +41,12 @@ DESTDIR = @DESTDIR@
srcdir = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
+datarootdir = @datarootdir@
datadir = @datadir@
mandir = @mandir@
+includesubdir = @includesubdir@
+
+INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
diff --git a/contrib/ncurses/man/clear.1 b/contrib/ncurses/man/clear.1
index b70d37e80c09..d8e24e5bb926 100644
--- a/contrib/ncurses/man/clear.1
+++ b/contrib/ncurses/man/clear.1
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2013 Free 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.8 2010/12/04 18:36:44 tom Exp $
+.\" $Id: clear.1,v 1.10 2013/06/22 22:22:11 tom Exp $
.TH @CLEAR@ 1 ""
.ds n 5
.SH NAME
@@ -35,9 +35,10 @@
\fB@CLEAR@\fR
.br
.SH DESCRIPTION
-\fB@CLEAR@\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.
+\fB@CLEAR@\fR clears your screen if this is possible,
+including its scrollback buffer (if the extended "E3" capability is defined).
+\fB@CLEAR@\fR looks in the environment for the terminal type and then in the
+\fBterminfo\fR database to determine how to clear the screen.
.PP
\fB@CLEAR@\fR ignores any command-line parameters that may be present.
.SH SEE ALSO
diff --git a/contrib/ncurses/man/curs_add_wch.3x b/contrib/ncurses/man/curs_add_wch.3x
index 26319a8ef909..b7164ada0e2b 100644
--- a/contrib/ncurses/man/curs_add_wch.3x
+++ b/contrib/ncurses/man/curs_add_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2001-2010,2011 Free Software Foundation, Inc. *
+.\" Copyright (c) 2001-2011,2012 Free 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.14 2011/01/15 15:27:43 tom Exp $
+.\" $Id: curs_add_wch.3x,v 1.15 2012/11/03 23:03:59 tom Exp $
.TH curs_add_wch 3X ""
.de bP
.IP \(bu 4
@@ -176,7 +176,7 @@ WACS_D_HLINE 0x2550 - double horizontal line
WACS_D_VLINE 0x2551 | double vertical line
WACS_D_PLUS 0x256c + double large plus or crossover
.TE
-.SH RETURN VALUES
+.SH RETURN VALUE
.PP
All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success.
.PP
diff --git a/contrib/ncurses/man/curs_add_wchstr.3x b/contrib/ncurses/man/curs_add_wchstr.3x
index 957adc025724..37e3df614b16 100644
--- a/contrib/ncurses/man/curs_add_wchstr.3x
+++ b/contrib/ncurses/man/curs_add_wchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2010,2012 Free 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,13 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_add_wchstr.3x,v 1.9 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_add_wchstr.3x,v 1.10 2012/11/03 22:54:43 tom Exp $
.TH curs_add_wchstr 3X ""
+.de bP
+.IP \(bu 4
+..
+.na
+.hy 0
.SH NAME
\fBadd_wchstr\fR,
\fBadd_wchnstr\fR,
@@ -37,10 +42,12 @@
\fBmvadd_wchnstr\fR,
\fBmvwadd_wchstr\fR,
\fBmvwadd_wchnstr\fR \- add an array of complex characters (and attributes) to a curses window
+.ad
+.hy
.SH SYNOPSIS
-.B #include <curses.h>
-.PP
.nf
+\fB#include <curses.h>\fR
+.PP
\fBint add_wchstr(const cchar_t *\fR\fIwchstr\fR\fB);\fR
.br
\fBint add_wchnstr(const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR
@@ -58,38 +65,53 @@
\fBint mvwadd_wchnstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR
.fi
.SH DESCRIPTION
-These routines copy the array of complex characters \fIwchstr\fR
-into the window image structure at and after 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.
+These functions copy the (null-terminated)
+array of complex characters \fIwchstr\fR
+into the window image structure
+starting at the current cursor position.
+The four functions 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 array is copied,
to the maximum number of characters that will fit on the line.
.PP
The window cursor is \fInot\fR advanced.
-These routines work faster than \fBwaddnstr\fR.
-On the other hand, they do not perform checking
+These functions work faster than \fBwaddnstr\fR.
+On the other hand:
+.bP
+they do not perform checking
(such as for the newline, backspace, or carriage return characters),
+.bP
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,
+.bP
+they do not expand other control characters to ^-escapes, and
+.bP
+they truncate the string if it crosses the right margin,
rather than wrapping it around to the new line.
.PP
-These routines end successfully
+These functions end successfully
on encountering a null \fIcchar_t\fR, or
when they have filled the current line.
If a complex character cannot completely fit at the end of the current line,
the remaining columns are filled with the background character and rendition.
-.SH NOTES
-All functions except \fBwadd_wchnstr\fR may be macros.
-.SH RETURN VALUES
-All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success.
+.SH RETURN VALUE
+All functions return the integer \fBERR\fR upon failure and \fBOK\fR on success.
+.PP
+X/Open does not define any error conditions.
+This implementation returns an error
+if the window pointer is null.
.PP
Functions with a "mv" prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
+.SH NOTES
+All functions except \fBwadd_wchnstr\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),
-\fBcurs_addchstr\fR(3X),
-\fBcurs_addwstr\fR(3X)
+\fBcurs_addwstr\fR(3X),
+\fBcurses\fR(3X).
+.PP
+Comparable functions in the narrow-character (ncurses) library are
+described in
+\fBcurs_addchstr\fR(3X).
diff --git a/contrib/ncurses/man/curs_addchstr.3x b/contrib/ncurses/man/curs_addchstr.3x
index 1547219f8309..08536e330260 100644
--- a/contrib/ncurses/man/curs_addchstr.3x
+++ b/contrib/ncurses/man/curs_addchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2012 Free 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,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addchstr.3x,v 1.15 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_addchstr.3x,v 1.16 2012/11/03 22:54:43 tom Exp $
.TH curs_addchstr 3X ""
+.de bP
+.IP \(bu 4
+..
.na
.hy 0
.SH NAME
@@ -42,6 +45,7 @@
.ad
.hy
.SH SYNOPSIS
+.nf
\fB#include <curses.h>\fR
.PP
\fBint addchstr(const chtype *chstr);\fR
@@ -59,24 +63,33 @@
\fBint mvwaddchstr(WINDOW *win, int y, int x, const chtype *chstr);\fR
.br
\fBint mvwaddchnstr(WINDOW *win, int y, int x, const chtype *chstr, int n);\fR
+.fi
.SH DESCRIPTION
-These routines copy \fIchstr\fR into the window image structure at and after
-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.
+These functions copy the (null-terminated)
+\fIchstr\fR array
+into the window image structure
+starting at the current cursor position.
+The four functions 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 array 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 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,
+The window cursor is \fInot\fR advanced.
+These functions work faster than \fBwaddnstr\fR.
+On the other hand:
+.bP
+they do not perform checking
+(such as for the newline, backspace, or carriage return characters),
+.bP
+they do not advance the current cursor position,
+.bP
+they do not expand other control characters to ^-escapes, and
+.bP
+they truncate the string if it crosses the right margin,
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.
+.SH RETURN VALUE
+All functions return the integer \fBERR\fR upon failure and \fBOK\fR on success.
.PP
X/Open does not define any error conditions.
This implementation returns an error
@@ -86,10 +99,11 @@ Functions with a "mv" prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
-Note that all routines except \fBwaddchnstr\fR may be macros.
+All functions except \fBwaddchnstr\fR may be macros.
.SH PORTABILITY
These entry points are described in the XSI Curses standard, Issue 4.
.SH SEE ALSO
+\fBcurs_addstr\fR(3X),
\fBcurses\fR(3X).
.PP
Comparable functions in the wide-character (ncursesw) library are
diff --git a/contrib/ncurses/man/curs_addstr.3x b/contrib/ncurses/man/curs_addstr.3x
index a52619ea7f2a..b1cb1cc25c15 100644
--- a/contrib/ncurses/man/curs_addstr.3x
+++ b/contrib/ncurses/man/curs_addstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2012 Free 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,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addstr.3x,v 1.16 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_addstr.3x,v 1.17 2012/11/03 22:57:31 tom Exp $
.TH curs_addstr 3X ""
+.de bP
+.IP \(bu 4
+..
.na
.hy 0
.SH NAME
@@ -62,34 +65,37 @@
\fBint mvwaddnstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const char *\fR\fIstr, int \fR\fIn\fR\fB);\fR
.fi
.SH DESCRIPTION
-These routines write the characters of the (null-terminated) character string
+These functions write the (null-terminated) character string
\fIstr\fR on the given window.
It is similar to calling \fBwaddch\fR once for each character in the string.
-The four routines with \fIn\fR as the last argument
-write at most \fIn\fR characters.
-If \fIn\fR is \-1, then the entire string will be added,
-up to the maximum number of characters that will fit on the line,
+.PP
+The \fImv\fR functions perform cursor movement once, before writing any
+characters.
+Thereafter, the cursor is advanced as a side-effect of writing to the window.
+.PP
+The four functions with \fIn\fR as the last argument
+write at most \fIn\fR characters,
or until a terminating null is reached.
+If \fIn\fR is \-1, then the entire string will be added.
.SH RETURN VALUE
-All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success
-(the SVr4 manuals specify only "an integer value other than \fBERR\fR") upon
-successful completion.
+All functions return the integer \fBERR\fR upon failure and \fBOK\fR on success.
.PP
X/Open does not define any error conditions.
This implementation returns an error
+.bP
if the window pointer is null or
+.bP
if the string pointer is null or
+.bP
if the corresponding calls to \fBwaddch\fP return an error.
.PP
Functions with a "mv" prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
-Note that all of these routines except \fBwaddstr\fR and \fBwaddnstr\fR may be
-macros.
+All of these functions except \fBwaddnstr\fR may be macros.
.SH PORTABILITY
-All these entry points are described in the XSI Curses standard, Issue 4. The
-XSI errors EILSEQ and EOVERFLOW, associated with extended-level conformance,
-are not yet detected.
+These functions are described in the XSI Curses standard, Issue 4.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_addch\fR(3X).
+\fBcurses\fR(3X),
+\fBcurs_addch\fR(3X).
diff --git a/contrib/ncurses/man/curs_addwstr.3x b/contrib/ncurses/man/curs_addwstr.3x
index 4e10d304fd61..835cb34010fc 100644
--- a/contrib/ncurses/man/curs_addwstr.3x
+++ b/contrib/ncurses/man/curs_addwstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2010,2012 Free 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,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addwstr.3x,v 1.10 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_addwstr.3x,v 1.11 2012/11/03 22:57:31 tom Exp $
.TH curs_addwstr 3X ""
+.de bP
+.IP \(bu 4
+..
.na
.hy 0
.SH NAME
@@ -62,31 +65,39 @@
\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
+These functions 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.
.PP
-The \fImv\fR routines perform cursor movement once, before writing any
+The \fImv\fR functions perform cursor movement once, before writing any
characters.
Thereafter, the cursor is advanced as a side-effect of writing to the window.
.PP
-The four routines with \fIn\fR as the last argument
-write at most \fIn\fR \fBwchar_t\fR characters.
-If \fIn\fR is \-1, then the entire string will be added,
-up to the maximum number of characters that will fit on the line,
+The four functions with \fIn\fR as the last argument
+write at most \fIn\fR \fBwchar_t\fR characters,
or until a terminating null is reached.
-.SH RETURN VALUES
-All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success.
+If \fIn\fR is \-1, then the entire string will be added.
+.SH RETURN VALUE
+All functions return the integer \fBERR\fR upon failure and \fBOK\fR on success.
+.PP
+X/Open does not define any error conditions.
+This implementation returns an error
+.bP
+if the window pointer is null or
+.bP
+if the string pointer is null or
+.bP
+if the corresponding calls to \fBwadd_wch\fP return an error.
.PP
Functions with a "mv" prefix first perform a cursor movement using
\fBwmove\fP, and return an error if the position is outside the window,
or if the window pointer is null.
.SH NOTES
-Note that all of these routines except \fBwaddnwstr\fR may be macros.
+All of these functions except \fBwaddnwstr\fR may be macros.
.SH PORTABILITY
-All these entry points are described in the XSI Curses standard, Issue 4.
+These functions are described in the XSI Curses standard, Issue 4.
.SH SEE ALSO
\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 67740f9e2a72..7a0d1588d516 100644
--- a/contrib/ncurses/man/curs_attr.3x
+++ b/contrib/ncurses/man/curs_attr.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2013 Free Software 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_attr.3x,v 1.36 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_attr.3x,v 1.39 2013/09/21 20:39:49 Sven.Joachim Exp $
.TH curs_attr 3X ""
.na
.hy 0
@@ -164,9 +164,12 @@ The following video attributes, defined in \fB<curses.h>\fR, can be passed to
the routines \fBattron\fR, \fBattroff\fR, and \fBattrset\fR, or OR'd with the
characters passed to \fBaddch\fR.
.PP
+.RS
.TS
-center ;
+l l
+_ _ _
l l .
+\fIName\fR \fIDescription\fR
\fBA_NORMAL\fR Normal display (no highlight)
\fBA_STANDOUT\fR Best highlighting mode of the terminal.
\fBA_UNDERLINE\fR Underlining
@@ -177,9 +180,30 @@ l l .
\fBA_PROTECT\fR Protected mode
\fBA_INVIS\fR Invisible or blank mode
\fBA_ALTCHARSET\fR Alternate character set
+\fBA_ITALIC\fR Italics (non-X/Open extension)
\fBA_CHARTEXT\fR Bit-mask to extract a character
\fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR Color-pair number \fIn\fR
.TE
+.RE
+.PP
+These video attributes are supported by \fBattr_on\fP and related functions
+(which also support the attributes recognized by \fBattron\fP, etc.):
+.RS
+.TS
+l l
+_ _ _
+l l .
+\fIName\fR \fIDescription\fR
+\fBWA_HORIZONTAL\fR Horizontal highlight
+\fBWA_LEFT\fR Left highlight
+\fBWA_LOW\fR Low highlight
+\fBWA_RIGHT\fR Right highlight
+\fBWA_TOP\fR Top highlight
+\fBWA_VERTICAL\fR Vertical highlight
+.TE
+.RE
+.PP
+For consistency
.PP
The following macro is the reverse of \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR:
.PP
@@ -214,19 +238,27 @@ The XSI Curses standard states that whether the traditional functions
SVr4 curses, these functions correctly manipulate all other highlights
(specifically, \fBA_ALTCHARSET\fR, \fBA_PROTECT\fR, and \fBA_INVIS\fR).
.PP
+This implementation provides the \fBA_ITALIC\fP attribute for terminals
+which have the \fIenter_italics_mode\fP (sitm) and \fIexit_italics_mode\fP (ritm) capabilities.
+Italics are not mentioned in X/Open Curses.
+Unlike the other video attributes, \fBI_ITALIC\fP is unrelated
+to the \fIset_attributes\fP capabilities.
+This implementation makes the assumption that
+\fIexit_attribute_mode\fP may also reset italics.
+.PP
XSI Curses added the new entry points, \fBattr_get\fR, \fBattr_on\fR,
\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.
+The older macros have direct counterparts in the newer set of names:
.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
+.RS
.ne 9
.TS
-center ;
+l l
+_ _ _
l l .
+\fIName\fR \fIDescription\fR
\fBWA_NORMAL\fR Normal display (no highlight)
\fBWA_STANDOUT\fR Best highlighting mode of the terminal.
\fBWA_UNDERLINE\fR Underlining
@@ -236,6 +268,11 @@ l l .
\fBWA_BOLD\fR Extra bright or bold
\fBWA_ALTCHARSET\fR Alternate character set
.TE
+.RE
+.PP
+Older versions of this library did not force an update of the screen
+when changing the attributes.
+Use \fBtouchwin\fR to force the screen to match the updated attributes.
.PP
The XSI curses standard specifies that each pair of corresponding \fBA_\fR
and \fBWA_\fR-using functions operates on the same current-highlight
@@ -243,8 +280,10 @@ 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
-implementation does not yet support.
+\fBA_VERTICAL\fR (and corresponding \fBWA_\fR macros for each).
+As of August 2013,
+no known terminal provides these highlights
+(i.e., via the \fBsgr1\fP capability).
.SH RETURN VALUE
All routines return the integer \fBOK\fR on success, or \fBERR\fP on failure.
.PP
diff --git a/contrib/ncurses/man/curs_bkgrnd.3x b/contrib/ncurses/man/curs_bkgrnd.3x
index 43112a79ab79..08ea59f10217 100644
--- a/contrib/ncurses/man/curs_bkgrnd.3x
+++ b/contrib/ncurses/man/curs_bkgrnd.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2010,2012 Free 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_bkgrnd.3x,v 1.4 2010/12/04 18:49:20 tom Exp $
+.\" $Id: curs_bkgrnd.3x,v 1.5 2012/11/03 23:03:59 tom Exp $
.TH curs_bkgrnd 3X ""
.SH NAME
\fBbkgrnd\fR,
@@ -89,7 +89,7 @@ Note that
\fBbkgrndset\fR, and
\fBgetbkgrnd\fR
may be macros.
-.SH RETURN VALUES
+.SH RETURN VALUE
The \fBbkgrndset\fR and \fBwbkgrndset\fR routines do not return a value.
.PP
Upon successful completion, the other functions return \fBOK\fR.
diff --git a/contrib/ncurses/man/curs_border_set.3x b/contrib/ncurses/man/curs_border_set.3x
index 8f831dd9b4cc..c9621ac74b35 100644
--- a/contrib/ncurses/man/curs_border_set.3x
+++ b/contrib/ncurses/man/curs_border_set.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2011,2012 Free 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_border_set.3x,v 1.10 2011/01/15 12:56:18 tom Exp $
+.\" $Id: curs_border_set.3x,v 1.11 2012/11/03 23:03:59 tom Exp $
.TH curs_border_set 3X ""
.na
.hy 0
@@ -187,7 +187,7 @@ Note that
\fBvline_set\fR
may be macros.
.br
-.SH RETURN VALUES
+.SH RETURN VALUE
.PP
Upon successful completion, these functions return
\fBOK\fR.
diff --git a/contrib/ncurses/man/curs_get_wch.3x b/contrib/ncurses/man/curs_get_wch.3x
index fe49849a2ecd..df9bc6a6e6c6 100644
--- a/contrib/ncurses/man/curs_get_wch.3x
+++ b/contrib/ncurses/man/curs_get_wch.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2010,2012 Free 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.7 2010/08/14 23:31:42 tom Exp $
+.\" $Id: curs_get_wch.3x,v 1.8 2012/11/03 23:03:59 tom Exp $
.TH curs_get_wch 3X ""
.SH NAME
\fBget_wch\fR,
@@ -132,7 +132,7 @@ is typed, the program may produce undesirable results.
.PP
All functions except \fBwget_wch\fR and \fBunget_wch\fR
may be macros.
-.SH RETURN VALUES
+.SH RETURN VALUE
When
\fBget_wch\fR,
\fBwget_wch\fR,
diff --git a/contrib/ncurses/man/curs_get_wstr.3x b/contrib/ncurses/man/curs_get_wstr.3x
index 9beb1773ca61..2a3fb3ce27bf 100644
--- a/contrib/ncurses/man/curs_get_wstr.3x
+++ b/contrib/ncurses/man/curs_get_wstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2010,2012 Free 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_wstr.3x,v 1.8 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_get_wstr.3x,v 1.9 2012/11/03 23:03:59 tom Exp $
.TH curs_get_wstr 3X ""
.na
.hy 0
@@ -144,7 +144,7 @@ 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
+.SH RETURN VALUE
All of these functions return \fBOK\fR upon successful completion.
Otherwise, they return \fBERR\fR.
.PP
diff --git a/contrib/ncurses/man/curs_getcchar.3x b/contrib/ncurses/man/curs_getcchar.3x
index 1b878f313c2d..a974c738a8c3 100644
--- a/contrib/ncurses/man/curs_getcchar.3x
+++ b/contrib/ncurses/man/curs_getcchar.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2001-2009,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2001-2010,2012 Free 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.15 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_getcchar.3x,v 1.16 2012/11/03 23:03:59 tom Exp $
.TH curs_getcchar 3X ""
.de bP
.IP \(bu 4
@@ -116,7 +116,7 @@ Currently, an application must provide a null pointer as \fIopts\fP.
The \fIwcval\fP argument may be a value generated by a call to
\fBsetcchar\fP or by a function that has a \fBcchar_t\fP output argument.
If \fIwcval\fP is constructed by any other means, the effect is unspecified.
-.SH RETURN VALUES
+.SH RETURN VALUE
.PP
When \fIwch\fP is a null pointer,
\fBgetcchar\fP returns the number of wide characters referenced by
diff --git a/contrib/ncurses/man/curs_getch.3x b/contrib/ncurses/man/curs_getch.3x
index 2d5d6fda785f..a8b2ffea1868 100644
--- a/contrib/ncurses/man/curs_getch.3x
+++ b/contrib/ncurses/man/curs_getch.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2011,2012 Free Software 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_getch.3x,v 1.36 2011/01/22 19:38:51 tom Exp $
+.\" $Id: curs_getch.3x,v 1.37 2012/07/07 20:04:56 tom Exp $
.TH curs_getch 3X ""
.na
.hy 0
@@ -237,14 +237,14 @@ See \fBresizeterm\fR(3X) for more details about \fBKEY_RESIZE\fP, and
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
+.RS 3
.TP 5
\fBungetch\fP
-returns an error
+returns ERR
if there is no more room in the FIFO.
-.TP 5
+.TP
\fBwgetch\fP
-returns an error
+returns ERR
if the window pointer is null, or
if its timeout expires without having any data.
.RE
diff --git a/contrib/ncurses/man/curs_in_wchstr.3x b/contrib/ncurses/man/curs_in_wchstr.3x
index 042abfd6051d..f92968779623 100644
--- a/contrib/ncurses/man/curs_in_wchstr.3x
+++ b/contrib/ncurses/man/curs_in_wchstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2010,2012 Free 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_wchstr.3x,v 1.8 2010/12/04 18:36:44 tom Exp $
+.\" $Id: curs_in_wchstr.3x,v 1.9 2012/11/03 23:03:59 tom Exp $
.TH curs_in_wchstr 3X ""
.na
.hy 0
@@ -98,7 +98,7 @@ causes undefined results. Therefore, the use of
\fBmvwin_wchnstr\fR, or
\fBwin_wchnstr\fR
is recommended.
-.SH RETURN VALUES
+.SH RETURN VALUE
Upon successful completion, these functions return
\fBOK\fR.
Otherwise, they return
diff --git a/contrib/ncurses/man/curs_initscr.3x b/contrib/ncurses/man/curs_initscr.3x
index 83a01eafb4e9..0dceb973d1e6 100644
--- a/contrib/ncurses/man/curs_initscr.3x
+++ b/contrib/ncurses/man/curs_initscr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -26,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_initscr.3x,v 1.17 2010/12/04 18:36:58 tom Exp $
+.\" $Id: curs_initscr.3x,v 1.19 2013/07/20 19:34:14 tom Exp $
.TH curs_initscr 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
@@ -121,10 +125,19 @@ Old versions of curses, e.g., BSD 4.4, may have returned a null pointer
from \fBinitscr\fR when an error is detected, rather than exiting.
It is safe but redundant to check the return value of \fBinitscr\fR
in XSI Curses.
+.PP
+If the TERM variable is missing or empty, \fBinitscr\fP uses the
+value \*(``unknown\*('',
+which normally corresponds to a terminal entry with the \fIgeneric\fP
+(\fIgn\fP) capability.
+Generic entries are detected by \fBsetupterm\fP(3X) and cannot be
+used for full-screen operation.
+Other implementations may handle a missing/empty TERM variable differently.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_kernel\fR(3X),
\fBcurs_refresh\fR(3X),
\fBcurs_slk\fR(3X),
+\fBcurs_terminfo\fR(3X),
\fBcurs_util\fR(3X),
\fBcurs_variables\fR(3X).
diff --git a/contrib/ncurses/man/curs_inopts.3x b/contrib/ncurses/man/curs_inopts.3x
index aecb2e3714f8..2e637ce30b64 100644
--- a/contrib/ncurses/man/curs_inopts.3x
+++ b/contrib/ncurses/man/curs_inopts.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -26,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_inopts.3x,v 1.15 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_inopts.3x,v 1.18 2013/07/20 19:42:02 tom Exp $
.TH curs_inopts 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
@@ -188,11 +192,13 @@ 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
-\fBrefresh\fR or \fBdoupdate\fR is called again. This allows faster
-response to commands typed in advance. Normally, the input FILE
+The \fBcurses\fR library does \*(``line-breakout optimization\*(''
+by looking for typeahead periodically while updating the screen.
+If input is found, and it is coming from a tty,
+the current update is postponed until
+\fBrefresh\fR or \fBdoupdate\fR is called again.
+This allows faster response to commands typed in advance.
+Normally, the input FILE
pointer passed to \fBnewterm\fR, or \fBstdin\fR in the case that
\fBinitscr\fR was used, will be used to do this typeahead checking.
The \fBtypeahead\fR routine specifies that the file descriptor
@@ -223,6 +229,42 @@ 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
just after initialization, even if your program remains in cooked mode.
+.PP
+When \fBkeypad\fP is first enabled,
+ncurses loads the key-definitions for the current terminal description.
+If the terminal description includes extended string capabilities,
+e.g., from using the \fB\-x\fP option of @TIC@,
+then ncurses also defines keys for the capabilities whose names
+begin with "k".
+The corresponding keycodes are generated and (depending on previous
+loads of terminal descriptions) may differ from one execution of a
+program to the next.
+The generated keycodes are recognized by the \fBkeyname\fP function
+(which will then return a name beginning with "k" denoting the
+terminfo capability name rather than "K", used for curses key-names).
+On the other hand, an application can use \fBdefine_key\fP to establish
+a specific keycode for a given string.
+This makes it possible for an application to check for an extended
+capability's presence with \fItigetstr\fP,
+and reassign the keycode to match its own needs.
+.PP
+Low-level applications can use \fBtigetstr\fP to obtain the definition
+of any particular string capability.
+Higher-level applications which use the curses \fBwgetch\fP
+and similar functions to return keycodes rely upon the order in which
+the strings are loaded.
+If more than one key definition has the same string value,
+then \fBwgetch\fP can return only one keycode.
+Most curses implementations (including ncurses)
+load key definitions in the order
+defined by the array of string capability names.
+The last key to be loaded determines the keycode which will be returned.
+In ncurses, you may also have extended capabilities interpreted as
+key definitions.
+These are loaded after the predefined keys,
+and if a capability's value is the same as a previously-loaded
+key definition,
+the later definition is the one used.
.SH NOTES
Note that \fBecho\fR, \fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR,
\fBmeta\fR, \fBnodelay\fR, \fBnotimeout\fR, \fBnoqiflush\fR,
@@ -233,4 +275,9 @@ they attempt to restore to normal (`cooked') mode from raw and cbreak modes
respectively. Mixing raw/noraw and cbreak/nocbreak calls leads to tty driver
control states that are hard to predict or understand; it is not recommended.
.SH SEE ALSO
-\fBcurses\fR(3X), \fBcurs_getch\fR(3X), \fBcurs_initscr\fR(3X), \fBtermio\fR(7)
+\fBcurses\fR(3X),
+\fBcurs_getch\fR(3X),
+\fBcurs_initscr\fR(3X),
+\fBcurs_util\fR(3X),
+\fBdefine_key\fR(3X),
+\fBtermio\fR(7)
diff --git a/contrib/ncurses/man/curs_ins_wstr.3x b/contrib/ncurses/man/curs_ins_wstr.3x
index d01654533f73..12479b0d9306 100644
--- a/contrib/ncurses/man/curs_ins_wstr.3x
+++ b/contrib/ncurses/man/curs_ins_wstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2010,2012 Free 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_wstr.3x,v 1.6 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_ins_wstr.3x,v 1.7 2012/11/03 23:03:59 tom Exp $
.TH curs_ins_wstr 3X ""
.na
.hy 0
@@ -92,7 +92,7 @@ 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
a control character.
-.SH RETURN VALUES
+.SH RETURN VALUE
Upon successful completion, these functions return OK.
Otherwise, they return ERR.
.PP
diff --git a/contrib/ncurses/man/curs_inwstr.3x b/contrib/ncurses/man/curs_inwstr.3x
index 966c7b4f7de9..0cdf4d8df65b 100644
--- a/contrib/ncurses/man/curs_inwstr.3x
+++ b/contrib/ncurses/man/curs_inwstr.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2002-2010,2012 Free 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_inwstr.3x,v 1.7 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_inwstr.3x,v 1.8 2012/11/03 23:03:59 tom Exp $
.TH curs_inwstr 3X ""
.SH NAME
\fBinwstr\fR,
@@ -72,7 +72,7 @@ an error is generated.
Note that all routines except
\fBwinnwstr\fR
may be macros.
-.SH RETURN VALUES
+.SH RETURN VALUE
All routines return
\fBERR\fR
upon failure. Upon
diff --git a/contrib/ncurses/man/curs_mouse.3x b/contrib/ncurses/man/curs_mouse.3x
index 01dc68297623..1de85e510851 100644
--- a/contrib/ncurses/man/curs_mouse.3x
+++ b/contrib/ncurses/man/curs_mouse.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2013 Free Software 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_mouse.3x,v 1.38 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_mouse.3x,v 1.39 2013/06/22 18:09:42 tom Exp $
.TH curs_mouse 3X ""
.na
.hy 0
@@ -40,20 +40,18 @@
.ad
.hy
.SH SYNOPSIS
-.nf
-\fB#include <curses.h>
+\fB#include <curses.h>\fR
.PP
-\fBtypedef unsigned long mmask_t;
+\fBtypedef unsigned long mmask_t;\fR
.PP
-typedef struct
-{
- short id; \fI/* ID to distinguish multiple devices */\fB
- int x, y, z; \fI/* event coordinates */\fB
- mmask_t bstate; \fI/* button state bits */\fB
-}
-MEVENT;\fR
+.nf
+\fBtypedef struct {\fR
+\fB short id; \fR\fI/* ID to distinguish multiple devices */\fR
+\fB int x, y, z; \fR\fI/* event coordinates */\fR
+\fB mmask_t bstate; \fR\fI/* button state bits */\fR
+\fB} MEVENT;\fR
.fi
-.br
+.PP
\fBbool has_mouse(void);\fR
.br
\fBint getmouse(MEVENT *event);\fR
diff --git a/contrib/ncurses/man/curs_opaque.3x b/contrib/ncurses/man/curs_opaque.3x
index f3ad22e1482e..8c315ddda432 100644
--- a/contrib/ncurses/man/curs_opaque.3x
+++ b/contrib/ncurses/man/curs_opaque.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2007-2009,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2007-2010,2013 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -26,8 +26,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_opaque.3x,v 1.9 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_opaque.3x,v 1.10 2013/07/20 19:42:29 tom Exp $
.TH curs_opaque 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.na
.hy 0
.SH NAME
@@ -78,7 +82,7 @@
.br
.SH DESCRIPTION
This implementation provides functions which return properties
-set in the WINDOW structure, allowing it to be ``opaque'' if
+set in the WINDOW structure, allowing it to be \*(``opaque\*('' if
the symbol \fBNCURSES_OPAQUE\fR is defined:
.TP 5
\fBis_cleared\fR
@@ -124,7 +128,8 @@ returns the parent WINDOW pointer for subwindows,
or NULL for windows having no parent.
.TP 5
\fBwgetscrreg\fR
-returns the top and bottom rows for the scrolling margin as set in \fBwsetscrreg\fP.
+returns the top and bottom rows for the scrolling margin
+as set in \fBwsetscrreg\fP.
.SH RETURN VALUE
These functions all return TRUE or FALSE, except as noted.
.SH NOTES
diff --git a/contrib/ncurses/man/curs_overlay.3x b/contrib/ncurses/man/curs_overlay.3x
index cea734e4a97c..972a95774b14 100644
--- a/contrib/ncurses/man/curs_overlay.3x
+++ b/contrib/ncurses/man/curs_overlay.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -26,7 +26,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_overlay.3x,v 1.16 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_overlay.3x,v 1.17 2013/04/06 23:48:51 tom Exp $
.TH curs_overlay 3X ""
.na
.hy 0
@@ -48,18 +48,21 @@
\fBint dmaxcol, int overlay);\fR
.SH DESCRIPTION
The \fBoverlay\fR and \fBoverwrite\fR routines overlay \fIsrcwin\fR on
-top of \fIdstwin\fR. \fIscrwin\fR and \fIdstwin\fR are not required
-to be the same size; only text where the two windows overlap is
-copied. The difference is that \fBoverlay\fR is non-destructive
+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,
+\fBoverlay\fR and \fBoverwrite\fR routines.
+As in the \fBprefresh\fR routine,
+a rectangle is specified in the destination window, (\fIdminrow\fR,
\fIdmincol\fR) and (\fIdmaxrow\fR, \fIdmaxcol\fR), and the upper-left-corner
-coordinates of the source window, (\fIsminrow\fR, \fIsmincol\fR). If the
-argument \fIoverlay\fR is \fBtrue\fR, then copying is non-destructive, as in
-\fBoverlay\fR.
+coordinates of the source window, (\fIsminrow\fR, \fIsmincol\fR).
+If the argument \fIoverlay\fR is \fBtrue\fR,
+then copying is non-destructive,
+as in \fBoverlay\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
@@ -75,7 +78,8 @@ if some part of the window would be placed off-screen.
Note that \fBoverlay\fR and \fBoverwrite\fR may be macros.
.SH PORTABILITY
The XSI Curses standard, Issue 4 describes these functions (adding the const
-qualifiers). It further specifies their behavior in the presence of characters
+qualifiers).
+It further specifies their behavior in the presence of characters
with multibyte renditions (not yet supported in this implementation).
.SH SEE ALSO
\fBcurses\fR(3X), \fBcurs_pad\fR(3X), \fBcurs_refresh\fR(3X)
diff --git a/contrib/ncurses/man/curs_sp_funcs.3x b/contrib/ncurses/man/curs_sp_funcs.3x
index 020e5c115aab..c7c55ddb62fe 100644
--- a/contrib/ncurses/man/curs_sp_funcs.3x
+++ b/contrib/ncurses/man/curs_sp_funcs.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2010,2013 Free 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_sp_funcs.3x,v 1.5 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_sp_funcs.3x,v 1.6 2013/06/22 17:53:59 tom Exp $
.TH curs_sp_funcs 3X ""
.na
.hy 0
@@ -186,7 +186,7 @@ new_prescr \- \fBcurses\fR screen-pointer extension
.br
\fBint slk_attrset_sp(SCREEN*, const chtype);\fR
.br
-\fBint slk_attr_sp((SCREEN*);\fR
+\fBint slk_attr_sp(SCREEN*);\fR
.br
\fBint slk_clear_sp(SCREEN*);\fR
.br
diff --git a/contrib/ncurses/man/curs_termcap.3x b/contrib/ncurses/man/curs_termcap.3x
index 70a6710ad648..f8977bebca9c 100644
--- a/contrib/ncurses/man/curs_termcap.3x
+++ b/contrib/ncurses/man/curs_termcap.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2012,2013 Free 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,11 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_termcap.3x,v 1.26 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_termcap.3x,v 1.30 2013/01/19 15:58:48 tom Exp $
.TH curs_termcap 3X ""
+.de bP
+.IP \(bu 4
+..
.na
.hy 0
.ds n 5
@@ -75,11 +78,39 @@ the \fItermcap\fR library. Their parameters are the same and the
routines are emulated using the \fIterminfo\fR database. Thus, they
can only be used to query the capabilities of entries for which a
terminfo entry has been compiled.
+.SS INITIALIZATION
.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.
+It returns:
+.RS 3
+.TP 3
+1
+on success,
+.TP 3
+0
+if there is no such entry
+(or that it is a generic type, having too little information for curses
+applications to run), and
+.TP 3
+\-1
+if the terminfo database could not be found.
+.RE
+.PP
+This differs from the \fItermcap\fP library in two ways:
+.RS 3
+.bP
The emulation ignores the buffer pointer \fIbp\fR.
+The \fItermcap\fP library would store a copy of the terminal
+description in the area referenced by this pointer.
+However, ncurses stores its terminal descriptions in compiled
+binary form, which is not the same thing.
+.bP
+There is a difference in return codes.
+The \fItermcap\fP library does not check if the terminal
+description is marked with the \fIgeneric\fP capability,
+or if the terminal description has cursor-addressing.
+.RE
+.SS CAPABILITY VALUES
.PP
The \fBtgetflag\fR routine gets the boolean entry for \fIid\fR,
or zero if it is not available.
@@ -98,12 +129,14 @@ Only the first two characters of the \fBid\fR parameter of
\fBtgetflag\fR,
\fBtgetnum\fR and
\fBtgetstr\fR are compared in lookups.
+.SS FORMATTING CAPABILITIES
.PP
The \fBtgoto\fR routine instantiates the parameters into the given capability.
The output from this routine is to be passed to \fBtputs\fR.
.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.
+.SS GLOBAL VARIABLES
.PP
The variables
\fBPC\fR,
@@ -165,8 +198,28 @@ However, termcap applications' use of those variables is poorly documented,
e.g., not distinguishing between input and output.
In particular, some applications are reported to declare and/or
modify \fBospeed\fR.
+.PP
+The comment that only the first two characters of the \fBid\fR parameter
+are used escapes many application developers.
+The original BSD 4.2 termcap library (and historical relics thereof)
+did not require a trailing null NUL on the parameter name passed
+to \fBtgetstr\fP, \fBtgetnum\fP and \fBtgetflag\fP.
+Some applications assume that the termcap interface does not require
+the trailing NUL for the parameter name.
+Taking into account these issues:
+.bP
+As a special case,
+\fBtgetflag\fP matched against a single-character identifier
+provided that was at the end of the terminal description.
+You should not rely upon this behavior in portable programs.
+This implementation disallows matches against single-character capability names.
+.bP
+This implementation disallows matches by the termcap interface against
+extended capability names which are longer than two characters.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBterminfo\fR(\*n),
\fBterm_variables\fR(3X),
\fBputc\fR(3).
+.sp
+http://invisible-island.net/ncurses/tctest.html
diff --git a/contrib/ncurses/man/curs_terminfo.3x b/contrib/ncurses/man/curs_terminfo.3x
index 0e95d1c2248d..7d440bf53ebc 100644
--- a/contrib/ncurses/man/curs_terminfo.3x
+++ b/contrib/ncurses/man/curs_terminfo.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1999-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999-2011,2013 Free 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,15 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_terminfo.3x,v 1.35 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_terminfo.3x,v 1.43 2013/07/20 19:29:59 tom Exp $
.TH curs_terminfo 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.IP \(bu 4
+..
.ds n 5
.na
.hy 0
@@ -77,7 +84,7 @@
.br
\fBint vidattr(chtype \fR\fIattrs\fR\fB);\fR
.br
-\fBint vid_puts(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB, int (*\fR\fIputc\fR\fB)(char));\fR
+\fBint vid_puts(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR
.br
\fBint vid_attr(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB);\fR
.br
@@ -98,40 +105,54 @@ 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.
+.SS Initialization
.PP
Initially, \fBsetupterm\fR should be called. Note that
\fBsetupterm\fR is automatically called by \fBinitscr\fR and
\fBnewterm\fR. This defines the set of terminal-dependent variables
[listed in \fBterminfo\fR(\*n)].
+.PP
+Each initialization routine provides applications with the
+terminal capabilities either directly (via header definitions),
+or by special functions.
+The header files \fBcurses.h\fR and \fBterm.h\fR should be included (in this
+order) to get the definitions for these strings, numbers, and flags.
+.PP
The \fBterminfo\fR variables
\fBlines\fR and \fBcolumns\fR are initialized by \fBsetupterm\fR as
follows:
-.RS
-.PP
+.bP
If \fBuse_env(FALSE)\fR has been called, values for
\fBlines\fR and \fBcolumns\fR specified in \fBterminfo\fR are used.
-.PP
+.bP
Otherwise, if the environment variables \fBLINES\fR and \fBCOLUMNS\fR
exist, their values are used. If these environment variables do not
exist and the program is running in a window, the current window size
is used. Otherwise, if the environment variables do not exist, the
values for \fBlines\fR and \fBcolumns\fR specified in the
\fBterminfo\fR database are used.
-.RE
.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.
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.
+with \fBtputs\fR or \fBputp\fR.
+Call \fBreset_shell_mode\fR to restore the
+tty modes before exiting [see \fBcurs_kernel\fR(3X)].
+.PP
+Programs which use
+cursor addressing should
+.bP
+output \fBenter_ca_mode\fR upon startup and
+.bP
+output \fBexit_ca_mode\fR before exiting.
+.PP
+Programs which execute shell subprocesses should
+.bP
+call \fBreset_shell_mode\fR and
+output \fBexit_ca_mode\fR before the shell
+is called and
+.bP
+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
@@ -146,19 +167,23 @@ then \fBsetupterm\fR returns \fBOK\fR or
A return value of \fBOK\fR combined with status of \fB1\fR in \fIerrret\fR
is normal.
If \fBERR\fR is returned, examine \fIerrret\fR:
-.RS
.TP 5
.B 1
means that the terminal is hardcopy, cannot be used for curses applications.
+.IP
+\fBsetupterm\fP determines if the entry is a hardcopy type by
+checking the \fIhc\fP (\fIhardcopy\fP) capability.
.TP 5
.B 0
means that the terminal could not be found,
or that it is a generic type,
having too little information for curses applications to run.
+.IP
+\fBsetupterm\fP determines if the entry is a generic type by
+checking the \fIgn\fP (\fIgeneric\fP) capability.
.TP 5
.B \-1
means that the \fBterminfo\fR database could not be found.
-.RE
.PP
If \fIerrret\fR is
null, \fBsetupterm\fR prints an error message upon finding an error
@@ -168,18 +193,33 @@ and exits. Thus, the simplest call is:
.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:
+The \fBsetterm\fR routine was 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
+The \fBsetterm\fR routine is provided for BSD compatibility, and
is not recommended for new programs.
-.PP
-The \fBset_curterm\fR routine sets the variable \fBcur_term\fR to
+.\" ***************************************************************************
+.SS The Terminal State
+.PP
+The \fBsetupterm\fR routine stores its information about the terminal
+in a \fBTERMINAL\fP structure pointed to by the global variable \fBcur_term\fP.
+If it detects an error,
+or decides that the terminal is unsuitable (hardcopy or generic),
+it discards this information,
+making it not available to applications.
+.PP
+If \fBsetupterm\fP is called repeatedly for the same terminal type,
+it will reuse the information.
+It maintains only one copy of a given terminal's capabilities in memory.
+If it is called for different terminal types,
+\fBsetupterm\fP allocates new storage for each set of terminal capabilities.
+.PP
+The \fBset_curterm\fR routine sets \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.
+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
@@ -189,11 +229,14 @@ 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, calls \fBsetupterm\fP,
-and then restores the bits.
+example, when reloading a game saved as a core image dump).
+\fBrestartterm\fP 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, \fBrestartterm\fP saves various tty state bits,
+calls \fBsetupterm\fP, and then restores the bits.
+.\" ***************************************************************************
+.SS Formatting Output
.PP
The \fBtparm\fR routine instantiates the string \fIstr\fR with
parameters \fIpi\fR. A pointer is returned to the result of \fIstr\fR
@@ -202,6 +245,8 @@ with the parameters applied.
\fBtiparm\fP is a newer form of \fBtparm\fP which uses \fI<stdarg.h>\fP
rather than a fixed-parameter list.
Its numeric parameters are integers (int) rather than longs.
+.\" ***************************************************************************
+.SS Output Functions
.PP
The \fBtputs\fR routine applies padding information to the string
\fIstr\fR and outputs it. The \fIstr\fR must be a terminfo string
@@ -235,26 +280,48 @@ 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).
+.\" ***************************************************************************
+.SS Terminal Capability Functions
.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).
-.sp
+.PP
+These routines return special values to denote errors.
+.PP
+The \fBtigetflag\fR routine returns
+.TP
+\fB\-1\fR
+if \fIcapname\fR is not a boolean capability,
+or
+.TP
+\fB0\fR
+if it is canceled or absent from the terminal description.
+.PP
+The \fBtigetnum\fR routine returns
+.TP
+\fB\-2\fR
+if \fIcapname\fR is not a numeric capability, or
+.TP
+\fB\-1\fR
+if it is canceled or absent from the terminal description.
+.PP
+The \fBtigetstr\fR routine returns
+.TP
+\fB(char *)\-1\fR
+if \fIcapname\fR is not a string capability,
+or
+.TP
+\fB0\fR
+if it is canceled or absent from the terminal description.
+.\" ***************************************************************************
+.SS Terminal Capability Names
+These null-terminated arrays contain
+the short terminfo names ("codes"),
+the \fBtermcap\fR names, and the long terminfo names ("fnames")
+for each of the predefined \fBterminfo\fR variables:
.RS
\fBchar *boolnames[]\fR, \fB*boolcodes[]\fR, \fB*boolfnames[]\fR
.sp
@@ -262,10 +329,6 @@ The \fIcapname\fR for each capability is given in the table column entitled
.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.
.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
@@ -275,7 +338,7 @@ Routines that return pointers always return \fBNULL\fR on error.
.PP
X/Open defines no error conditions.
In this implementation
-.RS
+.RS 5
.TP 5
\fBdel_curterm\fP
returns an error
@@ -300,19 +363,41 @@ It does not detect I/O errors:
X/Open states that \fBtputs\fP ignores the return value
of the output function \fIputc\fP.
.RE
-.SH 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
+X/Open notes that \fBvidattr\fR and \fBvidputs\fR may be macros.
+.PP
The function \fBsetterm\fR is not described by X/Open and must
-be considered non-portable. All other functions are as described by X/Open.
+be considered non-portable.
+All other functions are as described by X/Open.
.PP
\fBsetupterm\fP copies the terminal name to the array \fBttytype\fP.
This is not part of X/Open Curses, but is assumed by some applications.
.PP
+If configured to use the terminal-driver,
+e.g., for the MinGW port,
+.bP
+\fBsetupterm\fP interprets a missing/empty TERM variable as the
+special value \*(``unknown\*(''.
+.bP
+\fBsetupterm\fP allows explicit use of the
+the windows console driver by checking if $TERM is set to
+\*(``#win32con\*('' or an abbreviation of that string.
+.PP
+Older versions of \fBncurses\fP assumed that the file descriptor passed to
+\fBsetupterm\fP from \fBinitscr\fP or \fBnewterm\fP uses buffered I/O,
+and would write to the corresponding stream.
+In addition to the limitation that the terminal was left in block-buffered
+mode on exit (like SystemV curses),
+it was problematic because \fBncurses\fP
+did not allow a reliable way to cleanup on receiving SIGTSTP.
+The current version uses output buffers managed directly by \fBncurses\fP.
+Some of the low-level functions described in this manual page write
+to the standard output.
+They are not signal-safe.
+The high-level functions in \fBncurses\fP use
+alternate versions of these functions
+using the more reliable buffering scheme.
+.PP
In System V Release 4, \fBset_curterm\fR has an \fBint\fR return type and
returns \fBOK\fR or \fBERR\fR. We have chosen to implement the X/Open Curses
semantics.
@@ -332,12 +417,12 @@ Portable applications should provide 9 parameters after the format;
zeroes are fine for this purpose.
.PP
In response to comments by Thomas E. Dickey,
-X/Open Curses Issue 7 proposed the \fBtiparam\fP function in mid-2009.
+X/Open Curses Issue 7 proposed the \fBtiparm\fP function in mid-2009.
.PP
X/Open notes that after calling \fBmvcur\fR, the curses state may not match the
actual terminal state, and that an application should touch and refresh
the window before resuming normal curses calls.
-Both ncurses and System V Release 4 curses implement \fBmvcur\fR using
+Both \fBncurses\fP and System V Release 4 curses implement \fBmvcur\fR using
the SCREEN data allocated in either \fBinitscr\fR or \fBnewterm\fR.
So though it is documented as a terminfo function,
\fBmvcur\fR is really a curses function which is not well specified.
@@ -346,8 +431,12 @@ X/Open states that the old location must be given for \fBmvcur\fP.
This implementation allows the caller to use \-1's for the old ordinates.
In that case, the old location is unknown.
.PP
-Extended terminal capability names, e.g., as defined by \fBtic\ \-x\fP,
-are not stored in the arrays described in this section.
+Other implementions may not declare the capability name arrays.
+Some provide them without declaring them.
+X/Open does not specify them.
+.PP
+Extended terminal capability names, e.g., as defined by \fB@TIC@\ \-x\fP,
+are not stored in the arrays described here.
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_initscr\fR(3X),
diff --git a/contrib/ncurses/man/curs_threads.3x b/contrib/ncurses/man/curs_threads.3x
index 5a080fd07851..5732e924c1b5 100644
--- a/contrib/ncurses/man/curs_threads.3x
+++ b/contrib/ncurses/man/curs_threads.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2008-2010,2012 Free 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_threads.3x,v 1.18 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_threads.3x,v 1.19 2012/05/26 17:03:26 tom Exp $
.TH curs_threads 3X ""
.de bP
.IP \(bu 4
diff --git a/contrib/ncurses/man/curs_util.3x b/contrib/ncurses/man/curs_util.3x
index fb912b65f328..444f40e2cffb 100644
--- a/contrib/ncurses/man/curs_util.3x
+++ b/contrib/ncurses/man/curs_util.3x
@@ -1,5 +1,6 @@
+'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2012,2013 Free 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 +27,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_util.3x,v 1.32 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_util.3x,v 1.37 2013/07/20 19:43:45 tom Exp $
.TH curs_util 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
.IP \(bu 4
..
@@ -44,6 +49,7 @@
\fBputwin\fR,
\fBunctrl\fR,
\fBuse_env\fR,
+\fBuse_tioctl\fR,
\fBwunctrl\fR \- miscellaneous \fBcurses\fR utility routines
.ad
.hy
@@ -64,6 +70,8 @@
.br
\fBvoid use_env(bool f);\fR
.br
+\fBvoid use_tioctl(bool f);\fR
+.br
\fBint putwin(WINDOW *win, FILE *filep);\fR
.br
\fBWINDOW *getwin(FILE *filep);\fR
@@ -80,10 +88,12 @@ 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:
+The \fBkeyname\fR routine returns a character string
+corresponding to the key \fIc\fR:
.RS 3
.bP
-Printable characters are displayed as themselves, e.g., a one-character string containing the key.
+Printable characters are displayed as themselves,
+e.g., a one-character string containing the key.
.bP
Control characters are displayed in the \fB^\fR\fIX\fR notation.
.bP
@@ -123,16 +133,70 @@ 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
-\fIterminfo\fR database will be used, even if environment variables
-\fBLINES\fR and \fBCOLUMNS\fR (used by default) are set, or if
-\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.
+The \fBuse_env\fR routine, if used,
+should be called before \fBinitscr\fR or
+\fBnewterm\fR are called
+(because those compute the screen size).
+It modifies the way \fBncurses\fP treats environment variables
+when determining the screen size.
+.bP
+Normally ncurses looks first at the terminal database for the screen size.
+.IP
+If \fBuse_env\fP was called with \fBFALSE\fP for parameter,
+it stops here unless
+If \fBuse_tioctl\fP was also called with \fBTRUE\fP for parameter.
+.bP
+Then it asks for the screen size via operating system calls.
+If successful,
+it overrides the values from the terminal database.
+.bP
+Finally (unless \fBuse_env\fP was called with \fBFALSE\fP parameter),
+ncurses examines the \fBLINES\fR or \fBCOLUMNS\fR environment variables,
+using a value in those to override the results
+from the operating system or terminal database.
+.IP
+Ncurses also updates the screen size in response to SIGWINCH,
+unless overridden by the \fBLINES\fR or \fBCOLUMNS\fR environment variables,
+.PP
+The \fBuse_tioctl\fR routine, if used,
+should be called before \fBinitscr\fR or \fBnewterm\fR are called
+(because those compute the screen size).
+After \fBuse_tioctl\fR is called with \fBTRUE\fR as an argument,
+ncurses modifies the last step in its computation of screen size as follows:
+.bP
+checks if the \fBLINES\fR and \fBCOLUMNS\fR environment variables
+are set to a number greater than zero.
+.bP
+for each, ncurses updates the corresponding environment variable
+with the value that it has obtained via operating system call
+or from the terminal database.
+.bP
+ncurses re-fetches the value of the environment variables so that
+it is still the environment variables which set the screen size.
+.PP
+The \fBuse_env\fP and \fBuse_tioctl\fP routines combine as
+summarized here:
+.TS
+center tab(/);
+l l l
+_ _ _
+lw7 lw7 lw40.
+\fIuse_env\fR/\fIuse_tioctl\fR/\fISummary\fR
+TRUE/FALSE/T{
+This is the default behavior.
+ncurses uses operating system calls
+unless overridden by $LINES or $COLUMNS environment variables.
+T}
+TRUE/TRUE/T{
+ncurses updates $LINES and $COLUMNS based on operating system calls.
+T}
+FALSE/TRUE/T{
+ncurses ignores $LINES and $COLUMNS, uses operating system calls to obtain size.
+T}
+FALSE/FALSE/T{
+ncurses relies on the terminal database to determine size.
+T}
+.TE
.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
@@ -145,7 +209,8 @@ data. It returns a pointer to the new window.
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.
+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.
@@ -183,12 +248,13 @@ the parameter is in the range 128\-159, i.e., a C1 control code.
If \fBuse_legacy_coding\fP has been called with a \fB2\fP parameter,
\fBunctrl\fP returns the parameter, i.e., a one-character string with
the parameter as the first character.
-Otherwise, it returns ``~@'', ``~A'', etc., analogous to ``^@'', ``^A'', C0 controls.
+Otherwise, it returns \*(``~@\*('', \*(``~A\*('', etc.,
+analogous to \*(``^@\*('', \*(``^A\*('', C0 controls.
.IP
X/Open Curses does not document whether \fBunctrl\fP can be called before
initializing curses.
This implementation permits that,
-and returns the ``~@'', etc., values in that case.
+and returns the \*(``~@\*('', etc., values in that case.
.bP
parameter values outside the 0 to 255 range.
\fBunctrl\fP returns a null pointer.
@@ -214,17 +280,17 @@ change the output of \fBunctrl\fP.
Likewise, the \fBmeta\fP function allows the caller to change the
output of \fBkeyname\fP, i.e.,
it determines whether to use the `M\-' prefix
-for ``meta'' keys (codes in the range 128 to 255).
+for \*(``meta\*('' keys (codes in the range 128 to 255).
Both \fBuse_legacy_coding\fP and \fBmeta\fP succeed only after
curses is initialized.
X/Open Curses does not document the treatment of codes 128 to 159.
-When treating them as ``meta'' keys
+When treating them as \*(``meta\*('' keys
(or if \fBkeyname\fP is called before initializing curses),
-this implementation returns strings ``M\-^@'', ``M\-^A'', etc.
+this implementation returns strings \*(``M\-^@\*('', \*(``M\-^A\*('', etc.
.PP
The \fBkeyname\fP function may return the names of user-defined
string capabilities which are defined in the terminfo entry via the \fB\-x\fP
-option of \fBtic\fP.
+option of \fB@TIC@\fP.
This implementation automatically assigns at run-time keycodes to
user-defined strings which begin with "k".
The keycodes start at KEY_MAX, but are not guaranteed to be
@@ -233,8 +299,8 @@ merged from all terminal descriptions which have been loaded.
The \fBuse_extended_names\fP function controls whether this data is
loaded when the terminal description is read by the library.
.PP
-The \fBnofilter\fP routine is specific to ncurses.
-It was not supported on Version 7, BSD or System V implementations.
+The \fBnofilter\fP and \fBuse_tioctl\fP routines are specific to ncurses.
+They were not supported on Version 7, BSD or System V implementations.
It is recommended that any code depending on ncurses extensions
be conditioned using NCURSES_VERSION.
.SH SEE ALSO
diff --git a/contrib/ncurses/man/curs_variables.3x b/contrib/ncurses/man/curs_variables.3x
index 8cfee5290e5c..efbe192a4882 100644
--- a/contrib/ncurses/man/curs_variables.3x
+++ b/contrib/ncurses/man/curs_variables.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2010,2013 Free 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_variables.3x,v 1.4 2010/12/04 18:38:55 tom Exp $
+.\" $Id: curs_variables.3x,v 1.6 2013/12/21 18:41:32 tom Exp $
.TH curs_variables 3X ""
.de bP
.IP \(bu 4
@@ -74,7 +74,7 @@ This page summarizes variables provided by the \fBcurses\fP library.
A more complete description is given in the \fBcurses\fP(3X) manual page.
.PP
Depending on the configuration, these may be actual variables,
-or macros (see \fBcurs_threads\fR(3X))
+or macros (see \fBcurs_threads\fR(3X) and \fBcurs_opaque\fR(3X))
which provide read-only access to \fIcurses\fP's state.
In either case, applications should treat them as read-only to avoid
confusing the library.
@@ -129,7 +129,8 @@ ESCDELAY and TABSIZE are extensions,
not provided in most other implementations of curses.
.SH SEE ALSO
\fBcurses\fR(3X),
+\fBcurs_opaque\fR(3X),
+\fBcurs_terminfo\fR(3X),
\fBcurs_threads\fR(3X),
\fBterm_variables\fR(3X),
-\fBterminfo\fR(3X),
\fBterminfo\fR(\*n).
diff --git a/contrib/ncurses/man/form_field.3x b/contrib/ncurses/man/form_field.3x
index 7a39a0ccc839..19a8b88ef984 100644
--- a/contrib/ncurses/man/form_field.3x
+++ b/contrib/ncurses/man/form_field.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2012 Free Software 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.10 2010/12/04 18:40:45 tom Exp $
+.\" $Id: form_field.3x,v 1.11 2012/11/03 23:03:59 tom Exp $
.TH form_field 3X ""
.SH NAME
\fBform_field\fR \- make and break connections between fields and forms
@@ -52,7 +52,7 @@ The function \fBfield_count\fR returns the count of fields in \fIform\fR.
.PP
The function \fBmove_field\fR moves the given field (which must be disconnected)
to a specified location on the screen.
-.SH RETURN VALUES
+.SH RETURN VALUE
The function \fBform_fields\fR returns a pointer (which may be \fBNULL\fR).
It does not set errno.
.PP
diff --git a/contrib/ncurses/man/form_variables.3x b/contrib/ncurses/man/form_variables.3x
index 49f28762082d..f4af349b1699 100644
--- a/contrib/ncurses/man/form_variables.3x
+++ b/contrib/ncurses/man/form_variables.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2010,2013 Free 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_variables.3x,v 1.3 2010/12/04 18:38:55 tom Exp $
+.\" $Id: form_variables.3x,v 1.4 2013/06/22 17:58:32 tom Exp $
.TH form_variables 3X ""
.ds n 5
.na
@@ -45,7 +45,6 @@
.SH SYNOPSIS
.nf
\fB#include <form.h>\fR
-.br
.PP
\fBFIELDTYPE * TYPE_ALNUM;\fR
\fBFIELDTYPE * TYPE_ALPHA;\fR
@@ -54,7 +53,6 @@
\fBFIELDTYPE * TYPE_IPV4;\fR
\fBFIELDTYPE * TYPE_NUMERIC;\fR
\fBFIELDTYPE * TYPE_REGEXP;\fR
-.br
.fi
.SH DESCRIPTION
These are building blocks for the form library,
diff --git a/contrib/ncurses/man/infocmp.1m b/contrib/ncurses/man/infocmp.1m
index bfc3cc315c14..294abe3eb693 100644
--- a/contrib/ncurses/man/infocmp.1m
+++ b/contrib/ncurses/man/infocmp.1m
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -27,9 +27,12 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: infocmp.1m,v 1.46 2010/12/04 18:40:45 tom Exp $
+.\" $Id: infocmp.1m,v 1.53 2013/02/02 22:07:35 tom Exp $
.TH @INFOCMP@ 1M ""
.ds n 5
+.de bP
+.IP \(bu 4
+..
.ds d @TERMINFO@
.SH NAME
\fB@INFOCMP@\fR \- compare or print out \fIterminfo\fR descriptions
@@ -37,10 +40,12 @@
\fB@INFOCMP@\fR [\fB\-\
1\
C\
+D\
E\
F\
G\
I\
+K\
L\
T\
U\
@@ -69,32 +74,40 @@ x\
\fB@INFOCMP@\fR can be used to compare a binary \fBterminfo\fR entry with other
terminfo entries, rewrite a \fBterminfo\fR description to take advantage of the
\fBuse=\fR terminfo field, or print out a \fBterminfo\fR description from the
-binary file (\fBterm\fR) in a variety of formats. In all cases, the boolean
+binary file (\fBterm\fR) in a variety of formats.
+In all cases, the boolean
fields will be printed first, followed by the numeric fields, followed by the
string fields.
.SS Default Options
If no options are specified and zero or one \fItermnames\fR are specified, the
-\fB\-I\fR option will be assumed. If more than one \fItermname\fR is specified,
+\fB\-I\fR option will be assumed.
+If more than one \fItermname\fR is specified,
the \fB\-d\fR option will be assumed.
.SS Comparison Options [\-d] [\-c] [\-n]
\fB@INFOCMP@\fR compares the \fBterminfo\fR description of the first terminal
\fItermname\fR with each of the descriptions given by the entries for the other
-terminal's \fItermnames\fR. If a capability is defined for only one of the
+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
+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
+two or more entries.
+Capabilities that are not set are ignored.
+This option can be
used as a quick check to see if the \fB\-u\fR option is worth using.
.PP
-The \fB\-n\fR option produces a list of each capability that is in 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
+The \fB\-n\fR option produces a list of each capability that is in none of
+the given entries.
+If no \fItermnames\fR are given, the environment variable \fBTERM\fR
+will be used for both of the \fItermnames\fR.
+This can be used as a quick
check to see if anything was left out of a description.
.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
@@ -107,6 +120,7 @@ l l .
\fB\-L\fR/use the long C variable name listed in <\fBterm.h\fR>
\fB\-C\fR/use the \fBtermcap\fR names
\fB\-r\fR/when using \fB\-C\fR, put out all capabilities in \fBtermcap\fR form
+\fB\-K\fR/modifies the \fB\-C\fP option, improving BSD-compatibility.
.TE
.PP
If no \fItermnames\fR are given, the environment variable \fBTERM\fR will be
@@ -114,26 +128,48 @@ 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. \fB@INFOCMP@\fR will attempt to convert most of the
+the \fBtermcap\fR format.
+\fB@INFOCMP@\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.
+the output and commented out.
+These should be edited by hand.
+.PP
+For best results when converting to \fBtermcap\fP format,
+you should use both \fB\-C\fP and \fB\-r\fP.
+Normally a termcap description is limited to 1023 bytes.
+@INFOCMP@ trims away less essential parts to make it fit.
+If you are converting to one of the (rare) termcap implementations
+which accept an unlimited size of termcap,
+you may want to add the \fB\-T\fP option.
+More often however, you must help the termcap implementation,
+and trim excess whitespace (use the \fB\-0\fP option for that).
.PP
All padding information for strings will be collected together and placed
-at the beginning of the string where \fBtermcap\fR expects it. Mandatory
+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
+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
+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.
+Normally you would use both the \fB\-C\fP and \fB\-r\fP options.
+The actual format used incorporates some improvements for escaped characters
+from terminfo format.
+For a stricter BSD-compatible translation, use the \fB\-K\fR option
+rather than \fB\-C\fP.
.PP
Note that because padding is collected to the beginning of the capability, not
-all capabilities are output. Mandatory padding is not supported. Because
+all capabilities are output.
+Mandatory padding is not supported.
+Because
\fBtermcap\fR strings are not as flexible, it is not always possible to convert
-a \fBterminfo\fR string capability into an equivalent \fBtermcap\fR format. A
-subsequent conversion of the \fBtermcap\fR file back into \fBterminfo\fR format
+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
@@ -156,27 +192,33 @@ l l l.
.SS Use= Option [\-u]
The \fB\-u\fR option produces a \fBterminfo\fR source description of the first
terminal \fItermname\fR which is relative to the sum of the descriptions given
-by the entries for the other terminals \fItermnames\fR. It does this by
+by the entries for the other terminals \fItermnames\fR.
+It does this by
analyzing the differences between the first \fItermname\fR and the other
\fItermnames\fR and producing a description with \fBuse=\fR fields for the
-other terminals. In this manner, it is possible to retrofit generic terminfo
-entries into a terminal's description. Or, if two similar terminals exist, but
+other terminals.
+In this manner, it is possible to retrofit generic terminfo
+entries into a terminal's description.
+Or, if two similar terminals exist, but
were coded at different times or by different people so that each description
is a full description, using \fB@INFOCMP@\fR will show what can be done to change
one description to be relative to the other.
.PP
A capability will get printed with an at-sign (@) if it no longer exists in the
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
+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,
+The order of the other \fItermname\fR entries is significant.
+Since the
+terminfo compiler \fB@TIC@\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. \fB@INFOCMP@\fR will flag any such inconsistencies between
+entries are given in.
+\fB@INFOCMP@\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
@@ -187,29 +229,48 @@ 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. \fB@INFOCMP@\fR will flag any other \fItermname use=\fR fields that
+superfluous.
+\fB@INFOCMP@\fR will flag any other \fItermname use=\fR fields that
were not needed.
.SS Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR]
-The location of the compiled \fBterminfo\fR database is taken from the
-environment variable \fBTERMINFO\fR . If the variable is not defined, or the
-terminal is not found in that location, the system \fBterminfo\fR database,
-in \fB@TERMINFO@\fR, will be used. The options \fB\-A\fR
-and \fB\-B\fR may be used to override this location. The \fB\-A\fR option will
-set \fBTERMINFO\fR for the first \fItermname\fR and the \fB\-B\fR option will
-set \fBTERMINFO\fR for the other \fItermnames\fR. With this, it is possible to
+Like other \fBncurses\fP utilities,
+@INFOCMP@ looks for the terminal descriptions in several places.
+You can use the \fBTERMINFO\fP and \fBTERMINFO_DIRS\fP environment variables
+to override the compiled-in default list of places to search
+(see \fBcurses\fP(3X) for details).
+.PP
+You can also use the options \fB\-A\fR
+and \fB\-B\fR to override the list of places to search
+when comparing terminal descriptions:
+.bP
+The \fB\-A\fR option sets the location for the first \fItermname\fR
+.bP
+The \fB\-B\fR option sets the location for the other \fItermnames\fR.
+.PP
+Using these options, 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
+databases.
+For instance,
+you can use this feature for comparing descriptions for the same terminal
created by different people.
.SS Other Options
.TP 5
+\fB\-0\fR
+causes the fields to be printed on one line, without wrapping.
+.TP 5
\fB\-1\fR
-causes the fields to be printed out one to a line. Otherwise,
+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
\fB\-a\fR
tells \fB@INFOCMP@\fP to retain commented-out capabilities rather than discarding
-them. Capabilities are commented by prefixing them with a period.
+them.
+Capabilities are commented by prefixing them with a period.
+.TP
+\fB\-D\fR
+tells \fB@INFOCMP@\fP to print the database locations that it knows about, and exit.
.TP 5
\fB\-E\fR
Dump the capabilities of the given terminal as tables, needed in
@@ -231,12 +292,15 @@ 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
+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,
+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.
@@ -255,14 +319,17 @@ rather than their decimal equivalents.
.TP 5
\fB\-i\fR
Analyze the initialization (\fBis1\fR, \fBis2\fR, \fBis3\fR), and reset
-(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR), strings in the entry. For each string, the
+(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR), strings in the entry.
+For each string, the
code tries to analyze it into actions in terms of the other capabilities in the
entry, certain X3.64/ISO 6429/ECMA\-48 capabilities, and certain DEC VT-series
private modes (the set of recognized special sequences has been selected for
-completeness over the existing terminfo database). Each report line consists
+completeness over the existing terminfo database).
+Each report line consists
of the capability name, followed by a colon and space, followed by a printable
expansion of the capability string with sections matching recognized actions
-translated into {}-bracketed descriptions. Here is a list of the DEC/ANSI
+translated into {}-bracketed descriptions.
+Here is a list of the DEC/ANSI
special sequences recognized:
i.
.TS
@@ -308,7 +375,8 @@ DEC[+\-]ARM/auto-repeat mode
.sp
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).
+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
@@ -323,12 +391,15 @@ 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
+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
+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
+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
@@ -362,7 +433,7 @@ 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.
+tells \fB@TIC@\fP to discard commented-out capabilities.
Normally when translating from terminfo to termcap,
untranslatable capabilities are commented-out.
.TP 5
@@ -385,13 +456,15 @@ changes the output to \fIwidth\fR characters.
\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.
+using the \fB\-x\fR option of \fB@TIC@\fP.
.SH FILES
.TP 20
\*d
Compiled terminal description database.
.SH EXTENSIONS
The
+\fB\-0\fR,
+\fB\-1\fR,
\fB\-E\fR,
\fB\-F\fR,
\fB\-G\fR,
@@ -410,7 +483,8 @@ The
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
+Actual BSD curses versions will have a more restricted set.
+To see only the
4.4BSD set, use \fB\-r\fR \fB\-RBSD\fR.
.SH BUGS
The \fB\-F\fR option of \fB@INFOCMP@\fR(1M) should be a \fB@TOE@\fR(1M) mode.
@@ -421,6 +495,8 @@ The \fB\-F\fR option of \fB@INFOCMP@\fR(1M) should be a \fB@TOE@\fR(1M) mode.
\fB@TOE@\fR(1M),
\fBcurses\fR(3X),
\fBterminfo\fR(\*n).
+.sp
+http://invisible-island.net/ncurses/tctest.html
.PP
This describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
diff --git a/contrib/ncurses/man/manhtml.aliases b/contrib/ncurses/man/manhtml.aliases
new file mode 100644
index 000000000000..a4ae047a14c6
--- /dev/null
+++ b/contrib/ncurses/man/manhtml.aliases
@@ -0,0 +1,16 @@
+# $Id: manhtml.aliases,v 1.1 2013/12/21 21:44:52 tom Exp $
+# Items in this list will be linked to the corresponding manpages by man2html
+addch(3X) curs_addch(3X)
+delscreen(3X) curs_initscr(3X)
+filter(3X) curs_util(3X)
+form_fieldtype(3X) form_fieldtype(3X)
+getch(3X) curs_getch(3X)
+infocmp(1) infocmp(1M)
+initscr(3X) curs_initscr(3X)
+newterm(3X) curs_initscr(3X)
+set_fieldtype(3X) form_fieldtype(3X)
+set_term(3X) curs_initscr(3X)
+setupterm(3X) curs_terminfo(3X)
+tic(1) tic(1M)
+use_env(3X) curs_util(3X)
+vidputs(3X) curs_terminfo(3X)
diff --git a/contrib/ncurses/man/manhtml.externs b/contrib/ncurses/man/manhtml.externs
new file mode 100644
index 000000000000..d26b6127a445
--- /dev/null
+++ b/contrib/ncurses/man/manhtml.externs
@@ -0,0 +1,24 @@
+# $Id: manhtml.externs,v 1.3 2013/12/21 22:11:29 tom Exp $
+# Items in this list will not be linked by man2html
+conflict(1)
+csh(1)
+ded(1)
+environ(7)
+getty(1)
+nvi(1)
+printf(3)
+profile(5)
+putc(3)
+putwc(3)
+read(2)
+rogue(1)
+scanf(3)
+sh(1)
+sscanf(3)
+stdio(3)
+stty(1)
+system(3)
+termio(7)
+tty(4)
+ttys(5)
+wcwidth(3)
diff --git a/contrib/ncurses/man/menu_items.3x b/contrib/ncurses/man/menu_items.3x
index a9c578346485..04b00ad76772 100644
--- a/contrib/ncurses/man/menu_items.3x
+++ b/contrib/ncurses/man/menu_items.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2012 Free Software 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.9 2010/12/04 18:40:45 tom Exp $
+.\" $Id: menu_items.3x,v 1.10 2012/11/03 23:03:59 tom Exp $
.TH menu_items 3X ""
.SH NAME
\fBmenu_items\fR \- make and break connections between items and menus
@@ -47,7 +47,7 @@ The function \fBset_menu_items\fR changes the item pointer array of the given
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
+.SH RETURN VALUE
The function \fBmenu_items\fR returns a pointer (which may be \fBNULL\fR).
It does not set errno.
.PP
diff --git a/contrib/ncurses/man/ncurses.3x b/contrib/ncurses/man/ncurses.3x
index 4acfc050101a..6a5aa7c0c2fe 100644
--- a/contrib/ncurses/man/ncurses.3x
+++ b/contrib/ncurses/man/ncurses.3x
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2012,2013 Free Software 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,13 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: ncurses.3x,v 1.103 2011/02/05 23:21:29 tom Exp $
+.\" $Id: ncurses.3x,v 1.112 2013/07/20 19:29:59 tom Exp $
.hy 0
.TH ncurses 3X ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.de bP
.IP \(bu 4
..
@@ -43,7 +47,7 @@
.SH DESCRIPTION
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
+This implementation is \*(``new curses\*('' (ncurses) and
is the approved replacement for
4.4BSD classic curses, which has been discontinued.
This describes \fBncurses\fR
@@ -55,8 +59,10 @@ and XPG4 (X/Open Portability Guide) curses (also known as XSI curses).
XSI stands for X/Open System Interfaces Extension.
The \fBncurses\fR library is freely redistributable in source form.
Differences from the SVr4
-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
+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
The \fBncurses\fR library also provides many useful extensions,
@@ -108,9 +114,9 @@ Most programs would additionally use the sequence:
.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
+This can be done by executing the \fB@TPUT@ init\fR command
after the shell environment variable \fBTERM\fR has been exported.
-\fBtset(1)\fR is usually responsible for doing this.
+\fB@TSET@(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,
@@ -637,6 +643,7 @@ use_default_colors/\fBdefault_colors\fR(3X)*
use_env/\fBcurs_util\fR(3X)
use_extended_names/\fBcurs_extend\fR(3X)*
use_legacy_coding/\fBlegacy_coding\fR(3X)*
+use_tioctl/\fBcurs_util\fR(3X)
vid_attr/\fBcurs_terminfo\fR(3X)
vid_puts/\fBcurs_terminfo\fR(3X)
vidattr/\fBcurs_terminfo\fR(3X)
@@ -734,9 +741,16 @@ 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
+As a general rule, routines check for null pointers passed as parameters,
+and handle this as an error.
+.PP
All macros return the value of the \fBw\fR version, except \fBsetscrreg\fR,
\fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and \fBgetmaxyx\fR.
-The return values of \fBsetscrreg\fR, \fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and
+The return values of
+\fBsetscrreg\fR,
+\fBwsetscrreg\fR,
+\fBgetyx\fR,
+\fBgetbegyx\fR, and
\fBgetmaxyx\fR are undefined (i.e., these should not be used as the
right-hand side of assignment statements).
.PP
@@ -747,9 +761,9 @@ runtime behavior of the \fBncurses\fR library.
The most important ones have been already discussed in detail.
.TP 5
BAUDRATE
-The debugging library checks this environment symbol when the application
+The debugging library checks this environment variable when the application
has redirected output to a file.
-The symbol's numeric value is used for the baudrate.
+The variable's numeric value is used for the baudrate.
If no value is found, \fBncurses\fR uses 9600.
This allows testers to construct repeatable test-cases
that take into account costs that depend on baudrate.
@@ -757,7 +771,7 @@ that take into account costs that depend on baudrate.
CC
When set, change occurrences of the command_character
(i.e., the \fBcmdch\fP capability)
-of the loaded terminfo entries to the value of this symbol.
+of the loaded terminfo entries to the value of this variable.
Very few terminfo entries provide this feature.
.IP
Because this name is also used in development environments to represent
@@ -786,7 +800,9 @@ For best results, \fBlines\fR and \fBcols\fR should not be specified in
a terminal description for terminals which are run as emulations.
.IP
Use the \fBuse_env\fR function to disable all use of external environment
-(including system calls) to determine the screen size.
+(but not including system calls) to determine the screen size.
+Use the \fBuse_tioctl\fR function to update \fBCOLUMNS\fP or \fBLINES\fP
+to match the screen size obtained from system calls or the terminal database.
.TP 5
ESCDELAY
Specifies the total time, in milliseconds, for which ncurses will
@@ -837,8 +853,8 @@ platforms:
.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.
+This variable lets you customize the mouse.
+The variable must be three numeric digits 1\-3 in any order, e.g., 123 or 321.
If it is not specified, \fBncurses\fR uses 132.
.TP 5
NCURSES_ASSUMED_COLORS
@@ -899,19 +915,44 @@ 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
+Set the NCURSES_NO_PADDING environment variable to disable all but mandatory
padding.
Mandatory padding is used as a part of special control
sequences such as \fIflash\fR.
.TP 5
NCURSES_NO_SETBUF
-Normally \fBncurses\fR enables buffered output during terminal initialization.
-This is done (as in SVr4 curses) for performance reasons.
+This setting is obsolete.
+Before changes
+.RS
+.bP
+started with 5.9 patch 20120825
+and
+.bP
+continued
+though 5.9 patch 20130126
+.RE
+.IP
+\fBncurses\fR enabled buffered output during terminal initialization.
+This was done (as in SVr4 curses) for performance reasons.
For testing purposes, both of \fBncurses\fR and certain applications,
-this feature is made optional.
+this feature was made optional.
Setting the NCURSES_NO_SETBUF variable
-disables output buffering, leaving the output in the original (usually
+disabled output buffering, leaving the output in the original (usually
line buffered) mode.
+.IP
+In the current implementation,
+ncurses performs its own buffering and does not require this workaround.
+It does not modify the buffering of the standard output.
+.IP
+The reason for the change was to make the behavior for interrupts and
+other signals more robust.
+One drawback is that certain nonconventional programs would mix
+ordinary stdio calls with ncurses calls and (usually) work.
+This is no longer possible since ncurses is not using
+the buffered standard output but its own output (to the same file descriptor).
+As a special case, the low-level calls such as \fBputp\fP still use the
+standard output.
+But high-level curses calls do not.
.TP 5
NCURSES_NO_UTF8_ACS
During initialization, the \fBncurses\fR library
@@ -933,20 +974,22 @@ disables the special check for "linux" and "screen".
.IP
As an alternative to the environment variable,
ncurses checks for an extended terminfo capability \fBU8\fP.
-This is a numeric capability which can be compiled using \fBtic\ \-x\fP.
+This is a numeric capability which can be compiled using \fB@TIC@\ \-x\fP.
For example
.RS 5
+.ft CW
.sp
.nf
# linux console, if patched to provide working
# VT100 shift-in/shift-out, with corresponding font.
linux-vt100|linux console with VT100 line-graphics,
- U8#0, use=linux,
+ U8#0, use=linux,
.sp
# uxterm with vt100Graphics resource set to false
xterm-utf8|xterm relying on UTF-8 line-graphics,
- U8#1, use=xterm,
+ U8#1, use=xterm,
.fi
+.ft
.RE
.IP
The name "U8" is chosen to be two characters,
@@ -955,7 +998,7 @@ termcap interface.
.TP 5
NCURSES_TRACE
During initialization, the \fBncurses\fR debugging library
-checks the NCURSES_TRACE symbol.
+checks the NCURSES_TRACE environment variable.
If it is defined, to a numeric value, \fBncurses\fR calls the \fBtrace\fR
function, using that value as the argument.
.IP
@@ -973,9 +1016,10 @@ 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
+The TERMCAP environment variable contains either a terminal description (with
newlines stripped out),
-or a file name telling where the information denoted by the TERM symbol exists.
+or a file name telling where the information denoted by
+the TERM environment variable exists.
In either case, setting it directs \fBncurses\fR to ignore
the usual place for this information, e.g., /etc/termcap.
.TP 5
@@ -988,33 +1032,51 @@ The complete list of directories in order follows:
.bP
the last directory to which \fBncurses\fR wrote, if any, is searched first
.bP
-the directory specified by the TERMINFO symbol
+the directory specified by the TERMINFO environment variable
.bP
$HOME/.terminfo
.bP
-directories listed in the TERMINFO_DIRS symbol
+directories listed in the TERMINFO_DIRS environment variable
.bP
one or more directories whose names are configured and compiled into the
-ncurses library, e.g.,
-@TERMINFO@
+ncurses library, i.e.,
+.RS
+.bP
+@TERMINFO_DIRS@ (corresponding to the TERMINFO_DIRS variable)
+.bP
+@TERMINFO@ (corresponding to the TERMINFO variable)
+.RE
.RE
.TP 5
TERMINFO_DIRS
Specifies a list of directories to search for terminal descriptions.
The list is separated by colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
-All of the terminal descriptions are in terminfo form, which makes
-a subdirectory named for the first letter of the terminal names therein.
+.IP
+All of the terminal descriptions are in terminfo form.
+Normally these are stored in a directory tree,
+using subdirectories named by the first letter of the terminal names therein.
+.IP
+If \fBncurses\fP is built with a hashed database,
+then each entry in this list can also be the path of the corresponding
+database file.
+.IP
+If \fBncurses\fP is built with a support for reading termcap files
+directly, then an entry in this list may be the path of a termcap file.
.TP 5
TERMPATH
If TERMCAP does not hold a file name then \fBncurses\fR checks
-the TERMPATH symbol.
-This is a list of filenames separated by spaces or colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
-If the TERMPATH symbol is not set, \fBncurses\fR looks in the files
+the TERMPATH environment variable.
+This is a list of filenames separated by spaces or colons (i.e., ":") on Unix,
+semicolons on OS/2 EMX.
+.IP
+If the TERMPATH environment variable is not set,
+\fBncurses\fR looks in the files
/etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, in that order.
.PP
The library may be configured to disregard the following variables when the
current user is the superuser (root), or if the application uses setuid or
setgid permissions:
+.IP
$TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
.SH ALTERNATE CONFIGURATIONS
Several different configurations are possible,
@@ -1042,8 +1104,9 @@ 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.
+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
@@ -1093,8 +1156,8 @@ directory containing initialization files for the terminal capability database
@TERMINFO@
terminal capability database
.SH SEE ALSO
-\fBterminfo\fR(\*n) and related pages whose names begin "curs_" for detailed routine
-descriptions.
+\fBterminfo\fR(\*n) and related pages whose names begin
+"curs_" for detailed routine descriptions.
.br
\fBcurs_variables\fR(3X)
.SH EXTENSIONS
@@ -1144,6 +1207,15 @@ A small number of local differences (that is, individual differences between
the XSI Curses and \fBncurses\fR calls) are described in \fBPORTABILITY\fR
sections of the library man pages.
.PP
+Unlike other implementations, this one checks parameters such as pointers
+to WINDOW structures to ensure they are not null.
+The main reason for providing this behavior is to guard against programmer
+error.
+The standard interface does not provide a way for the library
+to tell an application which of several possible errors were detected.
+Relying on this (or some other) extension will adversely affect the
+portability of curses applications.
+.PP
This implementation also contains several extensions:
.bP
The routine \fBhas_key\fR is not part of XPG4, nor is it present in SVr4.
diff --git a/contrib/ncurses/man/resizeterm.3x b/contrib/ncurses/man/resizeterm.3x
index ddb47e76bf92..25a760c70a87 100644
--- a/contrib/ncurses/man/resizeterm.3x
+++ b/contrib/ncurses/man/resizeterm.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2012,2013 Free 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 1996-2005
+.\" Author: Thomas E. Dickey 1996-on
.\"
-.\" $Id: resizeterm.3x,v 1.14 2010/12/04 18:38:55 tom Exp $
+.\" $Id: resizeterm.3x,v 1.17 2013/06/22 20:41:54 tom Exp $
.TH resizeterm 3X ""
.SH NAME
\fBis_term_resized\fR,
@@ -48,7 +48,8 @@ It provides callers with a hook into the \fBncurses\fR data to resize windows,
primarily for use by programs running in an X Window terminal (e.g., xterm).
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.
+the \fBncurses\fR library that record the window dimensions
+such as the \fBLINES\fP and \fBCOLS\fP variables.
.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.
@@ -64,7 +65,7 @@ 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.
.SH RETURN VALUE
-Except as notes, these function return
+Except as noted, these functions return
the integer \fBERR\fR upon failure and \fBOK\fR on success.
They will fail if either of the dimensions are less than or equal to zero,
or if an error occurs while (re)allocating memory for the windows.
@@ -75,7 +76,7 @@ context where \fBmalloc\fR or \fBrealloc\fR may have been interrupted,
since it uses those functions.
.PP
If ncurses is configured to supply its own SIGWINCH handler,
-the \fBresizeterm\fR function ungetch's a \fBKEY_RESIZE\fR which
+the \fBresizeterm\fR function \fBungetch\fP's a \fBKEY_RESIZE\fR which
will be read on the next call to \fBgetch\fR.
This is used to alert an application that the screen size has changed,
and that it should repaint special features such as pads that cannot
@@ -86,9 +87,8 @@ 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
+\fBcurs_getch\fR(3X),
\fBcurs_variables\fR(3X),
\fBwresize\fR(3X).
.SH AUTHOR
diff --git a/contrib/ncurses/man/tabs.1 b/contrib/ncurses/man/tabs.1
index c867db511667..f6b797d777cd 100644
--- a/contrib/ncurses/man/tabs.1
+++ b/contrib/ncurses/man/tabs.1
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2008-2011,2013 Free 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,19 +26,18 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tabs.1,v 1.8 2010/12/04 18:40:45 tom Exp $
+.\" $Id: tabs.1,v 1.11 2013/06/22 18:11:57 tom Exp $
.TH @TABS@ 1 ""
.ds n 5
.SH NAME
-\fBtabs\fR \- set tabs on a terminal
+\fB@TABS@\fR \- set tabs on a terminal
.SH SYNOPSIS
-\fBtabs\fR [\fB\-v\fR[\fIn\fR]] [\fB\-ahuUV\fR] \fIfile...\fR
-.br
+\fB@TABS@\fR [\fIoptions\fR]] \fI[tabstop-list]\fR
.SH DESCRIPTION
.PP
-The \fBtabs\fP program clears and sets tab-stops on the terminal.
+The \fB@TABS@\fP program clears and sets tab-stops on the terminal.
This uses the terminfo \fIclear_all_tabs\fP and \fIset_tab\fP capabilities.
-If either is absent, \fBtabs\fP is unable to clear/set tab-stops.
+If either is absent, \fB@TABS@\fP is unable to clear/set tab-stops.
The terminal should be configured to use hard tabs, e.g.,
.sp
.RS
@@ -48,8 +47,8 @@ stty tab0
.SS General Options
.TP 5
.BI \-T "name"
-Tell \fBtabs\fP which terminal type to use.
-If this option is not given, \fBtabs\fP will use the \fB$TERM\fP
+Tell \fB@TABS@\fP which terminal type to use.
+If this option is not given, \fB@TABS@\fP will use the \fB$TERM\fP
environment variable.
If that is not set, it will use the \fIansi+tabs\fP entry.
.TP 5
@@ -59,10 +58,13 @@ The first data line shows the expected tab-stops marked with asterisks.
The second data line shows the actual tab-stops, marked with asterisks.
.TP 5
.B \-n
-This option tells \fBtabs\fP to check the options and run any debugging
+This option tells \fB@TABS@\fP to check the options and run any debugging
option, but not to modify the terminal settings.
+.TP
+\fB\-V\fR
+reports the version of ncurses which was used in this program, and exits.
.PP
-The \fBtabs\fP program processes a single list of tab stops.
+The \fB@TABS@\fP program processes a single list of tab stops.
The last option to be processed which defines a list is the one that
determines the list to be processed.
.SS Implicit Lists
diff --git a/contrib/ncurses/man/term.7 b/contrib/ncurses/man/term.7
index 78aa095a8829..cee8a012f85f 100644
--- a/contrib/ncurses/man/term.7
+++ b/contrib/ncurses/man/term.7
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -26,7 +26,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: term.7,v 1.22 2010/12/04 18:41:07 tom Exp $
+.\" $Id: term.7,v 1.23 2011/12/17 23:32:17 tom Exp $
.TH term 7
.ds n 5
.ds d @TERMINFO@
@@ -55,7 +55,7 @@ can almost always be avoided by explicitly exporting `vt100' (assuming you
are in fact using a VT100-superset console, terminal, or terminal emulator.)
.PP
In any case, you are free to override the system \fBTERM\fR setting to your
-taste in your shell profile. The \fBtset\fP(1) utility may be of assistance;
+taste in your shell profile. The \fB@TSET@\fP(1) utility may be of assistance;
you can give it a set of rules for deducing or requesting a terminal type based
on the tty device and baud rate.
.PP
diff --git a/contrib/ncurses/man/term_variables.3x b/contrib/ncurses/man/term_variables.3x
index 58b7cfea2df3..4cf9a0c89921 100644
--- a/contrib/ncurses/man/term_variables.3x
+++ b/contrib/ncurses/man/term_variables.3x
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 2011,2013 Free 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_variables.3x,v 1.2 2010/12/04 18:38:55 tom Exp $
+.\" $Id: term_variables.3x,v 1.4 2013/12/21 22:17:39 tom Exp $
.TH term_variables 3X ""
.ds n 5
.na
@@ -110,7 +110,7 @@ use as a parameter to \fBset_term\fP, for switching between screens.
Alternatively, one can save the return value from \fBnewterm\fP
or \fBsetupterm\fP to reuse in \fBset_term\fP.
.SS Terminfo Names
-The \fBtic\fP(1) and \fBinfocmp\fP(1) programs use lookup tables for
+The \fB@TIC@\fP(1) and \fB@INFOCMP@\fP(1) programs use lookup tables for
the long and short names of terminfo capabilities,
as well as the corresponding names for termcap capabilities.
These are available to other applications,
@@ -134,7 +134,10 @@ strcodes.
On initialization of the curses or terminfo interfaces,
\fBsetupterm\fP copies the terminal name to the array \fBttytype\fP.
.SH NOTES
-The low-level terminfo interface is initialized using \fBsetupterm\fR(3X).
+The low-level terminfo interface is initialized using
+.hy 0
+\fBsetupterm\fR(3X).
+.hy
The upper-level curses interface uses the low-level terminfo interface,
internally.
.SH PORTABILITY
@@ -146,8 +149,9 @@ Other implementations may have comparable variables.
Some implementations provide the variables in their libraries,
but omit them from the header files.
.SH SEE ALSO
+.hy 0
\fBcurses\fR(3X),
\fBcurs_terminfo\fR(3X),
\fBcurs_threads\fR(3X),
-\fBterminfo\fR(3X),
\fBterminfo\fR(\*n).
+.hy
diff --git a/contrib/ncurses/man/terminfo.head b/contrib/ncurses/man/terminfo.head
index da8284c2f63b..c4cc072baeb0 100644
--- a/contrib/ncurses/man/terminfo.head
+++ b/contrib/ncurses/man/terminfo.head
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2012,2013 Free 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,17 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: terminfo.head,v 1.18 2010/07/31 16:08:48 tom Exp $
+.\" $Id: terminfo.head,v 1.21 2013/03/09 22:11:36 tom Exp $
.TH terminfo 5 "" "" "File Formats"
.ds n 5
.ds d @TERMINFO@
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
+.de bP
+.IP \(bu 4
+..
.SH NAME
terminfo \- terminal capability data base
.SH SYNOPSIS
@@ -74,7 +81,7 @@ the result can be read by \fB@TIC@\fP.
Terminal names (except for the last, verbose entry) should
be chosen using the following conventions.
The particular piece of hardware making up the terminal should
-have a root name, thus ``hp2621''.
+have a root name, thus \*(``hp2621\*(''.
This name should not contain hyphens.
Modes that the hardware can be in, or user preferences, should
be indicated by appending a hyphen and a mode suffix.
@@ -102,6 +109,6 @@ l l l.
.TE
.PP
For more on terminal naming conventions, see the \fBterm(7)\fR manual page.
-.SS Capabilities
+.SS Predefined Capabilities
.\" Head of terminfo man page ends here
.ps -1
diff --git a/contrib/ncurses/man/terminfo.tail b/contrib/ncurses/man/terminfo.tail
index 4b56e91be314..ec076483fe83 100644
--- a/contrib/ncurses/man/terminfo.tail
+++ b/contrib/ncurses/man/terminfo.tail
@@ -1,8 +1,51 @@
-.\" $Id: terminfo.tail,v 1.53 2010/12/04 18:38:55 tom Exp $
+.\" $Id: terminfo.tail,v 1.68 2013/11/09 15:20:48 tom Exp $
.\" Beginning of terminfo.tail file
.\" This file is part of ncurses.
.\" See "terminfo.head" for copyright.
.ps +1
+.SS User-Defined Capabilities
+.
+The preceding section listed the \fIpredefined\fP capabilities.
+They deal with some special features for terminals no longer
+(or possibly never) produced.
+Occasionally there are special features of newer terminals which
+are awkward or impossible to represent by reusing the predefined
+capabilities.
+.PP
+\fBncurses\fP addresses this limitation by allowing user-defined capabilities.
+The \fB@TIC@\fP and \fB@INFOCMP@\fP programs provide
+the \fB\-x\fP option for this purpose.
+When \fB\-x\fP is set,
+\fB@TIC@\fP treats unknown capabilities as user-defined.
+That is, if \fB@TIC@\fP encounters a capability name
+which it does not recognize,
+it infers its type (boolean, number or string) from the syntax
+and makes an extended table entry for that capability.
+The \fBuse_extended_names\fP function makes this information
+conditionally available to applications.
+The ncurses library provides the data leaving most of the behavior
+to applications:
+.bP
+User-defined capability strings whose name begins
+with \*(``k\*('' are treated as function keys.
+.bP
+The types (boolean, number, string) determined by \fB@TIC@\fP
+can be inferred by successful calls on \fBtigetflag\fP, etc.
+.bP
+If the capability name happens to be two characters,
+the capability is also available through the termcap interface.
+.PP
+While termcap is said to be extensible because it does not use a predefined set
+of capabilities,
+in practice it has been limited to the capabilities defined by
+terminfo implementations.
+As a rule,
+user-defined capabilities intended for use by termcap applications should
+be limited to booleans and numbers to avoid running past the 1023 byte
+limit assumed by termcap implementations and their applications.
+In particular, providing extended sets of function keys (past the 60
+numbered keys and the handful of special named keys) is best done using
+the longer names available using terminfo.
.
.SS A Sample Entry
.
@@ -10,42 +53,54 @@ The following entry, describing an ANSI-standard terminal, is representative
of what a \fBterminfo\fR entry for a modern terminal typically looks like.
.PP
.nf
-.in -2
-.ta .3i
.ft CW
\s-2ansi|ansi/pc-term compatible with color,
- mc5i,
- colors#8, ncv#3, pairs#64,
- cub=\\E[%p1%dD, cud=\\E[%p1%dB, cuf=\\E[%p1%dC,
- cuu=\\E[%p1%dA, dch=\\E[%p1%dP, dl=\\E[%p1%dM,
- ech=\\E[%p1%dX, el1=\\E[1K, hpa=\\E[%p1%dG, ht=\\E[I,
- ich=\\E[%p1%d@, il=\\E[%p1%dL, indn=\\E[%p1%dS, .indn=\\E[%p1%dT,
- kbs=^H, kcbt=\\E[Z, kcub1=\\E[D, kcud1=\\E[B,
- kcuf1=\\E[C, kcuu1=\\E[A, kf1=\\E[M, kf10=\\E[V,
- kf11=\\E[W, kf12=\\E[X, kf2=\\E[N, kf3=\\E[O, kf4=\\E[P,
- kf5=\\E[Q, kf6=\\E[R, kf7=\\E[S, kf8=\\E[T, kf9=\\E[U,
- kich1=\\E[L, mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S,
- op=\\E[37;40m, rep=%p1%c\\E[%p2%{1}%\-%db,
- rin=\\E[%p1%dT, s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B,
- s3ds=\\E+B, setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm,
- setb=\\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- setf=\\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- sgr=\\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m,
- sgr0=\\E[0;10m, tbc=\\E[2g, u6=\\E[%d;%dR, u7=\\E[6n,
- u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%p1%dd,\s+2
-.in +2
+ am, mc5i, mir, msgr,
+ colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
+ acsc=+\\020\\,\\021-\\030.^Y0\\333`\\004a\\261f\\370g\\361h\\260
+ j\\331k\\277l\\332m\\300n\\305o~p\\304q\\304r\\304s_t\\303
+ u\\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,
+ 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,
+ 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=\\E[I, hts=\\EH,
+ ich=\\E[%p1%d@, il=\\E[%p1%dL, il1=\\E[L, ind=^J,
+ indn=\\E[%p1%dS, invis=\\E[8m, kbs=^H, kcbt=\\E[Z, kcub1=\\E[D,
+ kcud1=\\E[B, kcuf1=\\E[C, kcuu1=\\E[A, khome=\\E[H, kich1=\\E[L,
+ mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S, op=\\E[39;49m,
+ rep=%p1%c\\E[%p2%{1}%-%db, rev=\\E[7m, rin=\\E[%p1%dT,
+ rmacs=\\E[10m, rmpch=\\E[10m, rmso=\\E[m, rmul=\\E[m,
+ s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B, s3ds=\\E+B,
+ 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, smpch=\\E[11m, smso=\\E[7m,
+ smul=\\E[4m, tbc=\\E[3g, u6=\\E[%i%d;%dR, u7=\\E[6n,
+ u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%i%p1%dd,
.fi
.ft R
.PP
Entries may continue onto multiple lines by placing white space at
the beginning of each line except the first.
-Comments may be included on lines beginning with ``#''.
+Comments may be included on lines beginning with \*(``#\*(''.
Capabilities in
.I terminfo
are of three types:
+.bP
Boolean capabilities which indicate that the terminal has
-some particular feature, numeric capabilities giving the size of the terminal
-or the size of particular delays, and string
+some particular feature,
+.bP
+numeric capabilities giving the size of the terminal
+or the size of particular delays, and
+.bP
+string
capabilities, which give a sequence which can be used to perform particular
terminal operations.
.PP
@@ -58,15 +113,15 @@ ANSI-standard terminals have
(i.e., an automatic return and line-feed
when the end of a line is reached) is indicated by the capability \fBam\fR.
Hence the description of ansi includes \fBam\fR.
-Numeric capabilities are followed by the character `#' and then a positive value.
+Numeric capabilities are followed by the character \*(``#\*('' and then a positive value.
Thus \fBcols\fR, which indicates the number of columns the terminal has,
-gives the value `80' for ansi.
+gives the value \*(``80\*('' for ansi.
Values for numeric capabilities may be specified in decimal, octal or hexadecimal,
using the C programming language conventions (e.g., 255, 0377 and 0xff or 0xFF).
.PP
Finally, string valued capabilities, such as \fBel\fR (clear to end of line
-sequence) are given by the two-character code, an `=', and then a string
-ending at the next following `,'.
+sequence) are given by the two-character code, an \*(``=\*('', and then a string
+ending at the next following \*(``,\*(''.
.PP
A number of escape sequences are provided in the string valued capabilities
for easy encoding of characters there.
@@ -75,14 +130,29 @@ map to an \s-1ESCAPE\s0 character,
\fB^x\fR maps to a control-x for any appropriate x, and the sequences
\fB\en \el \er \et \eb \ef \es\fR give
a newline, line-feed, return, tab, backspace, form-feed, and space.
-Other escapes include \fB\e^\fR for \fB^\fR,
+Other escapes include
+.bP
+\fB\e^\fR for \fB^\fR,
+.bP
\fB\e\e\fR for \fB\e\fR,
+.bP
\fB\e\fR, for comma,
+.bP
\fB\e:\fR for \fB:\fR,
+.bP
and \fB\e0\fR for null.
-(\fB\e0\fR will produce \e200, which does not terminate a string but behaves
+.IP
+\fB\e0\fR will produce \e200, which does not terminate a string but behaves
as a null character on most terminals, providing CS7 is specified.
-See stty(1).)
+See stty(1).
+.IP
+The reason for this quirk is to maintain binary compatibility of the
+compiled terminfo files with other implementations,
+e.g., the SVr4 systems, which document this.
+Compiled terminfo files use null-terminated strings, with no lengths.
+Modifying this would require a new binary format,
+which would not work with other implementations.
+.PP
Finally, characters may be given as three octal digits after a \fB\e\fR.
.PP
A delay in milliseconds may appear anywhere in a string capability, enclosed in
@@ -90,8 +160,8 @@ $<..> brackets, as in \fBel\fP=\eEK$<5>, and padding characters are supplied by
.I tputs
to provide this delay.
The delay must be a number with at most one decimal
-place of precision; it may be followed by suffixes `*' or '/' or both.
-A `*'
+place of precision; it may be followed by suffixes \*(``*\*('' or \*(``/\*('' or both.
+A \*(``*\*(''
indicates that the padding required is proportional to the number of lines
affected by the operation, and the amount given is the per-affected-unit
padding required.
@@ -100,7 +170,7 @@ number of
.IR lines
affected.) Normally, padding is advisory if the device has the \fBxon\fR
capability; it is used for cost computation but does not trigger delays.
-A `/'
+A \*(``/\*(''
suffix indicates that the padding is mandatory and forces a delay of the given
number of milliseconds even on devices for which \fBxon\fR is present to
indicate flow control.
@@ -115,27 +185,36 @@ in the example above.
.PP
.SS Fetching Compiled Descriptions
.PP
+The \fBncurses\fP library searches for terminal descriptions in several places.
+It uses only the first description found.
+The library has a compiled-in list of places to search
+which can be overridden by environment variables.
+Before starting to search,
+\fBncurses\fP eliminates duplicates in its search list.
+.bP
If the environment variable TERMINFO is set, it is interpreted as the pathname
of a directory containing the compiled description you are working on.
-Only
-that directory is searched.
-.PP
-If TERMINFO is not set, the \fBncurses\fR version of the terminfo reader code
-will instead look in the directory \fB$HOME/.terminfo\fR
+Only that directory is searched.
+.bP
+If TERMINFO is not set,
+\fBncurses\fR will instead look in the directory \fB$HOME/.terminfo\fR
for a compiled description.
-If it fails to find one there, and the environment variable TERMINFO_DIRS is
-set, it will interpret the contents of that variable as a list of colon-
-separated directories to be searched (an empty entry is interpreted as a
-command to search \fI\*d\fR).
-If no description is found in any of the
-TERMINFO_DIRS directories, the fetch fails.
-.PP
-If neither TERMINFO nor TERMINFO_DIRS is set, the last place tried will be the
-system terminfo directory, \fI\*d\fR.
-.PP
-(Neither the \fB$HOME/.terminfo\fR lookups nor TERMINFO_DIRS extensions are
-supported under stock System V terminfo/curses.)
-.PP
+.bP
+Next, if the environment variable TERMINFO_DIRS is set,
+\fBncurses\fR will interpret the contents of that variable
+as a list of colon-separated directories (or database files) to be searched.
+.IP
+An empty directory name (i.e., if the variable begins or ends
+with a colon, or contains adacent colons)
+is interpreted as the system location \fI\*d\fR.
+.bP
+Finally, \fBncurses\fP searches these compiled-in locations:
+.RS
+.bP
+a list of directories (@TERMINFO_DIRS@), and
+.bP
+the system terminfo directory, \fI\*d\fR (the compiled-in default).
+.RE
.SS Preparing Descriptions
.PP
We now outline how to prepare descriptions of terminals.
@@ -154,7 +233,7 @@ or bugs in the screen-handling code of the test program.
.PP
To get the padding for insert line right (if the terminal manufacturer
did not document it) a severe test is to edit a large file at 9600 baud,
-delete 16 or so lines from the middle of the screen, then hit the `u'
+delete 16 or so lines from the middle of the screen, then hit the \*(``u\*(''
key several times quickly.
If the terminal messes up, more padding is usually needed.
A similar test can be used for insert character.
@@ -198,7 +277,7 @@ given as
and
.BR cud1 .
These local cursor motions should not alter the text they pass over,
-for example, you would not normally use `\fBcuf1\fP=\ ' because the
+for example, you would not normally use \*(``\fBcuf1\fP=\ \*('' because the
space would erase the character moved over.
.PP
A very important point here is that the local cursor motions encoded
@@ -275,9 +354,10 @@ Thus the model 33 teletype is described as
.ft CW
.\".in -2
\s-133\||\|tty33\||\|tty\||\|model 33 teletype,
- bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1
+ bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1
.\".in +2
.ft R
+.fi
.PP
while the Lear Siegler \s-1ADM-3\s0 is described as
.PP
@@ -286,8 +366,8 @@ while the Lear Siegler \s-1ADM-3\s0 is described as
.ft CW
.\".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
+ am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
+ ind=^J, lines#24,\s+1
.\".in +2
.ft R
.fi
@@ -296,9 +376,8 @@ while the Lear Siegler \s-1ADM-3\s0 is described as
.PP
Cursor addressing and other strings requiring parameters
in the terminal are described by a
-parameterized string capability, with
-.IR printf (3)
-like escapes \fB%x\fR in it.
+parameterized string capability,
+with \fIprintf\fP-like escapes such as \fI%x\fR in it.
For example, to address the cursor, the
.B cup
capability is given, using two parameters:
@@ -321,34 +400,34 @@ e.g., in the \fBsgr\fP string.
The \fB%\fR encodings have the following meanings:
.PP
.TP 5
-\s-1%%
-outputs `%'
+\fB%%\fP
+outputs \*(``%\*(''
.TP
-%\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
-as in \fBprintf\fP, flags are [\-+#] and space.
-Use a `:' to allow the next character to be a `\-' flag,
+\fB%\fP\fI[[\fP:\fI]flags][width[.precision]][\fP\fBdoxXs\fP\fI]\fP
+as in \fBprintf\fP, flags are \fI[\-+#]\fP and \fIspace\fP.
+Use a \*(``:\*('' to allow the next character to be a \*(``\-\*('' flag,
avoiding interpreting "%\-" as an operator.
.TP
-%c
+\f(CW%c\fP
print pop() like %c in \fBprintf\fP
.TP
-%s
+\fB%s\fP
print pop() like %s in \fBprintf\fP
.TP
-%p[1\-9]
+\fB%p\fP\fI[1\-9]\fP
push \fIi\fP'th parameter
.TP
-%P[a\-z]
-set dynamic variable [a\-z] to pop()
+\fB%P\fP\fI[a\-z]\fP
+set dynamic variable \fI[a\-z]\fP to pop()
.TP
-%g[a\-z]
-get dynamic variable [a\-z] and push it
+\fB%g\fP\fI[a\-z]/\fP
+get dynamic variable \fI[a\-z]\fP and push it
.TP
-%P[A\-Z]
-set static variable [a\-z] to pop()
+\fB%P\fP\fI[A\-Z]\fP
+set static variable \fI[a\-z]\fP to \fIpop()\fP
.TP
-%g[A\-Z]
-get static variable [a\-z] and push it
+\fB%g\fP\fI[A\-Z]\fP
+get static variable \fI[a\-z]\fP and push it
.IP
The terms "static" and "dynamic" are misleading.
Historically, these are simply two different sets of variables,
@@ -356,48 +435,48 @@ 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'
+\fB%'\fP\fIc\fP\fB'\fP
char constant \fIc\fP
.TP
-%{\fInn\fP}
+\fB%{\fP\fInn\fP\fB}\fP
integer constant \fInn\fP
.TP
-%l
+\fB%l\fP
push strlen(pop)
.TP
-%+ %\- %* %/ %m
-arithmetic (%m is mod): push(pop() op pop())
+\fB%+\fP, \fB%\-\fP, \fB%*\fP, \fB%/\fP, \fB%m\fP
+arithmetic (%m is mod): \fIpush(pop() op pop())\fP
.TP
-%& %| %^
-bit operations (AND, OR and exclusive-OR): push(pop() op pop())
+\fB%&\fP, \fB%|\fP, \fB%^\fP
+bit operations (AND, OR and exclusive-OR): \fIpush(pop() op pop())\fP
.TP
-%= %> %<
-logical operations: push(pop() op pop())
+\fB%=\fP, \fB%>\fP, \fB%<\fP
+logical operations: \fIpush(pop() op pop())\fP
.TP
-%A, %O
+\fB%A\fP, \fB%O\fP
logical AND and OR operations (for conditionals)
.TP
-%! %~
+\fB%!\fP, \fB%~\fP
unary operations (logical and bit complement): push(op pop())
.TP
-%i
+\fB%i\fP
add 1 to first two parameters (for ANSI terminals)
.TP
-%? \fIexpr\fP %t \fIthenpart\fP %e \fIelsepart\fP %;
+\fB%?\fP \fIexpr\fP \fB%t\fP \fIthenpart\fP \fB%e\fP \fIelsepart\fP \fB%;\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.
+The \fB%e\fP \fIelsepart\fP is optional.
+Usually the \fB%?\fP \fIexpr\fP part pushes a value onto the stack,
+and \fB%t\fP pops it from the stack, testing if it is nonzero (true).
+If it is zero (false), control passes to the \fB%e\fP (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 %;
+\fB%?\fP c\d1\u \fB%t\fP b\d1\u \fB%e\fP c\d2\u \fB%t\fP b\d2\u \fB%e\fP c\d3\u \fB%t\fP b\d3\u \fB%e\fP c\d4\u \fB%t\fP b\d4\u \fB%e\fP \fB%;\fP
.RE
.IP
where c\di\u are conditions, b\di\u are bodies.
.IP
-Use the \fB\-f\fP option of \fBtic\fP or \fB@INFOCMP@\fP to see
+Use the \fB\-f\fP option of \fB@TIC@\fP or \fB@INFOCMP@\fP to see
the structure of if-then-else's.
Some strings, e.g., \fBsgr\fP can be very complicated when written
on one line.
@@ -405,7 +484,7 @@ 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}%-".
-%P and %g variables are
+\fB%P\fP and \fB%g\fP variables are
persistent across escape-string evaluations.
.PP
Consider the HP2645, which, to get to row 3 and column 12, needs
@@ -429,7 +508,7 @@ This turns out to be essential for the Ann Arbor 4080.)
.PP
A final example is the \s-1LSI ADM\s0-3a, which uses row and column
offset by a blank character, thus \*(lqcup=\eE=%p1%' '%+%c%p2%' '%+%c\*(rq.
-After sending `\eE=', this pushes the first parameter, pushes the
+After sending \*(``\eE=\*('', this pushes the first parameter, pushes the
ASCII value for a space (32), adds them (pushing the sum on the stack
in place of the two previous values) and outputs that value as a character.
Then the same is done for the second parameter.
@@ -593,6 +672,7 @@ Other terminals, such as the Concept 100 and the Perkin Elmer Owl, make
a distinction between typed and untyped blanks on the screen, shifting
upon an insert or delete only to an untyped blank on the screen which is
either eliminated, or expanded to two untyped blanks.
+.PP
You can determine the
kind of terminal you have by clearing the screen and then typing
text separated by cursor motions.
@@ -608,6 +688,7 @@ shifts over to the \*(lqdef\*(rq which then move together around the end of the
current line and onto the next as you insert, you have the second type of
terminal, and should give the capability \fBin\fR, which stands for
\*(lqinsert null\*(rq.
+.PP
While these are two logically separate attributes (one line versus multi-line
insert mode, and special treatment of untyped spaces) we have seen no
terminals whose insert mode cannot be described with the single attribute.
@@ -642,7 +723,7 @@ If post insert padding is needed, give this as a number of milliseconds
in \fBip\fR (a string option).
Any other sequence which may need to be
sent after an insert of a single character may also be given in \fBip\fR.
-If your terminal needs both to be placed into an `insert mode' and
+If your terminal needs both to be placed into an \*(``insert mode\*('' and
a special code to precede each inserted character, then both
.BR smir / rmir
and
@@ -792,6 +873,7 @@ either standout or reverse modes are turned on.
.PP
Writing out the above sequences, along with their dependencies yields
.PP
+.ne 11
.TS
center;
l l l
@@ -799,6 +881,7 @@ l l l
lw18 lw14 lw18.
\fBsequence when to output terminfo translation\fP
+.ft CW
\\E[0 always \\E[0
;1 if p1 or p6 %?%p1%p6%|%t;1%;
;4 if p2 %?%p2%|%t;4%;
@@ -807,14 +890,17 @@ lw18 lw14 lw18.
;8 if p7 %?%p7%|%t;8%;
m always m
^N or ^O if p9 ^N, else ^O %?%p9%t^N%e^O%;
+.ft R
.TE
.PP
Putting this all together into the sgr sequence gives:
.PP
+.ft CW
.nf
- sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;
- %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;,
+ sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%;
+ %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;,
.fi
+.ft R
.PP
Remember that if you specify sgr, you must also specify sgr0.
Also, some implementations rely on sgr being given if sgr0 is,
@@ -824,9 +910,9 @@ 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
+Terminals with the \*(``magic cookie\*('' glitch
.RB ( xmc )
-deposit special ``cookies'' when they receive mode-setting sequences,
+deposit special \*(``cookies\*('' when they receive mode-setting sequences,
which affect the display algorithm rather than having extra bits for
each character.
Some terminals, such as the HP 2621, automatically leave standout
@@ -871,6 +957,7 @@ to the unshifted HP 2621 keys).
If the keypad can be set to transmit or not transmit,
give these codes as \fBsmkx\fR and \fBrmkx\fR.
Otherwise the keypad is assumed to always transmit.
+.PP
The codes sent by the left arrow, right arrow, up arrow, down arrow,
and home keys can be given as
\fBkcub1, kcuf1, kcuu1, kcud1, \fRand\fB khome\fR respectively.
@@ -878,41 +965,60 @@ If there are function keys such as f0, f1, ..., f10, the codes they send
can be given as \fBkf0, kf1, ..., kf10\fR.
If these keys have labels other than the default f0 through f10, the labels
can be given as \fBlf0, lf1, ..., lf10\fR.
+.PP
The codes transmitted by certain other special keys can be given:
+.bP
.B kll
(home down),
+.bP
.B kbs
(backspace),
+.bP
.B ktbc
(clear all tabs),
+.bP
.B kctab
(clear the tab stop in this column),
+.bP
.B kclr
(clear screen or erase key),
+.bP
.B kdch1
(delete character),
+.bP
.B kdl1
(delete line),
+.bP
.B krmir
(exit insert mode),
+.bP
.B kel
(clear to end of line),
+.bP
.B ked
(clear to end of screen),
+.bP
.B kich1
(insert character or enter insert mode),
+.bP
.B kil1
(insert line),
+.bP
.B knp
(next page),
+.bP
.B kpp
(previous page),
+.bP
.B kind
(scroll forward/down),
+.bP
.B kri
(scroll backward/up),
+.bP
.B khts
(set a tab stop in this column).
+.PP
In addition, if the keypad has a 3 by 3 array of keys including the four
arrow keys, the other five keys can be given as
.BR ka1 ,
@@ -956,7 +1062,7 @@ If the terminal has hardware tabs, the command to advance to the next
tab stop can be given as
.B ht
(usually control I).
-A ``back-tab'' command which moves leftward to the preceding tab stop can
+A \*(``back-tab\*('' command which moves leftward to the preceding tab stop can
be given as
.BR cbt .
By convention, if the teletype modes indicate that tabs are being
@@ -974,7 +1080,7 @@ the numeric parameter
.B it
is given, showing the number of spaces the tabs are set to.
This is normally used by the
-.IR tset
+.IR @TSET@
command to determine whether to set the mode for hardware tab expansion,
and whether to set the tab stops.
If the terminal has tab stops that can be saved in non-volatile memory,
@@ -1131,7 +1237,7 @@ Only the first character of the
string is used.
.PP
.SS Status Lines
-Some terminals have an extra `status line' which is not normally used by
+Some terminals have an extra \*(``status line\*('' which is not normally used by
software (and thus not counted in the terminal's \fBlines\fR capability).
.PP
The simplest case is a status line which is cursor-addressable but not
@@ -1223,7 +1329,7 @@ character pairs right to left in sequence; these become the ACSC string.
.PP
.SS Color Handling
.PP
-Most color terminals are either `Tektronix-like' or `HP-like'.
+Most color terminals are either \*(``Tektronix-like\*('' or \*(``HP-like\*(''.
Tektronix-like
terminals have a predefined set of N colors (where N usually 8), and can set
character-cell foreground and background characters independently, mixing them
@@ -1303,6 +1409,7 @@ 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
+.PP
It is important to not confuse the two sets of color capabilities;
otherwise red/blue will be interchanged on the display.
.PP
@@ -1339,18 +1446,25 @@ attributes understood by \fBcurses\fR is as follows:
.PP
.TS
center;
-l c c
-lw25 lw2 lw10.
-\fBAttribute Bit Decimal\fR
-A_STANDOUT 0 1
-A_UNDERLINE 1 2
-A_REVERSE 2 4
-A_BLINK 3 8
-A_DIM 4 16
-A_BOLD 5 32
-A_INVIS 6 64
-A_PROTECT 7 128
-A_ALTCHARSET 8 256
+l l l l
+lw20 lw2 lw10 lw10.
+\fBAttribute Bit Decimal Set by\fR
+A_STANDOUT 0 1 sgr
+A_UNDERLINE 1 2 sgr
+A_REVERSE 2 4 sgr
+A_BLINK 3 8 sgr
+A_DIM 4 16 sgr
+A_BOLD 5 32 sgr
+A_INVIS 6 64 sgr
+A_PROTECT 7 128 sgr
+A_ALTCHARSET 8 256 sgr
+A_HORIZONTAL 9 512 sgr1
+A_LEFT 10 1024 sgr1
+A_LOW 11 2048 sgr1
+A_RIGHT 12 4096 sgr1
+A_TOP 13 8192 sgr1
+A_VERTICAL 14 16384 sgr1
+A_ITALIC 15 32768 sitm
.TE
.PP
For example, on many IBM PC consoles, the underline attribute collides with the
@@ -1389,7 +1503,7 @@ this can be indicated with the parameterized string
.BR rep .
The first parameter is the character to be repeated and the second
is the number of times to repeat it.
-Thus, tparm(repeat_char, 'x', 10) is the same as `xxxxxxxxxx'.
+Thus, tparm(repeat_char, 'x', 10) is the same as \*(``xxxxxxxxxx\*(''.
.PP
If the terminal has a settable command character, such as the \s-1TEKTRONIX\s+1 4025,
this can be indicated with
@@ -1420,13 +1534,13 @@ how to talk to the terminal.
.I virtual
terminal descriptions for which the escape sequences are known.)
.PP
-If the terminal has a ``meta key'' which acts as a shift key,
+If the terminal has a \*(``meta key\*('' which acts as a shift key,
setting the 8th bit of any character transmitted, this fact can
be indicated with
.BR km .
Otherwise, software will assume that the 8th bit is parity and it
will usually be cleared.
-If strings exist to turn this ``meta mode'' on and off, they
+If strings exist to turn this \*(``meta mode\*('' on and off, they
can be given as
.B smm
and
@@ -1470,7 +1584,7 @@ is in effect.
.PP
.SS Glitches and Braindamage
.PP
-Hazeltine terminals, which do not allow `~' characters to be displayed should
+Hazeltine terminals, which do not allow \*(``~\*('' characters to be displayed should
indicate \fBhz\fR.
.PP
Terminals which ignore a line-feed immediately after an \fBam\fR wrap,
@@ -1485,10 +1599,10 @@ is required to get rid of standout
.PP
Teleray terminals, where tabs turn all characters moved over to blanks,
should indicate \fBxt\fR (destructive tabs).
-Note: the variable indicating this is now `dest_tabs_magic_smso'; in
+Note: the variable indicating this is now \*(``dest_tabs_magic_smso\*(''; in
older versions, it was teleray_glitch.
This glitch is also taken to mean that it is not possible to position
-the cursor on top of a ``magic cookie'',
+the cursor on top of a \*(``magic cookie\*('',
that to erase standout mode it is instead necessary to use
delete and insert line.
The ncurses implementation ignores this glitch.
@@ -1499,7 +1613,7 @@ or control C characters, has
indicating that the f1 key is used for escape and f2 for control C.
(Only certain Superbees have this problem, depending on the ROM.)
Note that in older terminfo versions, this capability was called
-`beehive_glitch'; it is now `no_esc_ctl_c'.
+\*(``beehive_glitch\*(''; it is now \*(``no_esc_ctl_c\*(''.
.PP
Other specific terminal problems may be corrected by adding more
capabilities of the form \fBx\fR\fIx\fR.
@@ -1524,8 +1638,10 @@ those brought in by \fBuse\fR references.
A capability can be canceled by placing \fBxx@\fR to the left of the
use reference that imports it, where \fIxx\fP is the capability.
For example, the entry
+.RS
.PP
- 2621\-nl, smkx@, rmkx@, use=2621,
+2621\-nl, smkx@, rmkx@, use=2621,
+.RE
.PP
defines a 2621\-nl that does not have the \fBsmkx\fR or \fBrmkx\fR capabilities,
and hence does not turn on the function key labels when in visual mode.
@@ -1570,19 +1686,15 @@ length of the entry as it exists in /etc/termcap, minus the
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
-*
+.bP
a termcap entry before expansion is more than 1023 bytes long,
-.TP 5
-*
+.bP
and the application has only allocated a 1k buffer,
-.TP 5
-*
+.bP
and the termcap library (like the one in BSD/OS 1.1 and GNU) reads
the whole entry into the buffer, no matter what its length, to see
if it is the entry it wants,
-.TP 5
-*
+.bP
and \fBtgetent()\fP is searching for a terminal type that either is the
long entry, appears in the termcap file after the long entry, or
does not appear in the file at all (so that \fBtgetent()\fP has to search
@@ -1625,6 +1737,11 @@ 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
+.PP
+Searching for terminal descriptions in
+\fB$HOME/.terminfo\fR and TERMINFO_DIRS
+is not supported by older implementations.
+.PP
Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, do not
interpret the %A and %O operators in parameter strings.
.PP
@@ -1652,6 +1769,15 @@ The \fBncurses\fR wants to
interpret it as \fBKEY_MOUSE\fR, for use by terminals and emulators like xterm
that can return mouse-tracking information in the keyboard-input stream.
.PP
+X/Open Curses does not mention italics.
+Portable applications must assume that numeric capabilities are
+signed 16-bit values.
+This includes the \fIno_color_video\fP (ncv) capability.
+The 32768 mask value used for italics with ncv can be confused with
+an absent or cancelled ncv.
+If italics should work with colors,
+then the ncv value must be specified, even if it is zero.
+.PP
Different commercial ports of terminfo and curses support different subsets of
the XSI Curses standard and (in some cases) different extension sets.
Here
@@ -1666,9 +1792,9 @@ capability (\fBset_pglen\fR).
.PP
\fBSVr1, Ultrix\fR \-\-
These support a restricted subset of terminfo capabilities.
-The booleans
-end with \fBxon_xoff\fR; the numerics with \fBwidth_status_line\fR; and the
-strings with \fBprtr_non\fR.
+The booleans end with \fBxon_xoff\fR;
+the numerics with \fBwidth_status_line\fR;
+and the strings with \fBprtr_non\fR.
.PP
\fBHP/UX\fR \-\-
Supports the SVr1 subset, plus the SVr[234] numerics \fBnum_labels\fR,
diff --git a/contrib/ncurses/man/tic.1m b/contrib/ncurses/man/tic.1m
index cf4147fc110f..5c3a63fa9cbd 100644
--- a/contrib/ncurses/man/tic.1m
+++ b/contrib/ncurses/man/tic.1m
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2012,2013 Free 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,19 +26,29 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tic.1m,v 1.47 2010/12/04 18:38:55 tom Exp $
+.\" $Id: tic.1m,v 1.58 2013/07/20 19:31:25 tom Exp $
.TH @TIC@ 1M ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.ds n 5
.ds d @TERMINFO@
+.de bP
+.IP \(bu 4
+..
.SH NAME
-\fBtic\fR \- the \fIterminfo\fR entry-description compiler
+\fB@TIC@\fR \- the \fIterminfo\fR entry-description compiler
.SH SYNOPSIS
-\fBtic\fR
+\fB@TIC@\fR
[\fB\-\
+0\
1\
C\
+D\
G\
I\
+K\
L\
N\
T\
@@ -61,31 +71,69 @@ x\
\fIfile\fR
.br
.SH DESCRIPTION
-The command \fBtic\fR translates a \fBterminfo\fR file from source
+The \fB@TIC@\fR command translates a \fBterminfo\fR file from source
format into compiled format.
The compiled format is necessary for use with
the library routines in \fBncurses\fR(3X).
.PP
-The results are normally placed in the system terminfo
-directory \fB\*d\fR.
-There are two ways to change this behavior.
+As described in \fBterm\fR(\*n), the database may be either a directory
+tree (one file per terminal entry) or a hashed database (one record per entry).
+The \fB@TIC@\fR command writes only one type of entry,
+depending on how it was built:
+.bP
+For directory trees, the top-level directory, e.g., /usr/share/terminfo,
+specifies the location of the database.
+.bP
+For hashed databases, a filename is needed.
+If the given file is not found by that name,
+but can be found by adding the suffix ".db",
+then that is used.
+.IP
+The default name for the hashed database is the same as the
+default directory name (only adding a ".db" suffix).
.PP
-First, you may override the system default by setting the variable
-\fBTERMINFO\fR in your shell environment to a valid (existing) directory name.
+In either case (directory or hashed database),
+\fB@TIC@\fP will create the container if it does not exist.
+For a directory, this would be the "terminfo" leaf,
+versus a "terminfo.db" file.
.PP
-Secondly, if \fBtic\fR cannot get access to \fI\*d\fR or your TERMINFO
-directory, it looks for the directory \fI$HOME/.terminfo\fR; if that directory
-exists, the entry is placed there.
+The results are normally placed in the system terminfo database \fB\*d\fR.
+The compiled terminal description can be placed
+in a different terminfo database.
+There are two ways to achieve this:
+.bP
+First, you may override the system default either by
+using the \fB\-o\fP option,
+or by setting the variable \fBTERMINFO\fR
+in your shell environment to a valid database location.
+.bP
+Secondly, if \fB@TIC@\fR cannot write in \fI\*d\fR
+or the location specified using your TERMINFO variable,
+it looks for the directory \fI$HOME/.terminfo\fR
+(or hashed database \fI$HOME/.terminfo.db)\fR;
+if that location exists, the entry is placed there.
.PP
-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.
+Libraries that read terminfo entries are expected to check in succession
+.bP
+a location specified with the TERMINFO environment variable,
+.bP
+\fI$HOME/.terminfo\fR,
+.bP
+directories listed in the TERMINFO_DIRS environment variable,
+.bP
+a compiled-in list of directories (@TERMINFO_DIRS@), and
+.bP
+the system terminfo database (\fI\*d\fR).
+.SS OPTIONS
+.TP
+\fB\-0\fR
+restricts the output to a single line
.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
+tells \fB@TIC@\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
@@ -101,16 +149,30 @@ names, but also translates terminfo strings to termcap format.
Capabilities
that are not translatable are left in the entry under their terminfo names
but commented out with two preceding dots.
+The actual format used incorporates some improvements for escaped characters
+from terminfo format.
+For a stricter BSD-compatible translation, add the \fB\-K\fR option.
.TP
\fB\-c\fR
-tells \fBtic\fP to only check \fIfile\fR for errors, including syntax problems and
+tells \fB@TIC@\fP to only check \fIfile\fR for errors, including syntax problems and
bad use links.
If you specify \fB\-C\fR (\fB\-I\fR) with this option, the code
will print warnings about entries which, after use resolution, are more than
1023 (4096) bytes long.
-Due to a fixed buffer length in older termcap
-libraries (and a documented limit in terminfo), these entries may cause core
-dumps.
+Due to a fixed buffer length in older termcap libraries,
+as well as buggy checking for the buffer length
+(and a documented limit in terminfo),
+these entries may cause core
+dumps with other implementations.
+.TP
+\fB\-D\fR
+tells \fB@TIC@\fP to print the database locations that it knows about, and exit.
+The first location shown is the one to which it would write compiled
+terminal descriptions.
+If \fB@TIC@\fP is not able to find a writable database location
+according to the rules summarized above,
+it will print a diagnostic and exit with an error rather than
+printing a list of database locations.
.TP
\fB\-e \fR\fInames\fR
Limit writes and translations to the following comma-separated list of
@@ -137,6 +199,10 @@ rather than their decimal equivalents.
\fB\-I\fR
Force source translation to terminfo format.
.TP
+\fB\-K\fR
+Suppress some longstanding ncurses extensions to termcap format,
+e.g., "\\s" for space.
+.TP
\fB\-L\fR
Force source translation to terminfo format
using the long C variable names listed in <\fBterm.h\fR>
@@ -155,9 +221,8 @@ 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.
+Write compiled entries to given database location.
+Overrides the TERMINFO environment variable.
.TP
\fB\-R\fR\fIsubset\fR
Restrict output to a given subset.
@@ -177,7 +242,7 @@ 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
+Summarize the compile by showing the database location into which entries
are written, and the number of entries which are compiled.
.TP
\fB\-T\fR
@@ -186,12 +251,12 @@ 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.
+tells \fB@TIC@\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.
+tells \fB@TIC@\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
@@ -200,31 +265,13 @@ reports the version of ncurses which was used in this program, and exits.
.TP
\fB\-v\fR\fIn\fR
specifies that (verbose) output be written to standard error trace
-information showing \fBtic\fR's progress.
+information showing \fB@TIC@\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\-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
-format [see \fBterminfo\fR(\*n)].
-Each description in the file
-describes the capabilities of a particular terminal.
+.RS
.PP
The debug flag levels are as follows:
.TP
@@ -232,7 +279,7 @@ The debug flag levels are as follows:
Names of files created and linked
.TP
2
-Information related to the ``use'' facility
+Information related to the \*(``use\*('' facility
.TP
3
Statistics from the hashing algorithm
@@ -250,19 +297,42 @@ List of tokens encountered by scanner
All values computed in construction of the hash table
.LP
If the debug level \fIn\fR is not given, it is taken to be one.
+.RE
+.TP
+\fB\-w\fR\fIn\fR
+specifies the width of the output.
+The parameter is optional.
+If it is omitted, it defaults to 60.
+.TP
+\fB\-x\fR
+Treat unknown capabilities as user-defined.
+That is, if you supply a capability name which \fB@TIC@\fP does not recognize,
+it will infer its type (boolean, number or string) from the syntax and
+make an extended table entry for that.
+User-defined capability strings
+whose name begins with \*(``k\*('' are treated as function keys.
+.SS PARAMETERS
+.TP
+\fIfile\fR
+contains one or more \fBterminfo\fR terminal descriptions in source
+format [see \fBterminfo\fR(\*n)].
+Each description in the file
+describes the capabilities of a particular terminal.
+.IP
+If \fIfile\fR is \*(``-\*('', then the data is read from the standard input.
+The \fIfile\fR parameter may also be the path of a character-device.
+.SS PROCESSING
.PP
-All but one of the capabilities recognized by \fBtic\fR are documented
+All but one of the capabilities recognized by \fB@TIC@\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
+terminal entry currently being compiled, \fB@TIC@\fR reads in the binary
from \fB\*d\fR to complete the entry.
(Entries created from
\fIfile\fR will be used first.
-If the environment variable
-\fBTERMINFO\fR is set, that directory is searched instead of
-\fB\*d\fR.) \fBtic\fR duplicates the capabilities in
+\fB@TIC@\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
@@ -272,9 +342,6 @@ 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.
@@ -282,14 +349,14 @@ Terminal names exceeding the maximum alias length
(32 characters on systems with long filenames, 14 characters otherwise)
will be truncated to the maximum alias length and a warning message will be printed.
.SH COMPATIBILITY
-There is some evidence that historic \fBtic\fR implementations treated
+There is some evidence that historic \fB@TIC@\fR implementations treated
description fields with no whitespace in them as additional aliases or
short names.
-This \fBtic\fR does not do that, but it does warn when
+This \fB@TIC@\fR does not do that, but it does warn when
description fields may be treated that way and check them for dangerous
characters.
.SH EXTENSIONS
-Unlike the stock SVr4 \fBtic\fR command, this implementation can actually
+Unlike the SVr4 \fB@TIC@\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.
@@ -298,16 +365,20 @@ 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
+This implementation of \fB@TIC@\fR will find \fBuse\fR targets anywhere
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
+\fBTERMINFO\fR is defined),
+or in the user's \fI$HOME/.terminfo\fR database
+(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
+The error messages from this \fB@TIC@\fR have the same format as GNU C
error messages, and can be parsed by GNU Emacs's compile facility.
.PP
The
+\fB\-0\fR,
+\fB\-1\fR,
\fB\-C\fR,
\fB\-G\fR,
\fB\-I\fR,
@@ -329,7 +400,7 @@ are not supported under SVr4.
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.
+\fI$HOME/.terminfo\fR database unless TERMINFO is explicitly set to it.
.SH FILES
.TP 5
\fB\*d/?/*\fR
@@ -340,6 +411,7 @@ Compiled terminal description database.
\fB@INFOTOCAP@\fR(1M),
\fB@TOE@\fR(1M),
\fBcurses\fR(3X),
+\fBterm\fR(\*n).
\fBterminfo\fR(\*n).
.PP
This describes \fBncurses\fR
diff --git a/contrib/ncurses/man/toe.1m b/contrib/ncurses/man/toe.1m
index c8eb4812aca6..26af319b66a5 100644
--- a/contrib/ncurses/man/toe.1m
+++ b/contrib/ncurses/man/toe.1m
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -26,19 +26,19 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: toe.1m,v 1.23 2010/12/04 18:40:45 tom Exp $
+.\" $Id: toe.1m,v 1.26 2012/01/01 00:40:51 tom Exp $
.TH @TOE@ 1M ""
.ds n 5
.ds d @TERMINFO@
.SH NAME
-\fBtoe\fR \- table of (terminfo) entries
+\fB@TOE@\fR \- table of (terminfo) entries
.SH SYNOPSIS
-\fBtoe\fR [\fB\-v\fR[\fIn\fR]] [\fB\-ahuUV\fR] \fIfile...\fR
+\fB@TOE@\fR [\fB\-v\fR[\fIn\fR]] [\fB\-ahsuUV\fR] \fIfile...\fR
.br
.SH DESCRIPTION
.PP
With no options,
-\fBtoe\fR lists all available terminal types by primary name
+\fB@TOE@\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,
@@ -52,6 +52,15 @@ There are other options intended for use by terminfo file maintainers:
\fB\-a\fR
report on all of the terminal databases which ncurses would search,
rather than only the first one that it finds.
+.IP
+If the \fB\-s\fR is also given, \fB@TOE@\fR
+adds a column to the report,
+showing (like \fBconflict\fP(1)) which entries which
+belong to a given terminal database.
+An "*" marks entries which differ, and "+" marks equivalent entries.
+.TP
+\fB\-s\fR
+sort the output by the entry names.
.TP
\fB\-u\fR \fIfile\fR
says to write a report to the standard output,
@@ -78,7 +87,7 @@ followed by a newline.
.TP
\fB\-v\fR\fIn\fR
specifies that (verbose) output be written to standard error,
-showing \fBtoe\fR's progress.
+showing \fB@TOE@\fR's progress.
The optional parameter \fIn\fR is a number from 1 to 10,
interpreted as for \fB@TIC@\fR(1M).
.TP
diff --git a/contrib/ncurses/man/tput.1 b/contrib/ncurses/man/tput.1
index 665c71199d28..a1b81bcb08c5 100644
--- a/contrib/ncurses/man/tput.1
+++ b/contrib/ncurses/man/tput.1
@@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2011,2012 Free Software 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: tput.1,v 1.29 2010/12/04 18:41:07 tom Exp $
+.\" $Id: tput.1,v 1.32 2012/07/14 21:06:45 tom Exp $
.TH @TPUT@ 1 ""
.ds d @TERMINFO@
.ds n 1
@@ -77,11 +77,12 @@ For a complete list of capabilities
and the \fIcapname\fR associated with each, see \fBterminfo\fR(5).
.TP
\fB\-T\fR\fItype\fR
-indicates the \fItype\fR of terminal. Normally this option is
+indicates the \fItype\fR of terminal.
+Normally this option is
unnecessary, because the default is taken from the environment
-variable \fBTERM\fR. If \fB\-T\fR is specified, then the shell
-variables \fBLINES\fR and \fBCOLUMNS\fR will be ignored,and the
-operating system will not be queried for the actual screen size.
+variable \fBTERM\fR.
+If \fB\-T\fR is specified, then the shell
+variables \fBLINES\fR and \fBCOLUMNS\fR will also be ignored.
.TP
\fIcapname\fR
indicates the capability from the \fBterminfo\fR database. When
@@ -159,7 +160,7 @@ name in the first line of the terminal's description in the
.PP
If \fB@TPUT@\fR is invoked by a link named \fBreset\fR, this has the
same effect as \fB@TPUT@ reset\fR.
-See \fBtset\fR for comparison, which has similar behavior.
+See \fB@TSET@\fR for comparison, which has similar behavior.
.SH EXAMPLES
.TP 5
\fB@TPUT@ init\fR
@@ -275,7 +276,7 @@ In that case, the exit code is set to 4 + \fBerrno\fR.
.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
+\fB@TPUT@\fR prints the following error messages and sets the corresponding exit
codes.
.PP
.ne 15
@@ -303,17 +304,29 @@ 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
+Other implementations of \fB@TPUT@\fP on
SVr4-based systems such as Solaris, IRIX64 and HPUX
as well as others such as AIX and Tru64
provide support for \fIcapname\fR operands.
+.PP
A few platforms such as FreeBSD and NetBSD recognize termcap names rather
-than terminfo capability names in their respective \fBtput\fP commands.
+than terminfo capability names in their respective \fB@TPUT@\fP commands.
+.PP
+Most implementations which provide support for \fIcapname\fR operands
+use the \fItparm\fP function to expand parameters in it.
+That function expects a mixture of numeric and string parameters,
+requiring \fB@TPUT@\fP to know which type to use.
+This implementation uses a table to determine that for
+the standard \fIcapname\fR operands, and an internal library
+function to analyze nonstandard \fIcapname\fR operands.
+Other implementations may simply guess that an operand containing only digits
+is intended to be a number.
.SH SEE ALSO
\fB@CLEAR@\fR(1),
\fBstty\fR(1),
\fBtabs\fR(\*n),
-\fBterminfo\fR(5).
+\fBterminfo\fR(5),
+\fBcurs_termcap\fR(3X).
.PP
This describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
diff --git a/contrib/ncurses/man/tset.1 b/contrib/ncurses/man/tset.1
index 9743f5b5a7c8..e151e7532f41 100644
--- a/contrib/ncurses/man/tset.1
+++ b/contrib/ncurses/man/tset.1
@@ -1,5 +1,5 @@
.\"***************************************************************************
-.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
@@ -26,12 +26,16 @@
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tset.1,v 1.25 2010/12/04 18:38:55 tom Exp $
+.\" $Id: tset.1,v 1.29 2013/12/21 22:15:53 tom Exp $
.TH @TSET@ 1 ""
+.ie \n(.g .ds `` \(lq
+.el .ds `` ``
+.ie \n(.g .ds '' \(rq
+.el .ds '' ''
.SH NAME
-\fBtset\fR, \fBreset\fR \- terminal initialization
+\fB@TSET@\fR, \fBreset\fR \- terminal initialization
.SH SYNOPSIS
-\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]
+\fB@TSET@\fR [\fB\-IQVcqrsw\fR] [\fB\-\fR] [\fB\-e\fR \fIch\fR] [\fB\-i\fR \fIch\fR] [\fB\-k\fR \fIch\fR] [\fB\-m\fR \fImapping\fR] [\fIterminal\fR]
.br
\fBreset\fR [\fB\-IQVcqrsw\fR] [\fB\-\fR] [\fB\-e\fR \fIch\fR] [\fB\-i\fR \fIch\fR] [\fB\-k\fR \fIch\fR] [\fB\-m\fR \fImapping\fR] [\fIterminal\fR]
.SH DESCRIPTION
@@ -49,13 +53,13 @@ error output device in the \fI/etc/ttys\fR file.
\fIgetty\fR does this job by setting
\fBTERM\fR according to the type passed to it by \fI/etc/inittab\fR.)
.PP
-4. The default terminal type, ``unknown''.
+4. The default terminal type, \*(``unknown\*(''.
.PP
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
+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
a new type. Once the terminal type has been determined, the terminfo
@@ -72,7 +76,7 @@ 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,
+When invoked as \fBreset\fR, \fB@TSET@\fR sets cooked and echo modes,
turns off cbreak and raw modes, turns on newline translation and
resets any unset special characters to their default values before
doing the terminal initialization described above. This is useful
@@ -89,6 +93,7 @@ The options are as follows:
.TP 5
.B \-c
Set control characters and modes.
+.TP 5
.B \-e
Set the erase character to \fIch\fR.
.TP
@@ -109,7 +114,7 @@ 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
+Normally \fB@TSET@\fR displays the values for control characters which
differ from the system's default values.
.TP
.B \-q
@@ -137,7 +142,7 @@ unless \fBsetupterm\fP is not able to detect the window size.
.PP
The arguments for the \fB\-e\fR, \fB\-i\fR, and \fB\-k\fR
options may either be entered as actual characters or by using the `hat'
-notation, i.e., control-h may be specified as ``^H'' or ``^h''.
+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
@@ -146,35 +151,41 @@ This is done using the \fB\-s\fR option.
.PP
When the \fB\-s\fR option is specified, the commands to enter the information
into the shell's environment are written to the standard output. If
-the \fBSHELL\fR environmental variable ends in ``csh'', the commands
+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 ... \`
+ 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
\fI/etc/ttys\fR file or the \fBTERM\fR environmental variable is often
something generic like \fBnetwork\fR, \fBdialup\fR, or \fBunknown\fR.
-When \fBtset\fR is used in a startup script it is often desirable to
+When \fB@TSET@\fR is used in a startup script it is often desirable to
provide information about the type of terminal used on such ports.
.PP
The purpose of the \fB\-m\fR option is to map
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''.
+tell \fB@TSET@\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 \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
-operator may be any combination of ``>'', ``<'', ``@'', and ``!''; ``>''
-means greater than, ``<'' means less than, ``@'' means equal to
-and ``!'' inverts the sense of the test.
+colon (\*(``:\*('') character and a terminal type. The port type is a
+string (delimited by either the operator or the colon character).
+The operator may be any combination of
+\*(``>\*('',
+\*(``<\*('',
+\*(``@\*('',
+and \*(``!\*('';
+\*(``>\*('' means greater than,
+\*(``<\*('' means less than,
+\*(``@\*('' means equal to and
+\*(``!\*('' inverts the sense of the test.
The baud rate is specified as a number and is compared with the speed
of the standard error output (which should be the control terminal).
The terminal type is a string.
@@ -204,53 +215,57 @@ terminal.
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 \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 (``!'').
+and that \fBcsh\fR users insert a backslash character (\*(``\e\*('') before
+any exclamation marks (\*(``!\*('').
.SH HISTORY
-The \fBtset\fR command appeared in BSD 3.0. The \fBncurses\fR implementation
+The \fB@TSET@\fR command appeared in BSD 3.0. The \fBncurses\fR implementation
was lightly adapted from the 4.4BSD sources for a terminfo environment by Eric
S. Raymond <esr@snark.thyrsus.com>.
.SH COMPATIBILITY
-The \fBtset\fR utility has been provided for backward-compatibility with BSD
+The \fB@TSET@\fR utility has been provided for backward-compatibility with BSD
environments (under most modern UNIXes, \fB/etc/inittab\fR and \fIgetty\fR(1)
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
+\fB@TSET@\fR's most important use). This implementation behaves like 4.4BSD
tset, with a few exceptions specified here.
.PP
-The \fB\-S\fR option of BSD tset no longer works; it prints an error message to stderr
-and dies. 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).
+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 of these changes are because the \fBTERMCAP\fR variable
+is no longer supported under terminfo-based \fBncurses\fR,
+which makes \fB@TSET@ \-S\fR useless
+(we made it die noisily rather than silently induce lossage).
.PP
There was an undocumented 4.4BSD feature that invoking tset via a link named
`TSET` (or via any other name beginning with an upper-case letter) set the
terminal to use upper-case only. This feature has been omitted.
.PP
The \fB\-A\fR, \fB\-E\fR, \fB\-h\fR, \fB\-u\fR and \fB\-v\fR
-options were deleted from the \fBtset\fR
+options were deleted from the \fB@TSET@\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 \fB\-m\fR option instead. The
-\fB\-n\fP option remains, but has no effect. The \fB\-adnp\fR options are therefore
-omitted from the usage summary above.
+three options be changed to use the \fB\-m\fR option instead.
+The \fB\-n\fP option remains, but has no effect.
+The \fB\-adnp\fR options are therefore omitted from the usage summary above.
.PP
-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
+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 \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.
+As of 4.4BSD,
+executing \fB@TSET@\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 \fB@TSET@\fR has been removed.
.SH ENVIRONMENT
-The \fBtset\fR command uses these environment variables:
+The \fB@TSET@\fR command uses these environment variables:
.TP 5
SHELL
-tells \fBtset\fP whether to initialize \fBTERM\fP using \fBsh\fP or
+tells \fB@TSET@\fP whether to initialize \fBTERM\fP using \fBsh\fP or
\fBcsh\fP syntax.
.TP 5
TERM
@@ -260,7 +275,7 @@ Each terminal type is distinct, though many are similar.
TERMCAP
may denote the location of a termcap database.
If it is not an absolute pathname, e.g., begins with a `/',
-\fBtset\fP removes the variable from the environment before looking
+\fB@TSET@\fP removes the variable from the environment before looking
for the terminal description.
.SH FILES
.TP 5
@@ -270,6 +285,7 @@ system port name to terminal type mapping database (BSD versions only).
@TERMINFO@
terminal capability database
.SH SEE ALSO
+.hy 0
csh(1),
sh(1),
stty(1),
@@ -278,6 +294,7 @@ tty(4),
terminfo(5),
ttys(5),
environ(7)
+.hy
.PP
This describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
diff --git a/contrib/ncurses/menu/Makefile.in b/contrib/ncurses/menu/Makefile.in
index 253ff4f64194..ad1f47a22e8d 100644
--- a/contrib/ncurses/menu/Makefile.in
+++ b/contrib/ncurses/menu/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.54 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.57 2013/08/04 20:23:27 tom Exp $
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -57,6 +57,9 @@ exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
includedir = @includedir@
+includesubdir = @includesubdir@
+
+INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
LIBTOOL = @LIBTOOL@
LIBTOOL_CLEAN = @LIB_CLEAN@
@@ -102,6 +105,7 @@ LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
+RPATH_LIST = @RPATH_LIST@
MK_SHARED_LIB = @MK_SHARED_LIB@
NCURSES_MAJOR = @NCURSES_MAJOR@
@@ -111,7 +115,7 @@ ABI_VERSION = @cf_cv_abi_version@
RANLIB = @LIB_PREP@
-LIBRARIES = @LIBS_TO_MAKE@
+LIBRARIES = @Libs_To_Make@
LINT = @LINT@
LINT_OPTS = @LINT_OPTS@
diff --git a/contrib/ncurses/menu/m_attribs.c b/contrib/ncurses/menu/m_attribs.c
index c41d558ec994..eff90d60de59 100644
--- a/contrib/ncurses/menu/m_attribs.c
+++ b/contrib/ncurses/menu/m_attribs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_attribs.c,v 1.16 2010/01/23 21:16:54 tom Exp $")
+MODULE_ID("$Id: m_attribs.c,v 1.17 2012/03/10 23:43:41 tom Exp $")
/* Macro to redraw menu if it is posted and changed */
#define Refresh_Menu(menu) \
@@ -51,7 +51,7 @@ MODULE_ID("$Id: m_attribs.c,v 1.16 2010/01/23 21:16:54 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))); \
+ T((T_CALLED("set_menu_" #name "(%p,%s)"), (void *) menu, _traceattr(attr))); \
if (!(attr==A_NORMAL || (attr & A_ATTRIBUTES)==attr))\
RETURN(E_BAD_ARGUMENT);\
if (menu && ( menu -> name != attr))\
diff --git a/contrib/ncurses/menu/m_driver.c b/contrib/ncurses/menu/m_driver.c
index deeff4710c08..1a7a3911bbbf 100644
--- a/contrib/ncurses/menu/m_driver.c
+++ b/contrib/ncurses/menu/m_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_driver.c,v 1.29 2010/01/23 21:20:10 tom Exp $")
+MODULE_ID("$Id: m_driver.c,v 1.31 2012/03/10 23:43:41 tom Exp $")
/* Macros */
@@ -47,7 +47,7 @@ MODULE_ID("$Id: m_driver.c,v 1.29 2010/01/23 21:20:10 tom Exp $")
/* Add a new character to the match pattern buffer */
#define Add_Character_To_Pattern(menu,ch) \
- { (menu)->pattern[((menu)->pindex)++] = (ch);\
+ { (menu)->pattern[((menu)->pindex)++] = (char) (ch);\
(menu)->pattern[(menu)->pindex] = '\0'; }
/*---------------------------------------------------------------------------
@@ -537,7 +537,11 @@ menu_driver(MENU * menu, int c)
result = E_UNKNOWN_COMMAND;
}
- if (E_OK == result)
+ if (item == 0)
+ {
+ result = E_BAD_STATE;
+ }
+ else if (E_OK == result)
{
/* Adjust the top row if it turns out that the current item unfortunately
doesn't appear in the menu window */
diff --git a/contrib/ncurses/menu/m_format.c b/contrib/ncurses/menu/m_format.c
index 8e68a036ee2e..2d681a6062c6 100644
--- a/contrib/ncurses/menu/m_format.c
+++ b/contrib/ncurses/menu/m_format.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_format.c,v 1.16 2010/01/23 21:20:10 tom Exp $")
+MODULE_ID("$Id: m_format.c,v 1.18 2012/06/09 23:54:02 tom Exp $")
#define minimum(a,b) ((a)<(b) ? (a): (b))
@@ -81,8 +81,8 @@ set_menu_format(MENU * menu, int rows, int cols)
if (menu->pattern)
Reset_Pattern(menu);
- menu->frows = rows;
- menu->fcols = cols;
+ menu->frows = (short)rows;
+ menu->fcols = (short)cols;
assert(rows > 0 && cols > 0);
total_rows = (menu->nitems - 1) / cols + 1;
@@ -90,21 +90,21 @@ set_menu_format(MENU * menu, int rows, int cols)
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->rows = (short)total_rows;
+ menu->cols = (short)total_cols;
+ menu->arows = (short)minimum(total_rows, rows);
menu->toprow = 0;
menu->curitem = *(menu->items);
assert(menu->curitem);
- menu->status |= _LINK_NEEDED;
+ SetStatus(menu, _LINK_NEEDED);
_nc_Calculate_Item_Length_and_Width(menu);
}
else
{
if (rows > 0)
- _nc_Default_Menu.frows = rows;
+ _nc_Default_Menu.frows = (short)rows;
if (cols > 0)
- _nc_Default_Menu.fcols = cols;
+ _nc_Default_Menu.fcols = (short)cols;
}
RETURN(E_OK);
diff --git a/contrib/ncurses/menu/m_global.c b/contrib/ncurses/menu/m_global.c
index 90f6f25925b7..d85f207ed57e 100644
--- a/contrib/ncurses/menu/m_global.c
+++ b/contrib/ncurses/menu/m_global.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_global.c,v 1.25 2010/01/23 21:20:10 tom Exp $")
+MODULE_ID("$Id: m_global.c,v 1.27 2012/06/10 00:09:15 tom Exp $")
static char mark[] = "-";
/* *INDENT-OFF* */
@@ -117,17 +117,17 @@ ComputeMaximum_NameDesc_Lengths(MENU * menu)
assert(menu && menu->items);
for (items = menu->items; *items; items++)
{
- check = _nc_Calculate_Text_Width(&((*items)->name));
+ check = (unsigned)_nc_Calculate_Text_Width(&((*items)->name));
if (check > MaximumNameLength)
MaximumNameLength = check;
- check = _nc_Calculate_Text_Width(&((*items)->description));
+ check = (unsigned)_nc_Calculate_Text_Width(&((*items)->description));
if (check > MaximumDescriptionLength)
MaximumDescriptionLength = check;
}
- menu->namelen = MaximumNameLength;
- menu->desclen = MaximumDescriptionLength;
+ menu->namelen = (short)MaximumNameLength;
+ menu->desclen = (short)MaximumDescriptionLength;
T(("ComputeMaximum_NameDesc_Lengths %d,%d", menu->namelen, menu->desclen));
}
@@ -195,7 +195,7 @@ _nc_Connect_Items(MENU * menu, ITEM ** items)
{
(*item)->value = FALSE;
}
- (*item)->index = ItemCount++;
+ (*item)->index = (short)ItemCount++;
(*item)->imenu = menu;
}
}
@@ -206,7 +206,7 @@ _nc_Connect_Items(MENU * menu, ITEM ** items)
if (ItemCount != 0)
{
menu->items = items;
- menu->nitems = ItemCount;
+ menu->nitems = (short)ItemCount;
ComputeMaximum_NameDesc_Lengths(menu);
if ((menu->pattern = typeMalloc(char, (unsigned)(1 + menu->namelen))))
{
@@ -256,7 +256,7 @@ _nc_Calculate_Text_Width(const TEXT * item /*FIXME: limit length */ )
T((T_CALLED("_nc_menu_text_width(%p)"), (const void *)item));
if (result != 0 && item->str != 0)
{
- int count = mbstowcs(0, item->str, 0);
+ int count = (int)mbstowcs(0, item->str, 0);
wchar_t *temp = 0;
if (count > 0
@@ -343,7 +343,7 @@ _nc_Calculate_Item_Length_and_Width(MENU * menu)
assert(menu);
- menu->height = 1 + menu->spc_rows * (menu->arows - 1);
+ menu->height = (short)(1 + menu->spc_rows * (menu->arows - 1));
l = calculate_actual_width(menu, TRUE);
l += menu->marklen;
@@ -354,10 +354,10 @@ _nc_Calculate_Item_Length_and_Width(MENU * menu)
l += menu->spc_desc;
}
- menu->itemlen = l;
+ menu->itemlen = (short)l;
l *= menu->cols;
l += (menu->cols - 1) * menu->spc_cols; /* for the padding between the columns */
- menu->width = l;
+ menu->width = (short)l;
T(("_nc_CalculateItem_Length_and_Width columns %d, item %d, width %d",
menu->cols,
@@ -388,7 +388,7 @@ _nc_Link_Items(MENU * menu)
int Last_in_Column;
bool cycle = (menu->opt & O_NONCYCLIC) ? FALSE : TRUE;
- menu->status &= ~_LINK_NEEDED;
+ ClrStatus(menu, _LINK_NEEDED);
if (menu->opt & O_ROWMAJOR)
{
@@ -431,8 +431,8 @@ _nc_Link_Items(MENU * menu)
(cycle ? menu->items[(row + 1) < menu->rows ?
Number_Of_Items - 1 : col] :
(ITEM *) 0);
- item->x = col;
- item->y = row;
+ item->x = (short)col;
+ item->y = (short)row;
if (++col == Number_Of_Columns)
{
row++;
@@ -482,8 +482,8 @@ _nc_Link_Items(MENU * menu)
(ITEM *) 0
);
- item->x = col;
- item->y = row;
+ item->x = (short)col;
+ item->y = (short)row;
if ((++row) == Number_Of_Rows)
{
col++;
@@ -568,7 +568,7 @@ _nc_New_TopRow_and_CurrentItem(
cur_item = menu->curitem;
assert(cur_item);
- menu->toprow = new_toprow;
+ menu->toprow = (short)new_toprow;
menu->curitem = new_current_item;
if (mterm_called)
@@ -590,7 +590,7 @@ _nc_New_TopRow_and_CurrentItem(
}
else
{ /* if we are not posted, this is quite simple */
- menu->toprow = new_toprow;
+ menu->toprow = (short)new_toprow;
menu->curitem = new_current_item;
}
}
diff --git a/contrib/ncurses/menu/m_hook.c b/contrib/ncurses/menu/m_hook.c
index 6125d052e7a2..671fab65e50e 100644
--- a/contrib/ncurses/menu/m_hook.c
+++ b/contrib/ncurses/menu/m_hook.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,13 +37,13 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_hook.c,v 1.15 2010/01/23 21:16:54 tom Exp $")
+MODULE_ID("$Id: m_hook.c,v 1.16 2012/03/10 23:43:41 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));\
+ T((T_CALLED("set_" #typ "_" #name "(%p,%p)"), (void *) menu, func));\
(Normalize_Menu(menu) -> typ ## name = func );\
RETURN(E_OK);\
}
diff --git a/contrib/ncurses/menu/m_item_new.c b/contrib/ncurses/menu/m_item_new.c
index 1debc2b34401..710ef098c1a4 100644
--- a/contrib/ncurses/menu/m_item_new.c
+++ b/contrib/ncurses/menu/m_item_new.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -44,7 +44,7 @@
#endif
#endif
-MODULE_ID("$Id: m_item_new.c,v 1.30 2010/01/23 21:20:11 tom Exp $")
+MODULE_ID("$Id: m_item_new.c,v 1.33 2012/06/09 23:55:15 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -62,7 +62,7 @@ Is_Printable_String(const char *s)
int result = TRUE;
#if USE_WIDEC_SUPPORT
- int count = mbstowcs(0, s, 0);
+ int count = (int)mbstowcs(0, s, 0);
wchar_t *temp = 0;
assert(s);
@@ -127,13 +127,13 @@ new_item(const char *name, const char *description)
{
*item = _nc_Default_Item; /* hope we have struct assignment */
- item->name.length = strlen(name);
+ item->name.length = (unsigned short)strlen(name);
item->name.str = name;
if (description && (*description != '\0') &&
Is_Printable_String(description))
{
- item->description.length = strlen(description);
+ item->description.length = (unsigned short)strlen(description);
item->description.str = description;
}
else
@@ -195,12 +195,12 @@ free_item(ITEM * item)
NCURSES_EXPORT(int)
set_menu_mark(MENU * menu, const char *mark)
{
- unsigned l;
+ short l;
T((T_CALLED("set_menu_mark(%p,%s)"), (void *)menu, _nc_visbuf(mark)));
if (mark && (*mark != '\0') && Is_Printable_String(mark))
- l = strlen(mark);
+ l = (short)strlen(mark);
else
l = 0;
@@ -213,7 +213,7 @@ 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 != (int)l)
+ if (menu->marklen != l)
RETURN(E_BAD_ARGUMENT);
}
menu->marklen = l;
@@ -222,14 +222,13 @@ set_menu_mark(MENU * menu, const char *mark)
menu->mark = strdup(mark);
if (menu->mark)
{
- strcpy(menu->mark, mark);
if (menu != &_nc_Default_Menu)
- menu->status |= _MARK_ALLOCATED;
+ SetStatus(menu, _MARK_ALLOCATED);
}
else
{
menu->mark = old_mark;
- menu->marklen = (old_mark != 0) ? strlen(old_mark) : 0;
+ menu->marklen = (short)((old_mark != 0) ? strlen(old_mark) : 0);
RETURN(E_SYSTEM_ERROR);
}
}
diff --git a/contrib/ncurses/menu/m_pad.c b/contrib/ncurses/menu/m_pad.c
index caa2f9e207b1..0abaf67aee63 100644
--- a/contrib/ncurses/menu/m_pad.c
+++ b/contrib/ncurses/menu/m_pad.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_pad.c,v 1.12 2010/01/23 21:20:10 tom Exp $")
+MODULE_ID("$Id: m_pad.c,v 1.13 2012/03/10 23:43:41 tom Exp $")
/* Macro to redraw menu if it is posted and changed */
#define Refresh_Menu(menu) \
@@ -69,7 +69,7 @@ set_menu_pad(MENU * menu, int pad)
RETURN(E_BAD_ARGUMENT);
Normalize_Menu(menu);
- menu->pad = pad;
+ menu->pad = (unsigned char)pad;
if (do_refresh)
Refresh_Menu(menu);
diff --git a/contrib/ncurses/menu/m_post.c b/contrib/ncurses/menu/m_post.c
index 1f0b623ed456..a26ba49f1e1e 100644
--- a/contrib/ncurses/menu/m_post.c
+++ b/contrib/ncurses/menu/m_post.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_post.c,v 1.29 2010/05/01 19:18:27 tom Exp $")
+MODULE_ID("$Id: m_post.c,v 1.31 2012/06/09 23:54:35 tom Exp $")
/*---------------------------------------------------------------------------
| Facility : libnmenu
@@ -67,7 +67,7 @@ _nc_Post_Item(const MENU * menu, const ITEM * item)
- it is a onevalued menu and it is the current item
- or it has a selection value
*/
- wattron(menu->win, menu->back);
+ wattron(menu->win, (int)menu->back);
if (item->value || (item == menu->curitem))
{
if (menu->marklen)
@@ -79,13 +79,13 @@ _nc_Post_Item(const MENU * menu, const ITEM * item)
item. */
if (!(menu->opt & O_ONEVALUE) && item->value && item != menu->curitem)
{
- wattron(menu->win, menu->fore);
+ wattron(menu->win, (int)menu->fore);
isfore = TRUE;
}
waddstr(menu->win, menu->mark);
if (isfore)
{
- wattron(menu->win, menu->fore);
+ wattron(menu->win, (int)menu->fore);
isfore = FALSE;
}
}
@@ -93,7 +93,7 @@ _nc_Post_Item(const MENU * menu, const ITEM * item)
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);
+ wattroff(menu->win, (int)menu->back);
count += menu->marklen;
/* First we have to calculate the attribute depending on selectability
@@ -101,19 +101,19 @@ _nc_Post_Item(const MENU * menu, const ITEM * item)
*/
if (!(item->opt & O_SELECTABLE))
{
- wattron(menu->win, menu->grey);
+ wattron(menu->win, (int)menu->grey);
isgrey = TRUE;
}
else
{
if (item->value || item == menu->curitem)
{
- wattron(menu->win, menu->fore);
+ wattron(menu->win, (int)menu->fore);
isfore = TRUE;
}
else
{
- wattron(menu->win, menu->back);
+ wattron(menu->win, (int)menu->back);
isback = TRUE;
}
}
@@ -158,10 +158,10 @@ _nc_Post_Item(const MENU * menu, const ITEM * item)
assert(cx >= 0 && cy >= 0);
getyx(menu->win, ncy, ncx);
if (isgrey)
- wattroff(menu->win, menu->grey);
+ wattroff(menu->win, (int)menu->grey);
else if (isfore)
- wattroff(menu->win, menu->fore);
- wattron(menu->win, menu->back);
+ wattroff(menu->win, (int)menu->fore);
+ wattron(menu->win, (int)menu->back);
for (j = 1; j < menu->spc_rows; j++)
{
if ((item_y + j) < getmaxy(menu->win))
@@ -175,17 +175,17 @@ _nc_Post_Item(const MENU * menu, const ITEM * item)
}
wmove(menu->win, ncy, ncx);
if (!isback)
- wattroff(menu->win, menu->back);
+ wattroff(menu->win, (int)menu->back);
}
}
/* Remove attributes */
if (isfore)
- wattroff(menu->win, menu->fore);
+ wattroff(menu->win, (int)menu->fore);
if (isback)
- wattroff(menu->win, menu->back);
+ wattroff(menu->win, (int)menu->back);
if (isgrey)
- wattroff(menu->win, menu->grey);
+ wattroff(menu->win, (int)menu->grey);
}
/*---------------------------------------------------------------------------
@@ -225,7 +225,7 @@ _nc_Draw_Menu(const MENU * menu)
{
_nc_Post_Item(menu, hitem);
- wattron(menu->win, menu->back);
+ wattron(menu->win, (int)menu->back);
if (((hitem = hitem->right) != lasthor) && hitem)
{
int i, j, cy, cx;
@@ -244,7 +244,7 @@ _nc_Draw_Menu(const MENU * menu)
}
}
while (hitem && (hitem != lasthor));
- wattroff(menu->win, menu->back);
+ wattroff(menu->win, (int)menu->back);
item = item->down;
y += menu->spc_rows;
@@ -305,7 +305,7 @@ post_menu(MENU * menu)
else
RETURN(E_NOT_CONNECTED);
- menu->status |= _POSTED;
+ SetStatus(menu, _POSTED);
if (!(menu->opt & O_ONEVALUE))
{
@@ -369,7 +369,7 @@ unpost_menu(MENU * menu)
delwin(menu->win);
menu->win = (WINDOW *)0;
- menu->status &= ~_POSTED;
+ ClrStatus(menu, _POSTED);
RETURN(E_OK);
}
diff --git a/contrib/ncurses/menu/m_req_name.c b/contrib/ncurses/menu/m_req_name.c
index cad875802071..e5f2888ed6f2 100644
--- a/contrib/ncurses/menu/m_req_name.c
+++ b/contrib/ncurses/menu/m_req_name.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_req_name.c,v 1.21 2009/10/10 16:17:23 tom Exp $")
+MODULE_ID("$Id: m_req_name.c,v 1.22 2012/07/21 23:27:32 tom Exp $")
static const char *request_names[MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1] =
{
@@ -99,23 +99,26 @@ 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;
+ size_t i = 0;
char buf[16];
T((T_CALLED("menu_request_by_name(%s)"), _nc_visbuf(str)));
- if (str)
+ if (str != 0 && (i = strlen(str)) != 0)
{
- strncpy(buf, str, sizeof(buf));
- while ((i < sizeof(buf)) && (buf[i] != '\0'))
+ if (i > sizeof(buf) - 2)
+ i = sizeof(buf) - 2;
+ memcpy(buf, str, i);
+ buf[i] = '\0';
+
+ for (i = 0; buf[i] != '\0'; ++i)
{
buf[i] = (char)toupper(UChar(buf[i]));
- i++;
}
for (i = 0; i < A_SIZE; i++)
{
- if (strncmp(request_names[i], buf, sizeof(buf)) == 0)
+ if (strcmp(request_names[i], buf) == 0)
returnCode(MIN_MENU_COMMAND + (int)i);
}
}
diff --git a/contrib/ncurses/menu/m_spacing.c b/contrib/ncurses/menu/m_spacing.c
index 1cfa2e166571..01941f566b4b 100644
--- a/contrib/ncurses/menu/m_spacing.c
+++ b/contrib/ncurses/menu/m_spacing.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include "menu.priv.h"
-MODULE_ID("$Id: m_spacing.c,v 1.18 2010/01/23 21:20:10 tom Exp $")
+MODULE_ID("$Id: m_spacing.c,v 1.19 2012/03/10 23:43:41 tom Exp $")
#define MAX_SPC_DESC ((TABSIZE) ? (TABSIZE) : 8)
#define MAX_SPC_COLS ((TABSIZE) ? (TABSIZE) : 8)
@@ -70,9 +70,9 @@ set_menu_spacing(MENU * menu, int s_desc, int s_row, int s_col)
((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_desc = (short)(s_desc ? s_desc : 1);
+ m->spc_rows = (short)(s_row ? s_row : 1);
+ m->spc_cols = (short)(s_col ? s_col : 1);
_nc_Calculate_Item_Length_and_Width(m);
RETURN(E_OK);
diff --git a/contrib/ncurses/menu/menu.priv.h b/contrib/ncurses/menu/menu.priv.h
index 99580a38d1c2..763ca4a675fd 100644
--- a/contrib/ncurses/menu/menu.priv.h
+++ b/contrib/ncurses/menu/menu.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -30,7 +30,7 @@
* Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
-/* $Id: menu.priv.h,v 1.23 2009/02/28 21:02:57 juergen Exp $ */
+/* $Id: menu.priv.h,v 1.24 2012/03/10 23:43:41 tom Exp $ */
/***************************************************************************
* Module menu.priv.h *
@@ -39,6 +39,7 @@
#ifndef MENU_PRIV_H_incl
#define MENU_PRIV_H_incl 1
+/* *INDENT-OFF* */
#include "curses.priv.h"
#include "mf_common.h"
@@ -99,10 +100,11 @@ extern NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu;
*/
#define Adjust_Current_Item(menu,row,item) \
{ if ((item)->y < row) \
- row = (item)->y;\
- if ( (item)->y >= (row + (menu)->arows) )\
- row = ( (item)->y < ((menu)->rows - row) ) ? \
- (item)->y : (menu)->rows - (menu)->arows;\
+ row = (short) (item)->y; \
+ if ( (item)->y >= (row + (menu)->arows) ) \
+ row = (short) (( (item)->y < ((menu)->rows - row) ) \
+ ? (item)->y \
+ : (menu)->rows - (menu)->arows); \
_nc_New_TopRow_and_CurrentItem(menu,row,item); }
/* Reset the match pattern buffer */
@@ -152,5 +154,6 @@ extern NCURSES_EXPORT(Menu_Options) _nc_retrace_menu_opts (Menu_Options);
#define returnMenuOpts(code) return code
#endif /* TRACE/!TRACE */
+/* *INDENT-ON* */
#endif /* MENU_PRIV_H_incl */
diff --git a/contrib/ncurses/menu/mf_common.h b/contrib/ncurses/menu/mf_common.h
index 681672dc3424..cff6563fba4a 100644
--- a/contrib/ncurses/menu/mf_common.h
+++ b/contrib/ncurses/menu/mf_common.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -30,7 +30,7 @@
* Author: Juergen Pfeifer, 1995,1997 *
****************************************************************************/
-/* $Id: mf_common.h,v 0.22 2005/11/26 15:26:52 tom Exp $ */
+/* $Id: mf_common.h,v 0.24 2012/06/10 00:06:54 tom Exp $ */
/* Common internal header for menu and form library */
@@ -63,10 +63,9 @@ extern int errno;
#if USE_RCS_IDS
#define MODULE_ID(id) static const char Ident[] = id;
#else
-#define MODULE_ID(id) /*nothing*/
+#define MODULE_ID(id) /*nothing */
#endif
-
/* Maximum regular 8-bit character code */
#define MAX_REGULAR_CHARACTER (0xff)
@@ -80,16 +79,19 @@ extern int errno;
#endif
/* The few common values in the status fields for menus and forms */
-#define _POSTED (0x01U) /* menu or form is posted */
-#define _IN_DRIVER (0x02U) /* 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 */
+
+#define SetStatus(target,mask) (target)->status |= (unsigned short) (mask)
+#define ClrStatus(target,mask) (target)->status = (unsigned short) (target->status & (~mask))
/* Call object hook */
#define Call_Hook( object, handler ) \
if ( (object) != 0 && ((object)->handler) != (void *) 0 )\
{\
- (object)->status |= _IN_DRIVER;\
+ SetStatus(object, _IN_DRIVER);\
(object)->handler(object);\
- (object)->status &= ~_IN_DRIVER;\
+ ClrStatus(object, _IN_DRIVER);\
}
#endif /* MF_COMMON_H_incl */
diff --git a/contrib/ncurses/misc/Makefile.in b/contrib/ncurses/misc/Makefile.in
index 93c9b3df3017..34c9a5244229 100644
--- a/contrib/ncurses/misc/Makefile.in
+++ b/contrib/ncurses/misc/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.56 2011/02/21 01:09:31 tom Exp $
+# $Id: Makefile.in,v 1.61 2013/08/04 20:23:20 tom Exp $
##############################################################################
-# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2013 Free Software 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,7 +56,11 @@ prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
+datarootdir = @datarootdir@
datadir = @datadir@
+includesubdir = @includesubdir@
+
+INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
tabsetdir = $(datadir)/tabset
ticdir = @TERMINFO@
@@ -120,7 +124,8 @@ terminfo.tmp : run_tic.sed $(source)
run_tic.sed :
WHICH_XTERM=@WHICH_XTERM@ \
- ticdir=${ticdir} \
+ XTERM_KBS=@XTERM_KBS@ \
+ datadir=${datadir} \
$(SHELL) $(srcdir)/gen_edit.sh >$@
$(DESTDIR)$(bindir) \
@@ -139,7 +144,7 @@ uninstall.data :
uninstall.libs :
-rm -f $(DESTDIR)$(bindir)/$(NCURSES_CONFIG)
-@MAKE_PC_FILES@ $(SHELL) 'for name in *.pc; do rm -f $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; done'
+@MAKE_PC_FILES@ $(SHELL) -c 'for name in *.pc; do rm -f $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; done'
tags :
diff --git a/contrib/ncurses/misc/gen-pkgconfig.in b/contrib/ncurses/misc/gen-pkgconfig.in
index efd29105b571..92fcda68b758 100644
--- a/contrib/ncurses/misc/gen-pkgconfig.in
+++ b/contrib/ncurses/misc/gen-pkgconfig.in
@@ -1,7 +1,7 @@
#!@SHELL@
-# $Id: gen-pkgconfig.in,v 1.8 2010/02/06 22:12:07 Miroslav.Lichvar Exp $
+# $Id: gen-pkgconfig.in,v 1.16 2014/01/18 20:21:45 tom Exp $
##############################################################################
-# Copyright (c) 2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2009-2013,2014 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -28,7 +28,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey, 2009
+# Author: Thomas E. Dickey
#
# The complete configure script for ncurses is the ncurses5-config (or similar
# name, depending on the flavor, e.g., ncursesw5-config, ncurses6-config, etc).
@@ -39,22 +39,22 @@
# library, except that the tinfo library does not depend on ncurses.
LIB_NAME=@LIB_NAME@
TINFO_NAME=@TINFO_NAME@
-PANEL_NAME=panel # @PANEL_NAME@
-MENU_NAME=menu # @MENU_NAME@
-FORM_NAME=form # @FORM_NAME@
-CXX_NAME=ncurses++ # @CXX_NAME@
+PANEL_NAME=@PANEL_NAME@
+MENU_NAME=@MENU_NAME@
+FORM_NAME=@FORM_NAME@
+CXX_NAME=@CXX_NAME@
DFT_DEP_SUFFIX=@DFT_DEP_SUFFIX@
TINFO_ARG_SUFFIX=@TINFO_ARG_SUFFIX@
CXX_LIB_SUFFIX=@CXX_LIB_SUFFIX@
prefix="@prefix@"
exec_prefix="@exec_prefix@"
-includedir="@includedir@"
+includedir="@includedir@@includesubdir@"
libdir="@libdir@"
show_prefix='@prefix@'
show_exec_prefix='@exec_prefix@'
-show_includedir='@includedir@'
+show_includedir='@includedir@@includesubdir@'
show_libdir='@libdir@'
MAIN_LIBRARY="${LIB_NAME}@DFT_ARG_SUFFIX@"
@@ -63,59 +63,42 @@ PANEL_LIBRARY="${PANEL_NAME}@DFT_ARG_SUFFIX@"
MENU_LIBRARY="${MENU_NAME}@DFT_ARG_SUFFIX@"
FORM_LIBRARY="${FORM_NAME}@DFT_ARG_SUFFIX@"
-SUB_LIBRARY_REQ=${SUB_LIBRARY}
-if test $TINFO_NAME = $LIB_NAME ; then
- SUB_LIBRARY_REQ=
+if test "$includedir" = "/usr/include" ; then
+ CFLAGS=
+else
+ CFLAGS="-I\${includedir}"
fi
-for lib in ../lib/*
-do
- name=`basename $lib`
- if test "$name" = "*" ; then
- break
- fi
-
- root=`basename $name "$DFT_DEP_SUFFIX"`
- if test "$name" = "$root" ; then
- root=`basename $name "$CXX_LIB_SUFFIX"`
- if test "$name" = "$root" ; then
- continue
- fi
- fi
+if test "$libdir" = "/usr/lib" ; then
+ LDFLAGS=
+else
+ LDFLAGS="-L\${libdir}"
+fi
- name=`echo "$name" | sed -e 's/^lib//' -e 's/\..*$//'`
+for name in @PC_MODULES_TO_MAKE@
+do
+ name="${name}"
desc="ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@"
+ reqs=
+
if test $name = $MAIN_LIBRARY ; then
- reqs=$SUB_LIBRARY_REQ
desc="$desc library"
elif test $name = $SUB_LIBRARY ; then
- reqs=
desc="$desc terminal interface library"
elif expr $name : ".*${CXX_NAME}.*" >/dev/null ; then
- reqs="$PANEL_LIBRARY $MENU_LIBRARY $FORM_LIBRARY $MAIN_LIBRARY $SUB_LIBRARY_REQ"
+ reqs="$PANEL_LIBRARY, $MENU_LIBRARY, $FORM_LIBRARY, $MAIN_LIBRARY"
desc="$desc add-on library"
else
- reqs="$MAIN_LIBRARY $SUB_LIBRARY_REQ"
+ reqs="$MAIN_LIBRARY"
desc="$desc add-on library"
fi
- if test "$includedir" = "/usr/include" ; then
- cflags=
- else
- cflags="-I\${includedir}"
- fi
-
- if test "$libdir" = "/usr/lib" ; then
- libs=
- else
- libs="-L\${libdir}"
- fi
- libs="$libs -l$name"
-
- # add dependencies that pkg-config cannot guess about
- if test -z "$reqs" ; then
- libs="$libs @LIBS@"
+ if test $name != $SUB_LIBRARY && test $SUB_LIBRARY != $MAIN_LIBRARY ; then
+ if test $name != $TINFO_NAME ; then
+ test -n "$reqs" && reqs="$reqs, "
+ reqs="${reqs}${SUB_LIBRARY}"
+ fi
fi
echo "** creating ${name}.pc"
@@ -130,10 +113,13 @@ version=@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@
Name: $name
Description: $desc
Version: \${version}
-Requires: $reqs
-Libs: $libs
-Cflags: $cflags
+URL: http://invisible-island.net/ncurses
+Requires.private: $reqs
+Libs: $LDFLAGS -l$name
+Libs.private: @LIBS@
+Cflags: $CFLAGS
EOF
- # pr -f ${name}.pc
+
+ #pr -f ${name}.pc
done
# vile:shmode
diff --git a/contrib/ncurses/misc/gen_edit.sh b/contrib/ncurses/misc/gen_edit.sh
index f0aa72ac9ad2..3460afcdf9bb 100755
--- a/contrib/ncurses/misc/gen_edit.sh
+++ b/contrib/ncurses/misc/gen_edit.sh
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 2004 Free Software Foundation, Inc. #
+# Copyright (c) 2004-2011,2012 Free Software 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
#
-# $Id: gen_edit.sh,v 1.1 2004/07/11 15:01:29 tom Exp $
+# $Id: gen_edit.sh,v 1.5 2012/04/01 15:04:37 tom Exp $
# Generate a sed-script for converting the terminfo.src to the form which will
# be installed.
#
@@ -37,22 +37,82 @@
# The leaf directory names (lib, tabset, terminfo)
#
-: ${ticdir=@TERMINFO@}
-: ${xterm_new=@WHICH_XTERM@}
+linux_dft=linux2.2
+
+: ${datadir=/usr/share}
+: ${WHICH_LINUX=$linux_dft}
+: ${WHICH_XTERM=xterm-new}
+: ${XTERM_KBS=BS}
# 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%'`
+TABSET=${datadir}/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
+if test "$WHICH_XTERM" != "xterm-new" ; then
+echo "** using $WHICH_XTERM terminal description for XTerm entry" >&2
cat <<EOF
/^# This is xterm for ncurses/,/^$/{
s/use=xterm-new,/use=$WHICH_XTERM,/
}
EOF
fi
+
+if test "$XTERM_KBS" != "BS" ; then
+echo "** using DEL for XTerm backspace-key" >&2
+cat <<EOF
+/^xterm+kbs|fragment for backspace key/,/^#/{
+ s/kbs=^H,/kbs=^?,/
+}
+EOF
+fi
+
+# Work around incompatibities built into Linux console. The 2.6 series added
+# a patch to fixup the SI/SO behavior, which is closer to vt100, but the older
+# kernels do not recognize those controls. All of the kernels recognize the
+# older flavor of rmacs/smacs, but beginning in the late 1990s, changes made
+# as part of implementing UTF-8 prevent using those for line-drawing when the
+# console is in UTF-8 mode. Taking into account the fact that it took about
+# ten years to provide (and distribute) the 2.6 series' change for SI/SO, the
+# default remains "linux2.2".
+case x$WHICH_LINUX in #(vi
+xauto)
+ system=`uname -s 2>/dev/null`
+ if test "x$system" = xLinux
+ then
+ case x`uname -r` in
+ x1.*)
+ WHICH_LINUX=linux-c
+ ;;
+ x2.[0-4]*)
+ WHICH_LINUX=linux2.2
+ ;;
+ *)
+ WHICH_LINUX=linux3.0
+ ;;
+ esac
+ else
+ WHICH_LINUX=$linux_dft
+ fi
+ ;;
+xlinux*)
+ # allow specific setting
+ ;;
+*)
+ WHICH_LINUX=$linux_dft
+ ;;
+esac
+
+if test $WHICH_LINUX != $linux_dft
+then
+echo "** using $WHICH_LINUX terminal description for Linux console" >&2
+cat <<EOF
+/^# This is Linux console for ncurses/,/^$/{
+ s/use=$linux_dft,/use=$WHICH_LINUX,/
+}
+EOF
+fi
diff --git a/contrib/ncurses/misc/ncurses-config.in b/contrib/ncurses/misc/ncurses-config.in
index a9c0ac5396ac..f5e6e7ede45d 100644
--- a/contrib/ncurses/misc/ncurses-config.in
+++ b/contrib/ncurses/misc/ncurses-config.in
@@ -1,7 +1,7 @@
#!@SHELL@
-# $Id: ncurses-config.in,v 1.25 2011/03/19 22:43:38 tom Exp $
+# $Id: ncurses-config.in,v 1.30 2012/11/11 00:14:28 tom Exp $
##############################################################################
-# Copyright (c) 2006-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 2006-2011,2012 Free Software 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,22 +30,48 @@
#
# Author: Thomas E. Dickey, 2006-on
+LANG=C; export LANG
+LANGUAGE=C; export LANGUAGE
+LC_ALL=C; export LC_ALL
+LC_CTYPE=C; export LC_CTYPE
+
prefix="@prefix@"
exec_prefix="@exec_prefix@"
bindir="@bindir@"
includedir="@includedir@"
libdir="@libdir@"
+datarootdir="@datarootdir@"
datadir="@datadir@"
mandir="@mandir@"
THIS="@LIB_NAME@@DFT_ARG_SUFFIX@"
TINFO_LIB="@TINFO_ARG_SUFFIX@"
+RPATH_LIST="@RPATH_LIST@"
-LANG=C; export LANG
-LANGUAGE=C; export LANGUAGE
-LC_ALL=C; export LC_ALL
-LC_CTYPE=C; export LC_CTYPE
+# Ensure that RPATH_LIST contains only absolute pathnames, if it is nonempty.
+# We cannot filter it out within the build-process since the variable is used
+# in some special cases of installation using a relative path.
+if test -n "$RPATH_LIST"
+then
+ save_IFS="$IFS"
+ IFS='@PATH_SEPARATOR@'
+ filtered=
+ for item in $RPATH_LIST
+ do
+ case "$item" in
+ ./*|../*|*/..|*/../*)
+ ;;
+ *)
+ test -n "$filtered" && filtered="${filtered}@PATH_SEPARATOR@"
+ filtered="${filtered}${item}"
+ ;;
+ esac
+ done
+ IFS="$save_IFS"
+ # if the result is empty, there is little we can do to fix it
+ RPATH_LIST="$filtered"
+fi
# with --disable-overwrite, we installed into a subdirectory, but transformed
# the headers to include like this:
@@ -83,13 +109,19 @@ while test $# -gt 0; do
ENDECHO
;;
--libs)
+ if test "$libdir" = /usr/lib
+ then
+ LIBDIR=
+ else
+ LIBDIR=-L$libdir
+ fi
if test @TINFO_NAME@ = @LIB_NAME@ ; then
sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
- -L$libdir @EXTRA_LDFLAGS@ -l${THIS} @LIBS@
+ $LIBDIR @EXTRA_LDFLAGS@ -l${THIS} @LIBS@
ENDECHO
else
sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO
- -L$libdir @EXTRA_LDFLAGS@ -l${THIS} -l${TINFO_LIB} @LIBS@
+ $LIBDIR @EXTRA_LDFLAGS@ -l${THIS} -l${TINFO_LIB} @LIBS@
ENDECHO
fi
;;
@@ -163,4 +195,5 @@ ENDHELP
esac
shift
done
+# vi:ts=4 sw=4
# vile:shmode
diff --git a/contrib/ncurses/misc/run_tic.in b/contrib/ncurses/misc/run_tic.in
index c34302af69ee..784f9f42bff0 100644
--- a/contrib/ncurses/misc/run_tic.in
+++ b/contrib/ncurses/misc/run_tic.in
@@ -1,7 +1,7 @@
#!@SHELL@
-# $Id: run_tic.in,v 1.32 2011/02/23 23:30:15 tom Exp $
+# $Id: run_tic.in,v 1.34 2012/10/06 19:00:51 tom Exp $
##############################################################################
-# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2011,2012 Free Software 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,13 +41,14 @@ echo '** Building terminfo database, please wait...'
# The script is designed to be run from the misc/Makefile as
# make install.data
-: ${suffix:=@PROG_EXT@}
+: ${suffix:=@EXEEXT@}
: ${DESTDIR:=@DESTDIR@}
: ${prefix:=@prefix@}
: ${exec_prefix:=@exec_prefix@}
: ${bindir:=@bindir@}
: ${top_srcdir:=@top_srcdir@}
: ${srcdir:=@srcdir@}
+: ${datarootdir:=@datarootdir@}
: ${datadir:=@datadir@}
: ${TIC_PATH:=@TIC_PATH@}
: ${ticdir:=@TERMINFO@}
diff --git a/contrib/ncurses/misc/terminfo.src b/contrib/ncurses/misc/terminfo.src
index 04163e01d122..514feca6281c 100644
--- a/contrib/ncurses/misc/terminfo.src
+++ b/contrib/ncurses/misc/terminfo.src
@@ -6,8 +6,8 @@
# Report bugs and new terminal descriptions to
# bug-ncurses@gnu.org
#
-# $Revision: 1.383 $
-# $Date: 2011/02/20 20:46:53 $
+# $Revision: 1.484 $
+# $Date: 2014/02/22 21:03:37 $
#
# The original header is preserved below for reference. It is noted that there
# is a "newer" version which differs in some cosmetic details (but actually
@@ -321,7 +321,7 @@ vanilla|dumb tty,
# DEL and ^C are hardcoded to act as kill characters.
# ^D acts as a line break (just like newline).
# It also interprets
-# \033];xxx\007
+# \033];xxx\007
# for compatibility with xterm -TD
9term|Plan9 terminal emulator for X,
am,
@@ -376,11 +376,19 @@ 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 normal (ANSI) flavor of "media copy" building block asserts that
+# characters sent to the printer do not echo on the screen. DEC terminals
+# can also be put into autoprinter mode, where each line is sent to the
+# printer as you move off that line, e.g., by a carriage return.
+ansi+pp|ansi printer port,
+ mc5i,
+ mc0=\E[i, mc4=\E[4i, mc5=\E[5i,
+dec+pp|DEC autoprinter mode,
+ mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i,
+
# The IBM PC alternate character set. Plug this into any Intel console entry.
# We use \E[11m for rmacs rather than \E[12m so the <acsc> string can use the
# ROM graphics for control characters such as the diamond, up- and down-arrow.
@@ -456,9 +464,10 @@ ibcs2|Intel Binary Compatibility Standard prescriptions,
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, 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,
+ hpa=\E[%i%p1%dG, hts=\EH, ich=\E[%p1%d@, ich1=\E[@,
+ il=\E[%p1%dL, indn=\E[%p1%dS, rc=\E7, rin=\E[%p1%dT,
+ rmam=\E[?7l, sc=\E7, smam=\E[?7h, tbc=\E[g,
+ vpa=\E[%i%p1%dd,
#### ANSI/ECMA-48 terminals and terminal emulators
#
@@ -488,7 +497,7 @@ ansi-mini|any ansi terminal with pessimistic assumptions,
# 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,
+ ht=^I, use=ansi-mini, use=ansi+local1,
# ANSI X3.64 from emory!mlhhh (Hugh Hansard) via BRL
#
@@ -655,7 +664,7 @@ ansi.sys|ANSI.SYS 3.1 and later versions,
kf42=\0m, kf43=\0n, kf44=\0o, kf45=\0p, kf46=\0q,
kf47=\0\213, kf48=\0\214, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B,
kf9=\0C, khome=\0G, kich1=\0R, knp=\0Q, kpp=\0I,
- pfkey=\E[0;%?%p1%{11}%<%t%'\:'%e%?%p1%{13}%<%t%'z'%e%?%p1%{23}%<%t%'G'%e%?%p1%{25}%<%t%'p'%e%?%p1%'#'%<%t%'E'%e%?%p1%'%'%<%t%'f'%e%?%p1%'/'%<%t%'C'%e%{92}%;%;%;%;%;%;%;%p1%+%d;%p2"%s"p,
+ pfkey=\E[0;%?%p1%{11}%<%t%'\:'%e%p1%{13}%<%t%'z'%e%p1%{23}%<%t%'G'%e%p1%{25}%<%t%'p'%e%p1%'#'%<%t%'E'%e%p1%'%'%<%t%'f'%e%p1%'/'%<%t%'C'%e%{92}%;%p1%+%d;%p2"%s"p,
use=ansi.sys-old,
#
@@ -689,12 +698,8 @@ nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi
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
-#
+#### Atari ST terminals
-#############################################################################
-#
-# Atari ST terminals.
# From Guido Flohr <gufl0000@stud.uni-sb.de>.
#
tw52|tw52-color|Toswin window manager with color,
@@ -799,9 +804,6 @@ stv52pc|MiNT virtual console with PC charset,
rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, smcup=\Ev\Ee\Ez_,
smso=\Ep, smul=\EyH,
-#### Atari ST
-#
-
# From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
atari-old|atari st,
OTbs, am,
@@ -835,6 +837,690 @@ st52-old|Atari ST with VT52 emulation,
ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq,
smcup=\Ee, smso=\Ep,
+#### Apple Terminal.app
+
+# nsterm*|Apple_Terminal - AppKit Terminal.app
+#
+# Terminal.app is a Terminal emulator bundled with NeXT's NeXTStep and
+# OPENSTEP/Mach operating systems, and with Apple's Rhapsody, Mac OS X
+# Server and Mac OS X operating systems. There is also a
+# "terminal.app" in GNUStep, but I believe it to be an unrelated
+# codebase and I have not attempted to describe it here.
+#
+# For NeXTStep, OPENSTEP/Mach, Rhapsody and Mac OS X Server 1.0, you
+# are pretty much on your own. Use "nsterm-7-m" and hope for the best.
+# You might also try "nsterm-7" and "nsterm-old" if you suspect your
+# version supports color.
+#
+# To determine the version of Terminal.app you're using by running:
+#
+# echo "$TERM_PROGRAM" "$TERM_PROGRAM_VERSION"
+#
+# For Apple_Terminal v309+, use "nsterm-256color" (or "nsterm-bce")
+#
+# For Apple_Terminal v200+, use "nsterm-16color" (a.k.a. "nsterm")
+#
+# For Apple_Terminal v71+/v100+, use "nsterm-bce".
+#
+# For Apple_Terminal v51+, use "nsterm-7-c" or "nsterm-7-c-s".
+#
+# For Apple_Terminal v41+, use "nsterm-old", or "nsterm-s".
+#
+# For all earlier versions (Apple_Terminal), try "nsterm-7-m"
+# (monochrome) or "nsterm-7" (color); "nsterm-7-m-s" and "nsterm-7-s"
+# might work too, but really you're on your own here since these
+# systems are very obsolete and I can't test them. I do welcome
+# patches, though :).
+
+# Other Terminals:
+#
+# For GNUstep_Terminal, you're probably best off using "linux" or
+# writing your own terminfo.
+
+# For MacTelnet, you're on your own. It's a different codebase, and
+# seems to be somewhere between "vt102", "ncsa" and "xterm-color".
+
+# For iTerm.app, see "iterm".
+
+#
+# The AppKit Terminal.app descriptions all have names beginning with
+# "nsterm". Note that the statusline (-s) versions use the window
+# titlebar as a phony status line, and may produce warnings during
+# compilation as a result ("tsl uses 0 parameters, expected 1".)
+# Ignore these warnings, or even ignore these entries entirely. Apps
+# which need to position the cursor or do other fancy stuff inside the
+# status line won't work with these entries. They're primarily useful
+# for programs like Pine which provide simple notifications in the
+# status line. Please note that non-ASCII characters don't work right
+# in the status line, since Terminal.app incorrectly interprets their
+# Unicode codepoints as MacRoman codepoints (in earlier Mac OS X
+# versions) or only accepts status lines consisting entirely of
+# characters from the first 256 Unicode positions (including C1 but
+# not C0 or DEL.)
+#
+# The Mythology* of AppKit Terminal.app:
+#
+# In the days of NeXTSTep 0.x and 1.x there were two incompatible
+# bundled terminal emulators, Shell and Terminal. Scott Hess wrote a
+# shareware replacement for Terminal called "Stuart" which NeXT bought
+# and used as the basis for the Terminal.app in NeXTstep 2+,
+# OPENSTEP/Mach, Apple Rhapsody, Mac OS X Server 1.0, and Mac OS X. I
+# don't know the TERM_PROGRAM and TERM_PROGRAM_VERSION settings or
+# capabilities for the early versions, but I believe that the
+# TERM_PROGRAM_VERSION may have been reset at some point.
+#
+# The early versions were tailored to the NeXT character set. Sometime
+# after the Apple aquisition the encoding was swiched to MacRoman
+# (initally with serious altcharset bugs due to incomplete conversion
+# of the old NeXT code,) and then later to UTF-8. Alos sometime during
+# or just prior to the early days of Mac OS X, the Terminal grew ANSI
+# 8-color support (initially buggy when combined with attributes, but
+# that was later fixed.) More recently, around Mac OS X version 10.3
+# or so (Terminal.app v100+) xterm-like 16-color support was added. In
+# some versions (for instance 133-1 which shipped with Mac OS X
+# version 10.4) this suffered from the <bce> bug, but that seems to
+# have been fixed in Mac OS X version 10.5 (Terminal.app v240.2+).
+#
+# In the early days of Mac OS X the terminal was fairly buggy and
+# would routinely crash under load. Many of these bugs seem to have
+# been fixed around Mac OS X version 10.3 (Terminal.app v100+) but
+# some may still remain. This change seems to correspond to
+# Terminal.app reporting "xterm-color" as $TERM rather than "vt100" as
+# it did previously.
+#
+# * This may correspond with what actually happened, but I don't
+# know. It is based on guesswork, hearsay, private correspondence,
+# my faulty memory, and the following online sources and references:
+#
+# [1] "Three Scotts and a Duane" by Simson L. Garfinkel
+# http://www.nextcomputers.org/NeXTfiles/Articles/NeXTWORLD/93.8/93.8.Dec.Community1.html
+#
+# [2] NeXTSTEP entry from Wikipedia, the free encyclopedia
+# https://secure.wikimedia.org/wikipedia/en/wiki/Nextstep
+#
+# * Renamed the AppKit Terminal.app entry from "Apple_Terminal" to
+# "nsterm" to comply with the name length and case conventions and
+# limitations of various software packages [notably Solaris terminfo
+# and UNIX.] A single Apple_Terminal alias is retained for
+# backwards-compatbility.
+#
+# * Added function key support (F1-F4). These only work in Terminal.app
+# version 51, hopefully the capabilities won't cause problems for people
+# using version 41.
+#
+# * Added "full color" (-c) entries which support the 16-color mode in
+# version 51.
+#
+# * By default, version 51 uses UTF-8 encoding with broken altcharset
+# support, so "ASCII" (-7) entries without altcharset support were
+# added.
+
+# nsterm - AppKit Terminal.app
+#
+# Apple's Mac OS X includes a Terminal.app derived from the old NeXT
+# Terminal.app. It is a partial VT100 emulation with some xterm-like
+# extensions. This terminfo was written to describe versions 41
+# (shipped with Mac OS X version 10.0) and 51 (shipped with Mac OS X
+# version 10.1) of Terminal.app.
+#
+# Terminal.app runs under the Mac OS X Quartz windowing system (and
+# other AppKit-supported windowing systems.) On the Mac OS X machine I
+# use, the executable for Terminal.app is:
+# /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
+#
+# If you're looking for a description of the full-screen system
+# console which runs under Apple's Darwin operating system on PowerPC
+# platforms, see the "xnuppc" entry instead.
+#
+# There were no function keys in version 41. In version 51, there are
+# four working function keys (F1, F2, F3 and F4.) The function keys
+# are included in all of these entries.
+#
+# It does not support mouse pointer position reporting. Under some
+# circumstances the cursor can be positioned using option-click; this
+# works by comparing the cursor position and the selected position,
+# and simulating enough cursor-key presses to move the cursor to the
+# selected position. This technique fails in all but the simplest
+# applications.
+#
+# It provides partial ANSI color support (background colors interacted
+# badly with bold in version 41, though, as reflected in :ncv:.) The
+# monochrome (-m) entries are useful if you've disabled color support
+# or use a monochrome monitor. The full color (-c) entries are useful
+# in version 51, which doesn't exhibit the background color bug. They
+# also enable an xterm-compatible 16-color mode.
+#
+# The configurable titlebar is set using xterm-compatible sequences;
+# it is used as a status bar in the statusline (-s) entries. Its width
+# depends on font sizes and window sizes, but 50 characters seems to
+# be the default for an 80x24 window.
+#
+# The MacRoman character encoding is used for some of the alternate
+# characters in the "MacRoman" entries; the "ASCII" (-7) entries
+# disable alternate character set support entirely, and the "VT100"
+# (-acs) entries rely instead on Terminal.app's own buggy VT100
+# graphics emulation, which seems to think the character encoding is
+# the old NeXT charset instead of MacRoman. The "ASCII" (-7) entries
+# are useful in Terminal.app version 51, which supports UTF-8 and
+# other ASCII-compatible character encodings but does not correctly
+# implement VT100 graphics; once VT100 graphics are correctly
+# implemented in Terminal.app, the "VT100" (-acs) entries should be
+# usable in any ASCII-compatible character encoding [except perhaps
+# in UTF-8, where some experts argue for disallowing alternate
+# characters entirely.]
+#
+# Terminal.app reports "vt100" as the terminal type, but exports
+# several environment variables which may aid detection in a shell
+# profile (i.e. .profile or .login):
+#
+# TERM=vt100
+# TERM_PROGRAM=Apple_Terminal
+# TERM_PROGRAM_VERSION=41 # in Terminal.app version 41
+# TERM_PROGRAM_VERSION=51 # in Terminal.app version 51
+#
+# For example, the following Bourne shell script would detect the
+# correct terminal type:
+#
+# if [ :"$TERM" = :"vt100" -a :"$TERM_PROGRAM" = :"Apple_Terminal" ]
+# then
+# export TERM
+# if [ :"$TERM_PROGRAM_VERSION" = :41 ]
+# then
+# TERM="nsterm-old"
+# else
+# TERM="nsterm-c-7"
+# fi
+# fi
+#
+# In a C shell derivative, this would be accomplished by:
+#
+# if ( $?TERM && $?TERM_PROGRAM && $?TERM_PROGRAM_VERSION) then
+# if ( :"$TERM" == :"vt100" && :"$TERM_PROGRAM" == :"Apple_Terminal" ) then
+# if ( :"$TERM_PROGRAM_VERSION" == :41 ) then
+# setenv TERM "nsterm-old"
+# else
+# setenv TERM "nsterm-c-7"
+# endif
+# endif
+# endif
+
+# The '+' entries are building blocks
+nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset,
+ am, bw, msgr, xenl, xon,
+ cols#80, it#8, lines#24,
+ bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
+ csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
+ cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+ home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ invis=\E[8m, kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+ kcuu1=\EOA, kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM,
+ rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
+ rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
+ sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys,
+
+nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ enacs=\E(B\E)0, rmacs=^O,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, use=nsterm+7,
+
+nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset,
+ acsc=+\335\,\334-\366.\3770#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245,
+ enacs=\E(B\E)0, rmacs=^O,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, use=nsterm+7,
+
+# compare with xterm+sl-twm
+nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support,
+ wsl#50, use=xterm+sl-twm,
+
+nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors),
+ op=\E[0m, use=ibm+16color,
+
+nsterm+c41|AppKit Terminal.app v41 color support,
+ colors#8, ncv#37, pairs#64,
+ op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+
+# These are different combinations of the building blocks
+
+# ASCII charset (-7)
+nsterm-m-7|nsterm-7-m|AppKit Terminal.app v41+ w/ASCII charset (monochrome),
+ use=nsterm+7,
+
+nsterm-m-s-7|nsterm-7-m-s|AppKit Terminal.app v41+ w/ASCII charset (monochrome w/statusline),
+ use=nsterm+s, use=nsterm+7,
+
+nsterm-7|AppKit Terminal.app v41+ w/ASCII charset (color),
+ use=nsterm+c41, use=nsterm+7,
+
+nsterm-7-c|nsterm-c-7|AppKit Terminal.app v51+ w/ASCII charset (full color),
+ use=nsterm+c, use=nsterm+7,
+
+nsterm-s-7|nsterm-7-s|AppKit Terminal.app v41+ w/ASCII charset (color w/statusline),
+ use=nsterm+s, use=nsterm+c41, use=nsterm+7,
+
+nsterm-c-s-7|nsterm-7-c-s|AppKit Terminal.app v51+ w/ASCII charset (full color w/statusline),
+ use=nsterm+s, use=nsterm+c, use=nsterm+7,
+
+# VT100 alternate-charset (-acs)
+nsterm-m-acs|nsterm-acs-m|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome),
+ use=nsterm+acs,
+
+nsterm-m-s-acs|nsterm-acs-m-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome w/statusline),
+ use=nsterm+s, use=nsterm+acs,
+
+nsterm-acs|AppKit Terminal.app v41+ w/VT100 alternate-charset (color),
+ use=nsterm+c41, use=nsterm+acs,
+
+nsterm-c-acs|nsterm-acs-c|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color),
+ use=nsterm+c, use=nsterm+acs,
+
+nsterm-s-acs|nsterm-acs-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (color w/statusline),
+ use=nsterm+s, use=nsterm+c41, use=nsterm+acs,
+
+nsterm-c-s-acs|nsterm-acs-c-s|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color w/statusline),
+ use=nsterm+s, use=nsterm+c, use=nsterm+acs,
+
+# MacRoman charset
+nsterm-m|AppKit Terminal.app v41+ w/MacRoman charset (monochrome),
+ use=nsterm+mac,
+
+nsterm-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline),
+ use=nsterm+s, use=nsterm+mac,
+
+nsterm-old|AppKit Terminal.app v41+ w/MacRoman charset (color),
+ use=nsterm+c41, use=nsterm+mac,
+
+nsterm-c|AppKit Terminal.app v51+ w/MacRoman charset (full color),
+ use=nsterm+c, use=nsterm+mac,
+
+nsterm-s|AppKit Terminal.app v41+ w/MacRoman charset (color w/statusline),
+ use=nsterm+s, use=nsterm+c41, use=nsterm+mac,
+
+nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline),
+ use=nsterm+s, use=nsterm+c, use=nsterm+mac,
+
+# In Mac OS X version 10.5 the format of the preferences has changed
+# and a new, more complex technique is needed, e.g.,
+#
+# python -c 'import sys,objc;NSUserDefaults=objc.lookUpClass(
+# "NSUserDefaults");ud=NSUserDefaults.alloc();
+# ud.init();prefs=ud.persistentDomainForName_(
+# "com.apple.Terminal");prefs["Window Settings"][
+# prefs["Default Window Settings"]]["TerminalType"
+# ]=sys.argv[1];ud.setPersistentDomain_forName_(prefs,
+# "com.apple.Terminal")' nsterm-16color
+#
+# and it is still not settable from the preferences dialog. This is
+# tracked under rdar://problem/7365108 and rdar://problem/7365134
+# in Apple's bug reporter.
+#
+# In OS X 10.7 (Leopard) the TERM which can be set in the preferences dialog
+# defaults to xterm-color. Alternative selections are ansi, dtterm, rxvt,
+# vt52, vt100, vt102 and xterm.
+nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5,
+ bw@, mir, npc,
+ civis=\E[?25l, cnorm=\E[?25h, dch=\E[%p1%dP, dch1=\E[P,
+ flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG,
+ ich=\E[%p1%d@, ich1=\E[@, kdch1=\E[3~, kend=\E[F,
+ kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
+ kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
+ kf18=\E[22~, kf19=\E[33~, kf20=\E[34~, kf5=\E[15~,
+ kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
+ knp=\E[6~, kpp=\E[5~, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
+ smcup=\E7\E[?47h, smir=\E[4h, vpa=\E[%i%p1%dd,
+ kLFT5=\E[5D, kRIT5=\E[5C, use=nsterm-c-s-acs,
+
+# The versions of Terminal.app in Mac OS X version 10.3.x seem to have
+# the background color erase feature. The newer version 240.2 in Mac OS X
+# version 10.5 does not.
+#
+# This entry is based on newsgroup comments by Alain Bench, Christian Ebert,
+# and D P Schreber comparing to nsterm-c-s-acs.
+#
+# In Mac OS X version 10.4 and earlier, D P Schreber notes that $TERM
+# can be set in Terminal.app, e.g.,
+#
+# defaults write com.apple.Terminal TermCapString nsterm-bce
+#
+# and that it is not set in Terminal's preferences dialog.
+#
+# Modified for OS X 10.8, omitting bw based on testing with tack -TD
+#
+# Notes:
+# * The terminal description matches the default settings.
+# * The keyboard is configurable via a dialog.
+# * By default khome, kend, knext and kprev are honored only with a
+# shift-modifier.
+# * There are bindings for control left/right arrow (but not up/down).
+# Added those to nsterm-16color, which is the version used for OS X 10.6
+# * "Allow VT100 application keypage mode" is by default disabled.
+# There is no way to press keypad-comma unless application mode is enabled
+# and used.
+# * 132-column mode stopped working during vttest's tests. Consider it broken.
+# * CHT, REP, SU, SD are buggy.
+# * ECH works (also in Leopard), but is not used here for compatibility.
+# * The terminal preferences dialog replaces xterm-color by xterm-16color and
+# xterm-256color. However, it adds "nsterm", so it is possible to use the
+# nsterm entry from this file to override the MacPorts (20110404) or
+# system (20081102) copy of this file.
+# + In OS X 10.8 (Mountain Lion) the TERM which can be set in the preferences
+# dialog defaults to xterm-256color. Alternative selections are ansi,
+# dtterm, rxvt, vt52, vt100, vt102, xterm and xterm-16color. However,
+# the menu says "Declare terminal as" without promising to actually emulate
+# the corresponding terminals. Indeed, changing TERM does not affect the
+# emulation itself. This means that
+# + the function-keys do not match for dtterm for kf1-kf4 as well as
+# khome/kend
+# + the color model is the same for each setting of TERM (does not match
+# ansi or dtterm).
+# + the shift/control/meta key modifiers from rxvt and xterm variants are not
+# recognised except for a few special cases, i.e., kRIT5 and kLFT5.
+# + the vt52 emulation does not give a usable shell because screen-clearing
+# does not work as expected.
+# + selecting "xterm" or "xterm-16color" sets TERM to "xterm-256color".
+nsterm-bce|AppKit Terminal.app v71+/v100.1.8+ with Mac OS X version 10.3/10.4 (bce),
+ bce, use=nsterm-16color,
+
+# This is tested with OS X 10.8 (Mountain Lion), 2012/08/11
+# TERM_PROGRAM_VERSION=309
+# Earlier reports state that these differences also apply to OS X 10.7 (Lion),
+# TERM_PROGRAM_VERSION=303
+nsterm-256color|Terminal.app in OS X 10.8,
+ ccc@,
+ initc@, use=xterm+256color, use=nsterm-bce,
+
+# This is an alias which should always point to the "current" version
+nsterm|Apple_Terminal|AppKit Terminal.app,
+ use=nsterm-256color,
+
+# iTerm.app from http://iterm.sourceforge.net/ is an alternative (and
+# more featureful) terminal emulator for Mac OS X. It is similar
+# enough in capabilities to nsterm-16color that I have derived this
+# description from that one, but as far as I know they share no code.
+# Many of the features are user-configurable, but I attempt only to
+# describe the default configuration.
+#
+# NOTE: When tack tests (csr) + (nel) iTerm.app crashes, so (csr) is
+# disabled.
+iTerm.app|iTerm.app terminal emulator for Mac OS X,
+ bce, bw@, ccc@,
+ csr@, initc@, kend=\EOF, khome=\EOH, use=xterm+256color,
+ use=nsterm-16color,
+
+# xnuppc - Darwin PowerPC Console (a.k.a. "darwin")
+#
+# On PowerPC platforms, Apple's Darwin operating system uses a
+# full-screen system console derived from a NetBSD framebuffer
+# console. It is an ANSI-style terminal, and is not really VT-100
+# compatible.
+#
+# Under Mac OS X, this is the system console driver used while in
+# single-user mode [reachable by holding down Command-S during the
+# boot process] and when logged in using console mode [reachable by
+# typing ">console" at the graphical login prompt.]
+#
+# If you're looking for a description of the Terminal.app terminal
+# emulator which runs under the Mac OS X Quartz windowing system (and
+# other AppKit-supported windowing systems,) see the "nsterm"
+# entry instead.
+#
+# NOTE: Under Mac OS X version 10.1, the default login window does not
+# prompt for user name, instead requiring an icon to be selected from
+# a list of known users. Since the special ">console" login is not in
+# this list, you must make one of two changes in the Login Window
+# panel of the Login section of System Prefs to make the special
+# ">console" login accessible. The first option is to enable 'Show
+# "Other User" in list for network users', which will add a special
+# "Other..." icon to the graphical login panel. Selecting "Other..."
+# will present the regular graphical login prompt. The second option
+# is to change the 'Display Login Window as:' setting to 'Name and
+# password entry fields', which replaces the login panel with a
+# graphical login prompt.
+#
+# There are no function keys, at least not in Darwin 1.3.
+#
+# It has no mouse support.
+#
+# It has full ANSI color support, and color combines correctly with
+# all three supported attributes: bold, inverse-video and underline.
+# However, bold colored text is almost unreadable (bolding is
+# accomplished using shifting and or-ing, and looks smeared) so bold
+# has been excluded from the list of color-compatible attributes
+# [using (ncv)]. The monochrome entry (-m) is useful if you use a
+# monochrome monitor.
+#
+# There is one serious bug with this terminal emulation's color
+# support: repositioning the cursor onto a cell with non-matching
+# colors obliterates that cell's contents, replacing it with a blank
+# and displaying a colored cursor in the "current" colors. There is
+# no complete workaround at present [other than using the monochrome
+# (-m) entries,] but removing the (msgr) capability seemed to help.
+#
+# The "standout" chosen was simple reverse-video, although a colorful
+# standout might be more aesthetically pleasing. Similarly, the bold
+# chosen is the terminal's own smeared bold, although a simple
+# color-change might be more readable. The color-bold (-b) entries
+# uses magenta colored text for bolding instead. The fancy color (-f
+# and -f2) entries use color for bold, standout and underlined text
+# (underlined text is still underlined, though.)
+#
+# Apparently the terminal emulator does support a VT-100-style
+# alternate character set, but all the alternate character set
+# positions have been left blank in the font. For this reason, no
+# alternate character set capabilities have been included in this
+# description. The console driver appears to be ASCII-only, so (enacs)
+# has been excluded [although the VT-100 sequence does work.]
+#
+# The default Mac OS X and Darwin installation reports "vt100" as the
+# terminal type, and exports no helpful environment variables. To fix
+# this, change the "console" entry in /etc/ttys from "vt100" to
+# "xnuppc-WxH", where W and H are the character dimensions of your
+# console (see below.)
+#
+# The font used by the terminal emulator is apparently one originally
+# drawn by Ka-Ping Yee, and uses 8x16-pixel characters. This
+# file includes descriptions for the following geometries:
+#
+# Pixels Characters Entry Name (append -m for monochrome)
+# -------------------------------------------------------------------
+# 640x400 80x25 xnuppc-80x25
+# 640x480 80x30 xnuppc-80x30
+# 720x480 90x30 xnuppc-90x30
+# 800x600 100x37 xnuppc-100x37
+# 896x600 112x37 xnuppc-112x37
+# 1024x640 128x40 xnuppc-128x40
+# 1024x768 128x48 xnuppc-128x48
+# 1152x768 144x48 xnuppc-144x48
+# 1280x1024 160x64 xnuppc-160x64
+# 1600x1024 200x64 xnuppc-200x64
+# 1600x1200 200x75 xnuppc-200x75
+# 2048x1536 256x96 xnuppc-256x96
+#
+# The basic "xnuppc" entry includes no size information, and the
+# emulator includes no reporting capability, so you'll be at the mercy
+# of the TTY device (which reports incorrectly on my hardware.) The
+# color-bold entries do not include size information.
+
+# The '+' entries are building blocks
+xnuppc+basic|Darwin PowerPC Console basic capabilities,
+ am, bce, mir, xenl,
+ it#8,
+ bold=\E[1m, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
+ cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu=\E[%p1%dA, cuu1=\E[A, dsl=\E]2;\007, ed=\E[J, el=\E[K,
+ el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=\177,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
+ rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m,
+ rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
+ sc=\E7,
+ sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+ sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
+ smul=\E[4m, tbc=\E[3g, use=vt100+keypad,
+
+xnuppc+c|Darwin PowerPC Console ANSI color support,
+ colors#8, ncv#32, pairs#64,
+ op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+
+xnuppc+b|Darwin PowerPC Console color-bold support,
+ ncv#32,
+ bold=\E[35m,
+ sgr=\E[0%?%p6%t;35%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+ use=xnuppc+basic,
+
+xnuppc+f|Darwin PowerPC Console fancy color support,
+ ncv#35,
+ sgr=\E[0%?%p6%t;35%;%?%p2%t;36;4%;%?%p1%t;33;44%;%?%p3%t;7%;m,
+ smso=\E[33;44m, smul=\E[36;4m, use=xnuppc+b,
+
+xnuppc+f2|Darwin PowerPC Console alternate fancy color support,
+ ncv#35,
+ bold=\E[33m,
+ sgr=\E[0%?%p6%t;33%;%?%p2%t;34%;%?%p1%t;31;47%;%?%p3%t;7%;m,
+ smso=\E[31;47m, smul=\E[34m, use=xnuppc+basic,
+
+# Building blocks for specific screen sizes
+xnuppc+80x25|Darwin PowerPC Console 80x25 support (640x400 pixels),
+ cols#80, lines#25,
+
+xnuppc+80x30|Darwin PowerPC Console 80x30 support (640x480 pixels),
+ cols#80, lines#30,
+
+xnuppc+90x30|Darwin PowerPC Console 90x30 support (720x480 pixels),
+ cols#90, lines#30,
+
+xnuppc+100x37|Darwin PowerPC Console 100x37 support (800x600 pixels),
+ cols#100, lines#37,
+
+xnuppc+112x37|Darwin PowerPC Console 112x37 support (896x600 pixels),
+ cols#112, lines#37,
+
+xnuppc+128x40|Darwin PowerPC Console 128x40 support (1024x640 pixels),
+ cols#128, lines#40,
+
+xnuppc+128x48|Darwin PowerPC Console 128x48 support (1024x768 pixels),
+ cols#128, lines#48,
+
+xnuppc+144x48|Darwin PowerPC Console 144x48 support (1152x768 pixels),
+ cols#144, lines#48,
+
+xnuppc+160x64|Darwin PowerPC Console 160x64 support (1280x1024 pixels),
+ cols#160, lines#64,
+
+xnuppc+200x64|Darwin PowerPC Console 200x64 support (1600x1024 pixels),
+ cols#200, lines#64,
+
+xnuppc+200x75|Darwin PowerPC Console 200x75 support (1600x1200 pixels),
+ cols#200, lines#75,
+
+xnuppc+256x96|Darwin PowerPC Console 256x96 support (2048x1536 pixels),
+ cols#256, lines#96,
+
+# These are different combinations of the building blocks
+
+xnuppc-m|darwin-m|Darwin PowerPC Console (monochrome),
+ use=xnuppc+basic,
+
+xnuppc|darwin|Darwin PowerPC Console (color),
+ use=xnuppc+c, use=xnuppc+basic,
+
+xnuppc-m-b|darwin-m-b|Darwin PowerPC Console (monochrome w/color-bold),
+ use=xnuppc+b,
+
+xnuppc-b|darwin-b|Darwin PowerPC Console (color w/color-bold),
+ use=xnuppc+b, use=xnuppc+c,
+
+xnuppc-m-f|darwin-m-f|Darwin PowerPC Console (fancy monochrome),
+ use=xnuppc+f,
+
+xnuppc-f|darwin-f|Darwin PowerPC Console (fancy color),
+ use=xnuppc+f, use=xnuppc+c,
+
+xnuppc-m-f2|darwin-m-f2|Darwin PowerPC Console (alternate fancy monochrome),
+ use=xnuppc+f2,
+
+xnuppc-f2|darwin-f2|Darwin PowerPC Console (alternate fancy color),
+ use=xnuppc+f2, use=xnuppc+c,
+
+# Combinations for specific screen sizes
+xnuppc-80x25-m|darwin-80x25-m|Darwin PowerPC Console (monochrome) 80x25,
+ use=xnuppc+80x25, use=xnuppc+basic,
+
+xnuppc-80x25|darwin-80x25|Darwin PowerPC Console (color) 80x25,
+ use=xnuppc+c, use=xnuppc+80x25, use=xnuppc+basic,
+
+xnuppc-80x30-m|darwin-80x30-m|Darwin PowerPC Console (monochrome) 80x30,
+ use=xnuppc+80x30, use=xnuppc+basic,
+
+xnuppc-80x30|darwin-80x30|Darwin PowerPC Console (color) 80x30,
+ use=xnuppc+c, use=xnuppc+80x30, use=xnuppc+basic,
+
+xnuppc-90x30-m|darwin-90x30-m|Darwin PowerPC Console (monochrome) 90x30,
+ use=xnuppc+90x30, use=xnuppc+basic,
+
+xnuppc-90x30|darwin-90x30|Darwin PowerPC Console (color) 90x30,
+ use=xnuppc+c, use=xnuppc+90x30, use=xnuppc+basic,
+
+xnuppc-100x37-m|darwin-100x37-m|Darwin PowerPC Console (monochrome) 100x37,
+ use=xnuppc+100x37, use=xnuppc+basic,
+
+xnuppc-100x37|darwin-100x37|Darwin PowerPC Console (color) 100x37,
+ use=xnuppc+c, use=xnuppc+100x37, use=xnuppc+basic,
+
+xnuppc-112x37-m|darwin-112x37-m|Darwin PowerPC Console (monochrome) 112x37,
+ use=xnuppc+112x37, use=xnuppc+basic,
+
+xnuppc-112x37|darwin-112x37|Darwin PowerPC Console (color) 112x37,
+ use=xnuppc+c, use=xnuppc+112x37, use=xnuppc+basic,
+
+xnuppc-128x40-m|darwin-128x40-m|Darwin PowerPC Console (monochrome) 128x40,
+ use=xnuppc+128x40, use=xnuppc+basic,
+
+xnuppc-128x40|darwin-128x40|Darwin PowerPC Console (color) 128x40,
+ use=xnuppc+c, use=xnuppc+128x40, use=xnuppc+basic,
+
+xnuppc-128x48-m|darwin-128x48-m|Darwin PowerPC Console (monochrome) 128x48,
+ use=xnuppc+128x48, use=xnuppc+basic,
+
+xnuppc-128x48|darwin-128x48|Darwin PowerPC Console (color) 128x48,
+ use=xnuppc+c, use=xnuppc+128x48, use=xnuppc+basic,
+
+xnuppc-144x48-m|darwin-144x48-m|Darwin PowerPC Console (monochrome) 144x48,
+ use=xnuppc+144x48, use=xnuppc+basic,
+
+xnuppc-144x48|darwin-144x48|Darwin PowerPC Console (color) 144x48,
+ use=xnuppc+c, use=xnuppc+144x48, use=xnuppc+basic,
+
+xnuppc-160x64-m|darwin-160x64-m|Darwin PowerPC Console (monochrome) 160x64,
+ use=xnuppc+160x64, use=xnuppc+basic,
+
+xnuppc-160x64|darwin-160x64|Darwin PowerPC Console (color) 160x64,
+ use=xnuppc+c, use=xnuppc+160x64, use=xnuppc+basic,
+
+xnuppc-200x64-m|darwin-200x64-m|Darwin PowerPC Console (monochrome) 200x64,
+ use=xnuppc+200x64, use=xnuppc+basic,
+
+xnuppc-200x64|darwin-200x64|Darwin PowerPC Console (color) 200x64,
+ use=xnuppc+c, use=xnuppc+200x64, use=xnuppc+basic,
+
+xnuppc-200x75-m|darwin-200x75-m|Darwin PowerPC Console (monochrome) 200x75,
+ use=xnuppc+200x75, use=xnuppc+basic,
+
+xnuppc-200x75|darwin-200x75|Darwin PowerPC Console (color) 200x75,
+ use=xnuppc+c, use=xnuppc+200x75, use=xnuppc+basic,
+
+xnuppc-256x96-m|darwin-256x96-m|Darwin PowerPC Console (monochrome) 256x96,
+ use=xnuppc+256x96, use=xnuppc+basic,
+
+xnuppc-256x96|darwin-256x96|Darwin PowerPC Console (color) 256x96,
+ use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic,
+
+
#### BeOS
#
# BeOS entry for Terminal program Seems to be almost ANSI
@@ -909,7 +1595,7 @@ linux-basic|linux console,
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,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p9%t;11%;m,
smam=\E[?7h, smir=\E[4h, smul=\E[4m, tbc=\E[3g,
vpa=\E[%i%p1%dd, use=vt102+enq, use=klone+sgr,
use=ecma+color,
@@ -936,18 +1622,38 @@ linux-c|linux console 1.3.6+ for older ncurses,
# 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,
+linux2.2|linux 2.2.x console,
civis=\E[?25l\E[?1c, cnorm=\E[?25h\E[?0c,
cvvis=\E[?25h\E[?8c, use=linux-c-nc,
+# Linux 2.6.x has a fix for SI/SO to work with UTF-8 encoding added here:
+# http://lkml.indiana.edu/hypermail/linux/kernel/0602.2/0868.html
+# Using SI/SO has the drawback that it confuses screen. SCS would work.
+# However, SCS is buggy (see comment in Debian #515609) -TD
+# Further, this breaks longstanding workarounds for Linux console's line
+# drawing (see Debian 665959) -TD
+linux2.6|linux 2.6.x console,
+ rmacs=^O,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;m%?%p9%t\016%e\017%;,
+ sgr0=\E[m\017, smacs=^N, use=linux2.2,
+
+# The 3.0 kernel adds support for clearing scrollback buffer (capability E3).
+# It is the same as xterm's erase-saved-lines feature.
+linux3.0|linux 3.0 kernels,
+ E3=\E[3;J, use=linux2.6,
+
+# This is Linux console for ncurses.
+linux|linux console,
+ use=linux2.2,
+
# Subject: linux 2.6.26 vt back_color_erase
# Changes to the Linux console driver broke bce model as reported in
# https://bugzilla.novell.com/show_bug.cgi?id=418613
# apparently from
# http://lkml.org/lkml/2008/4/26/305
-# http://groups.google.com/group/fa.linux.kernel/browse_thread/thread/87f98338f0d636bb/aa96e8b86cee0d1e?lnk=st&q=#aa96e8b86cee0d1e
+# http://lkml.org/lkml/2008/10/3/66
linux2.6.26|linux console w/o bce,
- bce@, use=linux,
+ bce@, use=linux2.6,
# 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,
@@ -998,9 +1704,9 @@ kon|kon2|jfbterm|Kanji ON Linux console,
# you use a 512-character console font. This uses bold for bright
# foreground colors and blink for bright background colors.
linux-16color|linux console with 16 colors,
- colors#16, ncv#54, pairs#256,
- setab=\E[4%p1%{8}%m%d%?%p1%{8}%>%t;5%e%p1%{8}%=%t;2%e;25%;m,
- setaf=\E[3%p1%{8}%m%d%?%p1%{8}%>%t;1%e%p1%{8}%=%t;2%e;21%;m,
+ colors#16, ncv#63, pairs#256,
+ setab=\E[4%p1%{8}%m%d%?%p1%{7}%>%t;5%e;25%;m,
+ setaf=\E[3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;21%;m,
use=linux,
# bterm (bogl 0.1.18)
@@ -1024,7 +1730,7 @@ bterm|bogl virtual terminal,
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,
- op=\E49;39m, rev=\E[7m, ri=\EM, rmacs=^O, rmso=\E[27m,
+ op=\E[49m\E[39m, rev=\E[7m, ri=\EM, rmacs=^O, rmso=\E[27m,
rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
sgr0=\E[0m, smacs=^N, smso=\E[7m, smul=\E[4m,
@@ -1053,6 +1759,24 @@ mach-color|Mach Console with ANSI color,
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: Samuel Thibault
+# Source: git://git.sv.gnu.org/hurd/gnumach.git
+# Files: i386/i386at/kd.c
+#
+# Added nel, hpa, sgr and removed rmacs, smacs based on source -TD
+mach-gnu|GNU Mach,
+ acsc=+>\,<-\^.v0\333`+a\261f\370g\361h\260i#j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX,
+ el1=\E[1K, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@,
+ indn=\E[%p1%dS, invis=\E[8m, nel=\EE, rin=\E[%p1%dT,
+ sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;m,
+ use=mach,
+
+mach-gnu-color|Mach Console with ANSI color,
+ colors#8, pairs#64,
+ op=\E[37;40m, rmso=\E[27m, setab=\E[4%p1%dm,
+ setaf=\E[3%p1%dm, use=mach-gnu,
+
# From: Marcus Brinkmann
# http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/hurd/hurd/console/
#
@@ -1081,7 +1805,7 @@ mach-color|Mach Console with ANSI color,
#
# Reading the source, RIS resets cnorm, but not xmous.
hurd|The GNU Hurd console server,
- am, bce, bw, eo, km, mir, msgr, xon,
+ am, bce, bw, eo, km, mir, msgr, xenl, xon,
colors#8, it#8, ncv#18, pairs#64,
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
@@ -1110,382 +1834,6 @@ hurd|The GNU Hurd console server,
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,
-
-# SCO console and SOS-Syscons console for 386bsd
-# (scoansi: had unknown capabilities
-# :Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\
-# :GC=E:GD=B:GH=D:GL=\64:GU=A:GV=\63:GR=C:
-# :G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\
-# :CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\
-# :WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\
-# I renamed GS/GE/HM/EN/PU/PD/RT and added klone+sgr-dumb, based
-# on the <smacs>=\E[12m -- esr)
-#
-# klone+sgr-dumb is an error since the acsc does not match -TD
-#
-# In this description based on SCO's keyboard(HW) manpage list of default
-# function key values:
-# F13-F24 are shifted F1-F12
-# F25-F36 are control F1-F12
-# F37-F48 are shift+control F1-F12
-#
-# hpa/vpa work in the console, but not in scoterm:
-# hpa=\E[%p1%dG,
-# vpa=\E[%p1%dd,
-#
-# SCO's terminfo uses
-# kLFT=\E[d,
-# kRIT=\E[c,
-# 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.\2310[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,
-
-# 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[3g, 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,
-
-# From: Benjamin C. W. Sittler <bsittler@nmt.edu>
-#
-# I have a UNIX PC which I use as a terminal attached to my Linux PC.
-# 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.)
-#
-# 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,
-# onscreen function key labels, and bitmap graphics. But since the primary
-# user interface on the UNIX PC was a GUI program (ua, for "user
-# assistant",) and remote administration was considered important for the
-# machine, tam also supported VT100-compatible terminals attached to the
-# serial port or used across the StarLan network. To simulate the extra keys
-# not present on a VT100, users could press ESC and a two-letter sequence,
-# such as u d (Undo) or U D (Shift-Undo.) These two-letter sequences,
-# however, were not the same as those sent by the actual Undo key. The
-# actual Undo key sends ESC 0 s unshifted, and ESC 0 S shifted, for example.
-# (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.)
-#
-# 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.
-#
-# 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:
-#
-# 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.
-#
-# esr's notes:
-# Terminfo entry for the AT&T Unix PC 7300
-# from escape(7) in Unix PC 7300 Manual.
-# Somewhat similar to a vt100-am (but different enough
-# to redo this from scratch.)
-#
-# /***************************************************************
-# *
-# * FONT LOADING PROGRAM FOR THE UNIX PC
-# *
-# * This routine loads a font defined in the file ALTFONT
-# * 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 PC 7300 documentation.
-# ***************************************************************/
-# #include <string.h> /* needed for strcpy call */
-# #include <sys/window.h> /* needed for ioctl call */
-# #define FNSIZE 60 /* font name size */
-# #define ALTFONT "/usr/lib/wfont/special.8.ft" /* font file */
-# /*
-# * The file /usr/lib/wfont/special.8.ft comes with the
-# * standard PC software. It defines a graphics character set
-# * similar to that of the Teletype 5425 terminal. To view
-# * this or other fonts in /usr/lib/wfont, use the command
-# * 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 */
-# char altf_name[FNSIZE]; /* font name (file name) */
-# };
-# ldfont()
-# {
-# int wd; /* window in which altfont will be */
-# struct altfdata altf;
-# altf.altf_slot=1;
-# strcpy(altf.altf_name,ALTFONT);
-# for (wd =1; wd < 12; wd++) {
-# ioctl(wd, WIOCLFONT,&altf);
-# }
-# }
-#
-# (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,
-
-# Sent by Stefan Stapelberg <stefan@rent-a-guru.de>, 24 Feb 1997, this is
-# from SGI's terminfo database. SGI's entry shows F9-F12 with the codes
-# for the application keypad mode. We have added iris-ansi-ap rather than
-# change the original to keypad mode.
-#
-# (iris-ansi: added rmam/smam based on init string -- esr)
-#
-# This entry, and those derived from it, is used in xwsh (also known as
-# winterm). Some capabilities that do not fit into the terminfo model
-# include the shift- and control-functionkeys:
-#
-# F1-F12 generate different codes when shift or control modifiers are used.
-# For example:
-# F1 \E[001q
-# shift F1 \E[013q
-# control-F1 \E[025q
-#
-# In application keypad mode, F9-F12 generate codes like vt100 PF1-PF4, i.e.,
-# \EOP to \EOS. The shifted and control modifiers still do the same thing.
-#
-# The cursor keys also have different codes:
-# control-up \E[162q
-# control-down \E[165q
-# control-left \E[159q
-# control-right \E[168q
-#
-# shift-up \E[161q
-# shift-down \E[164q
-# shift-left \E[158q
-# shift-right \E[167q
-#
-# control-tab \[072q
-#
-iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100),
- am,
- cols#80, it#8, lines#40,
- bel=^G, bold=\E[1m, clear=\E[H\E[2J,
- 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, 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
-# McIntosh at UCB/CSM. The :pt: and :uc: have been removed from the original,
-# (the former is untrue, and the latter failed under UCB/man); standout and
-# 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,
-
-# (ibmpcx: this entry used to be known as ibmx.
-# It formerly included the following extension capabilities:
-# :GC=b:GL=v:GR=t:RT=^J:\
-# :GH=\E[196g:GV=\E[179g:\
-# :GU=\E[193g:GD=\E[194g:\
-# :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\
-# :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\
-# :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\
-# 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+sgr8,
-
#### QNX
#
@@ -1649,6 +1997,204 @@ qansi-m|QNX ansi with mouse,
qansi-w|QNX ansi for windows,
xvpa, use=qansi-m,
+#### SCO consoles
+
+# SCO console and SOS-Syscons console for 386bsd
+# (scoansi: had unknown capabilities
+# :Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\
+# :GC=E:GD=B:GH=D:GL=\64:GU=A:GV=\63:GR=C:
+# :G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\
+# :CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\
+# :WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\
+# I renamed GS/GE/HM/EN/PU/PD/RT and added klone+sgr-dumb, based
+# on the <smacs>=\E[12m -- esr)
+#
+# klone+sgr-dumb is an error since the acsc does not match -TD
+#
+# In this description based on SCO's keyboard(HW) manpage list of default
+# function key values:
+# F13-F24 are shifted F1-F12
+# F25-F36 are control F1-F12
+# F37-F48 are shift+control F1-F12
+#
+# hpa/vpa work in the console, but not in scoterm:
+# hpa=\E[%p1%dG,
+# vpa=\E[%p1%dd,
+#
+# SCO's terminfo uses
+# kLFT=\E[d,
+# kRIT=\E[c,
+# 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.\2310[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%e;10%;m,
+ smgb=\E[=1;0m, smgbp=\E[=1;%i%p1%dm,
+ smglp=\E[=2;%i%p1%dm, smgr=\E[=3;0m,
+ smgrp=\E[=3;%i%p1%dm, smgt=\E[=0;0m,
+ 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,
+
+#### SGI consoles
+
+# Sent by Stefan Stapelberg <stefan@rent-a-guru.de>, 24 Feb 1997, this is
+# from SGI's terminfo database. SGI's entry shows F9-F12 with the codes
+# for the application keypad mode. We have added iris-ansi-ap rather than
+# change the original to keypad mode.
+#
+# (iris-ansi: added rmam/smam based on init string -- esr)
+#
+# This entry, and those derived from it, is used in xwsh (also known as
+# winterm). Some capabilities that do not fit into the terminfo model
+# include the shift- and control-functionkeys:
+#
+# F1-F12 generate different codes when shift or control modifiers are used.
+# For example:
+# F1 \E[001q
+# shift F1 \E[013q
+# control-F1 \E[025q
+#
+# In application keypad mode, F9-F12 generate codes like vt100 PF1-PF4, i.e.,
+# \EOP to \EOS. The shifted and control modifiers still do the same thing.
+#
+# The cursor keys also have different codes:
+# control-up \E[162q
+# control-down \E[165q
+# control-left \E[159q
+# control-right \E[168q
+#
+# shift-up \E[161q
+# shift-down \E[164q
+# shift-left \E[158q
+# shift-right \E[167q
+#
+# control-tab \[072q
+#
+iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100),
+ am,
+ cols#80, it#8, lines#40,
+ bel=^G, bold=\E[1m, clear=\E[H\E[2J,
+ 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, use=vt100+enq, use=klone+color,
+ use=iris-ansi-ap,
+
+#### OpenBSD consoles
+#
+# From: Alexei Malinin <Alexei.Malinin@mail.ru>; October, 2011.
+#
+# The following terminal descriptions for the AMD/Intel PC console
+# were prepared based on information contained in the OpenBSD-4.9
+# termtypes.master and wscons(4) & vga(4) manuals (2010, November).
+#
+# Added bce based on testing with tack -TD
+# Added several capabilities to pccon+base, reading wsemul_vt100_subr.c -TD
+# Changed kbs to DEL and removed keys that duplicate stty settings -TD
+#
+pccon+keys|OpenBSD PC keyboard keys,
+ kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kend=\E[8~, kent=^M, kf1=\E[11~, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf2=\E[12~, kf3=\E[13~,
+ kf4=\E[14~, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
+ kf9=\E[20~, khome=\E[7~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ krfr=^R,
+pccon+sgr+acs0|sgr and simple ASCII pseudographics for OpenBSD PC console,
+ acsc=+>\,<-\^.v0#`+a\:f\\h#i#j+k+l+m+n+o~p-q-r-s_t+u+v+w+x|y#z#{*|!}#~o,
+ sgr=\E[0%?%p1%p3%|%t;7%;m, sgr0=\E[m,
+pccon+sgr+acs|sgr and default ASCII pseudographics for OpenBSD PC console,
+ acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ enacs=\E)0$<5>, rmacs=\E(B$<5>,
+ sgr=\E[0%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<5>,
+ sgr0=\E[m\E(B$<5>, smacs=\E(0$<5>,
+pccon+colors|ANSI colors for OpenBSD PC console,
+ bce,
+ colors#8, pairs#64,
+ op=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+pccon+base|base capabilities for OpenBSD PC console,
+ am, km, mc5i, msgr, npc, nxon, xenl, xon,
+ cols#80, it#8, lines#24,
+ bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP,
+ dch1=\E[P, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+ el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+ il1=\E[L, ind=\ED, nel=\EE, rev=\E[7m, ri=\EM, rmam=\E[?7l,
+ rmso=\E[m, rs2=\Ec$<50>, smam=\E[?7h, smso=\E[7m,
+ tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
+pccon0-m|OpenBSD PC console without colors & with simple ASCII pseudographics,
+ use=pccon+base, use=pccon+sgr+acs0, use=pccon+keys,
+pccon0|OpenBSD PC console with simple ASCII pseudographics,
+ use=pccon0-m, use=pccon+colors,
+pccon-m|OpenBSD PC console without colors,
+ use=pccon+base, use=pccon+sgr+acs, use=pccon+keys,
+pccon|OpenBSD PC console,
+ use=pccon-m, use=pccon+colors,
+
#### NetBSD consoles
#
# pcvt termcap database entries (corresponding to release 3.31)
@@ -1786,7 +2332,7 @@ x68k|x68k-ite|NetBSD/x68k ITE,
ofcons|DNARD OpenFirmware console,
bw,
cols#80, lines#30,
- bel=^G, blink=\2337;2m, bold=\2331m, clear=^L, cr=^M,
+ bel=^G, blink=\2335m, 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,
@@ -1798,8 +2344,8 @@ ofcons|DNARD OpenFirmware console,
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,
+ sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t2%;%?%p7%t8%;%?%p1%p3%|%t;7%;m,
+ sgr0=\2330m, smso=\2337m, smul=\2334m,
# NetBSD "wscons" emulator in vt220 mode.
# This entry is based on the NetBSD termcap entry, correcting the ncv value.
@@ -1816,7 +2362,8 @@ ofcons|DNARD OpenFirmware console,
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~,
+ civis=\E[?25l, cnorm=\E[?25h, is2=\E[r\E[25;1H,
+ kdch1=\E[3~, 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, rs1=\Ec,
@@ -1825,6 +2372,43 @@ wsvt25|NetBSD wscons in 25 line DEC VT220 mode,
wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta,
km, use=wsvt25,
+# NetBSD 6.x still uses wscons, with minor changes (2014/02/22) -TD
+#
+# TERM is by default vt100 for the console, wsvt25 for other ttys.
+# Initial testing set TERM=xterm, based on comments by developers, found too
+# many differences to continue in that path. However, test-results may be
+# useful to people curious about compatibility with xterm.
+#
+# Testing with tack:
+# -----------------
+# Failed: cbt, bel, flash, cvvis, smul (color), blink, invis
+# There is color-bleeding in the color-pairs screen.
+# Attributes do not work with color
+# Failed: vpa/hpa
+# Failed: kf1-kf4, kf13-kf48, khome, kend
+# (effectively xterm-r6 for function-keys)
+# None of the function or cursor key-modifiers are encoded.
+# Console hangs in the smm/rmm test if TERM=xterm, does not show test
+#
+# Testing with vttest:
+# -------------------
+# Identifies as vt220 with selective erase
+# (however, selective erase refers to DECSCA, SPA)
+# Does not implement vt52
+# Uses spaces to simulate double-size characters
+# Does not support 8-bit controls
+# Does not support VT220 reports
+# Does not support send/receive mode
+# Supports ECH (like rxvt)
+# Does not support DECSCA
+# Does not support any of the ISO-6429 cursor-movement
+# Does not support any of the ISO-6429 miscellaneous tests
+# (SL/SR also leave unexpected char on screen too)
+# Background does not change in menu 11.6.9 (SGR 22-27)
+# None of the xterm special features tests work
+netbsd6|NetBSD wscons in 25 line DEC VT100 mode,
+ kbs=\177, use=wsvt25,
+
# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and
# DECstation/pmax.
rcons|BSD rasterconsole,
@@ -1976,6 +2560,52 @@ cons60l1|cons60-iso|freebsd console w/iso 8859-1 chars (60 lines),
cons60l1-m|cons60-iso-m|freebsd console w/iso 8859-1 chars (60-line mono),
lines#60, use=cons25l1-m,
+# Starting with FreeBSD 8, an alternative configuration for syscons is provided,
+# which is intended to be xterm-compatible. See for example
+# http://svnweb.freebsd.org/base/stable/8/sys/dev/syscons/
+# in particular scterm-teken.c
+#
+# For FreeBSD 9 and 10:
+# --------------------
+# The /etc/ttys entries for console and other ttys are all configured to set
+# TERM=xterm.
+#
+# Testing with tack:
+# There is no VT100 line-drawing (uses +'s and -'s)
+# Shifted f1-f12 give cons25 codes, rather than xterm function-keys
+#
+# Testing with vttest:
+# Menu 2 diamonds don't work, blink ditto, light background ditto
+# The terminal identifies itself as VT100 with AVO
+# There is no VT52 support
+# There is no doublesize character support
+# The terminal supports ECH (like rxvt)
+# The terminal does not support send/receive mode
+# The terminal supports all of the ISO-6429 cursor-movement
+# The terminal supports some of the ISO-6429 miscellaneous tests
+# (SL/SR also leave unexpected char on screen too)
+#
+# Considering cons25 as a base, the line-drawing mostly works, but is missing
+# the cells which happen to have ASCII control-character values:
+# - ^X arrow pointing up
+# . ^Y arrow pointing down
+# i ^Y lantern
+# ` ^D diamond
+#
+# Those are removed from this entry's acsc string to avoid confusion.
+# The resulting description provides correct line-drawing and function-keys -TD
+teken|syscons with teken,
+ bw@, mir, xenl,
+ acsc=0\333a\260f\370g\361h\261j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~\371,
+ civis=\E[?25l, cnorm=\E[?25h, cvvis@, hpa=\E[%i%p1%dG,
+ hts=\EH, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kend=\E[F, kent=^M, kf1=\EOP, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmir=\E[4l,
+ smir=\E[4h, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
+ u8=\E[?1;2c, u9=\E[c, vpa=\E[%i%p1%dd, use=cons25,
+
#### 386BSD and BSD/OS Consoles
#
@@ -2044,6 +2674,7 @@ bsdos-sparc|Sun SPARC BSD/OS Console,
bsdos-ppc|PowerPC BSD/OS Console,
use=bsdos-pc,
+
#### DEC VT52
# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
#
@@ -2377,8 +3008,9 @@ vt132|DEC vt132,
# with the key marked (ESC) on the vt220. See vt220d for an alternate mapping.
# PF1--PF4 are used as F1--F4.
#
+# added msgr -TD
vt220-old|vt200-old|DEC VT220 in vt100 emulation mode,
- OTbs, OTpt, am, mir, xenl, xon,
+ OTbs, OTpt, am, mir, msgr, xenl, xon,
cols#80, lines#24, vt#3,
OTnl=^J,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
@@ -2404,8 +3036,15 @@ vt220-old|vt200-old|DEC VT220 in vt100 emulation mode,
# 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
+#
+# Here's a picture of the VT220 editing keypad:
+# +--------+--------+--------+
+# | Find | Insert | Remove |
+# +--------+--------+--------+
+# | Select | Prev | Next |
+# +--------+--------+--------+
vt220|vt200|dec vt220,
- OTbs, am, mc5i, mir, msgr, xenl, xon,
+ OTbs, am, mir, msgr, xenl, xon,
cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
@@ -2417,20 +3056,21 @@ vt220|vt200|dec vt220,
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,
+ is2=\E[?7h\E[>\E[?1l\E F\E[?4l, kbs=^H, 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~, 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,
+ 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,
+ smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+pp,
+ use=ansi+enq,
vt220-w|vt200-w|DEC vt220 in wide mode,
cols#132,
rs3=\E[?3h, use=vt220,
@@ -2447,18 +3087,18 @@ vt220-8bit|vt220-8|vt200-8bit|vt200-8|dec vt220/200 in 8-bit mode,
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,
+ is2=\233?7h\233>\233?1l\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,
+ kdch1=\2333~, 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,
@@ -2495,14 +3135,15 @@ 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)
+# added msgr -TD
vt200-js|vt220-js|dec vt200 series with jump scroll,
- am,
+ am, msgr,
cols#80,
bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
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,
+ is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1h\E[?5l\E[?6l\E[?7h\E[?8h\E[?25h\E>\E[m,
kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=^M\ED, rc=\E8,
rf=/usr/share/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l,
@@ -2534,7 +3175,7 @@ vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode,
# 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,
+ am, hs, mir, msgr, xenl,
cols#80, lines#24, wsl#80,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
@@ -2543,9 +3184,8 @@ vt320|vt300|dec vt320 7 bit terminal,
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,
+ ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I,
+ hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H,
kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
kdch1=\E[3~, kel=\E[4~, kf10=\E[21~, kf11=\E[23~,
@@ -2553,8 +3193,7 @@ vt320|vt300|dec vt320 7 bit terminal,
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,
+ kpp=\E[5~, kprv=\E[Z, kslt=\E[4~, 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,
@@ -2563,7 +3202,7 @@ vt320|vt300|dec vt320 7 bit terminal,
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,
+ use=dec+pp, use=vt220+keypad, use=dec+sl, use=ansi+enq,
vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy,
am@,
is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H,
@@ -2673,33 +3312,38 @@ vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap,
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,
+ tsl=\E[2$~\E[1$}\E[1;%dH, use=dec+sl,
# (vt420: I removed <kf0>, it collided with <kf10>. I also restored
# a missing <sc> -- esr)
+# add msgr and other capabilities from vt220 -TD
vt420|DEC VT420,
- am, mir, xenl, xon,
- cols#80, lines#24, vt#3,
+ 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[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>,
+ 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, 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$<10>, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M,
+ ech=\E[%p1%dX, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K,
+ enacs=\E)0, flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I,
+ hts=\EH, ich=\E[%p1%d@, if=/usr/share/tabset/vt300,
+ il=\E[%p1%dL, 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~, nel=\EE,
+ 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,
+ rmso=\E[27m, rmul=\E[24m, rs3=\E[?67h\E[64;1"p, sc=\E7,
sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
- sgr0=\E[m$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
- smkx=\E=, smso=\E[7m, smul=\E[4m,
+ sgr0=\E[m\E(B$<2>, smacs=\E(0$<2>, smam=\E[?7h,
+ smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+ use=ansi+pp, use=dec+sl, use=ansi+enq,
# 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
@@ -2772,58 +3416,11 @@ vt510pcdos|DEC VT510 w/PC for DOS Merge,
# terminal mode is being used. If Set-Up has been disabled or
# 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,
+ use=ansi+rca, use=vt420, use=ansi+tabs,
-# (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,
+ use=vt520,
#### VT100 emulations
#
@@ -2887,7 +3484,7 @@ crt|crt-vt220|CRT 2.3 emulating VT220,
# the default behavior -TD
putty|PuTTY terminal emulator,
- am, bce, bw, ccc, hs, mir, msgr, xenl, xon, XT,
+ am, bce, bw, ccc, mir, msgr, xenl, xon, XT,
colors#8, it#8, ncv#22, pairs#64, U8#1,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
@@ -2897,11 +3494,10 @@ putty|PuTTY terminal emulator,
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,
+ dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+ el1=\E[1K, enacs=\E(B\E)0, flash=\E[?5h\E[?5l, home=\E[H,
+ hpa=\E[%i%p1%dG, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L,
+ ind=^J, indn=\E[%p1%dS,
initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R,
kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
@@ -2922,7 +3518,8 @@ putty|PuTTY terminal emulator,
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,
+ tbc=\E[3g, vpa=\E[%i%p1%dd, E3=\E[3;J, use=vt102+enq,
+ use=xterm+sl,
vt100-putty|Reset PuTTY to pure vt100,
rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p,
use=vt100,
@@ -2937,6 +3534,28 @@ putty-vt100|VT100+ keyboard layout,
kf3=\EOR, kf4=\EOS, kf5=\EOT, kf6=\EOU, kf7=\EOV, kf8=\EOW,
kf9=\EOX, use=putty,
+# Unlike xterm-sco, this leaves kmous ambiguous with kf1.
+#
+# Use modifiers to obtain function keys past 12:
+# F1-F12 - normal
+# F13-F24 - shift
+# F25-F36 - control/alt
+# F37-F48 - control/shift
+#
+putty-sco|putty 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, knp=\E[G, kpp=\E[I, 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
# (communication program) which supports:
@@ -3091,7 +3710,8 @@ tt|tkterm|Don Libes' tk text widget terminal emulator,
kf9=\EOX, rmkx=\E[?1l\E>, rmso=\E[m, smkx=\E[?1h\E,
smso=\E[7m,
-#### X terminal emulators
+######## X TERMINAL EMULATORS
+#### XTERM
#
# You can add the following line to your .Xdefaults to change the terminal type
# set by the xterms you start up to my-xterm:
@@ -3154,7 +3774,7 @@ xterm-r5|xterm R5 version,
# 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,
+xterm-r6|xterm X11R6 version,
OTbs, am, km, mir, msgr, xenl,
cols#80, it#8, lines#24,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
@@ -3180,10 +3800,12 @@ xterm-r6|xterm-old|xterm X11R6 version,
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,
+xterm-old|antique xterm version,
+ use=xterm-r6,
# This is the base xterm entry for the xterm supplied with XFree86 3.2 & up.
# The name has been changed and some aliases have been removed.
xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System),
- OTbs, am, bce, km, mir, msgr, xenl,
+ OTbs, am, bce, km, mir, msgr, xenl, XT,
cols#80, it#8, lines#24, ncv@,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
@@ -3227,13 +3849,13 @@ xterm-xf86-v33|xterm terminal emulator (XFree86 3.3 Window System),
# 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>,
+ rmcup=\E[?1047l\E[?1048l, rs1=\Ec,
+ rs2=\E[!p\E[?3;4l\E[4l\E>,
sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- smcup=\E[?1048h\E[?1047h, use=xterm-xf86-v33,
+ smcup=\E[?1048h\E[?1047h, use=ansi+pp,
+ use=xterm-xf86-v33,
# This version was released in XFree86 4.0.
xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System),
@@ -3274,12 +3896,14 @@ xterm-xfree86|xterm terminal emulator (XFree86),
# 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~, kNXT=\E[6;2~, kPRV=\E[5;2~, kb2=\EOE,
- kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kend=\EOF, kent=\EOM, khome=\EOH, kich1=\E[2~, kmous=\E[M,
- knp=\E[6~, kpp=\E[5~, rin=\E[%p1%dT, use=xterm+pcfkeys,
+ indn=\E[%p1%dS, kb2=\EOE, kcbt=\E[Z, kent=\EOM,
+ rin=\E[%p1%dT, use=xterm+pcfkeys, use=xterm+tmux,
use=xterm-basic,
+
+# This fragment is for people who cannot agree on what the backspace key
+# should send.
+xterm+kbs|fragment for backspace key,
+ kbs=^H,
#
# This fragment describes as much of XFree86 xterm's "pc-style" function
# keys as will fit into terminfo's 60 function keys.
@@ -3445,7 +4069,7 @@ xterm+r6f2|xterm with oldFunctionKeys and modifyFunctionKeys:2,
#
# This chunk is used for building the VT220/Sun/PC keyboard variants.
xterm-basic|modern xterm terminal emulator - common,
- OTbs, am, bce, km, mc5i, mir, msgr, xenl, AX,
+ OTbs, am, bce, km, mir, msgr, xenl, AX, XT,
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,
@@ -3457,19 +4081,20 @@ xterm-basic|modern xterm terminal emulator - common,
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,
- 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,
+ ind=^J, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>,
+ kmous=\E[M, meml=\El, memu=\Em, op=\E[39;49m, rc=\E8,
+ rev=\E[7m, ri=\EM, rmacs=\E(B, rmam=\E[?7l,
+ rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>,
+ 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,
+ smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, E3=\E[3;J,
+ use=ansi+pp, use=xterm+kbs, use=vt100+enq,
# From: David J. MacKenzie <djm@va.pubnix.com>, 14 Nov 1997
# In retrospect, something like xterm-r6 was intended here -TD
@@ -3522,11 +4147,38 @@ xterm-88color|xterm with 88 colors,
# 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,
+xterm+sm+1002|testing xterm-mouse,
XM=\E[?1002%?%p1%{1}%=%th%el%;, use=xterm-new,
-xterm-1003|testing xterm-mouse,
+xterm+sm+1003|testing xterm-mouse,
XM=\E[?1003%?%p1%{1}%=%th%el%;, use=xterm-new,
+xterm-1002|testing xterm-mouse,
+ use=xterm+sm+1002, use=xterm-new,
+xterm-1003|testing xterm-mouse,
+ use=xterm+sm+1003, use=xterm-new,
+
+# This chunk is based on suggestions by Ailin Nemui and Nicholas Marriott, who
+# asked for some of xterm's advanced features to be added to its terminfo
+# entry. It defines extended capabilities not found in standard terminfo or
+# termcap. These are useful in tmux, for instance, hence the name.
+#
+# One caveat in adding extended capabilities in ncurses is that if the names
+# are longer than two characters, then they will not be visible through the
+# termcap interface.
+#
+# Ms modifies the selection/clipboard. Its parameters are
+# p1 = the storage unit (clipboard, selection or cut buffer)
+# p2 = the base64-encoded clipboard content.
+#
+# Ss is used to set the cursor style as described by the DECSCUSR
+# function to a block or underline.
+# Se resets the cursor style to the terminal power-on default.
+#
+# Cs and Cr set and reset the cursor colour.
+xterm+tmux|advanced xterm features used in tmux,
+ Cr=\E]112\007, Cs=\E]12;%p1%s\007,
+ Ms=\E]52;%p1%s;%p2%s\007, Se=\E[2 q, Ss=\E[%p1%d q,
+
# This is another variant, for XFree86 4.0 xterm (T.Dickey)
# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color.
# To use it, your decTerminalID resource must be set to 200 or above.
@@ -3552,8 +4204,8 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
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,
+ ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kc1=\217q,
+ kc3=\217s, kcbt=\233Z, kcub1=\217D, kcud1=\217B,
kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~,
kent=\217M, kf1=\23311~, kf10=\23321~, kf11=\23323~,
kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~,
@@ -3575,6 +4227,7 @@ xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
smcup=\233?1049h, smir=\2334h, smkx=\233?1h\E=,
smso=\2337m, smul=\2334m, tbc=\2333g, u6=\233[%i%d;%dR,
u7=\E[6n, u8=\233[?1;2c, u9=\E[c, vpa=\233%i%p1%dd,
+ use=xterm+kbs,
xterm-hp|xterm with hpterm function keys,
kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA,
@@ -3621,8 +4274,9 @@ xterm-vt52|xterm emulating dec vt52,
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,
+ home=\EH, ht=^I, ind=^J, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
+ kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF,
+ use=xterm+kbs,
xterm-noapp|xterm with cursor keys in normal mode,
rmcup@, rmkx=\E>, smcup@, smkx=\E=, use=xterm+noapp,
@@ -3640,25 +4294,71 @@ xterm|xterm terminal emulator (X Window System),
xterm-utf8|xterm with no VT100 line-drawing in UTF-8 mode,
U8#1, use=xterm,
-# 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.
+# These building-blocks allow access to the X titlebar and icon name as a
+# status line. There are a few problems in using them in entries:
+#
+# a) tsl should have a parameter to denote the column on which to transfer to
+# the status line.
+# b) the "0" code for xterm updates both icon-title and window title. Some
+# window managers such as 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 icon-name when using those window managers.
+#
+# The extension "TS" is preferable, because it does not accept a parameter.
+# However, if you are using a non-extended terminfo, "TS" is not visible.
xterm+sl|access X title line and icon name,
hs,
- wsl#40,
- dsl=\E]0;\007, fsl=^G, tsl=\E]0;, use=xterm,
+ dsl=\E]0;\007, fsl=^G, tsl=\E]0;, TS=\E]0;,
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,
+ dsl=\E]2;\007, fsl=^G, tsl=\E]2;, TS=\E]2;,
+
+# In contrast, this block can be used for a DEC vt320 and up. There are two
+# controls used.
+#
+# DECSASD (select active status display)
+# \E[0$} Main display
+# \E[1$} Status line
+#
+# DECSSDT (select status line type)
+# \E[0$~ No status line
+# \E[1$~ Indicator status line
+# \E[2$~ Host-writable status line
+#
+# The building block assumes that the terminal always shows something at the
+# status line (either the indicator, or status line). That is because if no
+# status line is used, then the terminal makes that line part of the user
+# window, changing its size without notice.
+#
+# Because there is no "esl" (enable status line) capability, the "tsl"
+# capability ensures that the status line is host-writable. A DEC terminal
+# will clear the status line when changing from indicator to host-writable
+# mode.
+#
+# Once on the status line, the row part of cursor addressing is ignored. Since
+# tsl expects a parameter (to specify the column), the shortest addressing that
+# can be used for this purpose is HPA, e.g., \E[5d to go to column 5.
+#
+dec+sl|DEC VTxx status line,
+ eslok, hs,
+ dsl=\E[1$~, fsl=\E[0$}, tsl=\E[2$~\E[1$}\E[%i%p1%d`,
#
# 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,
+ sgr=%?%p9%t\016%e\017%;B\E[0%?%p6%t;1%;%?%p2%t;1%;%?%p1%p3%|%t;7%;m,
smso=\E[7m, smul=\E[1m, use=xterm-old,
+
+# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file
+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,
+
+#### KTERM
# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr)
# (kterm should not invoke DEC Graphics as the alternate character set
# -- Kenji Rikitake)
@@ -3676,12 +4376,51 @@ kterm|kterm kanji terminal emulator (X window system),
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,
+
+#### Other XTERM
+# These (xtermc and xtermm) are distributed with Solaris. They refer to a
+# variant of xterm which is apparently no longer supported, but are interesting
+# because they illustrate SVr4 curses mouse controls - T.Dickey
+xtermm|xterm terminal emulator (monocrome),
+ 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[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,
+ 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,
+ wsl#40,
+ bold=\E[1;43m, rev=\E[7;34m,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1;43%;%?%p2%t;4;42%;%?%p1%t;7;31%;%?%p3%t;7;34%;%?%p4%t;5%;%?%p7%t;8%;m,
+ smso=\E[7;31m, smul=\E[4;42m, use=xterm+sl, use=xterm-r6,
# This describes the capabilities of color_xterm, an xterm variant from
# before ECMA-64 color support was folded into the main-line xterm release.
@@ -3729,6 +4468,32 @@ xterm-color|nxterm|generic color xterm,
ncv@,
op=\E[m, use=xterm-r6, use=klone+color,
+# 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>.
+# 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, 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,
+
+#### GNOME (VTE)
# this describes the alpha-version of Gnome terminal shipped with Redhat 6.0
gnome-rh62|Gnome terminal,
bce,
@@ -3782,7 +4547,7 @@ gnome-rh80|GNOME Terminal,
#
# bce and msgr are repaired.
gnome-rh90|GNOME Terminal,
- bce, msgr,
+ bce, msgr, XT,
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,
@@ -3820,6 +4585,19 @@ vte-2008|VTE in GNOME Terminal snapshot 2.22.3,
gnome-2008|GNOME Terminal snapshot 2.22.3,
use=vte-2008,
+# GNOME Terminal 3.6.0 (2012)
+# VTE 0.34.1 was marked in git 2012-10-15 (three days after patch was applied
+# in ncurses). It inherited from gnome-fc5, which broke the modified forms
+# of f1-f4 -TD
+#
+# Testing with tack shows that flash does not/has not worked -TD
+vte-2012|VTE 0.34.1,
+ flash@, ritm=\E[23m, sitm=\E[3m, use=vte-2008,
+# Version 3.6.1 sets TERM to xterm-256color (still hardcoded), which has
+# 61 differences from a correct entry for gnome terminal.
+gnome-2012|GNOME Terminal 3.6.0,
+ use=vte-2012,
+
# GNOME terminal may automatically use the contents of the "xterm" terminfo to
# supply key information which is not built into the program. With 2.22.3,
# this list is built into the program (which addresses the inadvertant use of
@@ -3848,13 +4626,13 @@ gnome+pcfkeys|VTE's variation on xterm+pcfkeys,
use=vte+pcfkeys,
vte|VTE aka GNOME Terminal,
- use=vte-2008,
+ use=vte-2012,
gnome|GNOME Terminal,
use=vte,
# palette is hardcoded...
vte-256color|VTE with xterm 256-colors,
- initc@, use=xterm+256color, use=vte,
+ use=xterm+256color, use=vte,
gnome-256color|GNOME Terminal with xterm 256-colors,
use=vte-256color,
@@ -3865,8 +4643,9 @@ gnome-256color|GNOME Terminal with xterm 256-colors,
# 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=vte,
+ use=vte-2008,
+#### Other GNOME
# Multi-Gnome-Terminal 1.6.2
#
# This does not use VTE, and does have different behavior (compare xfce and
@@ -3874,6 +4653,7 @@ xfce|Xfce Terminal,
mgt|Multi GNOME Terminal,
indn=\E[%p1%dS, rin=\E[%p1%dT, use=xterm-xf86-v333,
+#### KDE
# This is kvt 0-18.7, shipped with Redhat 6.0 (though whether it supports bce
# or not is debatable).
kvt|KDE terminal,
@@ -3922,7 +4702,7 @@ konsole-base|KDE console window,
ncv@,
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@,
+ hpa=\E[%i%p1%dG, indn=\E[%p1%dS, kbs=\177, kdch1=\E[3~,
kend=\E[4~, kf1@, kf10@, kf11@, kf12@, kf13@, kf14@, kf15@, kf16@,
kf17@, kf18@, kf19@, kf2@, kf20@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@,
kf9@, kfnd@, khome=\E[1~, kslt@, rin=\E[%p1%dT, rmam=\E[?7l,
@@ -3932,11 +4712,10 @@ konsole-base|KDE console window,
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,
+ 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
@@ -3972,6 +4751,7 @@ konsole|KDE console window,
konsole-256color|KDE console window with xterm 256-colors,
initc@, use=xterm+256color, use=konsole,
+#### MLTERM
# This is mlterm 2.9.3's mlterm.ti, with some additions/corrections -TD
#
# It is nominally a vt102 emulator, with features borrowed from rxvt and
@@ -4037,6 +4817,7 @@ mlterm+pcfkeys|fragment for PC-style fkeys,
mlterm-256color|mlterm 3.0 with xterm 256-colors,
use=xterm+256color, use=rxvt,
+#### RXVT
# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
# Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
# Notes:
@@ -4208,6 +4989,7 @@ rxvt-cygwin-native|rxvt terminal emulator (native MS Window System port) on cygw
rxvt-16color|xterm with 16 colors like aixterm,
ncv#32, use=ibm+16color, use=rxvt,
+#### MRXVT
# mrxvt 0.5.4
#
# mrxvt is based on rxvt 2.7.11, but has by default XTERM_FKEYS defined, which
@@ -4225,6 +5007,7 @@ mrxvt|multitabbed rxvt,
mrxvt-256color|multitabbed rxvt with 256 colors,
use=xterm+256color, use=mrxvt,
+#### ETERM
# From: Michael Jennings <mej@valinux.com>
#
# Eterm 0.9.3
@@ -4270,11 +5053,13 @@ Eterm-256color|Eterm with xterm 256-colors,
Eterm-88color|Eterm with 88 colors,
use=xterm+88color, use=Eterm,
+#### ATERM
# Based on rxvt 2.4.8, it has a few differences in key bindings
aterm|AfterStep terminal,
XT,
kbs=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=rxvt,
+#### XITERM
# xiterm 0.5-5.2
# This is not based on xterm's source...
# vttest shows several problems with keyboard, cursor-movements.
@@ -4283,48 +5068,8 @@ 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[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,
- 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,
+#### HPTERM
# 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)
@@ -4357,31 +5102,7 @@ hpterm-color|HP X11 terminal emulator with color,
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>.
-# 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, 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,
-
+#### EMU
# This is for the extensible terminal emulator on the X11R6 contrib tape.
# It corresponds to emu's internal emulation:
# emu -term emu
@@ -4443,6 +5164,8 @@ emu-220|Emu-220 (vt200-7bit mode),
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,
+
+#### MVTERM
# 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.
@@ -4477,7 +5200,7 @@ mvterm|vv100|SwitchTerm aka mvTERM,
smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
tsl=\E[?E\E[?%i%p1%dT, use=vt100+fnkeys,
-### MTERM
+#### MTERM
#
# This application is available by email from <mouse@Rodents.Montreal.QC.CA>.
#
@@ -4598,6 +5321,123 @@ mgr-linux|Mgr window with Linux keyboard,
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,
+#### SIMPLETERM
+# st.suckless.org
+# st-0.1.1
+#
+# Note: the original terminfo description uses leading blank to persuade
+# ncurses to use "st" as its name. Proper fix for that is to use "st" as an
+# alias.
+#
+# Reading the code shows it should work for aixterm 16-colors
+# - added st-16color
+#
+# Using tack:
+# - set eo (erase-overstrike)
+# - set xenl
+# - tbc doesn't work
+# - hts works
+# - cbt doesn't work
+# - shifted cursor-keys send sequences like rxvt
+# - sgr referred to unimplemented "invis" mode.
+# Fixes: add eo and xenl per tack, remove nonworking cbt, hts and tbc, invis
+simpleterm|st| simpleterm,
+ am, eo, mir, msgr, ul, xenl,
+ colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
+ acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bel=^G, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[2J,
+ cnorm=\E[?12l\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
+ cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
+ dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K,
+ home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@,
+ il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, kbs=\177,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[1~, knp=\E[6~, kpp=\E[5~, op=\E[37;40m, rc=\E8,
+ rev=\E[7m, rmacs=\E(B, rmso=\E[m, rmul=\E[m, sc=\E7,
+ setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
+ sgr0=\E[0m, smacs=\E(0, smso=\E[7m, smul=\E[4m,
+st-16color|simpleterm with 16-colors,
+ use=ibm+16color, use=simpleterm,
+# 256 colors "works", but when running xterm's test-scripts, some garbage is
+# shown in the titlebar.
+st-256color|simpleterm with 256 colors,
+ ccc@,
+ initc@, use=xterm+256color, use=simpleterm,
+
+#### TERMINATOR
+# http://software.jessies.org/terminator/
+# Tested using their Debian package org.jessies.terminator 6.104.3256 on 64-bit
+# Debian/current -TD (2011/8/20)
+#
+# There are some packaging problems:
+# a) using Java, the program starts off using 50Mb, and climbs from there,
+# up to 114Mb after testing (no scrollback).
+# b) it insists on reinstalling its terminal description in $HOME/.terminfo
+# (two copies, just in case the host happens to be Mac OS X).
+# I deleted this after testing with tack.
+#
+# Issues/features found with tack:
+# a) tbc does not work (implying that hts also is broken).
+# Comparing with the tabs utility shows a problem with the last tabstop on
+# a line.
+# b) has xterm-style shifted function-key strings
+# meta also is used, but control is ignored.
+# c) has xterm-style modifiers for cursor keys (shift, control, shift+control, meta)
+# d) some combinations of shift/control send xterm-style sequences for
+# insert/delete/home/end.
+# e) numeric keypad sends only numbers (compare with vttest).
+# f) meta mode (km) is not implemented.
+#
+# Issues found with ncurses test-program:
+# a) bce is inconsistently implemented
+# b) widths of Unicode values above 256 do not always agree with wcwidth.
+#
+# Checked with vttest, found low degree of compatibility there.
+#
+# Checked with xterm's scripts, found that the 256-color palette is fixed.
+#
+# Fixes:
+# a) add sgr string
+# b) corrected sgr0 to reset alternate character set
+# c) modified smacs/rmacs to use SCS rather than SI/SO
+# d) removed bce
+# e) removed km
+terminator|Terminator no line wrap,
+ eo, mir, msgr, xenl, xon,
+ colors#256, cols#80, it#8, lines#24, lm#0, pairs#32767,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ bold=\E[1m, civis=\E[?25l, clear=\E[H\E[2J,
+ cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr,
+ cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J,
+ cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+ cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+ dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
+ enacs=\E(B\E)0, flash=^G, home=\E[H, hpa=\E[%i%p1%dG,
+ ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
+ is1=\E[?47l\E=\E[?1l,
+ is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kbs=^H,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~,
+ kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~,
+ kf15=\E[28~, kf16=\E[29~, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~,
+ op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B,
+ rmcup=\E[?47l\E8, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m,
+ rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H,
+ rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E>,
+ s0ds=\E(B, s1ds=\E(0, sc=\E7, setab=\E[48;5;%p1%dm,
+ setaf=\E[38;5;%p1%dm,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;,
+ sgr0=\E[m\E(B, smacs=\E(0, smcup=\E7\E[?47h, smir=\E[4h,
+ smso=\E[7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd,
+ use=xterm+sl-twm,
+
######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS
#
@@ -4621,6 +5461,8 @@ pty|4bsd pseudo teletype,
cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!,
smso=\Ea$, smul=\Ea!, use=cbunix,
+#### Emacs
+
# The codes supported by the term.el terminal emulation in GNU Emacs 19.30
eterm|gnu emacs term.el terminal emulation,
am, mir, xenl,
@@ -4656,6 +5498,8 @@ eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96,
sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
u6=\E[%i%d;%dR, u7=\E[6n,
+#### Screen
+
# 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
@@ -4780,7 +5624,7 @@ screen.xterm-xfree86|screen.xterm-new|screen customized for modern xterm,
bce@, bw,
invis@, kIC@, kNXT@, kPRV@, meml@, memu@,
sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m,
- use=screen+fkeys, use=xterm-new,
+ E3@, use=screen+fkeys, 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,
@@ -4885,6 +5729,8 @@ screen3|older VT 100/ANSI X3.64 virtual terminal,
sc=\E7, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m,
smul=\E[4m, tbc=\E[3g,
+#### NCSA Telnet
+
# Francesco Potorti <F.Potorti@cnuce.cnr.it>:
# NCSA telnet is one of the most used telnet clients for the Macintosh. It has
# been maintained until recently by the National Center for Supercomputer
@@ -4920,18 +5766,18 @@ screen3|older VT 100/ANSI X3.64 virtual terminal,
# 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,
+ am, km, mir, msgr, xenl,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M,
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*>,
+ dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J,
+ el=\E[K, el1=\E[1K, enacs=\E)0, flash=\E[?5h\E[?5l,
+ home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@,
+ if=/usr/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L,
+ ind=\n$<150*>,
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~,
@@ -4945,8 +5791,8 @@ ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode,
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,
+ smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+ u8=\E[?62;1;6c, use=xterm+sl, 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,
@@ -5064,10 +5910,10 @@ sun-il|Sun Microsystems console with working insert-line,
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,
+ kich1=\E[247z, 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.
@@ -5077,6 +5923,10 @@ sun-cgsix|sun-ss5|Sun SparcStation 5 console,
sun|sun1|sun2|Sun Microsystems Inc. workstation console,
use=sun-il,
+sun+sl|Sun Workstation window status line,
+ hs,
+ dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l,
+
# From: <john@ucbrenoir> Tue Sep 24 13:14:44 1985
sun-s|Sun Microsystems Workstation window with status line,
hs,
@@ -5130,12 +5980,13 @@ sun-type4|Sun Workstation console with type 4 keyboard,
# It supports bold, but not underline -TD (2009-09-19)
sun-color|Sun Microsystems Workstation console with color support (IA systems),
colors#8, ncv#3, pairs#64,
- cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
- cuu=\E[%p1%dA, home=\E[H, op=\E[0m, setab=\E[4%p1%dm,
- setaf=\E[3%p1%dm,
+ bold=\E[1m, cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
+ cuu=\E[%p1%dA, home=\E[H, op=\E[0m, rs2=\E[s,
+ setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
- use=sun,
+ sgr=\E[0%?%p6%t;1%;%?%p1%p3%|%t;7%;m, sgr0=\E[m,
+ smso=\E[7m, use=sun,
#### Iris consoles
#
@@ -5230,7 +6081,7 @@ news-unk|SONY NEWS vt100 emulator common entry,
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,
+ is2=\E[?7h\E[?1h\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,
@@ -5278,7 +6129,7 @@ news-old-unk|SONY NEWS vt100 emulator common entry,
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,
+ 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, 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,
@@ -5402,10 +6253,10 @@ dtterm|CDE desktop terminal,
sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ecma+color,
-#### Non-Unix Consoles
+######## Non-Unix Consoles
#
-### EMX termcap.dat compatibility modes
+#### EMX termcap.dat compatibility modes
#
# 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)
@@ -5458,6 +6309,8 @@ mono-emx|stupid monochrome ansi terminal with only one kind of emphasis,
kich1=\0R, kll=\0O, knp=\0Q, kpp=\0I, nel=^M^J, rev=\E[7m,
sgr0=\E[0m,
+#### Cygwin
+
# Use this for cygwin32 (tested with beta 19.1)
# underline is colored bright magenta
# shifted kf1-kf12 are kf11-kf22
@@ -5544,7 +6397,7 @@ cygwin|ansi emulation for Cygwin,
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,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m,
sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h,
smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];,
vpa=\E[%i%p1%dd, use=vt102+enq,
@@ -5579,10 +6432,12 @@ cygwinDBG|Debug Version for Cygwin,
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,
+ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m,
sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m,
smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt102+enq,
+#### DJGPP
+
# 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.
@@ -5749,6 +6604,8 @@ djgpp204|Entry for DJGPP 2.04,
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,
+#### U/Win
+
# 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
@@ -5772,6 +6629,8 @@ uwin|U/Win 3.2 console,
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,
+#### Microsoft (miscellaneous)
+
# This entry fits the Windows NT console when the _POSIX_TERM environment
# variable is set to 'on'. While the Windows NT POSIX console is seldom used,
# the Telnet client supplied with both the Windows for WorkGroup 3.11 TCP/IP
@@ -5825,7 +6684,7 @@ pcmw|PC running Microsoft Works,
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,
+ rc=\E8, rev=\E[7m$<2/>, rf=/usr/share/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/>,
@@ -5968,7 +6827,7 @@ altos2|alt2|altos-2|altos II,
# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r:
# :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:\
+# :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,
@@ -6183,7 +7042,7 @@ 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,
+ 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
@@ -6384,7 +7243,7 @@ hp2621b-kx-p|hp 2621b with new keyboard & printer,
hp2622|hp2622a|hp 2622,
da, db,
lm#0, pb#19200,
- is2=\E&dj@\r, use=hp+pfk+cr, use=hp+labels, use=scrhp,
+ 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,
@@ -7088,6 +7947,9 @@ qvt101|qvt108|qume qvt 101 and QVT 108,
# 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?)
+#
+# Added kdch1, kil1, kdl1 based on screenshot -TD:
+# http://www.vintagecomputer.net/qume/qvt-108/qume_qvt-108_keyboard.jpg
qvt101+|qvt101p|qume qvt 101 PLUS product,
am, bw, hs, ul,
cols#80, lines#24, xmc#0,
@@ -7096,11 +7958,11 @@ qvt101+|qvt101p|qume qvt 101 PLUS product,
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,
+ kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY,
+ kel=\ET, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r, kf3=^AB\r,
+ kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r,
+ kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, mc4=\EA, mc5=\E@,
+ 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)
@@ -8212,8 +9074,8 @@ tvi9065|televideo 9065,
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,
+ sgr=\EG0%?%p1%t\EGt%;%?%p2%t\EG8%;%?%p3%t\EG4%;%?%p4%t\EG2%;%?%p5%t\EGp%;%?%p6%t\EG\,%;%?%p7%t\EG1%;%?%p8%t\E&%;%?%p9%t\E$%e\E%%%;,
+ sgr0=\EG0\E%, smacs=\E$, smam=\E=7h, smcup=\E.2, smdc=\Er,
smir=\Eq, smln=\E[4;2v, smso=\EGt, smul=\EG8, smxon=^O,
tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0,
@@ -9726,7 +10588,7 @@ vt320-k3|MS-Kermit 3.00's vt320 emulation,
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,
+ is2=\E>\E F\E[?1h\E[?7h\E[r\E[2$~, kbs=^H, kcub1=\EOD,
kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdl1=\E[3~, kf0=\E[21~,
kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf6=\E[17~,
kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, kich1=\E[2~, knp=\E[6~,
@@ -9980,7 +10842,7 @@ att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1,
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%;,
+ sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m,
tsl=\E7\E[25;%p1%{1}%+%dH,
@@ -10078,7 +10940,7 @@ att4415|tty5420|att5420|AT&T 4415/5420 80 cols,
pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV,
rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l,
rmkx=\E[19;0j\E[21;1j\212, rmln=\E|,
- sgr=\E[0%?%p1%p5%|%t;2%;%?%p2%p6%|%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+ sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h,
smkx=\E[19;1j\E[21;4j\Eent, smln=\E~, tbc=\E[3g,
tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd,
@@ -10284,7 +11146,7 @@ att5425|tty5425|att4425|AT&T 4425/5425,
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%;,
+ sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6%|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;,
sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h,
smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~, smso=\E[7m,
smul=\E[4m, tbc=\E[3g, tsl=\E7\E[25;%p1%{8}%+%dH,
@@ -10681,7 +11543,7 @@ att620|AT&T 620; 80 column; 98key keyboard,
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%;,
+ sgr=\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\E)0\016%e\E(B\017%;,
sgr0=\E[m\E(B\017, smacs=\E)0\016, smam=\E[?7h,
smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m,
tsl=\E7\E[25;%i%p1%dx,
@@ -10741,7 +11603,7 @@ att630|AT&T 630 windowing terminal,
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,
+ sgr=\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%p4%|%t;7%;m,
sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m,
att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines,
lines#24, use=att630,
@@ -11391,7 +12253,7 @@ aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly),
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,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
sgr0=\E[m,
smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E\\,
smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
@@ -11401,13 +12263,13 @@ 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,
+ sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p2%|%p3%!%t7;%;%?%p7%t8;%;m\016,
sgr0=\E[7m\016, smso=\E[m, smul=\E[4;7m,
# Ambassador with the DEC option, for partial vt100 compatibility.
aaa+dec|ann arbor ambassador in dec vt100 mode,
acsc=aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}},
csr=\E[%i%p1%d;%p2%dr, enacs=\E(0, rmacs=^N,
- sgr=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;,
+ sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p3%|%!%t7;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;,
smacs=^O,
aaa-18|ann arbor ambassador/18 lines,
lines#18,
@@ -11574,7 +12436,7 @@ aaa-rv-unk|ann arbor unknown type,
blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m,
is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m,
rs1=\E[H\E[7m\E[J,
- sgr=\E[%?%p1%!%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m,
+ sgr=\E[%?%p6%t1;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p1%!%t7;%;%?%p7%t8;%;m,
sgr0=\E[7m, smso=\E[m, smul=\E[4;7m,
#### Applied Digital Data Systems (adds)
@@ -12416,7 +13278,7 @@ oc100|oconcept|c100-1p|old 1 page concept 100,
# 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,
+ am, bw, eslok, hs, km, 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+{,
@@ -12445,13 +13307,12 @@ hds200|Human Designed Systems HDS200,
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,
+ 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,
+ vpa=\E[%i%p1%dd, use=ansi+pp,
# <ht> through <el> included to specify padding needed in raw mode.
# (avt-ns: added empty <acsc> to suppress a tic warning --esr)
@@ -12478,10 +13339,11 @@ avt-ns|concept avt no status line,
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[3g, vpa=\E[%p1%{1}%+%dd,
+ sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;%?%p8%t99;%;m%?%p5%t\E[1!{%;%?%p9%t\017%e\016%;$<1>,
+ sgr0=\E[m\016$<1>, smacs=\017$<1>,
+ smcup=\E[=4l\E[1;24w\E2\r, smir=\E[4h,
+ smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
+ vpa=\E[%p1%{1}%+%dd,
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,
@@ -12763,7 +13625,6 @@ dg450|dg6134|data general 6134,
# backspace on all terminals. This is not so in DG mode.
# (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,
@@ -12774,10 +13635,12 @@ dg460-ansi|Data General Dasher 460 in ANSI-mode,
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,
+ kf8=\E[009z, kf9=\E[00\:z, khome=\E[H, lf0=f1, lf1=f2,
+ lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10,
+ mc0=\E[i, rev=\E[7m, ri=\E[T, rmso=\E[m, rmul=\E[05,
+ sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p5%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m,
+ sgr0=\E(B\E[m, smso=\E[7m, smul=\E[4m, u6=\E[%d;%dR,
+ u7=\E[6n, u8=\E[5n, u9=\E[0n,
# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official)
# Data General 605x
# Ought to work for a Model 6242, Type D210 as well as a 605x.
@@ -12824,7 +13687,7 @@ d210|d214|Data General DASHER D210 series,
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,
+ sgr=\E[%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;%?%p1%p3%|%p6%|%t7;%;m,
sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b,
# DASHER D210 series terminals in DG mode.
@@ -13026,7 +13889,7 @@ d410|d411|d460|d461|Data General DASHER D410/D460 series,
is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i,
ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h,
rs2=\E[4;0;2;1;1;1v\E(B\E)4,
- sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m\E)%?%p9%t6\016%e4\017%;,
+ sgr=\E[%?%p1%t2;7%;%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p1%p5%|%t2;%;%?%p6%t4;7;%;m\E)%?%p9%t6\016%e4\017%;,
sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211,
# Initialization string 2 sets:
@@ -13196,12 +14059,12 @@ d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrol
#
d470c|d470|Data General DASHER D470C,
is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
- sgr=\E[%?%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%;,
+ sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t2;7;%;%?%p5%t2;%;m\E)%?%p9%t6\016%e4\017%;,
use=dg+color, use=d460,
d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode,
is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h,
- sgr=\E[%?%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%;,
+ sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t2;7;%;%?%p5%t2;%;m%?%p9%t\016%e\017%;,
use=dg+color, use=d460-7b,
# Initialization string 2 sets:
@@ -13757,7 +14620,7 @@ superbeeic|super bee with insert char,
sb2|sb3|fixed superbee,
xsb@, use=superbee,
-#### Beehive Medical Electronics
+#### Beehive Medical Electronics
#
# Steve Seymour <srseymour@mindspring.com> writes (Wed, 03 Feb 1999):
# Regarding your question though; Beehive terminals weren't made by Harris.
@@ -14224,6 +15087,8 @@ lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device,
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,
+# "Megapel" refers to the display adapter, which was used with the IBM RT
+# aka IBM 6150.
ibm5081|hft|IBM Megapel Color display,
acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B,
s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154,
@@ -14578,7 +15443,7 @@ icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372,
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,
+ sgr=\E[%'0'%?%p1%t%'8'%|%;%?%p2%t%'8'%|%;%?%p3%t%'4'%|%;%?%p4%t%'2'%|%;%?%p7%t%'1'%|%;%cZZ,
sgr0=\E[0ZZ, smir=\Eq, smso=\E[8ZZ, smul=\E[8ZZ, tbc=\E3,
icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols,
rs2=\Eo1, use=icl6404,
@@ -14895,7 +15760,7 @@ prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode,
# (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,
+ am, bw, hs, msgr, xenl, xon,
cols#80, it#8, lines#24, vt#3, wsl#72,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[<4l,
clear=^L, cnorm=\E[<4h, cr=^M, csr=\E[%i%p1%d;%p2%d%%v,
@@ -14911,14 +15776,15 @@ prism9|p9|P9|MDC Prism-9 in ANSII mode,
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,
+ khome=\E[H, 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%;,
+ sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;m%?%p8%t\E[32%%{%;%?%p9%t\016%e\017%;,
sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m,
tbc=\E[3g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd,
+ use=ansi+pp,
# p9-w: Prism-9 in 132 column mode
# --------------------------------
@@ -15282,7 +16148,7 @@ ncr260vt100an|NCR 2900_260 vt100 with ansi kybd,
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>,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h,
smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g,
tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, use=vt220+keypad,
@@ -15339,7 +16205,7 @@ ncr260vt200an|NCR 2900_260 vt200 with ansi kybd,
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>,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
@@ -15395,7 +16261,7 @@ ncr260vt300an|NCR 2900_260 vt300 with ansi kybd,
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>,
+ sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>,
sgr0=\E[0m\017$<20>, smacs=\016$<20>, smam=\E[?7h,
smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>,
@@ -15785,7 +16651,7 @@ ncr7901|ncr 7901 model,
# Manufactured in the early/mid eighties, behaves almost the same as a
# Televideo 950. Take a 950, change its cabinet for a more 80s-ish one (but
# keep the same keyboard layout), add an optional 25-line mode, replace the DIP
-# switches with a menu and remove the "lock line" feature (ESC ! 1 and ESC !
+# switches with a menu and remove the "lock line" feature (ESC ! 1 and ESC !
# 2), here is the NDR 9500. Even the line-lock, albeit disabled, is
# recognized: if you type in "ESC !", the next (third) character is not
# echoed, showing that the terminal was actually waiting for a parameter!
@@ -15809,7 +16675,7 @@ ndr9500|nd9500|Newbury Data 9500,
pfloc=\E|%{48}%p1%+%c2%p2\031,
pfx=\E|%{48}%p1%+%c1%p2\031, prot=\E), ri=\Ej,
rmacs=\E%%, rmir=\Er, rmso=\E(, rmxon=^N,
- sgr=\E%%\E(%?%p1%p5%p8%|%|%t\E)%;%?%p9%t\E$%;,
+ sgr=\EG0\E%%%%\E(%?%p1%p5%p8%|%|%t\E)%;%?%p9%t\E$%;,
sgr0=\EG0\E%%\E(, smacs=\E$, smir=\Eq, smso=\E), smxon=^O,
tbc=\E3, tsl=\Eg\Ef\011%p1%{32}%+%c, .kbs=^H,
@@ -16279,7 +17145,7 @@ tek4107|tek4109|tektronix terminals 4107 4109,
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,
+ sgr=\E%%!1\E[%?%p1%t;7;5%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t<0%;%?%p6%t;1%;m$<2>\E%%!0,
sgr0=\E%!1\E[m$<2>\E%!0, smso=\E%!1\E[7;5m$<2>\E%!0,
smul=\E%!1\E[4m$<2>\E%!0,
# Tektronix 4207 with sysline. In the ancestral termcap file this was 4107-s;
@@ -16466,9 +17332,10 @@ tek4205|tektronix 4205,
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,
+ dch1=\E[1P, dim=\E[=1;<6m, dl=\E[%p1%dM, dl1=\E[1M,
+ ech=\E%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0,
+ home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[1L,
+ ind=\ED,
initc=\E%%!0\ETF4%?%p1%{0}%=%t0%e%p1%{1}%=%t4%e%p1%{2}%=%t3%e%p1%{3}%=%t5%e%p1%{4}%=%t2%e%p1%{5}%=%t6%e%p1%{6}%=%t7%e1%;%?%p2%{125}%<%t0%e%p2%{250}%<%tA2%e%p2%{375}%<%tA?%e%p2%{500}%<%tC8%e%p2%{625}%<%tD4%e%p2%{750}%<%tE1%e%p2%{875}%<%tE\:%eF4%;%?%p3%{125}%<%t0%e%p3%{250}%<%tA2%e%p3%{375}%<%tA?%e%p3%{500}%<%tC8%e%p3%{625}%<%tD4%e%p3%{750}%<%tE1%e%p3%{875}%<%tE\:%eF4%;%?%p4%{125}%<%t0%e%p4%{250}%<%tA2%e%p4%{375}%<%tA?%e%p4%{500}%<%tC8%e%p4%{625}%<%tD4%e%p4%{750}%<%tE1%e%p4%{875}%<%tE\:%eF4%;\E%%!1,
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,
@@ -16639,7 +17506,7 @@ ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX,
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,
+ sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t30;40%;m,
sgr0=\E[m, smso=\E[7m, smul=\E[4m,
#### Apple II
@@ -16868,639 +17735,6 @@ mac|macintosh|Macintosh with MacTerminal,
mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode,
cols#132, use=mac,
-# nsterm*|Apple_Terminal - AppKit Terminal.app
-#
-# Terminal.app is a Terminal emulator bundled with NeXT's NeXTStep and
-# OPENSTEP/Mach operating systems, and with Apple's Rhapsody, Mac OS X
-# Server and Mac OS X operating systems. There is also a
-# "terminal.app" in GNUStep, but I believe it to be an unrelated
-# codebase and I have not attempted to describe it here.
-#
-# For NeXTStep, OPENSTEP/Mach, Rhapsody and Mac OS X Server 1.0, you
-# are pretty much on your own. Use "nsterm-7-m" and hope for the best.
-# You might also try "nsterm-7" and "nsterm-old" if you suspect your
-# version supports color.
-#
-# To determine the version of Terminal.app you're using by running:
-#
-# echo "$TERM_PROGRAM" "$TERM_PROGRAM_VERSION"
-#
-# For Apple_Terminal v200+, use "nsterm-16color" (a.k.a. "nsterm")
-#
-# For Apple_Terminal v71+/v100+, use "nsterm-bce".
-#
-# For Apple_Terminal v51+, use "nsterm-7-c" or "nsterm-7-c-s".
-#
-# For Apple_Terminal v41+, use "nsterm-old", or "nsterm-s".
-#
-# For all earlier versions (Apple_Terminal), try "nsterm-7-m"
-# (monochrome) or "nsterm-7" (color); "nsterm-7-m-s" and "nsterm-7-s"
-# might work too, but really you're on your own here since these
-# systems are very obsolete and I can't test them. I do welcome
-# patches, though :).
-
-# Other Terminals:
-#
-# For GNUstep_Terminal, you're probably best off using "linux" or
-# writing your own terminfo.
-
-# For MacTelnet, you're on your own. It's a different codebase, and
-# seems to be somewhere between "vt102", "ncsa" and "xterm-color".
-
-# For iTerm.app, see "iterm".
-
-#
-# The AppKit Terminal.app descriptions all have names beginning with
-# "nsterm". Note that the statusline (-s) versions use the window
-# titlebar as a phony status line, and may produce warnings during
-# compilation as a result ("tsl uses 0 parameters, expected 1".)
-# Ignore these warnings, or even ignore these entries entirely. Apps
-# which need to position the cursor or do other fancy stuff inside the
-# status line won't work with these entries. They're primarily useful
-# for programs like Pine which provide simple notifications in the
-# status line. Please note that non-ASCII characters don't work right
-# in the status line, since Terminal.app incorrectly interprets their
-# Unicode codepoints as MacRoman codepoints (in earlier Mac OS X
-# versions) or only accepts status lines consisting entirely of
-# characters from the first 256 Unicode positions (including C1 but
-# not C0 or DEL.)
-#
-# The Mythology* of AppKit Terminal.app:
-#
-# In the days of NeXTSTep 0.x and 1.x there were two incompatible
-# bundled terminal emulators, Shell and Terminal. Scott Hess wrote a
-# shareware replacement for Terminal called "Stuart" which NeXT bought
-# and used as the basis for the Terminal.app in NeXTstep 2+,
-# OPENSTEP/Mach, Apple Rhapsody, Mac OS X Server 1.0, and Mac OS X. I
-# don't know the TERM_PROGRAM and TERM_PROGRAM_VERSION settings or
-# capabilities for the early versions, but I believe that the
-# TERM_PROGRAM_VERSION may have been reset at some point.
-#
-# The early versions were tailored to the NeXT character set. Sometime
-# after the Apple aquisition the encoding was swiched to MacRoman
-# (initally with serious altcharset bugs due to incomplete conversion
-# of the old NeXT code,) and then later to UTF-8. Alos sometime during
-# or just prior to the early days of Mac OS X, the Terminal grew ANSI
-# 8-color support (initially buggy when combined with attributes, but
-# that was later fixed.) More recently, around Mac OS X version 10.3
-# or so (Terminal.app v100+) xterm-like 16-color support was added. In
-# some versions (for instance 133-1 which shipped with Mac OS X
-# version 10.4) this suffered from the <bce> bug, but that seems to
-# have been fixed in Mac OS X version 10.5 (Terminal.app v240.2+).
-#
-# In the early days of Mac OS X the terminal was fairly buggy and
-# would routinely crash under load. Many of these bugs seem to have
-# been fixed around Mac OS X version 10.3 (Terminal.app v100+) but
-# some may still remain. This change seems to correspond to
-# Terminal.app reporting "xterm-color" as $TERM rather than "vt100" as
-# it did previously.
-#
-# * This may correspond with what actually happened, but I don't
-# know. It is based on guesswork, hearsay, private correspondence,
-# my faulty memory, and the following online sources and references:
-#
-# [1] "Three Scotts and a Duane" by Simson L. Garfinkel
-# http://www.nextcomputers.org/NeXTfiles/Articles/NeXTWORLD/93.8/93.8.Dec.Community1.html
-#
-# [2] NeXTSTEP entry from Wikipedia, the free encyclopedia
-# https://secure.wikimedia.org/wikipedia/en/wiki/Nextstep
-#
-# * Renamed the AppKit Terminal.app entry from "Apple_Terminal" to
-# "nsterm" to comply with the name length and case conventions and
-# limitations of various software packages [notably Solaris terminfo
-# and UNIX.] A single Apple_Terminal alias is retained for
-# backwards-compatbility.
-#
-# * Added function key support (F1-F4). These only work in Terminal.app
-# version 51, hopefully the capabilities won't cause problems for people
-# using version 41.
-#
-# * Added "full color" (-c) entries which support the 16-color mode in
-# version 51.
-#
-# * By default, version 51 uses UTF-8 encoding with broken altcharset
-# support, so "ASCII" (-7) entries without altcharset support were
-# added.
-
-# nsterm - AppKit Terminal.app
-#
-# Apple's Mac OS X includes a Terminal.app derived from the old NeXT
-# Terminal.app. It is a partial VT100 emulation with some xterm-like
-# extensions. This terminfo was written to describe versions 41
-# (shipped with Mac OS X version 10.0) and 51 (shipped with Mac OS X
-# version 10.1) of Terminal.app.
-#
-# Terminal.app runs under the Mac OS X Quartz windowing system (and
-# other AppKit-supported windowing systems.) On the Mac OS X machine I
-# use, the executable for Terminal.app is:
-# /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
-#
-# If you're looking for a description of the full-screen system
-# console which runs under Apple's Darwin operating system on PowerPC
-# platforms, see the "xnuppc" entry instead.
-#
-# There were no function keys in version 41. In version 51, there are
-# four working function keys (F1, F2, F3 and F4.) The function keys
-# are included in all of these entries.
-#
-# It does not support mouse pointer position reporting. Under some
-# circumstances the cursor can be positioned using option-click; this
-# works by comparing the cursor position and the selected position,
-# and simulating enough cursor-key presses to move the cursor to the
-# selected position. This technique fails in all but the simplest
-# applications.
-#
-# It provides partial ANSI color support (background colors interacted
-# badly with bold in version 41, though, as reflected in :ncv:.) The
-# monochrome (-m) entries are useful if you've disabled color support
-# or use a monochrome monitor. The full color (-c) entries are useful
-# in version 51, which doesn't exhibit the background color bug. They
-# also enable an xterm-compatible 16-color mode.
-#
-# The configurable titlebar is set using xterm-compatible sequences;
-# it is used as a status bar in the statusline (-s) entries. Its width
-# depends on font sizes and window sizes, but 50 characters seems to
-# be the default for an 80x24 window.
-#
-# The MacRoman character encoding is used for some of the alternate
-# characters in the "MacRoman" entries; the "ASCII" (-7) entries
-# disable alternate character set support entirely, and the "VT100"
-# (-acs) entries rely instead on Terminal.app's own buggy VT100
-# graphics emulation, which seems to think the character encoding is
-# the old NeXT charset instead of MacRoman. The "ASCII" (-7) entries
-# are useful in Terminal.app version 51, which supports UTF-8 and
-# other ASCII-compatible character encodings but does not correctly
-# implement VT100 graphics; once VT100 graphics are correctly
-# implemented in Terminal.app, the "VT100" (-acs) entries should be
-# usable in any ASCII-compatible character encoding [except perhaps
-# in UTF-8, where some experts argue for disallowing alternate
-# characters entirely.]
-#
-# Terminal.app reports "vt100" as the terminal type, but exports
-# several environment variables which may aid detection in a shell
-# profile (i.e. .profile or .login):
-#
-# TERM=vt100
-# TERM_PROGRAM=Apple_Terminal
-# TERM_PROGRAM_VERSION=41 # in Terminal.app version 41
-# TERM_PROGRAM_VERSION=51 # in Terminal.app version 51
-#
-# For example, the following Bourne shell script would detect the
-# correct terminal type:
-#
-# if [ :"$TERM" = :"vt100" -a :"$TERM_PROGRAM" = :"Apple_Terminal" ]
-# then
-# export TERM
-# if [ :"$TERM_PROGRAM_VERSION" = :41 ]
-# then
-# TERM="nsterm-old"
-# else
-# TERM="nsterm-c-7"
-# fi
-# fi
-#
-# In a C shell derivative, this would be accomplished by:
-#
-# if ( $?TERM && $?TERM_PROGRAM && $?TERM_PROGRAM_VERSION) then
-# if ( :"$TERM" == :"vt100" && :"$TERM_PROGRAM" == :"Apple_Terminal" ) then
-# if ( :"$TERM_PROGRAM_VERSION" == :41 ) then
-# setenv TERM "nsterm-old"
-# else
-# setenv TERM "nsterm-c-7"
-# endif
-# endif
-# endif
-
-# The '+' entries are building blocks
-nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset,
- am, bw, msgr, xenl, xon,
- cols#80, it#8, lines#24,
- bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M,
- csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
- cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C,
- cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
- dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K,
- home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J,
- invis=\E[8m, kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
- kcuu1=\EOA, kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM,
- rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m,
- rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
- sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys,
-
-nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset,
- acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- enacs=\E(B\E)0, rmacs=^O,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, use=nsterm+7,
-
-nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset,
- acsc=+\335\,\334-\366.\3770#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245,
- enacs=\E(B\E)0, rmacs=^O,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
- sgr0=\E[m\017, smacs=^N, use=nsterm+7,
-
-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-s-7|nsterm-7-m-s|AppKit Terminal.app v41+ w/ASCII charset (monochrome w/statusline),
- use=nsterm+s, use=nsterm+7,
-
-nsterm-7|AppKit Terminal.app v41+ w/ASCII charset (color),
- use=nsterm+c41, use=nsterm+7,
-
-nsterm-7-c|nsterm-c-7|AppKit Terminal.app v51+ w/ASCII charset (full color),
- use=nsterm+c, use=nsterm+7,
-
-nsterm-s-7|nsterm-7-s|AppKit Terminal.app v41+ w/ASCII charset (color w/statusline),
- use=nsterm+s, use=nsterm+c41, use=nsterm+7,
-
-nsterm-c-s-7|nsterm-7-c-s|AppKit Terminal.app v51+ w/ASCII charset (full color w/statusline),
- use=nsterm+s, use=nsterm+c, use=nsterm+7,
-
-# VT100 alternate-charset (-acs)
-nsterm-m-acs|nsterm-acs-m|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome),
- use=nsterm+acs,
-
-nsterm-m-s-acs|nsterm-acs-m-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome w/statusline),
- use=nsterm+s, use=nsterm+acs,
-
-nsterm-acs|AppKit Terminal.app v41+ w/VT100 alternate-charset (color),
- use=nsterm+c41, use=nsterm+acs,
-
-nsterm-c-acs|nsterm-acs-c|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color),
- use=nsterm+c, use=nsterm+acs,
-
-nsterm-s-acs|nsterm-acs-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (color w/statusline),
- use=nsterm+s, use=nsterm+c41, use=nsterm+acs,
-
-nsterm-c-s-acs|nsterm-acs-c-s|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color w/statusline),
- use=nsterm+s, use=nsterm+c, use=nsterm+acs,
-
-# MacRoman charset
-nsterm-m|AppKit Terminal.app v41+ w/MacRoman charset (monochrome),
- use=nsterm+mac,
-
-nsterm-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline),
- use=nsterm+s, use=nsterm+mac,
-
-nsterm-old|AppKit Terminal.app v41+ w/MacRoman charset (color),
- use=nsterm+c41, use=nsterm+mac,
-
-nsterm-c|AppKit Terminal.app v51+ w/MacRoman charset (full color),
- use=nsterm+c, use=nsterm+mac,
-
-nsterm-s|AppKit Terminal.app v41+ w/MacRoman charset (color w/statusline),
- use=nsterm+s, use=nsterm+c41, use=nsterm+mac,
-
-nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline),
- use=nsterm+s, use=nsterm+c, use=nsterm+mac,
-
-# In Mac OS X version 10.5 the format of the preferences has changed
-# and a new, more complex technique is needed, e.g.,
-#
-# python -c 'import sys,objc;NSUserDefaults=objc.lookUpClass(
-# "NSUserDefaults");ud=NSUserDefaults.alloc();
-# ud.init();prefs=ud.persistentDomainForName_(
-# "com.apple.Terminal");prefs["Window Settings"][
-# prefs["Default Window Settings"]]["TerminalType"
-# ]=sys.argv[1];ud.setPersistentDomain_forName_(prefs,
-# "com.apple.Terminal")' nsterm-16color
-#
-# and it is still not settable from the preferences dialog. This is
-# tracked under rdar://problem/7365108 and rdar://problem/7365134
-# in Apple's bug reporter.
-nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5,
- bw@, mir, npc,
- civis=\E[?25l, cnorm=\E[?25h, dch=\E[%p1%dP, dch1=\E[P,
- flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG,
- ich=\E[%p1%d@, ich1=\E[@, kdch1=\E[3~, kend=\E[F,
- kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
- kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
- kf18=\E[22~, kf19=\E[33~, kf20=\E[34~, kf5=\E[15~,
- kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H,
- knp=\E[6~, kpp=\E[5~, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l,
- smcup=\E7\E[?47h, smir=\E[4h, vpa=\E[%i%p1%dd,
- use=nsterm-c-s-acs,
-
-# The versions of Terminal.app in Mac OS X version 10.3.x seem to have
-# the background color erase bug. The newer version 240.2 in Mac OS X
-# version 10.5 does not.
-#
-# This entry is based on newsgroup comments by Alain Bench, Christian Ebert,
-# and D P Schreber comparing to nsterm-c-s-acs.
-#
-# In Mac OS X version 10.4 and earlier, D P Schreber notes that $TERM
-# can be set in Terminal.app, e.g.,
-#
-# defaults write com.apple.Terminal TermCapString nsterm-bce
-#
-# and that it is not set in Terminal's preferences dialog.
-nsterm-bce|AppKit Terminal.app v71+/v100.1.8+ with Mac OS X version 10.3/10.4 (bce),
- bce, bw, use=nsterm-16color,
-
-# This is an alias which should always point to the "current" version
-nsterm|Apple_Terminal|AppKit Terminal.app,
- use=nsterm-16color,
-
-# iTerm.app from http://iterm.sourceforge.net/ is an alternative (and
-# more featureful) terminal emulator for Mac OS X. It is similar
-# enough in capabilities to nsterm-16color that I have derived this
-# description from that one, but as far as I know they share no code.
-# Many of the features are user-configurable, but I attempt only to
-# describe the default configuration.
-#
-# NOTE: When tack tests (csr) + (nel) iTerm.app crashes, so (csr) is
-# disabled.
-iTerm.app|iTerm.app terminal emulator for Mac OS X,
- bce, bw@, ccc@,
- csr@, initc@, kend=\EOF, khome=\EOH, use=xterm+256color,
- use=nsterm-16color,
-
-# xnuppc - Darwin PowerPC Console (a.k.a. "darwin")
-#
-# On PowerPC platforms, Apple's Darwin operating system uses a
-# full-screen system console derived from a NetBSD framebuffer
-# console. It is an ANSI-style terminal, and is not really VT-100
-# compatible.
-#
-# Under Mac OS X, this is the system console driver used while in
-# single-user mode [reachable by holding down Command-S during the
-# boot process] and when logged in using console mode [reachable by
-# typing ">console" at the graphical login prompt.]
-#
-# If you're looking for a description of the Terminal.app terminal
-# emulator which runs under the Mac OS X Quartz windowing system (and
-# other AppKit-supported windowing systems,) see the "nsterm"
-# entry instead.
-#
-# NOTE: Under Mac OS X version 10.1, the default login window does not
-# prompt for user name, instead requiring an icon to be selected from
-# a list of known users. Since the special ">console" login is not in
-# this list, you must make one of two changes in the Login Window
-# panel of the Login section of System Prefs to make the special
-# ">console" login accessible. The first option is to enable 'Show
-# "Other User" in list for network users', which will add a special
-# "Other..." icon to the graphical login panel. Selecting "Other..."
-# will present the regular graphical login prompt. The second option
-# is to change the 'Display Login Window as:' setting to 'Name and
-# password entry fields', which replaces the login panel with a
-# graphical login prompt.
-#
-# There are no function keys, at least not in Darwin 1.3.
-#
-# It has no mouse support.
-#
-# It has full ANSI color support, and color combines correctly with
-# all three supported attributes: bold, inverse-video and underline.
-# However, bold colored text is almost unreadable (bolding is
-# accomplished using shifting and or-ing, and looks smeared) so bold
-# has been excluded from the list of color-compatible attributes
-# [using (ncv)]. The monochrome entry (-m) is useful if you use a
-# monochrome monitor.
-#
-# There is one serious bug with this terminal emulation's color
-# support: repositioning the cursor onto a cell with non-matching
-# colors obliterates that cell's contents, replacing it with a blank
-# and displaying a colored cursor in the "current" colors. There is
-# no complete workaround at present [other than using the monochrome
-# (-m) entries,] but removing the (msgr) capability seemed to help.
-#
-# The "standout" chosen was simple reverse-video, although a colorful
-# standout might be more aesthetically pleasing. Similarly, the bold
-# chosen is the terminal's own smeared bold, although a simple
-# color-change might be more readable. The color-bold (-b) entries
-# uses magenta colored text for bolding instead. The fancy color (-f
-# and -f2) entries use color for bold, standout and underlined text
-# (underlined text is still underlined, though.)
-#
-# Apparently the terminal emulator does support a VT-100-style
-# alternate character set, but all the alternate character set
-# positions have been left blank in the font. For this reason, no
-# alternate character set capabilities have been included in this
-# description. The console driver appears to be ASCII-only, so (enacs)
-# has been excluded [although the VT-100 sequence does work.]
-#
-# The default Mac OS X and Darwin installation reports "vt100" as the
-# terminal type, and exports no helpful environment variables. To fix
-# this, change the "console" entry in /etc/ttys from "vt100" to
-# "xnuppc-WxH", where W and H are the character dimensions of your
-# console (see below.)
-#
-# The font used by the terminal emulator is apparently one originally
-# drawn by Ka-Ping Yee, and uses 8x16-pixel characters. This
-# file includes descriptions for the following geometries:
-#
-# Pixels Characters Entry Name (append -m for monochrome)
-# -------------------------------------------------------------------
-# 640x400 80x25 xnuppc-80x25
-# 640x480 80x30 xnuppc-80x30
-# 720x480 90x30 xnuppc-90x30
-# 800x600 100x37 xnuppc-100x37
-# 896x600 112x37 xnuppc-112x37
-# 1024x640 128x40 xnuppc-128x40
-# 1024x768 128x48 xnuppc-128x48
-# 1152x768 144x48 xnuppc-144x48
-# 1280x1024 160x64 xnuppc-160x64
-# 1600x1024 200x64 xnuppc-200x64
-# 1600x1200 200x75 xnuppc-200x75
-# 2048x1536 256x96 xnuppc-256x96
-#
-# The basic "xnuppc" entry includes no size information, and the
-# emulator includes no reporting capability, so you'll be at the mercy
-# of the TTY device (which reports incorrectly on my hardware.) The
-# color-bold entries do not include size information.
-
-# The '+' entries are building blocks
-xnuppc+basic|Darwin PowerPC Console basic capabilities,
- am, bce, mir, xenl,
- it#8,
- bold=\E[1m, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr,
- cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
- cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
- cuu=\E[%p1%dA, cuu1=\E[A, dsl=\E]2;\007, ed=\E[J, el=\E[K,
- el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=\177,
- kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8,
- rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m,
- rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h,
- sc=\E7,
- sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
- sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m,
- smul=\E[4m, tbc=\E[3g, use=vt100+keypad,
-
-xnuppc+c|Darwin PowerPC Console ANSI color support,
- colors#8, ncv#32, pairs#64,
- op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
-
-xnuppc+b|Darwin PowerPC Console color-bold support,
- ncv#32,
- bold=\E[35m,
- sgr=\E[0%?%p6%t;35%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
- use=xnuppc+basic,
-
-xnuppc+f|Darwin PowerPC Console fancy color support,
- ncv#35,
- sgr=\E[0%?%p6%t;35%;%?%p2%t;36;4%;%?%p1%t;33;44%;%?%p3%t;7%;m,
- smso=\E[33;44m, smul=\E[36;4m, use=xnuppc+b,
-
-xnuppc+f2|Darwin PowerPC Console alternate fancy color support,
- ncv#35,
- bold=\E[33m,
- sgr=\E[0%?%p6%t;33%;%?%p2%t;34%;%?%p1%t;31;47%;%?%p3%t;7%;m,
- smso=\E[31;47m, smul=\E[34m, use=xnuppc+basic,
-
-# Building blocks for specific screen sizes
-xnuppc+80x25|Darwin PowerPC Console 80x25 support (640x400 pixels),
- cols#80, lines#25,
-
-xnuppc+80x30|Darwin PowerPC Console 80x30 support (640x480 pixels),
- cols#80, lines#30,
-
-xnuppc+90x30|Darwin PowerPC Console 90x30 support (720x480 pixels),
- cols#90, lines#30,
-
-xnuppc+100x37|Darwin PowerPC Console 100x37 support (800x600 pixels),
- cols#100, lines#37,
-
-xnuppc+112x37|Darwin PowerPC Console 112x37 support (896x600 pixels),
- cols#112, lines#37,
-
-xnuppc+128x40|Darwin PowerPC Console 128x40 support (1024x640 pixels),
- cols#128, lines#40,
-
-xnuppc+128x48|Darwin PowerPC Console 128x48 support (1024x768 pixels),
- cols#128, lines#48,
-
-xnuppc+144x48|Darwin PowerPC Console 144x48 support (1152x768 pixels),
- cols#144, lines#48,
-
-xnuppc+160x64|Darwin PowerPC Console 160x64 support (1280x1024 pixels),
- cols#160, lines#64,
-
-xnuppc+200x64|Darwin PowerPC Console 200x64 support (1600x1024 pixels),
- cols#200, lines#64,
-
-xnuppc+200x75|Darwin PowerPC Console 200x75 support (1600x1200 pixels),
- cols#200, lines#75,
-
-xnuppc+256x96|Darwin PowerPC Console 256x96 support (2048x1536 pixels),
- cols#256, lines#96,
-
-# These are different combinations of the building blocks
-
-xnuppc-m|darwin-m|Darwin PowerPC Console (monochrome),
- use=xnuppc+basic,
-
-xnuppc|darwin|Darwin PowerPC Console (color),
- use=xnuppc+c, use=xnuppc+basic,
-
-xnuppc-m-b|darwin-m-b|Darwin PowerPC Console (monochrome w/color-bold),
- use=xnuppc+b,
-
-xnuppc-b|darwin-b|Darwin PowerPC Console (color w/color-bold),
- use=xnuppc+b, use=xnuppc+c,
-
-xnuppc-m-f|darwin-m-f|Darwin PowerPC Console (fancy monochrome),
- use=xnuppc+f,
-
-xnuppc-f|darwin-f|Darwin PowerPC Console (fancy color),
- use=xnuppc+f, use=xnuppc+c,
-
-xnuppc-m-f2|darwin-m-f2|Darwin PowerPC Console (alternate fancy monochrome),
- use=xnuppc+f2,
-
-xnuppc-f2|darwin-f2|Darwin PowerPC Console (alternate fancy color),
- use=xnuppc+f2, use=xnuppc+c,
-
-# Combinations for specific screen sizes
-xnuppc-80x25-m|darwin-80x25-m|Darwin PowerPC Console (monochrome) 80x25,
- use=xnuppc+80x25, use=xnuppc+basic,
-
-xnuppc-80x25|darwin-80x25|Darwin PowerPC Console (color) 80x25,
- use=xnuppc+c, use=xnuppc+80x25, use=xnuppc+basic,
-
-xnuppc-80x30-m|darwin-80x30-m|Darwin PowerPC Console (monochrome) 80x30,
- use=xnuppc+80x30, use=xnuppc+basic,
-
-xnuppc-80x30|darwin-80x30|Darwin PowerPC Console (color) 80x30,
- use=xnuppc+c, use=xnuppc+80x30, use=xnuppc+basic,
-
-xnuppc-90x30-m|darwin-90x30-m|Darwin PowerPC Console (monochrome) 90x30,
- use=xnuppc+90x30, use=xnuppc+basic,
-
-xnuppc-90x30|darwin-90x30|Darwin PowerPC Console (color) 90x30,
- use=xnuppc+c, use=xnuppc+90x30, use=xnuppc+basic,
-
-xnuppc-100x37-m|darwin-100x37-m|Darwin PowerPC Console (monochrome) 100x37,
- use=xnuppc+100x37, use=xnuppc+basic,
-
-xnuppc-100x37|darwin-100x37|Darwin PowerPC Console (color) 100x37,
- use=xnuppc+c, use=xnuppc+100x37, use=xnuppc+basic,
-
-xnuppc-112x37-m|darwin-112x37-m|Darwin PowerPC Console (monochrome) 112x37,
- use=xnuppc+112x37, use=xnuppc+basic,
-
-xnuppc-112x37|darwin-112x37|Darwin PowerPC Console (color) 112x37,
- use=xnuppc+c, use=xnuppc+112x37, use=xnuppc+basic,
-
-xnuppc-128x40-m|darwin-128x40-m|Darwin PowerPC Console (monochrome) 128x40,
- use=xnuppc+128x40, use=xnuppc+basic,
-
-xnuppc-128x40|darwin-128x40|Darwin PowerPC Console (color) 128x40,
- use=xnuppc+c, use=xnuppc+128x40, use=xnuppc+basic,
-
-xnuppc-128x48-m|darwin-128x48-m|Darwin PowerPC Console (monochrome) 128x48,
- use=xnuppc+128x48, use=xnuppc+basic,
-
-xnuppc-128x48|darwin-128x48|Darwin PowerPC Console (color) 128x48,
- use=xnuppc+c, use=xnuppc+128x48, use=xnuppc+basic,
-
-xnuppc-144x48-m|darwin-144x48-m|Darwin PowerPC Console (monochrome) 144x48,
- use=xnuppc+144x48, use=xnuppc+basic,
-
-xnuppc-144x48|darwin-144x48|Darwin PowerPC Console (color) 144x48,
- use=xnuppc+c, use=xnuppc+144x48, use=xnuppc+basic,
-
-xnuppc-160x64-m|darwin-160x64-m|Darwin PowerPC Console (monochrome) 160x64,
- use=xnuppc+160x64, use=xnuppc+basic,
-
-xnuppc-160x64|darwin-160x64|Darwin PowerPC Console (color) 160x64,
- use=xnuppc+c, use=xnuppc+160x64, use=xnuppc+basic,
-
-xnuppc-200x64-m|darwin-200x64-m|Darwin PowerPC Console (monochrome) 200x64,
- use=xnuppc+200x64, use=xnuppc+basic,
-
-xnuppc-200x64|darwin-200x64|Darwin PowerPC Console (color) 200x64,
- use=xnuppc+c, use=xnuppc+200x64, use=xnuppc+basic,
-
-xnuppc-200x75-m|darwin-200x75-m|Darwin PowerPC Console (monochrome) 200x75,
- use=xnuppc+200x75, use=xnuppc+basic,
-
-xnuppc-200x75|darwin-200x75|Darwin PowerPC Console (color) 200x75,
- use=xnuppc+c, use=xnuppc+200x75, use=xnuppc+basic,
-
-xnuppc-256x96-m|darwin-256x96-m|Darwin PowerPC Console (monochrome) 256x96,
- use=xnuppc+256x96, use=xnuppc+basic,
-
-xnuppc-256x96|darwin-256x96|Darwin PowerPC Console (color) 256x96,
- use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic,
-
#### Radio Shack/Tandy
#
@@ -17752,6 +17986,23 @@ osexec|Osborne executive,
# See
# http://www.minix3.org/manpages/man4/console.4.html
minix|minix console (v3),
+ acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+ kdch1=\177, kend=\E[Y, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~,
+ kf11=\E[11;2~, kf12=\E[12;2~, kf13=\E[13;2~,
+ kf14=\E[14;2~, kf15=\E[15;2~, kf16=\E[17;2~,
+ kf17=\E[18;2~, kf18=\E[19;2~, kf19=\E[20;2~, kf2=\E[12~,
+ kf20=\E[21;2~, kf21=\E[11;5~, kf22=\E[12;5~,
+ kf23=\E[13;5~, kf24=\E[14;5~, kf25=\E[15;5~,
+ kf26=\E[17;5~, kf27=\E[18;5~, kf28=\E[19;5~,
+ kf29=\E[20;5~, kf3=\E[13~, kf30=\E[21;5~, kf31=\E[11;6~,
+ kf32=\E[12;6~, kf33=\E[13;6~, kf34=\E[14;6~,
+ kf35=\E[15;6~, kf36=\E[17;6~, kf37=\E[18;6~,
+ kf38=\E[19;6~, kf39=\E[20;6~, kf4=\E[14~, kf40=\E[21;6~,
+ kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~,
+ kich1=\E[@, knp=\E[U, kpp=\E[V, lf0@, lf1@, lf2@, lf3@, lf4@, lf5@,
+ use=minix-3.0,
+
+minix-3.0|minix console (v3.0),
use=ecma+color, use=minix-1.7,
# See
@@ -17792,7 +18043,7 @@ minix-old-am|minix console with linewrap,
am, use=minix-old,
pc-minix|minix console on an Intel box,
- use=klone+acs, use=minix,
+ use=klone+acs, use=minix-3.0,
# 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
@@ -18195,6 +18446,7 @@ dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6),
use=tws-generic,
dku7202|BULL Questar 200 DKU7202 (colour/character attributes),
blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb,
+ sgr=\E[0%?%p1%t;2;4;5;7%;%?%p3%t;7%;%?%p2%t;2%;%?%p4%t;2;4%;%?%p5%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic,
#=========================================================#
@@ -18274,7 +18526,7 @@ 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,
+ am, eo, eslok, hs, km, 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,
@@ -18298,14 +18550,14 @@ bq300|Bull vt320 ISO Latin 1 80 columns terminal,
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,
+ 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$~,
+ smul=\E[4m, tbc=\E[3g, tsl=\E[1$}\E[2$~, use=ansi+pp,
bq300-rv|Bull vt320 reverse 80 columns,
flash=\E[?5l$<50>\E[?5h,
is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l,
@@ -18383,12 +18635,12 @@ bq300-8|Bull vt320 full 8 bits 80 columns,
csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=\2331D,
cud=\233%p1%dB, cud1=\2331B, cuf=\233%p1%dC, cuf1=\2331C,
cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\2331A,
- dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM,
+ dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
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,
+ ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, il1=\233L,
+ ind=\ED, is1=\E[63;2"p\E[2h,
is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l,
is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w,
ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s,
@@ -18401,11 +18653,12 @@ bq300-8|Bull vt320 full 8 bits 80 columns,
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,
+ rev=\2337m, ri=\EM, rmacs=\E(B, 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,
+ sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h,
smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m,
smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~,
bq300-8rv|Bull vt320 8-bit reverse mode 80 columns,
@@ -19010,14 +19263,14 @@ z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode,
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,
+ dl1=\E[M, 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, il1=\E[L, 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,
@@ -19818,6 +20071,193 @@ apollo_19L|apollo 19 inch display,
apollo_color|apollo color display,
rmir@, smir@, use=vt132,
+#### AT&T consoles
+
+# 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[3g, 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,
+
+# From: Benjamin C. W. Sittler <bsittler@nmt.edu>
+#
+# I have a UNIX PC which I use as a terminal attached to my Linux PC.
+# 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.)
+#
+# 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,
+# onscreen function key labels, and bitmap graphics. But since the primary
+# user interface on the UNIX PC was a GUI program (ua, for "user
+# assistant",) and remote administration was considered important for the
+# machine, tam also supported VT100-compatible terminals attached to the
+# serial port or used across the StarLan network. To simulate the extra keys
+# not present on a VT100, users could press ESC and a two-letter sequence,
+# such as u d (Undo) or U D (Shift-Undo.) These two-letter sequences,
+# however, were not the same as those sent by the actual Undo key. The
+# actual Undo key sends ESC 0 s unshifted, and ESC 0 S shifted, for example.
+# (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.)
+#
+# 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.
+#
+# 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:
+#
+# 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.
+#
+# esr's notes:
+# Terminfo entry for the AT&T Unix PC 7300
+# from escape(7) in Unix PC 7300 Manual.
+# Somewhat similar to a vt100-am (but different enough
+# to redo this from scratch.)
+#
+# /***************************************************************
+# *
+# * FONT LOADING PROGRAM FOR THE UNIX PC
+# *
+# * This routine loads a font defined in the file ALTFONT
+# * 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 PC 7300 documentation.
+# ***************************************************************/
+# #include <string.h> /* needed for strcpy call */
+# #include <sys/window.h> /* needed for ioctl call */
+# #define FNSIZE 60 /* font name size */
+# #define ALTFONT "/usr/lib/wfont/special.8.ft" /* font file */
+# /*
+# * The file /usr/lib/wfont/special.8.ft comes with the
+# * standard PC software. It defines a graphics character set
+# * similar to that of the Teletype 5425 terminal. To view
+# * this or other fonts in /usr/lib/wfont, use the command
+# * 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 */
+# char altf_name[FNSIZE]; /* font name (file name) */
+# };
+# ldfont()
+# {
+# int wd; /* window in which altfont will be */
+# struct altfdata altf;
+# altf.altf_slot=1;
+# strcpy(altf.altf_name,ALTFONT);
+# for (wd =1; wd < 12; wd++) {
+# ioctl(wd, WIOCLFONT,&altf);
+# }
+# }
+#
+# (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,
+
#### Convergent Technology
#
# Burroughs bought Convergent shortly before it merged with Univac.
@@ -19923,6 +20363,54 @@ masscomp1|masscomp large screen version 1,
masscomp2|masscomp large screen version 2,
cols#64, lines#21, use=masscomp,
+#### 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,
+
+#### Other consoles
+# 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
+# McIntosh at UCB/CSM. The :pt: and :uc: have been removed from the original,
+# (the former is untrue, and the latter failed under UCB/man); standout and
+# 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,
+
+# (ibmpcx: this entry used to be known as ibmx.
+# It formerly included the following extension capabilities:
+# :GC=b:GL=v:GR=t:RT=^J:\
+# :GH=\E[196g:GV=\E[179g:\
+# :GU=\E[193g:GD=\E[194g:\
+# :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\
+# :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\
+# :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\
+# 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+sgr8,
+
######## OTHER OBSOLETE TYPES
#
# These terminals are *long* dead -- these entries are retained for
@@ -20217,9 +20705,9 @@ dwk|dwk-vt|dwk terminal,
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,
+ enacs@, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rmacs@,
+ sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>,
+ sgr0=\E[0m$<2>, smacs@, use=vt100,
# 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
@@ -20274,7 +20762,7 @@ opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys,
rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11,
rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>,
rs3=\EwG\Ee($<150>,
- sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
+ sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c,
sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/,
smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177,
smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(,
@@ -20881,7 +21369,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# assigned in System V terminfo. There are some variant extension sets out
# there. We try to describe them here.
#
-# XENIX extensions:
+#### XENIX extensions:
#
# The XENIX extensions include a set of function-key capabilities as follows:
#
@@ -20946,7 +21434,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# When translating a termcap file, ncurses tic will do this automatically.
# The double forms characters don't fit the SVr4 terminfo model.
#
-# AT&T Extensions:
+#### 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
@@ -20957,7 +21445,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# FL=:LO: (enable soft labels), FE=:LF: (disable soft labels), CI=:vi: (make
# cursor invisible), and CV=:ve: (make cursor normal).
#
-# HP Extensions
+#### HP Extensions
#
# The HP library (as of mid-1995, their term.h file version 70.1) appears to
# have the System V capabilities up to SVr1 level. After that, it supports
@@ -20966,7 +21454,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# label_off, and key_f11..key_f63 capabilities like SVr4's. This makes the
# HP binary format incompatible with SVr4's.
#
-# IBM Extensions
+#### IBM Extensions
#
# There is a set of nonstandard terminfos used by IBM's AIX operating system.
# The AIX terminfo library diverged from SVr1 terminfo, and replaces all
@@ -20994,7 +21482,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# The box2 characters are the double-line versions of these forms graphics.
# The AIX binary terminfo format is incompatible with SVr4's.
#
-# Iris console extensions:
+#### Iris console extensions:
#
# HS is half-intensity start; HE is half-intensity end
# CT is color terminal type (for Curses & rogue)
@@ -21003,7 +21491,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
#
# The ncurses tic utility recognizes HS as an alias for mh <dim>.
#
-# TC Extensions:
+#### TC Extensions:
#
# There is a set of extended termcaps associated with something
# called the "Terminal Control" or TC package created by MainStream Systems,
@@ -21011,11 +21499,112 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# CF for civis and CO for cvvis. Finally, they define a boolean :ct:
# that flags color terminals.
#
+######## NCURSES USER-DEFINABLE CAPABILITIES
+#
+# Extensions added after ncurses 5.0 generally use the "-x" option of tic and
+# infocmp to manipulate user-definable capabilities. Those that are intended
+# for use in either terminfo or termcap use 2-character names. Extended
+# function keys do not use 2-character names, and are available only with
+# terminfo.
+#
+# As of mid-2012, no other terminfo/termcap implementation than ncurses
+# supports this extension; termcap libraries can as noted above make limited
+# use of the feature.
+#
+# ncurses makes explicit checks for a few user-definable capabilities: AX, U8,
+# XM.
+#
+#### SCREEN Extensions:
+#
+# The screen program uses the termcap interface. It recognizes a few useful
+# nonstandard capabilities. Those are used in this file.
+#
+# AX (bool) Does understand ANSI set default fg/bg color (\E[39m /
+# \E[49m).
+# G0 (bool) Terminal can deal with ISO 2022 font selection sequences.
+# E0 (str) Switch charset 'G0' back to standard charset.
+# S0 (str) Switch charset 'G0' to the specified charset.
+# XT (bool) Terminal understands special xterm sequences (OSC, mouse
+# tracking).
+#
+# AX is relatively straightforward; it is interpreted by ncurses to say that
+# SGR 39/49 reset the terminal's foreground and background colors to their
+# "default".
+#
+# XT is harder, since screen's manpage does not give more details. For that,
+# we must read screen's source-code. When XT is set, screen assumes
+#
+# a) OSC 1 sets the title string, e.g., for the icon. Recent versions of
+# screen may also set the terminal's name, which is (for xterm) distinct
+# from the icon name.
+# b) OSC 20 sets the background pixmap. This is an rxvt feature.
+# c) OSC 39 and OSC 49 set the default foreground/background colors. Again
+# this is an rxvt feature.
+# d) certain mode settings enable the mouse: 9, 1000, 1001, 1002, 1003.
+# These are from xterm, although xterm accepts mouse codes that may not be
+# recognized by screen, e.g., 1005, 1006.
+# e) colors beyond 0..7 are implemented by xterm's aixterm-like 16-color
+# sequence. However, because screen uses only termcap, the values returned
+# by Af/Ab are not usable because they rely on expressions that termcap
+# does not support. Therefore, screen uses a hardcoded string to work
+# around the limitation.
+# f) all entries named "*xterm*" or "*rxvt*" have the bce flag set.
+#
+# The other ISO-2022 features are rarely used, but provided here to make
+# screen's termcap features available.
+#
+#### XTERM Extensions:
+#
+# Most of the xterm extensions are for function-keys. Since patch #94 (in
+# 1999), xterm has supported shift/control/alt/meta modifiers which produce
+# additional function-key strings. Some other developers copied the feature,
+# though they did not follow xterm's lead in patch #167 (in 2002), to make
+# these key definitions less ambiguous.
+#
+# A few terminals provide similar functionality (sending distinct keys when
+# a modifier is used), including rxvt.
+#
+# These are the extended keys defined in this file:
+#
+# kDC3 kDC4 kDC5 kDC6 kDC7 kDN kDN3 kDN4 kDN5 kDN6 kDN7 kEND3 kEND4 kEND5 kEND6
+# kEND7 kHOM3 kHOM4 kHOM5 kHOM6 kHOM7 kIC3 kIC4 kIC5 kIC6 kIC7 kLFT3 kLFT4
+# kLFT5 kLFT6 kLFT7 kNXT3 kNXT4 kNXT5 kNXT6 kNXT7 kPRV3 kPRV4 kPRV5 kPRV6 kPRV7
+# kRIT3 kRIT4 kRIT5 kRIT6 kRIT7 kUP kUP3 kUP4 kUP5 kUP6 kUP7 ka2 kb1 kb3 kc2
+#
+# Here are the other xterm-related extensions which are used in this file:
+#
+# Cr is a string capability which resets the cursor color
+# Cs is a string capability which sets the cursor color to a given value.
+# The single string parameter is the color name/number, according to the
+# implementation.
+# Ms modifies the selection/clipboard. Its parameters are
+# p1 = the storage unit (clipboard, selection or cut buffer)
+# p2 = the base64-encoded clipboard content.
+# Se resets the cursor style to the terminal power-on default.
+# Ss is a string capability with one numeric parameter. It is used to set the
+# cursor style as described by the DECSCUSR function to a block or
+# underline.
+# TS is a string capability which acts like "tsl", but uses no parameter and
+# goes to the first column of the "status line".
+# XM is a string capability which overrides ncurses's built-in string which
+# enables xterm mouse mode.
+#
+#### Miscellaneous extensions:
+#
+# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode.
+# This was implemented for the Hurd.
+# E3 clears the terminal's scrollback buffer. This was implemented in the
+# Linux 3.0 kernel as a security feature. It matches a feature which was
+# added in xterm patch #107.
+# U8 is a numeric capability which denotes a terminal emulator which does not
+# support VT100 SI/SO when processing UTF-8 encoding. Set this to a nonzero
+# value to enable it.
+#
######## CHANGE HISTORY
#
# The last /etc/termcap version maintained by John Kunze was 8.3, dated 8/5/94.
-# Releases 9 and up are maintained by Eric S. Raymond as part of the ncurses
-# project.
+# Releases 9 and 10 (up until the release of ncurses 4.2 in 1998) were
+# maintained by Eric S. Raymond as part of the ncurses 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
@@ -21115,7 +21704,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * Replaced HP entries up to hpsub with purpose-built ones.
# * Blank rmir/smir/rmdc/smdc capabilities removed.
# * Small fixes merged in from SCO entries for lpr, fos, tvi910+, tvi924.
-# 9.4.8 (Fri Apr 7 09:36:34 EDT 199):
+# 9.4.8 (Fri Apr 7 09:36:34 EDT 1995):
# * Replaced the Ann Arbor entries with SCO's, the init strings are
# more efficient (but the entries otherwise identical).
# * Added dg211 from Shuford archive.
@@ -22224,7 +22813,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * add screen.rxvt -TD
#
# 2008-04-28
-# * add screen+fkeys (prompted by Debian # 478094) -TD
+# * add screen+fkeys (prompted by Debian #478094) -TD
#
# 2008-06-28
# * add screen.mlterm -TD
@@ -22280,7 +22869,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# 2009-12-12
# * updated nsterm* entries (Benjamin Sittler, Emanuele Giaquinta)
#
-# 2009-12-12
+# 2009-12-19
# * add bw (auto-left-margin) to nsterm* entries (Benjamin Sittler)
# * rename minix to minix-1.7, add minix entry for Minux3 -TD
#
@@ -22354,6 +22943,187 @@ v3220|LANPAR Vision II model 3220/3221/3222,
# * add xterm-utf8 as a demo of the U8 feature -TD
#
# 2011-02-20
-# * add cons25-debian entry (Brian M Carlson, Debina #607662).
+# * add cons25-debian entry (Brian M Carlson, Debian #607662).
+#
+# 2011-06-11
+# * update minix entry to minix 3.2 (Thomas Cort).
+#
+# 2011-07-09
+# * fix inconsistent tabset path in pcmw (Todd C. Miller).
+# * remove a backslash which continued comment, obscuring altos3
+# definition with OpenBSD toolset (Nicholas Marriott).
+#
+# 2011-07-16
+# * add/use xterm+tmux chunk from xterm #271 -TD
+# * resync xterm-new entry from xterm #271 -TD
+# * add E3 extended capability to linux-basic (Miroslav Lichvar)
+# * add linux2.2, linux2.6, linux3.0 entries to give context for E3 -TD
+# * add SI/SO change to linux2.6 entry (Debian #515609) -TD
+#
+# 2011-07-21
+# * add kich1 to sun (Yuri Pankov)
+# * use bold rather than reverse for smso in sun-color (Yuri Pankov).
+#
+# 2011-08-06
+# * corrected k9 in dg460-ansi, add other features based on manuals -TD
+#
+# 2011-08-20
+# * minor cleanup of X-terminal emulator section -TD
+# * add terminator entry -TD
+# * add simpleterm entry -TD
+#
+# 2011-09-10
+# * add xterm+kbs fragment from xterm #272 -TD
+#
+# 2011-11-12
+# * add pccon entries for OpenBSD console (Alexei Malinin)
+#
+# 2011-12-17
+# * corrected old changelog comments -TD
+#
+# 2011-11-24
+# * add putty-sco -TD
+#
+# 2012-01-28
+# * add mach-gnu (Samuel Thibault)
+# * add mach-gnu-color, tweaks to mach-gnu -TD
+# * make sgr for sun-color agree with smso -TD
+# * make sgr for prism9 agree with other caps -TD
+# * make sgr for icl6404 agree with other caps -TD
+# * make sgr for ofcons agree with other caps -TD
+# * make sgr for att5410v1, att4415, att620 agree with other caps -TD
+# * make sgr for aaa-unk, aaa-rv agree with other caps -TD
+# * make sgr for avt-ns agree with other caps -TD
+#
+# 2012-02-11
+# * make sgr for xterm-pcolor agree with other caps -TD
+# * make sgr for att5425 agree with other caps -TD
+# * make sgr for att630 agree with other caps -TD
+# * make sgr for linux entries agree with other caps -TD
+# * make sgr for tvi9065 agree with other caps -TD
+# * make sgr for ncr260vt200an agree with other caps -TD
+# * make sgr for ncr160vt100pp agree with other caps -TD
+# * make sgr for ncr260vt300an agree with other caps -TD
+# * make sgr for aaa-60-dec-rv, aaa+dec agree with other caps -TD
+# * make sgr for cygwin, cygwinDBG agree with other caps -TD
+#
+# 2012-03-31
+# * correct order of use-clauses in st-256color -TD
+#
+# 2012-04-01
+# * revert 2011-07-16 change to "linux" alias, return to "linux2.2" -TD
+#
+# 2012-04-14
+# * document all of the user-defined capabilities in one place -TD
+# * add XT to some places to improve usefulness for other applications
+# than screen, which would like to pretend that xterm's title is
+# a status-line. -TD
+# * change use-clauses in ansi-mtabs, hp2626, and hp2622 based on review
+# of ordering and overrides -TD
+#
+# 2012-04-21
+# * add msgr to vt420, similar DEC vtXXX entries -TD
+# * add several missing vt420 capabilities from vt220 -TD
+# * factor out ansi+pp from several entries -TD
+# * change xterm+sl and xterm+sl-twm to include only the status-line
+# capabilities and not "use=xterm", making them more generally useful
+# as building-blocks -TD
+# * add dec+sl building block, as example -TD
+#
+# 2012-04-28
+# * fix some inconsistencies between vt320/vt420, e.g., cnorm/civis -TD
+# * add eslok flag to dec+sl -TD
+# * dec+sl applies to vt320 and up -TD
+# * drop wsl width from xterm+sl -TD
+# * reuse xterm+sl in putty and nsca-m -TD
+# * add ansi+tabs to vt520 -TD
+# * add ansi+enq to vt220-vt520 -TD
+#
+# 2012-05-05
+# * remove p6 (bold) from opus3n1+ for consistency -TD
+# * remove acs stuff from env230 per clues in Ingres termcap -TD
+# * modify env230 sgr/sgr0 to match other capabilities -TD
+# * modify smacs/rmacs in bq300-8 to match sgr/sgr0 -TD
+# * make sgr for dku7202 agree with other caps -TD
+# * make sgr for ibmpc agree with other caps -TD
+# * make sgr for tek4107 agree with other caps -TD
+# * make sgr for ndr9500 agree with other caps -TD
+# * make sgr for sco-ansi agree with other caps -TD
+# * make sgr for d410 agree with other caps -TD
+# * make sgr for d210 agree with other caps -TD
+# * make sgr for d470c, d470c-7b agree with other caps -TD
+#
+# 2012-05-12
+# * rewrite vt520 entry based on vt420 -TD
+# * corrected 'op' for bterm (report by Samuel Thibault) -TD
+#
+# 2012-06-02
+# * add kdch1 to wsvt25 entry from NetBSD CVS (reported by David Lord,
+# analysis by Martin Husemann).
+# * add cnorm/civis to wsvt25 entry from NetBSD CVS (report/analysis by
+# Onno van der Linden).
+# * add kdch1 aka "Remove" to vt220 and vt220-8 entries -TD
+# * add kdch1, etc., to qvt108 -TD
+# * add dl1/il1 to some entries based on dl/il values -TD
+# * add dl to simpleterm -TD
+#
+# 2012-06-10
+# * modify some older xterm entries to align with xterm source -TD
+# * separate "xterm-old" alias from "xterm-r6" -TD
+#
+# 2012-07-28
+# * add E3 to xterm-basic and putty -TD
+#
+# 2012-08-11
+# * add nsterm-256color, make this the default nsterm -TD
+# * remove bw from nsterm-bce, per testing with tack -TD
+#
+# 2012-10-12
+# * add vte-2012, gnome-2012, making these the defaults for vte/gnome
+# (patch by Christian Persch).
+#
+# 2012-11-02
+# * reviewed vte-2012, reverted most of the change since it was incorrect
+# based on testing with tack -TD
+# * un-cancel the initc in vte-256color, since this was implemented
+# starting with version 0.20 in 2009 -TD
+#
+# 2013-03-16
+# * correct typo in sgr string for sun-color,
+# add bold for consistency with sgr,
+# change smso for consistency with sgr -TD
+# * correct typo in sgr string for terminator -TD
+# * add blink to the attributes masked by ncv in linux-16color (report
+# by Benjamin Sittler)
+#
+# 2013-03-23
+# * change initialization for vt220, similar entries for consistency
+# with cursor-key strings (NetBSD #47674) -TD
+# * further improvements to linux-16color (Benjamin Sittler)
+#
+# 2013-05-11
+# * move nsterm-related entries out of "obsolete" section to more
+# plausible "ansi consoles" -TD
+# * additional cleanup of table-of-contents by reordering -TD
+#
+# 2013-06-07
+# * added note to clarify Terminal.app's non-emulation of the various
+# terminal types listed in the preferences dialog -TD
+#
+# 2013-11-02
+# * use TS extension to describe xterm's title-escapes -TD
+# * modify terminator and nsterm-s to use xterm+sl-twm building block -TD
+# * update hurd.ti, add xenl to reflect 2011-03-06 change in
+# http://git.savannah.gnu.org/cgit/hurd/hurd.git/log/console/display.c
+# (Debian #727119).
+# * simplify pfkey expression in ansi.sys -TD
+#
+# 2013-11-10
+# * split-out building blocks xterm+sm+1002 and xterm+sm+1003 -TD
+#
+# 2014-02-22
+# * updated notes for wsvt25 based on tack and vttest -TD
+# * add teken entry to show actual properties of FreeBSD's "xterm"
+# console -TD
#
######## SHANTIH! SHANTIH! SHANTIH!
diff --git a/contrib/ncurses/mk-0th.awk b/contrib/ncurses/mk-0th.awk
index 5a0bf4583ad8..6a01feded914 100644
--- a/contrib/ncurses/mk-0th.awk
+++ b/contrib/ncurses/mk-0th.awk
@@ -1,6 +1,6 @@
-# $Id: mk-0th.awk,v 1.18 2010/01/09 21:45:41 tom Exp $
+# $Id: mk-0th.awk,v 1.22 2012/06/30 20:56:11 tom Exp $
##############################################################################
-# Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -34,14 +34,62 @@
# Variables:
# libname (library name, e.g., "ncurses", "panel", "forms", "menus")
# subsets (is used here to decide if wide-character code is used)
+# ticlib (library name for libtic, e.g., "tic")
+# termlib (library name for libtinfo, e.g., "tinfo")
#
+function make_lintlib(name,sources) {
+ print ""
+ print "clean ::"
+ printf "\trm -f llib-l%s.*\n", name
+ print ""
+ print "realclean ::"
+ printf "\trm -f llib-l%s\n", name
+ print ""
+ printf "llib-l%s : %s\n", name, sources
+ printf "\tcproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) %s >$@\n", sources
+ print ""
+ print "lintlib ::"
+ printf "\tsh $(srcdir)/../misc/makellib %s $(CPPFLAGS)\n", name
+ print ""
+ print "lint ::"
+ printf "\t$(LINT) $(LINT_OPTS) $(CPPFLAGS) %s $(LINT_LIBS)\n", sources
+}
+
+# A blank in "subsets" indicates a split-off of the library into a separate
+# file, e.g., for libtic or libtinfo. They are all logical parts of the same
+# library.
+function which_library() {
+ if ( ( which == "ticlib" ) && ( subsets ~ /ticlib / ) ) {
+ return ticlib;
+ } else if ( ( which == "termlib" || which == "ext_tinfo" ) && ( subsets ~ /[[:space:]]base/ ) ) {
+ return termlib;
+ } else {
+ return libname;
+ }
+}
+
+function show_list(name, len, list) {
+ if ( len > 0 ) {
+ printf "\n%s_SRC =", toupper(name);
+ for (n = 0; n < len; ++n)
+ printf " \\\n\t%s", list[n];
+ print "";
+ make_lintlib(name, sprintf("$(%s_SRC)", toupper(name)));
+ }
+}
+
BEGIN {
which = libname;
using = 0;
found = 0;
+ count_ticlib = 0;
+ count_termlib = 0;
+ count_library = 0;
}
/^@/ {
which = $0;
+ sub(/^@[[:blank:]]+/, "", which);
+ sub(/[[:blank:]]+$/, "", which);
}
!/^[@#]/ {
if (using == 0)
@@ -50,6 +98,10 @@ BEGIN {
print "# generated by mk-0th.awk"
printf "# libname: %s\n", libname
printf "# subsets: %s\n", subsets
+ if ( libname ~ /ncurses/ ) {
+ printf "# ticlib: %s\n", ticlib
+ printf "# termlib: %s\n", termlib
+ }
print ""
print ".SUFFIXES: .c .cc .h .i .ii"
print ".c.i :"
@@ -80,9 +132,18 @@ BEGIN {
found = 2
}
if ( libname == "c++" || libname == "c++w" ) {
- printf " \\\n\t%s/%s.cc", $3, $1
+ srcname = sprintf("%s/%s.cc", $3, $1);
+ printf " \\\n\t%s", srcname;
} else if ( widechar == 1 || $3 != "$(wide)" ) {
- printf " \\\n\t%s/%s.c", $3, $1
+ srcname = sprintf("%s/%s.c", $3, $1);
+ printf " \\\n\t%s", srcname;
+ if ( which_library() == libname ) {
+ list_library[count_library++] = srcname;
+ } else if ( which_library() == ticlib ) {
+ list_ticlib[count_ticlib++] = srcname;
+ } else {
+ list_termlib[count_termlib++] = srcname;
+ }
}
}
}
@@ -91,22 +152,11 @@ END {
if ( found == 1 )
{
print ""
- printf "# Producing llib-l%s is time-consuming, so there's no direct-dependency for\n", libname
- print "# it in the lintlib rule. We'll only remove in the cleanest setup."
- print "clean ::"
- printf "\trm -f llib-l%s.*\n", libname
- print ""
- print "realclean ::"
- printf "\trm -f llib-l%s\n", libname
- print ""
- printf "llib-l%s : $(C_SRC)\n", libname
- 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
- print ""
- print "lint :"
- print "\t$(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS)"
+ printf "# Producing llib-l%s is time-consuming, so there's no direct-dependency for\n", libname;
+ print "# it in the lintlib rule. We'll only remove in the cleanest setup.";
+ show_list(libname, count_library, list_library);
+ show_list(ticlib, count_ticlib, list_ticlib);
+ show_list(termlib, count_termlib, list_termlib);
}
else
{
@@ -115,3 +165,4 @@ END {
print "\t@echo no action needed"
}
}
+# vile:ts=4 sw=4
diff --git a/contrib/ncurses/mk-1st.awk b/contrib/ncurses/mk-1st.awk
index 36c9eb3e6f93..da40cc64cefc 100644
--- a/contrib/ncurses/mk-1st.awk
+++ b/contrib/ncurses/mk-1st.awk
@@ -1,6 +1,6 @@
-# $Id: mk-1st.awk,v 1.85 2010/08/07 20:42:30 Gabriele.Balducci Exp $
+# $Id: mk-1st.awk,v 1.96 2013/09/07 17:54:05 Alexey.Pavlov Exp $
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -34,10 +34,12 @@
# 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)
+# CXX_MODEL (e.g., "DEBUG", uppercase)
# 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", etc.)
+# driver ("yes" or "no", depends on --enable-term-driver)
# ShlibVer ("rel", "abi" or "auto", to augment DoLinks variable)
# ShlibVerInfix ("yes" or "no", determines location of version #)
# SymLink ("ln -s", etc)
@@ -69,7 +71,7 @@ function lib_name_of(a_name) {
}
# see imp_name
function imp_name_of(a_name) {
- if (ShlibVerInfix == "cygdll") {
+ if (ShlibVerInfix == "cygdll" || ShlibVerInfix == "msysdll" || ShlibVerInfix == "mingw") {
result = sprintf("%s%s%s.a", prefix, a_name, suffix);
} else {
result = "";
@@ -80,6 +82,10 @@ function imp_name_of(a_name) {
function abi_name_of(a_name) {
if (ShlibVerInfix == "cygdll") {
result = sprintf("%s%s$(ABI_VERSION)%s", "cyg", a_name, suffix);
+ } else if (ShlibVerInfix == "msysdll") {
+ result = sprintf("%s%s$(ABI_VERSION)%s", "msys-", a_name, suffix);
+ } else if (ShlibVerInfix == "mingw") {
+ result = sprintf("%s%s$(ABI_VERSION)%s", prefix, a_name, suffix);
} else if (ShlibVerInfix == "yes") {
result = sprintf("%s%s.$(ABI_VERSION)%s", prefix, a_name, suffix);
} else {
@@ -91,6 +97,10 @@ function abi_name_of(a_name) {
function rel_name_of(a_name) {
if (ShlibVerInfix == "cygdll") {
result = sprintf("%s%s$(REL_VERSION)%s", "cyg", a_name, suffix);
+ } else if (ShlibVerInfix == "msysdll") {
+ result = sprintf("%s%s$(ABI_VERSION)%s", "msys-", a_name, suffix);
+ } else if (ShlibVerInfix == "mingw") {
+ result = sprintf("%s%s$(REL_VERSION)%s", prefix, a_name, suffix);
} else if (ShlibVerInfix == "yes") {
result = sprintf("%s%s.$(REL_VERSION)%s", prefix, a_name, suffix);
} else {
@@ -107,7 +117,7 @@ function end_name_of(a_name) {
} else {
if ( ShlibVer == "rel" ) {
result = rel_name_of(a_name);
- } else if ( ShlibVer == "abi" || ShlibVer == "cygdll" ) {
+ } else if ( ShlibVer == "abi" || ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw" ) {
result = abi_name_of(a_name);
} else {
result = lib_name_of(a_name);
@@ -124,23 +134,38 @@ function symlink(src,dst) {
}
}
function rmlink(directory, dst) {
- printf "\t-rm -f %s/%s\n", directory, dst
+ if ( dst != "" ) {
+ printf "\t-rm -f %s/%s\n", directory, dst
+ }
}
function removelinks(directory) {
- rmlink(directory, end_name);
+ nlinks = 0;
+ links[nlinks++] = end_name;
if ( DoLinks == "reverse" ) {
if ( ShlibVer == "rel" ) {
- rmlink(directory, abi_name);
- rmlink(directory, rel_name);
+ links[nlinks++] = abi_name;
+ links[nlinks++] = rel_name;
} else if ( ShlibVer == "abi" ) {
- rmlink(directory, abi_name);
+ links[nlinks++] = abi_name;
}
} else {
if ( ShlibVer == "rel" ) {
- rmlink(directory, abi_name);
- rmlink(directory, lib_name);
+ links[nlinks++] = abi_name;
+ links[nlinks++] = lib_name;
} else if ( ShlibVer == "abi" ) {
- rmlink(directory, lib_name);
+ links[nlinks++] = lib_name;
+ }
+ }
+ for (j = 0; j < nlinks; ++j) {
+ found = 0;
+ for (k = 0; k < j; ++k ) {
+ if ( links[j] == links[k] ) {
+ found = 1;
+ break;
+ }
+ }
+ if ( !found ) {
+ rmlink(directory, links[j]);
}
}
}
@@ -148,7 +173,7 @@ 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" ) {
+ if ( ShlibVer != "auto" && ShlibVer != "cygdll" && ShlibVer != "msysdll" && ShlibVer != "mingw" ) {
printf "\tcd %s && (", directory
if ( DoLinks == "reverse" ) {
if ( ShlibVer == "rel" ) {
@@ -181,6 +206,11 @@ function shlib_build(directory) {
dst_libs = sprintf("%s/%s", directory, end_name);
printf "%s : \\\n", dst_libs
printf "\t\t%s \\\n", directory
+ if (subset == "ticlib" && driver == "yes" ) {
+ base = name;
+ sub(/^tic/, "ncurses", base); # workaround for "w"
+ printf "\t\t%s/%s \\\n", directory, end_name_of(base);
+ }
if (subset ~ /^base/ || subset == "ticlib" ) {
save_suffix = suffix
sub(/^[^.]\./,".",suffix)
@@ -223,8 +253,9 @@ function install_dll(directory,filename) {
printf "\t%s %s %s\n", program, src_name, dst_name
}
BEGIN {
- found = 0
- using = 0
+ TOOL_PREFIX = "";
+ found = 0;
+ using = 0;
}
/^@/ {
using = 0
@@ -233,15 +264,26 @@ BEGIN {
} else if (index(subset,$2) > 0) {
if (using == 0) {
if (found == 0) {
+ if ( name ~ /^.*\+\+.*/ ) {
+ if ( CXX_MODEL == "NORMAL" && MODEL == "SHARED" ) {
+ print ""
+ printf "# overriding model from %s to match CXX_MODEL\n", MODEL;
+ MODEL = "NORMAL";
+ suffix = ".a";
+ DoLinks = "no";
+ }
+ }
print ""
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 "# CXX_MODEL: %s\n", CXX_MODEL
printf "# model: %s\n", model
printf "# prefix: %s\n", prefix
printf "# suffix: %s\n", suffix
printf "# subset: %s\n", subset
+ printf "# driver: %s\n", driver
printf "# ShlibVer: %s\n", ShlibVer
printf "# ShlibVerInfix: %s\n", ShlibVerInfix
printf "# SymLink: %s\n", SymLink
@@ -285,12 +327,23 @@ BEGIN {
if ( found == 0 )
{
printf "%s_OBJS =", OBJS
- if ( $2 == "lib" )
- found = 1
- else
- found = 2
+ if ( $2 == "lib" ) {
+ found = 1;
+ } else if ( $2 == "c++" ) {
+ TOOL_PREFIX = "CXX_";
+ found = 1;
+ } else {
+ found = 2;
+ }
+ if ( $2 == "c++" ) {
+ CC_NAME="CXX"
+ CC_FLAG="CXXFLAGS"
+ } else {
+ CC_NAME="CC"
+ CC_FLAG="CFLAGS"
+ }
}
- printf " \\\n\t../%s/%s$o", model, $1
+ printf " \\\n\t../%s/%s$o", model, $1;
}
}
END {
@@ -316,7 +369,7 @@ END {
print "install \\"
print "install.libs \\"
- if ( ShlibVer == "cygdll" ) {
+ if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw") {
dst_dirs = "$(DESTDIR)$(bindir) $(DESTDIR)$(libdir)";
printf "install.%s :: %s $(LIBRARIES)\n", name, dst_dirs
@@ -337,7 +390,7 @@ END {
if ( overwrite == "yes" && name == "ncurses" )
{
- if ( ShlibVer == "cygdll" ) {
+ if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw") {
ovr_name = sprintf("libcurses%s.a", suffix)
printf "\t@echo linking %s to %s\n", imp_name, ovr_name
printf "\tcd $(DESTDIR)$(libdir) && ("
@@ -358,7 +411,7 @@ END {
print "uninstall \\"
print "uninstall.libs \\"
printf "uninstall.%s ::\n", name
- if ( ShlibVer == "cygdll" ) {
+ if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw") {
printf "\t@echo uninstalling $(DESTDIR)$(bindir)/%s\n", end_name
printf "\t-@rm -f $(DESTDIR)$(bindir)/%s\n", end_name
@@ -371,11 +424,7 @@ END {
removelinks("$(DESTDIR)$(libdir)")
if ( overwrite == "yes" && name == "ncurses" )
{
- if ( ShlibVer == "cygdll" ) {
- ovr_name = sprintf("libcurses%s.a", suffix)
- } else {
- ovr_name = sprintf("libcurses%s", suffix)
- }
+ ovr_name = sprintf("libcurses%s", suffix)
printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", ovr_name
}
}
@@ -388,20 +437,19 @@ END {
}
else if ( MODEL == "LIBTOOL" )
{
- if ( $2 == "c++" ) {
- compile="CXX"
- } else {
- compile="CC"
- }
end_name = lib_name;
printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
if ( is_ticlib() ) {
- printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(TICS_LIST)\n", compile, lib_name, OBJS, libtool_version
+ which_list = "TICS_LIST";
} else if ( is_termlib() ) {
- printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(TINFO_LIST)\n", compile, lib_name, OBJS, libtool_version
+ which_list = "TINFO_LIST";
} else {
- printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(SHLIB_LIST)\n", compile, lib_name, OBJS, libtool_version
+ which_list = "SHLIB_LIST";
}
+ printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) $(%s) \\\n", CC_NAME, CC_FLAG;
+ printf "\t\t-o %s $(%s_OBJS:$o=.lo) \\\n", lib_name, OBJS;
+ printf "\t\t-rpath $(DESTDIR)$(libdir) \\\n";
+ printf "\t\t%s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(%s) $(LDFLAGS)\n", libtool_version, which_list;
print ""
print "install \\"
print "install.libs \\"
@@ -419,7 +467,7 @@ END {
{
end_name = lib_name;
printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
- printf "\t$(AR) $(ARFLAGS) $@ $?\n"
+ printf "\t$(%sAR) $(%sARFLAGS) $@ $?\n", TOOL_PREFIX, TOOL_PREFIX;
printf "\t$(RANLIB) $@\n"
if ( host == "vxworks" )
{
diff --git a/contrib/ncurses/mk-dlls.sh.in b/contrib/ncurses/mk-dlls.sh.in
deleted file mode 100644
index 05c646ae294a..000000000000
--- a/contrib/ncurses/mk-dlls.sh.in
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/bin/sh
-# $Id: mk-dlls.sh.in,v 1.3 2010/12/25 22:25:41 tom Exp $
-##############################################################################
-# Copyright (c) 2008,2010 Free Software Foundation, Inc. #
-# #
-# Permission is hereby granted, free of charge, to any person obtaining a #
-# copy of this software and associated documentation files (the "Software"), #
-# to deal in the Software without restriction, including without limitation #
-# the rights to use, copy, modify, merge, publish, distribute, distribute #
-# with modifications, sublicense, and/or sell copies of the Software, and to #
-# permit persons to whom the Software is furnished to do so, subject to the #
-# following conditions: #
-# #
-# The above copyright notice and this permission notice shall be included in #
-# all copies or substantial portions of the Software. #
-# #
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL #
-# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
-# DEALINGS IN THE SOFTWARE. #
-# #
-# Except as contained in this notice, the name(s) of the above copyright #
-# holders shall not be used in advertising or otherwise to promote the sale, #
-# use or other dealings in this Software without prior written #
-# authorization. #
-##############################################################################
-#
-# Author: Juergen Pfeifer
-#
-# Build DLLs on MinGW
-#
-LC_ALL=C @CC@ -v 2>&1 | grep Target | grep mingw
-if [ $? -eq 1 ]; then
- echo "$0 requires a mingw environment" >&2
-else
- mkdir "$TEMP/tmp-dll"
- cat > "$TEMP/tmp-dll/arch.c" <<EOF
-#include <stdio.h>
-int main()
-{
- printf("%d",8*sizeof(void*));
- return(0);
-}
-EOF
- pushd "$TEMP/tmp-dll"
- @CC@ -o arch arch.c
- ARCH=`./arch`
- cd ..
- rm -rf tmp-dll
- popd
- echo $ARCH > mingw_arch
- echo Building DLLs and Import Libraries for Win${ARCH}
-
- if [ -d lib ]; then
- cf="-shared"
- lf="--enable-auto-import"
- pushd lib 2>&1 >/dev/null
- for t in "" "t"
- do
- for m in "" "_g"
- do
- if [ -f libncurses${t}${m}.a ]; then
- f=libncurses${t}${m}.a
- g=ncurses${t}${m}
- gi=libw${g}.dll.a
- td=$TEMP/tmp-${g}
- bd=`pwd`
- rm -rf "${td}"
- mkdir "${td}"
- pushd "${td}"
- ar x "${bd}/${f}" `ar t "${bd}/${f}"`
- @CC@ $cf -o w${g}.dll -Wl,--out-implib,${gi} -Wl,--output-def,w${g}.def -Wl,$lf `ar t "${bd}/$f"` @LIBS@
- lib //NOLOGO /MACHINE:i386 /DEF:w${g}.def
- rm -f `ar t "${bd}/$f"`
- mv w${g}.dll "${bd}"
- mv w${g}.lib "${bd}"
- mv ${gi} "${bd}"
- popd
- rm -rf "${td}"
-
- for l in panel menu form
- do
- for f in lib${l}${t}${m}.a
- do
- g=${l}${t}${m}
- td=$TEMP/tmp-${g}
- gi2=libw${g}.dll.a
- bd=`pwd`
- rm -rf "${td}"
- mkdir "${td}"
- echo $g
- pushd "${td}"
- ar x "${bd}/$f" `ar t "${bd}/$f"`
- @CC@ $cf -o w${g}.dll -Wl,--out-implib,${gi2} -Wl,--output-def,w${g}.def -Wl,$lf `ar t "${bd}/$f"` "${bd}/${gi}" @LIBS@
- lib //NOLOGO /MACHINE:i386 /DEF:w${g}.def
- rm -f `ar t "${bd}/$f"`
- mv w${g}.dll "${bd}"
- mv w${g}.lib "${bd}"
- mv ${gi2} "${bd}"
- popd
- rm -rf "${td}"
- done
- done
- fi
- done
- done
- popd
- else
- echo lib has not been built >&2
- fi
-fi
diff --git a/contrib/ncurses/mk-hdr.awk b/contrib/ncurses/mk-hdr.awk
index 530cbe912958..dfb2c9a29489 100644
--- a/contrib/ncurses/mk-hdr.awk
+++ b/contrib/ncurses/mk-hdr.awk
@@ -1,6 +1,6 @@
-# $Id: mk-hdr.awk,v 1.3 2010/05/15 20:10:42 tom Exp $
+# $Id: mk-hdr.awk,v 1.4 2013/08/03 23:09:42 tom Exp $
##############################################################################
-# Copyright (c) 2007,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2007-2010,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -73,12 +73,12 @@ BEGIN {
END {
if ( count > 0 )
{
- print "${DESTDIR}${includedir} :"
+ print "${INCLUDEDIR} :"
print " mkdir -p $@"
print ""
print "install \\"
print "install.libs \\"
- print "install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \\"
+ print "install.includes :: ${AUTO_SRC} ${INCLUDEDIR} \\"
for (i = 0; i < count - 1; ++i) {
printf " %s \\\n", data[i]
@@ -86,9 +86,9 @@ END {
printf " %s\n", data[count - 1]
for (i = 0; i < count; ++i) {
- printf " @ (cd ${DESTDIR}${includedir} && rm -f %s) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} %s\n", basename(data[i]), data[i]
+ printf " @ (cd ${INCLUDEDIR} && rm -f %s) ; ../headers.sh ${INSTALL_DATA} ${INCLUDEDIR} ${srcdir} %s\n", basename(data[i]), data[i]
if (data[i] == "curses.h" && compat == "yes") {
- printf " @ (cd ${DESTDIR}${includedir} && rm -f ncurses.h && ${LN_S} %s ncurses.h)\n", data[i]
+ printf " @ (cd ${INCLUDEDIR} && rm -f ncurses.h && ${LN_S} %s ncurses.h)\n", data[i]
}
}
print ""
@@ -97,9 +97,9 @@ END {
print "uninstall.includes ::"
for (i = 0; i < count; ++i) {
- printf " -@ (cd ${DESTDIR}${includedir} && rm -f %s)\n", basename(data[i])
+ printf " -@ (cd ${INCLUDEDIR} && rm -f %s)\n", basename(data[i])
if (data[i] == "curses.h" && compat == "yes") {
- printf " -@ (cd ${DESTDIR}${includedir} && rm -f ncurses.h)\n"
+ printf " -@ (cd ${INCLUDEDIR} && rm -f ncurses.h)\n"
}
}
}
diff --git a/contrib/ncurses/ncurses/Makefile.in b/contrib/ncurses/ncurses/Makefile.in
index 45a26b9d7eaa..f08bafb2b10f 100644
--- a/contrib/ncurses/ncurses/Makefile.in
+++ b/contrib/ncurses/ncurses/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.130 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.139 2013/08/04 20:20:45 tom Exp $
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -64,7 +64,11 @@ exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
includedir = @includedir@
+datarootdir = @datarootdir@
datadir = @datadir@
+includesubdir = @includesubdir@
+
+INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
LIBTOOL = @LIBTOOL@
LIBTOOL_CLEAN = @LIB_CLEAN@
@@ -84,6 +88,7 @@ ARFLAGS = @ARFLAGS@
AWK = @AWK@
LD = @LD@
LN_S = @LN_S@
+NM = @NM@
CTAGS = @CTAGS@
ETAGS = @ETAGS@
@@ -107,7 +112,7 @@ BUILD_LIBS = @BUILD_LIBS@
# is compiled into the build, or are test-programs that are not installed.
BUILD_EXEEXT = @BUILD_EXEEXT@
-x = @PROG_EXT@
+x = @EXEEXT@
CFLAGS_LIBTOOL = $(CCFLAGS)
CFLAGS_NORMAL = $(CCFLAGS)
@@ -125,6 +130,7 @@ SHLIB_LIST = $(SHLIB_DIRS) @SHLIB_LIST@
TINFO_LIST = $(SHLIB_DIRS) @TINFO_LIST@
TICS_LIST = $(SHLIB_DIRS) @TICS_LIST@
+RPATH_LIST = @RPATH_LIST@
MK_SHARED_LIB = @MK_SHARED_LIB@
NCURSES_MAJOR = @NCURSES_MAJOR@
@@ -134,7 +140,7 @@ ABI_VERSION = @cf_cv_abi_version@
RANLIB = @LIB_PREP@
-LIBRARIES = @LIBS_TO_MAKE@
+LIBRARIES = @Libs_To_Make@
LINT = @LINT@
LINT_OPTS = @LINT_OPTS@
@@ -254,6 +260,9 @@ tags:
@MAKE_UPPER_TAGS@TAGS:
@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] */*.[ch]
+ncurses.map : $(LIBRARIES)
+ $(NM) -p $(LIBRARIES) >$@
+
mostlyclean ::
-rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace
-rm -f $(TEST_PROGS)
@@ -262,7 +271,7 @@ clean :: mostlyclean
-rm -f $(AUTO_SRC)
-rm -f make_keys$(BUILD_EXEEXT)
-rm -f make_hash$(BUILD_EXEEXT)
- -rm -rf .libs
+ -rm -rf .libs *.dSYM *.map
distclean :: clean
-rm -f Makefile
@@ -282,21 +291,21 @@ test_progs : $(TEST_PROGS)
sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@
captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS)
- @ECHO_LINK@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS)
+ @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS)
hardscroll$x : $(serial)/hardscroll.c $(TEST_DEPS)
- @ECHO_LINK@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DSCROLLDEBUG $(serial)/hardscroll.c $(TEST_LDFLAGS)
+ @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DSCROLLDEBUG $(serial)/hardscroll.c $(TEST_LDFLAGS)
hashmap$x : $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_DEPS)
- @ECHO_LINK@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_LDFLAGS)
+ @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_LDFLAGS)
lib_mvcur$x : $(serial)/lib_mvcur.c $(TEST_DEPS) \
../@DFT_OBJ_SUBDIR@/dump_entry$o
- @ECHO_LINK@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../@DFT_OBJ_SUBDIR@/dump_entry$o $(TEST_LDFLAGS)
+ @ECHO_LD@ $(LIBTOOL_LINK) -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)
+ @ECHO_LD@ $(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
diff --git a/contrib/ncurses/ncurses/base/MKkeyname.awk b/contrib/ncurses/ncurses/base/MKkeyname.awk
index bb2599acb558..790161193169 100644
--- a/contrib/ncurses/ncurses/base/MKkeyname.awk
+++ b/contrib/ncurses/ncurses/base/MKkeyname.awk
@@ -1,6 +1,6 @@
-# $Id: MKkeyname.awk,v 1.45 2010/12/19 01:36:14 tom Exp $
+# $Id: MKkeyname.awk,v 1.48 2013/08/24 17:37:22 tom Exp $
##############################################################################
-# Copyright (c) 1999-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1999-2012,2013 Free Software 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,7 @@ END {
print ""
print "#define SIZEOF_TABLE 256"
print "#define MyTable _nc_globals.keyname_table"
+ print "#define MyInit _nc_globals.init_keyname"
print ""
print "NCURSES_EXPORT(NCURSES_CONST char *)"
print "safe_keyname (SCREEN *sp, int c)"
@@ -96,21 +97,36 @@ END {
print " if (result == 0 && (c >= 0 && c < SIZEOF_TABLE)) {"
print " if (MyTable == 0)"
print " MyTable = typeCalloc(char *, SIZEOF_TABLE);"
+ print ""
print " if (MyTable != 0) {"
+ print " int m_prefix = (sp == 0 || sp->_use_meta);"
+ print ""
+ print " /* if sense of meta() changed, discard cached data */"
+ print " if (MyInit != (m_prefix + 1)) {"
+ print " MyInit = m_prefix + 1;"
+ print " for (i = 0; i < SIZEOF_TABLE; ++i) {"
+ print " if (MyTable[i]) {"
+ print " FreeAndNull(MyTable[i]);"
+ print " }"
+ print " }"
+ print " }"
+ print ""
+ print " /* create and cache result as needed */"
print " if (MyTable[c] == 0) {"
print " int cc = c;"
print " p = name;"
- print " if (cc >= 128 && (sp == 0 || sp->_use_meta)) {"
- print " strcpy(p, \"M-\");"
+ print "#define P_LIMIT (sizeof(name) - (size_t) (p - name))"
+ print " if (cc >= 128 && m_prefix) {"
+ print " _nc_STRCPY(p, \"M-\", P_LIMIT);"
print " p += 2;"
print " cc -= 128;"
print " }"
print " if (cc < 32)"
- print " sprintf(p, \"^%c\", cc + '@');"
+ print " _nc_SPRINTF(p, _nc_SLIMIT(P_LIMIT) \"^%c\", cc + '@');"
print " else if (cc == 127)"
- print " strcpy(p, \"^?\");"
+ print " _nc_STRCPY(p, \"^?\", P_LIMIT);"
print " else"
- print " sprintf(p, \"%c\", cc);"
+ print " _nc_SPRINTF(p, _nc_SLIMIT(P_LIMIT) \"%c\", cc);"
print " MyTable[c] = strdup(name);"
print " }"
print " result = MyTable[c];"
diff --git a/contrib/ncurses/ncurses/base/MKlib_gen.sh b/contrib/ncurses/ncurses/base/MKlib_gen.sh
index 66ae295c607c..d8cc3c9751fa 100755
--- a/contrib/ncurses/ncurses/base/MKlib_gen.sh
+++ b/contrib/ncurses/ncurses/base/MKlib_gen.sh
@@ -2,7 +2,7 @@
#
# MKlib_gen.sh -- generate sources from curses.h macro definitions
#
-# ($Id: MKlib_gen.sh,v 1.43 2011/01/22 19:47:29 tom Exp $)
+# ($Id: MKlib_gen.sh,v 1.46 2011/06/04 19:14:08 tom Exp $)
#
##############################################################################
# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
@@ -410,10 +410,45 @@ BEGIN {
print "#undef vwprintw"
}
/^DECLARATIONS/ {start = 1; next;}
- {if (start) print \$0;}
+ {
+ if (start) {
+ if ( "$USE" == "generated" ) {
+ print \$0;
+ } else if ( \$0 ~ /^[{}]?\$/ ) {
+ print \$0;
+ } else if ( \$0 ~ /;/ ) {
+ print \$0;
+ } else {
+ calls[start] = \$0;
+ print \$0;
+ start++;
+ }
+ }
+ }
END {
if ( "$USE" != "generated" ) {
- print "int main(void) { return 0; }"
+ print "int main(void)"
+ print "{"
+ for (n = 1; n < start; ++n) {
+ value = calls[n];
+ if ( value !~ /P_POUNDC/ ) {
+ gsub(/[[:blank:]]+/," ",value);
+ sub(/^[[:alnum:]_]+ /,"",value);
+ sub(/^\* /,"",value);
+ gsub(/[[:alnum:]_]+ \* /,"",value);
+ gsub(/ (const) /," ",value);
+ gsub(/ (int|short|attr_t|chtype|wchar_t|NCURSES_BOOL|NCURSES_OUTC|NCURSES_OUTC_sp|va_list) /," ",value);
+ gsub(/ void /,"",value);
+ sub(/^/,"call_",value);
+ gsub(/ (a[[:digit:]]|z) /, " 0 ", value);
+ gsub(/ int[[:blank:]]*[(][^)]+[)][(][^)]+[)]/, "0", value);
+ printf "\t%s;\n", value;
+ } else {
+ print value;
+ }
+ }
+ print " return 0;"
+ print "}"
}
}
EOF1
@@ -422,6 +457,8 @@ cat >$TMP <<EOF
#include <ncurses_cfg.h>
#undef NCURSES_NOMACROS
#include <curses.h>
+#include <term.h>
+#include <unctrl.h>
DECLARATIONS
diff --git a/contrib/ncurses/ncurses/base/MKunctrl.awk b/contrib/ncurses/ncurses/base/MKunctrl.awk
index 2140900e8c3b..51ceb6343920 100644
--- a/contrib/ncurses/ncurses/base/MKunctrl.awk
+++ b/contrib/ncurses/ncurses/base/MKunctrl.awk
@@ -1,6 +1,6 @@
-# $Id: MKunctrl.awk,v 1.26 2009/07/04 22:05:15 Clemens.Ladisch Exp $
+# $Id: MKunctrl.awk,v 1.27 2012/06/09 20:29:33 tom Exp $
##############################################################################
-# Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -140,7 +140,7 @@ END {
} else {
stringname = "unctrl"
}
- print "\tint check = ChCharOf(ch);"
+ print "\tint check = (int) ChCharOf(ch);"
print "\tconst char *result;"
print ""
print "\tif (check >= 0 && check < (int)SIZEOF(unctrl_table)) {"
diff --git a/contrib/ncurses/ncurses/base/keybound.c b/contrib/ncurses/ncurses/base/keybound.c
index 65e6bfc63620..72790e840545 100644
--- a/contrib/ncurses/ncurses/base/keybound.c
+++ b/contrib/ncurses/ncurses/base/keybound.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2006,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2009,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: keybound.c,v 1.10 2009/10/24 22:15:47 tom Exp $")
+MODULE_ID("$Id: keybound.c,v 1.11 2011/10/22 16:47:05 tom Exp $")
/*
* Returns the count'th string definition which is associated with the
@@ -46,7 +46,10 @@ NCURSES_SP_NAME(keybound) (NCURSES_SP_DCLx int code, int count)
T((T_CALLED("keybound(%p, %d,%d)"), (void *) SP_PARM, code, count));
if (SP_PARM != 0 && code >= 0) {
- result = _nc_expand_try(SP_PARM->_keytry, (unsigned) code, &count, 0);
+ result = _nc_expand_try(SP_PARM->_keytry,
+ (unsigned) code,
+ &count,
+ (size_t) 0);
}
returnPtr(result);
}
diff --git a/contrib/ncurses/ncurses/base/keyok.c b/contrib/ncurses/ncurses/base/keyok.c
index 0eacf4926300..00e936dacde9 100644
--- a/contrib/ncurses/ncurses/base/keyok.c
+++ b/contrib/ncurses/ncurses/base/keyok.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: keyok.c,v 1.10 2009/10/24 22:15:47 tom Exp $")
+MODULE_ID("$Id: keyok.c,v 1.13 2012/11/18 02:14:35 tom Exp $")
/*
* Enable (or disable) ncurses' interpretation of a keycode by adding (or
@@ -50,37 +50,47 @@ NCURSES_SP_NAME(keyok) (NCURSES_SP_DCLx int c, bool flag)
{
int code = ERR;
- T((T_CALLED("keyok(%p, %d,%d)"), (void *) SP_PARM, c, flag));
+ if (HasTerminal(SP_PARM)) {
+ T((T_CALLED("keyok(%p, %d,%d)"), (void *) SP_PARM, c, flag));
#ifdef USE_TERM_DRIVER
- code = CallDriver_2(sp, kyOk, c, flag);
+ code = CallDriver_2(sp, kyOk, c, flag);
#else
- T((T_CALLED("keyok(%d,%d)"), c, flag));
- if (c >= 0) {
- int count = 0;
- char *s;
- unsigned ch = (unsigned) c;
+ T((T_CALLED("keyok(%d,%d)"), c, flag));
+ if (c >= 0) {
+ int count = 0;
+ char *s;
+ unsigned ch = (unsigned) c;
- if (flag) {
- while ((s = _nc_expand_try(SP_PARM->_key_ok, ch, &count, 0)) != 0
- && _nc_remove_key(&(SP_PARM->_key_ok), ch)) {
- code = _nc_add_to_try(&(SP_PARM->_keytry), s, ch);
- free(s);
- count = 0;
- if (code != OK)
- break;
- }
- } else {
- while ((s = _nc_expand_try(SP_PARM->_keytry, ch, &count, 0)) != 0
- && _nc_remove_key(&(SP_PARM->_keytry), ch)) {
- code = _nc_add_to_try(&(SP_PARM->_key_ok), s, ch);
- free(s);
- count = 0;
- if (code != OK)
- break;
+ if (flag) {
+ while ((s = _nc_expand_try(SP_PARM->_key_ok,
+ ch, &count, (size_t) 0)) != 0) {
+ if (_nc_remove_key(&(SP_PARM->_key_ok), ch)) {
+ code = _nc_add_to_try(&(SP_PARM->_keytry), s, ch);
+ free(s);
+ count = 0;
+ if (code != OK)
+ break;
+ } else {
+ free(s);
+ }
+ }
+ } else {
+ while ((s = _nc_expand_try(SP_PARM->_keytry,
+ ch, &count, (size_t) 0)) != 0) {
+ if (_nc_remove_key(&(SP_PARM->_keytry), ch)) {
+ code = _nc_add_to_try(&(SP_PARM->_key_ok), s, ch);
+ free(s);
+ count = 0;
+ if (code != OK)
+ break;
+ } else {
+ free(s);
+ }
+ }
}
}
- }
#endif
+ }
returnCode(code);
}
diff --git a/contrib/ncurses/ncurses/base/lib_addch.c b/contrib/ncurses/ncurses/base/lib_addch.c
index 515ebaf0b8fc..a7d498b490a0 100644
--- a/contrib/ncurses/ncurses/base/lib_addch.c
+++ b/contrib/ncurses/ncurses/base/lib_addch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_addch.c,v 1.124 2010/04/24 22:41:05 tom Exp $")
+MODULE_ID("$Id: lib_addch.c,v 1.128 2014/02/23 01:21:08 tom Exp $")
static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT);
@@ -209,7 +209,8 @@ _nc_build_wch(WINDOW *win, ARG_CH_T ch)
buffer[WINDOW_EXT(win, addch_used)] = '\0';
if ((len = (int) mbrtowc(&result,
buffer,
- WINDOW_EXT(win, addch_used), &state)) > 0) {
+ (size_t) WINDOW_EXT(win, addch_used),
+ &state)) > 0) {
attr_t attrs = AttrOf(CHDEREF(ch));
if_EXT_COLORS(int pair = GetPair(CHDEREF(ch)));
SetChar(CHDEREF(ch), result, attrs);
@@ -411,10 +412,12 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch)
#endif
const char *s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx t);
int tabsize = 8;
+
/*
* 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.
+ * claims the code is printable (and not also a control character),
+ * treat it that way.
*/
if ((AttrOf(ch) & A_ALTCHARSET)
|| (
@@ -424,14 +427,15 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch)
s[1] == 0
)
|| (
- isprint(t)
+ (isprint((int)t) && !iscntrl((int)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
diff --git a/contrib/ncurses/ncurses/base/lib_addstr.c b/contrib/ncurses/ncurses/base/lib_addstr.c
index d73ce00a4519..a1a55cb8bfd8 100644
--- a/contrib/ncurses/ncurses/base/lib_addstr.c
+++ b/contrib/ncurses/ncurses/base/lib_addstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -44,7 +44,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_addstr.c,v 1.51 2010/12/19 01:22:58 tom Exp $")
+MODULE_ID("$Id: lib_addstr.c,v 1.52 2011/05/28 23:02:09 tom Exp $")
NCURSES_EXPORT(int)
waddnstr(WINDOW *win, const char *astr, int n)
@@ -119,8 +119,10 @@ NCURSES_EXPORT(int)
_nc_wchstrlen(const cchar_t *s)
{
int result = 0;
- while (CharOf(s[result]) != L'\0') {
- result++;
+ if (s != 0) {
+ while (CharOf(s[result]) != L'\0') {
+ result++;
+ }
}
return result;
}
diff --git a/contrib/ncurses/ncurses/base/lib_beep.c b/contrib/ncurses/ncurses/base/lib_beep.c
index 9d7f7fd96f01..4e14cb74a2bf 100644
--- a/contrib/ncurses/ncurses/base/lib_beep.c
+++ b/contrib/ncurses/ncurses/base/lib_beep.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -46,7 +46,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_beep.c,v 1.15 2009/10/24 22:02:14 tom Exp $")
+MODULE_ID("$Id: lib_beep.c,v 1.16 2013/01/12 17:26:25 tom Exp $")
/*
* beep()
@@ -71,12 +71,9 @@ NCURSES_SP_NAME(beep) (NCURSES_SP_DCL0)
if (cur_term == 0) {
res = ERR;
} else if (bell) {
- TPUTS_TRACE("bell");
- res = putp(bell);
- _nc_flush();
+ res = NCURSES_PUTP2_FLUSH("bell", bell);
} else if (flash_screen) {
- TPUTS_TRACE("flash_screen");
- res = putp(flash_screen);
+ res = NCURSES_PUTP2_FLUSH("flash_screen", flash_screen);
_nc_flush();
}
#endif
diff --git a/contrib/ncurses/ncurses/base/lib_bkgd.c b/contrib/ncurses/ncurses/base/lib_bkgd.c
index 0396ba8f47a8..7bcd3ffb5a3f 100644
--- a/contrib/ncurses/ncurses/base/lib_bkgd.c
+++ b/contrib/ncurses/ncurses/base/lib_bkgd.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_bkgd.c,v 1.43 2011/01/22 19:47:37 tom Exp $")
+MODULE_ID("$Id: lib_bkgd.c,v 1.48 2012/12/09 01:01:19 tom Exp $")
/*
* Set the window's background information.
@@ -85,6 +85,7 @@ wbkgrndset(WINDOW *win, const ARG_CH_T ch)
cchar_t wch;
int tmp;
+ memset(&wch, 0, sizeof(wch));
(void) wgetbkgrnd(win, &wch);
tmp = _nc_to_char((wint_t) CharOf(wch));
@@ -118,16 +119,18 @@ wbkgrnd(WINDOW *win, const ARG_CH_T ch)
{
int code = ERR;
int x, y;
- NCURSES_CH_T new_bkgd = CHDEREF(ch);
T((T_CALLED("wbkgd(%p,%s)"), (void *) win, _tracech_t(ch)));
if (win) {
+ NCURSES_CH_T new_bkgd = CHDEREF(ch);
NCURSES_CH_T old_bkgrnd;
+
+ memset(&old_bkgrnd, 0, sizeof(old_bkgrnd));
wgetbkgrnd(win, &old_bkgrnd);
(void) wbkgrndset(win, CHREF(new_bkgd));
- (void) wattrset(win, AttrOf(win->_nc_bkgd));
+ (void) wattrset(win, (int) AttrOf(win->_nc_bkgd));
for (y = 0; y <= win->_maxy; y++) {
for (x = 0; x <= win->_maxx; x++) {
diff --git a/contrib/ncurses/ncurses/base/lib_chgat.c b/contrib/ncurses/ncurses/base/lib_chgat.c
index cdddaeae995c..1eb1f59e2385 100644
--- a/contrib/ncurses/ncurses/base/lib_chgat.c
+++ b/contrib/ncurses/ncurses/base/lib_chgat.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,14 +42,22 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_chgat.c,v 1.9 2010/03/31 23:38:02 tom Exp $")
+MODULE_ID("$Id: lib_chgat.c,v 1.10 2014/02/01 22:13:31 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,
+ NCURSES_PAIRS_T color,
+ const void *opts GCC_UNUSED)
{
int i;
- T((T_CALLED("wchgat(%p,%d,%s,%d)"), (void *) win, n, _traceattr(attr), color));
+ T((T_CALLED("wchgat(%p,%d,%s,%d)"),
+ (void *) win,
+ n,
+ _traceattr(attr),
+ (int) color));
if (win) {
struct ldat *line = &(win->_line[win->_cury]);
diff --git a/contrib/ncurses/ncurses/base/lib_color.c b/contrib/ncurses/ncurses/base/lib_color.c
index a5c181c8b4b1..9f7250ddafff 100644
--- a/contrib/ncurses/ncurses/base/lib_color.c
+++ b/contrib/ncurses/ncurses/base/lib_color.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -45,7 +45,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_color.c,v 1.98 2010/04/24 22:57:53 tom Exp $")
+MODULE_ID("$Id: lib_color.c,v 1.109 2014/02/01 22:22:30 tom Exp $")
#ifdef USE_TERM_DRIVER
#define CanChange InfoOf(SP_PARM).canchange
@@ -264,8 +264,7 @@ reset_color_pair(NCURSES_SP_DCL0)
(void) SP_PARM;
if (orig_pair != 0) {
- TPUTS_TRACE("orig_pair");
- putp(orig_pair);
+ (void) NCURSES_PUTP2("orig_pair", orig_pair);
result = TRUE;
}
return result;
@@ -292,8 +291,7 @@ NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_DCL0)
result = CallDriver(SP_PARM, rescolors);
#else
if (orig_colors != 0) {
- TPUTS_TRACE("orig_colors");
- putp(orig_colors);
+ NCURSES_PUTP2("orig_colors", orig_colors);
result = TRUE;
}
#endif
@@ -331,6 +329,13 @@ NCURSES_SP_NAME(start_color) (NCURSES_SP_DCL0)
default_bg(NCURSES_SP_ARG),
NCURSES_SP_NAME(_nc_outch));
}
+#if !NCURSES_EXT_COLORS
+ /*
+ * Without ext-colors, we cannot represent more than 256 color pairs.
+ */
+ if (maxpairs > 256)
+ maxpairs = 256;
+#endif
if (maxpairs > 0 && maxcolors > 0) {
SP_PARM->_pair_limit = maxpairs;
@@ -383,10 +388,10 @@ start_color(void)
/* This function was originally written by Daniel Weaver <danw@znyx.com> */
static void
-rgb2hls(short r, short g, short b, short *h, short *l, short *s)
+rgb2hls(int r, int g, int b, NCURSES_COLOR_T *h, NCURSES_COLOR_T *l, NCURSES_COLOR_T *s)
/* convert RGB to HLS system */
{
- short min, max, t;
+ int min, max, t;
if ((min = g < r ? g : r) > b)
min = b;
@@ -394,7 +399,7 @@ rgb2hls(short r, short g, short b, short *h, short *l, short *s)
max = b;
/* calculate lightness */
- *l = (short) ((min + max) / 20);
+ *l = (NCURSES_COLOR_T) ((min + max) / 20);
if (min == max) { /* black, white and all shades of gray */
*h = 0;
@@ -404,19 +409,19 @@ rgb2hls(short r, short g, short b, short *h, short *l, short *s)
/* calculate saturation */
if (*l < 50)
- *s = (short) (((max - min) * 100) / (max + min));
+ *s = (NCURSES_COLOR_T) (((max - min) * 100) / (max + min));
else
- *s = (short) (((max - min) * 100) / (2000 - max - min));
+ *s = (NCURSES_COLOR_T) (((max - min) * 100) / (2000 - max - min));
/* calculate hue */
if (r == max)
- t = (short) (120 + ((g - b) * 60) / (max - min));
+ t = (NCURSES_COLOR_T) (120 + ((g - b) * 60) / (max - min));
else if (g == max)
- t = (short) (240 + ((b - r) * 60) / (max - min));
+ t = (NCURSES_COLOR_T) (240 + ((b - r) * 60) / (max - min));
else
- t = (short) (360 + ((r - g) * 60) / (max - min));
+ t = (NCURSES_COLOR_T) (360 + ((r - g) * 60) / (max - min));
- *h = t % 360;
+ *h = (NCURSES_COLOR_T) (t % 360);
}
/*
@@ -424,13 +429,20 @@ rgb2hls(short r, short g, short b, short *h, short *l, short *s)
* values.
*/
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx short pair, short f, short b)
+NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx
+ NCURSES_PAIRS_T pair,
+ NCURSES_COLOR_T f,
+ NCURSES_COLOR_T b)
{
colorpair_t result;
colorpair_t previous;
int maxcolors;
- T((T_CALLED("init_pair(%p,%d,%d,%d)"), (void *) SP_PARM, pair, f, b));
+ T((T_CALLED("init_pair(%p,%d,%d,%d)"),
+ (void *) SP_PARM,
+ (int) pair,
+ (int) f,
+ (int) b));
if (!ValidPair(pair))
returnCode(ERR);
@@ -439,7 +451,7 @@ NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx short pair, short f, short b)
previous = SP_PARM->_color_pairs[pair];
#if NCURSES_EXT_FUNCS
- if (SP_PARM->_default_color) {
+ if (SP_PARM->_default_color || SP_PARM->_assumed_color) {
bool isDefault = FALSE;
bool wasDefault = FALSE;
int default_pairs = SP_PARM->_default_pairs;
@@ -498,8 +510,9 @@ NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx short pair, short f, short b)
{
if ((f < 0) || !OkColorHi(f)
|| (b < 0) || !OkColorHi(b)
- || (pair < 1))
+ || (pair < 1)) {
returnCode(ERR);
+ }
}
/*
@@ -541,15 +554,19 @@ NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx short pair, short f, short b)
TR(TRACE_ATTRS,
("initializing pair: pair = %d, fg=(%d,%d,%d), bg=(%d,%d,%d)",
- pair,
- tp[f].red, tp[f].green, tp[f].blue,
- tp[b].red, tp[b].green, tp[b].blue));
-
- 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));
+ (int) pair,
+ (int) tp[f].red, (int) tp[f].green, (int) tp[f].blue,
+ (int) tp[b].red, (int) tp[b].green, (int) tp[b].blue));
+
+ NCURSES_PUTP2("initialize_pair",
+ TPARM_7(initialize_pair,
+ pair,
+ (int) tp[f].red,
+ (int) tp[f].green,
+ (int) tp[f].blue,
+ (int) tp[b].red,
+ (int) tp[b].green,
+ (int) tp[b].blue));
}
#endif
@@ -558,7 +575,7 @@ NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx short pair, short f, short b)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-init_pair(short pair, short f, short b)
+init_pair(NCURSES_COLOR_T pair, NCURSES_COLOR_T f, NCURSES_COLOR_T b)
{
return NCURSES_SP_NAME(init_pair) (CURRENT_SCREEN, pair, f, b);
}
@@ -568,7 +585,10 @@ init_pair(short pair, short f, short b)
NCURSES_EXPORT(int)
NCURSES_SP_NAME(init_color) (NCURSES_SP_DCLx
- short color, short r, short g, short b)
+ NCURSES_COLOR_T color,
+ NCURSES_COLOR_T r,
+ NCURSES_COLOR_T g,
+ NCURSES_COLOR_T b)
{
int result = ERR;
int maxcolors;
@@ -607,8 +627,8 @@ NCURSES_SP_NAME(init_color) (NCURSES_SP_DCLx
#ifdef USE_TERM_DRIVER
CallDriver_4(SP_PARM, initcolor, color, r, g, b);
#else
- TPUTS_TRACE("initialize_color");
- putp(TPARM_4(initialize_color, color, r, g, b));
+ NCURSES_PUTP2("initialize_color",
+ TPARM_4(initialize_color, color, r, g, b));
#endif
SP_PARM->_color_defs = max(color + 1, SP_PARM->_color_defs);
@@ -619,7 +639,10 @@ NCURSES_SP_NAME(init_color) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-init_color(short color, short r, short g, short b)
+init_color(NCURSES_COLOR_T color,
+ NCURSES_COLOR_T r,
+ NCURSES_COLOR_T g,
+ NCURSES_COLOR_T b)
{
return NCURSES_SP_NAME(init_color) (CURRENT_SCREEN, color, r, g, b);
}
@@ -628,8 +651,15 @@ init_color(short color, short r, short g, short b)
NCURSES_EXPORT(bool)
NCURSES_SP_NAME(can_change_color) (NCURSES_SP_DCL)
{
+ int result = FALSE;
+
T((T_CALLED("can_change_color(%p)"), (void *) SP_PARM));
- returnCode((CanChange != 0) ? TRUE : FALSE);
+
+ if (HasTerminal(SP_PARM) && (CanChange != 0)) {
+ result = TRUE;
+ }
+
+ returnCode(result);
}
#if NCURSES_SP_FUNCS
@@ -643,20 +673,22 @@ can_change_color(void)
NCURSES_EXPORT(bool)
NCURSES_SP_NAME(has_colors) (NCURSES_SP_DCL0)
{
- int code;
+ int code = FALSE;
(void) SP_PARM;
T((T_CALLED("has_colors()")));
+ if (HasTerminal(SP_PARM)) {
#ifdef USE_TERM_DRIVER
- code = HasColor;
+ code = HasColor;
#else
- code = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
- && (((set_foreground != NULL)
- && (set_background != NULL))
- || ((set_a_foreground != NULL)
- && (set_a_background != NULL))
- || set_color_pair)) ? TRUE : FALSE);
+ code = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
+ && (((set_foreground != NULL)
+ && (set_background != NULL))
+ || ((set_a_foreground != NULL)
+ && (set_a_background != NULL))
+ || set_color_pair)) ? TRUE : FALSE);
#endif
+ }
returnCode(code);
}
@@ -670,7 +702,10 @@ has_colors(void)
NCURSES_EXPORT(int)
NCURSES_SP_NAME(color_content) (NCURSES_SP_DCLx
- short color, short *r, short *g, short *b)
+ NCURSES_COLOR_T color,
+ NCURSES_COLOR_T *r,
+ NCURSES_COLOR_T *g,
+ NCURSES_COLOR_T *b)
{
int result = ERR;
int maxcolors;
@@ -710,7 +745,10 @@ NCURSES_SP_NAME(color_content) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-color_content(short color, short *r, short *g, short *b)
+color_content(NCURSES_COLOR_T color,
+ NCURSES_COLOR_T *r,
+ NCURSES_COLOR_T *g,
+ NCURSES_COLOR_T *b)
{
return NCURSES_SP_NAME(color_content) (CURRENT_SCREEN, color, r, g, b);
}
@@ -718,21 +756,23 @@ color_content(short color, short *r, short *g, short *b)
NCURSES_EXPORT(int)
NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx
- short pair, short *f, short *b)
+ NCURSES_PAIRS_T pair,
+ NCURSES_COLOR_T *f,
+ NCURSES_COLOR_T *b)
{
int result;
T((T_CALLED("pair_content(%p,%d,%p,%p)"),
(void *) SP_PARM,
- pair,
+ (int) pair,
(void *) f,
(void *) b));
if (!ValidPair(pair)) {
result = ERR;
} else {
- NCURSES_COLOR_T fg = FORE_OF(SP_PARM->_color_pairs[pair]);
- NCURSES_COLOR_T bg = BACK_OF(SP_PARM->_color_pairs[pair]);
+ NCURSES_COLOR_T fg = (NCURSES_COLOR_T) FORE_OF(SP_PARM->_color_pairs[pair]);
+ NCURSES_COLOR_T bg = (NCURSES_COLOR_T) BACK_OF(SP_PARM->_color_pairs[pair]);
#if NCURSES_EXT_FUNCS
if (fg == COLOR_DEFAULT)
@@ -748,8 +788,8 @@ NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx
TR(TRACE_ATTRS, ("...pair_content(%p,%d,%d,%d)",
(void *) SP_PARM,
- pair,
- fg, bg));
+ (int) pair,
+ (int) fg, (int) bg));
result = OK;
}
returnCode(result);
@@ -757,7 +797,7 @@ NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-pair_content(short pair, short *f, short *b)
+pair_content(NCURSES_COLOR_T pair, NCURSES_COLOR_T *f, NCURSES_COLOR_T *b)
{
return NCURSES_SP_NAME(pair_content) (CURRENT_SCREEN, pair, f, b);
}
@@ -765,9 +805,9 @@ pair_content(short pair, short *f, short *b)
NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx
- short old_pair,
- short pair,
- bool reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_SP_OUTC outc)
{
#ifdef USE_TERM_DRIVER
@@ -775,7 +815,8 @@ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx
#else
NCURSES_COLOR_T fg = COLOR_DEFAULT;
NCURSES_COLOR_T bg = COLOR_DEFAULT;
- NCURSES_COLOR_T old_fg, old_bg;
+ NCURSES_COLOR_T old_fg = -1;
+ NCURSES_COLOR_T old_bg = -1;
if (!ValidPair(pair)) {
return;
@@ -787,13 +828,14 @@ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx
1, outc);
return;
} else if (SP_PARM != 0) {
- pair_content((short) pair, &fg, &bg);
+ if (pair_content((NCURSES_COLOR_T) pair, &fg, &bg) == ERR)
+ return;
}
}
if (old_pair >= 0
&& SP_PARM != 0
- && pair_content(old_pair, &old_fg, &old_bg) != ERR) {
+ && pair_content((NCURSES_COLOR_T) old_pair, &old_fg, &old_bg) != ERR) {
if ((isDefaultColor(fg) && !isDefaultColor(old_fg))
|| (isDefaultColor(bg) && !isDefaultColor(old_bg))) {
#if NCURSES_EXT_FUNCS
@@ -822,9 +864,9 @@ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx
#if NCURSES_EXT_FUNCS
if (isDefaultColor(fg))
- fg = (short) default_fg(NCURSES_SP_ARG);
+ fg = (NCURSES_COLOR_T) default_fg(NCURSES_SP_ARG);
if (isDefaultColor(bg))
- bg = (short) default_bg(NCURSES_SP_ARG);
+ bg = (NCURSES_COLOR_T) default_bg(NCURSES_SP_ARG);
#endif
if (reverse) {
@@ -847,7 +889,7 @@ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(void)
-_nc_do_color(short old_pair, short pair, bool reverse, NCURSES_OUTC outc)
+_nc_do_color(int old_pair, int pair, int reverse, NCURSES_OUTC outc)
{
SetSafeOutcWrapper(outc);
NCURSES_SP_NAME(_nc_do_color) (CURRENT_SCREEN,
diff --git a/contrib/ncurses/ncurses/base/lib_colorset.c b/contrib/ncurses/ncurses/base/lib_colorset.c
index 6210a0e8a8f9..e9354860ad0d 100644
--- a/contrib/ncurses/ncurses/base/lib_colorset.c
+++ b/contrib/ncurses/ncurses/base/lib_colorset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -41,14 +41,14 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_colorset.c,v 1.13 2009/10/24 22:02:14 tom Exp $")
+MODULE_ID("$Id: lib_colorset.c,v 1.14 2014/02/01 22:10:42 tom Exp $")
NCURSES_EXPORT(int)
-wcolor_set(WINDOW *win, short color_pair_number, void *opts)
+wcolor_set(WINDOW *win, NCURSES_PAIRS_T color_pair_number, void *opts)
{
int code = ERR;
- T((T_CALLED("wcolor_set(%p,%d)"), (void *) win, color_pair_number));
+ T((T_CALLED("wcolor_set(%p,%d)"), (void *) win, (int) color_pair_number));
if (win
&& !opts
&& (SP != 0)
diff --git a/contrib/ncurses/ncurses/base/lib_dft_fgbg.c b/contrib/ncurses/ncurses/base/lib_dft_fgbg.c
index 4bb9fc2774a9..00cbafb39730 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-2005,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_dft_fgbg.c,v 1.25 2009/10/24 22:15:00 tom Exp $")
+MODULE_ID("$Id: lib_dft_fgbg.c,v 1.26 2011/04/23 18:28:18 tom Exp $")
/*
* Modify the behavior of color-pair 0 so that the library doesn't assume that
@@ -80,6 +80,7 @@ NCURSES_SP_NAME(assume_default_colors) (NCURSES_SP_DCLx int fg, int bg)
SP_PARM->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : (bg & C_MASK);
if (SP_PARM->_color_pairs != 0) {
bool save = SP_PARM->_default_color;
+ SP_PARM->_assumed_color = TRUE;
SP_PARM->_default_color = TRUE;
init_pair(0, (short) fg, (short) bg);
SP_PARM->_default_color = save;
diff --git a/contrib/ncurses/ncurses/base/lib_driver.c b/contrib/ncurses/ncurses/base/lib_driver.c
index 40487609be4d..6301a5887d64 100644
--- a/contrib/ncurses/ncurses/base/lib_driver.c
+++ b/contrib/ncurses/ncurses/base/lib_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_driver.c,v 1.3 2010/12/20 00:29:17 tom Exp $")
+MODULE_ID("$Id: lib_driver.c,v 1.4 2012/09/22 19:32:46 tom Exp $")
typedef struct DriverEntry {
const char *name;
@@ -43,9 +43,9 @@ typedef struct DriverEntry {
static DRIVER_ENTRY DriverTable[] =
{
#ifdef __MINGW32__
- {"win", &_nc_WIN_DRIVER},
+ {"win32con", &_nc_WIN_DRIVER},
#endif
- {"tinfo", &_nc_TINFO_DRIVER}
+ {"tinfo", &_nc_TINFO_DRIVER} /* must be last */
};
NCURSES_EXPORT(int)
@@ -63,6 +63,20 @@ _nc_get_driver(TERMINAL_CONTROL_BLOCK * TCB, const char *name, int *errret)
for (i = 0; i < SIZEOF(DriverTable); i++) {
res = DriverTable[i].driver;
+ /*
+ * Use "#" (a character which cannot begin a terminal's name) to
+ * select specific driver from the table.
+ *
+ * In principle, we could have more than one non-terminfo driver,
+ * e.g., "win32gui".
+ */
+ if (name != 0 && *name == '#') {
+ size_t n = strlen(name + 1);
+ if (n != 0
+ && strncmp(name + 1, DriverTable[i].name, n)) {
+ continue;
+ }
+ }
if (res->CanHandle(TCB, name, errret)) {
use = res;
break;
diff --git a/contrib/ncurses/ncurses/base/lib_flash.c b/contrib/ncurses/ncurses/base/lib_flash.c
index 03f11d923b6d..3520177ea33f 100644
--- a/contrib/ncurses/ncurses/base/lib_flash.c
+++ b/contrib/ncurses/ncurses/base/lib_flash.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -46,7 +46,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_flash.c,v 1.11 2009/10/24 22:02:14 tom Exp $")
+MODULE_ID("$Id: lib_flash.c,v 1.13 2013/01/12 17:26:07 tom Exp $")
/*
* flash()
@@ -66,15 +66,13 @@ NCURSES_SP_NAME(flash) (NCURSES_SP_DCL0)
if (SP_PARM != 0)
res = CallDriver_1(SP_PARM, doBeepOrFlash, FALSE);
#else
- /* FIXME: should make sure that we are not in altchar mode */
- if (flash_screen) {
- TPUTS_TRACE("flash_screen");
- res = putp(flash_screen);
- _nc_flush();
- } else if (bell) {
- TPUTS_TRACE("bell");
- res = putp(bell);
- _nc_flush();
+ if (HasTerminal(SP_PARM)) {
+ /* FIXME: should make sure that we are not in altchar mode */
+ if (flash_screen) {
+ res = NCURSES_PUTP2_FLUSH("flash_screen", flash_screen);
+ } else if (bell) {
+ res = NCURSES_PUTP2_FLUSH("bell", bell);
+ }
}
#endif
returnCode(res);
diff --git a/contrib/ncurses/ncurses/base/lib_freeall.c b/contrib/ncurses/ncurses/base/lib_freeall.c
index 5bcc974bc257..031374924f00 100644
--- a/contrib/ncurses/ncurses/base/lib_freeall.c
+++ b/contrib/ncurses/ncurses/base/lib_freeall.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
extern int malloc_errfd; /* FIXME */
#endif
-MODULE_ID("$Id: lib_freeall.c,v 1.59 2010/01/23 17:57:43 tom Exp $")
+MODULE_ID("$Id: lib_freeall.c,v 1.62 2012/11/17 23:53:03 tom Exp $")
/*
* Free all ncurses data. This is used for testing only (there's no practical
@@ -70,19 +70,21 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0)
/* Delete only windows that're not a parent */
for (each_window(SP_PARM, p)) {
+ WINDOW *p_win = &(p->win);
bool found = FALSE;
for (each_window(SP_PARM, q)) {
+ WINDOW *q_win = &(q->win);
if ((p != q)
- && (q->win._flags & _SUBWIN)
- && (&(p->win) == q->win._parent)) {
+ && (q_win->_flags & _SUBWIN)
+ && (p_win == q_win->_parent)) {
found = TRUE;
break;
}
}
if (!found) {
- if (delwin(&(p->win)) != ERR)
+ if (delwin(p_win) != ERR)
deleted = TRUE;
break;
}
@@ -100,7 +102,7 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0)
(void) _nc_printf_string(0, empty_va);
#ifdef TRACE
- (void) _nc_trace_buf(-1, 0);
+ (void) _nc_trace_buf(-1, (size_t) 0);
#endif
#if USE_WIDEC_SUPPORT
FreeIfNeeded(_nc_wacs);
@@ -129,8 +131,9 @@ _nc_freeall(void)
NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_free_and_exit) (NCURSES_SP_DCLx int code)
{
- char *last_setbuf = (SP_PARM != 0) ? SP_PARM->_setbuf : 0;
+ char *last_buffer = (SP_PARM != 0) ? SP_PARM->out_buffer : 0;
+ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_ARG);
#ifdef TRACE
trace(0); /* close trace file, freeing its setbuf */
@@ -139,8 +142,7 @@ NCURSES_SP_NAME(_nc_free_and_exit) (NCURSES_SP_DCLx int code)
free(_nc_varargs("?", fake));
}
#endif
- fclose(stdout);
- FreeIfNeeded(last_setbuf);
+ FreeIfNeeded(last_buffer);
exit(code);
}
diff --git a/contrib/ncurses/ncurses/base/lib_getch.c b/contrib/ncurses/ncurses/base/lib_getch.c
index 130c502431b3..0a04ef5a6e1b 100644
--- a/contrib/ncurses/ncurses/base/lib_getch.c
+++ b/contrib/ncurses/ncurses/base/lib_getch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_getch.c,v 1.121 2010/12/25 23:24:04 tom Exp $")
+MODULE_ID("$Id: lib_getch.c,v 1.126 2013/02/16 18:30:37 tom Exp $")
#include <fifo_defs.h>
@@ -133,7 +133,7 @@ check_mouse_activity(SCREEN *sp, int delay EVENTLIST_2nd(_nc_eventlist * evl))
int rc;
#ifdef USE_TERM_DRIVER
- rc = TCBOf(sp)->drv->testmouse(TCBOf(sp), delay);
+ rc = TCBOf(sp)->drv->testmouse(TCBOf(sp), delay EVENTLIST_2nd(evl));
#else
#if USE_SYSMOUSE
if ((sp->_mouse_type == M_SYSMOUSE)
@@ -163,7 +163,7 @@ check_mouse_activity(SCREEN *sp, int delay EVENTLIST_2nd(_nc_eventlist * evl))
static NCURSES_INLINE int
fifo_peek(SCREEN *sp)
{
- int ch = sp->_fifo[peek];
+ int ch = (peek >= 0) ? sp->_fifo[peek] : ERR;
TR(TRACE_IEVENT, ("peeking at %d", peek));
p_inc();
@@ -173,15 +173,16 @@ fifo_peek(SCREEN *sp)
static NCURSES_INLINE int
fifo_pull(SCREEN *sp)
{
- int ch;
- ch = sp->_fifo[head];
+ int ch = (head >= 0) ? sp->_fifo[head] : ERR;
+
TR(TRACE_IEVENT, ("pulling %s from %d", _nc_tracechar(sp, ch), head));
if (peek == head) {
h_inc();
peek = head;
- } else
+ } else {
h_inc();
+ }
#ifdef TRACE
if (USE_TRACEF(TRACE_IEVENT)) {
@@ -200,7 +201,7 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
int mask = 0;
(void) mask;
- if (tail == -1)
+ if (tail < 0)
return ERR;
#ifdef HIDE_EINTR
@@ -257,6 +258,13 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
n = 1;
} else
#endif
+#if USE_KLIBC_KBD
+ if (isatty(sp->_ifd) && sp->_cbreak) {
+ ch = _read_kbd(0, 1, !sp->_raw);
+ n = (ch == -1) ? -1 : 1;
+ sp->_extended_key = (ch == 0);
+ } else
+#endif
{ /* Can block... */
#ifdef USE_TERM_DRIVER
int buf;
@@ -270,7 +278,7 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
# endif
_nc_globals.read_thread = pthread_self();
# endif
- n = (int) read(sp->_ifd, &c2, 1);
+ n = (int) read(sp->_ifd, &c2, (size_t) 1);
#if USE_PTHREADS_EINTR
_nc_globals.read_thread = 0;
#endif
@@ -431,11 +439,11 @@ _nc_wgetch(WINDOW *win,
/* ungetch in reverse order */
#ifdef NCURSES_WGETCH_EVENTS
rc = recur_wgetnstr(win, buf);
- if (rc != KEY_EVENT)
+ if (rc != KEY_EVENT && rc != ERR)
safe_ungetch(sp, '\n');
#else
- (void) recur_wgetnstr(win, buf);
- safe_ungetch(sp, '\n');
+ if (recur_wgetnstr(win, buf) != ERR)
+ safe_ungetch(sp, '\n');
#endif
for (bufp = buf + strlen(buf); bufp > buf; bufp--)
safe_ungetch(sp, bufp[-1]);
@@ -569,7 +577,7 @@ _nc_wgetch(WINDOW *win,
*
* If carriage return is defined as a function key in the
* terminfo, e.g., kent, then Solaris may return either ^J (or ^M
- * if nonl() is set) or KEY_ENTER depending on the echo() mode.
+ * if nonl() is set) or KEY_ENTER depending on the echo() mode.
* We echo before translating carriage return based on nonl(),
* since the visual result simply moves the cursor to column 0.
*
@@ -709,10 +717,11 @@ kgetch(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl))
if (ptr->value != 0) { /* sequence terminated */
TR(TRACE_IEVENT, ("end of sequence"));
- if (peek == tail)
+ if (peek == tail) {
fifo_clear(sp);
- else
+ } else {
head = peek;
+ }
return (ptr->value);
}
diff --git a/contrib/ncurses/ncurses/base/lib_getstr.c b/contrib/ncurses/ncurses/base/lib_getstr.c
index 21d8baa05c8b..0e446349ca17 100644
--- a/contrib/ncurses/ncurses/base/lib_getstr.c
+++ b/contrib/ncurses/ncurses/base/lib_getstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -40,14 +40,14 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_getstr.c,v 1.29 2009/10/24 21:59:02 tom Exp $")
+MODULE_ID("$Id: lib_getstr.c,v 1.30 2011/10/22 16:31:35 tom Exp $")
/*
* This wipes out the last character, no matter whether it was a tab, control
* or other character, and handles reverse wraparound.
*/
static char *
-WipeOut(WINDOW *win, int y, int x, char *first, char *last, bool echoed)
+WipeOut(WINDOW *win, int y, int x, char *first, char *last, int echoed)
{
if (last > first) {
*--last = '\0';
diff --git a/contrib/ncurses/ncurses/base/lib_insch.c b/contrib/ncurses/ncurses/base/lib_insch.c
index e21ec02bc84f..32eaed739443 100644
--- a/contrib/ncurses/ncurses/base/lib_insch.c
+++ b/contrib/ncurses/ncurses/base/lib_insch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_insch.c,v 1.32 2009/10/24 22:04:35 tom Exp $")
+MODULE_ID("$Id: lib_insch.c,v 1.35 2013/05/18 21:58:56 tom Exp $")
/*
* Insert the given character, updating the current location to simplify
@@ -53,6 +53,7 @@ NCURSES_EXPORT(int)
_nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch)
{
int code = OK;
+ int ch8 = (int) ChCharOf(ch);
NCURSES_CH_T wch;
int count;
NCURSES_CONST char *s;
@@ -82,10 +83,9 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch)
#if USE_WIDEC_SUPPORT
WINDOW_EXT(win, addch_used) == 0 &&
#endif
- is8bits(ChCharOf(ch)) &&
- (isprint(ChCharOf(ch)) ||
+ (isprint(ch8) ||
(ChAttrOf(ch) & A_ALTCHARSET) ||
- (sp != 0 && sp->_legacy_coding && !iscntrl(ChCharOf(ch))))) {
+ (sp != 0 && sp->_legacy_coding && !iscntrl(ch8)))) {
if (win->_curx <= win->_maxx) {
struct ldat *line = &(win->_line[win->_cury]);
NCURSES_CH_T *end = &(line->text[win->_curx]);
@@ -101,8 +101,8 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch)
*temp1 = _nc_render(win, wch);
win->_curx++;
}
- } else if (is8bits(ChCharOf(ch)) && iscntrl(ChCharOf(ch))) {
- s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx ChCharOf(ch));
+ } else if (iscntrl(ch8)) {
+ s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx (chtype) ch8);
while (*s != '\0') {
code = _nc_insert_ch(sp, win, ChAttrOf(ch) | UChar(*s));
if (code != OK)
@@ -122,18 +122,14 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch)
code = _nc_insert_wch(win, &wch);
} else if (count == -1) {
/* handle EILSEQ */
- if (is8bits(ch)) {
- s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx ChCharOf(ch));
- if (strlen(s) > 1) {
- while (*s != '\0') {
- code = _nc_insert_ch(sp, win,
- ChAttrOf(ch) | UChar(*s));
- if (code != OK)
- break;
- ++s;
- }
- } else {
- code = ERR;
+ s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx (chtype) ch8);
+ if (strlen(s) > 1) {
+ while (*s != '\0') {
+ code = _nc_insert_ch(sp, win,
+ ChAttrOf(ch) | UChar(*s));
+ if (code != OK)
+ break;
+ ++s;
}
} else {
code = ERR;
diff --git a/contrib/ncurses/ncurses/base/lib_instr.c b/contrib/ncurses/ncurses/base/lib_instr.c
index e6d1a739c94f..f708ecc51e4a 100644
--- a/contrib/ncurses/ncurses/base/lib_instr.c
+++ b/contrib/ncurses/ncurses/base/lib_instr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -41,7 +41,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_instr.c,v 1.17 2009/10/24 22:55:45 tom Exp $")
+MODULE_ID("$Id: lib_instr.c,v 1.21 2014/02/01 22:09:27 tom Exp $")
NCURSES_EXPORT(int)
winnstr(WINDOW *win, char *str, int n)
@@ -64,7 +64,7 @@ winnstr(WINDOW *win, char *str, int n)
cchar_t *cell = &(win->_line[row].text[col]);
wchar_t *wch;
attr_t attrs;
- short pair;
+ NCURSES_PAIRS_T pair;
int n2;
bool done = FALSE;
mbstate_t state;
@@ -78,11 +78,15 @@ winnstr(WINDOW *win, char *str, int n)
if (getcchar(cell, wch, &attrs, &pair, 0) == OK) {
init_mb(state);
- n3 = wcstombs(0, wch, 0);
+ n3 = wcstombs(0, wch, (size_t) 0);
if (!isEILSEQ(n3) && (n3 != 0)) {
- if (((int) n3 + i) > n) {
+ size_t need = n3 + 10 + (size_t) i;
+ int have = (int) n3 + i;
+
+ /* check for loop-done as well as overflow */
+ if (have > n || (int) need <= 0) {
done = TRUE;
- } else if ((tmp = typeCalloc(char, n3 + 10)) == 0) {
+ } else if ((tmp = typeCalloc(char, need)) == 0) {
done = TRUE;
} else {
init_mb(state);
diff --git a/contrib/ncurses/ncurses/base/lib_mouse.c b/contrib/ncurses/ncurses/base/lib_mouse.c
index dac039551165..b0e0f613ebc3 100644
--- a/contrib/ncurses/ncurses/base/lib_mouse.c
+++ b/contrib/ncurses/ncurses/base/lib_mouse.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -84,7 +84,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_mouse.c,v 1.121 2011/01/22 19:47:47 tom Exp $")
+MODULE_ID("$Id: lib_mouse.c,v 1.141 2013/09/21 19:09:19 tom Exp $")
#include <tic.h>
@@ -112,7 +112,7 @@ make an error
#undef buttons /* symbol conflict in consio.h */
#undef mouse_info /* symbol conflict in consio.h */
#include <osreldate.h>
-#if (__FreeBSD_version >= 400017)
+#if defined(__DragonFly_version) || (defined(__FreeBSD__) && (__FreeBSD_version >= 400017))
#include <sys/consio.h>
#include <sys/fbio.h>
#else
@@ -120,6 +120,17 @@ make an error
#endif
#endif /* use_SYSMOUSE */
+#if USE_KLIBC_MOUSE
+#include <sys/socket.h>
+#define pipe(handles) socketpair(AF_LOCAL, SOCK_STREAM, 0, handles)
+#define DosWrite(hfile, pbuffer, cbwrite, pcbactual) \
+ write(hfile, pbuffer, cbwrite)
+#define DosExit(action, result ) /* do nothing */
+#define DosCreateThread(ptid, pfn, param, flag, cbStack) \
+ (*(ptid) = _beginthread(pfn, NULL, cbStack, \
+ (void *)param), (*(ptid) == -1))
+#endif
+
#define MY_TRACE TRACE_ICALLS|TRACE_IEVENT
#define MASK_RELEASE(x) (mmask_t) NCURSES_MOUSE_MASK(x, 001)
@@ -148,6 +159,9 @@ make an error
#define INVALID_EVENT -1
#define NORMAL_EVENT 0
+#define ValidEvent(ep) ((ep)->id != INVALID_EVENT)
+#define Invalidate(ep) (ep)->id = INVALID_EVENT
+
#if USE_GPM_SUPPORT
#ifndef LIBGPM_SONAME
@@ -211,7 +225,7 @@ write_event(SCREEN *sp, int down, int button, int x, int y)
char buf[6];
unsigned long ignore;
- strncpy(buf, key_mouse, 3); /* should be "\033[M" */
+ strcpy(buf, "\033[M"); /* should be the same as key_mouse */
buf[3] = ' ' + (button - 1) + (down ? 0 : 0x40);
buf[4] = ' ' + x - LEFT_COL + 1;
buf[5] = ' ' + y - TOP_ROW + 1;
@@ -219,7 +233,11 @@ write_event(SCREEN *sp, int down, int button, int x, int y)
}
static void
+#if USE_KLIBC_MOUSE
+mouse_server(void *param)
+#else
mouse_server(unsigned long param)
+#endif
{
SCREEN *sp = (SCREEN *) param;
unsigned short fWait = MOU_WAIT;
@@ -245,7 +263,8 @@ mouse_server(unsigned long param)
/* sit and wait on the event queue */
rc = MouReadEventQue(&mouev, &fWait, hmou);
if (rc) {
- sprintf(err, "Error reading mouse queue, rc=%lu.\r\n", rc);
+ _nc_SPRINTF(err, _nc_SLIMIT(sizeof(err))
+ "Error reading mouse queue, rc=%lu.\r\n", rc);
break;
}
if (!sp->_emxmouse_activated)
@@ -271,9 +290,11 @@ mouse_server(unsigned long param)
finish:
oldstate = mouev.fs;
}
- } else
- sprintf(err, "Error setting event mask, buttons=%d, rc=%lu.\r\n",
- nbuttons, rc);
+ } else {
+ _nc_SPRINTF(err, _nc_SLIMIT(sizeof(err))
+ "Error setting event mask, buttons=%d, rc=%lu.\r\n",
+ nbuttons, rc);
+ }
DosWrite(2, err, strlen(err), &rc);
MouClose(hmou);
@@ -367,20 +388,26 @@ enable_xterm_mouse(SCREEN *sp, int enable)
#if USE_EMX_MOUSE
sp->_emxmouse_activated = enable;
#else
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "xterm-mouse",
- TPARM_1(sp->_mouse_xtermcap, enable));
+ NCURSES_PUTP2("xterm-mouse", TPARM_1(sp->_mouse_xtermcap, enable));
#endif
sp->_mouse_active = enable;
}
#if USE_GPM_SUPPORT
static bool
-allow_gpm_mouse(void)
+allow_gpm_mouse(SCREEN *sp)
{
bool result = FALSE;
- /* GPM does printf's without checking if stdout is a terminal */
+#if USE_WEAK_SYMBOLS
+ /* Danger Robinson: do not use dlopen for libgpm if already loaded */
+ if ((Gpm_Wgetch)) {
+ if (!sp->_mouse_gpm_loaded) {
+ T(("GPM library was already dlopen'd, not by us"));
+ }
+ } else
+#endif
+ /* GPM does printf's without checking if stdout is a terminal */
if (isatty(fileno(stdout))) {
char *list = getenv("NCURSES_GPM_TERMS");
char *env = getenv("TERM");
@@ -506,7 +533,7 @@ initialize_mousetype(SCREEN *sp)
/* Try gpm first, because gpm may be configured to run in xterm */
#if USE_GPM_SUPPORT
- if (allow_gpm_mouse()) {
+ if (allow_gpm_mouse(sp)) {
if (!sp->_mouse_gpm_loaded) {
#ifdef HAVE_LIBDL
load_gpm_library(sp);
@@ -673,7 +700,7 @@ _nc_mouse_init(SCREEN *sp)
sp->_mouse_eventp = FirstEV(sp);
for (i = 0; i < EV_MAX; i++)
- sp->_mouse_events[i].id = INVALID_EVENT;
+ Invalidate(sp->_mouse_events + i);
initialize_mousetype(sp);
@@ -750,6 +777,7 @@ _nc_mouse_event(SCREEN *sp)
eventp->bstate |= BUTTON3_RELEASED;
break;
default:
+ eventp->bstate |= REPORT_MOUSE_POSITION;
break;
}
@@ -830,7 +858,6 @@ _nc_mouse_inline(SCREEN *sp)
if (sp->_mouse_type == M_XTERM) {
unsigned char kbuf[4];
- mmask_t prev;
size_t grabbed;
int res;
@@ -896,35 +923,51 @@ _nc_mouse_inline(SCREEN *sp)
/* 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)
+ do { \
+ eventp->bstate = MASK_PRESS(n); \
+ sp->_mouse_bstate |= MASK_PRESS(n); \
+ if (kbuf[0] & 0x40) { \
+ eventp->bstate = MASK_RELEASE(n); \
+ sp->_mouse_bstate &= ~MASK_PRESS(n); \
+ } \
+ } while (0)
#else
#define PRESS_POSITION(n) \
- eventp->bstate = (mmask_t) (prev & MASK_PRESS(n) \
- ? REPORT_MOUSE_POSITION \
- : MASK_PRESS(n))
+ do { \
+ eventp->bstate = (mmask_t) (sp->_mouse_bstate & MASK_PRESS(n) \
+ ? REPORT_MOUSE_POSITION \
+ : MASK_PRESS(n)); \
+ sp->_mouse_bstate |= MASK_PRESS(n); \
+ } while (0)
#endif
switch (kbuf[0] & 0x3) {
case 0x0:
- if (kbuf[0] & 64)
+ if ((kbuf[0] & 96) == 96) {
eventp->bstate = MASK_PRESS(4);
- else
+ /* Do not record in sp->_mouse_bstate; there will be no
+ * corresponding release event.
+ */
+ } else {
PRESS_POSITION(1);
+ }
break;
case 0x1:
+ if ((kbuf[0] & 96) == 96) {
#if NCURSES_MOUSE_VERSION == 2
- if (kbuf[0] & 64)
eventp->bstate = MASK_PRESS(5);
- else
+ /* See comment above for button 4 */
+#else
+ /* Ignore this event as it is not a true press of the button */
+ eventp->bstate = REPORT_MOUSE_POSITION;
#endif
+ } else {
PRESS_POSITION(2);
+ }
break;
case 0x2:
@@ -939,12 +982,13 @@ _nc_mouse_inline(SCREEN *sp)
* release, we can infer the button actually released by looking at
* the previous event.
*/
- if (prev & (BUTTON_PRESSED | BUTTON_RELEASED)) {
+ if (sp->_mouse_bstate & BUTTON_PRESSED) {
eventp->bstate = BUTTON_RELEASED;
for (b = 1; b <= MAX_BUTTONS; ++b) {
- if (!(prev & MASK_PRESS(b)))
+ if (!(sp->_mouse_bstate & MASK_PRESS(b)))
eventp->bstate &= ~MASK_RELEASE(b);
}
+ sp->_mouse_bstate = 0;
} else {
/*
* XFree86 xterm will return a stream of release-events to
@@ -985,7 +1029,7 @@ _nc_mouse_inline(SCREEN *sp)
}
static void
-mouse_activate(SCREEN *sp, bool on)
+mouse_activate(SCREEN *sp, int on)
{
if (!on && !sp->_mouse_initialized)
return;
@@ -994,7 +1038,7 @@ mouse_activate(SCREEN *sp, bool on)
return;
if (on) {
-
+ sp->_mouse_bstate = 0;
switch (sp->_mouse_type) {
case M_XTERM:
#if NCURSES_EXT_FUNCS
@@ -1074,10 +1118,13 @@ _nc_mouse_parse(SCREEN *sp, int runcount)
/* parse a run of atomic mouse events into a gesture */
{
MEVENT *eventp = sp->_mouse_eventp;
- MEVENT *ep, *runp, *next, *prev = PREV(eventp);
+ MEVENT *next, *ep;
+ MEVENT *first_valid = NULL;
+ MEVENT *first_invalid = NULL;
int n;
int b;
bool merge;
+ bool endLoop;
TR(MY_TRACE, ("_nc_mouse_parse(%d) called", runcount));
@@ -1094,7 +1141,8 @@ _nc_mouse_parse(SCREEN *sp, int runcount)
*
* It's possible that the run may not resolve to a single event (for
* example, if the user quadruple-clicks). If so, leading events
- * in the run are ignored.
+ * in the run are ignored if user does not call getmouse in a loop (getting
+ * them from newest to older).
*
* Note that this routine is independent of the format of the specific
* format of the pointing-device's reports. We can use it to parse
@@ -1102,79 +1150,110 @@ _nc_mouse_parse(SCREEN *sp, int runcount)
* button basis, as long as the device-dependent mouse code puts stuff
* on the queue in MEVENT format.
*/
- if (runcount == 1) {
- TR(MY_TRACE,
- ("_nc_mouse_parse: returning simple mouse event %s at slot %ld",
- _nc_tracemouse(sp, prev),
- (long) IndexEV(sp, prev)));
- return (prev->id >= NORMAL_EVENT)
- ? ((prev->bstate & sp->_mouse_mask) ? TRUE : FALSE)
- : FALSE;
- }
- /* find the start of the run */
- runp = eventp;
- for (n = runcount; n > 0; n--) {
- runp = PREV(runp);
+ /*
+ * Reset all events that were not set, in case the user sometimes calls
+ * getmouse only once and other times until there are no more events in
+ * queue.
+ *
+ * This also allows reaching the beginning of the run.
+ */
+ ep = eventp;
+ for (n = runcount; n < EV_MAX; n++) {
+ Invalidate(ep);
+ ep = NEXT(ep);
}
#ifdef TRACE
if (USE_TRACEF(TRACE_IEVENT)) {
_trace_slot(sp, "before mouse press/release merge:");
_tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
- RunParams(sp, eventp, runp),
+ RunParams(sp, eventp, ep),
runcount);
_nc_unlock_global(tracef);
}
#endif /* TRACE */
/* first pass; merge press/release pairs */
- do {
- merge = FALSE;
- for (ep = runp; (next = NEXT(ep)) != eventp; ep = next) {
+ endLoop = FALSE;
+ while (!endLoop) {
+ next = NEXT(ep);
+ if (next == eventp) {
+ /* Will end the loop, but compact before */
+ endLoop = TRUE;
+ } else {
#define MASK_CHANGED(x) (!(ep->bstate & MASK_PRESS(x)) \
== !(next->bstate & MASK_RELEASE(x)))
- if (ep->x == next->x && ep->y == next->y
+ if (ValidEvent(ep) && ValidEvent(next)
+ && ep->x == next->x && ep->y == next->y
&& (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
- ) {
+ && (!(next->bstate & BUTTON_PRESSED))) {
+ bool changed = 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 (!MASK_CHANGED(b)) {
+ changed = FALSE;
+ break;
+ }
+ }
+
+ if (changed) {
+ merge = FALSE;
+ for (b = 1; b <= MAX_BUTTONS; ++b) {
+ if ((sp->_mouse_mask & MASK_CLICK(b))
+ && (ep->bstate & MASK_PRESS(b))) {
+ next->bstate &= ~MASK_RELEASE(b);
+ next->bstate |= MASK_CLICK(b);
+ merge = TRUE;
+ }
+ }
+ if (merge) {
+ Invalidate(ep);
}
}
- if (merge)
- next->id = INVALID_EVENT;
}
}
- } while
- (merge);
+ /* Compact valid events */
+ if (!ValidEvent(ep)) {
+ if ((first_valid != NULL) && (first_invalid == NULL)) {
+ first_invalid = ep;
+ }
+ } else {
+ if (first_valid == NULL) {
+ first_valid = ep;
+ } else if (first_invalid != NULL) {
+ *first_invalid = *ep;
+ Invalidate(ep);
+ first_invalid = NEXT(first_invalid);
+ }
+ }
+
+ ep = next;
+ }
+
+ if (first_invalid != NULL) {
+ eventp = first_invalid;
+ }
#ifdef TRACE
if (USE_TRACEF(TRACE_IEVENT)) {
_trace_slot(sp, "before mouse click merge:");
- _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
- RunParams(sp, eventp, runp),
- runcount);
- _nc_unlock_global(tracef);
+ if (first_valid == NULL) {
+ _tracef("_nc_mouse_parse: no valid event");
+ } else {
+ _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
+ RunParams(sp, eventp, first_valid),
+ runcount);
+ _nc_unlock_global(tracef);
+ }
}
#endif /* TRACE */
/*
- * Second pass; merge click runs. At this point, click events are
- * each followed by one invalid event. We merge click events
- * forward in the queue.
+ * Second pass; merge click runs. We merge click events forward in the
+ * queue. For example, double click can be changed to triple click.
*
* NOTE: There is a problem with this design! If the application
* allows enough click events to pile up in the circular queue so
@@ -1187,87 +1266,102 @@ _nc_mouse_parse(SCREEN *sp, int runcount)
* but the timer element would have to have sub-second resolution,
* which would get us into portability trouble.
*/
- do {
- MEVENT *follower;
-
- merge = FALSE;
- for (ep = runp; (next = NEXT(ep)) != eventp; ep = next)
- if (ep->id != INVALID_EVENT) {
- if (next->id != INVALID_EVENT)
- continue;
- follower = NEXT(next);
- if (follower->id == INVALID_EVENT)
- continue;
-
- /* merge click events forward */
- 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;
- }
+ first_invalid = NULL;
+ endLoop = (first_valid == NULL);
+ ep = first_valid;
+ while (!endLoop) {
+ next = NEXT(ep);
+
+ if (next == eventp) {
+ /* Will end the loop, but check event type and compact before */
+ endLoop = TRUE;
+ } else if (!ValidEvent(next)) {
+ continue;
+ } else {
+ /* merge click events forward */
+ if ((ep->bstate & BUTTON_CLICKED)
+ && (next->bstate & BUTTON_CLICKED)) {
+ merge = FALSE;
+ for (b = 1; b <= MAX_BUTTONS; ++b) {
+ if ((sp->_mouse_mask & MASK_DOUBLE_CLICK(b))
+ && (ep->bstate & MASK_CLICK(b))
+ && (next->bstate & MASK_CLICK(b))) {
+ next->bstate &= ~MASK_CLICK(b);
+ next->bstate |= MASK_DOUBLE_CLICK(b);
+ merge = TRUE;
}
- if (merge)
- ep->id = INVALID_EVENT;
}
+ if (merge) {
+ Invalidate(ep);
+ }
+ }
- /* merge double-click events forward */
- 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;
- }
+ /* merge double-click events forward */
+ if ((ep->bstate & BUTTON_DOUBLE_CLICKED)
+ && (next->bstate & BUTTON_CLICKED)) {
+ merge = FALSE;
+ for (b = 1; b <= MAX_BUTTONS; ++b) {
+ if ((sp->_mouse_mask & MASK_TRIPLE_CLICK(b))
+ && (ep->bstate & MASK_DOUBLE_CLICK(b))
+ && (next->bstate & MASK_CLICK(b))) {
+ next->bstate &= ~MASK_CLICK(b);
+ next->bstate |= MASK_TRIPLE_CLICK(b);
+ merge = TRUE;
}
- if (merge)
- ep->id = INVALID_EVENT;
+ }
+ if (merge) {
+ Invalidate(ep);
}
}
- } while
- (merge);
+ }
-#ifdef TRACE
- if (USE_TRACEF(TRACE_IEVENT)) {
- _trace_slot(sp, "before mouse event queue compaction:");
- _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
- RunParams(sp, eventp, runp),
- runcount);
- _nc_unlock_global(tracef);
- }
-#endif /* TRACE */
+ /* Discard event if it does not match event mask */
+ if (!(ep->bstate & sp->_mouse_mask2)) {
+ Invalidate(ep);
+ }
- /*
- * Now try to throw away trailing events flagged invalid, or that
- * don't match the current event mask.
- */
- for (; runcount; prev = PREV(eventp), runcount--)
- if (prev->id == INVALID_EVENT || !(prev->bstate & sp->_mouse_mask)) {
- sp->_mouse_eventp = eventp = prev;
+ /* Compact valid events */
+ if (!ValidEvent(ep)) {
+ if (ep == first_valid) {
+ first_valid = next;
+ } else if (first_invalid == NULL) {
+ first_invalid = ep;
+ }
+ } else if (first_invalid != NULL) {
+ *first_invalid = *ep;
+ Invalidate(ep);
+ first_invalid = NEXT(first_invalid);
}
+
+ ep = next;
+ }
+
+ if (first_invalid == NULL) {
+ first_invalid = eventp;
+ }
+ sp->_mouse_eventp = first_invalid;
+
#ifdef TRACE
- if (USE_TRACEF(TRACE_IEVENT)) {
- _trace_slot(sp, "after mouse event queue compaction:");
- _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
- RunParams(sp, eventp, runp),
- runcount);
- _nc_unlock_global(tracef);
+ if (first_valid != NULL) {
+ if (USE_TRACEF(TRACE_IEVENT)) {
+ _trace_slot(sp, "after mouse event queue compaction:");
+ _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
+ RunParams(sp, first_invalid, first_valid),
+ runcount);
+ _nc_unlock_global(tracef);
+ }
+ for (ep = first_valid; ep != first_invalid; ep = NEXT(ep)) {
+ if (ValidEvent(ep))
+ TR(MY_TRACE,
+ ("_nc_mouse_parse: returning composite mouse event %s at slot %ld",
+ _nc_tracemouse(sp, ep),
+ (long) IndexEV(sp, ep)));
+ }
}
- for (ep = runp; ep != eventp; ep = NEXT(ep))
- if (ep->id != INVALID_EVENT)
- TR(MY_TRACE,
- ("_nc_mouse_parse: returning composite mouse event %s at slot %ld",
- _nc_tracemouse(sp, ep),
- (long) IndexEV(sp, ep)));
#endif /* TRACE */
/* after all this, do we have a valid event? */
- return (PREV(eventp)->id != INVALID_EVENT);
+ return ValidEvent(PREV(first_invalid));
}
static void
@@ -1359,7 +1453,16 @@ NCURSES_SP_NAME(getmouse) (NCURSES_SP_DCLx MEVENT * aevent)
/* compute the current-event pointer */
MEVENT *prev = PREV(eventp);
- if (prev->id != INVALID_EVENT) {
+ /*
+ * Discard events not matching mask (there could be still some if
+ * _nc_mouse_parse was not called, e.g., when _nc_mouse_inline returns
+ * false).
+ */
+ while (ValidEvent(prev) && (!(prev->bstate & SP_PARM->_mouse_mask2))) {
+ Invalidate(prev);
+ prev = PREV(prev);
+ }
+ if (ValidEvent(prev)) {
/* copy the event we find there */
*aevent = *prev;
@@ -1367,9 +1470,16 @@ NCURSES_SP_NAME(getmouse) (NCURSES_SP_DCLx MEVENT * aevent)
_nc_tracemouse(SP_PARM, prev),
(long) IndexEV(SP_PARM, prev)));
- prev->id = INVALID_EVENT; /* so the queue slot becomes free */
- SP_PARM->_mouse_eventp = PREV(prev);
+ Invalidate(prev); /* so the queue slot becomes free */
+ SP_PARM->_mouse_eventp = prev;
result = OK;
+ } else {
+ /* Reset the provided event */
+ aevent->bstate = 0;
+ Invalidate(aevent);
+ aevent->x = 0;
+ aevent->y = 0;
+ aevent->z = 0;
}
}
returnCode(result);
@@ -1420,6 +1530,7 @@ NCURSES_SP_NAME(mousemask) (NCURSES_SP_DCLx mmask_t newmask, mmask_t * oldmask)
/* set the mouse event mask */
{
mmask_t result = 0;
+ int b;
T((T_CALLED("mousemask(%p,%#lx,%p)"),
(void *) SP_PARM,
@@ -1447,6 +1558,22 @@ NCURSES_SP_NAME(mousemask) (NCURSES_SP_DCLx mmask_t newmask, mmask_t * oldmask)
mouse_activate(SP_PARM, (bool) (result != 0));
SP_PARM->_mouse_mask = result;
+ SP_PARM->_mouse_mask2 = result;
+
+ /*
+ * Make a mask corresponding to the states we will need to
+ * retain (temporarily) while building up the state that the
+ * user asked for.
+ */
+ for (b = 1; b <= MAX_BUTTONS; ++b) {
+ if (SP_PARM->_mouse_mask2 & MASK_TRIPLE_CLICK(b))
+ SP_PARM->_mouse_mask2 |= MASK_DOUBLE_CLICK(b);
+ if (SP_PARM->_mouse_mask2 & MASK_DOUBLE_CLICK(b))
+ SP_PARM->_mouse_mask2 |= MASK_CLICK(b);
+ if (SP_PARM->_mouse_mask2 & MASK_CLICK(b))
+ SP_PARM->_mouse_mask2 |= (MASK_PRESS(b) |
+ MASK_RELEASE(b));
+ }
}
}
}
diff --git a/contrib/ncurses/ncurses/base/lib_newterm.c b/contrib/ncurses/ncurses/base/lib_newterm.c
index e12208b7d02d..435763d096ea 100644
--- a/contrib/ncurses/ncurses/base/lib_newterm.c
+++ b/contrib/ncurses/ncurses/base/lib_newterm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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,17 +42,13 @@
#include <curses.priv.h>
-#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#endif
-
#ifndef CUR
#define CUR SP_TERMTYPE
#endif
#include <tic.h>
-MODULE_ID("$Id: lib_newterm.c,v 1.86 2010/05/20 23:25:18 tom Exp $")
+MODULE_ID("$Id: lib_newterm.c,v 1.90 2013/09/28 21:02:56 tom Exp $")
#ifdef USE_TERM_DRIVER
#define NumLabels InfoOf(SP_PARM).numlabels
@@ -185,7 +181,7 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
START_TRACE();
T((T_CALLED("newterm(%p, \"%s\", %p,%p)"),
(void *) SP_PARM,
- name,
+ (name ? name : ""),
(void *) ofp,
(void *) ifp));
@@ -283,7 +279,8 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
NCURSES_SP_NAME(typeahead) (NCURSES_SP_ARGx fileno(_ifp));
#ifdef TERMIOS
SP_PARM->_use_meta = ((new_term->Ottyb.c_cflag & CSIZE) == CS8 &&
- !(new_term->Ottyb.c_iflag & ISTRIP));
+ !(new_term->Ottyb.c_iflag & ISTRIP)) ||
+ USE_KLIBC_KBD;
#else
SP_PARM->_use_meta = FALSE;
#endif
@@ -310,7 +307,7 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
/* compute movement costs so we can do better move optimization */
#ifdef USE_TERM_DRIVER
TCBOf(SP_PARM)->drv->scinit(SP_PARM);
-#else
+#else /* ! USE_TERM_DRIVER */
/*
* Check for mismatched graphic-rendition capabilities. Most SVr4
* terminfo trees contain entries that have rmul or rmso equated to
@@ -323,13 +320,16 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx
#define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))
SP_PARM->_use_rmso = SGR0_TEST(exit_standout_mode);
SP_PARM->_use_rmul = SGR0_TEST(exit_underline_mode);
+#if USE_ITALIC
+ SP_PARM->_use_ritm = SGR0_TEST(exit_italics_mode);
+#endif
/* compute movement costs so we can do better move optimization */
_nc_mvcur_init();
/* initialize terminal to a sane state */
_nc_screen_init();
-#endif
+#endif /* USE_TERM_DRIVER */
/* Initialize the terminal line settings. */
_nc_initscr(NCURSES_SP_ARG);
diff --git a/contrib/ncurses/ncurses/base/lib_newwin.c b/contrib/ncurses/ncurses/base/lib_newwin.c
index 72d8af84b703..a6c64beaaf4a 100644
--- a/contrib/ncurses/ncurses/base/lib_newwin.c
+++ b/contrib/ncurses/ncurses/base/lib_newwin.c
@@ -43,7 +43,7 @@
#include <curses.priv.h>
#include <stddef.h>
-MODULE_ID("$Id: lib_newwin.c,v 1.69 2011/03/07 21:58:17 tom Exp $")
+MODULE_ID("$Id: lib_newwin.c,v 1.71 2011/05/28 21:32:51 tom Exp $")
#define window_is(name) ((sp)->_##name == win)
@@ -141,7 +141,11 @@ NCURSES_SP_NAME(newwin) (NCURSES_SP_DCLx
T((T_CALLED("newwin(%p, %d,%d,%d,%d)"), (void *) SP_PARM, num_lines, num_columns,
begy, begx));
- if (begy < 0 || begx < 0 || num_lines < 0 || num_columns < 0)
+ if (begy < 0
+ || begx < 0
+ || num_lines < 0
+ || num_columns < 0
+ || SP_PARM == 0)
returnWin(0);
if (num_lines == 0)
@@ -235,10 +239,15 @@ derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx)
NCURSES_EXPORT(WINDOW *)
subwin(WINDOW *w, int l, int c, int y, int x)
{
+ WINDOW *result = 0;
+
T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), (void *) w, l, c, y, x));
- T(("parent has begy = %ld, begx = %ld", (long) w->_begy, (long) w->_begx));
+ if (w != 0) {
+ T(("parent has begy = %ld, begx = %ld", (long) w->_begy, (long) w->_begx));
- returnWin(derwin(w, l, c, y - w->_begy, x - w->_begx));
+ result = derwin(w, l, c, y - w->_begy, x - w->_begx);
+ }
+ returnWin(result);
}
static bool
diff --git a/contrib/ncurses/ncurses/base/lib_overlay.c b/contrib/ncurses/ncurses/base/lib_overlay.c
index bfb817bc3108..a206248a1e74 100644
--- a/contrib/ncurses/ncurses/base/lib_overlay.c
+++ b/contrib/ncurses/ncurses/base/lib_overlay.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2013 Free 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_overlay.c,v 1.29 2009/10/24 23:21:31 tom Exp $")
+MODULE_ID("$Id: lib_overlay.c,v 1.31 2013/04/06 23:47:13 tom Exp $")
static int
overlap(const WINDOW *const src, WINDOW *const dst, int const flag)
@@ -151,7 +151,10 @@ copywin(const WINDOW *src, WINDOW *dst,
dminrow, dmincol,
dmaxrow, dmaxcol, over));
- if (src && dst) {
+ if (src != 0
+ && dst != 0
+ && dmaxrow >= dminrow
+ && dmaxcol >= dmincol) {
_nc_lock_global(curses);
bk = AttrOf(dst->_nc_bkgd);
@@ -160,6 +163,7 @@ copywin(const WINDOW *src, WINDOW *dst,
/* make sure rectangle exists in source */
if ((sminrow + dmaxrow - dminrow) <= (src->_maxy + 1) &&
(smincol + dmaxcol - dmincol) <= (src->_maxx + 1)) {
+ bool copied = FALSE;
T(("rectangle exists in source"));
@@ -172,10 +176,18 @@ copywin(const WINDOW *src, WINDOW *dst,
dy <= dmaxrow;
sy++, dy++) {
+ if (dy < 0 || sy < 0)
+ continue;
+
touched = FALSE;
for (dx = dmincol, sx = smincol;
dx <= dmaxcol;
sx++, dx++) {
+
+ if (dx < 0 || sx < 0)
+ continue;
+ copied = TRUE;
+
if (over) {
if ((CharOf(src->_line[sy].text[sx]) != L(' ')) &&
(!CharEq(dst->_line[dy].text[dx],
@@ -201,7 +213,8 @@ copywin(const WINDOW *src, WINDOW *dst,
}
}
T(("finished copywin"));
- rc = OK;
+ if (copied)
+ rc = OK;
}
}
_nc_unlock_global(curses);
diff --git a/contrib/ncurses/ncurses/base/lib_printw.c b/contrib/ncurses/ncurses/base/lib_printw.c
index 963181d9a494..56528f6bc7a7 100644
--- a/contrib/ncurses/ncurses/base/lib_printw.c
+++ b/contrib/ncurses/ncurses/base/lib_printw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2012 Free Software 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-on *
****************************************************************************/
/*
@@ -39,7 +39,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_printw.c,v 1.20 2009/10/24 22:07:03 tom Exp $")
+MODULE_ID("$Id: lib_printw.c,v 1.23 2012/09/03 17:55:28 tom Exp $")
NCURSES_EXPORT(int)
printw(const char *fmt,...)
@@ -48,10 +48,11 @@ printw(const char *fmt,...)
int code;
#ifdef TRACE
- va_start(argp, fmt);
+ va_list argq;
+ va_start(argq, fmt);
T((T_CALLED("printw(%s%s)"),
- _nc_visbuf(fmt), _nc_varargs(fmt, argp)));
- va_end(argp);
+ _nc_visbuf(fmt), _nc_varargs(fmt, argq)));
+ va_end(argq);
#endif
va_start(argp, fmt);
@@ -68,10 +69,11 @@ wprintw(WINDOW *win, const char *fmt,...)
int code;
#ifdef TRACE
- va_start(argp, fmt);
+ va_list argq;
+ va_start(argq, fmt);
T((T_CALLED("wprintw(%p,%s%s)"),
- (void *) win, _nc_visbuf(fmt), _nc_varargs(fmt, argp)));
- va_end(argp);
+ (void *) win, _nc_visbuf(fmt), _nc_varargs(fmt, argq)));
+ va_end(argq);
#endif
va_start(argp, fmt);
@@ -88,10 +90,11 @@ mvprintw(int y, int x, const char *fmt,...)
int code;
#ifdef TRACE
- va_start(argp, fmt);
+ va_list argq;
+ va_start(argq, fmt);
T((T_CALLED("mvprintw(%d,%d,%s%s)"),
- y, x, _nc_visbuf(fmt), _nc_varargs(fmt, argp)));
- va_end(argp);
+ y, x, _nc_visbuf(fmt), _nc_varargs(fmt, argq)));
+ va_end(argq);
#endif
if ((code = move(y, x)) != ERR) {
@@ -109,10 +112,11 @@ mvwprintw(WINDOW *win, int y, int x, const char *fmt,...)
int code;
#ifdef TRACE
- va_start(argp, fmt);
+ va_list argq;
+ va_start(argq, fmt);
T((T_CALLED("mvwprintw(%d,%d,%p,%s%s)"),
- y, x, (void *) win, _nc_visbuf(fmt), _nc_varargs(fmt, argp)));
- va_end(argp);
+ y, x, (void *) win, _nc_visbuf(fmt), _nc_varargs(fmt, argq)));
+ va_end(argq);
#endif
if ((code = wmove(win, y, x)) != ERR) {
diff --git a/contrib/ncurses/ncurses/base/lib_refresh.c b/contrib/ncurses/ncurses/base/lib_refresh.c
index 8c02086a707d..a77bc487f21c 100644
--- a/contrib/ncurses/ncurses/base/lib_refresh.c
+++ b/contrib/ncurses/ncurses/base/lib_refresh.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_refresh.c,v 1.44 2010/12/19 01:22:58 tom Exp $")
+MODULE_ID("$Id: lib_refresh.c,v 1.45 2011/06/25 19:02:22 Vassili.Courzakis Exp $")
NCURSES_EXPORT(int)
wrefresh(WINDOW *win)
@@ -90,12 +90,6 @@ wnoutrefresh(WINDOW *win)
#endif
T((T_CALLED("wnoutrefresh(%p)"), (void *) win));
-#ifdef TRACE
- if (USE_TRACEF(TRACE_UPDATE)) {
- _tracedump("...win", win);
- _nc_unlock_global(tracef);
- }
-#endif /* TRACE */
/*
* This function will break badly if we try to refresh a pad.
@@ -104,6 +98,13 @@ wnoutrefresh(WINDOW *win)
|| (win->_flags & _ISPAD))
returnCode(ERR);
+#ifdef TRACE
+ if (USE_TRACEF(TRACE_UPDATE)) {
+ _tracedump("...win", win);
+ _nc_unlock_global(tracef);
+ }
+#endif /* TRACE */
+
/* put them here so "win == 0" won't break our code */
begx = win->_begx;
begy = win->_begy;
diff --git a/contrib/ncurses/ncurses/base/lib_restart.c b/contrib/ncurses/ncurses/base/lib_restart.c
index b28cfd1f2ffd..3a3756e385e8 100644
--- a/contrib/ncurses/ncurses/base/lib_restart.c
+++ b/contrib/ncurses/ncurses/base/lib_restart.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free 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,11 +41,7 @@
#include <curses.priv.h>
-#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#endif
-
-MODULE_ID("$Id: lib_restart.c,v 1.13 2009/10/24 22:47:43 tom Exp $")
+MODULE_ID("$Id: lib_restart.c,v 1.15 2012/12/08 20:40:06 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx
@@ -55,7 +51,7 @@ NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx
{
int result;
#ifdef USE_TERM_DRIVER
- TERMINAL *new_term;
+ TERMINAL *new_term = 0;
#endif
T((T_CALLED("restartterm(%p,%s,%d,%p)"),
diff --git a/contrib/ncurses/ncurses/base/lib_scanw.c b/contrib/ncurses/ncurses/base/lib_scanw.c
index a8621e63e172..637aa46ece01 100644
--- a/contrib/ncurses/ncurses/base/lib_scanw.c
+++ b/contrib/ncurses/ncurses/base/lib_scanw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -40,14 +40,14 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_scanw.c,v 1.12 2009/10/24 22:35:14 tom Exp $")
+MODULE_ID("$Id: lib_scanw.c,v 1.13 2011/10/22 16:31:35 tom Exp $")
NCURSES_EXPORT(int)
vwscanw(WINDOW *win, NCURSES_CONST char *fmt, va_list argp)
{
char buf[BUFSIZ];
- if (wgetnstr(win, buf, sizeof(buf) - 1) == ERR)
+ if (wgetnstr(win, buf, (int) sizeof(buf) - 1) == ERR)
return (ERR);
return (vsscanf(buf, fmt, argp));
diff --git a/contrib/ncurses/ncurses/base/lib_screen.c b/contrib/ncurses/ncurses/base/lib_screen.c
index 27212b790611..695ed30e7e10 100644
--- a/contrib/ncurses/ncurses/base/lib_screen.c
+++ b/contrib/ncurses/ncurses/base/lib_screen.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_screen.c,v 1.38 2009/10/24 22:08:55 tom Exp $")
+MODULE_ID("$Id: lib_screen.c,v 1.41 2011/10/22 15:03:11 tom Exp $")
#define MAX_SIZE 0x3fff /* 16k is big enough for a window or pad */
@@ -51,8 +51,11 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep)
T((T_CALLED("getwin(%p)"), (void *) filep));
+ if (filep == 0) {
+ returnWin(0);
+ }
clearerr(filep);
- if (fread(&tmp, 1, sizeof(WINDOW), filep) < sizeof(WINDOW)
+ if (fread(&tmp, (size_t) 1, sizeof(WINDOW), filep) < sizeof(WINDOW)
|| ferror(filep)
|| tmp._maxy == 0
|| tmp._maxy > MAX_SIZE
@@ -110,7 +113,7 @@ NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep)
for (n = 0; n <= nwin->_maxy; n++) {
clearerr(filep);
- if (fread(nwin->_line[n].text, 1, linesize, filep) < linesize
+ if (fread(nwin->_line[n].text, (size_t) 1, linesize, filep) < linesize
|| ferror(filep)) {
delwin(nwin);
returnWin(0);
@@ -141,7 +144,7 @@ putwin(WINDOW *win, FILE *filep)
size_t len = (size_t) (win->_maxx + 1);
clearerr(filep);
- if (fwrite(win, sizeof(WINDOW), 1, filep) != 1
+ if (fwrite(win, sizeof(WINDOW), (size_t) 1, filep) != 1
|| ferror(filep))
returnCode(code);
@@ -189,18 +192,20 @@ scr_restore(const char *file)
NCURSES_EXPORT(int)
scr_dump(const char *file)
{
+ int result;
FILE *fp = 0;
T((T_CALLED("scr_dump(%s)"), _nc_visbuf(file)));
if (_nc_access(file, W_OK) < 0
|| (fp = fopen(file, "wb")) == 0) {
- returnCode(ERR);
+ result = ERR;
} else {
(void) putwin(newscr, fp);
(void) fclose(fp);
- returnCode(OK);
+ result = OK;
}
+ returnCode(result);
}
NCURSES_EXPORT(int)
diff --git a/contrib/ncurses/ncurses/base/lib_scroll.c b/contrib/ncurses/ncurses/base/lib_scroll.c
index fe4e80804dae..8684e2519294 100644
--- a/contrib/ncurses/ncurses/base/lib_scroll.c
+++ b/contrib/ncurses/ncurses/base/lib_scroll.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,13 +43,13 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_scroll.c,v 1.28 2010/12/19 01:48:09 tom Exp $")
+MODULE_ID("$Id: lib_scroll.c,v 1.29 2011/10/22 16:34:50 tom Exp $")
NCURSES_EXPORT(void)
_nc_scroll_window(WINDOW *win,
int const n,
- NCURSES_SIZE_T const top,
- NCURSES_SIZE_T const bottom,
+ int const top,
+ int const bottom,
NCURSES_CH_T blank)
{
int limit;
diff --git a/contrib/ncurses/ncurses/base/lib_set_term.c b/contrib/ncurses/ncurses/base/lib_set_term.c
index df0a276aef8a..acf6bc1f71cd 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-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -47,7 +47,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_set_term.c,v 1.138 2010/12/20 00:42:20 tom Exp $")
+MODULE_ID("$Id: lib_set_term.c,v 1.148 2013/08/31 13:33:06 tom Exp $")
#ifdef USE_TERM_DRIVER
#define MaxColors InfoOf(sp).maxcolors
@@ -188,18 +188,7 @@ delscreen(SCREEN *sp)
FreeIfNeeded(sp->_acs_map);
FreeIfNeeded(sp->_screen_acs_map);
- /*
- * If the associated output stream has been closed, we can discard the
- * set-buffer. Limit the error check to EBADF, since fflush may fail
- * for other reasons than trying to operate upon a closed stream.
- */
- if (sp->_ofp != 0
- && sp->_setbuf != 0
- && fflush(sp->_ofp) != 0
- && errno == EBADF) {
- free(sp->_setbuf);
- }
-
+ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
NCURSES_SP_NAME(del_curterm) (NCURSES_SP_ARGx sp->_term);
free(sp);
@@ -272,8 +261,8 @@ extract_fgbg(char *src, int *result)
}
#endif
-#define ReturnScreenError() _nc_set_screen(0); \
- returnCode(ERR)
+#define ReturnScreenError() { _nc_set_screen(0); \
+ returnCode(ERR); } while (0)
/* OS-independent screen initializations */
NCURSES_EXPORT(int)
@@ -284,7 +273,7 @@ NCURSES_SP_NAME(_nc_setupscreen) (
int slines,
int scolumns,
FILE *output,
- bool filtered,
+ int filtered,
int slk_format)
{
char *env;
@@ -383,7 +372,15 @@ NCURSES_SP_NAME(_nc_setupscreen) (
sp->_lines = (NCURSES_SIZE_T) slines;
sp->_lines_avail = (NCURSES_SIZE_T) slines;
sp->_columns = (NCURSES_SIZE_T) scolumns;
+
+ fflush(output);
+ sp->_ofd = output ? fileno(output) : -1;
sp->_ofp = output;
+ sp->out_limit = (size_t) ((2 + slines) * (6 + scolumns));
+ if ((sp->out_buffer = malloc(sp->out_limit)) == 0)
+ sp->out_limit = 0;
+ sp->out_inuse = 0;
+
SP_PRE_INIT(sp);
SetNoPadding(sp);
@@ -510,16 +507,7 @@ NCURSES_SP_NAME(_nc_setupscreen) (
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_triggers = sp->_ok_attributes & XMC_CONFLICT;
#if 0
/*
* We "should" treat colors as an attribute. The wyse350 (and its
@@ -584,9 +572,13 @@ NCURSES_SP_NAME(_nc_setupscreen) (
NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_ARG);
#if USE_WIDEC_SUPPORT
+ sp->_screen_unicode = _nc_unicode_locale();
_nc_init_wacs();
+ if (_nc_wacs == 0) {
+ ReturnScreenError();
+ }
- sp->_screen_acs_fix = (_nc_unicode_locale()
+ sp->_screen_acs_fix = (sp->_screen_unicode
&& _nc_locale_breaks_acs(sp->_term));
#endif
env = _nc_get_locale();
@@ -619,6 +611,7 @@ NCURSES_SP_NAME(_nc_setupscreen) (
#endif
#if USE_SIZECHANGE
sp->_resize = NCURSES_SP_NAME(resizeterm);
+ sp->_ungetch = safe_ungetch;
#endif
NewScreen(sp)->_clear = TRUE;
@@ -695,7 +688,7 @@ NCURSES_EXPORT(int)
_nc_setupscreen(int slines GCC_UNUSED,
int scolumns GCC_UNUSED,
FILE *output,
- bool filtered,
+ int filtered,
int slk_format)
{
SCREEN *sp = 0;
@@ -759,6 +752,7 @@ NCURSES_SP_NAME(ripoffline) (NCURSES_SP_DCLx
int line,
int (*init) (WINDOW *, int))
{
+ START_TRACE();
return NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_ARGx
(line < 0) ? -1 : 1,
init);
diff --git a/contrib/ncurses/ncurses/base/lib_slkatr_set.c b/contrib/ncurses/ncurses/base/lib_slkatr_set.c
index bd5f539672a7..a3132e9ced1a 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-2005,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -38,12 +38,12 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkatr_set.c,v 1.14 2009/10/24 22:47:03 tom Exp $")
+MODULE_ID("$Id: lib_slkatr_set.c,v 1.15 2014/02/01 22:10:42 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(slk_attr_set) (NCURSES_SP_DCLx
const attr_t attr,
- short color_pair_number,
+ NCURSES_PAIRS_T color_pair_number,
void *opts)
{
int code = ERR;
@@ -51,7 +51,7 @@ NCURSES_SP_NAME(slk_attr_set) (NCURSES_SP_DCLx
T((T_CALLED("slk_attr_set(%p,%s,%d)"),
(void *) SP_PARM,
_traceattr(attr),
- color_pair_number));
+ (int) color_pair_number));
if (SP_PARM != 0
&& SP_PARM->_slk != 0
@@ -71,7 +71,7 @@ NCURSES_SP_NAME(slk_attr_set) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-slk_attr_set(const attr_t attr, short color_pair_number, void *opts)
+slk_attr_set(const attr_t attr, NCURSES_COLOR_T color_pair_number, void *opts)
{
return NCURSES_SP_NAME(slk_attr_set) (CURRENT_SCREEN, attr,
color_pair_number, opts);
diff --git a/contrib/ncurses/ncurses/base/lib_slkcolor.c b/contrib/ncurses/ncurses/base/lib_slkcolor.c
index c1211bcb884a..2cf9e5d7f121 100644
--- a/contrib/ncurses/ncurses/base/lib_slkcolor.c
+++ b/contrib/ncurses/ncurses/base/lib_slkcolor.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -38,14 +38,14 @@
*/
#include <curses.priv.h>
-MODULE_ID("$Id: lib_slkcolor.c,v 1.16 2009/10/24 22:12:21 tom Exp $")
+MODULE_ID("$Id: lib_slkcolor.c,v 1.17 2014/02/01 22:10:42 tom Exp $")
NCURSES_EXPORT(int)
-NCURSES_SP_NAME(slk_color) (NCURSES_SP_DCLx short color_pair_number)
+NCURSES_SP_NAME(slk_color) (NCURSES_SP_DCLx NCURSES_PAIRS_T color_pair_number)
{
int code = ERR;
- T((T_CALLED("slk_color(%p,%d)"), (void *) SP_PARM, color_pair_number));
+ T((T_CALLED("slk_color(%p,%d)"), (void *) SP_PARM, (int) color_pair_number));
if (SP_PARM != 0
&& SP_PARM->_slk != 0
@@ -61,7 +61,7 @@ NCURSES_SP_NAME(slk_color) (NCURSES_SP_DCLx short color_pair_number)
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-slk_color(short color_pair_number)
+slk_color(NCURSES_PAIRS_T color_pair_number)
{
return NCURSES_SP_NAME(slk_color) (CURRENT_SCREEN, color_pair_number);
}
diff --git a/contrib/ncurses/ncurses/base/lib_slkrefr.c b/contrib/ncurses/ncurses/base/lib_slkrefr.c
index b06bf8d7f802..6d9fcd63507c 100644
--- a/contrib/ncurses/ncurses/base/lib_slkrefr.c
+++ b/contrib/ncurses/ncurses/base/lib_slkrefr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_slkrefr.c,v 1.26 2010/05/01 19:17:28 tom Exp $")
+MODULE_ID("$Id: lib_slkrefr.c,v 1.29 2013/01/12 17:25:48 tom Exp $")
#ifdef USE_TERM_DRIVER
#define NumLabels InfoOf(SP_PARM).numlabels
@@ -100,22 +100,22 @@ slk_intern_refresh(SCREEN *sp)
CallDriver_2(sp, hwlabel, i + 1, slk->ent[i].form_text);
#else
if (i < num_labels) {
- TPUTS_TRACE("plab_norm");
- putp(TPARM_2(plab_norm, i + 1, slk->ent[i].form_text));
+ NCURSES_PUTP2("plab_norm",
+ TPARM_2(plab_norm,
+ i + 1,
+ slk->ent[i].form_text));
}
#endif
} else {
if (fmt == 4)
slk_paint_info(slk->win);
wmove(slk->win, SLK_LINES(fmt) - 1, slk->ent[i].ent_x);
- if (sp->_slk) {
- (void) wattrset(slk->win, AttrOf(sp->_slk->attr));
- }
+ (void) wattrset(slk->win, (int) AttrOf(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 */
- (void) wattrset(slk->win, WINDOW_ATTRS(StdScreen(sp)));
+ (void) wattrset(slk->win, (int) WINDOW_ATTRS(StdScreen(sp)));
}
}
slk->ent[i].dirty = FALSE;
@@ -128,11 +128,9 @@ slk_intern_refresh(SCREEN *sp)
CallDriver_1(sp, hwlabelOnOff, slk->hidden ? FALSE : TRUE);
#else
if (slk->hidden) {
- TPUTS_TRACE("label_off");
- putp(label_off);
+ NCURSES_PUTP2("label_off", label_off);
} else {
- TPUTS_TRACE("label_on");
- putp(label_on);
+ NCURSES_PUTP2("label_on", label_on);
}
#endif
}
diff --git a/contrib/ncurses/ncurses/base/lib_slkset.c b/contrib/ncurses/ncurses/base/lib_slkset.c
index 91483f103b23..9091e001a91d 100644
--- a/contrib/ncurses/ncurses/base/lib_slkset.c
+++ b/contrib/ncurses/ncurses/base/lib_slkset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -44,13 +44,13 @@
#endif
#endif
-MODULE_ID("$Id: lib_slkset.c,v 1.21 2010/12/25 23:43:58 tom Exp $")
+MODULE_ID("$Id: lib_slkset.c,v 1.24 2012/12/08 23:09:25 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(slk_set) (NCURSES_SP_DCLx int i, const char *astr, int format)
{
SLK *slk;
- int offset;
+ int offset = 0;
int numchrs;
int numcols;
int limit;
@@ -111,13 +111,12 @@ NCURSES_SP_NAME(slk_set) (NCURSES_SP_DCLx int i, const char *astr, int format)
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))
+ (size_t) (limit +
+ numchrs + 1))
) == 0)
returnCode(ERR);
switch (format) {
- default:
case 0: /* left-justified */
offset = 0;
break;
@@ -131,16 +130,16 @@ NCURSES_SP_NAME(slk_set) (NCURSES_SP_DCLx int i, const char *astr, int format)
if (offset <= 0)
offset = 0;
else
- memset(slk->ent[i].form_text, ' ', (unsigned) offset);
+ memset(slk->ent[i].form_text, ' ', (size_t) offset);
memcpy(slk->ent[i].form_text + offset,
slk->ent[i].ent_text,
- (unsigned) numchrs);
+ (size_t) numchrs);
if (offset < limit) {
memset(slk->ent[i].form_text + offset + numchrs,
' ',
- (unsigned) (limit - (offset + numcols)));
+ (size_t) (limit - (offset + numcols)));
}
slk->ent[i].form_text[numchrs - numcols + limit] = 0;
diff --git a/contrib/ncurses/ncurses/base/lib_touch.c b/contrib/ncurses/ncurses/base/lib_touch.c
index 8023c7058027..20ac9450f15f 100644
--- a/contrib/ncurses/ncurses/base/lib_touch.c
+++ b/contrib/ncurses/ncurses/base/lib_touch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,7 +43,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_touch.c,v 1.11 2010/12/19 01:22:58 tom Exp $")
+MODULE_ID("$Id: lib_touch.c,v 1.12 2012/06/09 20:29:33 tom Exp $")
NCURSES_EXPORT(bool)
is_linetouched(WINDOW *win, int line)
@@ -84,7 +84,7 @@ wtouchln(WINDOW *win, int y, int n, int changed)
for (i = y; i < y + n; i++) {
if (i > win->_maxy)
break;
- win->_line[i].firstchar = changed ? 0 : _NOCHANGE;
+ win->_line[i].firstchar = (NCURSES_SIZE_T) (changed ? 0 : _NOCHANGE);
win->_line[i].lastchar = (NCURSES_SIZE_T) (changed
? win->_maxx
: _NOCHANGE);
diff --git a/contrib/ncurses/ncurses/base/lib_ungetch.c b/contrib/ncurses/ncurses/base/lib_ungetch.c
index 63a14cff7594..4ee9119e5c16 100644
--- a/contrib/ncurses/ncurses/base/lib_ungetch.c
+++ b/contrib/ncurses/ncurses/base/lib_ungetch.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_ungetch.c,v 1.14 2009/10/24 22:12:21 tom Exp $")
+MODULE_ID("$Id: lib_ungetch.c,v 1.16 2012/08/04 17:38:53 tom Exp $")
#include <fifo_defs.h>
@@ -64,13 +64,14 @@ safe_ungetch(SCREEN *sp, int ch)
T((T_CALLED("ungetch(%p,%s)"), (void *) sp, _nc_tracechar(sp, ch)));
- if (tail != -1) {
- if (head == -1) {
+ if (sp != 0 && tail >= 0) {
+ if (head < 0) {
head = 0;
t_inc();
peek = tail; /* no raw keys */
- } else
+ } else {
h_dec();
+ }
sp->_fifo[head] = ch;
T(("ungetch %s ok", _nc_tracechar(sp, ch)));
diff --git a/contrib/ncurses/ncurses/base/resizeterm.c b/contrib/ncurses/ncurses/base/resizeterm.c
index 3f1d36e89d7a..03d52a448b09 100644
--- a/contrib/ncurses/ncurses/base/resizeterm.c
+++ b/contrib/ncurses/ncurses/base/resizeterm.c
@@ -45,7 +45,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: resizeterm.c,v 1.43 2011/01/10 01:34:49 tom Exp $")
+MODULE_ID("$Id: resizeterm.c,v 1.45 2012/07/07 17:07:23 tom Exp $")
/*
* If we're trying to be reentrant, do not want any local statics.
@@ -365,58 +365,71 @@ NCURSES_SP_NAME(resize_term) (NCURSES_SP_DCLx int ToLines, int ToCols)
}
#endif
if (ToLines > screen_lines(SP_PARM)) {
- increase_size(NCURSES_SP_ARGx
- myLines = ToLines, myCols, was_stolen EXTRA_ARGS);
+ result = increase_size(NCURSES_SP_ARGx
+ myLines = ToLines,
+ myCols,
+ was_stolen EXTRA_ARGS);
CurLines = myLines;
CurCols = myCols;
}
- if (ToCols > screen_columns(SP_PARM)) {
- increase_size(NCURSES_SP_ARGx
- myLines, myCols = ToCols, was_stolen EXTRA_ARGS);
+ if ((result == OK)
+ && (ToCols > screen_columns(SP_PARM))) {
+ result = increase_size(NCURSES_SP_ARGx
+ myLines,
+ myCols = ToCols,
+ was_stolen EXTRA_ARGS);
CurLines = myLines;
CurCols = myCols;
}
- if (ToLines < myLines ||
- ToCols < myCols) {
- decrease_size(NCURSES_SP_ARGx ToLines, ToCols, was_stolen EXTRA_ARGS);
+ if ((result == OK)
+ && (ToLines < myLines ||
+ ToCols < myCols)) {
+ result = decrease_size(NCURSES_SP_ARGx
+ ToLines,
+ ToCols,
+ was_stolen EXTRA_ARGS);
}
- screen_lines(SP_PARM) = (NCURSES_SIZE_T) ToLines;
- screen_columns(SP_PARM) = (NCURSES_SIZE_T) ToCols;
+ if (result == OK) {
+ screen_lines(SP_PARM) = (NCURSES_SIZE_T) ToLines;
+ screen_columns(SP_PARM) = (NCURSES_SIZE_T) ToCols;
#ifdef USE_TERM_DRIVER
- CallDriver_2(SP_PARM, setsize, ToLines, ToCols);
+ CallDriver_2(SP_PARM, setsize, ToLines, ToCols);
#else
- lines = (NCURSES_SIZE_T) ToLines;
- columns = (NCURSES_SIZE_T) ToCols;
+ lines = (NCURSES_SIZE_T) ToLines;
+ columns = (NCURSES_SIZE_T) ToCols;
#endif
- SP_PARM->_lines_avail = (NCURSES_SIZE_T) (ToLines - was_stolen);
+ SP_PARM->_lines_avail = (NCURSES_SIZE_T) (ToLines - was_stolen);
- if (SP_PARM->oldhash) {
- FreeAndNull(SP_PARM->oldhash);
- }
- if (SP_PARM->newhash) {
- FreeAndNull(SP_PARM->newhash);
- }
+ if (SP_PARM->oldhash) {
+ FreeAndNull(SP_PARM->oldhash);
+ }
+ if (SP_PARM->newhash) {
+ FreeAndNull(SP_PARM->newhash);
+ }
#ifdef TRACE
- if (USE_TRACEF(TRACE_UPDATE)) {
- SET_LINES(ToLines - was_stolen);
- SET_COLS(ToCols);
- show_window_sizes("after");
- _nc_unlock_global(tracef);
- }
+ if (USE_TRACEF(TRACE_UPDATE)) {
+ SET_LINES(ToLines - was_stolen);
+ SET_COLS(ToCols);
+ show_window_sizes("after");
+ _nc_unlock_global(tracef);
+ }
#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.
- */
- SET_LINES(ToLines - was_stolen);
- SET_COLS(ToCols);
+ if (result == OK) {
+ /*
+ * Always update LINES, to allow for call from lib_doupdate.c which
+ * needs to have the count adjusted by the stolen (ripped off) lines.
+ */
+ SET_LINES(ToLines - was_stolen);
+ SET_COLS(ToCols);
+ }
_nc_nonsp_unlock_global(curses);
@@ -471,7 +484,6 @@ NCURSES_SP_NAME(resizeterm) (NCURSES_SP_DCLx int ToLines, int ToCols)
result = NCURSES_SP_NAME(resize_term) (NCURSES_SP_ARGx ToLines, ToCols);
#if USE_SIGWINCH
- safe_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */
clearok(CurScreen(SP_PARM), TRUE); /* screen contents are unknown */
/* ripped-off lines are a special case: if we did not lengthen
@@ -501,6 +513,9 @@ NCURSES_SP_NAME(resizeterm) (NCURSES_SP_DCLx int ToLines, int ToCols)
}
#endif
}
+#if USE_SIGWINCH
+ safe_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */
+#endif
}
returnCode(result);
diff --git a/contrib/ncurses/ncurses/base/safe_sprintf.c b/contrib/ncurses/ncurses/base/safe_sprintf.c
index e73307bac282..34abd2f8cf47 100644
--- a/contrib/ncurses/ncurses/base/safe_sprintf.c
+++ b/contrib/ncurses/ncurses/base/safe_sprintf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software 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 *
+ * Author: Thomas E. Dickey 1997-on *
****************************************************************************/
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: safe_sprintf.c,v 1.24 2010/06/05 22:22:27 tom Exp $")
+MODULE_ID("$Id: safe_sprintf.c,v 1.27 2013/01/20 01:04:32 tom Exp $")
#if USE_SAFE_SPRINTF
@@ -109,12 +109,16 @@ _nc_printf_length(const char *fmt, va_list ap)
} else if (state == Prec) {
prec = ival;
}
- sprintf(fmt_arg, "%d", ival);
+ _nc_SPRINTF(fmt_arg,
+ _nc_SLIMIT(sizeof(fmt_arg))
+ "%d", ival);
fmt_len += strlen(fmt_arg);
if ((format = _nc_doalloc(format, fmt_len)) == 0) {
+ free(buffer);
return -1;
}
- strcpy(&format[--f], fmt_arg);
+ --f;
+ _nc_STRCPY(&format[f], fmt_arg, fmt_len - f);
f = strlen(format);
} else if (isalpha(UChar(*fmt))) {
done = TRUE;
@@ -185,13 +189,13 @@ _nc_printf_length(const char *fmt, va_list ap)
format[f] = '\0';
switch (used) {
case 'i':
- sprintf(buffer, format, ival);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(length) format, ival);
break;
case 'f':
- sprintf(buffer, format, fval);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(length) format, fval);
break;
default:
- sprintf(buffer, format, pval);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(length) format, pval);
break;
}
len += (int) strlen(buffer);
diff --git a/contrib/ncurses/ncurses/base/vsscanf.c b/contrib/ncurses/ncurses/base/vsscanf.c
index e6253c3a38a3..38c7926e6df2 100644
--- a/contrib/ncurses/ncurses/base/vsscanf.c
+++ b/contrib/ncurses/ncurses/base/vsscanf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2012 Free 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.18 2004/04/03 20:27:02 tom Exp $")
+MODULE_ID("$Id: vsscanf.c,v 1.20 2012/02/22 22:26:58 tom Exp $")
#if !(HAVE_VFSCANF || HAVE__DOSCAN)
@@ -293,12 +293,12 @@ vsscanf(const char *str, const char *format, va_list ap)
/* add %n, if the format was not that */
if (chunk != cAssigned) {
- strcat(my_fmt, "%n");
+ _nc_STRCAT(my_fmt, "%n", len_fmt);
}
switch (chunk) {
case cAssigned:
- strcat(my_fmt, "%n");
+ _nc_STRCAT(my_fmt, "%n", len_fmt);
pointer = &eaten;
break;
case cInt:
diff --git a/contrib/ncurses/ncurses/base/wresize.c b/contrib/ncurses/ncurses/base/wresize.c
index 9a6ea500727e..bc6b5732ea41 100644
--- a/contrib/ncurses/ncurses/base/wresize.c
+++ b/contrib/ncurses/ncurses/base/wresize.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,7 +33,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: wresize.c,v 1.34 2010/06/05 22:36:26 tom Exp $")
+MODULE_ID("$Id: wresize.c,v 1.35 2011/05/21 18:55:07 tom Exp $")
static int
cleanup_lines(struct ldat *data, int length)
@@ -175,9 +175,10 @@ wresize(WINDOW *win, int ToLines, int ToCols)
for (col = 0; col <= ToCols; ++col)
s[col] = win->_nc_bkgd;
}
- } else {
- assert(pline != 0);
+ } else if (pline != 0 && pline[win->_pary + row].text != 0) {
s = &pline[win->_pary + row].text[win->_parx];
+ } else {
+ s = 0;
}
if_USE_SCROLL_HINTS(new_lines[row].oldindex = row);
diff --git a/contrib/ncurses/ncurses/build.priv.h b/contrib/ncurses/ncurses/build.priv.h
index be00d73ea430..096a4431bc1e 100644
--- a/contrib/ncurses/ncurses/build.priv.h
+++ b/contrib/ncurses/ncurses/build.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -30,9 +30,8 @@
* Author: Thomas E. Dickey 2010 *
****************************************************************************/
-
/*
- * $Id: build.priv.h,v 1.6 2010/05/22 20:30:35 tom Exp $
+ * $Id: build.priv.h,v 1.9 2012/02/22 22:17:02 tom Exp $
*
* build.priv.h
*
@@ -83,6 +82,7 @@ extern "C" {
#define SIZEOF(v) (sizeof(v) / sizeof(v[0]))
#include <nc_alloc.h>
+#include <nc_string.h>
/* declare these, to avoid needing term.h */
#if BROKEN_LINKER || USE_REENTRANT
diff --git a/contrib/ncurses/ncurses/curses.priv.h b/contrib/ncurses/ncurses/curses.priv.h
index 49346c122a70..7deffad5ea68 100644
--- a/contrib/ncurses/ncurses/curses.priv.h
+++ b/contrib/ncurses/ncurses/curses.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -34,7 +34,7 @@
****************************************************************************/
/*
- * $Id: curses.priv.h,v 1.475 2011/01/22 21:10:19 tom Exp $
+ * $Id: curses.priv.h,v 1.530 2014/02/01 22:09:27 tom Exp $
*
* curses.priv.h
*
@@ -65,6 +65,7 @@ extern "C" {
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
+#include <sys/stat.h>
#if HAVE_UNISTD_H
#include <unistd.h>
@@ -85,6 +86,12 @@ extern "C" {
#include <errno.h>
+#if defined __hpux
+# ifndef EILSEQ
+# define EILSEQ 47
+# endif
+#endif
+
#ifndef PATH_MAX
# if defined(_POSIX_PATH_MAX)
# define PATH_MAX _POSIX_PATH_MAX
@@ -111,6 +118,14 @@ extern int errno;
#define USE_FUNC_POLL 0
#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+
/* include signal.h before curses.h to work-around defect in glibc 2.1.3 */
#include <signal.h>
@@ -135,6 +150,15 @@ extern int errno;
#define USE_EMX_MOUSE 0
#endif
+/* kLIBC keyboard/mouse support */
+#if defined(__OS2__) && defined(__KLIBC__)
+#define USE_KLIBC_KBD 1
+#define USE_KLIBC_MOUSE 1
+#else
+#define USE_KLIBC_KBD 0
+#define USE_KLIBC_MOUSE 0
+#endif
+
#define DEFAULT_MAXCLICK 166
#define EV_MAX 8 /* size of mouse circular event queue */
@@ -192,6 +216,18 @@ extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t);
#endif
/*
+ * Either/both S_ISxxx and/or S_IFxxx are defined in sys/types.h; some systems
+ * lack one or the other.
+ */
+#ifndef S_ISDIR
+#define S_ISDIR(mode) ((mode & S_IFMT) == S_IFDIR)
+#endif
+
+#ifndef S_ISREG
+#define S_ISREG(mode) ((mode & S_IFMT) == S_IFREG)
+#endif
+
+/*
* Scroll hints are useless when hashmap is used
*/
#if !USE_SCROLL_HINTS
@@ -208,6 +244,8 @@ extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t);
#define if_USE_SCROLL_HINTS(stmt) /*nothing*/
#endif
+#include <nc_string.h>
+
/*
* Options for terminal drivers, etc...
*/
@@ -250,14 +288,6 @@ typedef TRIES {
* Structure for palette tables
*/
-typedef struct
-{
- 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;
-
#define MAXCOLUMNS 135
#define MAXLINES 66
#define FIFO_SIZE MAXCOLUMNS+2 /* for nocbreak mode input */
@@ -282,6 +312,14 @@ color_t;
#include <curses.h> /* we'll use -Ipath directive to get the right one! */
+typedef struct
+{
+ NCURSES_COLOR_T red, green, blue; /* what color_content() returns */
+ NCURSES_COLOR_T r, g, b; /* params to init_color() */
+ int init; /* true if we called init_color() */
+}
+color_t;
+
/*
* If curses.h did not expose the SCREEN-functions, then we do not need the
* parameter in the corresponding unextended functions.
@@ -312,7 +350,7 @@ color_t;
#define HasTerminal(sp) (((sp) != 0) && (0 != ((sp)->_term)))
#define IsValidScreen(sp) (HasTerminal(sp) && !IsPreScreen(sp))
-#if BROKEN_LINKER || USE_REENTRANT
+#if USE_REENTRANT
#define CurTerm _nc_prescreen._cur_term
#else
#define CurTerm cur_term
@@ -325,6 +363,7 @@ color_t;
#endif
#include <term.h>
+#include <nc_termios.h>
/*
* Reduce dependency on cur_term global by using terminfo data from SCREEN's
@@ -341,6 +380,16 @@ color_t;
#include <nc_tparm.h>
/*
+ * Simplify ifdef's for the "*_ATTR" macros in case italics are not configured.
+ */
+#ifdef A_ITALIC
+#define USE_ITALIC 1
+#else
+#define USE_ITALIC 0
+#define A_ITALIC 0
+#endif
+
+/*
* Use these macros internally, to make tracing less verbose. But leave the
* option for compiling the tracing into the library.
*/
@@ -365,7 +414,7 @@ color_t;
#define if_EXT_COLORS(stmt) stmt
#define SetPair(value,p) SetPair2((value).ext_color, AttrOf(value), p)
#define SetPair2(c,a,p) c = (p), \
- a = (unColor2(a) | (A_COLOR & ColorPair(oldColor(c))))
+ a = (unColor2(a) | (A_COLOR & (unsigned) ColorPair(oldColor(c))))
#define GetPair(value) GetPair2((value).ext_color, AttrOf(value))
#define GetPair2(c,a) ((c) ? (c) : PairNumber(a))
#define oldColor(p) (((p) > 255) ? 255 : (p))
@@ -373,11 +422,7 @@ color_t;
#define SET_WINDOW_PAIR(w,p) (w)->_color = (p)
#define SameAttrOf(a,b) (AttrOf(a) == AttrOf(b) && GetPair(a) == GetPair(b))
-#if NCURSES_SP_FUNCS
-#define VIDATTR(sp,attr,pair) NCURSES_SP_NAME(vid_attr)(sp, attr, pair, 0)
-#else
-#define VIDATTR(sp,attr,pair) vid_attr(attr, pair, 0)
-#endif
+#define VIDATTR(sp,attr,pair) NCURSES_SP_NAME(vid_puts)(NCURSES_SP_ARGx attr, (short) pair, 0, NCURSES_OUTC_FUNC)
#else /* !NCURSES_EXT_COLORS */
@@ -390,14 +435,14 @@ color_t;
WINDOW_ATTRS(w) |= (A_COLOR & (attr_t) ColorPair(p))
#define SameAttrOf(a,b) (AttrOf(a) == AttrOf(b))
-#if NCURSES_SP_FUNCS
-#define VIDATTR(sp,attr,pair) NCURSES_SP_NAME(vidattr)(sp, attr)
-#else
-#define VIDATTR(sp,attr,pair) vidattr(attr)
-#endif
+#define VIDATTR(sp,attr,pair) NCURSES_SP_NAME(vidputs)(NCURSES_SP_ARGx attr, NCURSES_OUTC_FUNC)
#endif /* NCURSES_EXT_COLORS */
+#define NCURSES_OUTC_FUNC NCURSES_SP_NAME(_nc_outch)
+#define NCURSES_PUTP2(name,value) NCURSES_SP_NAME(_nc_putp)(NCURSES_SP_ARGx name, value)
+#define NCURSES_PUTP2_FLUSH(name,value) NCURSES_SP_NAME(_nc_putp_flush)(NCURSES_SP_ARGx name, value)
+
#if NCURSES_NO_PADDING
#define GetNoPadding(sp) ((sp) ? (sp)->_no_padding : _nc_prescreen._no_padding)
#define SetNoPadding(sp) _nc_set_no_padding(sp)
@@ -467,6 +512,9 @@ NCURSES_EXPORT(int *) _nc_ptr_Escdelay (SCREEN *);
# endif
# define _declare(name) __extension__ extern __typeof__(name) name
# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak))
+#else
+# undef USE_WEAK_SYMBOLS
+# define USE_WEAK_SYMBOLS 0
#endif
#endif
@@ -665,6 +713,9 @@ typedef struct {
#if USE_GPM_SUPPORT
#undef buttons /* term.h defines this, and gpm uses it! */
#include <gpm.h>
+#if USE_WEAK_SYMBOLS
+weak_symbol(Gpm_Wgetch);
+#endif
#ifdef HAVE_LIBDL
/* link dynamically to GPM */
@@ -766,17 +817,23 @@ struct DriverTCB; /* Terminal Control Block forward declaration */
#define INIT_TERM_DRIVER() /* nothing */
#endif
+typedef struct {
+ const char *name;
+ char *value;
+} ITERATOR_VARS;
+
/*
* Global data which is not specific to a screen.
*/
typedef struct {
+ SIG_ATOMIC_T have_sigtstp;
SIG_ATOMIC_T have_sigwinch;
SIG_ATOMIC_T cleanup_nested;
bool init_signals;
bool init_screen;
- const char *comp_sourcename;
+ char *comp_sourcename;
char *comp_termtype;
bool have_tic_directory;
@@ -788,6 +845,7 @@ typedef struct {
char *first_name;
char **keyname_table;
+ int init_keyname;
int slk_format;
@@ -798,6 +856,12 @@ typedef struct {
int tgetent_index;
long tgetent_sequence;
+ char *dbd_blob; /* string-heap for dbd_list[] */
+ char **dbd_list; /* distinct places to look for data */
+ int dbd_size; /* length of dbd_list[] */
+ time_t dbd_time; /* cache last updated */
+ ITERATOR_VARS dbd_vars[dbdLAST];
+
#ifndef USE_SP_WINDOWLIST
WINDOWLIST *_nc_windowlist;
#define WindowList(sp) _nc_globals._nc_windowlist
@@ -891,6 +955,7 @@ typedef struct {
const char *_tputs_trace;
#endif
#endif
+ bool use_tioctl;
} NCURSES_PRESCREEN;
/*
@@ -911,11 +976,13 @@ extern NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen;
*/
struct screen {
- int _ifd; /* input file ptr for screen */
+ int _ifd; /* input file descriptor for screen */
+ int _ofd; /* output file descriptor for screen */
FILE *_ofp; /* output file ptr for screen */
- char *_setbuf; /* buffered I/O for output */
+ char *out_buffer; /* output buffer */
+ size_t out_limit; /* output buffer size */
+ size_t out_inuse; /* output buffer current use */
bool _filtered; /* filter() was called */
- bool _buffered; /* setvbuf uses _setbuf data */
bool _prescreen; /* is in prescreen phase */
bool _use_env; /* LINES & COLS from environment? */
int _checkfd; /* filedesc for typeahead check */
@@ -1015,6 +1082,7 @@ struct screen {
int _pair_count; /* count of color pairs */
int _pair_limit; /* actual limit of color-pairs */
#if NCURSES_EXT_FUNCS
+ bool _assumed_color; /* use assumed colors */
bool _default_color; /* use default colors */
bool _has_sgr_39_49; /* has ECMA default color support */
int _default_fg; /* assumed default foreground */
@@ -1031,6 +1099,13 @@ struct screen {
/* used in lib_vidattr.c */
bool _use_rmso; /* true if we may use 'rmso' */
bool _use_rmul; /* true if we may use 'rmul' */
+#if USE_ITALIC
+ bool _use_ritm; /* true if we may use 'ritm' */
+#endif
+
+#if USE_KLIBC_KBD
+ bool _extended_key; /* true if an extended key */
+#endif
/*
* These data correspond to the state of the idcok() and idlok()
@@ -1055,7 +1130,9 @@ struct screen {
void (*_mouse_wrap) (SCREEN *);
int _mouse_fd; /* file-descriptor, if any */
bool _mouse_active; /* true if initialized */
- mmask_t _mouse_mask;
+ mmask_t _mouse_mask; /* set via mousemask() */
+ mmask_t _mouse_mask2; /* OR's in press/release bits */
+ mmask_t _mouse_bstate;
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 */
@@ -1102,6 +1179,7 @@ struct screen {
*/
#if USE_SIZECHANGE
int (*_resize)(NCURSES_SP_DCLx int y, int x);
+ int (*_ungetch)(SCREEN *, int);
#endif
/*
@@ -1120,7 +1198,6 @@ struct screen {
int *_oldnum_list;
int _oldnum_size;
- bool _cleanup; /* cleanup after int/quit signal */
NCURSES_SP_OUTC _outch; /* output handler if not putc */
int _legacy_coding; /* see use_legacy_coding() */
@@ -1158,7 +1235,10 @@ struct screen {
* UTF-8, but do not permit ACS at the same time (see tty_update.c).
*/
bool _screen_acs_fix;
+ bool _screen_unicode;
#endif
+
+ bool _use_tioctl;
};
extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain;
@@ -1168,7 +1248,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
WINDOWLIST *next;
SCREEN *screen; /* screen containing the window */
WINDOW win; /* WINDOW_EXT() needs to account for offset */
-#ifdef NCURSES_WIDECHAR
+#if NCURSES_WIDECHAR
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[] */
@@ -1189,7 +1269,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
sp->_endwin = TRUE; \
sp->_cursor = -1; \
WindowList(sp) = 0; \
- sp->_outch = NCURSES_SP_NAME(_nc_outch); \
+ sp->_outch = NCURSES_OUTC_FUNC; \
sp->jump = 0 \
/* usually in <limits.h> */
@@ -1267,8 +1347,8 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define UChar(c) ((unsigned char)(c))
#define UShort(c) ((unsigned short)(c))
-#define ChCharOf(c) ((c) & (chtype)A_CHARTEXT)
-#define ChAttrOf(c) ((c) & (chtype)A_ATTRIBUTES)
+#define ChCharOf(c) ((chtype)(c) & (chtype)A_CHARTEXT)
+#define ChAttrOf(c) ((chtype)(c) & (chtype)A_ATTRIBUTES)
#ifndef MB_LEN_MAX
#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */
@@ -1322,9 +1402,9 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define PUTC_DATA char PUTC_buf[MB_LEN_MAX]; int PUTC_i, PUTC_n; \
mbstate_t PUT_st; wchar_t PUTC_ch
#define PUTC_INIT init_mb (PUT_st)
-#define PUTC(ch,b) do { if(!isWidecExt(ch)) { \
+#define PUTC(ch) do { if(!isWidecExt(ch)) { \
if (Charable(ch)) { \
- fputc(CharOf(ch), b); \
+ NCURSES_OUTC_FUNC (NCURSES_SP_ARGx CharOf(ch)); \
COUNT_OUTCHARS(1); \
} else { \
PUTC_INIT; \
@@ -1336,10 +1416,14 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
(ch).chars[PUTC_i], &PUT_st); \
if (PUTC_n <= 0) { \
if (PUTC_ch && is8bits(PUTC_ch) && PUTC_i == 0) \
- putc(PUTC_ch,b); \
+ NCURSES_OUTC_FUNC (NCURSES_SP_ARGx CharOf(ch)); \
break; \
+ } else { \
+ int PUTC_j; \
+ for (PUTC_j = 0; PUTC_j < PUTC_n; ++PUTC_j) { \
+ NCURSES_OUTC_FUNC (NCURSES_SP_ARGx PUTC_buf[PUTC_j]); \
+ } \
} \
- IGNORE_RC(fwrite(PUTC_buf, (unsigned) PUTC_n, 1, b)); \
} \
COUNT_OUTCHARS(PUTC_i); \
} } } while (0)
@@ -1362,7 +1446,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
AttrOf(dst) |= (attr_t) (ext + 1)
#define if_WIDEC(code) code
-#define Charable(ch) ((SP_PARM != 0 && SP_PARM->_legacy_coding) \
+#define Charable(ch) ((SP_PARM->_legacy_coding) \
|| (AttrOf(ch) & A_ALTCHARSET) \
|| (!isWidecExt(ch) && \
(ch).chars[1] == L'\0' && \
@@ -1383,8 +1467,8 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#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(ch,b) do { data = CharOf(ch); putc(data,b); } while (0)
+#define PUTC_DATA /* nothing */
+#define PUTC(ch) NCURSES_OUTC_FUNC (NCURSES_SP_ARGx (int) ch)
#define BLANK (' '|A_NORMAL)
#define ZEROS ('\0'|A_NORMAL)
@@ -1412,25 +1496,25 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#define CHANGED_CELL(line,col) \
if (line->firstchar == _NOCHANGE) \
- line->firstchar = line->lastchar = (NCURSES_SIZE_T) col; \
+ line->firstchar = line->lastchar = (NCURSES_SIZE_T) (col); \
else if ((col) < line->firstchar) \
- line->firstchar = (NCURSES_SIZE_T) col; \
+ line->firstchar = (NCURSES_SIZE_T) (col); \
else if ((col) > line->lastchar) \
- line->lastchar = (NCURSES_SIZE_T) col
+ line->lastchar = (NCURSES_SIZE_T) (col)
#define CHANGED_RANGE(line,start,end) \
if (line->firstchar == _NOCHANGE \
|| line->firstchar > (start)) \
- line->firstchar = (NCURSES_SIZE_T) start; \
+ line->firstchar = (NCURSES_SIZE_T) (start); \
if (line->lastchar == _NOCHANGE \
|| line->lastchar < (end)) \
- line->lastchar = (NCURSES_SIZE_T) end
+ line->lastchar = (NCURSES_SIZE_T) (end)
#define CHANGED_TO_EOL(line,start,end) \
if (line->firstchar == _NOCHANGE \
|| line->firstchar > (start)) \
- line->firstchar = (NCURSES_SIZE_T) start; \
- line->lastchar = (NCURSES_SIZE_T) end
+ line->firstchar = (NCURSES_SIZE_T) (start); \
+ line->lastchar = (NCURSES_SIZE_T) (end)
#define SIZEOF(v) (sizeof(v)/sizeof(v[0]))
@@ -1444,6 +1528,20 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
#include <nc_alloc.h>
/*
+ * Use these for tic/infocmp malloc failures. Generally the ncurses library
+ * tries to limp along after a failure.
+ */
+#define TYPE_MALLOC(type, size, name) \
+ name = typeMalloc(type, size); \
+ if (name == 0) \
+ _nc_err_abort(MSG_NO_MEMORY)
+
+#define TYPE_REALLOC(type, size, name) \
+ name = typeRealloc(type, size, name); \
+ if (name == 0) \
+ _nc_err_abort(MSG_NO_MEMORY)
+
+/*
* TTY bit definition for converting tabs to spaces.
*/
#ifdef TAB3
@@ -1528,7 +1626,7 @@ extern NCURSES_EXPORT(void) _nc_locked_tracef (const char *, ...) GCC_PRINTFLIKE
#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_BOOL) _nc_retrace_bool (int);
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 *);
@@ -1539,7 +1637,7 @@ 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(char) _nc_retrace_char (char);
+extern NCURSES_EXPORT(char) _nc_retrace_char (int);
extern NCURSES_EXPORT(int) _nc_retrace_int (int);
extern NCURSES_EXPORT(int) _nc_retrace_int_attr_t (attr_t);
extern NCURSES_EXPORT(mmask_t) _nc_retrace_mmask_t (SCREEN *, mmask_t);
@@ -1619,7 +1717,9 @@ extern NCURSES_EXPORT(void) name (void); \
NCURSES_EXPORT(void) name (void) { }
#define ALL_BUT_COLOR ((chtype)~(A_COLOR))
-#define NONBLANK_ATTR (A_NORMAL|A_BOLD|A_DIM|A_BLINK)
+#define NONBLANK_ATTR (A_BOLD | A_DIM | A_BLINK | A_ITALIC)
+#define TPARM_ATTR (A_STANDOUT | A_UNDERLINE | A_REVERSE | A_BLINK | A_DIM | A_BOLD | A_ALTCHARSET | A_INVIS | A_PROTECT)
+#define XMC_CONFLICT (A_STANDOUT | A_UNDERLINE | A_REVERSE | A_BLINK | A_DIM | A_BOLD | A_INVIS | A_PROTECT | A_ITALIC)
#define XMC_CHANGES(c) ((c) & SP_PARM->_xmc_suppress)
#define toggle_attr_on(S,at) {\
@@ -1795,6 +1895,8 @@ extern NCURSES_EXPORT(int) _nc_insert_ch(SCREEN *, WINDOW *, chtype);
/* lib_mvcur.c */
#define INFINITY 1000000 /* cost: too high to use */
+extern NCURSES_EXPORT(int) _nc_mvcur(int yold, int xold, int ynew, int xnew);
+
extern NCURSES_EXPORT(void) _nc_mvcur_init (void);
extern NCURSES_EXPORT(void) _nc_mvcur_resume (void);
extern NCURSES_EXPORT(void) _nc_mvcur_wrap (void);
@@ -1816,12 +1918,31 @@ extern NCURSES_EXPORT(bool) _nc_has_mouse (SCREEN *);
extern NCURSES_EXPORT(char *) _nc_get_locale(void);
extern NCURSES_EXPORT(int) _nc_unicode_locale(void);
extern NCURSES_EXPORT(int) _nc_locale_breaks_acs(TERMINAL *);
-extern NCURSES_EXPORT(int) _nc_setupterm(NCURSES_CONST char *, int, int *, bool);
-extern NCURSES_EXPORT(void) _nc_tinfo_cmdch(TERMINAL *, char);
+extern NCURSES_EXPORT(int) _nc_setupterm(NCURSES_CONST char *, int, int *, int);
+extern NCURSES_EXPORT(void) _nc_tinfo_cmdch(TERMINAL *, int);
/* lib_set_term.c */
extern NCURSES_EXPORT(int) _nc_ripoffline(int, int(*)(WINDOW*, int));
+/* lib_setup.c */
+#define ret_error(code, fmt, arg) if (errret) {\
+ *errret = code;\
+ returnCode(ERR);\
+ } else {\
+ fprintf(stderr, fmt, arg);\
+ exit(EXIT_FAILURE);\
+ }
+
+#define ret_error1(code, fmt, arg) ret_error(code, "'%s': " fmt, arg)
+
+#define ret_error0(code, msg) if (errret) {\
+ *errret = code;\
+ returnCode(ERR);\
+ } else {\
+ fprintf(stderr, msg);\
+ exit(EXIT_FAILURE);\
+ }
+
/* lib_tstp.c */
#if USE_SIGWINCH
extern NCURSES_EXPORT(int) _nc_handle_sigwinch(SCREEN *);
@@ -1875,16 +1996,17 @@ 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 (SCREEN *, bool);
+extern NCURSES_EXPORT(int) _nc_keypad (SCREEN *, int);
extern NCURSES_EXPORT(int) _nc_ospeed (int);
extern NCURSES_EXPORT(int) _nc_outch (int);
+extern NCURSES_EXPORT(int) _nc_putchar (int);
extern NCURSES_EXPORT(int) _nc_putp(const char *, const char *);
extern NCURSES_EXPORT(int) _nc_putp_flush(const char *, const char *);
extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE *const);
-extern NCURSES_EXPORT(int) _nc_setupscreen (int, int, FILE *, bool, int);
extern NCURSES_EXPORT(int) _nc_setup_tinfo(const char *, TERMTYPE *);
+extern NCURSES_EXPORT(int) _nc_setupscreen (int, int, FILE *, int, int);
extern NCURSES_EXPORT(int) _nc_timed_wait (SCREEN *, int, int, int * EVENTLIST_2nd(_nc_eventlist *));
-extern NCURSES_EXPORT(void) _nc_do_color (short, short, bool, NCURSES_OUTC);
+extern NCURSES_EXPORT(void) _nc_do_color (int, int, int, NCURSES_OUTC);
extern NCURSES_EXPORT(void) _nc_flush (void);
extern NCURSES_EXPORT(void) _nc_free_and_exit (int) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_free_entry (ENTRY *, TERMTYPE *);
@@ -1895,8 +2017,9 @@ extern NCURSES_EXPORT(void) _nc_keep_tic_dir (const char *);
extern NCURSES_EXPORT(void) _nc_make_oldhash (int i);
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_set_buffer (FILE *, bool);
-extern NCURSES_EXPORT(void) _nc_signal_handler (bool);
+extern NCURSES_EXPORT(void) _nc_set_buffer (FILE *, int);
+extern NCURSES_EXPORT(void) _nc_setenv_num (const char *, int);
+extern NCURSES_EXPORT(void) _nc_signal_handler (int);
extern NCURSES_EXPORT(void) _nc_synchook (WINDOW *);
extern NCURSES_EXPORT(void) _nc_trace_tries (TRIES *);
@@ -1905,7 +2028,9 @@ extern NCURSES_EXPORT(void) _nc_alloc_entry_leaks(void);
extern NCURSES_EXPORT(void) _nc_captoinfo_leaks(void);
extern NCURSES_EXPORT(void) _nc_codes_leaks(void);
extern NCURSES_EXPORT(void) _nc_comp_captab_leaks(void);
+extern NCURSES_EXPORT(void) _nc_comp_error_leaks(void);
extern NCURSES_EXPORT(void) _nc_comp_scan_leaks(void);
+extern NCURSES_EXPORT(void) _nc_db_iterator_leaks(void);
extern NCURSES_EXPORT(void) _nc_keyname_leaks(void);
extern NCURSES_EXPORT(void) _nc_names_leaks(void);
extern NCURSES_EXPORT(void) _nc_tgetent_leaks(void);
@@ -1914,7 +2039,7 @@ extern NCURSES_EXPORT(void) _nc_tgetent_leaks(void);
#if !(defined(USE_TERMLIB) || defined(USE_BUILD_CC))
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);
+extern NCURSES_EXPORT(void) _nc_scroll_window (WINDOW *, int const, int const, int const, NCURSES_CH_T);
#endif
#if USE_WIDEC_SUPPORT
@@ -1946,8 +2071,26 @@ extern NCURSES_EXPORT(int) _nc_eventlist_timeout(_nc_eventlist *);
* Wide-character macros to hide some platform-differences.
*/
#if USE_WIDEC_SUPPORT
+
+#if defined(__MINGW32__)
+/*
+ * MinGW has wide-character functions, but they do not work correctly.
+ */
+
+extern int __MINGW_NOTHROW _nc_wctomb(char *, wchar_t);
+#define wctomb(s,wc) _nc_wctomb(s,wc)
+#define wcrtomb(s,wc,n) _nc_wctomb(s,wc)
+
+extern int __MINGW_NOTHROW _nc_mbtowc(wchar_t *, const char *, size_t);
+#define mbtowc(pwc,s,n) _nc_mbtowc(pwc,s,n)
+
+extern int __MINGW_NOTHROW _nc_mblen(const char *, size_t);
+#define mblen(s,n) _nc_mblen(s, n)
+
+#endif /* __MINGW32__ */
+
#if HAVE_MBTOWC && HAVE_MBLEN
-#define reset_mbytes(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0))
+#define reset_mbytes(state) IGNORE_RC(mblen(NULL, (size_t) 0)), IGNORE_RC(mbtowc(NULL, NULL, (size_t) 0))
#define count_mbytes(buffer,length,state) mblen(buffer,length)
#define check_mbytes(wch,buffer,length,state) \
(int) mbtowc(&wch, buffer, length)
@@ -1960,7 +2103,8 @@ extern NCURSES_EXPORT(int) _nc_eventlist_timeout(_nc_eventlist *);
#else
make an error
#endif
-#endif
+
+#endif /* USE_WIDEC_SUPPORT */
/*
* Not everyone has vsscanf(), but we'd like to use it for scanw().
@@ -2049,9 +2193,9 @@ extern NCURSES_EXPORT(int) _nc_get_tty_mode(TTY *);
#define SetSafeOutcWrapper(outc) \
SCREEN* sp = CURRENT_SCREEN; \
+ struct screen outc_wrapper; \
if (sp==0) { \
- struct screen dummy; \
- sp = &dummy; \
+ sp = &outc_wrapper; \
memset(sp,0,sizeof(struct screen)); \
sp->_outch = _nc_outc_wrapper; \
}\
@@ -2084,39 +2228,39 @@ typedef struct _termInfo
typedef struct term_driver {
bool isTerminfo;
- bool (*CanHandle)(struct DriverTCB*,const char*,int*);
+ bool (*CanHandle)(struct DriverTCB*, const char*, int*);
void (*init)(struct DriverTCB*);
void (*release)(struct DriverTCB*);
int (*size)(struct DriverTCB*, int* Line, int *Cols);
- int (*sgmode)(struct DriverTCB*, bool setFlag, TTY*);
+ int (*sgmode)(struct DriverTCB*, int setFlag, TTY*);
chtype (*conattr)(struct DriverTCB*);
int (*hwcur)(struct DriverTCB*, int yold, int xold, int y, int x);
- int (*mode)(struct DriverTCB*, bool progFlag, bool defFlag);
+ int (*mode)(struct DriverTCB*, int progFlag, int defFlag);
bool (*rescol)(struct DriverTCB*);
bool (*rescolors)(struct DriverTCB*);
- void (*color)(struct DriverTCB*,bool fore, int color, int(*)(SCREEN*,int));
- int (*doBeepOrFlash)(struct DriverTCB*, bool);
- void (*initpair)(struct DriverTCB*,short,short,short);
- void (*initcolor)(struct DriverTCB*,short,short,short,short);
- void (*docolor)(struct DriverTCB*,short,short,bool,int(*)(SCREEN*,int));
+ void (*color)(struct DriverTCB*, int fore, int color, int(*)(SCREEN*, int));
+ int (*doBeepOrFlash)(struct DriverTCB*, int);
+ void (*initpair)(struct DriverTCB*, int, int, int);
+ void (*initcolor)(struct DriverTCB*, int, int, int, int);
+ void (*docolor)(struct DriverTCB*, int, int, int, int(*)(SCREEN*, int));
void (*initmouse)(struct DriverTCB*);
- int (*testmouse)(struct DriverTCB*,int);
+ int (*testmouse)(struct DriverTCB*, int EVENTLIST_2nd(_nc_eventlist*));
void (*setfilter)(struct DriverTCB*);
- void (*hwlabel)(struct DriverTCB*,int,char*);
- void (*hwlabelOnOff)(struct DriverTCB*,bool);
+ void (*hwlabel)(struct DriverTCB*, int, char*);
+ void (*hwlabelOnOff)(struct DriverTCB*, int);
int (*update)(struct DriverTCB*);
- int (*defaultcolors)(struct DriverTCB*,int,int);
- int (*print)(struct DriverTCB*,char*,int);
- int (*getsize)(struct DriverTCB*,int*,int*);
- int (*setsize)(struct DriverTCB*,int,int);
- void (*initacs)(struct DriverTCB*,chtype*,chtype*);
+ int (*defaultcolors)(struct DriverTCB*, int, int);
+ int (*print)(struct DriverTCB*, char*, int);
+ int (*getsize)(struct DriverTCB*, int*, int*);
+ int (*setsize)(struct DriverTCB*, int, int);
+ void (*initacs)(struct DriverTCB*, chtype*, chtype*);
void (*scinit)(SCREEN *);
void (*scexit)(SCREEN *);
- int (*twait)(struct DriverTCB*,int,int,int* EVENTLIST_2nd(_nc_eventlist*));
- int (*read)(struct DriverTCB*,int*);
- int (*nap)(struct DriverTCB*,int);
- int (*kpad)(struct DriverTCB*, bool);
- int (*kyOk)(struct DriverTCB*, int, bool);
+ int (*twait)(struct DriverTCB*, int, int, int* EVENTLIST_2nd(_nc_eventlist*));
+ int (*read)(struct DriverTCB*, int*);
+ int (*nap)(struct DriverTCB*, int);
+ int (*kpad)(struct DriverTCB*, int);
+ int (*kyOk)(struct DriverTCB*, int, int);
bool (*kyExist)(struct DriverTCB*, int);
} TERM_DRIVER;
@@ -2166,7 +2310,7 @@ extern NCURSES_EXPORT(int) TINFO_MVCUR(SCREEN*, int, int, int, int);
#else
#define TINFO_HAS_KEY NCURSES_SP_NAME(has_key)
#define TINFO_DOUPDATE NCURSES_SP_NAME(doupdate)
-#define TINFO_MVCUR NCURSES_SP_NAME(mvcur)
+#define TINFO_MVCUR NCURSES_SP_NAME(_nc_mvcur)
#endif
/*
@@ -2174,7 +2318,7 @@ extern NCURSES_EXPORT(int) TINFO_MVCUR(SCREEN*, int, int, int, int);
*/
#ifdef USE_TERM_DRIVER
extern NCURSES_EXPORT(void) _nc_get_screensize(SCREEN *, TERMINAL *, int *, int *);
-extern NCURSES_EXPORT(int) _nc_setupterm_ex(TERMINAL **, NCURSES_CONST char *, int , int *, bool);
+extern NCURSES_EXPORT(int) _nc_setupterm_ex(TERMINAL **, NCURSES_CONST char *, int , int *, int);
#define TINFO_GET_SIZE(sp, tp, lp, cp) \
_nc_get_screensize(sp, tp, lp, cp)
#define TINFO_SET_CURTERM(sp, tp) \
@@ -2200,12 +2344,13 @@ extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_TINFO_DRIVER;
#endif
#ifdef USE_TERM_DRIVER
-#define IsTermInfo(sp) (TCBOf(sp) && ((TCBOf(sp)->drv->isTerminfo)))
+#define IsTermInfo(sp) ((TCBOf(sp) != 0) && ((TCBOf(sp)->drv->isTerminfo)))
+#define HasTInfoTerminal(sp) ((0 != TerminalOf(sp)) && IsTermInfo(sp))
#else
#define IsTermInfo(sp) TRUE
+#define HasTInfoTerminal(sp) (0 != TerminalOf(sp))
#endif
-#define HasTInfoTerminal(sp) ((0 != TerminalOf(sp)) && IsTermInfo(sp))
#define IsValidTIScreen(sp) (HasTInfoTerminal(sp))
/*
@@ -2239,7 +2384,9 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_curs_set)(SCREEN*,int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_get_tty_mode)(SCREEN*,TTY*);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_mcprint)(SCREEN*,char*, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_msec_cost)(SCREEN*, const char *, int);
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_mvcur)(SCREEN*, int, int, int, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_outch)(SCREEN*, int);
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putchar)(SCREEN*, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putp)(SCREEN*, const char *, const char*);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putp_flush)(SCREEN*, const char *, const char *);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_resetty)(SCREEN*);
@@ -2250,12 +2397,12 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_scr_init)(SCREEN*,const char
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_scr_restore)(SCREEN*, const char*);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_scrolln)(SCREEN*, int, int, int, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_set_tty_mode)(SCREEN*, TTY*);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_setupscreen)(SCREEN**, int, int, FILE *, bool, int);
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_setupscreen)(SCREEN**, int, int, FILE *, int, int);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_tgetent)(SCREEN*,char*,const char *);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_tigetnum)(SCREEN*,NCURSES_CONST char*);
-extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vid_attr)(SCREEN *, attr_t, short, void *);
+extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vid_attr)(SCREEN *, attr_t, NCURSES_COLOR_T, void *);
extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vidputs)(SCREEN*,chtype,int(*) (SCREEN*, int));
-extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_color)(SCREEN*, short, short, bool, NCURSES_SP_OUTC);
+extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_color)(SCREEN*, int, int, int, NCURSES_SP_OUTC);
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_xmc_glitch)(SCREEN*, attr_t);
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_flush)(SCREEN*);
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int) GCC_NORETURN;
@@ -2271,7 +2418,7 @@ extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_screen_resume)(SCREEN*);
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_screen_wrap)(SCREEN*);
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_scroll_oldhash)(SCREEN*, int n, int top, int bot);
extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_scroll_optimize)(SCREEN*);
-extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_set_buffer)(SCREEN*, FILE *, bool);
+extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_set_buffer)(SCREEN*, FILE *, int);
extern NCURSES_EXPORT(void) _nc_cookie_init(SCREEN *sp);
diff --git a/contrib/ncurses/ncurses/fifo_defs.h b/contrib/ncurses/ncurses/fifo_defs.h
index fa9ae2264635..c0c795a81634 100644
--- a/contrib/ncurses/ncurses/fifo_defs.h
+++ b/contrib/ncurses/ncurses/fifo_defs.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2002,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2008,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -34,7 +34,7 @@
/*
* Common macros for lib_getch.c, lib_ungetch.c
*
- * $Id: fifo_defs.h,v 1.6 2008/06/28 15:52:32 tom Exp $
+ * $Id: fifo_defs.h,v 1.7 2012/08/04 15:59:17 tom Exp $
*/
#ifndef FIFO_DEFS_H
@@ -45,14 +45,42 @@
/* peek points to next uninterpreted character */
#define peek sp->_fifopeek
-#define h_inc() { head == FIFO_SIZE-1 ? head = 0 : head++; if (head == tail) head = -1, tail = 0;}
-#define h_dec() { head == 0 ? head = FIFO_SIZE-1 : head--; if (head == tail) tail = -1;}
-#define t_inc() { tail == FIFO_SIZE-1 ? tail = 0 : tail++; if (tail == head) tail = -1;}
-#define t_dec() { tail == 0 ? tail = FIFO_SIZE-1 : tail--; if (head == tail) fifo_clear(sp);}
-#define p_inc() { peek == FIFO_SIZE-1 ? peek = 0 : peek++;}
+#define h_inc() { \
+ (head >= FIFO_SIZE-1) \
+ ? head = 0 \
+ : head++; \
+ if (head == tail) \
+ head = -1, tail = 0; \
+ }
+#define h_dec() { \
+ (head <= 0) \
+ ? head = FIFO_SIZE-1 \
+ : head--; \
+ if (head == tail) \
+ tail = -1; \
+ }
+#define t_inc() { \
+ (tail >= FIFO_SIZE-1) \
+ ? tail = 0 \
+ : tail++; \
+ if (tail == head) \
+ tail = -1; \
+ }
+#define t_dec() { \
+ (tail <= 0) \
+ ? tail = FIFO_SIZE-1 \
+ : tail--; \
+ if (head == tail) \
+ fifo_clear(sp); \
+ }
+#define p_inc() { \
+ (peek >= FIFO_SIZE-1) \
+ ? peek = 0 \
+ : peek++; \
+ }
-#define cooked_key_in_fifo() ((head != -1) && (peek != head))
-#define raw_key_in_fifo() ((head != -1) && (peek != tail))
+#define cooked_key_in_fifo() ((head >= 0) && (peek != head))
+#define raw_key_in_fifo() ((head >= 0) && (peek != tail))
#undef HIDE_EINTR
diff --git a/contrib/ncurses/ncurses/llib-lncurses b/contrib/ncurses/ncurses/llib-lncurses
index 48f42830272a..d98dcd596326 100644
--- a/contrib/ncurses/ncurses/llib-lncurses
+++ b/contrib/ncurses/ncurses/llib-lncurses
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2013 Free Software 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-2010,2011 *
+ * Author: Thomas E. Dickey 1996-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -95,8 +95,6 @@ void _nc_scroll_oldhash(
/* ./base/lib_addch.c */
-#include <ctype.h>
-
#undef _nc_render
chtype _nc_render(
WINDOW *win,
@@ -219,8 +217,6 @@ int wclrtoeol(
/* ./base/lib_color.c */
-#include <tic.h>
-
#undef COLOR_PAIRS
int COLOR_PAIRS;
#undef COLORS
@@ -329,17 +325,17 @@ int pair_content(
#undef _nc_do_color_sp
void _nc_do_color_sp(
SCREEN *sp,
- short old_pair,
- short pair,
- NCURSES_BOOL reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_OUTC_sp outc)
{ /* void */ }
#undef _nc_do_color
void _nc_do_color(
- short old_pair,
- short pair,
- NCURSES_BOOL reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_OUTC outc)
{ /* void */ }
@@ -418,85 +414,85 @@ int flash(void)
/* ./lib_gen.c */
#undef addch
-int addch(
+int (addch)(
const chtype z)
{ return(*(int *)0); }
#undef addchnstr
-int addchnstr(
+int (addchnstr)(
const chtype *a1,
int z)
{ return(*(int *)0); }
#undef addchstr
-int addchstr(
+int (addchstr)(
const chtype *z)
{ return(*(int *)0); }
#undef addnstr
-int addnstr(
+int (addnstr)(
const char *a1,
int z)
{ return(*(int *)0); }
#undef addstr
-int addstr(
+int (addstr)(
const char *z)
{ return(*(int *)0); }
#undef attroff
-int attroff(
+int (attroff)(
NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attron
-int attron(
+int (attron)(
NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attrset
-int attrset(
+int (attrset)(
NCURSES_ATTR_T z)
{ return(*(int *)0); }
#undef attr_get
-int attr_get(
+int (attr_get)(
attr_t *a1,
short *a2,
void *z)
{ return(*(int *)0); }
#undef attr_off
-int attr_off(
+int (attr_off)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef attr_on
-int attr_on(
+int (attr_on)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef attr_set
-int attr_set(
+int (attr_set)(
attr_t a1,
short a2,
void *z)
{ return(*(int *)0); }
#undef bkgd
-int bkgd(
+int (bkgd)(
chtype z)
{ return(*(int *)0); }
#undef bkgdset
-void bkgdset(
+void (bkgdset)(
chtype z)
{ /* void */ }
#undef border
-int border(
+int (border)(
chtype a1,
chtype a2,
chtype a3,
@@ -508,14 +504,14 @@ int border(
{ return(*(int *)0); }
#undef box
-int box(
+int (box)(
WINDOW *a1,
chtype a2,
chtype z)
{ return(*(int *)0); }
#undef chgat
-int chgat(
+int (chgat)(
int a1,
attr_t a2,
short a3,
@@ -523,137 +519,137 @@ int chgat(
{ return(*(int *)0); }
#undef clear
-int clear(void)
+int (clear)(void)
{ return(*(int *)0); }
#undef clrtobot
-int clrtobot(void)
+int (clrtobot)(void)
{ return(*(int *)0); }
#undef clrtoeol
-int clrtoeol(void)
+int (clrtoeol)(void)
{ return(*(int *)0); }
#undef color_set
-int color_set(
+int (color_set)(
short a1,
void *z)
{ return(*(int *)0); }
#undef COLOR_PAIR
-int COLOR_PAIR(
+int (COLOR_PAIR)(
int z)
{ return(*(int *)0); }
#undef delch
-int delch(void)
+int (delch)(void)
{ return(*(int *)0); }
#undef deleteln
-int deleteln(void)
+int (deleteln)(void)
{ return(*(int *)0); }
#undef echochar
-int echochar(
+int (echochar)(
const chtype z)
{ return(*(int *)0); }
#undef erase
-int erase(void)
+int (erase)(void)
{ return(*(int *)0); }
#undef getbkgd
-chtype getbkgd(
+chtype (getbkgd)(
WINDOW *z)
{ return(*(chtype *)0); }
#undef getch
-int getch(void)
+int (getch)(void)
{ return(*(int *)0); }
#undef getnstr
-int getnstr(
+int (getnstr)(
char *a1,
int z)
{ return(*(int *)0); }
#undef getstr
-int getstr(
+int (getstr)(
char *z)
{ return(*(int *)0); }
#undef hline
-int hline(
+int (hline)(
chtype a1,
int z)
{ return(*(int *)0); }
#undef inch
-chtype inch(void)
+chtype (inch)(void)
{ return(*(chtype *)0); }
#undef inchnstr
-int inchnstr(
+int (inchnstr)(
chtype *a1,
int z)
{ return(*(int *)0); }
#undef inchstr
-int inchstr(
+int (inchstr)(
chtype *z)
{ return(*(int *)0); }
#undef innstr
-int innstr(
+int (innstr)(
char *a1,
int z)
{ return(*(int *)0); }
#undef insch
-int insch(
+int (insch)(
chtype z)
{ return(*(int *)0); }
#undef insdelln
-int insdelln(
+int (insdelln)(
int z)
{ return(*(int *)0); }
#undef insertln
-int insertln(void)
+int (insertln)(void)
{ return(*(int *)0); }
#undef insnstr
-int insnstr(
+int (insnstr)(
const char *a1,
int z)
{ return(*(int *)0); }
#undef insstr
-int insstr(
+int (insstr)(
const char *z)
{ return(*(int *)0); }
#undef instr
-int instr(
+int (instr)(
char *z)
{ return(*(int *)0); }
#undef move
-int move(
+int (move)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvaddch
-int mvaddch(
+int (mvaddch)(
int a1,
int a2,
const chtype z)
{ return(*(int *)0); }
#undef mvaddchnstr
-int mvaddchnstr(
+int (mvaddchnstr)(
int a1,
int a2,
const chtype *a3,
@@ -661,14 +657,14 @@ int mvaddchnstr(
{ return(*(int *)0); }
#undef mvaddchstr
-int mvaddchstr(
+int (mvaddchstr)(
int a1,
int a2,
const chtype *z)
{ return(*(int *)0); }
#undef mvaddnstr
-int mvaddnstr(
+int (mvaddnstr)(
int a1,
int a2,
const char *a3,
@@ -676,14 +672,14 @@ int mvaddnstr(
{ return(*(int *)0); }
#undef mvaddstr
-int mvaddstr(
+int (mvaddstr)(
int a1,
int a2,
const char *z)
{ return(*(int *)0); }
#undef mvchgat
-int mvchgat(
+int (mvchgat)(
int a1,
int a2,
int a3,
@@ -693,19 +689,19 @@ int mvchgat(
{ return(*(int *)0); }
#undef mvdelch
-int mvdelch(
+int (mvdelch)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvgetch
-int mvgetch(
+int (mvgetch)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvgetnstr
-int mvgetnstr(
+int (mvgetnstr)(
int a1,
int a2,
char *a3,
@@ -713,14 +709,14 @@ int mvgetnstr(
{ return(*(int *)0); }
#undef mvgetstr
-int mvgetstr(
+int (mvgetstr)(
int a1,
int a2,
char *z)
{ return(*(int *)0); }
#undef mvhline
-int mvhline(
+int (mvhline)(
int a1,
int a2,
chtype a3,
@@ -728,13 +724,13 @@ int mvhline(
{ return(*(int *)0); }
#undef mvinch
-chtype mvinch(
+chtype (mvinch)(
int a1,
int z)
{ return(*(chtype *)0); }
#undef mvinchnstr
-int mvinchnstr(
+int (mvinchnstr)(
int a1,
int a2,
chtype *a3,
@@ -742,14 +738,14 @@ int mvinchnstr(
{ return(*(int *)0); }
#undef mvinchstr
-int mvinchstr(
+int (mvinchstr)(
int a1,
int a2,
chtype *z)
{ return(*(int *)0); }
#undef mvinnstr
-int mvinnstr(
+int (mvinnstr)(
int a1,
int a2,
char *a3,
@@ -757,14 +753,14 @@ int mvinnstr(
{ return(*(int *)0); }
#undef mvinsch
-int mvinsch(
+int (mvinsch)(
int a1,
int a2,
chtype z)
{ return(*(int *)0); }
#undef mvinsnstr
-int mvinsnstr(
+int (mvinsnstr)(
int a1,
int a2,
const char *a3,
@@ -772,21 +768,21 @@ int mvinsnstr(
{ return(*(int *)0); }
#undef mvinsstr
-int mvinsstr(
+int (mvinsstr)(
int a1,
int a2,
const char *z)
{ return(*(int *)0); }
#undef mvinstr
-int mvinstr(
+int (mvinstr)(
int a1,
int a2,
char *z)
{ return(*(int *)0); }
#undef mvvline
-int mvvline(
+int (mvvline)(
int a1,
int a2,
chtype a3,
@@ -794,7 +790,7 @@ int mvvline(
{ return(*(int *)0); }
#undef mvwaddch
-int mvwaddch(
+int (mvwaddch)(
WINDOW *a1,
int a2,
int a3,
@@ -802,7 +798,7 @@ int mvwaddch(
{ return(*(int *)0); }
#undef mvwaddchnstr
-int mvwaddchnstr(
+int (mvwaddchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -811,7 +807,7 @@ int mvwaddchnstr(
{ return(*(int *)0); }
#undef mvwaddchstr
-int mvwaddchstr(
+int (mvwaddchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -819,7 +815,7 @@ int mvwaddchstr(
{ return(*(int *)0); }
#undef mvwaddnstr
-int mvwaddnstr(
+int (mvwaddnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -828,7 +824,7 @@ int mvwaddnstr(
{ return(*(int *)0); }
#undef mvwaddstr
-int mvwaddstr(
+int (mvwaddstr)(
WINDOW *a1,
int a2,
int a3,
@@ -836,7 +832,7 @@ int mvwaddstr(
{ return(*(int *)0); }
#undef mvwchgat
-int mvwchgat(
+int (mvwchgat)(
WINDOW *a1,
int a2,
int a3,
@@ -847,21 +843,21 @@ int mvwchgat(
{ return(*(int *)0); }
#undef mvwdelch
-int mvwdelch(
+int (mvwdelch)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef mvwgetch
-int mvwgetch(
+int (mvwgetch)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef mvwgetnstr
-int mvwgetnstr(
+int (mvwgetnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -870,7 +866,7 @@ int mvwgetnstr(
{ return(*(int *)0); }
#undef mvwgetstr
-int mvwgetstr(
+int (mvwgetstr)(
WINDOW *a1,
int a2,
int a3,
@@ -878,7 +874,7 @@ int mvwgetstr(
{ return(*(int *)0); }
#undef mvwhline
-int mvwhline(
+int (mvwhline)(
WINDOW *a1,
int a2,
int a3,
@@ -887,14 +883,14 @@ int mvwhline(
{ return(*(int *)0); }
#undef mvwinch
-chtype mvwinch(
+chtype (mvwinch)(
WINDOW *a1,
int a2,
int z)
{ return(*(chtype *)0); }
#undef mvwinchnstr
-int mvwinchnstr(
+int (mvwinchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -903,7 +899,7 @@ int mvwinchnstr(
{ return(*(int *)0); }
#undef mvwinchstr
-int mvwinchstr(
+int (mvwinchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -911,7 +907,7 @@ int mvwinchstr(
{ return(*(int *)0); }
#undef mvwinnstr
-int mvwinnstr(
+int (mvwinnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -920,7 +916,7 @@ int mvwinnstr(
{ return(*(int *)0); }
#undef mvwinsch
-int mvwinsch(
+int (mvwinsch)(
WINDOW *a1,
int a2,
int a3,
@@ -928,7 +924,7 @@ int mvwinsch(
{ return(*(int *)0); }
#undef mvwinsnstr
-int mvwinsnstr(
+int (mvwinsnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -937,7 +933,7 @@ int mvwinsnstr(
{ return(*(int *)0); }
#undef mvwinsstr
-int mvwinsstr(
+int (mvwinsstr)(
WINDOW *a1,
int a2,
int a3,
@@ -945,7 +941,7 @@ int mvwinsstr(
{ return(*(int *)0); }
#undef mvwinstr
-int mvwinstr(
+int (mvwinstr)(
WINDOW *a1,
int a2,
int a3,
@@ -953,7 +949,7 @@ int mvwinstr(
{ return(*(int *)0); }
#undef mvwvline
-int mvwvline(
+int (mvwvline)(
WINDOW *a1,
int a2,
int a3,
@@ -962,117 +958,117 @@ int mvwvline(
{ return(*(int *)0); }
#undef PAIR_NUMBER
-int PAIR_NUMBER(
+int (PAIR_NUMBER)(
int z)
{ return(*(int *)0); }
#undef redrawwin
-int redrawwin(
+int (redrawwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef refresh
-int refresh(void)
+int (refresh)(void)
{ return(*(int *)0); }
#undef scrl
-int scrl(
+int (scrl)(
int z)
{ return(*(int *)0); }
#undef scroll
-int scroll(
+int (scroll)(
WINDOW *z)
{ return(*(int *)0); }
#undef setscrreg
-int setscrreg(
+int (setscrreg)(
int a1,
int z)
{ return(*(int *)0); }
#undef standout
-int standout(void)
+int (standout)(void)
{ return(*(int *)0); }
#undef standend
-int standend(void)
+int (standend)(void)
{ return(*(int *)0); }
#undef timeout
-void timeout(
+void (timeout)(
int z)
{ /* void */ }
#undef touchline
-int touchline(
+int (touchline)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef touchwin
-int touchwin(
+int (touchwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef untouchwin
-int untouchwin(
+int (untouchwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef vline
-int vline(
+int (vline)(
chtype a1,
int z)
{ return(*(int *)0); }
#undef vw_printw
-int vw_printw(
+int (vw_printw)(
WINDOW *a1,
const char *a2,
va_list z)
{ return(*(int *)0); }
#undef vw_scanw
-int vw_scanw(
+int (vw_scanw)(
WINDOW *a1,
char *a2,
va_list z)
{ return(*(int *)0); }
#undef waddchstr
-int waddchstr(
+int (waddchstr)(
WINDOW *a1,
const chtype *z)
{ return(*(int *)0); }
#undef waddstr
-int waddstr(
+int (waddstr)(
WINDOW *a1,
const char *z)
{ return(*(int *)0); }
#undef wattron
-int wattron(
+int (wattron)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattroff
-int wattroff(
+int (wattroff)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattrset
-int wattrset(
+int (wattrset)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattr_get
-int wattr_get(
+int (wattr_get)(
WINDOW *a1,
attr_t *a2,
short *a3,
@@ -1080,7 +1076,7 @@ int wattr_get(
{ return(*(int *)0); }
#undef wattr_set
-int wattr_set(
+int (wattr_set)(
WINDOW *a1,
attr_t a2,
short a3,
@@ -1088,168 +1084,168 @@ int wattr_set(
{ return(*(int *)0); }
#undef wdeleteln
-int wdeleteln(
+int (wdeleteln)(
WINDOW *z)
{ return(*(int *)0); }
#undef wgetstr
-int wgetstr(
+int (wgetstr)(
WINDOW *a1,
char *z)
{ return(*(int *)0); }
#undef winchstr
-int winchstr(
+int (winchstr)(
WINDOW *a1,
chtype *z)
{ return(*(int *)0); }
#undef winsertln
-int winsertln(
+int (winsertln)(
WINDOW *z)
{ return(*(int *)0); }
#undef winsstr
-int winsstr(
+int (winsstr)(
WINDOW *a1,
const char *z)
{ return(*(int *)0); }
#undef winstr
-int winstr(
+int (winstr)(
WINDOW *a1,
char *z)
{ return(*(int *)0); }
#undef wstandout
-int wstandout(
+int (wstandout)(
WINDOW *z)
{ return(*(int *)0); }
#undef wstandend
-int wstandend(
+int (wstandend)(
WINDOW *z)
{ return(*(int *)0); }
#undef getattrs
-int getattrs(
+int (getattrs)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getcurx
-int getcurx(
+int (getcurx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getcury
-int getcury(
+int (getcury)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getbegx
-int getbegx(
+int (getbegx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getbegy
-int getbegy(
+int (getbegy)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getmaxx
-int getmaxx(
+int (getmaxx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getmaxy
-int getmaxy(
+int (getmaxy)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getparx
-int getparx(
+int (getparx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getpary
-int getpary(
+int (getpary)(
const WINDOW *z)
{ return(*(int *)0); }
#undef wgetparent
-WINDOW *wgetparent(
+WINDOW *(wgetparent)(
const WINDOW *z)
{ return(*(WINDOW **)0); }
#undef is_cleared
-NCURSES_BOOL is_cleared(
+NCURSES_BOOL (is_cleared)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_idcok
-NCURSES_BOOL is_idcok(
+NCURSES_BOOL (is_idcok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_idlok
-NCURSES_BOOL is_idlok(
+NCURSES_BOOL (is_idlok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_immedok
-NCURSES_BOOL is_immedok(
+NCURSES_BOOL (is_immedok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_keypad
-NCURSES_BOOL is_keypad(
+NCURSES_BOOL (is_keypad)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_leaveok
-NCURSES_BOOL is_leaveok(
+NCURSES_BOOL (is_leaveok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_nodelay
-NCURSES_BOOL is_nodelay(
+NCURSES_BOOL (is_nodelay)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_notimeout
-NCURSES_BOOL is_notimeout(
+NCURSES_BOOL (is_notimeout)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_pad
-NCURSES_BOOL is_pad(
+NCURSES_BOOL (is_pad)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_scrollok
-NCURSES_BOOL is_scrollok(
+NCURSES_BOOL (is_scrollok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_subwin
-NCURSES_BOOL is_subwin(
+NCURSES_BOOL (is_subwin)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_syncok
-NCURSES_BOOL is_syncok(
+NCURSES_BOOL (is_syncok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef wgetscrreg
-int wgetscrreg(
+int (wgetscrreg)(
const WINDOW *a1,
int *a2,
int *z)
{ return(*(int *)0); }
#undef mouse_trafo
-NCURSES_BOOL mouse_trafo(
+NCURSES_BOOL (mouse_trafo)(
int *a1,
int *a2,
NCURSES_BOOL z)
@@ -1257,8 +1253,6 @@ NCURSES_BOOL mouse_trafo(
/* ./base/lib_getch.c */
-#include <fifo_defs.h>
-
#undef ESCDELAY
int ESCDELAY;
@@ -1523,6 +1517,23 @@ void _nc_mvcur_wrap_sp(
void _nc_mvcur_wrap(void)
{ /* void */ }
+#undef _nc_mvcur_sp
+int _nc_mvcur_sp(
+ SCREEN *sp,
+ int yold,
+ int xold,
+ int ynew,
+ int xnew)
+ { return(*(int *)0); }
+
+#undef _nc_mvcur
+int _nc_mvcur(
+ int yold,
+ int xold,
+ int ynew,
+ int xnew)
+ { return(*(int *)0); }
+
#undef mvcur_sp
int mvcur_sp(
SCREEN *sp,
@@ -1932,8 +1943,8 @@ int scr_set(
void _nc_scroll_window(
WINDOW *win,
int const n,
- short const top,
- short const bottom,
+ int const top,
+ int const bottom,
chtype blank)
{ /* void */ }
@@ -1978,7 +1989,7 @@ int _nc_setupscreen_sp(
int slines,
int scolumns,
FILE *output,
- NCURSES_BOOL filtered,
+ int filtered,
int slk_format)
{ return(*(int *)0); }
@@ -1987,7 +1998,7 @@ int _nc_setupscreen(
int slines,
int scolumns,
FILE *output,
- NCURSES_BOOL filtered,
+ int filtered,
int slk_format)
{ return(*(int *)0); }
@@ -2263,11 +2274,9 @@ char *_tracemouse(
/* ./tty/lib_tstp.c */
-#include <SigAction.h>
-
#undef _nc_signal_handler
void _nc_signal_handler(
- NCURSES_BOOL enable)
+ int enable)
{ /* void */ }
/* ./base/lib_ungetch.c */
@@ -2425,9 +2434,6 @@ char *_nc_printf_string(
/* ./tty/tty_update.c */
-#include <sys/time.h>
-#include <sys/times.h>
-
#undef doupdate_sp
int doupdate_sp(
SCREEN *sp)
@@ -2504,12 +2510,6 @@ char *_nc_varargs(
va_list ap)
{ return(*(char **)0); }
-/* ./base/memmove.c */
-
-#undef _nc_memmove
-void _nc_memmove(void)
- { /* void */ }
-
/* ./base/vsscanf.c */
#undef _nc_vsscanf
@@ -2769,7 +2769,7 @@ void _nc_align_termtype(
#undef _nc_copy_termtype
void _nc_copy_termtype(
TERMTYPE *dst,
- TERMTYPE *src)
+ const TERMTYPE *src)
{ /* void */ }
/* ./codes.c */
@@ -2783,8 +2783,6 @@ char *const strcodes[] = {0};
/* ./comp_captab.c */
-#include <hashsize.h>
-
#undef _nc_get_table
const struct name_table_entry *_nc_get_table(
NCURSES_BOOL termcap)
@@ -2959,6 +2957,12 @@ int _nc_getenv_num(
const char *name)
{ return(*(int *)0); }
+#undef _nc_setenv_num
+void _nc_setenv_num(
+ const char *name,
+ int value)
+ { /* void */ }
+
/* ./tinfo/home_terminfo.c */
#undef _nc_home_terminfo
@@ -2967,15 +2971,6 @@ char *_nc_home_terminfo(void)
/* ./tinfo/init_keytry.c */
-#if 0
-
-#include <init_keytry.h>
-
-#undef _nc_tinfo_fkeys
-const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
-
-#endif
-
#undef _nc_init_keytry
void _nc_init_keytry(
SCREEN *sp)
@@ -2997,8 +2992,6 @@ void _nc_init_acs(void)
/* ./tinfo/lib_baudrate.c */
-#include <termcap.h>
-
struct speed {
int s;
int sp;
@@ -3144,8 +3137,6 @@ char *longname(void)
/* ./tinfo/lib_napms.c */
-#include <time.h>
-
#undef napms_sp
int napms_sp(
SCREEN *sp,
@@ -3255,7 +3246,7 @@ int _nc_putp_flush_sp(
#undef _nc_keypad
int _nc_keypad(
SCREEN *sp,
- NCURSES_BOOL flag)
+ int flag)
{ return(*(int *)0); }
/* ./tinfo/lib_raw.c */
@@ -3329,10 +3320,6 @@ int intrflush(
/* ./tinfo/lib_setup.c */
-#include <locale.h>
-#include <sys/ioctl.h>
-#include <langinfo.h>
-
#undef ttytype
char ttytype[256];
#undef LINES
@@ -3364,11 +3351,22 @@ void use_env_sp(
NCURSES_BOOL f)
{ /* void */ }
+#undef use_tioctl_sp
+void use_tioctl_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef use_env
void use_env(
NCURSES_BOOL f)
{ /* void */ }
+#undef use_tioctl
+void use_tioctl(
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef _nc_get_screensize
void _nc_get_screensize(
SCREEN *sp,
@@ -3390,7 +3388,7 @@ int _nc_setup_tinfo(
#undef _nc_tinfo_cmdch
void _nc_tinfo_cmdch(
TERMINAL *termp,
- char proto)
+ int proto)
{ /* void */ }
#undef _nc_get_locale
@@ -3411,7 +3409,7 @@ int _nc_setupterm(
char *tname,
int Filedes,
int *errret,
- NCURSES_BOOL reuse)
+ int reuse)
{ return(*(int *)0); }
#undef new_prescr
@@ -3439,12 +3437,6 @@ int tgetent_sp(
const char *name)
{ return(*(int *)0); }
-#if 0
-
-#include <capdefaults.c>
-
-#endif
-
#undef tgetent
int tgetent(
char *bufp,
@@ -3550,7 +3542,7 @@ int _nc_tparm_err;
int _nc_tparm_analyze(
const char *string,
char *p_is_s[9],
- int *popcount)
+ int *_nc_popcount)
{ return(*(int *)0); }
#undef tparm
@@ -3570,7 +3562,7 @@ char *tiparm(
#undef PC
char PC;
#undef ospeed
-NCURSES_OSPEED ospeed;
+short ospeed;
#undef _nc_nulls_sent
int _nc_nulls_sent;
@@ -3610,12 +3602,28 @@ int _nc_outch(
int ch)
{ return(*(int *)0); }
+#undef _nc_putchar_sp
+int _nc_putchar_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar
+int _nc_putchar(
+ int ch)
+ { return(*(int *)0); }
+
#undef putp_sp
int putp_sp(
SCREEN *sp,
const char *string)
{ return(*(int *)0); }
+#undef putp
+int putp(
+ const char *string)
+ { return(*(int *)0); }
+
#undef _nc_putp_sp
int _nc_putp_sp(
SCREEN *sp,
@@ -3623,11 +3631,6 @@ int _nc_putp_sp(
const char *string)
{ return(*(int *)0); }
-#undef putp
-int putp(
- const char *string)
- { return(*(int *)0); }
-
#undef _nc_putp
int _nc_putp(
const char *name,
@@ -3678,12 +3681,12 @@ void _tracef(
#undef _nc_retrace_bool
NCURSES_BOOL _nc_retrace_bool(
- NCURSES_BOOL code)
+ int code)
{ return(*(NCURSES_BOOL *)0); }
#undef _nc_retrace_char
char _nc_retrace_char(
- char code)
+ int code)
{ return(*(char *)0); }
#undef _nc_retrace_int
@@ -3917,9 +3920,27 @@ char *const strnames[] = {0};
#undef strfnames
char *const strfnames[] = {0};
+/* ./tinfo/obsolete.c */
+
+#undef _nc_set_buffer_sp
+void _nc_set_buffer_sp(
+ SCREEN *sp,
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+#undef _nc_set_buffer
+void _nc_set_buffer(
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
/* ./tinfo/read_entry.c */
-#include <hashed_db.h>
+#undef _nc_init_termtype
+void _nc_init_termtype(
+ TERMTYPE *const tp)
+ { /* void */ }
#undef _nc_read_termtype
int _nc_read_termtype(
@@ -3943,27 +3964,8 @@ int _nc_read_entry(
/* ./tinfo/read_termcap.c */
-#include <sys/types.h>
-
-#undef _nc_read_termcap_entry
-int _nc_read_termcap_entry(
- const char *const tn,
- TERMTYPE *const tp)
- { return(*(int *)0); }
-
-/* ./tinfo/setbuf.c */
-
-#undef _nc_set_buffer_sp
-void _nc_set_buffer_sp(
- SCREEN *sp,
- FILE *ofp,
- NCURSES_BOOL buffered)
- { /* void */ }
-
-#undef _nc_set_buffer
-void _nc_set_buffer(
- FILE *ofp,
- NCURSES_BOOL buffered)
+#undef _nc_read_termcap
+void _nc_read_termcap(void)
{ /* void */ }
/* ./tinfo/strings.c */
@@ -4189,6 +4191,8 @@ int _nc_resolve_uses(
#undef _nc_syntax
int _nc_syntax;
+#undef _nc_strict_bsd
+int _nc_strict_bsd;
#undef _nc_curr_file_pos
long _nc_curr_file_pos;
#undef _nc_comment_start
diff --git a/contrib/ncurses/ncurses/llib-lncursest b/contrib/ncurses/ncurses/llib-lncursest
index f5739cb1e79d..3401ad363cbc 100644
--- a/contrib/ncurses/ncurses/llib-lncursest
+++ b/contrib/ncurses/ncurses/llib-lncursest
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2011,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -332,17 +332,17 @@ int pair_content(
#undef _nc_do_color_sp
void _nc_do_color_sp(
SCREEN *sp,
- short old_pair,
- short pair,
- NCURSES_BOOL reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_OUTC_sp outc)
{ /* void */ }
#undef _nc_do_color
void _nc_do_color(
- short old_pair,
- short pair,
- NCURSES_BOOL reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_OUTC outc)
{ /* void */ }
@@ -420,86 +420,88 @@ int flash(void)
/* ./lib_gen.c */
+#include <ncurses_cfg.h>
+
#undef addch
-int addch(
+int (addch)(
const chtype z)
{ return(*(int *)0); }
#undef addchnstr
-int addchnstr(
+int (addchnstr)(
const chtype *a1,
int z)
{ return(*(int *)0); }
#undef addchstr
-int addchstr(
+int (addchstr)(
const chtype *z)
{ return(*(int *)0); }
#undef addnstr
-int addnstr(
+int (addnstr)(
const char *a1,
int z)
{ return(*(int *)0); }
#undef addstr
-int addstr(
+int (addstr)(
const char *z)
{ return(*(int *)0); }
#undef attroff
-int attroff(
- NCURSES_ATTR_T z)
+int (attroff)(
+ int z)
{ return(*(int *)0); }
#undef attron
-int attron(
- NCURSES_ATTR_T z)
+int (attron)(
+ int z)
{ return(*(int *)0); }
#undef attrset
-int attrset(
- NCURSES_ATTR_T z)
+int (attrset)(
+ int z)
{ return(*(int *)0); }
#undef attr_get
-int attr_get(
+int (attr_get)(
attr_t *a1,
short *a2,
void *z)
{ return(*(int *)0); }
#undef attr_off
-int attr_off(
+int (attr_off)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef attr_on
-int attr_on(
+int (attr_on)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef attr_set
-int attr_set(
+int (attr_set)(
attr_t a1,
short a2,
void *z)
{ return(*(int *)0); }
#undef bkgd
-int bkgd(
+int (bkgd)(
chtype z)
{ return(*(int *)0); }
#undef bkgdset
-void bkgdset(
+void (bkgdset)(
chtype z)
{ /* void */ }
#undef border
-int border(
+int (border)(
chtype a1,
chtype a2,
chtype a3,
@@ -511,14 +513,14 @@ int border(
{ return(*(int *)0); }
#undef box
-int box(
+int (box)(
WINDOW *a1,
chtype a2,
chtype z)
{ return(*(int *)0); }
#undef chgat
-int chgat(
+int (chgat)(
int a1,
attr_t a2,
short a3,
@@ -526,137 +528,137 @@ int chgat(
{ return(*(int *)0); }
#undef clear
-int clear(void)
+int (clear)(void)
{ return(*(int *)0); }
#undef clrtobot
-int clrtobot(void)
+int (clrtobot)(void)
{ return(*(int *)0); }
#undef clrtoeol
-int clrtoeol(void)
+int (clrtoeol)(void)
{ return(*(int *)0); }
#undef color_set
-int color_set(
+int (color_set)(
short a1,
void *z)
{ return(*(int *)0); }
#undef COLOR_PAIR
-int COLOR_PAIR(
+int (COLOR_PAIR)(
int z)
{ return(*(int *)0); }
#undef delch
-int delch(void)
+int (delch)(void)
{ return(*(int *)0); }
#undef deleteln
-int deleteln(void)
+int (deleteln)(void)
{ return(*(int *)0); }
#undef echochar
-int echochar(
+int (echochar)(
const chtype z)
{ return(*(int *)0); }
#undef erase
-int erase(void)
+int (erase)(void)
{ return(*(int *)0); }
#undef getbkgd
-chtype getbkgd(
+chtype (getbkgd)(
WINDOW *z)
{ return(*(chtype *)0); }
#undef getch
-int getch(void)
+int (getch)(void)
{ return(*(int *)0); }
#undef getnstr
-int getnstr(
+int (getnstr)(
char *a1,
int z)
{ return(*(int *)0); }
#undef getstr
-int getstr(
+int (getstr)(
char *z)
{ return(*(int *)0); }
#undef hline
-int hline(
+int (hline)(
chtype a1,
int z)
{ return(*(int *)0); }
#undef inch
-chtype inch(void)
+chtype (inch)(void)
{ return(*(chtype *)0); }
#undef inchnstr
-int inchnstr(
+int (inchnstr)(
chtype *a1,
int z)
{ return(*(int *)0); }
#undef inchstr
-int inchstr(
+int (inchstr)(
chtype *z)
{ return(*(int *)0); }
#undef innstr
-int innstr(
+int (innstr)(
char *a1,
int z)
{ return(*(int *)0); }
#undef insch
-int insch(
+int (insch)(
chtype z)
{ return(*(int *)0); }
#undef insdelln
-int insdelln(
+int (insdelln)(
int z)
{ return(*(int *)0); }
#undef insertln
-int insertln(void)
+int (insertln)(void)
{ return(*(int *)0); }
#undef insnstr
-int insnstr(
+int (insnstr)(
const char *a1,
int z)
{ return(*(int *)0); }
#undef insstr
-int insstr(
+int (insstr)(
const char *z)
{ return(*(int *)0); }
#undef instr
-int instr(
+int (instr)(
char *z)
{ return(*(int *)0); }
#undef move
-int move(
+int (move)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvaddch
-int mvaddch(
+int (mvaddch)(
int a1,
int a2,
const chtype z)
{ return(*(int *)0); }
#undef mvaddchnstr
-int mvaddchnstr(
+int (mvaddchnstr)(
int a1,
int a2,
const chtype *a3,
@@ -664,14 +666,14 @@ int mvaddchnstr(
{ return(*(int *)0); }
#undef mvaddchstr
-int mvaddchstr(
+int (mvaddchstr)(
int a1,
int a2,
const chtype *z)
{ return(*(int *)0); }
#undef mvaddnstr
-int mvaddnstr(
+int (mvaddnstr)(
int a1,
int a2,
const char *a3,
@@ -679,14 +681,14 @@ int mvaddnstr(
{ return(*(int *)0); }
#undef mvaddstr
-int mvaddstr(
+int (mvaddstr)(
int a1,
int a2,
const char *z)
{ return(*(int *)0); }
#undef mvchgat
-int mvchgat(
+int (mvchgat)(
int a1,
int a2,
int a3,
@@ -696,19 +698,19 @@ int mvchgat(
{ return(*(int *)0); }
#undef mvdelch
-int mvdelch(
+int (mvdelch)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvgetch
-int mvgetch(
+int (mvgetch)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvgetnstr
-int mvgetnstr(
+int (mvgetnstr)(
int a1,
int a2,
char *a3,
@@ -716,14 +718,14 @@ int mvgetnstr(
{ return(*(int *)0); }
#undef mvgetstr
-int mvgetstr(
+int (mvgetstr)(
int a1,
int a2,
char *z)
{ return(*(int *)0); }
#undef mvhline
-int mvhline(
+int (mvhline)(
int a1,
int a2,
chtype a3,
@@ -731,13 +733,13 @@ int mvhline(
{ return(*(int *)0); }
#undef mvinch
-chtype mvinch(
+chtype (mvinch)(
int a1,
int z)
{ return(*(chtype *)0); }
#undef mvinchnstr
-int mvinchnstr(
+int (mvinchnstr)(
int a1,
int a2,
chtype *a3,
@@ -745,14 +747,14 @@ int mvinchnstr(
{ return(*(int *)0); }
#undef mvinchstr
-int mvinchstr(
+int (mvinchstr)(
int a1,
int a2,
chtype *z)
{ return(*(int *)0); }
#undef mvinnstr
-int mvinnstr(
+int (mvinnstr)(
int a1,
int a2,
char *a3,
@@ -760,14 +762,14 @@ int mvinnstr(
{ return(*(int *)0); }
#undef mvinsch
-int mvinsch(
+int (mvinsch)(
int a1,
int a2,
chtype z)
{ return(*(int *)0); }
#undef mvinsnstr
-int mvinsnstr(
+int (mvinsnstr)(
int a1,
int a2,
const char *a3,
@@ -775,21 +777,21 @@ int mvinsnstr(
{ return(*(int *)0); }
#undef mvinsstr
-int mvinsstr(
+int (mvinsstr)(
int a1,
int a2,
const char *z)
{ return(*(int *)0); }
#undef mvinstr
-int mvinstr(
+int (mvinstr)(
int a1,
int a2,
char *z)
{ return(*(int *)0); }
#undef mvvline
-int mvvline(
+int (mvvline)(
int a1,
int a2,
chtype a3,
@@ -797,7 +799,7 @@ int mvvline(
{ return(*(int *)0); }
#undef mvwaddch
-int mvwaddch(
+int (mvwaddch)(
WINDOW *a1,
int a2,
int a3,
@@ -805,7 +807,7 @@ int mvwaddch(
{ return(*(int *)0); }
#undef mvwaddchnstr
-int mvwaddchnstr(
+int (mvwaddchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -814,7 +816,7 @@ int mvwaddchnstr(
{ return(*(int *)0); }
#undef mvwaddchstr
-int mvwaddchstr(
+int (mvwaddchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -822,7 +824,7 @@ int mvwaddchstr(
{ return(*(int *)0); }
#undef mvwaddnstr
-int mvwaddnstr(
+int (mvwaddnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -831,7 +833,7 @@ int mvwaddnstr(
{ return(*(int *)0); }
#undef mvwaddstr
-int mvwaddstr(
+int (mvwaddstr)(
WINDOW *a1,
int a2,
int a3,
@@ -839,7 +841,7 @@ int mvwaddstr(
{ return(*(int *)0); }
#undef mvwchgat
-int mvwchgat(
+int (mvwchgat)(
WINDOW *a1,
int a2,
int a3,
@@ -850,21 +852,21 @@ int mvwchgat(
{ return(*(int *)0); }
#undef mvwdelch
-int mvwdelch(
+int (mvwdelch)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef mvwgetch
-int mvwgetch(
+int (mvwgetch)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef mvwgetnstr
-int mvwgetnstr(
+int (mvwgetnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -873,7 +875,7 @@ int mvwgetnstr(
{ return(*(int *)0); }
#undef mvwgetstr
-int mvwgetstr(
+int (mvwgetstr)(
WINDOW *a1,
int a2,
int a3,
@@ -881,7 +883,7 @@ int mvwgetstr(
{ return(*(int *)0); }
#undef mvwhline
-int mvwhline(
+int (mvwhline)(
WINDOW *a1,
int a2,
int a3,
@@ -890,14 +892,14 @@ int mvwhline(
{ return(*(int *)0); }
#undef mvwinch
-chtype mvwinch(
+chtype (mvwinch)(
WINDOW *a1,
int a2,
int z)
{ return(*(chtype *)0); }
#undef mvwinchnstr
-int mvwinchnstr(
+int (mvwinchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -906,7 +908,7 @@ int mvwinchnstr(
{ return(*(int *)0); }
#undef mvwinchstr
-int mvwinchstr(
+int (mvwinchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -914,7 +916,7 @@ int mvwinchstr(
{ return(*(int *)0); }
#undef mvwinnstr
-int mvwinnstr(
+int (mvwinnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -923,7 +925,7 @@ int mvwinnstr(
{ return(*(int *)0); }
#undef mvwinsch
-int mvwinsch(
+int (mvwinsch)(
WINDOW *a1,
int a2,
int a3,
@@ -931,7 +933,7 @@ int mvwinsch(
{ return(*(int *)0); }
#undef mvwinsnstr
-int mvwinsnstr(
+int (mvwinsnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -940,7 +942,7 @@ int mvwinsnstr(
{ return(*(int *)0); }
#undef mvwinsstr
-int mvwinsstr(
+int (mvwinsstr)(
WINDOW *a1,
int a2,
int a3,
@@ -948,7 +950,7 @@ int mvwinsstr(
{ return(*(int *)0); }
#undef mvwinstr
-int mvwinstr(
+int (mvwinstr)(
WINDOW *a1,
int a2,
int a3,
@@ -956,7 +958,7 @@ int mvwinstr(
{ return(*(int *)0); }
#undef mvwvline
-int mvwvline(
+int (mvwvline)(
WINDOW *a1,
int a2,
int a3,
@@ -965,117 +967,117 @@ int mvwvline(
{ return(*(int *)0); }
#undef PAIR_NUMBER
-int PAIR_NUMBER(
+int (PAIR_NUMBER)(
int z)
{ return(*(int *)0); }
#undef redrawwin
-int redrawwin(
+int (redrawwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef refresh
-int refresh(void)
+int (refresh)(void)
{ return(*(int *)0); }
#undef scrl
-int scrl(
+int (scrl)(
int z)
{ return(*(int *)0); }
#undef scroll
-int scroll(
+int (scroll)(
WINDOW *z)
{ return(*(int *)0); }
#undef setscrreg
-int setscrreg(
+int (setscrreg)(
int a1,
int z)
{ return(*(int *)0); }
#undef standout
-int standout(void)
+int (standout)(void)
{ return(*(int *)0); }
#undef standend
-int standend(void)
+int (standend)(void)
{ return(*(int *)0); }
#undef timeout
-void timeout(
+void (timeout)(
int z)
{ /* void */ }
#undef touchline
-int touchline(
+int (touchline)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef touchwin
-int touchwin(
+int (touchwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef untouchwin
-int untouchwin(
+int (untouchwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef vline
-int vline(
+int (vline)(
chtype a1,
int z)
{ return(*(int *)0); }
#undef vw_printw
-int vw_printw(
+int (vw_printw)(
WINDOW *a1,
const char *a2,
va_list z)
{ return(*(int *)0); }
#undef vw_scanw
-int vw_scanw(
+int (vw_scanw)(
WINDOW *a1,
char *a2,
va_list z)
{ return(*(int *)0); }
#undef waddchstr
-int waddchstr(
+int (waddchstr)(
WINDOW *a1,
const chtype *z)
{ return(*(int *)0); }
#undef waddstr
-int waddstr(
+int (waddstr)(
WINDOW *a1,
const char *z)
{ return(*(int *)0); }
#undef wattron
-int wattron(
+int (wattron)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattroff
-int wattroff(
+int (wattroff)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattrset
-int wattrset(
+int (wattrset)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattr_get
-int wattr_get(
+int (wattr_get)(
WINDOW *a1,
attr_t *a2,
short *a3,
@@ -1083,7 +1085,7 @@ int wattr_get(
{ return(*(int *)0); }
#undef wattr_set
-int wattr_set(
+int (wattr_set)(
WINDOW *a1,
attr_t a2,
short a3,
@@ -1091,168 +1093,168 @@ int wattr_set(
{ return(*(int *)0); }
#undef wdeleteln
-int wdeleteln(
+int (wdeleteln)(
WINDOW *z)
{ return(*(int *)0); }
#undef wgetstr
-int wgetstr(
+int (wgetstr)(
WINDOW *a1,
char *z)
{ return(*(int *)0); }
#undef winchstr
-int winchstr(
+int (winchstr)(
WINDOW *a1,
chtype *z)
{ return(*(int *)0); }
#undef winsertln
-int winsertln(
+int (winsertln)(
WINDOW *z)
{ return(*(int *)0); }
#undef winsstr
-int winsstr(
+int (winsstr)(
WINDOW *a1,
const char *z)
{ return(*(int *)0); }
#undef winstr
-int winstr(
+int (winstr)(
WINDOW *a1,
char *z)
{ return(*(int *)0); }
#undef wstandout
-int wstandout(
+int (wstandout)(
WINDOW *z)
{ return(*(int *)0); }
#undef wstandend
-int wstandend(
+int (wstandend)(
WINDOW *z)
{ return(*(int *)0); }
#undef getattrs
-int getattrs(
+int (getattrs)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getcurx
-int getcurx(
+int (getcurx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getcury
-int getcury(
+int (getcury)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getbegx
-int getbegx(
+int (getbegx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getbegy
-int getbegy(
+int (getbegy)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getmaxx
-int getmaxx(
+int (getmaxx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getmaxy
-int getmaxy(
+int (getmaxy)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getparx
-int getparx(
+int (getparx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getpary
-int getpary(
+int (getpary)(
const WINDOW *z)
{ return(*(int *)0); }
#undef wgetparent
-WINDOW *wgetparent(
+WINDOW *(wgetparent)(
const WINDOW *z)
{ return(*(WINDOW **)0); }
#undef is_cleared
-NCURSES_BOOL is_cleared(
+NCURSES_BOOL (is_cleared)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_idcok
-NCURSES_BOOL is_idcok(
+NCURSES_BOOL (is_idcok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_idlok
-NCURSES_BOOL is_idlok(
+NCURSES_BOOL (is_idlok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_immedok
-NCURSES_BOOL is_immedok(
+NCURSES_BOOL (is_immedok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_keypad
-NCURSES_BOOL is_keypad(
+NCURSES_BOOL (is_keypad)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_leaveok
-NCURSES_BOOL is_leaveok(
+NCURSES_BOOL (is_leaveok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_nodelay
-NCURSES_BOOL is_nodelay(
+NCURSES_BOOL (is_nodelay)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_notimeout
-NCURSES_BOOL is_notimeout(
+NCURSES_BOOL (is_notimeout)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_pad
-NCURSES_BOOL is_pad(
+NCURSES_BOOL (is_pad)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_scrollok
-NCURSES_BOOL is_scrollok(
+NCURSES_BOOL (is_scrollok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_subwin
-NCURSES_BOOL is_subwin(
+NCURSES_BOOL (is_subwin)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_syncok
-NCURSES_BOOL is_syncok(
+NCURSES_BOOL (is_syncok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef wgetscrreg
-int wgetscrreg(
+int (wgetscrreg)(
const WINDOW *a1,
int *a2,
int *z)
{ return(*(int *)0); }
#undef mouse_trafo
-NCURSES_BOOL mouse_trafo(
+NCURSES_BOOL (mouse_trafo)(
int *a1,
int *a2,
NCURSES_BOOL z)
@@ -1532,6 +1534,23 @@ void _nc_mvcur_wrap_sp(
void _nc_mvcur_wrap(void)
{ /* void */ }
+#undef _nc_mvcur_sp
+int _nc_mvcur_sp(
+ SCREEN *sp,
+ int yold,
+ int xold,
+ int ynew,
+ int xnew)
+ { return(*(int *)0); }
+
+#undef _nc_mvcur
+int _nc_mvcur(
+ int yold,
+ int xold,
+ int ynew,
+ int xnew)
+ { return(*(int *)0); }
+
#undef mvcur_sp
int mvcur_sp(
SCREEN *sp,
@@ -1598,6 +1617,8 @@ SCREEN *newterm(
/* ./base/lib_newwin.c */
+#include "/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h"
+
#undef _nc_freewin
int _nc_freewin(
WINDOW *win)
@@ -1987,7 +2008,7 @@ int _nc_setupscreen_sp(
int slines,
int scolumns,
FILE *output,
- NCURSES_BOOL filtered,
+ int filtered,
int slk_format)
{ return(*(int *)0); }
@@ -1996,7 +2017,7 @@ int _nc_setupscreen(
int slines,
int scolumns,
FILE *output,
- NCURSES_BOOL filtered,
+ int filtered,
int slk_format)
{ return(*(int *)0); }
@@ -2276,7 +2297,7 @@ char *_tracemouse(
#undef _nc_signal_handler
void _nc_signal_handler(
- NCURSES_BOOL enable)
+ int enable)
{ /* void */ }
/* ./base/lib_ungetch.c */
@@ -2513,12 +2534,6 @@ char *_nc_varargs(
va_list ap)
{ return(*(char **)0); }
-/* ./base/memmove.c */
-
-#undef _nc_memmove
-void _nc_memmove(void)
- { /* void */ }
-
/* ./base/vsscanf.c */
#undef _nc_vsscanf
@@ -2778,7 +2793,7 @@ void _nc_align_termtype(
#undef _nc_copy_termtype
void _nc_copy_termtype(
TERMTYPE *dst,
- TERMTYPE *src)
+ const TERMTYPE *src)
{ /* void */ }
/* ./codes.c */
@@ -2882,6 +2897,8 @@ struct name_table_entry const *_nc_find_type_entry(
/* ./tinfo/db_iterator.c */
+#include <time.h>
+
#undef _nc_tic_dir
const char *_nc_tic_dir(
const char *path)
@@ -2973,6 +2990,12 @@ int _nc_getenv_num(
const char *name)
{ return(*(int *)0); }
+#undef _nc_setenv_num
+void _nc_setenv_num(
+ const char *name,
+ int value)
+ { /* void */ }
+
/* ./tinfo/home_terminfo.c */
#undef _nc_home_terminfo
@@ -3313,7 +3336,7 @@ int _nc_putp_flush_sp(
#undef _nc_keypad
int _nc_keypad(
SCREEN *sp,
- NCURSES_BOOL flag)
+ int flag)
{ return(*(int *)0); }
/* ./tinfo/lib_raw.c */
@@ -3444,11 +3467,22 @@ void use_env_sp(
NCURSES_BOOL f)
{ /* void */ }
+#undef use_tioctl_sp
+void use_tioctl_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef use_env
void use_env(
NCURSES_BOOL f)
{ /* void */ }
+#undef use_tioctl
+void use_tioctl(
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef _nc_get_screensize
void _nc_get_screensize(
SCREEN *sp,
@@ -3470,7 +3504,7 @@ int _nc_setup_tinfo(
#undef _nc_tinfo_cmdch
void _nc_tinfo_cmdch(
TERMINAL *termp,
- char proto)
+ int proto)
{ /* void */ }
#undef _nc_get_locale
@@ -3491,7 +3525,7 @@ int _nc_setupterm(
char *tname,
int Filedes,
int *errret,
- NCURSES_BOOL reuse)
+ int reuse)
{ return(*(int *)0); }
#undef new_prescr
@@ -3630,7 +3664,7 @@ int _nc_tparm_err;
int _nc_tparm_analyze(
const char *string,
char *p_is_s[9],
- int *popcount)
+ int *_nc_popcount)
{ return(*(int *)0); }
#undef tparm
@@ -3650,7 +3684,7 @@ char *tiparm(
#undef PC
char PC;
#undef ospeed
-NCURSES_OSPEED ospeed;
+short ospeed;
#undef _nc_nulls_sent
int _nc_nulls_sent;
@@ -3690,12 +3724,28 @@ int _nc_outch(
int ch)
{ return(*(int *)0); }
+#undef _nc_putchar_sp
+int _nc_putchar_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar
+int _nc_putchar(
+ int ch)
+ { return(*(int *)0); }
+
#undef putp_sp
int putp_sp(
SCREEN *sp,
const char *string)
{ return(*(int *)0); }
+#undef putp
+int putp(
+ const char *string)
+ { return(*(int *)0); }
+
#undef _nc_putp_sp
int _nc_putp_sp(
SCREEN *sp,
@@ -3703,11 +3753,6 @@ int _nc_putp_sp(
const char *string)
{ return(*(int *)0); }
-#undef putp
-int putp(
- const char *string)
- { return(*(int *)0); }
-
#undef _nc_putp
int _nc_putp(
const char *name,
@@ -3772,12 +3817,12 @@ void _tracef(
#undef _nc_retrace_bool
NCURSES_BOOL _nc_retrace_bool(
- NCURSES_BOOL code)
+ int code)
{ return(*(NCURSES_BOOL *)0); }
#undef _nc_retrace_char
char _nc_retrace_char(
- char code)
+ int code)
{ return(*(char *)0); }
#undef _nc_retrace_int
@@ -4033,10 +4078,30 @@ char *const *_nc_strnames(void)
char *const *_nc_strfnames(void)
{ return(*(char **)0); }
+/* ./tinfo/obsolete.c */
+
+#undef _nc_set_buffer_sp
+void _nc_set_buffer_sp(
+ SCREEN *sp,
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+#undef _nc_set_buffer
+void _nc_set_buffer(
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
/* ./tinfo/read_entry.c */
#include <hashed_db.h>
+#undef _nc_init_termtype
+void _nc_init_termtype(
+ TERMTYPE *const tp)
+ { /* void */ }
+
#undef _nc_read_termtype
int _nc_read_termtype(
TERMTYPE *ptr,
@@ -4061,25 +4126,8 @@ int _nc_read_entry(
#include <sys/types.h>
-#undef _nc_read_termcap_entry
-int _nc_read_termcap_entry(
- const char *const tn,
- TERMTYPE *const tp)
- { return(*(int *)0); }
-
-/* ./tinfo/setbuf.c */
-
-#undef _nc_set_buffer_sp
-void _nc_set_buffer_sp(
- SCREEN *sp,
- FILE *ofp,
- NCURSES_BOOL buffered)
- { /* void */ }
-
-#undef _nc_set_buffer
-void _nc_set_buffer(
- FILE *ofp,
- NCURSES_BOOL buffered)
+#undef _nc_read_termcap
+void _nc_read_termcap(void)
{ /* void */ }
/* ./tinfo/strings.c */
@@ -4305,6 +4353,8 @@ int _nc_resolve_uses(
#undef _nc_syntax
int _nc_syntax;
+#undef _nc_strict_bsd
+int _nc_strict_bsd;
#undef _nc_curr_file_pos
long _nc_curr_file_pos;
#undef _nc_comment_start
diff --git a/contrib/ncurses/ncurses/llib-lncursestw b/contrib/ncurses/ncurses/llib-lncursestw
index 5230bc758aff..b1919c43e822 100644
--- a/contrib/ncurses/ncurses/llib-lncursestw
+++ b/contrib/ncurses/ncurses/llib-lncursestw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2009-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2011,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -27,7 +27,7 @@
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey 2009-2010,2011 *
+ * Author: Thomas E. Dickey 2009-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -369,17 +369,17 @@ int pair_content(
#undef _nc_do_color_sp
void _nc_do_color_sp(
SCREEN *sp,
- short old_pair,
- short pair,
- NCURSES_BOOL reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_OUTC_sp outc)
{ /* void */ }
#undef _nc_do_color
void _nc_do_color(
- short old_pair,
- short pair,
- NCURSES_BOOL reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_OUTC outc)
{ /* void */ }
@@ -457,86 +457,88 @@ int flash(void)
/* ./lib_gen.c */
+#include <ncurses_cfg.h>
+
#undef addch
-int addch(
+int (addch)(
const chtype z)
{ return(*(int *)0); }
#undef addchnstr
-int addchnstr(
+int (addchnstr)(
const chtype *a1,
int z)
{ return(*(int *)0); }
#undef addchstr
-int addchstr(
+int (addchstr)(
const chtype *z)
{ return(*(int *)0); }
#undef addnstr
-int addnstr(
+int (addnstr)(
const char *a1,
int z)
{ return(*(int *)0); }
#undef addstr
-int addstr(
+int (addstr)(
const char *z)
{ return(*(int *)0); }
#undef attroff
-int attroff(
- NCURSES_ATTR_T z)
+int (attroff)(
+ int z)
{ return(*(int *)0); }
#undef attron
-int attron(
- NCURSES_ATTR_T z)
+int (attron)(
+ int z)
{ return(*(int *)0); }
#undef attrset
-int attrset(
- NCURSES_ATTR_T z)
+int (attrset)(
+ int z)
{ return(*(int *)0); }
#undef attr_get
-int attr_get(
+int (attr_get)(
attr_t *a1,
short *a2,
void *z)
{ return(*(int *)0); }
#undef attr_off
-int attr_off(
+int (attr_off)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef attr_on
-int attr_on(
+int (attr_on)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef attr_set
-int attr_set(
+int (attr_set)(
attr_t a1,
short a2,
void *z)
{ return(*(int *)0); }
#undef bkgd
-int bkgd(
+int (bkgd)(
chtype z)
{ return(*(int *)0); }
#undef bkgdset
-void bkgdset(
+void (bkgdset)(
chtype z)
{ /* void */ }
#undef border
-int border(
+int (border)(
chtype a1,
chtype a2,
chtype a3,
@@ -548,14 +550,14 @@ int border(
{ return(*(int *)0); }
#undef box
-int box(
+int (box)(
WINDOW *a1,
chtype a2,
chtype z)
{ return(*(int *)0); }
#undef chgat
-int chgat(
+int (chgat)(
int a1,
attr_t a2,
short a3,
@@ -563,137 +565,137 @@ int chgat(
{ return(*(int *)0); }
#undef clear
-int clear(void)
+int (clear)(void)
{ return(*(int *)0); }
#undef clrtobot
-int clrtobot(void)
+int (clrtobot)(void)
{ return(*(int *)0); }
#undef clrtoeol
-int clrtoeol(void)
+int (clrtoeol)(void)
{ return(*(int *)0); }
#undef color_set
-int color_set(
+int (color_set)(
short a1,
void *z)
{ return(*(int *)0); }
#undef COLOR_PAIR
-int COLOR_PAIR(
+int (COLOR_PAIR)(
int z)
{ return(*(int *)0); }
#undef delch
-int delch(void)
+int (delch)(void)
{ return(*(int *)0); }
#undef deleteln
-int deleteln(void)
+int (deleteln)(void)
{ return(*(int *)0); }
#undef echochar
-int echochar(
+int (echochar)(
const chtype z)
{ return(*(int *)0); }
#undef erase
-int erase(void)
+int (erase)(void)
{ return(*(int *)0); }
#undef getbkgd
-chtype getbkgd(
+chtype (getbkgd)(
WINDOW *z)
{ return(*(chtype *)0); }
#undef getch
-int getch(void)
+int (getch)(void)
{ return(*(int *)0); }
#undef getnstr
-int getnstr(
+int (getnstr)(
char *a1,
int z)
{ return(*(int *)0); }
#undef getstr
-int getstr(
+int (getstr)(
char *z)
{ return(*(int *)0); }
#undef hline
-int hline(
+int (hline)(
chtype a1,
int z)
{ return(*(int *)0); }
#undef inch
-chtype inch(void)
+chtype (inch)(void)
{ return(*(chtype *)0); }
#undef inchnstr
-int inchnstr(
+int (inchnstr)(
chtype *a1,
int z)
{ return(*(int *)0); }
#undef inchstr
-int inchstr(
+int (inchstr)(
chtype *z)
{ return(*(int *)0); }
#undef innstr
-int innstr(
+int (innstr)(
char *a1,
int z)
{ return(*(int *)0); }
#undef insch
-int insch(
+int (insch)(
chtype z)
{ return(*(int *)0); }
#undef insdelln
-int insdelln(
+int (insdelln)(
int z)
{ return(*(int *)0); }
#undef insertln
-int insertln(void)
+int (insertln)(void)
{ return(*(int *)0); }
#undef insnstr
-int insnstr(
+int (insnstr)(
const char *a1,
int z)
{ return(*(int *)0); }
#undef insstr
-int insstr(
+int (insstr)(
const char *z)
{ return(*(int *)0); }
#undef instr
-int instr(
+int (instr)(
char *z)
{ return(*(int *)0); }
#undef move
-int move(
+int (move)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvaddch
-int mvaddch(
+int (mvaddch)(
int a1,
int a2,
const chtype z)
{ return(*(int *)0); }
#undef mvaddchnstr
-int mvaddchnstr(
+int (mvaddchnstr)(
int a1,
int a2,
const chtype *a3,
@@ -701,14 +703,14 @@ int mvaddchnstr(
{ return(*(int *)0); }
#undef mvaddchstr
-int mvaddchstr(
+int (mvaddchstr)(
int a1,
int a2,
const chtype *z)
{ return(*(int *)0); }
#undef mvaddnstr
-int mvaddnstr(
+int (mvaddnstr)(
int a1,
int a2,
const char *a3,
@@ -716,14 +718,14 @@ int mvaddnstr(
{ return(*(int *)0); }
#undef mvaddstr
-int mvaddstr(
+int (mvaddstr)(
int a1,
int a2,
const char *z)
{ return(*(int *)0); }
#undef mvchgat
-int mvchgat(
+int (mvchgat)(
int a1,
int a2,
int a3,
@@ -733,19 +735,19 @@ int mvchgat(
{ return(*(int *)0); }
#undef mvdelch
-int mvdelch(
+int (mvdelch)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvgetch
-int mvgetch(
+int (mvgetch)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvgetnstr
-int mvgetnstr(
+int (mvgetnstr)(
int a1,
int a2,
char *a3,
@@ -753,14 +755,14 @@ int mvgetnstr(
{ return(*(int *)0); }
#undef mvgetstr
-int mvgetstr(
+int (mvgetstr)(
int a1,
int a2,
char *z)
{ return(*(int *)0); }
#undef mvhline
-int mvhline(
+int (mvhline)(
int a1,
int a2,
chtype a3,
@@ -768,13 +770,13 @@ int mvhline(
{ return(*(int *)0); }
#undef mvinch
-chtype mvinch(
+chtype (mvinch)(
int a1,
int z)
{ return(*(chtype *)0); }
#undef mvinchnstr
-int mvinchnstr(
+int (mvinchnstr)(
int a1,
int a2,
chtype *a3,
@@ -782,14 +784,14 @@ int mvinchnstr(
{ return(*(int *)0); }
#undef mvinchstr
-int mvinchstr(
+int (mvinchstr)(
int a1,
int a2,
chtype *z)
{ return(*(int *)0); }
#undef mvinnstr
-int mvinnstr(
+int (mvinnstr)(
int a1,
int a2,
char *a3,
@@ -797,14 +799,14 @@ int mvinnstr(
{ return(*(int *)0); }
#undef mvinsch
-int mvinsch(
+int (mvinsch)(
int a1,
int a2,
chtype z)
{ return(*(int *)0); }
#undef mvinsnstr
-int mvinsnstr(
+int (mvinsnstr)(
int a1,
int a2,
const char *a3,
@@ -812,21 +814,21 @@ int mvinsnstr(
{ return(*(int *)0); }
#undef mvinsstr
-int mvinsstr(
+int (mvinsstr)(
int a1,
int a2,
const char *z)
{ return(*(int *)0); }
#undef mvinstr
-int mvinstr(
+int (mvinstr)(
int a1,
int a2,
char *z)
{ return(*(int *)0); }
#undef mvvline
-int mvvline(
+int (mvvline)(
int a1,
int a2,
chtype a3,
@@ -834,7 +836,7 @@ int mvvline(
{ return(*(int *)0); }
#undef mvwaddch
-int mvwaddch(
+int (mvwaddch)(
WINDOW *a1,
int a2,
int a3,
@@ -842,7 +844,7 @@ int mvwaddch(
{ return(*(int *)0); }
#undef mvwaddchnstr
-int mvwaddchnstr(
+int (mvwaddchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -851,7 +853,7 @@ int mvwaddchnstr(
{ return(*(int *)0); }
#undef mvwaddchstr
-int mvwaddchstr(
+int (mvwaddchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -859,7 +861,7 @@ int mvwaddchstr(
{ return(*(int *)0); }
#undef mvwaddnstr
-int mvwaddnstr(
+int (mvwaddnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -868,7 +870,7 @@ int mvwaddnstr(
{ return(*(int *)0); }
#undef mvwaddstr
-int mvwaddstr(
+int (mvwaddstr)(
WINDOW *a1,
int a2,
int a3,
@@ -876,7 +878,7 @@ int mvwaddstr(
{ return(*(int *)0); }
#undef mvwchgat
-int mvwchgat(
+int (mvwchgat)(
WINDOW *a1,
int a2,
int a3,
@@ -887,21 +889,21 @@ int mvwchgat(
{ return(*(int *)0); }
#undef mvwdelch
-int mvwdelch(
+int (mvwdelch)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef mvwgetch
-int mvwgetch(
+int (mvwgetch)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef mvwgetnstr
-int mvwgetnstr(
+int (mvwgetnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -910,7 +912,7 @@ int mvwgetnstr(
{ return(*(int *)0); }
#undef mvwgetstr
-int mvwgetstr(
+int (mvwgetstr)(
WINDOW *a1,
int a2,
int a3,
@@ -918,7 +920,7 @@ int mvwgetstr(
{ return(*(int *)0); }
#undef mvwhline
-int mvwhline(
+int (mvwhline)(
WINDOW *a1,
int a2,
int a3,
@@ -927,14 +929,14 @@ int mvwhline(
{ return(*(int *)0); }
#undef mvwinch
-chtype mvwinch(
+chtype (mvwinch)(
WINDOW *a1,
int a2,
int z)
{ return(*(chtype *)0); }
#undef mvwinchnstr
-int mvwinchnstr(
+int (mvwinchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -943,7 +945,7 @@ int mvwinchnstr(
{ return(*(int *)0); }
#undef mvwinchstr
-int mvwinchstr(
+int (mvwinchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -951,7 +953,7 @@ int mvwinchstr(
{ return(*(int *)0); }
#undef mvwinnstr
-int mvwinnstr(
+int (mvwinnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -960,7 +962,7 @@ int mvwinnstr(
{ return(*(int *)0); }
#undef mvwinsch
-int mvwinsch(
+int (mvwinsch)(
WINDOW *a1,
int a2,
int a3,
@@ -968,7 +970,7 @@ int mvwinsch(
{ return(*(int *)0); }
#undef mvwinsnstr
-int mvwinsnstr(
+int (mvwinsnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -977,7 +979,7 @@ int mvwinsnstr(
{ return(*(int *)0); }
#undef mvwinsstr
-int mvwinsstr(
+int (mvwinsstr)(
WINDOW *a1,
int a2,
int a3,
@@ -985,7 +987,7 @@ int mvwinsstr(
{ return(*(int *)0); }
#undef mvwinstr
-int mvwinstr(
+int (mvwinstr)(
WINDOW *a1,
int a2,
int a3,
@@ -993,7 +995,7 @@ int mvwinstr(
{ return(*(int *)0); }
#undef mvwvline
-int mvwvline(
+int (mvwvline)(
WINDOW *a1,
int a2,
int a3,
@@ -1002,129 +1004,129 @@ int mvwvline(
{ return(*(int *)0); }
#undef PAIR_NUMBER
-int PAIR_NUMBER(
+int (PAIR_NUMBER)(
int z)
{ return(*(int *)0); }
#undef redrawwin
-int redrawwin(
+int (redrawwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef refresh
-int refresh(void)
+int (refresh)(void)
{ return(*(int *)0); }
#undef scrl
-int scrl(
+int (scrl)(
int z)
{ return(*(int *)0); }
#undef scroll
-int scroll(
+int (scroll)(
WINDOW *z)
{ return(*(int *)0); }
#undef setscrreg
-int setscrreg(
+int (setscrreg)(
int a1,
int z)
{ return(*(int *)0); }
#undef slk_attr_off
-int slk_attr_off(
+int (slk_attr_off)(
const attr_t a1,
void *z)
{ return(*(int *)0); }
#undef slk_attr_on
-int slk_attr_on(
+int (slk_attr_on)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef standout
-int standout(void)
+int (standout)(void)
{ return(*(int *)0); }
#undef standend
-int standend(void)
+int (standend)(void)
{ return(*(int *)0); }
#undef timeout
-void timeout(
+void (timeout)(
int z)
{ /* void */ }
#undef touchline
-int touchline(
+int (touchline)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef touchwin
-int touchwin(
+int (touchwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef untouchwin
-int untouchwin(
+int (untouchwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef vline
-int vline(
+int (vline)(
chtype a1,
int z)
{ return(*(int *)0); }
#undef vw_printw
-int vw_printw(
+int (vw_printw)(
WINDOW *a1,
const char *a2,
va_list z)
{ return(*(int *)0); }
#undef vw_scanw
-int vw_scanw(
+int (vw_scanw)(
WINDOW *a1,
char *a2,
va_list z)
{ return(*(int *)0); }
#undef waddchstr
-int waddchstr(
+int (waddchstr)(
WINDOW *a1,
const chtype *z)
{ return(*(int *)0); }
#undef waddstr
-int waddstr(
+int (waddstr)(
WINDOW *a1,
const char *z)
{ return(*(int *)0); }
#undef wattron
-int wattron(
+int (wattron)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattroff
-int wattroff(
+int (wattroff)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattrset
-int wattrset(
+int (wattrset)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattr_get
-int wattr_get(
+int (wattr_get)(
WINDOW *a1,
attr_t *a2,
short *a3,
@@ -1132,7 +1134,7 @@ int wattr_get(
{ return(*(int *)0); }
#undef wattr_set
-int wattr_set(
+int (wattr_set)(
WINDOW *a1,
attr_t a2,
short a3,
@@ -1140,205 +1142,205 @@ int wattr_set(
{ return(*(int *)0); }
#undef wdeleteln
-int wdeleteln(
+int (wdeleteln)(
WINDOW *z)
{ return(*(int *)0); }
#undef wgetstr
-int wgetstr(
+int (wgetstr)(
WINDOW *a1,
char *z)
{ return(*(int *)0); }
#undef winchstr
-int winchstr(
+int (winchstr)(
WINDOW *a1,
chtype *z)
{ return(*(int *)0); }
#undef winsertln
-int winsertln(
+int (winsertln)(
WINDOW *z)
{ return(*(int *)0); }
#undef winsstr
-int winsstr(
+int (winsstr)(
WINDOW *a1,
const char *z)
{ return(*(int *)0); }
#undef winstr
-int winstr(
+int (winstr)(
WINDOW *a1,
char *z)
{ return(*(int *)0); }
#undef wstandout
-int wstandout(
+int (wstandout)(
WINDOW *z)
{ return(*(int *)0); }
#undef wstandend
-int wstandend(
+int (wstandend)(
WINDOW *z)
{ return(*(int *)0); }
#undef getattrs
-int getattrs(
+int (getattrs)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getcurx
-int getcurx(
+int (getcurx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getcury
-int getcury(
+int (getcury)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getbegx
-int getbegx(
+int (getbegx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getbegy
-int getbegy(
+int (getbegy)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getmaxx
-int getmaxx(
+int (getmaxx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getmaxy
-int getmaxy(
+int (getmaxy)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getparx
-int getparx(
+int (getparx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getpary
-int getpary(
+int (getpary)(
const WINDOW *z)
{ return(*(int *)0); }
#undef wgetparent
-WINDOW *wgetparent(
+WINDOW *(wgetparent)(
const WINDOW *z)
{ return(*(WINDOW **)0); }
#undef is_cleared
-NCURSES_BOOL is_cleared(
+NCURSES_BOOL (is_cleared)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_idcok
-NCURSES_BOOL is_idcok(
+NCURSES_BOOL (is_idcok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_idlok
-NCURSES_BOOL is_idlok(
+NCURSES_BOOL (is_idlok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_immedok
-NCURSES_BOOL is_immedok(
+NCURSES_BOOL (is_immedok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_keypad
-NCURSES_BOOL is_keypad(
+NCURSES_BOOL (is_keypad)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_leaveok
-NCURSES_BOOL is_leaveok(
+NCURSES_BOOL (is_leaveok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_nodelay
-NCURSES_BOOL is_nodelay(
+NCURSES_BOOL (is_nodelay)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_notimeout
-NCURSES_BOOL is_notimeout(
+NCURSES_BOOL (is_notimeout)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_pad
-NCURSES_BOOL is_pad(
+NCURSES_BOOL (is_pad)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_scrollok
-NCURSES_BOOL is_scrollok(
+NCURSES_BOOL (is_scrollok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_subwin
-NCURSES_BOOL is_subwin(
+NCURSES_BOOL (is_subwin)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_syncok
-NCURSES_BOOL is_syncok(
+NCURSES_BOOL (is_syncok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef wgetscrreg
-int wgetscrreg(
+int (wgetscrreg)(
const WINDOW *a1,
int *a2,
int *z)
{ return(*(int *)0); }
#undef add_wch
-int add_wch(
+int (add_wch)(
const cchar_t *z)
{ return(*(int *)0); }
#undef add_wchnstr
-int add_wchnstr(
+int (add_wchnstr)(
const cchar_t *a1,
int z)
{ return(*(int *)0); }
#undef add_wchstr
-int add_wchstr(
+int (add_wchstr)(
const cchar_t *z)
{ return(*(int *)0); }
#undef addnwstr
-int addnwstr(
+int (addnwstr)(
const wchar_t *a1,
int z)
{ return(*(int *)0); }
#undef addwstr
-int addwstr(
+int (addwstr)(
const wchar_t *z)
{ return(*(int *)0); }
#undef bkgrnd
-int bkgrnd(
+int (bkgrnd)(
const cchar_t *z)
{ return(*(int *)0); }
#undef bkgrndset
-void bkgrndset(
+void (bkgrndset)(
const cchar_t *z)
{ /* void */ }
#undef border_set
-int border_set(
+int (border_set)(
const cchar_t *a1,
const cchar_t *a2,
const cchar_t *a3,
@@ -1350,96 +1352,96 @@ int border_set(
{ return(*(int *)0); }
#undef box_set
-int box_set(
+int (box_set)(
WINDOW *a1,
const cchar_t *a2,
const cchar_t *z)
{ return(*(int *)0); }
#undef echo_wchar
-int echo_wchar(
+int (echo_wchar)(
const cchar_t *z)
{ return(*(int *)0); }
#undef get_wch
-int get_wch(
+int (get_wch)(
wint_t *z)
{ return(*(int *)0); }
#undef get_wstr
-int get_wstr(
+int (get_wstr)(
wint_t *z)
{ return(*(int *)0); }
#undef getbkgrnd
-int getbkgrnd(
+int (getbkgrnd)(
cchar_t *z)
{ return(*(int *)0); }
#undef getn_wstr
-int getn_wstr(
+int (getn_wstr)(
wint_t *a1,
int z)
{ return(*(int *)0); }
#undef hline_set
-int hline_set(
+int (hline_set)(
const cchar_t *a1,
int z)
{ return(*(int *)0); }
#undef in_wch
-int in_wch(
+int (in_wch)(
cchar_t *z)
{ return(*(int *)0); }
#undef in_wchnstr
-int in_wchnstr(
+int (in_wchnstr)(
cchar_t *a1,
int z)
{ return(*(int *)0); }
#undef in_wchstr
-int in_wchstr(
+int (in_wchstr)(
cchar_t *z)
{ return(*(int *)0); }
#undef innwstr
-int innwstr(
+int (innwstr)(
wchar_t *a1,
int z)
{ return(*(int *)0); }
#undef ins_nwstr
-int ins_nwstr(
+int (ins_nwstr)(
const wchar_t *a1,
int z)
{ return(*(int *)0); }
#undef ins_wch
-int ins_wch(
+int (ins_wch)(
const cchar_t *z)
{ return(*(int *)0); }
#undef ins_wstr
-int ins_wstr(
+int (ins_wstr)(
const wchar_t *z)
{ return(*(int *)0); }
#undef inwstr
-int inwstr(
+int (inwstr)(
wchar_t *z)
{ return(*(int *)0); }
#undef mvadd_wch
-int mvadd_wch(
+int (mvadd_wch)(
int a1,
int a2,
const cchar_t *z)
{ return(*(int *)0); }
#undef mvadd_wchnstr
-int mvadd_wchnstr(
+int (mvadd_wchnstr)(
int a1,
int a2,
const cchar_t *a3,
@@ -1447,14 +1449,14 @@ int mvadd_wchnstr(
{ return(*(int *)0); }
#undef mvadd_wchstr
-int mvadd_wchstr(
+int (mvadd_wchstr)(
int a1,
int a2,
const cchar_t *z)
{ return(*(int *)0); }
#undef mvaddnwstr
-int mvaddnwstr(
+int (mvaddnwstr)(
int a1,
int a2,
const wchar_t *a3,
@@ -1462,28 +1464,28 @@ int mvaddnwstr(
{ return(*(int *)0); }
#undef mvaddwstr
-int mvaddwstr(
+int (mvaddwstr)(
int a1,
int a2,
const wchar_t *z)
{ return(*(int *)0); }
#undef mvget_wch
-int mvget_wch(
+int (mvget_wch)(
int a1,
int a2,
wint_t *z)
{ return(*(int *)0); }
#undef mvget_wstr
-int mvget_wstr(
+int (mvget_wstr)(
int a1,
int a2,
wint_t *z)
{ return(*(int *)0); }
#undef mvgetn_wstr
-int mvgetn_wstr(
+int (mvgetn_wstr)(
int a1,
int a2,
wint_t *a3,
@@ -1491,7 +1493,7 @@ int mvgetn_wstr(
{ return(*(int *)0); }
#undef mvhline_set
-int mvhline_set(
+int (mvhline_set)(
int a1,
int a2,
const cchar_t *a3,
@@ -1499,14 +1501,14 @@ int mvhline_set(
{ return(*(int *)0); }
#undef mvin_wch
-int mvin_wch(
+int (mvin_wch)(
int a1,
int a2,
cchar_t *z)
{ return(*(int *)0); }
#undef mvin_wchnstr
-int mvin_wchnstr(
+int (mvin_wchnstr)(
int a1,
int a2,
cchar_t *a3,
@@ -1514,14 +1516,14 @@ int mvin_wchnstr(
{ return(*(int *)0); }
#undef mvin_wchstr
-int mvin_wchstr(
+int (mvin_wchstr)(
int a1,
int a2,
cchar_t *z)
{ return(*(int *)0); }
#undef mvinnwstr
-int mvinnwstr(
+int (mvinnwstr)(
int a1,
int a2,
wchar_t *a3,
@@ -1529,7 +1531,7 @@ int mvinnwstr(
{ return(*(int *)0); }
#undef mvins_nwstr
-int mvins_nwstr(
+int (mvins_nwstr)(
int a1,
int a2,
const wchar_t *a3,
@@ -1537,28 +1539,28 @@ int mvins_nwstr(
{ return(*(int *)0); }
#undef mvins_wch
-int mvins_wch(
+int (mvins_wch)(
int a1,
int a2,
const cchar_t *z)
{ return(*(int *)0); }
#undef mvins_wstr
-int mvins_wstr(
+int (mvins_wstr)(
int a1,
int a2,
const wchar_t *z)
{ return(*(int *)0); }
#undef mvinwstr
-int mvinwstr(
+int (mvinwstr)(
int a1,
int a2,
wchar_t *z)
{ return(*(int *)0); }
#undef mvvline_set
-int mvvline_set(
+int (mvvline_set)(
int a1,
int a2,
const cchar_t *a3,
@@ -1566,7 +1568,7 @@ int mvvline_set(
{ return(*(int *)0); }
#undef mvwadd_wch
-int mvwadd_wch(
+int (mvwadd_wch)(
WINDOW *a1,
int a2,
int a3,
@@ -1574,7 +1576,7 @@ int mvwadd_wch(
{ return(*(int *)0); }
#undef mvwadd_wchnstr
-int mvwadd_wchnstr(
+int (mvwadd_wchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1583,7 +1585,7 @@ int mvwadd_wchnstr(
{ return(*(int *)0); }
#undef mvwadd_wchstr
-int mvwadd_wchstr(
+int (mvwadd_wchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1591,7 +1593,7 @@ int mvwadd_wchstr(
{ return(*(int *)0); }
#undef mvwaddnwstr
-int mvwaddnwstr(
+int (mvwaddnwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1600,7 +1602,7 @@ int mvwaddnwstr(
{ return(*(int *)0); }
#undef mvwaddwstr
-int mvwaddwstr(
+int (mvwaddwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1608,7 +1610,7 @@ int mvwaddwstr(
{ return(*(int *)0); }
#undef mvwget_wch
-int mvwget_wch(
+int (mvwget_wch)(
WINDOW *a1,
int a2,
int a3,
@@ -1616,7 +1618,7 @@ int mvwget_wch(
{ return(*(int *)0); }
#undef mvwget_wstr
-int mvwget_wstr(
+int (mvwget_wstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1624,7 +1626,7 @@ int mvwget_wstr(
{ return(*(int *)0); }
#undef mvwgetn_wstr
-int mvwgetn_wstr(
+int (mvwgetn_wstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1633,7 +1635,7 @@ int mvwgetn_wstr(
{ return(*(int *)0); }
#undef mvwhline_set
-int mvwhline_set(
+int (mvwhline_set)(
WINDOW *a1,
int a2,
int a3,
@@ -1642,7 +1644,7 @@ int mvwhline_set(
{ return(*(int *)0); }
#undef mvwin_wch
-int mvwin_wch(
+int (mvwin_wch)(
WINDOW *a1,
int a2,
int a3,
@@ -1650,7 +1652,7 @@ int mvwin_wch(
{ return(*(int *)0); }
#undef mvwin_wchnstr
-int mvwin_wchnstr(
+int (mvwin_wchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1659,7 +1661,7 @@ int mvwin_wchnstr(
{ return(*(int *)0); }
#undef mvwin_wchstr
-int mvwin_wchstr(
+int (mvwin_wchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1667,7 +1669,7 @@ int mvwin_wchstr(
{ return(*(int *)0); }
#undef mvwinnwstr
-int mvwinnwstr(
+int (mvwinnwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1676,7 +1678,7 @@ int mvwinnwstr(
{ return(*(int *)0); }
#undef mvwins_nwstr
-int mvwins_nwstr(
+int (mvwins_nwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1685,7 +1687,7 @@ int mvwins_nwstr(
{ return(*(int *)0); }
#undef mvwins_wch
-int mvwins_wch(
+int (mvwins_wch)(
WINDOW *a1,
int a2,
int a3,
@@ -1693,7 +1695,7 @@ int mvwins_wch(
{ return(*(int *)0); }
#undef mvwins_wstr
-int mvwins_wstr(
+int (mvwins_wstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1701,7 +1703,7 @@ int mvwins_wstr(
{ return(*(int *)0); }
#undef mvwinwstr
-int mvwinwstr(
+int (mvwinwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1709,7 +1711,7 @@ int mvwinwstr(
{ return(*(int *)0); }
#undef mvwvline_set
-int mvwvline_set(
+int (mvwvline_set)(
WINDOW *a1,
int a2,
int a3,
@@ -1718,49 +1720,49 @@ int mvwvline_set(
{ return(*(int *)0); }
#undef vline_set
-int vline_set(
+int (vline_set)(
const cchar_t *a1,
int z)
{ return(*(int *)0); }
#undef wadd_wchstr
-int wadd_wchstr(
+int (wadd_wchstr)(
WINDOW *a1,
const cchar_t *z)
{ return(*(int *)0); }
#undef waddwstr
-int waddwstr(
+int (waddwstr)(
WINDOW *a1,
const wchar_t *z)
{ return(*(int *)0); }
#undef wget_wstr
-int wget_wstr(
+int (wget_wstr)(
WINDOW *a1,
wint_t *z)
{ return(*(int *)0); }
#undef wgetbkgrnd
-int wgetbkgrnd(
+int (wgetbkgrnd)(
WINDOW *a1,
cchar_t *z)
{ return(*(int *)0); }
#undef win_wchstr
-int win_wchstr(
+int (win_wchstr)(
WINDOW *a1,
cchar_t *z)
{ return(*(int *)0); }
#undef wins_wstr
-int wins_wstr(
+int (wins_wstr)(
WINDOW *a1,
const wchar_t *z)
{ return(*(int *)0); }
#undef mouse_trafo
-NCURSES_BOOL mouse_trafo(
+NCURSES_BOOL (mouse_trafo)(
int *a1,
int *a2,
NCURSES_BOOL z)
@@ -2040,6 +2042,23 @@ void _nc_mvcur_wrap_sp(
void _nc_mvcur_wrap(void)
{ /* void */ }
+#undef _nc_mvcur_sp
+int _nc_mvcur_sp(
+ SCREEN *sp,
+ int yold,
+ int xold,
+ int ynew,
+ int xnew)
+ { return(*(int *)0); }
+
+#undef _nc_mvcur
+int _nc_mvcur(
+ int yold,
+ int xold,
+ int ynew,
+ int xnew)
+ { return(*(int *)0); }
+
#undef mvcur_sp
int mvcur_sp(
SCREEN *sp,
@@ -2106,6 +2125,8 @@ SCREEN *newterm(
/* ./base/lib_newwin.c */
+#include "/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h"
+
#undef _nc_freewin
int _nc_freewin(
WINDOW *win)
@@ -2495,7 +2516,7 @@ int _nc_setupscreen_sp(
int slines,
int scolumns,
FILE *output,
- NCURSES_BOOL filtered,
+ int filtered,
int slk_format)
{ return(*(int *)0); }
@@ -2504,7 +2525,7 @@ int _nc_setupscreen(
int slines,
int scolumns,
FILE *output,
- NCURSES_BOOL filtered,
+ int filtered,
int slk_format)
{ return(*(int *)0); }
@@ -2786,7 +2807,7 @@ char *_tracemouse(
#undef _nc_signal_handler
void _nc_signal_handler(
- NCURSES_BOOL enable)
+ int enable)
{ /* void */ }
/* ./base/lib_ungetch.c */
@@ -3023,12 +3044,6 @@ char *_nc_varargs(
va_list ap)
{ return(*(char **)0); }
-/* ./base/memmove.c */
-
-#undef _nc_memmove
-void _nc_memmove(void)
- { /* void */ }
-
/* ./base/vsscanf.c */
#undef _nc_vsscanf
@@ -3563,7 +3578,7 @@ void _nc_align_termtype(
#undef _nc_copy_termtype
void _nc_copy_termtype(
TERMTYPE *dst,
- TERMTYPE *src)
+ const TERMTYPE *src)
{ /* void */ }
/* ./codes.c */
@@ -3667,6 +3682,8 @@ struct name_table_entry const *_nc_find_type_entry(
/* ./tinfo/db_iterator.c */
+#include <time.h>
+
#undef _nc_tic_dir
const char *_nc_tic_dir(
const char *path)
@@ -3758,6 +3775,12 @@ int _nc_getenv_num(
const char *name)
{ return(*(int *)0); }
+#undef _nc_setenv_num
+void _nc_setenv_num(
+ const char *name,
+ int value)
+ { /* void */ }
+
/* ./tinfo/home_terminfo.c */
#undef _nc_home_terminfo
@@ -4098,7 +4121,7 @@ int _nc_putp_flush_sp(
#undef _nc_keypad
int _nc_keypad(
SCREEN *sp,
- NCURSES_BOOL flag)
+ int flag)
{ return(*(int *)0); }
/* ./tinfo/lib_raw.c */
@@ -4229,11 +4252,22 @@ void use_env_sp(
NCURSES_BOOL f)
{ /* void */ }
+#undef use_tioctl_sp
+void use_tioctl_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef use_env
void use_env(
NCURSES_BOOL f)
{ /* void */ }
+#undef use_tioctl
+void use_tioctl(
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef _nc_get_screensize
void _nc_get_screensize(
SCREEN *sp,
@@ -4255,7 +4289,7 @@ int _nc_setup_tinfo(
#undef _nc_tinfo_cmdch
void _nc_tinfo_cmdch(
TERMINAL *termp,
- char proto)
+ int proto)
{ /* void */ }
#undef _nc_get_locale
@@ -4276,7 +4310,7 @@ int _nc_setupterm(
char *tname,
int Filedes,
int *errret,
- NCURSES_BOOL reuse)
+ int reuse)
{ return(*(int *)0); }
#undef new_prescr
@@ -4415,7 +4449,7 @@ int _nc_tparm_err;
int _nc_tparm_analyze(
const char *string,
char *p_is_s[9],
- int *popcount)
+ int *_nc_popcount)
{ return(*(int *)0); }
#undef tparm
@@ -4435,7 +4469,7 @@ char *tiparm(
#undef PC
char PC;
#undef ospeed
-NCURSES_OSPEED ospeed;
+short ospeed;
#undef _nc_nulls_sent
int _nc_nulls_sent;
@@ -4475,12 +4509,28 @@ int _nc_outch(
int ch)
{ return(*(int *)0); }
+#undef _nc_putchar_sp
+int _nc_putchar_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar
+int _nc_putchar(
+ int ch)
+ { return(*(int *)0); }
+
#undef putp_sp
int putp_sp(
SCREEN *sp,
const char *string)
{ return(*(int *)0); }
+#undef putp
+int putp(
+ const char *string)
+ { return(*(int *)0); }
+
#undef _nc_putp_sp
int _nc_putp_sp(
SCREEN *sp,
@@ -4488,11 +4538,6 @@ int _nc_putp_sp(
const char *string)
{ return(*(int *)0); }
-#undef putp
-int putp(
- const char *string)
- { return(*(int *)0); }
-
#undef _nc_putp
int _nc_putp(
const char *name,
@@ -4557,12 +4602,12 @@ void _tracef(
#undef _nc_retrace_bool
NCURSES_BOOL _nc_retrace_bool(
- NCURSES_BOOL code)
+ int code)
{ return(*(NCURSES_BOOL *)0); }
#undef _nc_retrace_char
char _nc_retrace_char(
- char code)
+ int code)
{ return(*(char *)0); }
#undef _nc_retrace_int
@@ -4829,10 +4874,30 @@ char *const *_nc_strnames(void)
char *const *_nc_strfnames(void)
{ return(*(char **)0); }
+/* ./tinfo/obsolete.c */
+
+#undef _nc_set_buffer_sp
+void _nc_set_buffer_sp(
+ SCREEN *sp,
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+#undef _nc_set_buffer
+void _nc_set_buffer(
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
/* ./tinfo/read_entry.c */
#include <hashed_db.h>
+#undef _nc_init_termtype
+void _nc_init_termtype(
+ TERMTYPE *const tp)
+ { /* void */ }
+
#undef _nc_read_termtype
int _nc_read_termtype(
TERMTYPE *ptr,
@@ -4857,25 +4922,8 @@ int _nc_read_entry(
#include <sys/types.h>
-#undef _nc_read_termcap_entry
-int _nc_read_termcap_entry(
- const char *const tn,
- TERMTYPE *const tp)
- { return(*(int *)0); }
-
-/* ./tinfo/setbuf.c */
-
-#undef _nc_set_buffer_sp
-void _nc_set_buffer_sp(
- SCREEN *sp,
- FILE *ofp,
- NCURSES_BOOL buffered)
- { /* void */ }
-
-#undef _nc_set_buffer
-void _nc_set_buffer(
- FILE *ofp,
- NCURSES_BOOL buffered)
+#undef _nc_read_termcap
+void _nc_read_termcap(void)
{ /* void */ }
/* ./tinfo/strings.c */
@@ -5123,6 +5171,8 @@ int _nc_resolve_uses(
#undef _nc_syntax
int _nc_syntax;
+#undef _nc_strict_bsd
+int _nc_strict_bsd;
#undef _nc_curr_file_pos
long _nc_curr_file_pos;
#undef _nc_comment_start
diff --git a/contrib/ncurses/ncurses/llib-lncursesw b/contrib/ncurses/ncurses/llib-lncursesw
index 28e68034ea8d..be768d716b9c 100644
--- a/contrib/ncurses/ncurses/llib-lncursesw
+++ b/contrib/ncurses/ncurses/llib-lncursesw
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2011,2013 Free Software 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-2010,2011 *
+ * Author: Thomas E. Dickey 2001-on *
****************************************************************************/
/* LINTLIBRARY */
@@ -366,17 +366,17 @@ int pair_content(
#undef _nc_do_color_sp
void _nc_do_color_sp(
SCREEN *sp,
- short old_pair,
- short pair,
- NCURSES_BOOL reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_OUTC_sp outc)
{ /* void */ }
#undef _nc_do_color
void _nc_do_color(
- short old_pair,
- short pair,
- NCURSES_BOOL reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_OUTC outc)
{ /* void */ }
@@ -454,86 +454,88 @@ int flash(void)
/* ./lib_gen.c */
+#include <ncurses_cfg.h>
+
#undef addch
-int addch(
+int (addch)(
const chtype z)
{ return(*(int *)0); }
#undef addchnstr
-int addchnstr(
+int (addchnstr)(
const chtype *a1,
int z)
{ return(*(int *)0); }
#undef addchstr
-int addchstr(
+int (addchstr)(
const chtype *z)
{ return(*(int *)0); }
#undef addnstr
-int addnstr(
+int (addnstr)(
const char *a1,
int z)
{ return(*(int *)0); }
#undef addstr
-int addstr(
+int (addstr)(
const char *z)
{ return(*(int *)0); }
#undef attroff
-int attroff(
- NCURSES_ATTR_T z)
+int (attroff)(
+ int z)
{ return(*(int *)0); }
#undef attron
-int attron(
- NCURSES_ATTR_T z)
+int (attron)(
+ int z)
{ return(*(int *)0); }
#undef attrset
-int attrset(
- NCURSES_ATTR_T z)
+int (attrset)(
+ int z)
{ return(*(int *)0); }
#undef attr_get
-int attr_get(
+int (attr_get)(
attr_t *a1,
short *a2,
void *z)
{ return(*(int *)0); }
#undef attr_off
-int attr_off(
+int (attr_off)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef attr_on
-int attr_on(
+int (attr_on)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef attr_set
-int attr_set(
+int (attr_set)(
attr_t a1,
short a2,
void *z)
{ return(*(int *)0); }
#undef bkgd
-int bkgd(
+int (bkgd)(
chtype z)
{ return(*(int *)0); }
#undef bkgdset
-void bkgdset(
+void (bkgdset)(
chtype z)
{ /* void */ }
#undef border
-int border(
+int (border)(
chtype a1,
chtype a2,
chtype a3,
@@ -545,14 +547,14 @@ int border(
{ return(*(int *)0); }
#undef box
-int box(
+int (box)(
WINDOW *a1,
chtype a2,
chtype z)
{ return(*(int *)0); }
#undef chgat
-int chgat(
+int (chgat)(
int a1,
attr_t a2,
short a3,
@@ -560,137 +562,137 @@ int chgat(
{ return(*(int *)0); }
#undef clear
-int clear(void)
+int (clear)(void)
{ return(*(int *)0); }
#undef clrtobot
-int clrtobot(void)
+int (clrtobot)(void)
{ return(*(int *)0); }
#undef clrtoeol
-int clrtoeol(void)
+int (clrtoeol)(void)
{ return(*(int *)0); }
#undef color_set
-int color_set(
+int (color_set)(
short a1,
void *z)
{ return(*(int *)0); }
#undef COLOR_PAIR
-int COLOR_PAIR(
+int (COLOR_PAIR)(
int z)
{ return(*(int *)0); }
#undef delch
-int delch(void)
+int (delch)(void)
{ return(*(int *)0); }
#undef deleteln
-int deleteln(void)
+int (deleteln)(void)
{ return(*(int *)0); }
#undef echochar
-int echochar(
+int (echochar)(
const chtype z)
{ return(*(int *)0); }
#undef erase
-int erase(void)
+int (erase)(void)
{ return(*(int *)0); }
#undef getbkgd
-chtype getbkgd(
+chtype (getbkgd)(
WINDOW *z)
{ return(*(chtype *)0); }
#undef getch
-int getch(void)
+int (getch)(void)
{ return(*(int *)0); }
#undef getnstr
-int getnstr(
+int (getnstr)(
char *a1,
int z)
{ return(*(int *)0); }
#undef getstr
-int getstr(
+int (getstr)(
char *z)
{ return(*(int *)0); }
#undef hline
-int hline(
+int (hline)(
chtype a1,
int z)
{ return(*(int *)0); }
#undef inch
-chtype inch(void)
+chtype (inch)(void)
{ return(*(chtype *)0); }
#undef inchnstr
-int inchnstr(
+int (inchnstr)(
chtype *a1,
int z)
{ return(*(int *)0); }
#undef inchstr
-int inchstr(
+int (inchstr)(
chtype *z)
{ return(*(int *)0); }
#undef innstr
-int innstr(
+int (innstr)(
char *a1,
int z)
{ return(*(int *)0); }
#undef insch
-int insch(
+int (insch)(
chtype z)
{ return(*(int *)0); }
#undef insdelln
-int insdelln(
+int (insdelln)(
int z)
{ return(*(int *)0); }
#undef insertln
-int insertln(void)
+int (insertln)(void)
{ return(*(int *)0); }
#undef insnstr
-int insnstr(
+int (insnstr)(
const char *a1,
int z)
{ return(*(int *)0); }
#undef insstr
-int insstr(
+int (insstr)(
const char *z)
{ return(*(int *)0); }
#undef instr
-int instr(
+int (instr)(
char *z)
{ return(*(int *)0); }
#undef move
-int move(
+int (move)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvaddch
-int mvaddch(
+int (mvaddch)(
int a1,
int a2,
const chtype z)
{ return(*(int *)0); }
#undef mvaddchnstr
-int mvaddchnstr(
+int (mvaddchnstr)(
int a1,
int a2,
const chtype *a3,
@@ -698,14 +700,14 @@ int mvaddchnstr(
{ return(*(int *)0); }
#undef mvaddchstr
-int mvaddchstr(
+int (mvaddchstr)(
int a1,
int a2,
const chtype *z)
{ return(*(int *)0); }
#undef mvaddnstr
-int mvaddnstr(
+int (mvaddnstr)(
int a1,
int a2,
const char *a3,
@@ -713,14 +715,14 @@ int mvaddnstr(
{ return(*(int *)0); }
#undef mvaddstr
-int mvaddstr(
+int (mvaddstr)(
int a1,
int a2,
const char *z)
{ return(*(int *)0); }
#undef mvchgat
-int mvchgat(
+int (mvchgat)(
int a1,
int a2,
int a3,
@@ -730,19 +732,19 @@ int mvchgat(
{ return(*(int *)0); }
#undef mvdelch
-int mvdelch(
+int (mvdelch)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvgetch
-int mvgetch(
+int (mvgetch)(
int a1,
int z)
{ return(*(int *)0); }
#undef mvgetnstr
-int mvgetnstr(
+int (mvgetnstr)(
int a1,
int a2,
char *a3,
@@ -750,14 +752,14 @@ int mvgetnstr(
{ return(*(int *)0); }
#undef mvgetstr
-int mvgetstr(
+int (mvgetstr)(
int a1,
int a2,
char *z)
{ return(*(int *)0); }
#undef mvhline
-int mvhline(
+int (mvhline)(
int a1,
int a2,
chtype a3,
@@ -765,13 +767,13 @@ int mvhline(
{ return(*(int *)0); }
#undef mvinch
-chtype mvinch(
+chtype (mvinch)(
int a1,
int z)
{ return(*(chtype *)0); }
#undef mvinchnstr
-int mvinchnstr(
+int (mvinchnstr)(
int a1,
int a2,
chtype *a3,
@@ -779,14 +781,14 @@ int mvinchnstr(
{ return(*(int *)0); }
#undef mvinchstr
-int mvinchstr(
+int (mvinchstr)(
int a1,
int a2,
chtype *z)
{ return(*(int *)0); }
#undef mvinnstr
-int mvinnstr(
+int (mvinnstr)(
int a1,
int a2,
char *a3,
@@ -794,14 +796,14 @@ int mvinnstr(
{ return(*(int *)0); }
#undef mvinsch
-int mvinsch(
+int (mvinsch)(
int a1,
int a2,
chtype z)
{ return(*(int *)0); }
#undef mvinsnstr
-int mvinsnstr(
+int (mvinsnstr)(
int a1,
int a2,
const char *a3,
@@ -809,21 +811,21 @@ int mvinsnstr(
{ return(*(int *)0); }
#undef mvinsstr
-int mvinsstr(
+int (mvinsstr)(
int a1,
int a2,
const char *z)
{ return(*(int *)0); }
#undef mvinstr
-int mvinstr(
+int (mvinstr)(
int a1,
int a2,
char *z)
{ return(*(int *)0); }
#undef mvvline
-int mvvline(
+int (mvvline)(
int a1,
int a2,
chtype a3,
@@ -831,7 +833,7 @@ int mvvline(
{ return(*(int *)0); }
#undef mvwaddch
-int mvwaddch(
+int (mvwaddch)(
WINDOW *a1,
int a2,
int a3,
@@ -839,7 +841,7 @@ int mvwaddch(
{ return(*(int *)0); }
#undef mvwaddchnstr
-int mvwaddchnstr(
+int (mvwaddchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -848,7 +850,7 @@ int mvwaddchnstr(
{ return(*(int *)0); }
#undef mvwaddchstr
-int mvwaddchstr(
+int (mvwaddchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -856,7 +858,7 @@ int mvwaddchstr(
{ return(*(int *)0); }
#undef mvwaddnstr
-int mvwaddnstr(
+int (mvwaddnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -865,7 +867,7 @@ int mvwaddnstr(
{ return(*(int *)0); }
#undef mvwaddstr
-int mvwaddstr(
+int (mvwaddstr)(
WINDOW *a1,
int a2,
int a3,
@@ -873,7 +875,7 @@ int mvwaddstr(
{ return(*(int *)0); }
#undef mvwchgat
-int mvwchgat(
+int (mvwchgat)(
WINDOW *a1,
int a2,
int a3,
@@ -884,21 +886,21 @@ int mvwchgat(
{ return(*(int *)0); }
#undef mvwdelch
-int mvwdelch(
+int (mvwdelch)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef mvwgetch
-int mvwgetch(
+int (mvwgetch)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef mvwgetnstr
-int mvwgetnstr(
+int (mvwgetnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -907,7 +909,7 @@ int mvwgetnstr(
{ return(*(int *)0); }
#undef mvwgetstr
-int mvwgetstr(
+int (mvwgetstr)(
WINDOW *a1,
int a2,
int a3,
@@ -915,7 +917,7 @@ int mvwgetstr(
{ return(*(int *)0); }
#undef mvwhline
-int mvwhline(
+int (mvwhline)(
WINDOW *a1,
int a2,
int a3,
@@ -924,14 +926,14 @@ int mvwhline(
{ return(*(int *)0); }
#undef mvwinch
-chtype mvwinch(
+chtype (mvwinch)(
WINDOW *a1,
int a2,
int z)
{ return(*(chtype *)0); }
#undef mvwinchnstr
-int mvwinchnstr(
+int (mvwinchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -940,7 +942,7 @@ int mvwinchnstr(
{ return(*(int *)0); }
#undef mvwinchstr
-int mvwinchstr(
+int (mvwinchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -948,7 +950,7 @@ int mvwinchstr(
{ return(*(int *)0); }
#undef mvwinnstr
-int mvwinnstr(
+int (mvwinnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -957,7 +959,7 @@ int mvwinnstr(
{ return(*(int *)0); }
#undef mvwinsch
-int mvwinsch(
+int (mvwinsch)(
WINDOW *a1,
int a2,
int a3,
@@ -965,7 +967,7 @@ int mvwinsch(
{ return(*(int *)0); }
#undef mvwinsnstr
-int mvwinsnstr(
+int (mvwinsnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -974,7 +976,7 @@ int mvwinsnstr(
{ return(*(int *)0); }
#undef mvwinsstr
-int mvwinsstr(
+int (mvwinsstr)(
WINDOW *a1,
int a2,
int a3,
@@ -982,7 +984,7 @@ int mvwinsstr(
{ return(*(int *)0); }
#undef mvwinstr
-int mvwinstr(
+int (mvwinstr)(
WINDOW *a1,
int a2,
int a3,
@@ -990,7 +992,7 @@ int mvwinstr(
{ return(*(int *)0); }
#undef mvwvline
-int mvwvline(
+int (mvwvline)(
WINDOW *a1,
int a2,
int a3,
@@ -999,129 +1001,129 @@ int mvwvline(
{ return(*(int *)0); }
#undef PAIR_NUMBER
-int PAIR_NUMBER(
+int (PAIR_NUMBER)(
int z)
{ return(*(int *)0); }
#undef redrawwin
-int redrawwin(
+int (redrawwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef refresh
-int refresh(void)
+int (refresh)(void)
{ return(*(int *)0); }
#undef scrl
-int scrl(
+int (scrl)(
int z)
{ return(*(int *)0); }
#undef scroll
-int scroll(
+int (scroll)(
WINDOW *z)
{ return(*(int *)0); }
#undef setscrreg
-int setscrreg(
+int (setscrreg)(
int a1,
int z)
{ return(*(int *)0); }
#undef slk_attr_off
-int slk_attr_off(
+int (slk_attr_off)(
const attr_t a1,
void *z)
{ return(*(int *)0); }
#undef slk_attr_on
-int slk_attr_on(
+int (slk_attr_on)(
attr_t a1,
void *z)
{ return(*(int *)0); }
#undef standout
-int standout(void)
+int (standout)(void)
{ return(*(int *)0); }
#undef standend
-int standend(void)
+int (standend)(void)
{ return(*(int *)0); }
#undef timeout
-void timeout(
+void (timeout)(
int z)
{ /* void */ }
#undef touchline
-int touchline(
+int (touchline)(
WINDOW *a1,
int a2,
int z)
{ return(*(int *)0); }
#undef touchwin
-int touchwin(
+int (touchwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef untouchwin
-int untouchwin(
+int (untouchwin)(
WINDOW *z)
{ return(*(int *)0); }
#undef vline
-int vline(
+int (vline)(
chtype a1,
int z)
{ return(*(int *)0); }
#undef vw_printw
-int vw_printw(
+int (vw_printw)(
WINDOW *a1,
const char *a2,
va_list z)
{ return(*(int *)0); }
#undef vw_scanw
-int vw_scanw(
+int (vw_scanw)(
WINDOW *a1,
char *a2,
va_list z)
{ return(*(int *)0); }
#undef waddchstr
-int waddchstr(
+int (waddchstr)(
WINDOW *a1,
const chtype *z)
{ return(*(int *)0); }
#undef waddstr
-int waddstr(
+int (waddstr)(
WINDOW *a1,
const char *z)
{ return(*(int *)0); }
#undef wattron
-int wattron(
+int (wattron)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattroff
-int wattroff(
+int (wattroff)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattrset
-int wattrset(
+int (wattrset)(
WINDOW *a1,
int z)
{ return(*(int *)0); }
#undef wattr_get
-int wattr_get(
+int (wattr_get)(
WINDOW *a1,
attr_t *a2,
short *a3,
@@ -1129,7 +1131,7 @@ int wattr_get(
{ return(*(int *)0); }
#undef wattr_set
-int wattr_set(
+int (wattr_set)(
WINDOW *a1,
attr_t a2,
short a3,
@@ -1137,205 +1139,205 @@ int wattr_set(
{ return(*(int *)0); }
#undef wdeleteln
-int wdeleteln(
+int (wdeleteln)(
WINDOW *z)
{ return(*(int *)0); }
#undef wgetstr
-int wgetstr(
+int (wgetstr)(
WINDOW *a1,
char *z)
{ return(*(int *)0); }
#undef winchstr
-int winchstr(
+int (winchstr)(
WINDOW *a1,
chtype *z)
{ return(*(int *)0); }
#undef winsertln
-int winsertln(
+int (winsertln)(
WINDOW *z)
{ return(*(int *)0); }
#undef winsstr
-int winsstr(
+int (winsstr)(
WINDOW *a1,
const char *z)
{ return(*(int *)0); }
#undef winstr
-int winstr(
+int (winstr)(
WINDOW *a1,
char *z)
{ return(*(int *)0); }
#undef wstandout
-int wstandout(
+int (wstandout)(
WINDOW *z)
{ return(*(int *)0); }
#undef wstandend
-int wstandend(
+int (wstandend)(
WINDOW *z)
{ return(*(int *)0); }
#undef getattrs
-int getattrs(
+int (getattrs)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getcurx
-int getcurx(
+int (getcurx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getcury
-int getcury(
+int (getcury)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getbegx
-int getbegx(
+int (getbegx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getbegy
-int getbegy(
+int (getbegy)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getmaxx
-int getmaxx(
+int (getmaxx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getmaxy
-int getmaxy(
+int (getmaxy)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getparx
-int getparx(
+int (getparx)(
const WINDOW *z)
{ return(*(int *)0); }
#undef getpary
-int getpary(
+int (getpary)(
const WINDOW *z)
{ return(*(int *)0); }
#undef wgetparent
-WINDOW *wgetparent(
+WINDOW *(wgetparent)(
const WINDOW *z)
{ return(*(WINDOW **)0); }
#undef is_cleared
-NCURSES_BOOL is_cleared(
+NCURSES_BOOL (is_cleared)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_idcok
-NCURSES_BOOL is_idcok(
+NCURSES_BOOL (is_idcok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_idlok
-NCURSES_BOOL is_idlok(
+NCURSES_BOOL (is_idlok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_immedok
-NCURSES_BOOL is_immedok(
+NCURSES_BOOL (is_immedok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_keypad
-NCURSES_BOOL is_keypad(
+NCURSES_BOOL (is_keypad)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_leaveok
-NCURSES_BOOL is_leaveok(
+NCURSES_BOOL (is_leaveok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_nodelay
-NCURSES_BOOL is_nodelay(
+NCURSES_BOOL (is_nodelay)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_notimeout
-NCURSES_BOOL is_notimeout(
+NCURSES_BOOL (is_notimeout)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_pad
-NCURSES_BOOL is_pad(
+NCURSES_BOOL (is_pad)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_scrollok
-NCURSES_BOOL is_scrollok(
+NCURSES_BOOL (is_scrollok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_subwin
-NCURSES_BOOL is_subwin(
+NCURSES_BOOL (is_subwin)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef is_syncok
-NCURSES_BOOL is_syncok(
+NCURSES_BOOL (is_syncok)(
const WINDOW *z)
{ return(*(NCURSES_BOOL *)0); }
#undef wgetscrreg
-int wgetscrreg(
+int (wgetscrreg)(
const WINDOW *a1,
int *a2,
int *z)
{ return(*(int *)0); }
#undef add_wch
-int add_wch(
+int (add_wch)(
const cchar_t *z)
{ return(*(int *)0); }
#undef add_wchnstr
-int add_wchnstr(
+int (add_wchnstr)(
const cchar_t *a1,
int z)
{ return(*(int *)0); }
#undef add_wchstr
-int add_wchstr(
+int (add_wchstr)(
const cchar_t *z)
{ return(*(int *)0); }
#undef addnwstr
-int addnwstr(
+int (addnwstr)(
const wchar_t *a1,
int z)
{ return(*(int *)0); }
#undef addwstr
-int addwstr(
+int (addwstr)(
const wchar_t *z)
{ return(*(int *)0); }
#undef bkgrnd
-int bkgrnd(
+int (bkgrnd)(
const cchar_t *z)
{ return(*(int *)0); }
#undef bkgrndset
-void bkgrndset(
+void (bkgrndset)(
const cchar_t *z)
{ /* void */ }
#undef border_set
-int border_set(
+int (border_set)(
const cchar_t *a1,
const cchar_t *a2,
const cchar_t *a3,
@@ -1347,96 +1349,96 @@ int border_set(
{ return(*(int *)0); }
#undef box_set
-int box_set(
+int (box_set)(
WINDOW *a1,
const cchar_t *a2,
const cchar_t *z)
{ return(*(int *)0); }
#undef echo_wchar
-int echo_wchar(
+int (echo_wchar)(
const cchar_t *z)
{ return(*(int *)0); }
#undef get_wch
-int get_wch(
+int (get_wch)(
wint_t *z)
{ return(*(int *)0); }
#undef get_wstr
-int get_wstr(
+int (get_wstr)(
wint_t *z)
{ return(*(int *)0); }
#undef getbkgrnd
-int getbkgrnd(
+int (getbkgrnd)(
cchar_t *z)
{ return(*(int *)0); }
#undef getn_wstr
-int getn_wstr(
+int (getn_wstr)(
wint_t *a1,
int z)
{ return(*(int *)0); }
#undef hline_set
-int hline_set(
+int (hline_set)(
const cchar_t *a1,
int z)
{ return(*(int *)0); }
#undef in_wch
-int in_wch(
+int (in_wch)(
cchar_t *z)
{ return(*(int *)0); }
#undef in_wchnstr
-int in_wchnstr(
+int (in_wchnstr)(
cchar_t *a1,
int z)
{ return(*(int *)0); }
#undef in_wchstr
-int in_wchstr(
+int (in_wchstr)(
cchar_t *z)
{ return(*(int *)0); }
#undef innwstr
-int innwstr(
+int (innwstr)(
wchar_t *a1,
int z)
{ return(*(int *)0); }
#undef ins_nwstr
-int ins_nwstr(
+int (ins_nwstr)(
const wchar_t *a1,
int z)
{ return(*(int *)0); }
#undef ins_wch
-int ins_wch(
+int (ins_wch)(
const cchar_t *z)
{ return(*(int *)0); }
#undef ins_wstr
-int ins_wstr(
+int (ins_wstr)(
const wchar_t *z)
{ return(*(int *)0); }
#undef inwstr
-int inwstr(
+int (inwstr)(
wchar_t *z)
{ return(*(int *)0); }
#undef mvadd_wch
-int mvadd_wch(
+int (mvadd_wch)(
int a1,
int a2,
const cchar_t *z)
{ return(*(int *)0); }
#undef mvadd_wchnstr
-int mvadd_wchnstr(
+int (mvadd_wchnstr)(
int a1,
int a2,
const cchar_t *a3,
@@ -1444,14 +1446,14 @@ int mvadd_wchnstr(
{ return(*(int *)0); }
#undef mvadd_wchstr
-int mvadd_wchstr(
+int (mvadd_wchstr)(
int a1,
int a2,
const cchar_t *z)
{ return(*(int *)0); }
#undef mvaddnwstr
-int mvaddnwstr(
+int (mvaddnwstr)(
int a1,
int a2,
const wchar_t *a3,
@@ -1459,28 +1461,28 @@ int mvaddnwstr(
{ return(*(int *)0); }
#undef mvaddwstr
-int mvaddwstr(
+int (mvaddwstr)(
int a1,
int a2,
const wchar_t *z)
{ return(*(int *)0); }
#undef mvget_wch
-int mvget_wch(
+int (mvget_wch)(
int a1,
int a2,
wint_t *z)
{ return(*(int *)0); }
#undef mvget_wstr
-int mvget_wstr(
+int (mvget_wstr)(
int a1,
int a2,
wint_t *z)
{ return(*(int *)0); }
#undef mvgetn_wstr
-int mvgetn_wstr(
+int (mvgetn_wstr)(
int a1,
int a2,
wint_t *a3,
@@ -1488,7 +1490,7 @@ int mvgetn_wstr(
{ return(*(int *)0); }
#undef mvhline_set
-int mvhline_set(
+int (mvhline_set)(
int a1,
int a2,
const cchar_t *a3,
@@ -1496,14 +1498,14 @@ int mvhline_set(
{ return(*(int *)0); }
#undef mvin_wch
-int mvin_wch(
+int (mvin_wch)(
int a1,
int a2,
cchar_t *z)
{ return(*(int *)0); }
#undef mvin_wchnstr
-int mvin_wchnstr(
+int (mvin_wchnstr)(
int a1,
int a2,
cchar_t *a3,
@@ -1511,14 +1513,14 @@ int mvin_wchnstr(
{ return(*(int *)0); }
#undef mvin_wchstr
-int mvin_wchstr(
+int (mvin_wchstr)(
int a1,
int a2,
cchar_t *z)
{ return(*(int *)0); }
#undef mvinnwstr
-int mvinnwstr(
+int (mvinnwstr)(
int a1,
int a2,
wchar_t *a3,
@@ -1526,7 +1528,7 @@ int mvinnwstr(
{ return(*(int *)0); }
#undef mvins_nwstr
-int mvins_nwstr(
+int (mvins_nwstr)(
int a1,
int a2,
const wchar_t *a3,
@@ -1534,28 +1536,28 @@ int mvins_nwstr(
{ return(*(int *)0); }
#undef mvins_wch
-int mvins_wch(
+int (mvins_wch)(
int a1,
int a2,
const cchar_t *z)
{ return(*(int *)0); }
#undef mvins_wstr
-int mvins_wstr(
+int (mvins_wstr)(
int a1,
int a2,
const wchar_t *z)
{ return(*(int *)0); }
#undef mvinwstr
-int mvinwstr(
+int (mvinwstr)(
int a1,
int a2,
wchar_t *z)
{ return(*(int *)0); }
#undef mvvline_set
-int mvvline_set(
+int (mvvline_set)(
int a1,
int a2,
const cchar_t *a3,
@@ -1563,7 +1565,7 @@ int mvvline_set(
{ return(*(int *)0); }
#undef mvwadd_wch
-int mvwadd_wch(
+int (mvwadd_wch)(
WINDOW *a1,
int a2,
int a3,
@@ -1571,7 +1573,7 @@ int mvwadd_wch(
{ return(*(int *)0); }
#undef mvwadd_wchnstr
-int mvwadd_wchnstr(
+int (mvwadd_wchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1580,7 +1582,7 @@ int mvwadd_wchnstr(
{ return(*(int *)0); }
#undef mvwadd_wchstr
-int mvwadd_wchstr(
+int (mvwadd_wchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1588,7 +1590,7 @@ int mvwadd_wchstr(
{ return(*(int *)0); }
#undef mvwaddnwstr
-int mvwaddnwstr(
+int (mvwaddnwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1597,7 +1599,7 @@ int mvwaddnwstr(
{ return(*(int *)0); }
#undef mvwaddwstr
-int mvwaddwstr(
+int (mvwaddwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1605,7 +1607,7 @@ int mvwaddwstr(
{ return(*(int *)0); }
#undef mvwget_wch
-int mvwget_wch(
+int (mvwget_wch)(
WINDOW *a1,
int a2,
int a3,
@@ -1613,7 +1615,7 @@ int mvwget_wch(
{ return(*(int *)0); }
#undef mvwget_wstr
-int mvwget_wstr(
+int (mvwget_wstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1621,7 +1623,7 @@ int mvwget_wstr(
{ return(*(int *)0); }
#undef mvwgetn_wstr
-int mvwgetn_wstr(
+int (mvwgetn_wstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1630,7 +1632,7 @@ int mvwgetn_wstr(
{ return(*(int *)0); }
#undef mvwhline_set
-int mvwhline_set(
+int (mvwhline_set)(
WINDOW *a1,
int a2,
int a3,
@@ -1639,7 +1641,7 @@ int mvwhline_set(
{ return(*(int *)0); }
#undef mvwin_wch
-int mvwin_wch(
+int (mvwin_wch)(
WINDOW *a1,
int a2,
int a3,
@@ -1647,7 +1649,7 @@ int mvwin_wch(
{ return(*(int *)0); }
#undef mvwin_wchnstr
-int mvwin_wchnstr(
+int (mvwin_wchnstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1656,7 +1658,7 @@ int mvwin_wchnstr(
{ return(*(int *)0); }
#undef mvwin_wchstr
-int mvwin_wchstr(
+int (mvwin_wchstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1664,7 +1666,7 @@ int mvwin_wchstr(
{ return(*(int *)0); }
#undef mvwinnwstr
-int mvwinnwstr(
+int (mvwinnwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1673,7 +1675,7 @@ int mvwinnwstr(
{ return(*(int *)0); }
#undef mvwins_nwstr
-int mvwins_nwstr(
+int (mvwins_nwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1682,7 +1684,7 @@ int mvwins_nwstr(
{ return(*(int *)0); }
#undef mvwins_wch
-int mvwins_wch(
+int (mvwins_wch)(
WINDOW *a1,
int a2,
int a3,
@@ -1690,7 +1692,7 @@ int mvwins_wch(
{ return(*(int *)0); }
#undef mvwins_wstr
-int mvwins_wstr(
+int (mvwins_wstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1698,7 +1700,7 @@ int mvwins_wstr(
{ return(*(int *)0); }
#undef mvwinwstr
-int mvwinwstr(
+int (mvwinwstr)(
WINDOW *a1,
int a2,
int a3,
@@ -1706,7 +1708,7 @@ int mvwinwstr(
{ return(*(int *)0); }
#undef mvwvline_set
-int mvwvline_set(
+int (mvwvline_set)(
WINDOW *a1,
int a2,
int a3,
@@ -1715,49 +1717,49 @@ int mvwvline_set(
{ return(*(int *)0); }
#undef vline_set
-int vline_set(
+int (vline_set)(
const cchar_t *a1,
int z)
{ return(*(int *)0); }
#undef wadd_wchstr
-int wadd_wchstr(
+int (wadd_wchstr)(
WINDOW *a1,
const cchar_t *z)
{ return(*(int *)0); }
#undef waddwstr
-int waddwstr(
+int (waddwstr)(
WINDOW *a1,
const wchar_t *z)
{ return(*(int *)0); }
#undef wget_wstr
-int wget_wstr(
+int (wget_wstr)(
WINDOW *a1,
wint_t *z)
{ return(*(int *)0); }
#undef wgetbkgrnd
-int wgetbkgrnd(
+int (wgetbkgrnd)(
WINDOW *a1,
cchar_t *z)
{ return(*(int *)0); }
#undef win_wchstr
-int win_wchstr(
+int (win_wchstr)(
WINDOW *a1,
cchar_t *z)
{ return(*(int *)0); }
#undef wins_wstr
-int wins_wstr(
+int (wins_wstr)(
WINDOW *a1,
const wchar_t *z)
{ return(*(int *)0); }
#undef mouse_trafo
-NCURSES_BOOL mouse_trafo(
+NCURSES_BOOL (mouse_trafo)(
int *a1,
int *a2,
NCURSES_BOOL z)
@@ -2031,6 +2033,23 @@ void _nc_mvcur_wrap_sp(
void _nc_mvcur_wrap(void)
{ /* void */ }
+#undef _nc_mvcur_sp
+int _nc_mvcur_sp(
+ SCREEN *sp,
+ int yold,
+ int xold,
+ int ynew,
+ int xnew)
+ { return(*(int *)0); }
+
+#undef _nc_mvcur
+int _nc_mvcur(
+ int yold,
+ int xold,
+ int ynew,
+ int xnew)
+ { return(*(int *)0); }
+
#undef mvcur_sp
int mvcur_sp(
SCREEN *sp,
@@ -2097,6 +2116,8 @@ SCREEN *newterm(
/* ./base/lib_newwin.c */
+#include "/usr/lib/gcc/x86_64-linux-gnu/4.4.5/include/stddef.h"
+
#undef _nc_freewin
int _nc_freewin(
WINDOW *win)
@@ -2440,8 +2461,8 @@ int scr_set(
void _nc_scroll_window(
WINDOW *win,
int const n,
- short const top,
- short const bottom,
+ int const top,
+ int const bottom,
cchar_t blank)
{ /* void */ }
@@ -2486,7 +2507,7 @@ int _nc_setupscreen_sp(
int slines,
int scolumns,
FILE *output,
- NCURSES_BOOL filtered,
+ int filtered,
int slk_format)
{ return(*(int *)0); }
@@ -2495,7 +2516,7 @@ int _nc_setupscreen(
int slines,
int scolumns,
FILE *output,
- NCURSES_BOOL filtered,
+ int filtered,
int slk_format)
{ return(*(int *)0); }
@@ -2777,7 +2798,7 @@ char *_tracemouse(
#undef _nc_signal_handler
void _nc_signal_handler(
- NCURSES_BOOL enable)
+ int enable)
{ /* void */ }
/* ./base/lib_ungetch.c */
@@ -3014,12 +3035,6 @@ char *_nc_varargs(
va_list ap)
{ return(*(char **)0); }
-/* ./base/memmove.c */
-
-#undef _nc_memmove
-void _nc_memmove(void)
- { /* void */ }
-
/* ./base/vsscanf.c */
#undef _nc_vsscanf
@@ -3554,7 +3569,7 @@ void _nc_align_termtype(
#undef _nc_copy_termtype
void _nc_copy_termtype(
TERMTYPE *dst,
- TERMTYPE *src)
+ const TERMTYPE *src)
{ /* void */ }
/* ./codes.c */
@@ -3653,6 +3668,8 @@ struct name_table_entry const *_nc_find_type_entry(
/* ./tinfo/db_iterator.c */
+#include <time.h>
+
#undef _nc_tic_dir
const char *_nc_tic_dir(
const char *path)
@@ -3744,6 +3761,12 @@ int _nc_getenv_num(
const char *name)
{ return(*(int *)0); }
+#undef _nc_setenv_num
+void _nc_setenv_num(
+ const char *name,
+ int value)
+ { /* void */ }
+
/* ./tinfo/home_terminfo.c */
#undef _nc_home_terminfo
@@ -3929,8 +3952,6 @@ char *longname(void)
/* ./tinfo/lib_napms.c */
-#include <time.h>
-
#undef napms_sp
int napms_sp(
SCREEN *sp,
@@ -4040,7 +4061,7 @@ int _nc_putp_flush_sp(
#undef _nc_keypad
int _nc_keypad(
SCREEN *sp,
- NCURSES_BOOL flag)
+ int flag)
{ return(*(int *)0); }
/* ./tinfo/lib_raw.c */
@@ -4149,11 +4170,22 @@ void use_env_sp(
NCURSES_BOOL f)
{ /* void */ }
+#undef use_tioctl_sp
+void use_tioctl_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef use_env
void use_env(
NCURSES_BOOL f)
{ /* void */ }
+#undef use_tioctl
+void use_tioctl(
+ NCURSES_BOOL f)
+ { /* void */ }
+
#undef _nc_get_screensize
void _nc_get_screensize(
SCREEN *sp,
@@ -4175,7 +4207,7 @@ int _nc_setup_tinfo(
#undef _nc_tinfo_cmdch
void _nc_tinfo_cmdch(
TERMINAL *termp,
- char proto)
+ int proto)
{ /* void */ }
#undef _nc_get_locale
@@ -4196,7 +4228,7 @@ int _nc_setupterm(
char *tname,
int Filedes,
int *errret,
- NCURSES_BOOL reuse)
+ int reuse)
{ return(*(int *)0); }
#undef new_prescr
@@ -4335,7 +4367,7 @@ int _nc_tparm_err;
int _nc_tparm_analyze(
const char *string,
char *p_is_s[9],
- int *popcount)
+ int *_nc_popcount)
{ return(*(int *)0); }
#undef tparm
@@ -4355,7 +4387,7 @@ char *tiparm(
#undef PC
char PC;
#undef ospeed
-NCURSES_OSPEED ospeed;
+short ospeed;
#undef _nc_nulls_sent
int _nc_nulls_sent;
@@ -4395,12 +4427,28 @@ int _nc_outch(
int ch)
{ return(*(int *)0); }
+#undef _nc_putchar_sp
+int _nc_putchar_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar
+int _nc_putchar(
+ int ch)
+ { return(*(int *)0); }
+
#undef putp_sp
int putp_sp(
SCREEN *sp,
const char *string)
{ return(*(int *)0); }
+#undef putp
+int putp(
+ const char *string)
+ { return(*(int *)0); }
+
#undef _nc_putp_sp
int _nc_putp_sp(
SCREEN *sp,
@@ -4408,11 +4456,6 @@ int _nc_putp_sp(
const char *string)
{ return(*(int *)0); }
-#undef putp
-int putp(
- const char *string)
- { return(*(int *)0); }
-
#undef _nc_putp
int _nc_putp(
const char *name,
@@ -4463,12 +4506,12 @@ void _tracef(
#undef _nc_retrace_bool
NCURSES_BOOL _nc_retrace_bool(
- NCURSES_BOOL code)
+ int code)
{ return(*(NCURSES_BOOL *)0); }
#undef _nc_retrace_char
char _nc_retrace_char(
- char code)
+ int code)
{ return(*(char *)0); }
#undef _nc_retrace_int
@@ -4713,10 +4756,30 @@ char *const strnames[] = {0};
#undef strfnames
char *const strfnames[] = {0};
+/* ./tinfo/obsolete.c */
+
+#undef _nc_set_buffer_sp
+void _nc_set_buffer_sp(
+ SCREEN *sp,
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+#undef _nc_set_buffer
+void _nc_set_buffer(
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
/* ./tinfo/read_entry.c */
#include <hashed_db.h>
+#undef _nc_init_termtype
+void _nc_init_termtype(
+ TERMTYPE *const tp)
+ { /* void */ }
+
#undef _nc_read_termtype
int _nc_read_termtype(
TERMTYPE *ptr,
@@ -4741,25 +4804,8 @@ int _nc_read_entry(
#include <sys/types.h>
-#undef _nc_read_termcap_entry
-int _nc_read_termcap_entry(
- const char *const tn,
- TERMTYPE *const tp)
- { return(*(int *)0); }
-
-/* ./tinfo/setbuf.c */
-
-#undef _nc_set_buffer_sp
-void _nc_set_buffer_sp(
- SCREEN *sp,
- FILE *ofp,
- NCURSES_BOOL buffered)
- { /* void */ }
-
-#undef _nc_set_buffer
-void _nc_set_buffer(
- FILE *ofp,
- NCURSES_BOOL buffered)
+#undef _nc_read_termcap
+void _nc_read_termcap(void)
{ /* void */ }
/* ./tinfo/strings.c */
@@ -5007,6 +5053,8 @@ int _nc_resolve_uses(
#undef _nc_syntax
int _nc_syntax;
+#undef _nc_strict_bsd
+int _nc_strict_bsd;
#undef _nc_curr_file_pos
long _nc_curr_file_pos;
#undef _nc_comment_start
diff --git a/contrib/ncurses/ncurses/llib-ltic b/contrib/ncurses/ncurses/llib-ltic
new file mode 100644
index 000000000000..981bb196706a
--- /dev/null
+++ b/contrib/ncurses/ncurses/llib-ltic
@@ -0,0 +1,212 @@
+/****************************************************************************
+ * Copyright (c) 2012 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * 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 2012 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./tinfo/alloc_entry.c */
+
+#include <curses.priv.h>
+#include <tic.h>
+
+#undef _nc_init_entry
+void _nc_init_entry(
+ TERMTYPE *const tp)
+ { /* void */ }
+
+#undef _nc_copy_entry
+ENTRY *_nc_copy_entry(
+ ENTRY *oldp)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_save_str
+char *_nc_save_str(
+ const char *const string)
+ { return(*(char **)0); }
+
+#undef _nc_wrap_entry
+void _nc_wrap_entry(
+ ENTRY *const ep,
+ NCURSES_BOOL copy_strings)
+ { /* void */ }
+
+#undef _nc_merge_entry
+void _nc_merge_entry(
+ TERMTYPE *const to,
+ TERMTYPE *const from)
+ { /* void */ }
+
+/* ./tinfo/captoinfo.c */
+
+#include <ctype.h>
+
+#undef _nc_captoinfo
+char *_nc_captoinfo(
+ const char *cap,
+ const char *s,
+ int const parameterized)
+ { return(*(char **)0); }
+
+#undef _nc_infotocap
+char *_nc_infotocap(
+ const char *cap,
+ const char *str,
+ int const parameterized)
+ { return(*(char **)0); }
+
+/* ./tinfo/comp_expand.c */
+
+#undef _nc_tic_expand
+char *_nc_tic_expand(
+ const char *srcp,
+ NCURSES_BOOL tic_format,
+ int numbers)
+ { return(*(char **)0); }
+
+/* ./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);
+
+#undef _nc_entry_match
+NCURSES_BOOL _nc_entry_match(
+ char *n1,
+ char *n2)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_read_entry_source
+void _nc_read_entry_source(
+ FILE *fp,
+ char *buf,
+ int literal,
+ NCURSES_BOOL silent,
+ NCURSES_BOOL (*hook)(
+ 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)
+ { return(*(int *)0); }
+
+/* ./tinfo/comp_scan.c */
+
+#undef _nc_syntax
+int _nc_syntax;
+#undef _nc_strict_bsd
+int _nc_strict_bsd;
+#undef _nc_curr_file_pos
+long _nc_curr_file_pos;
+#undef _nc_comment_start
+long _nc_comment_start;
+#undef _nc_comment_end
+long _nc_comment_end;
+#undef _nc_start_line
+long _nc_start_line;
+#undef _nc_curr_token
+struct token _nc_curr_token;
+#undef _nc_disable_period
+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
+int _nc_trans_string(
+ char *ptr,
+ char *last)
+ { return(*(int *)0); }
+
+#undef _nc_push_token
+void _nc_push_token(
+ int tokclass)
+ { /* void */ }
+
+#undef _nc_panic_mode
+void _nc_panic_mode(
+ char ch)
+ { /* void */ }
+
+/* ./tinfo/parse_entry.c */
+
+#undef _nc_parse_entry
+int _nc_parse_entry(
+ struct entry *entryp,
+ int literal,
+ NCURSES_BOOL silent)
+ { return(*(int *)0); }
+
+#undef _nc_capcmp
+int _nc_capcmp(
+ const char *s,
+ const char *t)
+ { return(*(int *)0); }
+
+typedef struct {
+ const char *from;
+ const char *to;
+} assoc;
+
+/* ./tinfo/write_entry.c */
+
+#include <hashed_db.h>
+
+#undef _nc_set_writedir
+void _nc_set_writedir(
+ char *dir)
+ { /* void */ }
+
+#undef _nc_write_entry
+void _nc_write_entry(
+ TERMTYPE *const tp)
+ { /* void */ }
+
+#undef _nc_tic_written
+int _nc_tic_written(void)
+ { return(*(int *)0); }
diff --git a/contrib/ncurses/ncurses/llib-ltict b/contrib/ncurses/ncurses/llib-ltict
new file mode 100644
index 000000000000..8371c1824876
--- /dev/null
+++ b/contrib/ncurses/ncurses/llib-ltict
@@ -0,0 +1,212 @@
+/****************************************************************************
+ * Copyright (c) 2013 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * 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 2013 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./tinfo/alloc_entry.c */
+
+#include <curses.priv.h>
+#include <tic.h>
+
+#undef _nc_init_entry
+void _nc_init_entry(
+ TERMTYPE *const tp)
+ { /* void */ }
+
+#undef _nc_copy_entry
+ENTRY *_nc_copy_entry(
+ ENTRY *oldp)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_save_str
+char *_nc_save_str(
+ const char *const string)
+ { return(*(char **)0); }
+
+#undef _nc_wrap_entry
+void _nc_wrap_entry(
+ ENTRY *const ep,
+ NCURSES_BOOL copy_strings)
+ { /* void */ }
+
+#undef _nc_merge_entry
+void _nc_merge_entry(
+ TERMTYPE *const to,
+ TERMTYPE *const from)
+ { /* void */ }
+
+/* ./tinfo/captoinfo.c */
+
+#include <ctype.h>
+
+#undef _nc_captoinfo
+char *_nc_captoinfo(
+ const char *cap,
+ const char *s,
+ int const parameterized)
+ { return(*(char **)0); }
+
+#undef _nc_infotocap
+char *_nc_infotocap(
+ const char *cap,
+ const char *str,
+ int const parameterized)
+ { return(*(char **)0); }
+
+/* ./tinfo/comp_expand.c */
+
+#undef _nc_tic_expand
+char *_nc_tic_expand(
+ const char *srcp,
+ NCURSES_BOOL tic_format,
+ int numbers)
+ { return(*(char **)0); }
+
+/* ./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);
+
+#undef _nc_entry_match
+NCURSES_BOOL _nc_entry_match(
+ char *n1,
+ char *n2)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_read_entry_source
+void _nc_read_entry_source(
+ FILE *fp,
+ char *buf,
+ int literal,
+ NCURSES_BOOL silent,
+ NCURSES_BOOL (*hook)(
+ 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)
+ { return(*(int *)0); }
+
+/* ./tinfo/comp_scan.c */
+
+#undef _nc_syntax
+int _nc_syntax;
+#undef _nc_strict_bsd
+int _nc_strict_bsd;
+#undef _nc_curr_file_pos
+long _nc_curr_file_pos;
+#undef _nc_comment_start
+long _nc_comment_start;
+#undef _nc_comment_end
+long _nc_comment_end;
+#undef _nc_start_line
+long _nc_start_line;
+#undef _nc_curr_token
+struct token _nc_curr_token;
+#undef _nc_disable_period
+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
+int _nc_trans_string(
+ char *ptr,
+ char *last)
+ { return(*(int *)0); }
+
+#undef _nc_push_token
+void _nc_push_token(
+ int tokclass)
+ { /* void */ }
+
+#undef _nc_panic_mode
+void _nc_panic_mode(
+ char ch)
+ { /* void */ }
+
+/* ./tinfo/parse_entry.c */
+
+#undef _nc_parse_entry
+int _nc_parse_entry(
+ struct entry *entryp,
+ int literal,
+ NCURSES_BOOL silent)
+ { return(*(int *)0); }
+
+#undef _nc_capcmp
+int _nc_capcmp(
+ const char *s,
+ const char *t)
+ { return(*(int *)0); }
+
+typedef struct {
+ const char *from;
+ const char *to;
+} assoc;
+
+/* ./tinfo/write_entry.c */
+
+#include <hashed_db.h>
+
+#undef _nc_set_writedir
+void _nc_set_writedir(
+ char *dir)
+ { /* void */ }
+
+#undef _nc_write_entry
+void _nc_write_entry(
+ TERMTYPE *const tp)
+ { /* void */ }
+
+#undef _nc_tic_written
+int _nc_tic_written(void)
+ { return(*(int *)0); }
diff --git a/contrib/ncurses/ncurses/llib-ltictw b/contrib/ncurses/ncurses/llib-ltictw
new file mode 100644
index 000000000000..981bb196706a
--- /dev/null
+++ b/contrib/ncurses/ncurses/llib-ltictw
@@ -0,0 +1,212 @@
+/****************************************************************************
+ * Copyright (c) 2012 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * 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 2012 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./tinfo/alloc_entry.c */
+
+#include <curses.priv.h>
+#include <tic.h>
+
+#undef _nc_init_entry
+void _nc_init_entry(
+ TERMTYPE *const tp)
+ { /* void */ }
+
+#undef _nc_copy_entry
+ENTRY *_nc_copy_entry(
+ ENTRY *oldp)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_save_str
+char *_nc_save_str(
+ const char *const string)
+ { return(*(char **)0); }
+
+#undef _nc_wrap_entry
+void _nc_wrap_entry(
+ ENTRY *const ep,
+ NCURSES_BOOL copy_strings)
+ { /* void */ }
+
+#undef _nc_merge_entry
+void _nc_merge_entry(
+ TERMTYPE *const to,
+ TERMTYPE *const from)
+ { /* void */ }
+
+/* ./tinfo/captoinfo.c */
+
+#include <ctype.h>
+
+#undef _nc_captoinfo
+char *_nc_captoinfo(
+ const char *cap,
+ const char *s,
+ int const parameterized)
+ { return(*(char **)0); }
+
+#undef _nc_infotocap
+char *_nc_infotocap(
+ const char *cap,
+ const char *str,
+ int const parameterized)
+ { return(*(char **)0); }
+
+/* ./tinfo/comp_expand.c */
+
+#undef _nc_tic_expand
+char *_nc_tic_expand(
+ const char *srcp,
+ NCURSES_BOOL tic_format,
+ int numbers)
+ { return(*(char **)0); }
+
+/* ./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);
+
+#undef _nc_entry_match
+NCURSES_BOOL _nc_entry_match(
+ char *n1,
+ char *n2)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_read_entry_source
+void _nc_read_entry_source(
+ FILE *fp,
+ char *buf,
+ int literal,
+ NCURSES_BOOL silent,
+ NCURSES_BOOL (*hook)(
+ 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)
+ { return(*(int *)0); }
+
+/* ./tinfo/comp_scan.c */
+
+#undef _nc_syntax
+int _nc_syntax;
+#undef _nc_strict_bsd
+int _nc_strict_bsd;
+#undef _nc_curr_file_pos
+long _nc_curr_file_pos;
+#undef _nc_comment_start
+long _nc_comment_start;
+#undef _nc_comment_end
+long _nc_comment_end;
+#undef _nc_start_line
+long _nc_start_line;
+#undef _nc_curr_token
+struct token _nc_curr_token;
+#undef _nc_disable_period
+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
+int _nc_trans_string(
+ char *ptr,
+ char *last)
+ { return(*(int *)0); }
+
+#undef _nc_push_token
+void _nc_push_token(
+ int tokclass)
+ { /* void */ }
+
+#undef _nc_panic_mode
+void _nc_panic_mode(
+ char ch)
+ { /* void */ }
+
+/* ./tinfo/parse_entry.c */
+
+#undef _nc_parse_entry
+int _nc_parse_entry(
+ struct entry *entryp,
+ int literal,
+ NCURSES_BOOL silent)
+ { return(*(int *)0); }
+
+#undef _nc_capcmp
+int _nc_capcmp(
+ const char *s,
+ const char *t)
+ { return(*(int *)0); }
+
+typedef struct {
+ const char *from;
+ const char *to;
+} assoc;
+
+/* ./tinfo/write_entry.c */
+
+#include <hashed_db.h>
+
+#undef _nc_set_writedir
+void _nc_set_writedir(
+ char *dir)
+ { /* void */ }
+
+#undef _nc_write_entry
+void _nc_write_entry(
+ TERMTYPE *const tp)
+ { /* void */ }
+
+#undef _nc_tic_written
+int _nc_tic_written(void)
+ { return(*(int *)0); }
diff --git a/contrib/ncurses/ncurses/llib-lticw b/contrib/ncurses/ncurses/llib-lticw
new file mode 100644
index 000000000000..981bb196706a
--- /dev/null
+++ b/contrib/ncurses/ncurses/llib-lticw
@@ -0,0 +1,212 @@
+/****************************************************************************
+ * Copyright (c) 2012 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * 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 2012 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./tinfo/alloc_entry.c */
+
+#include <curses.priv.h>
+#include <tic.h>
+
+#undef _nc_init_entry
+void _nc_init_entry(
+ TERMTYPE *const tp)
+ { /* void */ }
+
+#undef _nc_copy_entry
+ENTRY *_nc_copy_entry(
+ ENTRY *oldp)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_save_str
+char *_nc_save_str(
+ const char *const string)
+ { return(*(char **)0); }
+
+#undef _nc_wrap_entry
+void _nc_wrap_entry(
+ ENTRY *const ep,
+ NCURSES_BOOL copy_strings)
+ { /* void */ }
+
+#undef _nc_merge_entry
+void _nc_merge_entry(
+ TERMTYPE *const to,
+ TERMTYPE *const from)
+ { /* void */ }
+
+/* ./tinfo/captoinfo.c */
+
+#include <ctype.h>
+
+#undef _nc_captoinfo
+char *_nc_captoinfo(
+ const char *cap,
+ const char *s,
+ int const parameterized)
+ { return(*(char **)0); }
+
+#undef _nc_infotocap
+char *_nc_infotocap(
+ const char *cap,
+ const char *str,
+ int const parameterized)
+ { return(*(char **)0); }
+
+/* ./tinfo/comp_expand.c */
+
+#undef _nc_tic_expand
+char *_nc_tic_expand(
+ const char *srcp,
+ NCURSES_BOOL tic_format,
+ int numbers)
+ { return(*(char **)0); }
+
+/* ./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);
+
+#undef _nc_entry_match
+NCURSES_BOOL _nc_entry_match(
+ char *n1,
+ char *n2)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_read_entry_source
+void _nc_read_entry_source(
+ FILE *fp,
+ char *buf,
+ int literal,
+ NCURSES_BOOL silent,
+ NCURSES_BOOL (*hook)(
+ 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)
+ { return(*(int *)0); }
+
+/* ./tinfo/comp_scan.c */
+
+#undef _nc_syntax
+int _nc_syntax;
+#undef _nc_strict_bsd
+int _nc_strict_bsd;
+#undef _nc_curr_file_pos
+long _nc_curr_file_pos;
+#undef _nc_comment_start
+long _nc_comment_start;
+#undef _nc_comment_end
+long _nc_comment_end;
+#undef _nc_start_line
+long _nc_start_line;
+#undef _nc_curr_token
+struct token _nc_curr_token;
+#undef _nc_disable_period
+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
+int _nc_trans_string(
+ char *ptr,
+ char *last)
+ { return(*(int *)0); }
+
+#undef _nc_push_token
+void _nc_push_token(
+ int tokclass)
+ { /* void */ }
+
+#undef _nc_panic_mode
+void _nc_panic_mode(
+ char ch)
+ { /* void */ }
+
+/* ./tinfo/parse_entry.c */
+
+#undef _nc_parse_entry
+int _nc_parse_entry(
+ struct entry *entryp,
+ int literal,
+ NCURSES_BOOL silent)
+ { return(*(int *)0); }
+
+#undef _nc_capcmp
+int _nc_capcmp(
+ const char *s,
+ const char *t)
+ { return(*(int *)0); }
+
+typedef struct {
+ const char *from;
+ const char *to;
+} assoc;
+
+/* ./tinfo/write_entry.c */
+
+#include <hashed_db.h>
+
+#undef _nc_set_writedir
+void _nc_set_writedir(
+ char *dir)
+ { /* void */ }
+
+#undef _nc_write_entry
+void _nc_write_entry(
+ TERMTYPE *const tp)
+ { /* void */ }
+
+#undef _nc_tic_written
+int _nc_tic_written(void)
+ { return(*(int *)0); }
diff --git a/contrib/ncurses/ncurses/llib-ltinfo b/contrib/ncurses/ncurses/llib-ltinfo
new file mode 100644
index 000000000000..79ac2293e370
--- /dev/null
+++ b/contrib/ncurses/ncurses/llib-ltinfo
@@ -0,0 +1,1526 @@
+/****************************************************************************
+ * Copyright (c) 2012,2013 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * 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 2012 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./tinfo/access.c */
+
+#include <curses.priv.h>
+#include <ctype.h>
+#include <tic.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)
+ { return(*(char **)0); }
+
+#undef _nc_access
+int _nc_access(
+ const char *path,
+ 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); }
+
+/* ./tinfo/add_tries.c */
+
+#undef _nc_add_to_try
+int _nc_add_to_try(
+ TRIES **tree,
+ const char *str,
+ unsigned code)
+ { return(*(int *)0); }
+
+/* ./tinfo/alloc_ttype.c */
+
+#undef _nc_align_termtype
+void _nc_align_termtype(
+ TERMTYPE *to,
+ TERMTYPE *from)
+ { /* void */ }
+
+#undef _nc_copy_termtype
+void _nc_copy_termtype(
+ TERMTYPE *dst,
+ const TERMTYPE *src)
+ { /* void */ }
+
+/* ./codes.c */
+
+#undef boolcodes
+char *const boolcodes[] = {0};
+#undef numcodes
+char *const numcodes[] = {0};
+#undef strcodes
+char *const strcodes[] = {0};
+
+/* ./comp_captab.c */
+
+#include <hashsize.h>
+
+#undef _nc_get_table
+const struct name_table_entry *_nc_get_table(
+ NCURSES_BOOL termcap)
+ { return(*(const struct name_table_entry **)0); }
+
+#undef _nc_get_hash_table
+const HashValue *_nc_get_hash_table(
+ NCURSES_BOOL termcap)
+ { return(*(const HashValue **)0); }
+
+#undef _nc_get_alias_table
+const struct alias *_nc_get_alias_table(
+ NCURSES_BOOL termcap)
+ { return(*(const struct alias **)0); }
+
+#undef _nc_get_hash_info
+const HashData *_nc_get_hash_info(
+ NCURSES_BOOL termcap)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/comp_error.c */
+
+#undef _nc_suppress_warnings
+NCURSES_BOOL _nc_suppress_warnings;
+#undef _nc_curr_line
+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)
+ { /* void */ }
+
+#undef _nc_set_type
+void _nc_set_type(
+ const char *const name)
+ { /* void */ }
+
+#undef _nc_get_type
+void _nc_get_type(
+ char *name)
+ { /* void */ }
+
+#undef _nc_warning
+void _nc_warning(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_err_abort
+void _nc_err_abort(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_syserr_abort
+void _nc_syserr_abort(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+/* ./tinfo/comp_hash.c */
+
+#undef _nc_find_entry
+struct name_table_entry const *_nc_find_entry(
+ const char *string,
+ const HashValue *hash_table)
+ { return(*(struct name_table_entry const **)0); }
+
+#undef _nc_find_type_entry
+struct name_table_entry const *_nc_find_type_entry(
+ const char *string,
+ int type,
+ NCURSES_BOOL termcap)
+ { return(*(struct name_table_entry const **)0); }
+
+/* ./tinfo/db_iterator.c */
+
+#include <time.h>
+
+#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 */
+
+#undef _nc_doalloc
+void *_nc_doalloc(
+ void *oldp,
+ size_t amount)
+ { return(*(void **)0); }
+
+/* ./tinfo/entries.c */
+
+#undef _nc_head
+ENTRY *_nc_head;
+#undef _nc_tail
+ENTRY *_nc_tail;
+
+#undef _nc_free_entry
+void _nc_free_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { /* void */ }
+
+#undef _nc_free_entries
+void _nc_free_entries(
+ ENTRY *headp)
+ { /* void */ }
+
+#undef _nc_delink_entry
+ENTRY *_nc_delink_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_leaks_tinfo
+void _nc_leaks_tinfo(void)
+ { /* void */ }
+
+/* ./fallback.c */
+
+#undef _nc_fallback
+const TERMTYPE *_nc_fallback(
+ const char *name)
+ { return(*(const TERMTYPE **)0); }
+
+/* ./tinfo/free_ttype.c */
+
+#undef _nc_free_termtype
+void _nc_free_termtype(
+ TERMTYPE *ptr)
+ { /* void */ }
+
+#undef _nc_user_definable
+NCURSES_BOOL _nc_user_definable;
+
+#undef use_extended_names
+int use_extended_names(
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/getenv_num.c */
+
+#undef _nc_getenv_num
+int _nc_getenv_num(
+ const char *name)
+ { return(*(int *)0); }
+
+#undef _nc_setenv_num
+void _nc_setenv_num(
+ const char *name,
+ int value)
+ { /* void */ }
+
+/* ./tinfo/home_terminfo.c */
+
+#undef _nc_home_terminfo
+char *_nc_home_terminfo(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/init_keytry.c */
+
+#if 0
+
+#include <init_keytry.h>
+
+#undef _nc_tinfo_fkeys
+const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
+
+#endif
+
+#undef _nc_init_keytry
+void _nc_init_keytry(
+ SCREEN *sp)
+ { /* void */ }
+
+/* ./tinfo/lib_acs.c */
+
+#undef acs_map
+chtype acs_map[128];
+
+#undef _nc_init_acs_sp
+void _nc_init_acs_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_init_acs
+void _nc_init_acs(void)
+ { /* void */ }
+
+/* ./tinfo/lib_baudrate.c */
+
+#include <termcap.h>
+
+struct speed {
+ int s;
+ int sp;
+};
+
+#undef _nc_baudrate
+int _nc_baudrate(
+ int OSpeed)
+ { return(*(int *)0); }
+
+#undef _nc_ospeed
+int _nc_ospeed(
+ int BaudRate)
+ { return(*(int *)0); }
+
+#undef baudrate_sp
+int baudrate_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef baudrate
+int baudrate(void)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_cur_term.c */
+
+#undef cur_term
+TERMINAL *cur_term;
+
+#undef set_curterm_sp
+TERMINAL *set_curterm_sp(
+ SCREEN *sp,
+ TERMINAL *termp)
+ { return(*(TERMINAL **)0); }
+
+#undef set_curterm
+TERMINAL *set_curterm(
+ TERMINAL *termp)
+ { return(*(TERMINAL **)0); }
+
+#undef del_curterm_sp
+int del_curterm_sp(
+ SCREEN *sp,
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+#undef del_curterm
+int del_curterm(
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_data.c */
+
+#undef stdscr
+WINDOW *stdscr;
+#undef curscr
+WINDOW *curscr;
+#undef newscr
+WINDOW *newscr;
+#undef _nc_screen_chain
+SCREEN *_nc_screen_chain;
+#undef SP
+SCREEN *SP;
+#undef _nc_globals
+NCURSES_GLOBALS _nc_globals;
+#undef _nc_prescreen
+NCURSES_PRESCREEN _nc_prescreen;
+
+#undef _nc_screen_of
+SCREEN *_nc_screen_of(
+ WINDOW *win)
+ { return(*(SCREEN **)0); }
+
+/* ./tinfo/lib_has_cap.c */
+
+#undef has_ic_sp
+NCURSES_BOOL has_ic_sp(
+ SCREEN *sp)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_ic
+NCURSES_BOOL has_ic(void)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_il_sp
+NCURSES_BOOL has_il_sp(
+ SCREEN *sp)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_il
+NCURSES_BOOL has_il(void)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./tinfo/lib_kernel.c */
+
+#undef erasechar_sp
+char erasechar_sp(
+ SCREEN *sp)
+ { return(*(char *)0); }
+
+#undef erasechar
+char erasechar(void)
+ { return(*(char *)0); }
+
+#undef killchar_sp
+char killchar_sp(
+ SCREEN *sp)
+ { return(*(char *)0); }
+
+#undef killchar
+char killchar(void)
+ { return(*(char *)0); }
+
+#undef flushinp_sp
+int flushinp_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef flushinp
+int flushinp(void)
+ { return(*(int *)0); }
+
+/* ./lib_keyname.c */
+
+struct kn { short offset; int code; };
+
+#undef keyname_sp
+char *keyname_sp(
+ SCREEN *sp,
+ int c)
+ { return(*(char **)0); }
+
+#undef keyname
+char *keyname(
+ int c)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_longname.c */
+
+#undef longname
+char *longname(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_napms.c */
+
+#include <sys/time.h>
+
+#undef napms_sp
+int napms_sp(
+ SCREEN *sp,
+ int ms)
+ { return(*(int *)0); }
+
+#undef napms
+int napms(
+ int ms)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_options.c */
+
+#undef idlok
+int idlok(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef idcok
+void idcok(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { /* void */ }
+
+#undef halfdelay_sp
+int halfdelay_sp(
+ SCREEN *sp,
+ int t)
+ { return(*(int *)0); }
+
+#undef halfdelay
+int halfdelay(
+ int t)
+ { return(*(int *)0); }
+
+#undef nodelay
+int nodelay(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef notimeout
+int notimeout(
+ WINDOW *win,
+ NCURSES_BOOL f)
+ { return(*(int *)0); }
+
+#undef wtimeout
+void wtimeout(
+ WINDOW *win,
+ int delay)
+ { /* void */ }
+
+#undef keypad
+int keypad(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef meta
+int meta(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef curs_set_sp
+int curs_set_sp(
+ SCREEN *sp,
+ int vis)
+ { return(*(int *)0); }
+
+#undef curs_set
+int curs_set(
+ int vis)
+ { return(*(int *)0); }
+
+#undef typeahead_sp
+int typeahead_sp(
+ SCREEN *sp,
+ int fd)
+ { return(*(int *)0); }
+
+#undef typeahead
+int typeahead(
+ int fd)
+ { return(*(int *)0); }
+
+#undef has_key_sp
+int has_key_sp(
+ SCREEN *sp,
+ int keycode)
+ { return(*(int *)0); }
+
+#undef has_key
+int has_key(
+ int keycode)
+ { return(*(int *)0); }
+
+#undef _nc_putp_flush_sp
+int _nc_putp_flush_sp(
+ SCREEN *sp,
+ const char *name,
+ const char *value)
+ { return(*(int *)0); }
+
+#undef _nc_keypad
+int _nc_keypad(
+ SCREEN *sp,
+ int flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_raw.c */
+
+#undef raw_sp
+int raw_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef raw
+int raw(void)
+ { return(*(int *)0); }
+
+#undef cbreak_sp
+int cbreak_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef cbreak
+int cbreak(void)
+ { return(*(int *)0); }
+
+#undef qiflush_sp
+void qiflush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef qiflush
+void qiflush(void)
+ { /* void */ }
+
+#undef noraw_sp
+int noraw_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef noraw
+int noraw(void)
+ { return(*(int *)0); }
+
+#undef nocbreak_sp
+int nocbreak_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef nocbreak
+int nocbreak(void)
+ { return(*(int *)0); }
+
+#undef noqiflush_sp
+void noqiflush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef noqiflush
+void noqiflush(void)
+ { /* void */ }
+
+#undef intrflush_sp
+int intrflush_sp(
+ SCREEN *sp,
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef intrflush
+int intrflush(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_setup.c */
+
+#include <locale.h>
+#include <sys/ioctl.h>
+#include <langinfo.h>
+
+#undef ttytype
+char ttytype[256];
+#undef LINES
+int LINES;
+#undef COLS
+int COLS;
+#undef TABSIZE
+int TABSIZE;
+
+#undef set_tabsize_sp
+int set_tabsize_sp(
+ SCREEN *sp,
+ int value)
+ { return(*(int *)0); }
+
+#undef set_tabsize
+int set_tabsize(
+ int value)
+ { return(*(int *)0); }
+
+#undef _nc_handle_sigwinch
+int _nc_handle_sigwinch(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef use_env_sp
+void use_env_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_tioctl_sp
+void use_tioctl_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_env
+void use_env(
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_tioctl
+void use_tioctl(
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef _nc_get_screensize
+void _nc_get_screensize(
+ SCREEN *sp,
+ int *linep,
+ int *colp)
+ { /* void */ }
+
+#undef _nc_update_screensize
+void _nc_update_screensize(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_setup_tinfo
+int _nc_setup_tinfo(
+ const char *const tn,
+ TERMTYPE *const tp)
+ { return(*(int *)0); }
+
+#undef _nc_tinfo_cmdch
+void _nc_tinfo_cmdch(
+ TERMINAL *termp,
+ int proto)
+ { /* void */ }
+
+#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(
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+#undef _nc_setupterm
+int _nc_setupterm(
+ char *tname,
+ int Filedes,
+ int *errret,
+ int reuse)
+ { return(*(int *)0); }
+
+#undef new_prescr
+SCREEN *new_prescr(void)
+ { return(*(SCREEN **)0); }
+
+#undef setupterm
+int setupterm(
+ char *tname,
+ int Filedes,
+ int *errret)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_termcap.c */
+
+#undef UP
+char *UP;
+#undef BC
+char *BC;
+
+#undef tgetent_sp
+int tgetent_sp(
+ SCREEN *sp,
+ char *bufp,
+ const char *name)
+ { return(*(int *)0); }
+
+#if 0
+
+#include <capdefaults.c>
+
+#endif
+
+#undef tgetent
+int tgetent(
+ char *bufp,
+ const char *name)
+ { return(*(int *)0); }
+
+#undef tgetflag_sp
+int tgetflag_sp(
+ SCREEN *sp,
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetflag
+int tgetflag(
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetnum_sp
+int tgetnum_sp(
+ SCREEN *sp,
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetnum
+int tgetnum(
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetstr_sp
+char *tgetstr_sp(
+ SCREEN *sp,
+ char *id,
+ char **area)
+ { return(*(char **)0); }
+
+#undef tgetstr
+char *tgetstr(
+ char *id,
+ char **area)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_termname.c */
+
+#undef termname_sp
+char *termname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
+#undef termname
+char *termname(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tgoto.c */
+
+#undef tgoto
+char *tgoto(
+ const char *string,
+ int x,
+ int y)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_ti.c */
+
+#undef tigetflag_sp
+int tigetflag_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetflag
+int tigetflag(
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetnum_sp
+int tigetnum_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetnum
+int tigetnum(
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetstr_sp
+char *tigetstr_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(char **)0); }
+
+#undef tigetstr
+char *tigetstr(
+ char *str)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tparm.c */
+
+#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 *_nc_popcount)
+ { return(*(int *)0); }
+
+#undef tparm
+char *tparm(
+ char *string,
+ ...)
+ { return(*(char **)0); }
+
+#undef tiparm
+char *tiparm(
+ const char *string,
+ ...)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tputs.c */
+
+#undef PC
+char PC;
+#undef ospeed
+short ospeed;
+#undef _nc_nulls_sent
+int _nc_nulls_sent;
+
+#undef _nc_set_no_padding
+void _nc_set_no_padding(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef delay_output_sp
+int delay_output_sp(
+ SCREEN *sp,
+ int ms)
+ { return(*(int *)0); }
+
+#undef delay_output
+int delay_output(
+ int ms)
+ { return(*(int *)0); }
+
+#undef _nc_flush_sp
+void _nc_flush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_flush
+void _nc_flush(void)
+ { /* void */ }
+
+#undef _nc_outch_sp
+int _nc_outch_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_outch
+int _nc_outch(
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar_sp
+int _nc_putchar_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar
+int _nc_putchar(
+ int ch)
+ { return(*(int *)0); }
+
+#undef putp_sp
+int putp_sp(
+ SCREEN *sp,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef putp
+int putp(
+ const char *string)
+ { return(*(int *)0); }
+
+#undef _nc_putp_sp
+int _nc_putp_sp(
+ SCREEN *sp,
+ const char *name,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef _nc_putp
+int _nc_putp(
+ const char *name,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef tputs_sp
+int tputs_sp(
+ SCREEN *sp,
+ const char *string,
+ int affcnt,
+ NCURSES_OUTC_sp outc)
+ { return(*(int *)0); }
+
+#undef _nc_outc_wrapper
+int _nc_outc_wrapper(
+ SCREEN *sp,
+ int c)
+ { return(*(int *)0); }
+
+#undef tputs
+int tputs(
+ const char *string,
+ int affcnt,
+ int (*outc)(
+ int p1))
+ { return(*(int *)0); }
+
+/* ./trace/lib_trace.c */
+
+#undef _nc_tracing
+unsigned _nc_tracing;
+#undef _nc_tputs_trace
+const char *_nc_tputs_trace = {0};
+#undef _nc_outchars
+long _nc_outchars;
+
+#undef trace
+void trace(
+ const unsigned int tracelevel)
+ { /* void */ }
+
+#undef _tracef
+void _tracef(
+ const char *fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_retrace_bool
+NCURSES_BOOL _nc_retrace_bool(
+ int code)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_retrace_char
+char _nc_retrace_char(
+ int code)
+ { return(*(char *)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)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_retrace_win
+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_int_attr_t
+int _nc_retrace_int_attr_t(
+ attr_t code)
+ { return(*(int *)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 {
+ unsigned int val;
+ 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); }
+
+/* ./trace/lib_tracechr.c */
+
+#undef _nc_tracechar
+char *_nc_tracechar(
+ SCREEN *sp,
+ int ch)
+ { return(*(char **)0); }
+
+#undef _tracechar
+char *_tracechar(
+ int ch)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_ttyflags.c */
+
+#undef _nc_get_tty_mode_sp
+int _nc_get_tty_mode_sp(
+ SCREEN *sp,
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_get_tty_mode
+int _nc_get_tty_mode(
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_set_tty_mode_sp
+int _nc_set_tty_mode_sp(
+ SCREEN *sp,
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_set_tty_mode
+int _nc_set_tty_mode(
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef def_shell_mode_sp
+int def_shell_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef def_shell_mode
+int def_shell_mode(void)
+ { return(*(int *)0); }
+
+#undef def_prog_mode_sp
+int def_prog_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef def_prog_mode
+int def_prog_mode(void)
+ { return(*(int *)0); }
+
+#undef reset_prog_mode_sp
+int reset_prog_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef reset_prog_mode
+int reset_prog_mode(void)
+ { return(*(int *)0); }
+
+#undef reset_shell_mode_sp
+int reset_shell_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef reset_shell_mode
+int reset_shell_mode(void)
+ { return(*(int *)0); }
+
+#undef savetty_sp
+int savetty_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef savetty
+int savetty(void)
+ { return(*(int *)0); }
+
+#undef resetty_sp
+int resetty_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef resetty
+int resetty(void)
+ { return(*(int *)0); }
+
+/* ./tty/lib_twait.c */
+
+#undef _nc_timed_wait
+int _nc_timed_wait(
+ SCREEN *sp,
+ int mode,
+ int milliseconds,
+ int *timeleft)
+ { return(*(int *)0); }
+
+/* ./tinfo/name_match.c */
+
+#undef _nc_first_name
+char *_nc_first_name(
+ const char *const sp)
+ { return(*(char **)0); }
+
+#undef _nc_name_match
+int _nc_name_match(
+ const char *const namelst,
+ const char *const name,
+ const char *const delim)
+ { return(*(int *)0); }
+
+/* ./names.c */
+
+#undef boolnames
+char *const boolnames[] = {0};
+#undef boolfnames
+char *const boolfnames[] = {0};
+#undef numnames
+char *const numnames[] = {0};
+#undef numfnames
+char *const numfnames[] = {0};
+#undef strnames
+char *const strnames[] = {0};
+#undef strfnames
+char *const strfnames[] = {0};
+
+/* ./tinfo/obsolete.c */
+
+#undef _nc_set_buffer_sp
+void _nc_set_buffer_sp(
+ SCREEN *sp,
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+#undef _nc_set_buffer
+void _nc_set_buffer(
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+/* ./tinfo/read_entry.c */
+
+#include <hashed_db.h>
+
+#undef _nc_init_termtype
+void _nc_init_termtype(
+ TERMTYPE *const tp)
+ { /* 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(
+ const char *const filename,
+ TERMTYPE *ptr)
+ { return(*(int *)0); }
+
+#undef _nc_read_entry
+int _nc_read_entry(
+ 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
+void _nc_read_termcap(void)
+ { /* void */ }
+
+/* ./tinfo/strings.c */
+
+#undef _nc_str_init
+string_desc *_nc_str_init(
+ string_desc *dst,
+ char *src,
+ size_t len)
+ { return(*(string_desc **)0); }
+
+#undef _nc_str_null
+string_desc *_nc_str_null(
+ string_desc *dst,
+ size_t len)
+ { return(*(string_desc **)0); }
+
+#undef _nc_str_copy
+string_desc *_nc_str_copy(
+ string_desc *dst,
+ string_desc *src)
+ { return(*(string_desc **)0); }
+
+#undef _nc_safe_strcat
+NCURSES_BOOL _nc_safe_strcat(
+ string_desc *dst,
+ const char *src)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_safe_strcpy
+NCURSES_BOOL _nc_safe_strcpy(
+ string_desc *dst,
+ const char *src)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./trace/trace_buf.c */
+
+#undef _nc_trace_buf
+char *_nc_trace_buf(
+ int bufnum,
+ 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
+void _nc_trace_tries(
+ TRIES *tree)
+ { /* void */ }
+
+/* ./base/tries.c */
+
+#undef _nc_expand_try
+char *_nc_expand_try(
+ TRIES *tree,
+ unsigned code,
+ int *count,
+ size_t len)
+ { return(*(char **)0); }
+
+#undef _nc_remove_key
+int _nc_remove_key(
+ TRIES **tree,
+ unsigned code)
+ { return(*(int *)0); }
+
+#undef _nc_remove_string
+int _nc_remove_string(
+ 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_sp
+char *unctrl_sp(
+ SCREEN *sp,
+ chtype ch)
+ { return(*(char **)0); }
+
+#undef unctrl
+char *unctrl(
+ chtype ch)
+ { return(*(char **)0); }
+
+/* ./trace/visbuf.c */
+
+#undef _nc_visbuf2
+const char *_nc_visbuf2(
+ int bufnum,
+ const char *buf)
+ { return(*(const char **)0); }
+
+#undef _nc_visbuf
+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); }
+
+/* ./base/define_key.c */
+
+#undef define_key_sp
+int define_key_sp(
+ SCREEN *sp,
+ const char *str,
+ int keycode)
+ { return(*(int *)0); }
+
+#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_sp
+int key_defined_sp(
+ SCREEN *sp,
+ const char *str)
+ { return(*(int *)0); }
+
+#undef key_defined
+int key_defined(
+ const char *str)
+ { return(*(int *)0); }
+
+/* ./base/keybound.c */
+
+#undef keybound_sp
+char *keybound_sp(
+ SCREEN *sp,
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+#undef keybound
+char *keybound(
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+/* ./base/keyok.c */
+
+#undef keyok_sp
+int keyok_sp(
+ SCREEN *sp,
+ int c,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#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-ltinfot b/contrib/ncurses/ncurses/llib-ltinfot
new file mode 100644
index 000000000000..4f66f6a057d2
--- /dev/null
+++ b/contrib/ncurses/ncurses/llib-ltinfot
@@ -0,0 +1,1635 @@
+/****************************************************************************
+ * Copyright (c) 2013 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * 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 2013 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./tinfo/access.c */
+
+#include <curses.priv.h>
+#include <ctype.h>
+#include <tic.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)
+ { return(*(char **)0); }
+
+#undef _nc_access
+int _nc_access(
+ const char *path,
+ 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); }
+
+/* ./tinfo/add_tries.c */
+
+#undef _nc_add_to_try
+int _nc_add_to_try(
+ TRIES **tree,
+ const char *str,
+ unsigned code)
+ { return(*(int *)0); }
+
+/* ./tinfo/alloc_ttype.c */
+
+#undef _nc_align_termtype
+void _nc_align_termtype(
+ TERMTYPE *to,
+ TERMTYPE *from)
+ { /* void */ }
+
+#undef _nc_copy_termtype
+void _nc_copy_termtype(
+ TERMTYPE *dst,
+ const TERMTYPE *src)
+ { /* void */ }
+
+/* ./codes.c */
+
+#undef _nc_boolcodes
+char *const *_nc_boolcodes(void)
+ { return(*(char **)0); }
+
+#undef _nc_numcodes
+char *const *_nc_numcodes(void)
+ { return(*(char **)0); }
+
+#undef _nc_strcodes
+char *const *_nc_strcodes(void)
+ { return(*(char **)0); }
+
+/* ./comp_captab.c */
+
+#include <hashsize.h>
+
+#undef _nc_get_table
+const struct name_table_entry *_nc_get_table(
+ NCURSES_BOOL termcap)
+ { return(*(const struct name_table_entry **)0); }
+
+#undef _nc_get_hash_table
+const HashValue *_nc_get_hash_table(
+ NCURSES_BOOL termcap)
+ { return(*(const HashValue **)0); }
+
+#undef _nc_get_alias_table
+const struct alias *_nc_get_alias_table(
+ NCURSES_BOOL termcap)
+ { return(*(const struct alias **)0); }
+
+#undef _nc_get_hash_info
+const HashData *_nc_get_hash_info(
+ NCURSES_BOOL termcap)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/comp_error.c */
+
+#undef _nc_suppress_warnings
+NCURSES_BOOL _nc_suppress_warnings;
+#undef _nc_curr_line
+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)
+ { /* void */ }
+
+#undef _nc_set_type
+void _nc_set_type(
+ const char *const name)
+ { /* void */ }
+
+#undef _nc_get_type
+void _nc_get_type(
+ char *name)
+ { /* void */ }
+
+#undef _nc_warning
+void _nc_warning(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_err_abort
+void _nc_err_abort(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_syserr_abort
+void _nc_syserr_abort(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+/* ./tinfo/comp_hash.c */
+
+#undef _nc_find_entry
+struct name_table_entry const *_nc_find_entry(
+ const char *string,
+ const HashValue *hash_table)
+ { return(*(struct name_table_entry const **)0); }
+
+#undef _nc_find_type_entry
+struct name_table_entry const *_nc_find_type_entry(
+ const char *string,
+ int type,
+ NCURSES_BOOL termcap)
+ { return(*(struct name_table_entry const **)0); }
+
+/* ./tinfo/db_iterator.c */
+
+#include <time.h>
+
+#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 */
+
+#undef _nc_doalloc
+void *_nc_doalloc(
+ void *oldp,
+ size_t amount)
+ { return(*(void **)0); }
+
+/* ./tinfo/entries.c */
+
+#undef _nc_head
+ENTRY *_nc_head;
+#undef _nc_tail
+ENTRY *_nc_tail;
+
+#undef _nc_free_entry
+void _nc_free_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { /* void */ }
+
+#undef _nc_free_entries
+void _nc_free_entries(
+ ENTRY *headp)
+ { /* void */ }
+
+#undef _nc_delink_entry
+ENTRY *_nc_delink_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_leaks_tinfo
+void _nc_leaks_tinfo(void)
+ { /* void */ }
+
+/* ./fallback.c */
+
+#undef _nc_fallback
+const TERMTYPE *_nc_fallback(
+ const char *name)
+ { return(*(const TERMTYPE **)0); }
+
+/* ./tinfo/free_ttype.c */
+
+#undef _nc_free_termtype
+void _nc_free_termtype(
+ TERMTYPE *ptr)
+ { /* void */ }
+
+#undef _nc_user_definable
+NCURSES_BOOL _nc_user_definable;
+
+#undef use_extended_names
+int use_extended_names(
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/getenv_num.c */
+
+#undef _nc_getenv_num
+int _nc_getenv_num(
+ const char *name)
+ { return(*(int *)0); }
+
+#undef _nc_setenv_num
+void _nc_setenv_num(
+ const char *name,
+ int value)
+ { /* void */ }
+
+/* ./tinfo/home_terminfo.c */
+
+#undef _nc_home_terminfo
+char *_nc_home_terminfo(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/init_keytry.c */
+
+#if 0
+
+#include <init_keytry.h>
+
+#undef _nc_tinfo_fkeys
+const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
+
+#endif
+
+#undef _nc_init_keytry
+void _nc_init_keytry(
+ SCREEN *sp)
+ { /* void */ }
+
+/* ./tinfo/lib_acs.c */
+
+#undef _nc_acs_map
+chtype *_nc_acs_map(void)
+ { return(*(chtype **)0); }
+
+#undef _nc_init_acs_sp
+void _nc_init_acs_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_init_acs
+void _nc_init_acs(void)
+ { /* void */ }
+
+/* ./tinfo/lib_baudrate.c */
+
+#include <termcap.h>
+
+struct speed {
+ int s;
+ int sp;
+};
+
+#undef _nc_baudrate
+int _nc_baudrate(
+ int OSpeed)
+ { return(*(int *)0); }
+
+#undef _nc_ospeed
+int _nc_ospeed(
+ int BaudRate)
+ { return(*(int *)0); }
+
+#undef baudrate_sp
+int baudrate_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef baudrate
+int baudrate(void)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_cur_term.c */
+
+#undef _nc_get_cur_term_sp
+TERMINAL *_nc_get_cur_term_sp(
+ SCREEN *sp)
+ { return(*(TERMINAL **)0); }
+
+#undef _nc_get_cur_term
+TERMINAL *_nc_get_cur_term(void)
+ { return(*(TERMINAL **)0); }
+
+#undef _nc_cur_term
+TERMINAL *_nc_cur_term(void)
+ { return(*(TERMINAL **)0); }
+
+#undef set_curterm_sp
+TERMINAL *set_curterm_sp(
+ SCREEN *sp,
+ TERMINAL *termp)
+ { return(*(TERMINAL **)0); }
+
+#undef set_curterm
+TERMINAL *set_curterm(
+ TERMINAL *termp)
+ { return(*(TERMINAL **)0); }
+
+#undef del_curterm_sp
+int del_curterm_sp(
+ SCREEN *sp,
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+#undef del_curterm
+int del_curterm(
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_data.c */
+
+#undef _nc_stdscr
+WINDOW *_nc_stdscr(void)
+ { return(*(WINDOW **)0); }
+
+#undef _nc_curscr
+WINDOW *_nc_curscr(void)
+ { return(*(WINDOW **)0); }
+
+#undef _nc_newscr
+WINDOW *_nc_newscr(void)
+ { return(*(WINDOW **)0); }
+
+#undef _nc_screen_chain
+SCREEN *_nc_screen_chain;
+#undef SP
+SCREEN *SP;
+#undef _nc_globals
+NCURSES_GLOBALS _nc_globals;
+#undef _nc_prescreen
+NCURSES_PRESCREEN _nc_prescreen;
+
+#undef _nc_screen_of
+SCREEN *_nc_screen_of(
+ WINDOW *win)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_init_pthreads
+void _nc_init_pthreads(void)
+ { /* void */ }
+
+#undef _nc_mutex_init
+void _nc_mutex_init(
+ pthread_mutex_t *obj)
+ { /* void */ }
+
+#undef _nc_mutex_lock
+int _nc_mutex_lock(
+ pthread_mutex_t *obj)
+ { return(*(int *)0); }
+
+#undef _nc_mutex_trylock
+int _nc_mutex_trylock(
+ pthread_mutex_t *obj)
+ { return(*(int *)0); }
+
+#undef _nc_mutex_unlock
+int _nc_mutex_unlock(
+ pthread_mutex_t *obj)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_has_cap.c */
+
+#undef has_ic_sp
+NCURSES_BOOL has_ic_sp(
+ SCREEN *sp)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_ic
+NCURSES_BOOL has_ic(void)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_il_sp
+NCURSES_BOOL has_il_sp(
+ SCREEN *sp)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_il
+NCURSES_BOOL has_il(void)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./tinfo/lib_kernel.c */
+
+#undef erasechar_sp
+char erasechar_sp(
+ SCREEN *sp)
+ { return(*(char *)0); }
+
+#undef erasechar
+char erasechar(void)
+ { return(*(char *)0); }
+
+#undef killchar_sp
+char killchar_sp(
+ SCREEN *sp)
+ { return(*(char *)0); }
+
+#undef killchar
+char killchar(void)
+ { return(*(char *)0); }
+
+#undef flushinp_sp
+int flushinp_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef flushinp
+int flushinp(void)
+ { return(*(int *)0); }
+
+/* ./lib_keyname.c */
+
+struct kn { short offset; int code; };
+
+#undef keyname_sp
+char *keyname_sp(
+ SCREEN *sp,
+ int c)
+ { return(*(char **)0); }
+
+#undef keyname
+char *keyname(
+ int c)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_longname.c */
+
+#undef longname_sp
+char *longname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
+#undef longname
+char *longname(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_napms.c */
+
+#undef napms_sp
+int napms_sp(
+ SCREEN *sp,
+ int ms)
+ { return(*(int *)0); }
+
+#undef napms
+int napms(
+ int ms)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_options.c */
+
+#undef idlok
+int idlok(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef idcok
+void idcok(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { /* void */ }
+
+#undef halfdelay_sp
+int halfdelay_sp(
+ SCREEN *sp,
+ int t)
+ { return(*(int *)0); }
+
+#undef halfdelay
+int halfdelay(
+ int t)
+ { return(*(int *)0); }
+
+#undef nodelay
+int nodelay(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef notimeout
+int notimeout(
+ WINDOW *win,
+ NCURSES_BOOL f)
+ { return(*(int *)0); }
+
+#undef wtimeout
+void wtimeout(
+ WINDOW *win,
+ int delay)
+ { /* void */ }
+
+#undef keypad
+int keypad(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef meta
+int meta(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef curs_set_sp
+int curs_set_sp(
+ SCREEN *sp,
+ int vis)
+ { return(*(int *)0); }
+
+#undef curs_set
+int curs_set(
+ int vis)
+ { return(*(int *)0); }
+
+#undef typeahead_sp
+int typeahead_sp(
+ SCREEN *sp,
+ int fd)
+ { return(*(int *)0); }
+
+#undef typeahead
+int typeahead(
+ int fd)
+ { return(*(int *)0); }
+
+#undef has_key_sp
+int has_key_sp(
+ SCREEN *sp,
+ int keycode)
+ { return(*(int *)0); }
+
+#undef has_key
+int has_key(
+ int keycode)
+ { return(*(int *)0); }
+
+#undef _nc_putp_flush_sp
+int _nc_putp_flush_sp(
+ SCREEN *sp,
+ const char *name,
+ const char *value)
+ { return(*(int *)0); }
+
+#undef _nc_keypad
+int _nc_keypad(
+ SCREEN *sp,
+ int flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_raw.c */
+
+#undef raw_sp
+int raw_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef raw
+int raw(void)
+ { return(*(int *)0); }
+
+#undef cbreak_sp
+int cbreak_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef cbreak
+int cbreak(void)
+ { return(*(int *)0); }
+
+#undef qiflush_sp
+void qiflush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef qiflush
+void qiflush(void)
+ { /* void */ }
+
+#undef noraw_sp
+int noraw_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef noraw
+int noraw(void)
+ { return(*(int *)0); }
+
+#undef nocbreak_sp
+int nocbreak_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef nocbreak
+int nocbreak(void)
+ { return(*(int *)0); }
+
+#undef noqiflush_sp
+void noqiflush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef noqiflush
+void noqiflush(void)
+ { /* void */ }
+
+#undef intrflush_sp
+int intrflush_sp(
+ SCREEN *sp,
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef intrflush
+int intrflush(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_setup.c */
+
+#include <locale.h>
+#include <sys/ioctl.h>
+#include <langinfo.h>
+
+#undef _nc_ttytype
+char *_nc_ttytype(void)
+ { return(*(char **)0); }
+
+#undef _nc_ptr_Lines
+int *_nc_ptr_Lines(
+ SCREEN *sp)
+ { return(*(int **)0); }
+
+#undef _nc_LINES
+int _nc_LINES(void)
+ { return(*(int *)0); }
+
+#undef _nc_ptr_Cols
+int *_nc_ptr_Cols(
+ SCREEN *sp)
+ { return(*(int **)0); }
+
+#undef _nc_COLS
+int _nc_COLS(void)
+ { return(*(int *)0); }
+
+#undef _nc_ptr_Tabsize
+int *_nc_ptr_Tabsize(
+ SCREEN *sp)
+ { return(*(int **)0); }
+
+#undef _nc_TABSIZE
+int _nc_TABSIZE(void)
+ { return(*(int *)0); }
+
+#undef set_tabsize_sp
+int set_tabsize_sp(
+ SCREEN *sp,
+ int value)
+ { return(*(int *)0); }
+
+#undef set_tabsize
+int set_tabsize(
+ int value)
+ { return(*(int *)0); }
+
+#undef _nc_handle_sigwinch
+int _nc_handle_sigwinch(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef use_env_sp
+void use_env_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_tioctl_sp
+void use_tioctl_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_env
+void use_env(
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_tioctl
+void use_tioctl(
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef _nc_get_screensize
+void _nc_get_screensize(
+ SCREEN *sp,
+ int *linep,
+ int *colp)
+ { /* void */ }
+
+#undef _nc_update_screensize
+void _nc_update_screensize(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_setup_tinfo
+int _nc_setup_tinfo(
+ const char *const tn,
+ TERMTYPE *const tp)
+ { return(*(int *)0); }
+
+#undef _nc_tinfo_cmdch
+void _nc_tinfo_cmdch(
+ TERMINAL *termp,
+ int proto)
+ { /* void */ }
+
+#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(
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+#undef _nc_setupterm
+int _nc_setupterm(
+ char *tname,
+ int Filedes,
+ int *errret,
+ int reuse)
+ { return(*(int *)0); }
+
+#undef new_prescr
+SCREEN *new_prescr(void)
+ { return(*(SCREEN **)0); }
+
+#undef setupterm
+int setupterm(
+ char *tname,
+ int Filedes,
+ int *errret)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_termcap.c */
+
+#undef UP
+char *UP;
+#undef BC
+char *BC;
+
+#undef tgetent_sp
+int tgetent_sp(
+ SCREEN *sp,
+ char *bufp,
+ const char *name)
+ { return(*(int *)0); }
+
+#if 0
+
+#include <capdefaults.c>
+
+#endif
+
+#undef tgetent
+int tgetent(
+ char *bufp,
+ const char *name)
+ { return(*(int *)0); }
+
+#undef tgetflag_sp
+int tgetflag_sp(
+ SCREEN *sp,
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetflag
+int tgetflag(
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetnum_sp
+int tgetnum_sp(
+ SCREEN *sp,
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetnum
+int tgetnum(
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetstr_sp
+char *tgetstr_sp(
+ SCREEN *sp,
+ char *id,
+ char **area)
+ { return(*(char **)0); }
+
+#undef tgetstr
+char *tgetstr(
+ char *id,
+ char **area)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_termname.c */
+
+#undef termname_sp
+char *termname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
+#undef termname
+char *termname(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tgoto.c */
+
+#undef tgoto
+char *tgoto(
+ const char *string,
+ int x,
+ int y)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_ti.c */
+
+#undef tigetflag_sp
+int tigetflag_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetflag
+int tigetflag(
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetnum_sp
+int tigetnum_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetnum
+int tigetnum(
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetstr_sp
+char *tigetstr_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(char **)0); }
+
+#undef tigetstr
+char *tigetstr(
+ char *str)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tparm.c */
+
+#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 *_nc_popcount)
+ { return(*(int *)0); }
+
+#undef tparm
+char *tparm(
+ char *string,
+ ...)
+ { return(*(char **)0); }
+
+#undef tiparm
+char *tiparm(
+ const char *string,
+ ...)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tputs.c */
+
+#undef PC
+char PC;
+#undef ospeed
+short ospeed;
+#undef _nc_nulls_sent
+int _nc_nulls_sent;
+
+#undef _nc_set_no_padding
+void _nc_set_no_padding(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef delay_output_sp
+int delay_output_sp(
+ SCREEN *sp,
+ int ms)
+ { return(*(int *)0); }
+
+#undef delay_output
+int delay_output(
+ int ms)
+ { return(*(int *)0); }
+
+#undef _nc_flush_sp
+void _nc_flush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_flush
+void _nc_flush(void)
+ { /* void */ }
+
+#undef _nc_outch_sp
+int _nc_outch_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_outch
+int _nc_outch(
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar_sp
+int _nc_putchar_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar
+int _nc_putchar(
+ int ch)
+ { return(*(int *)0); }
+
+#undef putp_sp
+int putp_sp(
+ SCREEN *sp,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef putp
+int putp(
+ const char *string)
+ { return(*(int *)0); }
+
+#undef _nc_putp_sp
+int _nc_putp_sp(
+ SCREEN *sp,
+ const char *name,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef _nc_putp
+int _nc_putp(
+ const char *name,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef tputs_sp
+int tputs_sp(
+ SCREEN *sp,
+ const char *string,
+ int affcnt,
+ NCURSES_OUTC_sp outc)
+ { return(*(int *)0); }
+
+#undef _nc_outc_wrapper
+int _nc_outc_wrapper(
+ SCREEN *sp,
+ int c)
+ { return(*(int *)0); }
+
+#undef tputs
+int tputs(
+ const char *string,
+ int affcnt,
+ int (*outc)(
+ int p1))
+ { return(*(int *)0); }
+
+/* ./trace/lib_trace.c */
+
+#undef _nc_tracing
+unsigned _nc_tracing;
+
+#undef _nc__nc_tputs_trace
+const char *_nc__nc_tputs_trace(void)
+ { return(*(const char **)0); }
+
+#undef _nc__nc_outchars
+long _nc__nc_outchars(void)
+ { return(*(long *)0); }
+
+#undef _nc_set_tputs_trace
+void _nc_set_tputs_trace(
+ const char *s)
+ { /* void */ }
+
+#undef _nc_count_outchars
+void _nc_count_outchars(
+ long increment)
+ { /* void */ }
+
+#undef trace
+void trace(
+ const unsigned int tracelevel)
+ { /* void */ }
+
+#undef _tracef
+void _tracef(
+ const char *fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_retrace_bool
+NCURSES_BOOL _nc_retrace_bool(
+ int code)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_retrace_char
+char _nc_retrace_char(
+ int code)
+ { return(*(char *)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)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_retrace_win
+WINDOW *_nc_retrace_win(
+ WINDOW *code)
+ { return(*(WINDOW **)0); }
+
+#undef _nc_use_tracef
+int _nc_use_tracef(
+ unsigned mask)
+ { return(*(int *)0); }
+
+#undef _nc_locked_tracef
+void _nc_locked_tracef(
+ const char *fmt,
+ ...)
+ { /* void */ }
+
+/* ./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_int_attr_t
+int _nc_retrace_int_attr_t(
+ attr_t code)
+ { return(*(int *)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 {
+ unsigned int val;
+ 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); }
+
+/* ./trace/lib_tracechr.c */
+
+#undef _nc_tracechar
+char *_nc_tracechar(
+ SCREEN *sp,
+ int ch)
+ { return(*(char **)0); }
+
+#undef _tracechar
+char *_tracechar(
+ int ch)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_ttyflags.c */
+
+#undef _nc_get_tty_mode_sp
+int _nc_get_tty_mode_sp(
+ SCREEN *sp,
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_get_tty_mode
+int _nc_get_tty_mode(
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_set_tty_mode_sp
+int _nc_set_tty_mode_sp(
+ SCREEN *sp,
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_set_tty_mode
+int _nc_set_tty_mode(
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef def_shell_mode_sp
+int def_shell_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef def_shell_mode
+int def_shell_mode(void)
+ { return(*(int *)0); }
+
+#undef def_prog_mode_sp
+int def_prog_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef def_prog_mode
+int def_prog_mode(void)
+ { return(*(int *)0); }
+
+#undef reset_prog_mode_sp
+int reset_prog_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef reset_prog_mode
+int reset_prog_mode(void)
+ { return(*(int *)0); }
+
+#undef reset_shell_mode_sp
+int reset_shell_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef reset_shell_mode
+int reset_shell_mode(void)
+ { return(*(int *)0); }
+
+#undef savetty_sp
+int savetty_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef savetty
+int savetty(void)
+ { return(*(int *)0); }
+
+#undef resetty_sp
+int resetty_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef resetty
+int resetty(void)
+ { return(*(int *)0); }
+
+/* ./tty/lib_twait.c */
+
+#include <sys/time.h>
+
+#undef _nc_timed_wait
+int _nc_timed_wait(
+ SCREEN *sp,
+ int mode,
+ int milliseconds,
+ int *timeleft)
+ { return(*(int *)0); }
+
+/* ./tinfo/name_match.c */
+
+#undef _nc_first_name
+char *_nc_first_name(
+ const char *const sp)
+ { return(*(char **)0); }
+
+#undef _nc_name_match
+int _nc_name_match(
+ const char *const namelst,
+ const char *const name,
+ const char *const delim)
+ { return(*(int *)0); }
+
+/* ./names.c */
+
+#undef _nc_boolnames
+char *const *_nc_boolnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_boolfnames
+char *const *_nc_boolfnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_numnames
+char *const *_nc_numnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_numfnames
+char *const *_nc_numfnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_strnames
+char *const *_nc_strnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_strfnames
+char *const *_nc_strfnames(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/obsolete.c */
+
+#undef _nc_set_buffer_sp
+void _nc_set_buffer_sp(
+ SCREEN *sp,
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+#undef _nc_set_buffer
+void _nc_set_buffer(
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+/* ./tinfo/read_entry.c */
+
+#include <hashed_db.h>
+
+#undef _nc_init_termtype
+void _nc_init_termtype(
+ TERMTYPE *const tp)
+ { /* 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(
+ const char *const filename,
+ TERMTYPE *ptr)
+ { return(*(int *)0); }
+
+#undef _nc_read_entry
+int _nc_read_entry(
+ 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
+void _nc_read_termcap(void)
+ { /* void */ }
+
+/* ./tinfo/strings.c */
+
+#undef _nc_str_init
+string_desc *_nc_str_init(
+ string_desc *dst,
+ char *src,
+ size_t len)
+ { return(*(string_desc **)0); }
+
+#undef _nc_str_null
+string_desc *_nc_str_null(
+ string_desc *dst,
+ size_t len)
+ { return(*(string_desc **)0); }
+
+#undef _nc_str_copy
+string_desc *_nc_str_copy(
+ string_desc *dst,
+ string_desc *src)
+ { return(*(string_desc **)0); }
+
+#undef _nc_safe_strcat
+NCURSES_BOOL _nc_safe_strcat(
+ string_desc *dst,
+ const char *src)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_safe_strcpy
+NCURSES_BOOL _nc_safe_strcpy(
+ string_desc *dst,
+ const char *src)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./trace/trace_buf.c */
+
+#undef _nc_trace_buf
+char *_nc_trace_buf(
+ int bufnum,
+ 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
+void _nc_trace_tries(
+ TRIES *tree)
+ { /* void */ }
+
+/* ./base/tries.c */
+
+#undef _nc_expand_try
+char *_nc_expand_try(
+ TRIES *tree,
+ unsigned code,
+ int *count,
+ size_t len)
+ { return(*(char **)0); }
+
+#undef _nc_remove_key
+int _nc_remove_key(
+ TRIES **tree,
+ unsigned code)
+ { return(*(int *)0); }
+
+#undef _nc_remove_string
+int _nc_remove_string(
+ 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_sp
+char *unctrl_sp(
+ SCREEN *sp,
+ chtype ch)
+ { return(*(char **)0); }
+
+#undef unctrl
+char *unctrl(
+ chtype ch)
+ { return(*(char **)0); }
+
+/* ./trace/visbuf.c */
+
+#undef _nc_visbuf2
+const char *_nc_visbuf2(
+ int bufnum,
+ const char *buf)
+ { return(*(const char **)0); }
+
+#undef _nc_visbuf
+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); }
+
+/* ./base/define_key.c */
+
+#undef define_key_sp
+int define_key_sp(
+ SCREEN *sp,
+ const char *str,
+ int keycode)
+ { return(*(int *)0); }
+
+#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_sp
+int key_defined_sp(
+ SCREEN *sp,
+ const char *str)
+ { return(*(int *)0); }
+
+#undef key_defined
+int key_defined(
+ const char *str)
+ { return(*(int *)0); }
+
+/* ./base/keybound.c */
+
+#undef keybound_sp
+char *keybound_sp(
+ SCREEN *sp,
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+#undef keybound
+char *keybound(
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+/* ./base/keyok.c */
+
+#undef keyok_sp
+int keyok_sp(
+ SCREEN *sp,
+ int c,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#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-ltinfotw b/contrib/ncurses/ncurses/llib-ltinfotw
new file mode 100644
index 000000000000..ec9b63d443ff
--- /dev/null
+++ b/contrib/ncurses/ncurses/llib-ltinfotw
@@ -0,0 +1,1668 @@
+/****************************************************************************
+ * Copyright (c) 2012,2013 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * 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 2012 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./tinfo/access.c */
+
+#include <curses.priv.h>
+#include <ctype.h>
+#include <tic.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)
+ { return(*(char **)0); }
+
+#undef _nc_access
+int _nc_access(
+ const char *path,
+ 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); }
+
+/* ./tinfo/add_tries.c */
+
+#undef _nc_add_to_try
+int _nc_add_to_try(
+ TRIES **tree,
+ const char *str,
+ unsigned code)
+ { return(*(int *)0); }
+
+/* ./tinfo/alloc_ttype.c */
+
+#undef _nc_align_termtype
+void _nc_align_termtype(
+ TERMTYPE *to,
+ TERMTYPE *from)
+ { /* void */ }
+
+#undef _nc_copy_termtype
+void _nc_copy_termtype(
+ TERMTYPE *dst,
+ const TERMTYPE *src)
+ { /* void */ }
+
+/* ./codes.c */
+
+#undef _nc_boolcodes
+char *const *_nc_boolcodes(void)
+ { return(*(char **)0); }
+
+#undef _nc_numcodes
+char *const *_nc_numcodes(void)
+ { return(*(char **)0); }
+
+#undef _nc_strcodes
+char *const *_nc_strcodes(void)
+ { return(*(char **)0); }
+
+/* ./comp_captab.c */
+
+#include <hashsize.h>
+
+#undef _nc_get_table
+const struct name_table_entry *_nc_get_table(
+ NCURSES_BOOL termcap)
+ { return(*(const struct name_table_entry **)0); }
+
+#undef _nc_get_hash_table
+const HashValue *_nc_get_hash_table(
+ NCURSES_BOOL termcap)
+ { return(*(const HashValue **)0); }
+
+#undef _nc_get_alias_table
+const struct alias *_nc_get_alias_table(
+ NCURSES_BOOL termcap)
+ { return(*(const struct alias **)0); }
+
+#undef _nc_get_hash_info
+const HashData *_nc_get_hash_info(
+ NCURSES_BOOL termcap)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/comp_error.c */
+
+#undef _nc_suppress_warnings
+NCURSES_BOOL _nc_suppress_warnings;
+#undef _nc_curr_line
+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)
+ { /* void */ }
+
+#undef _nc_set_type
+void _nc_set_type(
+ const char *const name)
+ { /* void */ }
+
+#undef _nc_get_type
+void _nc_get_type(
+ char *name)
+ { /* void */ }
+
+#undef _nc_warning
+void _nc_warning(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_err_abort
+void _nc_err_abort(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_syserr_abort
+void _nc_syserr_abort(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+/* ./tinfo/comp_hash.c */
+
+#undef _nc_find_entry
+struct name_table_entry const *_nc_find_entry(
+ const char *string,
+ const HashValue *hash_table)
+ { return(*(struct name_table_entry const **)0); }
+
+#undef _nc_find_type_entry
+struct name_table_entry const *_nc_find_type_entry(
+ const char *string,
+ int type,
+ NCURSES_BOOL termcap)
+ { return(*(struct name_table_entry const **)0); }
+
+/* ./tinfo/db_iterator.c */
+
+#include <time.h>
+
+#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 */
+
+#undef _nc_doalloc
+void *_nc_doalloc(
+ void *oldp,
+ size_t amount)
+ { return(*(void **)0); }
+
+/* ./tinfo/entries.c */
+
+#undef _nc_head
+ENTRY *_nc_head;
+#undef _nc_tail
+ENTRY *_nc_tail;
+
+#undef _nc_free_entry
+void _nc_free_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { /* void */ }
+
+#undef _nc_free_entries
+void _nc_free_entries(
+ ENTRY *headp)
+ { /* void */ }
+
+#undef _nc_delink_entry
+ENTRY *_nc_delink_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_leaks_tinfo
+void _nc_leaks_tinfo(void)
+ { /* void */ }
+
+/* ./fallback.c */
+
+#undef _nc_fallback
+const TERMTYPE *_nc_fallback(
+ const char *name)
+ { return(*(const TERMTYPE **)0); }
+
+/* ./tinfo/free_ttype.c */
+
+#undef _nc_free_termtype
+void _nc_free_termtype(
+ TERMTYPE *ptr)
+ { /* void */ }
+
+#undef _nc_user_definable
+NCURSES_BOOL _nc_user_definable;
+
+#undef use_extended_names
+int use_extended_names(
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/getenv_num.c */
+
+#undef _nc_getenv_num
+int _nc_getenv_num(
+ const char *name)
+ { return(*(int *)0); }
+
+#undef _nc_setenv_num
+void _nc_setenv_num(
+ const char *name,
+ int value)
+ { /* void */ }
+
+/* ./tinfo/home_terminfo.c */
+
+#undef _nc_home_terminfo
+char *_nc_home_terminfo(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/init_keytry.c */
+
+#if 0
+
+#include <init_keytry.h>
+
+#undef _nc_tinfo_fkeys
+const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
+
+#endif
+
+#undef _nc_init_keytry
+void _nc_init_keytry(
+ SCREEN *sp)
+ { /* void */ }
+
+/* ./tinfo/lib_acs.c */
+
+#undef _nc_acs_map
+chtype *_nc_acs_map(void)
+ { return(*(chtype **)0); }
+
+#undef _nc_init_acs_sp
+void _nc_init_acs_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_init_acs
+void _nc_init_acs(void)
+ { /* void */ }
+
+/* ./tinfo/lib_baudrate.c */
+
+#include <termcap.h>
+
+struct speed {
+ int s;
+ int sp;
+};
+
+#undef _nc_baudrate
+int _nc_baudrate(
+ int OSpeed)
+ { return(*(int *)0); }
+
+#undef _nc_ospeed
+int _nc_ospeed(
+ int BaudRate)
+ { return(*(int *)0); }
+
+#undef baudrate_sp
+int baudrate_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef baudrate
+int baudrate(void)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_cur_term.c */
+
+#undef _nc_get_cur_term_sp
+TERMINAL *_nc_get_cur_term_sp(
+ SCREEN *sp)
+ { return(*(TERMINAL **)0); }
+
+#undef _nc_get_cur_term
+TERMINAL *_nc_get_cur_term(void)
+ { return(*(TERMINAL **)0); }
+
+#undef _nc_cur_term
+TERMINAL *_nc_cur_term(void)
+ { return(*(TERMINAL **)0); }
+
+#undef set_curterm_sp
+TERMINAL *set_curterm_sp(
+ SCREEN *sp,
+ TERMINAL *termp)
+ { return(*(TERMINAL **)0); }
+
+#undef set_curterm
+TERMINAL *set_curterm(
+ TERMINAL *termp)
+ { return(*(TERMINAL **)0); }
+
+#undef del_curterm_sp
+int del_curterm_sp(
+ SCREEN *sp,
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+#undef del_curterm
+int del_curterm(
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_data.c */
+
+#undef _nc_stdscr
+WINDOW *_nc_stdscr(void)
+ { return(*(WINDOW **)0); }
+
+#undef _nc_curscr
+WINDOW *_nc_curscr(void)
+ { return(*(WINDOW **)0); }
+
+#undef _nc_newscr
+WINDOW *_nc_newscr(void)
+ { return(*(WINDOW **)0); }
+
+#undef _nc_screen_chain
+SCREEN *_nc_screen_chain;
+#undef SP
+SCREEN *SP;
+#undef _nc_globals
+NCURSES_GLOBALS _nc_globals;
+#undef _nc_prescreen
+NCURSES_PRESCREEN _nc_prescreen;
+
+#undef _nc_screen_of
+SCREEN *_nc_screen_of(
+ WINDOW *win)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_init_pthreads
+void _nc_init_pthreads(void)
+ { /* void */ }
+
+#undef _nc_mutex_init
+void _nc_mutex_init(
+ pthread_mutex_t *obj)
+ { /* void */ }
+
+#undef _nc_mutex_lock
+int _nc_mutex_lock(
+ pthread_mutex_t *obj)
+ { return(*(int *)0); }
+
+#undef _nc_mutex_trylock
+int _nc_mutex_trylock(
+ pthread_mutex_t *obj)
+ { return(*(int *)0); }
+
+#undef _nc_mutex_unlock
+int _nc_mutex_unlock(
+ pthread_mutex_t *obj)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_has_cap.c */
+
+#undef has_ic_sp
+NCURSES_BOOL has_ic_sp(
+ SCREEN *sp)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_ic
+NCURSES_BOOL has_ic(void)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_il_sp
+NCURSES_BOOL has_il_sp(
+ SCREEN *sp)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_il
+NCURSES_BOOL has_il(void)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./tinfo/lib_kernel.c */
+
+#undef erasechar_sp
+char erasechar_sp(
+ SCREEN *sp)
+ { return(*(char *)0); }
+
+#undef erasechar
+char erasechar(void)
+ { return(*(char *)0); }
+
+#undef killchar_sp
+char killchar_sp(
+ SCREEN *sp)
+ { return(*(char *)0); }
+
+#undef killchar
+char killchar(void)
+ { return(*(char *)0); }
+
+#undef flushinp_sp
+int flushinp_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef flushinp
+int flushinp(void)
+ { return(*(int *)0); }
+
+/* ./lib_keyname.c */
+
+struct kn { short offset; int code; };
+
+#undef keyname_sp
+char *keyname_sp(
+ SCREEN *sp,
+ int c)
+ { return(*(char **)0); }
+
+#undef keyname
+char *keyname(
+ int c)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_longname.c */
+
+#undef longname_sp
+char *longname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
+#undef longname
+char *longname(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_napms.c */
+
+#undef napms_sp
+int napms_sp(
+ SCREEN *sp,
+ int ms)
+ { return(*(int *)0); }
+
+#undef napms
+int napms(
+ int ms)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_options.c */
+
+#undef idlok
+int idlok(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef idcok
+void idcok(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { /* void */ }
+
+#undef halfdelay_sp
+int halfdelay_sp(
+ SCREEN *sp,
+ int t)
+ { return(*(int *)0); }
+
+#undef halfdelay
+int halfdelay(
+ int t)
+ { return(*(int *)0); }
+
+#undef nodelay
+int nodelay(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef notimeout
+int notimeout(
+ WINDOW *win,
+ NCURSES_BOOL f)
+ { return(*(int *)0); }
+
+#undef wtimeout
+void wtimeout(
+ WINDOW *win,
+ int delay)
+ { /* void */ }
+
+#undef keypad
+int keypad(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef meta
+int meta(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef curs_set_sp
+int curs_set_sp(
+ SCREEN *sp,
+ int vis)
+ { return(*(int *)0); }
+
+#undef curs_set
+int curs_set(
+ int vis)
+ { return(*(int *)0); }
+
+#undef typeahead_sp
+int typeahead_sp(
+ SCREEN *sp,
+ int fd)
+ { return(*(int *)0); }
+
+#undef typeahead
+int typeahead(
+ int fd)
+ { return(*(int *)0); }
+
+#undef has_key_sp
+int has_key_sp(
+ SCREEN *sp,
+ int keycode)
+ { return(*(int *)0); }
+
+#undef has_key
+int has_key(
+ int keycode)
+ { return(*(int *)0); }
+
+#undef _nc_putp_flush_sp
+int _nc_putp_flush_sp(
+ SCREEN *sp,
+ const char *name,
+ const char *value)
+ { return(*(int *)0); }
+
+#undef _nc_keypad
+int _nc_keypad(
+ SCREEN *sp,
+ int flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_raw.c */
+
+#undef raw_sp
+int raw_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef raw
+int raw(void)
+ { return(*(int *)0); }
+
+#undef cbreak_sp
+int cbreak_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef cbreak
+int cbreak(void)
+ { return(*(int *)0); }
+
+#undef qiflush_sp
+void qiflush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef qiflush
+void qiflush(void)
+ { /* void */ }
+
+#undef noraw_sp
+int noraw_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef noraw
+int noraw(void)
+ { return(*(int *)0); }
+
+#undef nocbreak_sp
+int nocbreak_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef nocbreak
+int nocbreak(void)
+ { return(*(int *)0); }
+
+#undef noqiflush_sp
+void noqiflush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef noqiflush
+void noqiflush(void)
+ { /* void */ }
+
+#undef intrflush_sp
+int intrflush_sp(
+ SCREEN *sp,
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef intrflush
+int intrflush(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_setup.c */
+
+#include <locale.h>
+#include <sys/ioctl.h>
+#include <langinfo.h>
+
+#undef _nc_ttytype
+char *_nc_ttytype(void)
+ { return(*(char **)0); }
+
+#undef _nc_ptr_Lines
+int *_nc_ptr_Lines(
+ SCREEN *sp)
+ { return(*(int **)0); }
+
+#undef _nc_LINES
+int _nc_LINES(void)
+ { return(*(int *)0); }
+
+#undef _nc_ptr_Cols
+int *_nc_ptr_Cols(
+ SCREEN *sp)
+ { return(*(int **)0); }
+
+#undef _nc_COLS
+int _nc_COLS(void)
+ { return(*(int *)0); }
+
+#undef _nc_ptr_Tabsize
+int *_nc_ptr_Tabsize(
+ SCREEN *sp)
+ { return(*(int **)0); }
+
+#undef _nc_TABSIZE
+int _nc_TABSIZE(void)
+ { return(*(int *)0); }
+
+#undef set_tabsize_sp
+int set_tabsize_sp(
+ SCREEN *sp,
+ int value)
+ { return(*(int *)0); }
+
+#undef set_tabsize
+int set_tabsize(
+ int value)
+ { return(*(int *)0); }
+
+#undef _nc_handle_sigwinch
+int _nc_handle_sigwinch(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef use_env_sp
+void use_env_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_tioctl_sp
+void use_tioctl_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_env
+void use_env(
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_tioctl
+void use_tioctl(
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef _nc_get_screensize
+void _nc_get_screensize(
+ SCREEN *sp,
+ int *linep,
+ int *colp)
+ { /* void */ }
+
+#undef _nc_update_screensize
+void _nc_update_screensize(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_setup_tinfo
+int _nc_setup_tinfo(
+ const char *const tn,
+ TERMTYPE *const tp)
+ { return(*(int *)0); }
+
+#undef _nc_tinfo_cmdch
+void _nc_tinfo_cmdch(
+ TERMINAL *termp,
+ int proto)
+ { /* void */ }
+
+#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(
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+#undef _nc_setupterm
+int _nc_setupterm(
+ char *tname,
+ int Filedes,
+ int *errret,
+ int reuse)
+ { return(*(int *)0); }
+
+#undef new_prescr
+SCREEN *new_prescr(void)
+ { return(*(SCREEN **)0); }
+
+#undef setupterm
+int setupterm(
+ char *tname,
+ int Filedes,
+ int *errret)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_termcap.c */
+
+#undef UP
+char *UP;
+#undef BC
+char *BC;
+
+#undef tgetent_sp
+int tgetent_sp(
+ SCREEN *sp,
+ char *bufp,
+ const char *name)
+ { return(*(int *)0); }
+
+#if 0
+
+#include <capdefaults.c>
+
+#endif
+
+#undef tgetent
+int tgetent(
+ char *bufp,
+ const char *name)
+ { return(*(int *)0); }
+
+#undef tgetflag_sp
+int tgetflag_sp(
+ SCREEN *sp,
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetflag
+int tgetflag(
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetnum_sp
+int tgetnum_sp(
+ SCREEN *sp,
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetnum
+int tgetnum(
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetstr_sp
+char *tgetstr_sp(
+ SCREEN *sp,
+ char *id,
+ char **area)
+ { return(*(char **)0); }
+
+#undef tgetstr
+char *tgetstr(
+ char *id,
+ char **area)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_termname.c */
+
+#undef termname_sp
+char *termname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
+#undef termname
+char *termname(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tgoto.c */
+
+#undef tgoto
+char *tgoto(
+ const char *string,
+ int x,
+ int y)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_ti.c */
+
+#undef tigetflag_sp
+int tigetflag_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetflag
+int tigetflag(
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetnum_sp
+int tigetnum_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetnum
+int tigetnum(
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetstr_sp
+char *tigetstr_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(char **)0); }
+
+#undef tigetstr
+char *tigetstr(
+ char *str)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tparm.c */
+
+#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 *_nc_popcount)
+ { return(*(int *)0); }
+
+#undef tparm
+char *tparm(
+ char *string,
+ ...)
+ { return(*(char **)0); }
+
+#undef tiparm
+char *tiparm(
+ const char *string,
+ ...)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tputs.c */
+
+#undef PC
+char PC;
+#undef ospeed
+short ospeed;
+#undef _nc_nulls_sent
+int _nc_nulls_sent;
+
+#undef _nc_set_no_padding
+void _nc_set_no_padding(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef delay_output_sp
+int delay_output_sp(
+ SCREEN *sp,
+ int ms)
+ { return(*(int *)0); }
+
+#undef delay_output
+int delay_output(
+ int ms)
+ { return(*(int *)0); }
+
+#undef _nc_flush_sp
+void _nc_flush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_flush
+void _nc_flush(void)
+ { /* void */ }
+
+#undef _nc_outch_sp
+int _nc_outch_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_outch
+int _nc_outch(
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar_sp
+int _nc_putchar_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar
+int _nc_putchar(
+ int ch)
+ { return(*(int *)0); }
+
+#undef putp_sp
+int putp_sp(
+ SCREEN *sp,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef putp
+int putp(
+ const char *string)
+ { return(*(int *)0); }
+
+#undef _nc_putp_sp
+int _nc_putp_sp(
+ SCREEN *sp,
+ const char *name,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef _nc_putp
+int _nc_putp(
+ const char *name,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef tputs_sp
+int tputs_sp(
+ SCREEN *sp,
+ const char *string,
+ int affcnt,
+ NCURSES_OUTC_sp outc)
+ { return(*(int *)0); }
+
+#undef _nc_outc_wrapper
+int _nc_outc_wrapper(
+ SCREEN *sp,
+ int c)
+ { return(*(int *)0); }
+
+#undef tputs
+int tputs(
+ const char *string,
+ int affcnt,
+ int (*outc)(
+ int p1))
+ { return(*(int *)0); }
+
+/* ./trace/lib_trace.c */
+
+#undef _nc_tracing
+unsigned _nc_tracing;
+
+#undef _nc__nc_tputs_trace
+const char *_nc__nc_tputs_trace(void)
+ { return(*(const char **)0); }
+
+#undef _nc__nc_outchars
+long _nc__nc_outchars(void)
+ { return(*(long *)0); }
+
+#undef _nc_set_tputs_trace
+void _nc_set_tputs_trace(
+ const char *s)
+ { /* void */ }
+
+#undef _nc_count_outchars
+void _nc_count_outchars(
+ long increment)
+ { /* void */ }
+
+#undef trace
+void trace(
+ const unsigned int tracelevel)
+ { /* void */ }
+
+#undef _tracef
+void _tracef(
+ const char *fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_retrace_bool
+NCURSES_BOOL _nc_retrace_bool(
+ int code)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_retrace_char
+char _nc_retrace_char(
+ int code)
+ { return(*(char *)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)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_retrace_win
+WINDOW *_nc_retrace_win(
+ WINDOW *code)
+ { return(*(WINDOW **)0); }
+
+#undef _nc_use_tracef
+int _nc_use_tracef(
+ unsigned mask)
+ { return(*(int *)0); }
+
+#undef _nc_locked_tracef
+void _nc_locked_tracef(
+ const char *fmt,
+ ...)
+ { /* void */ }
+
+/* ./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_int_attr_t
+int _nc_retrace_int_attr_t(
+ attr_t code)
+ { return(*(int *)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 {
+ unsigned int val;
+ 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); }
+
+/* ./trace/lib_tracechr.c */
+
+#undef _nc_tracechar
+char *_nc_tracechar(
+ SCREEN *sp,
+ int ch)
+ { return(*(char **)0); }
+
+#undef _tracechar
+char *_tracechar(
+ int ch)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_ttyflags.c */
+
+#undef _nc_get_tty_mode_sp
+int _nc_get_tty_mode_sp(
+ SCREEN *sp,
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_get_tty_mode
+int _nc_get_tty_mode(
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_set_tty_mode_sp
+int _nc_set_tty_mode_sp(
+ SCREEN *sp,
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_set_tty_mode
+int _nc_set_tty_mode(
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef def_shell_mode_sp
+int def_shell_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef def_shell_mode
+int def_shell_mode(void)
+ { return(*(int *)0); }
+
+#undef def_prog_mode_sp
+int def_prog_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef def_prog_mode
+int def_prog_mode(void)
+ { return(*(int *)0); }
+
+#undef reset_prog_mode_sp
+int reset_prog_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef reset_prog_mode
+int reset_prog_mode(void)
+ { return(*(int *)0); }
+
+#undef reset_shell_mode_sp
+int reset_shell_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef reset_shell_mode
+int reset_shell_mode(void)
+ { return(*(int *)0); }
+
+#undef savetty_sp
+int savetty_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef savetty
+int savetty(void)
+ { return(*(int *)0); }
+
+#undef resetty_sp
+int resetty_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef resetty
+int resetty(void)
+ { return(*(int *)0); }
+
+/* ./tty/lib_twait.c */
+
+#include <sys/time.h>
+
+#undef _nc_timed_wait
+int _nc_timed_wait(
+ SCREEN *sp,
+ int mode,
+ int milliseconds,
+ int *timeleft)
+ { return(*(int *)0); }
+
+/* ./tinfo/name_match.c */
+
+#undef _nc_first_name
+char *_nc_first_name(
+ const char *const sp)
+ { return(*(char **)0); }
+
+#undef _nc_name_match
+int _nc_name_match(
+ const char *const namelst,
+ const char *const name,
+ const char *const delim)
+ { return(*(int *)0); }
+
+/* ./names.c */
+
+#undef _nc_boolnames
+char *const *_nc_boolnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_boolfnames
+char *const *_nc_boolfnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_numnames
+char *const *_nc_numnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_numfnames
+char *const *_nc_numfnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_strnames
+char *const *_nc_strnames(void)
+ { return(*(char **)0); }
+
+#undef _nc_strfnames
+char *const *_nc_strfnames(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/obsolete.c */
+
+#undef _nc_set_buffer_sp
+void _nc_set_buffer_sp(
+ SCREEN *sp,
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+#undef _nc_set_buffer
+void _nc_set_buffer(
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+/* ./tinfo/read_entry.c */
+
+#include <hashed_db.h>
+
+#undef _nc_init_termtype
+void _nc_init_termtype(
+ TERMTYPE *const tp)
+ { /* 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(
+ const char *const filename,
+ TERMTYPE *ptr)
+ { return(*(int *)0); }
+
+#undef _nc_read_entry
+int _nc_read_entry(
+ 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
+void _nc_read_termcap(void)
+ { /* void */ }
+
+/* ./tinfo/strings.c */
+
+#undef _nc_str_init
+string_desc *_nc_str_init(
+ string_desc *dst,
+ char *src,
+ size_t len)
+ { return(*(string_desc **)0); }
+
+#undef _nc_str_null
+string_desc *_nc_str_null(
+ string_desc *dst,
+ size_t len)
+ { return(*(string_desc **)0); }
+
+#undef _nc_str_copy
+string_desc *_nc_str_copy(
+ string_desc *dst,
+ string_desc *src)
+ { return(*(string_desc **)0); }
+
+#undef _nc_safe_strcat
+NCURSES_BOOL _nc_safe_strcat(
+ string_desc *dst,
+ const char *src)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_safe_strcpy
+NCURSES_BOOL _nc_safe_strcpy(
+ string_desc *dst,
+ const char *src)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./trace/trace_buf.c */
+
+#undef _nc_trace_buf
+char *_nc_trace_buf(
+ int bufnum,
+ 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
+void _nc_trace_tries(
+ TRIES *tree)
+ { /* void */ }
+
+/* ./base/tries.c */
+
+#undef _nc_expand_try
+char *_nc_expand_try(
+ TRIES *tree,
+ unsigned code,
+ int *count,
+ size_t len)
+ { return(*(char **)0); }
+
+#undef _nc_remove_key
+int _nc_remove_key(
+ TRIES **tree,
+ unsigned code)
+ { return(*(int *)0); }
+
+#undef _nc_remove_string
+int _nc_remove_string(
+ 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_sp
+char *unctrl_sp(
+ SCREEN *sp,
+ chtype ch)
+ { return(*(char **)0); }
+
+#undef unctrl
+char *unctrl(
+ chtype ch)
+ { return(*(char **)0); }
+
+/* ./trace/visbuf.c */
+
+#undef _nc_visbuf2
+const char *_nc_visbuf2(
+ int bufnum,
+ const char *buf)
+ { return(*(const char **)0); }
+
+#undef _nc_visbuf
+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,
+ const wchar_t *buf)
+ { return(*(const char **)0); }
+
+#undef _nc_viswbuf
+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,
+ const cchar_t *buf,
+ int len)
+ { return(*(const char **)0); }
+
+#undef _nc_viscbuf
+const char *_nc_viscbuf(
+ const cchar_t *buf,
+ int len)
+ { return(*(const char **)0); }
+
+/* ./base/define_key.c */
+
+#undef define_key_sp
+int define_key_sp(
+ SCREEN *sp,
+ const char *str,
+ int keycode)
+ { return(*(int *)0); }
+
+#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_sp
+int key_defined_sp(
+ SCREEN *sp,
+ const char *str)
+ { return(*(int *)0); }
+
+#undef key_defined
+int key_defined(
+ const char *str)
+ { return(*(int *)0); }
+
+/* ./base/keybound.c */
+
+#undef keybound_sp
+char *keybound_sp(
+ SCREEN *sp,
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+#undef keybound
+char *keybound(
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+/* ./base/keyok.c */
+
+#undef keyok_sp
+int keyok_sp(
+ SCREEN *sp,
+ int c,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#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-ltinfow b/contrib/ncurses/ncurses/llib-ltinfow
new file mode 100644
index 000000000000..f219698304bc
--- /dev/null
+++ b/contrib/ncurses/ncurses/llib-ltinfow
@@ -0,0 +1,1559 @@
+/****************************************************************************
+ * Copyright (c) 2012,2013 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * 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 2012 *
+ ****************************************************************************/
+/* LINTLIBRARY */
+
+/* ./tinfo/access.c */
+
+#include <curses.priv.h>
+#include <ctype.h>
+#include <tic.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)
+ { return(*(char **)0); }
+
+#undef _nc_access
+int _nc_access(
+ const char *path,
+ 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); }
+
+/* ./tinfo/add_tries.c */
+
+#undef _nc_add_to_try
+int _nc_add_to_try(
+ TRIES **tree,
+ const char *str,
+ unsigned code)
+ { return(*(int *)0); }
+
+/* ./tinfo/alloc_ttype.c */
+
+#undef _nc_align_termtype
+void _nc_align_termtype(
+ TERMTYPE *to,
+ TERMTYPE *from)
+ { /* void */ }
+
+#undef _nc_copy_termtype
+void _nc_copy_termtype(
+ TERMTYPE *dst,
+ const TERMTYPE *src)
+ { /* void */ }
+
+/* ./codes.c */
+
+#undef boolcodes
+char *const boolcodes[] = {0};
+#undef numcodes
+char *const numcodes[] = {0};
+#undef strcodes
+char *const strcodes[] = {0};
+
+/* ./comp_captab.c */
+
+#include <hashsize.h>
+
+#undef _nc_get_table
+const struct name_table_entry *_nc_get_table(
+ NCURSES_BOOL termcap)
+ { return(*(const struct name_table_entry **)0); }
+
+#undef _nc_get_hash_table
+const HashValue *_nc_get_hash_table(
+ NCURSES_BOOL termcap)
+ { return(*(const HashValue **)0); }
+
+#undef _nc_get_alias_table
+const struct alias *_nc_get_alias_table(
+ NCURSES_BOOL termcap)
+ { return(*(const struct alias **)0); }
+
+#undef _nc_get_hash_info
+const HashData *_nc_get_hash_info(
+ NCURSES_BOOL termcap)
+ { return(*(const HashData **)0); }
+
+/* ./tinfo/comp_error.c */
+
+#undef _nc_suppress_warnings
+NCURSES_BOOL _nc_suppress_warnings;
+#undef _nc_curr_line
+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)
+ { /* void */ }
+
+#undef _nc_set_type
+void _nc_set_type(
+ const char *const name)
+ { /* void */ }
+
+#undef _nc_get_type
+void _nc_get_type(
+ char *name)
+ { /* void */ }
+
+#undef _nc_warning
+void _nc_warning(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_err_abort
+void _nc_err_abort(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_syserr_abort
+void _nc_syserr_abort(
+ const char *const fmt,
+ ...)
+ { /* void */ }
+
+/* ./tinfo/comp_hash.c */
+
+#undef _nc_find_entry
+struct name_table_entry const *_nc_find_entry(
+ const char *string,
+ const HashValue *hash_table)
+ { return(*(struct name_table_entry const **)0); }
+
+#undef _nc_find_type_entry
+struct name_table_entry const *_nc_find_type_entry(
+ const char *string,
+ int type,
+ NCURSES_BOOL termcap)
+ { return(*(struct name_table_entry const **)0); }
+
+/* ./tinfo/db_iterator.c */
+
+#include <time.h>
+
+#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 */
+
+#undef _nc_doalloc
+void *_nc_doalloc(
+ void *oldp,
+ size_t amount)
+ { return(*(void **)0); }
+
+/* ./tinfo/entries.c */
+
+#undef _nc_head
+ENTRY *_nc_head;
+#undef _nc_tail
+ENTRY *_nc_tail;
+
+#undef _nc_free_entry
+void _nc_free_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { /* void */ }
+
+#undef _nc_free_entries
+void _nc_free_entries(
+ ENTRY *headp)
+ { /* void */ }
+
+#undef _nc_delink_entry
+ENTRY *_nc_delink_entry(
+ ENTRY *headp,
+ TERMTYPE *tterm)
+ { return(*(ENTRY **)0); }
+
+#undef _nc_leaks_tinfo
+void _nc_leaks_tinfo(void)
+ { /* void */ }
+
+/* ./fallback.c */
+
+#undef _nc_fallback
+const TERMTYPE *_nc_fallback(
+ const char *name)
+ { return(*(const TERMTYPE **)0); }
+
+/* ./tinfo/free_ttype.c */
+
+#undef _nc_free_termtype
+void _nc_free_termtype(
+ TERMTYPE *ptr)
+ { /* void */ }
+
+#undef _nc_user_definable
+NCURSES_BOOL _nc_user_definable;
+
+#undef use_extended_names
+int use_extended_names(
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/getenv_num.c */
+
+#undef _nc_getenv_num
+int _nc_getenv_num(
+ const char *name)
+ { return(*(int *)0); }
+
+#undef _nc_setenv_num
+void _nc_setenv_num(
+ const char *name,
+ int value)
+ { /* void */ }
+
+/* ./tinfo/home_terminfo.c */
+
+#undef _nc_home_terminfo
+char *_nc_home_terminfo(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/init_keytry.c */
+
+#if 0
+
+#include <init_keytry.h>
+
+#undef _nc_tinfo_fkeys
+const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0};
+
+#endif
+
+#undef _nc_init_keytry
+void _nc_init_keytry(
+ SCREEN *sp)
+ { /* void */ }
+
+/* ./tinfo/lib_acs.c */
+
+#undef acs_map
+chtype acs_map[128];
+
+#undef _nc_init_acs_sp
+void _nc_init_acs_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_init_acs
+void _nc_init_acs(void)
+ { /* void */ }
+
+/* ./tinfo/lib_baudrate.c */
+
+#include <termcap.h>
+
+struct speed {
+ int s;
+ int sp;
+};
+
+#undef _nc_baudrate
+int _nc_baudrate(
+ int OSpeed)
+ { return(*(int *)0); }
+
+#undef _nc_ospeed
+int _nc_ospeed(
+ int BaudRate)
+ { return(*(int *)0); }
+
+#undef baudrate_sp
+int baudrate_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef baudrate
+int baudrate(void)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_cur_term.c */
+
+#undef cur_term
+TERMINAL *cur_term;
+
+#undef set_curterm_sp
+TERMINAL *set_curterm_sp(
+ SCREEN *sp,
+ TERMINAL *termp)
+ { return(*(TERMINAL **)0); }
+
+#undef set_curterm
+TERMINAL *set_curterm(
+ TERMINAL *termp)
+ { return(*(TERMINAL **)0); }
+
+#undef del_curterm_sp
+int del_curterm_sp(
+ SCREEN *sp,
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+#undef del_curterm
+int del_curterm(
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_data.c */
+
+#undef stdscr
+WINDOW *stdscr;
+#undef curscr
+WINDOW *curscr;
+#undef newscr
+WINDOW *newscr;
+#undef _nc_screen_chain
+SCREEN *_nc_screen_chain;
+#undef SP
+SCREEN *SP;
+#undef _nc_globals
+NCURSES_GLOBALS _nc_globals;
+#undef _nc_prescreen
+NCURSES_PRESCREEN _nc_prescreen;
+
+#undef _nc_screen_of
+SCREEN *_nc_screen_of(
+ WINDOW *win)
+ { return(*(SCREEN **)0); }
+
+/* ./tinfo/lib_has_cap.c */
+
+#undef has_ic_sp
+NCURSES_BOOL has_ic_sp(
+ SCREEN *sp)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_ic
+NCURSES_BOOL has_ic(void)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_il_sp
+NCURSES_BOOL has_il_sp(
+ SCREEN *sp)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef has_il
+NCURSES_BOOL has_il(void)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./tinfo/lib_kernel.c */
+
+#undef erasechar_sp
+char erasechar_sp(
+ SCREEN *sp)
+ { return(*(char *)0); }
+
+#undef erasechar
+char erasechar(void)
+ { return(*(char *)0); }
+
+#undef killchar_sp
+char killchar_sp(
+ SCREEN *sp)
+ { return(*(char *)0); }
+
+#undef killchar
+char killchar(void)
+ { return(*(char *)0); }
+
+#undef flushinp_sp
+int flushinp_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef flushinp
+int flushinp(void)
+ { return(*(int *)0); }
+
+/* ./lib_keyname.c */
+
+struct kn { short offset; int code; };
+
+#undef keyname_sp
+char *keyname_sp(
+ SCREEN *sp,
+ int c)
+ { return(*(char **)0); }
+
+#undef keyname
+char *keyname(
+ int c)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_longname.c */
+
+#undef longname
+char *longname(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_napms.c */
+
+#include <sys/time.h>
+
+#undef napms_sp
+int napms_sp(
+ SCREEN *sp,
+ int ms)
+ { return(*(int *)0); }
+
+#undef napms
+int napms(
+ int ms)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_options.c */
+
+#undef idlok
+int idlok(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef idcok
+void idcok(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { /* void */ }
+
+#undef halfdelay_sp
+int halfdelay_sp(
+ SCREEN *sp,
+ int t)
+ { return(*(int *)0); }
+
+#undef halfdelay
+int halfdelay(
+ int t)
+ { return(*(int *)0); }
+
+#undef nodelay
+int nodelay(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef notimeout
+int notimeout(
+ WINDOW *win,
+ NCURSES_BOOL f)
+ { return(*(int *)0); }
+
+#undef wtimeout
+void wtimeout(
+ WINDOW *win,
+ int delay)
+ { /* void */ }
+
+#undef keypad
+int keypad(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef meta
+int meta(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef curs_set_sp
+int curs_set_sp(
+ SCREEN *sp,
+ int vis)
+ { return(*(int *)0); }
+
+#undef curs_set
+int curs_set(
+ int vis)
+ { return(*(int *)0); }
+
+#undef typeahead_sp
+int typeahead_sp(
+ SCREEN *sp,
+ int fd)
+ { return(*(int *)0); }
+
+#undef typeahead
+int typeahead(
+ int fd)
+ { return(*(int *)0); }
+
+#undef has_key_sp
+int has_key_sp(
+ SCREEN *sp,
+ int keycode)
+ { return(*(int *)0); }
+
+#undef has_key
+int has_key(
+ int keycode)
+ { return(*(int *)0); }
+
+#undef _nc_putp_flush_sp
+int _nc_putp_flush_sp(
+ SCREEN *sp,
+ const char *name,
+ const char *value)
+ { return(*(int *)0); }
+
+#undef _nc_keypad
+int _nc_keypad(
+ SCREEN *sp,
+ int flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_raw.c */
+
+#undef raw_sp
+int raw_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef raw
+int raw(void)
+ { return(*(int *)0); }
+
+#undef cbreak_sp
+int cbreak_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef cbreak
+int cbreak(void)
+ { return(*(int *)0); }
+
+#undef qiflush_sp
+void qiflush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef qiflush
+void qiflush(void)
+ { /* void */ }
+
+#undef noraw_sp
+int noraw_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef noraw
+int noraw(void)
+ { return(*(int *)0); }
+
+#undef nocbreak_sp
+int nocbreak_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef nocbreak
+int nocbreak(void)
+ { return(*(int *)0); }
+
+#undef noqiflush_sp
+void noqiflush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef noqiflush
+void noqiflush(void)
+ { /* void */ }
+
+#undef intrflush_sp
+int intrflush_sp(
+ SCREEN *sp,
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#undef intrflush
+int intrflush(
+ WINDOW *win,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_setup.c */
+
+#include <locale.h>
+#include <sys/ioctl.h>
+#include <langinfo.h>
+
+#undef ttytype
+char ttytype[256];
+#undef LINES
+int LINES;
+#undef COLS
+int COLS;
+#undef TABSIZE
+int TABSIZE;
+
+#undef set_tabsize_sp
+int set_tabsize_sp(
+ SCREEN *sp,
+ int value)
+ { return(*(int *)0); }
+
+#undef set_tabsize
+int set_tabsize(
+ int value)
+ { return(*(int *)0); }
+
+#undef _nc_handle_sigwinch
+int _nc_handle_sigwinch(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef use_env_sp
+void use_env_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_tioctl_sp
+void use_tioctl_sp(
+ SCREEN *sp,
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_env
+void use_env(
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef use_tioctl
+void use_tioctl(
+ NCURSES_BOOL f)
+ { /* void */ }
+
+#undef _nc_get_screensize
+void _nc_get_screensize(
+ SCREEN *sp,
+ int *linep,
+ int *colp)
+ { /* void */ }
+
+#undef _nc_update_screensize
+void _nc_update_screensize(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_setup_tinfo
+int _nc_setup_tinfo(
+ const char *const tn,
+ TERMTYPE *const tp)
+ { return(*(int *)0); }
+
+#undef _nc_tinfo_cmdch
+void _nc_tinfo_cmdch(
+ TERMINAL *termp,
+ int proto)
+ { /* void */ }
+
+#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(
+ TERMINAL *termp)
+ { return(*(int *)0); }
+
+#undef _nc_setupterm
+int _nc_setupterm(
+ char *tname,
+ int Filedes,
+ int *errret,
+ int reuse)
+ { return(*(int *)0); }
+
+#undef new_prescr
+SCREEN *new_prescr(void)
+ { return(*(SCREEN **)0); }
+
+#undef setupterm
+int setupterm(
+ char *tname,
+ int Filedes,
+ int *errret)
+ { return(*(int *)0); }
+
+/* ./tinfo/lib_termcap.c */
+
+#undef UP
+char *UP;
+#undef BC
+char *BC;
+
+#undef tgetent_sp
+int tgetent_sp(
+ SCREEN *sp,
+ char *bufp,
+ const char *name)
+ { return(*(int *)0); }
+
+#if 0
+
+#include <capdefaults.c>
+
+#endif
+
+#undef tgetent
+int tgetent(
+ char *bufp,
+ const char *name)
+ { return(*(int *)0); }
+
+#undef tgetflag_sp
+int tgetflag_sp(
+ SCREEN *sp,
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetflag
+int tgetflag(
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetnum_sp
+int tgetnum_sp(
+ SCREEN *sp,
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetnum
+int tgetnum(
+ char *id)
+ { return(*(int *)0); }
+
+#undef tgetstr_sp
+char *tgetstr_sp(
+ SCREEN *sp,
+ char *id,
+ char **area)
+ { return(*(char **)0); }
+
+#undef tgetstr
+char *tgetstr(
+ char *id,
+ char **area)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_termname.c */
+
+#undef termname_sp
+char *termname_sp(
+ SCREEN *sp)
+ { return(*(char **)0); }
+
+#undef termname
+char *termname(void)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tgoto.c */
+
+#undef tgoto
+char *tgoto(
+ const char *string,
+ int x,
+ int y)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_ti.c */
+
+#undef tigetflag_sp
+int tigetflag_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetflag
+int tigetflag(
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetnum_sp
+int tigetnum_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetnum
+int tigetnum(
+ char *str)
+ { return(*(int *)0); }
+
+#undef tigetstr_sp
+char *tigetstr_sp(
+ SCREEN *sp,
+ char *str)
+ { return(*(char **)0); }
+
+#undef tigetstr
+char *tigetstr(
+ char *str)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tparm.c */
+
+#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 *_nc_popcount)
+ { return(*(int *)0); }
+
+#undef tparm
+char *tparm(
+ char *string,
+ ...)
+ { return(*(char **)0); }
+
+#undef tiparm
+char *tiparm(
+ const char *string,
+ ...)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_tputs.c */
+
+#undef PC
+char PC;
+#undef ospeed
+short ospeed;
+#undef _nc_nulls_sent
+int _nc_nulls_sent;
+
+#undef _nc_set_no_padding
+void _nc_set_no_padding(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef delay_output_sp
+int delay_output_sp(
+ SCREEN *sp,
+ int ms)
+ { return(*(int *)0); }
+
+#undef delay_output
+int delay_output(
+ int ms)
+ { return(*(int *)0); }
+
+#undef _nc_flush_sp
+void _nc_flush_sp(
+ SCREEN *sp)
+ { /* void */ }
+
+#undef _nc_flush
+void _nc_flush(void)
+ { /* void */ }
+
+#undef _nc_outch_sp
+int _nc_outch_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_outch
+int _nc_outch(
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar_sp
+int _nc_putchar_sp(
+ SCREEN *sp,
+ int ch)
+ { return(*(int *)0); }
+
+#undef _nc_putchar
+int _nc_putchar(
+ int ch)
+ { return(*(int *)0); }
+
+#undef putp_sp
+int putp_sp(
+ SCREEN *sp,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef putp
+int putp(
+ const char *string)
+ { return(*(int *)0); }
+
+#undef _nc_putp_sp
+int _nc_putp_sp(
+ SCREEN *sp,
+ const char *name,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef _nc_putp
+int _nc_putp(
+ const char *name,
+ const char *string)
+ { return(*(int *)0); }
+
+#undef tputs_sp
+int tputs_sp(
+ SCREEN *sp,
+ const char *string,
+ int affcnt,
+ NCURSES_OUTC_sp outc)
+ { return(*(int *)0); }
+
+#undef _nc_outc_wrapper
+int _nc_outc_wrapper(
+ SCREEN *sp,
+ int c)
+ { return(*(int *)0); }
+
+#undef tputs
+int tputs(
+ const char *string,
+ int affcnt,
+ int (*outc)(
+ int p1))
+ { return(*(int *)0); }
+
+/* ./trace/lib_trace.c */
+
+#undef _nc_tracing
+unsigned _nc_tracing;
+#undef _nc_tputs_trace
+const char *_nc_tputs_trace = {0};
+#undef _nc_outchars
+long _nc_outchars;
+
+#undef trace
+void trace(
+ const unsigned int tracelevel)
+ { /* void */ }
+
+#undef _tracef
+void _tracef(
+ const char *fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_retrace_bool
+NCURSES_BOOL _nc_retrace_bool(
+ int code)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_retrace_char
+char _nc_retrace_char(
+ int code)
+ { return(*(char *)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)
+ { return(*(SCREEN **)0); }
+
+#undef _nc_retrace_win
+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_int_attr_t
+int _nc_retrace_int_attr_t(
+ attr_t code)
+ { return(*(int *)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 {
+ unsigned int val;
+ 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); }
+
+/* ./trace/lib_tracechr.c */
+
+#undef _nc_tracechar
+char *_nc_tracechar(
+ SCREEN *sp,
+ int ch)
+ { return(*(char **)0); }
+
+#undef _tracechar
+char *_tracechar(
+ int ch)
+ { return(*(char **)0); }
+
+/* ./tinfo/lib_ttyflags.c */
+
+#undef _nc_get_tty_mode_sp
+int _nc_get_tty_mode_sp(
+ SCREEN *sp,
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_get_tty_mode
+int _nc_get_tty_mode(
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_set_tty_mode_sp
+int _nc_set_tty_mode_sp(
+ SCREEN *sp,
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef _nc_set_tty_mode
+int _nc_set_tty_mode(
+ struct termios *buf)
+ { return(*(int *)0); }
+
+#undef def_shell_mode_sp
+int def_shell_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef def_shell_mode
+int def_shell_mode(void)
+ { return(*(int *)0); }
+
+#undef def_prog_mode_sp
+int def_prog_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef def_prog_mode
+int def_prog_mode(void)
+ { return(*(int *)0); }
+
+#undef reset_prog_mode_sp
+int reset_prog_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef reset_prog_mode
+int reset_prog_mode(void)
+ { return(*(int *)0); }
+
+#undef reset_shell_mode_sp
+int reset_shell_mode_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef reset_shell_mode
+int reset_shell_mode(void)
+ { return(*(int *)0); }
+
+#undef savetty_sp
+int savetty_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef savetty
+int savetty(void)
+ { return(*(int *)0); }
+
+#undef resetty_sp
+int resetty_sp(
+ SCREEN *sp)
+ { return(*(int *)0); }
+
+#undef resetty
+int resetty(void)
+ { return(*(int *)0); }
+
+/* ./tty/lib_twait.c */
+
+#undef _nc_timed_wait
+int _nc_timed_wait(
+ SCREEN *sp,
+ int mode,
+ int milliseconds,
+ int *timeleft)
+ { return(*(int *)0); }
+
+/* ./tinfo/name_match.c */
+
+#undef _nc_first_name
+char *_nc_first_name(
+ const char *const sp)
+ { return(*(char **)0); }
+
+#undef _nc_name_match
+int _nc_name_match(
+ const char *const namelst,
+ const char *const name,
+ const char *const delim)
+ { return(*(int *)0); }
+
+/* ./names.c */
+
+#undef boolnames
+char *const boolnames[] = {0};
+#undef boolfnames
+char *const boolfnames[] = {0};
+#undef numnames
+char *const numnames[] = {0};
+#undef numfnames
+char *const numfnames[] = {0};
+#undef strnames
+char *const strnames[] = {0};
+#undef strfnames
+char *const strfnames[] = {0};
+
+/* ./tinfo/obsolete.c */
+
+#undef _nc_set_buffer_sp
+void _nc_set_buffer_sp(
+ SCREEN *sp,
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+#undef _nc_set_buffer
+void _nc_set_buffer(
+ FILE *ofp,
+ int buffered)
+ { /* void */ }
+
+/* ./tinfo/read_entry.c */
+
+#include <hashed_db.h>
+
+#undef _nc_init_termtype
+void _nc_init_termtype(
+ TERMTYPE *const tp)
+ { /* 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(
+ const char *const filename,
+ TERMTYPE *ptr)
+ { return(*(int *)0); }
+
+#undef _nc_read_entry
+int _nc_read_entry(
+ 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
+void _nc_read_termcap(void)
+ { /* void */ }
+
+/* ./tinfo/strings.c */
+
+#undef _nc_str_init
+string_desc *_nc_str_init(
+ string_desc *dst,
+ char *src,
+ size_t len)
+ { return(*(string_desc **)0); }
+
+#undef _nc_str_null
+string_desc *_nc_str_null(
+ string_desc *dst,
+ size_t len)
+ { return(*(string_desc **)0); }
+
+#undef _nc_str_copy
+string_desc *_nc_str_copy(
+ string_desc *dst,
+ string_desc *src)
+ { return(*(string_desc **)0); }
+
+#undef _nc_safe_strcat
+NCURSES_BOOL _nc_safe_strcat(
+ string_desc *dst,
+ const char *src)
+ { return(*(NCURSES_BOOL *)0); }
+
+#undef _nc_safe_strcpy
+NCURSES_BOOL _nc_safe_strcpy(
+ string_desc *dst,
+ const char *src)
+ { return(*(NCURSES_BOOL *)0); }
+
+/* ./trace/trace_buf.c */
+
+#undef _nc_trace_buf
+char *_nc_trace_buf(
+ int bufnum,
+ 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
+void _nc_trace_tries(
+ TRIES *tree)
+ { /* void */ }
+
+/* ./base/tries.c */
+
+#undef _nc_expand_try
+char *_nc_expand_try(
+ TRIES *tree,
+ unsigned code,
+ int *count,
+ size_t len)
+ { return(*(char **)0); }
+
+#undef _nc_remove_key
+int _nc_remove_key(
+ TRIES **tree,
+ unsigned code)
+ { return(*(int *)0); }
+
+#undef _nc_remove_string
+int _nc_remove_string(
+ 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_sp
+char *unctrl_sp(
+ SCREEN *sp,
+ chtype ch)
+ { return(*(char **)0); }
+
+#undef unctrl
+char *unctrl(
+ chtype ch)
+ { return(*(char **)0); }
+
+/* ./trace/visbuf.c */
+
+#undef _nc_visbuf2
+const char *_nc_visbuf2(
+ int bufnum,
+ const char *buf)
+ { return(*(const char **)0); }
+
+#undef _nc_visbuf
+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,
+ const wchar_t *buf)
+ { return(*(const char **)0); }
+
+#undef _nc_viswbuf
+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,
+ const cchar_t *buf,
+ int len)
+ { return(*(const char **)0); }
+
+#undef _nc_viscbuf
+const char *_nc_viscbuf(
+ const cchar_t *buf,
+ int len)
+ { return(*(const char **)0); }
+
+/* ./base/define_key.c */
+
+#undef define_key_sp
+int define_key_sp(
+ SCREEN *sp,
+ const char *str,
+ int keycode)
+ { return(*(int *)0); }
+
+#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_sp
+int key_defined_sp(
+ SCREEN *sp,
+ const char *str)
+ { return(*(int *)0); }
+
+#undef key_defined
+int key_defined(
+ const char *str)
+ { return(*(int *)0); }
+
+/* ./base/keybound.c */
+
+#undef keybound_sp
+char *keybound_sp(
+ SCREEN *sp,
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+#undef keybound
+char *keybound(
+ int code,
+ int count)
+ { return(*(char **)0); }
+
+/* ./base/keyok.c */
+
+#undef keyok_sp
+int keyok_sp(
+ SCREEN *sp,
+ int c,
+ NCURSES_BOOL flag)
+ { return(*(int *)0); }
+
+#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 caf1799fa87d..b3b973210fc4 100644
--- a/contrib/ncurses/ncurses/modules
+++ b/contrib/ncurses/ncurses/modules
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.117 2010/08/07 18:41:02 tom Exp $
+# $Id: modules,v 1.120 2013/01/26 22:17:55 tom Exp $
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -115,7 +115,6 @@ tty_update lib $(serial) $(HEADER_DEPS)
varargs lib $(trace) $(HEADER_DEPS)
# Modules for porting
-memmove lib $(base) $(HEADER_DEPS)
vsscanf lib $(base) $(HEADER_DEPS)
# actually an extension, but with its own configure option (--disable-leaks)
@@ -199,9 +198,9 @@ lib_ttyflags lib $(tinfo) $(HEADER_DEPS)
lib_twait lib $(serial) $(HEADER_DEPS)
name_match lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h
names lib . $(HEADER_DEPS)
+obsolete lib $(tinfo) $(HEADER_DEPS)
read_entry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h $(INCDIR)/hashed_db.h
read_termcap lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h
-setbuf lib $(tinfo) $(HEADER_DEPS)
strings lib $(tinfo) $(HEADER_DEPS)
trace_buf lib $(trace) $(HEADER_DEPS)
trace_tries lib $(trace) $(HEADER_DEPS)
@@ -236,6 +235,7 @@ lib_driver lib $(base) $(HEADER_DEPS)
@ port_win32con
gettimeofday lib $(win32con) $(HEADER_DEPS)
wcwidth lib $(win32con) $(HEADER_DEPS)
+widechars lib $(wide) $(HEADER_DEPS)
win_driver lib $(win32con) $(HEADER_DEPS)
@ port_tinfo
diff --git a/contrib/ncurses/ncurses/tinfo/MKcaptab.sh b/contrib/ncurses/ncurses/tinfo/MKcaptab.sh
index 4d1b53a5bd9a..20c94a639b9a 100644
--- a/contrib/ncurses/ncurses/tinfo/MKcaptab.sh
+++ b/contrib/ncurses/ncurses/tinfo/MKcaptab.sh
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 2007-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 2007-2010,2011 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -26,7 +26,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: MKcaptab.sh,v 1.13 2010/12/25 23:43:58 tom Exp $
+# $Id: MKcaptab.sh,v 1.14 2011/10/22 16:34:50 tom Exp $
AWK=${1-awk}
OPT1=${2-0}
OPT2=${3-tinfo/MKcaptab.awk}
@@ -99,12 +99,12 @@ static const struct alias *
_nc_build_alias(struct alias **actual,
const alias_table_data *source,
const char *strings,
- unsigned tablesize)
+ size_t tablesize)
{
if (*actual == 0) {
*actual = typeCalloc(struct alias, tablesize + 1);
if (*actual != 0) {
- unsigned n;
+ size_t n;
for (n = 0; n < tablesize; ++n) {
add_alias(from);
add_alias(to);
@@ -178,7 +178,7 @@ tcap_hash(const char *string)
static int
compare_tcap_names(const char *a, const char *b)
{
- return !strncmp(a, b, TCAP_LEN);
+ return !strncmp(a, b, (size_t) TCAP_LEN);
}
static int
diff --git a/contrib/ncurses/ncurses/tinfo/access.c b/contrib/ncurses/ncurses/tinfo/access.c
index 87c4f462fd4f..d9876875382d 100644
--- a/contrib/ncurses/ncurses/tinfo/access.c
+++ b/contrib/ncurses/ncurses/tinfo/access.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free 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,11 +33,18 @@
#include <curses.priv.h>
#include <ctype.h>
-#include <sys/stat.h>
#include <tic.h>
-MODULE_ID("$Id: access.c,v 1.16 2010/01/23 17:57:43 tom Exp $")
+MODULE_ID("$Id: access.c,v 1.23 2012/09/01 19:21:29 tom Exp $")
+
+#ifdef __TANDEM
+#define ROOT_UID 65535
+#endif
+
+#ifndef ROOT_UID
+#define ROOT_UID 0
+#endif
#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c))
@@ -53,7 +60,7 @@ _nc_rootname(char *path)
result = temp;
#if !MIXEDCASE_FILENAMES
for (s = result; *s != '\0'; ++s) {
- *s = LOWERCASE(*s);
+ *s = (char) LOWERCASE(*s);
}
#endif
#if defined(PROG_EXT)
@@ -108,24 +115,33 @@ _nc_basename(char *path)
NCURSES_EXPORT(int)
_nc_access(const char *path, int mode)
{
- if (access(path, mode) < 0) {
+ int result;
+
+ if (path == 0) {
+ result = -1;
+ } else if (access(path, mode) < 0) {
if ((mode & W_OK) != 0
&& errno == ENOENT
&& strlen(path) < PATH_MAX) {
char head[PATH_MAX];
- char *leaf = _nc_basename(strcpy(head, path));
+ char *leaf;
+ _nc_STRCPY(head, path, sizeof(head));
+ leaf = _nc_basename(head);
if (leaf == 0)
leaf = head;
*leaf = '\0';
if (head == leaf)
- (void) strcpy(head, ".");
+ _nc_STRCPY(head, ".", sizeof(head));
- return access(head, R_OK | W_OK | X_OK);
+ result = access(head, R_OK | W_OK | X_OK);
+ } else {
+ result = -1;
}
- return -1;
+ } else {
+ result = 0;
}
- return 0;
+ return result;
}
NCURSES_EXPORT(bool)
@@ -135,7 +151,7 @@ _nc_is_dir_path(const char *path)
struct stat sb;
if (stat(path, &sb) == 0
- && (sb.st_mode & S_IFMT) == S_IFDIR) {
+ && S_ISDIR(sb.st_mode)) {
result = TRUE;
}
return result;
@@ -148,7 +164,7 @@ _nc_is_file_path(const char *path)
struct stat sb;
if (stat(path, &sb) == 0
- && (sb.st_mode & S_IFMT) == S_IFREG) {
+ && S_ISREG(sb.st_mode)) {
result = TRUE;
}
return result;
@@ -170,6 +186,7 @@ _nc_env_access(void)
|| getgid() != getegid())
return FALSE;
#endif
- return getuid() != 0 && geteuid() != 0; /* ...finally, disallow root */
+ /* ...finally, disallow root */
+ return (getuid() != ROOT_UID) && (geteuid() != ROOT_UID);
}
#endif
diff --git a/contrib/ncurses/ncurses/tinfo/alloc_entry.c b/contrib/ncurses/ncurses/tinfo/alloc_entry.c
index 506fb386d208..14ea39118837 100644
--- a/contrib/ncurses/ncurses/tinfo/alloc_entry.c
+++ b/contrib/ncurses/ncurses/tinfo/alloc_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -47,7 +47,7 @@
#include <tic.h>
-MODULE_ID("$Id: alloc_entry.c,v 1.51 2010/12/25 23:06:01 tom Exp $")
+MODULE_ID("$Id: alloc_entry.c,v 1.58 2013/08/17 19:20:38 tom Exp $")
#define ABSENT_OFFSET -1
#define CANCELLED_OFFSET -2
@@ -61,8 +61,6 @@ NCURSES_EXPORT(void)
_nc_init_entry(TERMTYPE *const tp)
/* initialize a terminal type data block */
{
- unsigned i;
-
#if NO_LEAKS
if (tp == 0) {
if (stringbuf != 0) {
@@ -73,33 +71,11 @@ _nc_init_entry(TERMTYPE *const tp)
#endif
if (stringbuf == 0)
- stringbuf = (char *) malloc(MAX_STRTAB);
-
-#if NCURSES_XNAMES
- tp->num_Booleans = BOOLCOUNT;
- tp->num_Numbers = NUMCOUNT;
- tp->num_Strings = STRCOUNT;
- tp->ext_Booleans = 0;
- tp->ext_Numbers = 0;
- tp->ext_Strings = 0;
-#endif
- if (tp->Booleans == 0)
- tp->Booleans = typeMalloc(NCURSES_SBOOL, BOOLCOUNT);
- if (tp->Numbers == 0)
- tp->Numbers = typeMalloc(short, NUMCOUNT);
- if (tp->Strings == 0)
- tp->Strings = typeMalloc(char *, STRCOUNT);
-
- for_each_boolean(i, tp)
- tp->Booleans[i] = FALSE;
-
- for_each_number(i, tp)
- tp->Numbers[i] = ABSENT_NUMERIC;
-
- for_each_string(i, tp)
- tp->Strings[i] = ABSENT_STRING;
+ TYPE_MALLOC(char, (size_t) MAX_STRTAB, stringbuf);
next_free = 0;
+
+ _nc_init_termtype(tp);
}
NCURSES_EXPORT(ENTRY *)
@@ -131,13 +107,13 @@ _nc_save_str(const char *const string)
result = (stringbuf + next_free - 1);
}
} else if (next_free + len < MAX_STRTAB) {
- strcpy(&stringbuf[next_free], string);
+ _nc_STRCPY(&stringbuf[next_free], string, MAX_STRTAB);
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");
+ _nc_warning("Too much data, some is lost: %s", string);
}
return result;
}
@@ -194,8 +170,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
useoffsets[i] = (int) (ep->uses[i].name - stringbuf);
}
- if ((tp->str_table = typeMalloc(char, next_free)) == (char *) 0)
- _nc_err_abort(MSG_NO_MEMORY);
+ TYPE_MALLOC(char, next_free, tp->str_table);
(void) memcpy(tp->str_table, stringbuf, next_free);
tp->term_names = tp->str_table + n;
@@ -216,16 +191,18 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings)
if ((n = (unsigned) NUM_EXT_NAMES(tp)) != 0) {
if (n < SIZEOF(offsets)) {
size_t length = 0;
+ size_t offset;
for (i = 0; i < n; i++) {
length += strlen(tp->ext_Names[i]) + 1;
offsets[i] = (int) (tp->ext_Names[i] - stringbuf);
}
- if ((tp->ext_str_table = typeMalloc(char, length)) == 0)
- _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]);
- length += strlen(tp->ext_Names[i]) + 1;
+ TYPE_MALLOC(char, length, tp->ext_str_table);
+ for (i = 0, offset = 0; i < n; i++) {
+ tp->ext_Names[i] = tp->ext_str_table + offset;
+ _nc_STRCPY(tp->ext_Names[i],
+ stringbuf + offsets[i],
+ length - offset);
+ offset += strlen(tp->ext_Names[i]) + 1;
}
}
}
diff --git a/contrib/ncurses/ncurses/tinfo/alloc_ttype.c b/contrib/ncurses/ncurses/tinfo/alloc_ttype.c
index b02cb9c6010e..35c92dd8c2b9 100644
--- a/contrib/ncurses/ncurses/tinfo/alloc_ttype.c
+++ b/contrib/ncurses/ncurses/tinfo/alloc_ttype.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <tic.h>
-MODULE_ID("$Id: alloc_ttype.c,v 1.22 2010/12/19 00:24:09 tom Exp $")
+MODULE_ID("$Id: alloc_ttype.c,v 1.27 2013/06/08 16:54:50 tom Exp $")
#if NCURSES_XNAMES
/*
@@ -104,7 +104,7 @@ realign_data(TERMTYPE *to, char **ext_Names,
if (to->ext_Booleans != ext_Booleans) {
EXTEND_NUM(num_Booleans, ext_Booleans);
- to->Booleans = typeRealloc(NCURSES_SBOOL, to->num_Booleans, to->Booleans);
+ TYPE_REALLOC(NCURSES_SBOOL, to->num_Booleans, to->Booleans);
for (n = to->ext_Booleans - 1,
m = ext_Booleans - 1,
base = to->num_Booleans - (m + 1); m >= 0; m--) {
@@ -116,9 +116,10 @@ realign_data(TERMTYPE *to, char **ext_Names,
}
to->ext_Booleans = UShort(ext_Booleans);
}
+
if (to->ext_Numbers != ext_Numbers) {
EXTEND_NUM(num_Numbers, ext_Numbers);
- to->Numbers = typeRealloc(short, to->num_Numbers, to->Numbers);
+ TYPE_REALLOC(short, to->num_Numbers, to->Numbers);
for (n = to->ext_Numbers - 1,
m = ext_Numbers - 1,
base = to->num_Numbers - (m + 1); m >= 0; m--) {
@@ -132,7 +133,7 @@ realign_data(TERMTYPE *to, char **ext_Names,
}
if (to->ext_Strings != ext_Strings) {
EXTEND_NUM(num_Strings, ext_Strings);
- to->Strings = typeRealloc(char *, to->num_Strings, to->Strings);
+ TYPE_REALLOC(char *, to->num_Strings, to->Strings);
for (n = to->ext_Strings - 1,
m = ext_Strings - 1,
base = to->num_Strings - (m + 1); m >= 0; m--) {
@@ -301,7 +302,7 @@ _nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type)
}
}
- tp->ext_Names = typeRealloc(char *, total, tp->ext_Names);
+ TYPE_REALLOC(char *, total, tp->ext_Names);
for (k = total - 1; k > j; k--)
tp->ext_Names[k] = tp->ext_Names[k - 1];
tp->ext_Names[j] = name;
@@ -311,21 +312,21 @@ _nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type)
case BOOLEAN:
tp->ext_Booleans++;
tp->num_Booleans++;
- tp->Booleans = typeRealloc(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans);
+ TYPE_REALLOC(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans);
for (k = (unsigned) (tp->num_Booleans - 1); k > j; k--)
tp->Booleans[k] = tp->Booleans[k - 1];
break;
case NUMBER:
tp->ext_Numbers++;
tp->num_Numbers++;
- tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers);
+ TYPE_REALLOC(short, tp->num_Numbers, tp->Numbers);
for (k = (unsigned) (tp->num_Numbers - 1); k > j; k--)
tp->Numbers[k] = tp->Numbers[k - 1];
break;
case STRING:
tp->ext_Strings++;
tp->num_Strings++;
- tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings);
+ TYPE_REALLOC(char *, tp->num_Strings, tp->Strings);
for (k = (unsigned) (tp->num_Strings - 1); k > j; k--)
tp->Strings[k] = tp->Strings[k - 1];
break;
@@ -417,7 +418,7 @@ _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
* into it, updating to's counts for booleans, etc. Fortunately we do
* this only for the terminfo compiler (tic) and comparer (infocmp).
*/
- ext_Names = typeMalloc(char *, (size_t)(na + nb));
+ TYPE_MALLOC(char *, (size_t)(na + nb), ext_Names);
if (to->ext_Strings && (from->ext_Booleans + from->ext_Numbers))
adjust_cancels(to, from);
@@ -461,7 +462,7 @@ _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
if (nb != (ext_Booleans + ext_Numbers + ext_Strings)) {
nb = (ext_Booleans + ext_Numbers + ext_Strings);
realign_data(from, ext_Names, ext_Booleans, ext_Numbers, ext_Strings);
- from->ext_Names = typeRealloc(char *, (size_t) nb, from->ext_Names);
+ TYPE_REALLOC(char *, (size_t) nb, from->ext_Names);
memcpy(from->ext_Names, ext_Names, sizeof(char *) * (size_t) nb);
DEBUG(2, ("realigned %d extended names for '%s' (from)",
NUM_EXT_NAMES(from), from->term_names));
@@ -473,22 +474,27 @@ _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
#endif
NCURSES_EXPORT(void)
-_nc_copy_termtype(TERMTYPE *dst, TERMTYPE *src)
+_nc_copy_termtype(TERMTYPE *dst, const TERMTYPE *src)
{
+#if NCURSES_XNAMES
unsigned i;
+#endif
*dst = *src; /* ...to copy the sizes and string-tables */
- dst->Booleans = typeMalloc(NCURSES_SBOOL, NUM_BOOLEANS(dst));
- dst->Numbers = typeMalloc(short, NUM_NUMBERS(dst));
- dst->Strings = typeMalloc(char *, NUM_STRINGS(dst));
-
- /* FIXME: use memcpy for these and similar loops */
- for_each_boolean(i, dst)
- dst->Booleans[i] = src->Booleans[i];
- for_each_number(i, dst)
- dst->Numbers[i] = src->Numbers[i];
- for_each_string(i, dst)
- dst->Strings[i] = src->Strings[i];
+
+ TYPE_MALLOC(NCURSES_SBOOL, NUM_BOOLEANS(dst), dst->Booleans);
+ TYPE_MALLOC(short, NUM_NUMBERS(dst), dst->Numbers);
+ TYPE_MALLOC(char *, NUM_STRINGS(dst), dst->Strings);
+
+ memcpy(dst->Booleans,
+ src->Booleans,
+ NUM_BOOLEANS(dst) * sizeof(dst->Booleans[0]));
+ memcpy(dst->Numbers,
+ src->Numbers,
+ NUM_NUMBERS(dst) * sizeof(dst->Numbers[0]));
+ memcpy(dst->Strings,
+ src->Strings,
+ NUM_STRINGS(dst) * sizeof(dst->Strings[0]));
/* FIXME: we probably should also copy str_table and ext_str_table,
* but tic and infocmp are not written to exploit that (yet).
@@ -496,11 +502,10 @@ _nc_copy_termtype(TERMTYPE *dst, TERMTYPE *src)
#if NCURSES_XNAMES
if ((i = NUM_EXT_NAMES(src)) != 0) {
- dst->ext_Names = typeMalloc(char *, i);
+ TYPE_MALLOC(char *, i, dst->ext_Names);
memcpy(dst->ext_Names, src->ext_Names, i * sizeof(char *));
} else {
dst->ext_Names = 0;
}
#endif
-
}
diff --git a/contrib/ncurses/ncurses/tinfo/captoinfo.c b/contrib/ncurses/ncurses/tinfo/captoinfo.c
index a0da44dea989..e02e622b0de3 100644
--- a/contrib/ncurses/ncurses/tinfo/captoinfo.c
+++ b/contrib/ncurses/ncurses/tinfo/captoinfo.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -93,7 +93,7 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: captoinfo.c,v 1.58 2010/12/04 20:08:19 tom Exp $")
+MODULE_ID("$Id: captoinfo.c,v 1.77 2012/12/30 00:50:40 tom Exp $")
#define MAX_PUSHED 16 /* max # args we can push onto the stack */
@@ -114,9 +114,7 @@ init_string(void)
/* initialize 'my_string', 'my_length' */
{
if (my_string == 0)
- my_string = typeMalloc(char, my_length = 256);
- if (my_string == 0)
- _nc_err_abort(MSG_NO_MEMORY);
+ TYPE_MALLOC(char, my_length = 256, my_string);
*my_string = '\0';
return my_string;
@@ -133,7 +131,7 @@ save_string(char *d, const char *const s)
_nc_err_abort(MSG_NO_MEMORY);
d = my_string + have;
}
- (void) strcpy(d, s);
+ _nc_STRCPY(d, s, my_length - have);
return d + strlen(d);
}
@@ -240,6 +238,12 @@ getparm(int parm, int n)
else if (parm == 2)
parm = 1;
}
+
+ while (n--) {
+ dp = save_string(dp, "%p");
+ dp = save_char(dp, '0' + parm);
+ }
+
if (onstack == parm) {
if (n > 1) {
_nc_warning("string may not be optimal");
@@ -255,11 +259,6 @@ getparm(int parm, int n)
onstack = parm;
- while (n--) {
- dp = save_string(dp, "%p");
- dp = save_char(dp, '0' + parm);
- }
-
if (seenn && parm < 3) {
dp = save_string(dp, "%{96}%^");
}
@@ -469,73 +468,9 @@ _nc_captoinfo(const char *cap, const char *s, int const parameterized)
break;
}
break;
-#ifdef REVISIBILIZE
- case '\\':
- dp = save_char(dp, *s++);
- dp = save_char(dp, *s++);
- break;
- case '\n':
- dp = save_string(dp, "\\n");
- s++;
- break;
- case '\t':
- dp = save_string(dp, "\\t");
- s++;
- break;
- case '\r':
- dp = save_string(dp, "\\r");
- s++;
- break;
- case '\200':
- dp = save_string(dp, "\\0");
- s++;
- break;
- case '\f':
- dp = save_string(dp, "\\f");
- s++;
- break;
- case '\b':
- dp = save_string(dp, "\\b");
- s++;
- break;
- case ' ':
- dp = save_string(dp, "\\s");
- s++;
- break;
- case '^':
- dp = save_string(dp, "\\^");
- s++;
- break;
- case ':':
- dp = save_string(dp, "\\:");
- s++;
- break;
- case ',':
- dp = save_string(dp, "\\,");
- s++;
- break;
- default:
- if (*s == '\033') {
- dp = save_string(dp, "\\E");
- s++;
- } else if (*s > 0 && *s < 32) {
- dp = save_char(dp, '^');
- dp = save_char(dp, *s + '@');
- s++;
- } else if (*s <= 0 || *s >= 127) {
- dp = save_char(dp, '\\');
- dp = save_char(dp, ((*s & 0300) >> 6) + '0');
- dp = save_char(dp, ((*s & 0070) >> 3) + '0');
- dp = save_char(dp, (*s & 0007) + '0');
- s++;
- } else
- dp = save_char(dp, *s++);
- break;
-#else
default:
dp = save_char(dp, *s++);
break;
-#endif
}
}
@@ -578,7 +513,7 @@ bcd_expression(const char *str)
{
char buffer[80];
int tst;
- sprintf(buffer, fmt, ch1, ch2);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) fmt, ch1, ch2);
tst = strlen(buffer) - 1;
assert(len == tst);
}
@@ -597,10 +532,13 @@ save_tc_char(char *bufptr, int c1)
bufptr = save_char(bufptr, '\\');
bufptr = save_char(bufptr, c1);
} else {
- if (c1 == (c1 & 0x1f)) /* iscntrl() returns T on 255 */
- (void) strcpy(temp, unctrl((chtype) c1));
- else
- (void) sprintf(temp, "\\%03o", c1);
+ if (c1 == (c1 & 0x1f)) { /* iscntrl() returns T on 255 */
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "%.20s", unctrl((chtype) c1));
+ } else {
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "\\%03o", c1);
+ }
bufptr = save_string(bufptr, temp);
}
return bufptr;
@@ -646,13 +584,15 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
int in0, in1, in2;
char ch1 = 0, ch2 = 0;
char *bufptr = init_string();
+ char octal[4];
int len;
bool syntax_error = FALSE;
/* we may have to move some trailing mandatory padding up front */
padding = str + strlen(str) - 1;
- if (padding > str && *padding == '>' && *--padding == '/') {
- --padding;
+ if (padding > str && *padding == '>') {
+ if (*--padding == '/')
+ --padding;
while (isdigit(UChar(*padding)) || *padding == '.' || *padding == '*')
padding--;
if (padding > str && *padding == '<' && *--padding == '$')
@@ -663,7 +603,7 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_char(bufptr, *padding++);
}
- for (; *str && str != trimmed; str++) {
+ for (; *str && ((trimmed == 0) || (str < trimmed)); str++) {
int c1, c2;
char *cp = 0;
@@ -685,8 +625,72 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
} else if (str[1] == ',') {
bufptr = save_char(bufptr, *++str);
} else {
+ int xx1, xx2;
+
bufptr = save_char(bufptr, *str++);
- bufptr = save_char(bufptr, *str);
+ xx1 = *str;
+ if (_nc_strict_bsd) {
+ if (isdigit(UChar(xx1))) {
+ int pad = 0;
+
+ if (!isdigit(UChar(str[1])))
+ pad = 2;
+ else if (str[1] && !isdigit(UChar(str[2])))
+ pad = 1;
+
+ /*
+ * Test for "\0", "\00" or "\000" and transform those
+ * into "\200".
+ */
+ if (xx1 == '0'
+ && ((pad == 2) || (str[1] == '0'))
+ && ((pad >= 1) || (str[2] == '0'))) {
+ xx2 = '2';
+ } else {
+ xx2 = '0';
+ pad = 0; /* FIXME - optionally pad to 3 digits */
+ }
+ while (pad-- > 0) {
+ bufptr = save_char(bufptr, xx2);
+ xx2 = '0';
+ }
+ } else if (strchr("E\\nrtbf", xx1) == 0) {
+ switch (xx1) {
+ case 'e':
+ xx1 = 'E';
+ break;
+ case 'l':
+ xx1 = 'n';
+ break;
+ case 's':
+ bufptr = save_char(bufptr, '0');
+ bufptr = save_char(bufptr, '4');
+ xx1 = '0';
+ break;
+ case ':':
+ /*
+ * Note: termcap documentation claims that ":"
+ * must be escaped as "\072", however the
+ * documentation is incorrect - read the code.
+ * The replacement does not work reliably,
+ * so the advice is not helpful.
+ */
+ bufptr = save_char(bufptr, '0');
+ bufptr = save_char(bufptr, '7');
+ xx1 = '2';
+ break;
+ default:
+ /* should not happen, but handle this anyway */
+ _nc_SPRINTF(octal, _nc_SLIMIT(sizeof(octal))
+ "%03o", UChar(xx1));
+ bufptr = save_char(bufptr, octal[0]);
+ bufptr = save_char(bufptr, octal[1]);
+ xx1 = octal[2];
+ break;
+ }
+ }
+ }
+ bufptr = save_char(bufptr, xx1);
}
} else if (str[0] == '$' && str[1] == '<') { /* discard padding */
str += 2;
@@ -703,7 +707,8 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
&& ((in0 == 4 && in1 == 10 && in2 == 48)
|| (in0 == 3 && in1 == 9 && in2 == 38))) {
/* dumb-down an optimized case from xterm-256color for termcap */
- str = strstr(str, ";m");
+ if ((str = strstr(str, ";m")) == 0)
+ break; /* cannot happen */
++str;
if (in2 == 48) {
bufptr = save_string(bufptr, "[48;5;%dm");
@@ -720,13 +725,13 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_tc_inequality(bufptr, c1, c2);
} else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1, &ch2) == 2) {
str = strchr(str, ';');
- bufptr = save_tc_inequality(bufptr, c1, c2);
+ bufptr = save_tc_inequality(bufptr, c1, ch2);
} else if (sscanf(str, "%%?%%'%c'%%>%%t%%{%d}%%+%%;", &ch1, &c2) == 2) {
str = strchr(str, ';');
- bufptr = save_tc_inequality(bufptr, c1, c2);
+ bufptr = save_tc_inequality(bufptr, ch1, c2);
} else if (sscanf(str, "%%?%%'%c'%%>%%t%%'%c'%%+%%;", &ch1, &ch2) == 2) {
str = strchr(str, ';');
- bufptr = save_tc_inequality(bufptr, c1, c2);
+ bufptr = save_tc_inequality(bufptr, ch1, ch2);
} else if ((len = bcd_expression(str)) != 0) {
str += len;
bufptr = save_string(bufptr, "%B");
@@ -741,15 +746,15 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_tc_char(bufptr, c1);
}
/* FIXME: this "works" for 'delta' */
- else if (strncmp(str, "%{2}%*%-", 8) == 0) {
+ else if (strncmp(str, "%{2}%*%-", (size_t) 8) == 0) {
str += 7;
bufptr = save_string(bufptr, "%D");
- } else if (strncmp(str, "%{96}%^", 7) == 0) {
+ } else if (strncmp(str, "%{96}%^", (size_t) 7) == 0) {
str += 6;
if (saw_m++ == 0) {
bufptr = save_string(bufptr, "%n");
}
- } else if (strncmp(str, "%{127}%^", 8) == 0) {
+ } else if (strncmp(str, "%{127}%^", (size_t) 8) == 0) {
str += 7;
if (saw_n++ == 0) {
bufptr = save_string(bufptr, "%m");
@@ -772,8 +777,25 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
case '8':
case '9':
bufptr = save_char(bufptr, '%');
- while (isdigit(UChar(*str)))
- bufptr = save_char(bufptr, *str++);
+ ch1 = 0;
+ ch2 = 0;
+ while (isdigit(UChar(*str))) {
+ ch2 = ch1;
+ ch1 = *str++;
+ if (_nc_strict_bsd) {
+ if (ch1 > '3')
+ return 0;
+ } else {
+ bufptr = save_char(bufptr, ch1);
+ }
+ }
+ if (_nc_strict_bsd) {
+ if (ch2 != 0 && ch2 != '0')
+ return 0;
+ if (ch1 < '2')
+ ch1 = 'd';
+ bufptr = save_char(bufptr, ch1);
+ }
if (strchr("doxX.", *str)) {
if (*str != 'd') /* termcap doesn't have octal, hex */
return 0;
@@ -794,6 +816,8 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
* termcap notation.
*/
case 's':
+ if (_nc_strict_bsd)
+ return 0;
bufptr = save_string(bufptr, "%s");
break;
@@ -826,7 +850,7 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
* but that may not be the end of the string.
*/
assert(str != 0);
- if (*str == '\0')
+ if (str == 0 || *str == '\0')
break;
} /* endwhile (*str) */
diff --git a/contrib/ncurses/ncurses/tinfo/comp_error.c b/contrib/ncurses/ncurses/tinfo/comp_error.c
index 56c362a4f7dd..ff0acc799815 100644
--- a/contrib/ncurses/ncurses/tinfo/comp_error.c
+++ b/contrib/ncurses/ncurses/tinfo/comp_error.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2005,2007 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -41,7 +41,7 @@
#include <tic.h>
-MODULE_ID("$Id: comp_error.c,v 1.31 2007/04/21 23:38:32 tom Exp $")
+MODULE_ID("$Id: comp_error.c,v 1.36 2012/02/22 22:34:31 tom Exp $")
NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE;
NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */
@@ -59,7 +59,8 @@ _nc_get_source(void)
NCURSES_EXPORT(void)
_nc_set_source(const char *const name)
{
- SourceName = name;
+ FreeIfNeeded(SourceName);
+ SourceName = strdup(name);
}
NCURSES_EXPORT(void)
@@ -70,7 +71,7 @@ _nc_set_type(const char *const name)
if (TermType != 0) {
TermType[0] = '\0';
if (name)
- strncat(TermType, name, MAX_NAME_SIZE);
+ strncat(TermType, name, (size_t) MAX_NAME_SIZE);
}
}
@@ -84,7 +85,7 @@ _nc_get_type(char *name)
}
#endif
if (name != 0)
- strcpy(name, TermType != 0 ? TermType : "");
+ _nc_STRCPY(name, TermType != 0 ? TermType : "", MAX_NAME_SIZE);
}
static NCURSES_INLINE void
@@ -151,3 +152,12 @@ _nc_syserr_abort(const char *const fmt,...)
exit(EXIT_FAILURE);
#endif
}
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_comp_error_leaks(void)
+{
+ FreeAndNull(SourceName);
+ FreeAndNull(TermType);
+}
+#endif
diff --git a/contrib/ncurses/ncurses/tinfo/comp_expand.c b/contrib/ncurses/ncurses/tinfo/comp_expand.c
index 71012b6355e3..2ab06ebabc89 100644
--- a/contrib/ncurses/ncurses/tinfo/comp_expand.c
+++ b/contrib/ncurses/ncurses/tinfo/comp_expand.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free 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.21 2010/01/16 17:11:23 tom Exp $")
+MODULE_ID("$Id: comp_expand.c,v 1.25 2012/03/24 18:37:17 tom Exp $")
static int
trailing_spaces(const char *src)
@@ -49,6 +49,8 @@ trailing_spaces(const char *src)
#define REALCTL(s) (UChar(*(s)) < 127 && iscntrl(UChar(*(s))))
#define REALPRINT(s) (UChar(*(s)) < 127 && isprint(UChar(*(s))))
+#define P_LIMIT(p) (length - (size_t)(p))
+
NCURSES_EXPORT(char *)
_nc_tic_expand(const char *srcp, bool tic_format, int numbers)
{
@@ -61,15 +63,15 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers)
size_t need = (2 + strlen(str)) * 4;
int ch;
-#if NO_LEAKS
if (srcp == 0) {
+#if NO_LEAKS
if (buffer != 0) {
FreeAndNull(buffer);
length = 0;
}
+#endif
return 0;
}
-#endif
if (buffer == 0 || need > length) {
if ((buffer = typeRealloc(char, length = need, buffer)) == 0)
return 0;
@@ -90,7 +92,8 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers)
&& str[1] != '\\'
&& REALPRINT(str + 1)
&& str[2] == S_QUOTE) {
- sprintf(buffer + bufp, "{%d}", str[1]);
+ _nc_SPRINTF(buffer + bufp, _nc_SLIMIT(P_LIMIT(bufp))
+ "{%d}", str[1]);
bufp += (int) strlen(buffer + bufp);
str += 2;
} else {
@@ -177,10 +180,12 @@ _nc_tic_expand(const char *srcp, bool tic_format, int numbers)
#define UnCtl(c) ((c) + '@')
else if (REALCTL(str) && ch != '\\'
&& (!islong || isdigit(UChar(str[1])))) {
- (void) sprintf(&buffer[bufp], "^%c", UnCtl(ch));
+ _nc_SPRINTF(&buffer[bufp], _nc_SLIMIT(P_LIMIT(bufp))
+ "^%c", UnCtl(ch));
bufp += 2;
} else {
- (void) sprintf(&buffer[bufp], "\\%03o", ch);
+ _nc_SPRINTF(&buffer[bufp], _nc_SLIMIT(P_LIMIT(bufp))
+ "\\%03o", ch);
bufp += 4;
}
diff --git a/contrib/ncurses/ncurses/tinfo/comp_parse.c b/contrib/ncurses/ncurses/tinfo/comp_parse.c
index 8204d75a8193..82a61a52e35d 100644
--- a/contrib/ncurses/ncurses/tinfo/comp_parse.c
+++ b/contrib/ncurses/ncurses/tinfo/comp_parse.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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,15 +35,10 @@
/*
* comp_parse.c -- parser driver loop and use handling.
*
- * _nc_read_entry_source(FILE *, literal, bool, bool (*hook)())
- * _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_uses2(). To free the list
* storage, do _nc_free_entries().
- *
*/
#include <curses.priv.h>
@@ -52,7 +47,7 @@
#include <tic.h>
-MODULE_ID("$Id: comp_parse.c,v 1.73 2010/12/25 23:06:37 tom Exp $")
+MODULE_ID("$Id: comp_parse.c,v 1.90 2013/08/31 15:22:31 tom Exp $")
static void sanity_check2(TERMTYPE *, bool);
NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanity_check2;
@@ -61,6 +56,8 @@ NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanit
static void sanity_check(TERMTYPE *);
NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype) (TERMTYPE *) = sanity_check;
+static void fixup_acsc(TERMTYPE *, int);
+
static void
enqueue(ENTRY * ep)
/* add an entry to the in-core list */
@@ -86,16 +83,28 @@ force_bar(char *dst, char *src)
if (len > MAX_NAME_SIZE)
len = MAX_NAME_SIZE;
(void) strncpy(dst, src, len);
- (void) strcpy(dst + len, "|");
+ _nc_STRCPY(dst + len, "|", MAX_NAME_SIZE);
src = dst;
}
return src;
}
#define ForceBar(dst, src) ((strchr(src, '|') == 0) ? force_bar(dst, src) : src)
-NCURSES_EXPORT(bool)
-_nc_entry_match(char *n1, char *n2)
-/* do any of the aliases in a pair of terminal names match? */
+#if NCURSES_USE_TERMCAP && NCURSES_XNAMES
+static char *
+skip_index(char *name)
+{
+ char *bar = strchr(name, '|');
+
+ if (bar != 0 && (bar - name) == 2)
+ name = bar + 1;
+
+ return name;
+}
+#endif
+
+static bool
+check_collisions(char *n1, char *n2, int counter)
{
char *pstart, *qstart, *pend, *qend;
char nc1[MAX_NAME_SIZE + 2];
@@ -104,15 +113,95 @@ _nc_entry_match(char *n1, char *n2)
n1 = ForceBar(nc1, n1);
n2 = ForceBar(nc2, n2);
- for (pstart = n1; (pend = strchr(pstart, '|')); pstart = pend + 1)
- for (qstart = n2; (qend = strchr(qstart, '|')); qstart = qend + 1)
+#if NCURSES_USE_TERMCAP && NCURSES_XNAMES
+ if ((_nc_syntax == SYN_TERMCAP) && _nc_user_definable) {
+ n1 = skip_index(n1);
+ n2 = skip_index(n2);
+ }
+#endif
+
+ for (pstart = n1; (pend = strchr(pstart, '|')); pstart = pend + 1) {
+ for (qstart = n2; (qend = strchr(qstart, '|')); qstart = qend + 1) {
if ((pend - pstart == qend - qstart)
- && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0)
+ && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0) {
+ if (counter > 0)
+ (void) fprintf(stderr, "Name collision '%.*s' between\n",
+ (int) (pend - pstart), pstart);
return (TRUE);
+ }
+ }
+ }
return (FALSE);
}
+static char *
+next_name(char *name)
+{
+ if (*name != '\0')
+ ++name;
+ return name;
+}
+
+static char *
+name_ending(char *name)
+{
+ if (*name == '\0') {
+ name = 0;
+ } else {
+ while (*name != '\0' && *name != '|')
+ ++name;
+ }
+ return name;
+}
+
+/*
+ * Essentially, find the conflict reported in check_collisions() and remove
+ * it from the second name, unless that happens to be the last alias.
+ */
+static bool
+remove_collision(char *n1, char *n2)
+{
+ char *p2 = n2;
+ char *pstart, *qstart, *pend, *qend;
+ bool removed = FALSE;
+
+#if NCURSES_USE_TERMCAP && NCURSES_XNAMES
+ if ((_nc_syntax == SYN_TERMCAP) && _nc_user_definable) {
+ n1 = skip_index(n1);
+ p2 = n2 = skip_index(n2);
+ }
+#endif
+
+ for (pstart = n1; (pend = name_ending(pstart)); pstart = next_name(pend)) {
+ for (qstart = n2; (qend = name_ending(qstart)); qstart = next_name(qend)) {
+ if ((pend - pstart == qend - qstart)
+ && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0) {
+ if (qstart != p2 || *qend == '|') {
+ if (*qend == '|')
+ ++qend;
+ while ((*qstart++ = *qend++) != '\0') ;
+ fprintf(stderr, "...now\t%s\n", p2);
+ } else {
+ fprintf(stderr, "Cannot remove alias '%.*s'\n",
+ (int) (qend - qstart), qstart);
+ }
+ removed = TRUE;
+ break;
+ }
+ }
+ }
+
+ return removed;
+}
+
+/* do any of the aliases in a pair of terminal names match? */
+NCURSES_EXPORT(bool)
+_nc_entry_match(char *n1, char *n2)
+{
+ return check_collisions(n1, n2, 0);
+}
+
/****************************************************************************
*
* Entry compiler and resolution logic
@@ -198,19 +287,19 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
for_entry_list(rp) {
if (qp > rp
- && _nc_entry_match(qp->tterm.term_names, rp->tterm.term_names)) {
- matchcount++;
- if (matchcount == 1) {
- (void) fprintf(stderr, "Name collision between %s",
- _nc_first_name(qp->tterm.term_names));
- multiples++;
+ && check_collisions(qp->tterm.term_names,
+ rp->tterm.term_names,
+ matchcount + 1)) {
+ if (!matchcount++) {
+ (void) fprintf(stderr, "\t%s\n", rp->tterm.term_names);
+ }
+ (void) fprintf(stderr, "and\t%s\n", qp->tterm.term_names);
+ if (!remove_collision(rp->tterm.term_names,
+ qp->tterm.term_names)) {
+ ++multiples;
}
- if (matchcount >= 1)
- (void) fprintf(stderr, " %s", _nc_first_name(rp->tterm.term_names));
}
}
- if (matchcount >= 1)
- (void) putc('\n', stderr);
}
if (multiples > 0)
return (FALSE);
@@ -256,9 +345,7 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
DEBUG(2, ("%s: resolving use=%s (compiled)",
child, lookfor));
- rp = typeMalloc(ENTRY, 1);
- if (rp == 0)
- _nc_err_abort(MSG_NO_MEMORY);
+ TYPE_MALLOC(ENTRY, 1, rp);
rp->tterm = thisterm;
rp->nuses = 0;
rp->next = lastread;
@@ -378,7 +465,34 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
for_entry_list(qp) {
_nc_curr_line = (int) qp->startline;
_nc_set_type(_nc_first_name(qp->tterm.term_names));
- _nc_check_termtype2(&qp->tterm, literal);
+ /*
+ * tic overrides this function pointer to provide more verbose
+ * checking.
+ */
+ if (_nc_check_termtype2 != sanity_check2) {
+ SCREEN *save_SP = SP;
+ SCREEN fake_sp;
+ TERMINAL fake_tm;
+ TERMINAL *save_tm = cur_term;
+
+ /*
+ * Setup so that tic can use ordinary terminfo interface
+ * to obtain capability information.
+ */
+ memset(&fake_sp, 0, sizeof(fake_sp));
+ memset(&fake_tm, 0, sizeof(fake_tm));
+ fake_sp._term = &fake_tm;
+ fake_tm.type = qp->tterm;
+ _nc_set_screen(&fake_sp);
+ set_curterm(&fake_tm);
+
+ _nc_check_termtype2(&qp->tterm, literal);
+
+ _nc_set_screen(save_SP);
+ set_curterm(save_tm);
+ } else {
+ fixup_acsc(&qp->tterm, literal);
+ }
}
DEBUG(2, ("SANITY CHECK FINISHED"));
}
@@ -403,6 +517,17 @@ _nc_resolve_uses(bool fullresolve)
#define CUR tp->
static void
+fixup_acsc(TERMTYPE *tp, int literal)
+{
+ if (!literal) {
+ if (acs_chars == 0
+ && enter_alt_charset_mode != 0
+ && exit_alt_charset_mode != 0)
+ acs_chars = strdup(VT_ACSC);
+ }
+}
+
+static void
sanity_check2(TERMTYPE *tp, bool literal)
{
if (!PRESENT(exit_attribute_mode)) {
@@ -422,16 +547,14 @@ sanity_check2(TERMTYPE *tp, bool literal)
#endif /* __UNUSED__ */
PAIRED(enter_standout_mode, exit_standout_mode);
PAIRED(enter_underline_mode, exit_underline_mode);
+ PAIRED(enter_italics_mode, exit_italics_mode);
}
/* we do this check/fix in postprocess_termcap(), but some packagers
* prefer to bypass it...
*/
if (!literal) {
- if (acs_chars == 0
- && enter_alt_charset_mode != 0
- && exit_alt_charset_mode != 0)
- acs_chars = strdup(VT_ACSC);
+ fixup_acsc(tp, literal);
ANDMISSING(enter_alt_charset_mode, acs_chars);
ANDMISSING(exit_alt_charset_mode, acs_chars);
}
diff --git a/contrib/ncurses/ncurses/tinfo/comp_scan.c b/contrib/ncurses/ncurses/tinfo/comp_scan.c
index 71af5e70e81b..13f75be8d4f7 100644
--- a/contrib/ncurses/ncurses/tinfo/comp_scan.c
+++ b/contrib/ncurses/ncurses/tinfo/comp_scan.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -52,7 +52,7 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: comp_scan.c,v 1.89 2010/12/25 23:06:37 tom Exp $")
+MODULE_ID("$Id: comp_scan.c,v 1.102 2013/11/16 19:57:50 tom Exp $")
/*
* Maximum length of string capability we'll accept before raising an error.
@@ -63,6 +63,7 @@ MODULE_ID("$Id: comp_scan.c,v 1.89 2010/12/25 23:06:37 tom Exp $")
#define iswhite(ch) (ch == ' ' || ch == '\t')
NCURSES_EXPORT_VAR (int) _nc_syntax = 0; /* termcap or terminfo? */
+NCURSES_EXPORT_VAR (int) _nc_strict_bsd = 1; /* ncurses extended termcap? */
NCURSES_EXPORT_VAR (long) _nc_curr_file_pos = 0; /* file offset of current line */
NCURSES_EXPORT_VAR (long) _nc_comment_start = 0; /* start of comment range before name */
NCURSES_EXPORT_VAR (long) _nc_comment_end = 0; /* end of comment range before name */
@@ -129,14 +130,19 @@ _nc_reset_input(FILE *fp, char *buf)
* Returns the final nonblank character on the current input buffer
*/
static int
-last_char(void)
+last_char(int from_end)
{
size_t len = strlen(bufptr);
+ int result = 0;
+
while (len--) {
- if (!isspace(UChar(bufptr[len])))
- return bufptr[len];
+ if (!isspace(UChar(bufptr[len]))) {
+ if (from_end < (int) len)
+ result = bufptr[(int) len - from_end];
+ break;
+ }
}
- return 0;
+ return result;
}
/*
@@ -197,7 +203,8 @@ next_char(void)
result = typeRealloc(char, allocated, result);
if (result == 0)
return (EOF);
- bufstart = result;
+ if (bufstart)
+ bufstart = result;
}
if (used == 0)
_nc_curr_file_pos = ftell(yyin);
@@ -214,7 +221,7 @@ next_char(void)
}
} else {
if (used != 0)
- strcat(result, "\n");
+ _nc_STRCAT(result, "\n", allocated);
}
if ((bufptr = bufstart) != 0) {
used = strlen(bufptr);
@@ -258,12 +265,12 @@ next_char(void)
}
static void
-push_back(char c)
+push_back(int c)
/* push a character back onto the input stream */
{
if (bufptr == bufstart)
_nc_syserr_abort("Can't backspace off beginning of line");
- *--bufptr = c;
+ *--bufptr = (char) c;
_nc_curr_col--;
}
@@ -301,6 +308,8 @@ eat_escaped_newline(int ch)
*tok_ptr++ = (char) ch; \
*tok_ptr = '\0'
+static char *tok_buf;
+
/*
* int
* get_token()
@@ -338,15 +347,14 @@ NCURSES_EXPORT(int)
_nc_get_token(bool silent)
{
static const char terminfo_punct[] = "@%&*!#";
- static char *tok_buf;
- char *after_list;
- char *after_name;
+ char *after_name; /* after primary name */
+ char *after_list; /* after primary and alias list */
char *numchk;
char *tok_ptr;
char *s;
char numbuf[80];
- int ch;
+ int ch, c0, c1;
int dot_flag = FALSE;
int type;
long number;
@@ -374,11 +382,10 @@ _nc_get_token(bool silent)
if (end_of_stream()) {
yyin = 0;
- next_char(); /* frees its allocated memory */
+ (void) next_char(); /* frees its allocated memory */
if (tok_buf != 0) {
if (_nc_curr_token.tk_name == tok_buf)
_nc_curr_token.tk_name = 0;
- FreeAndNull(tok_buf);
}
return (EOF);
}
@@ -392,6 +399,7 @@ _nc_get_token(bool silent)
}
ch = eat_escaped_newline(ch);
+ _nc_curr_token.tk_valstring = 0;
#ifdef TRACE
old_line = _nc_curr_line;
@@ -426,7 +434,7 @@ _nc_get_token(bool silent)
#if NCURSES_EXT_FUNCS
&& !(ch == '.' && _nc_disable_period)
#endif
- && !strchr(terminfo_punct, (char) ch)) {
+ && ((strchr) (terminfo_punct, (char) ch) == 0)) {
if (!silent)
_nc_warning("Illegal character (expected alphanumeric or %s) - '%s'",
terminfo_punct, unctrl(UChar(ch)));
@@ -459,7 +467,7 @@ _nc_get_token(bool silent)
after_list = tok_ptr;
if (after_name == 0)
after_name = tok_ptr;
- } else if (ch == ':' && last_char() != ',') {
+ } else if (ch == ':' && last_char(0) != ',') {
_nc_syntax = SYN_TERMCAP;
separator = ':';
break;
@@ -473,12 +481,64 @@ _nc_get_token(bool silent)
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.
+ * We saw a comma, but are not entirely sure this is
+ * terminfo format, since we can still be parsing the
+ * description field (for either syntax).
+ *
+ * A properly formatted termcap line ends with either a
+ * colon, or a backslash after a colon. It is possible
+ * to have a backslash in the middle of a capability, but
+ * then there would be no leading whitespace on the next
+ * line - something we want to discourage.
*/
+ c0 = last_char(0);
+ c1 = last_char(1);
+ if (c1 != ':' && c0 != '\\' && c0 != ':') {
+ bool capability = FALSE;
+
+ /*
+ * Since it is not termcap, assume the line is terminfo
+ * format. However, the comma can be embedded in a
+ * description field. It also can be a separator
+ * between a description field and a capability.
+ *
+ * Improve the guess by checking if the next word after
+ * the comma does not look like a capability. In that
+ * case, extend the description past the comma.
+ */
+ for (s = bufptr; isspace(UChar(*s)); ++s) {
+ ;
+ }
+ if (islower(UChar(*s))) {
+ char *name = s;
+ while (isalnum(UChar(*s))) {
+ ++s;
+ }
+ if (*s == '#' || *s == '=' || *s == '@') {
+ /*
+ * Checking solely with syntax allows us to
+ * support extended capabilities with string
+ * values.
+ */
+ capability = TRUE;
+ } else if (*s == ',') {
+ c0 = *s;
+ *s = '\0';
+ /*
+ * Otherwise, we can handle predefined boolean
+ * capabilities, still aided by syntax.
+ */
+ if (_nc_find_entry(name,
+ _nc_get_hash_table(FALSE))) {
+ capability = TRUE;
+ }
+ *s = (char) c0;
+ }
+ }
+ if (capability) {
+ break;
+ }
+ }
} else
ch = eat_escaped_newline(ch);
@@ -752,7 +812,7 @@ _nc_trans_string(char *ptr, char *last)
if (!(is7bits(c) && isprint(c))) {
_nc_warning("Illegal ^ character - '%s'", unctrl(UChar(c)));
}
- if (c == '?') {
+ if (c == '?' && (_nc_syntax != SYN_TERMCAP)) {
*(ptr++) = '\177';
if (_nc_tracing)
_nc_warning("Allow ^? as synonym for \\177");
@@ -762,23 +822,29 @@ _nc_trans_string(char *ptr, char *last)
*(ptr++) = (char) (c);
}
} else if (c == '\\') {
+ bool strict_bsd = ((_nc_syntax == SYN_TERMCAP) && _nc_strict_bsd);
+
c = next_char();
if (c == EOF)
_nc_err_abort(MSG_NO_INPUTS);
- if (c >= '0' && c <= '7') {
+#define isoctal(c) ((c) >= '0' && (c) <= '7')
+
+ if (isoctal(c) || (strict_bsd && isdigit(c))) {
number = c - '0';
for (i = 0; i < 2; i++) {
c = next_char();
if (c == EOF)
_nc_err_abort(MSG_NO_INPUTS);
- if (c < '0' || c > '7') {
+ if (!isoctal(c)) {
if (isdigit(c)) {
- _nc_warning("Non-octal digit `%c' in \\ sequence", c);
- /* allow the digit; it'll do less harm */
+ if (!strict_bsd) {
+ _nc_warning("Non-octal digit `%c' in \\ sequence", c);
+ /* allow the digit; it'll do less harm */
+ }
} else {
- push_back((char) c);
+ push_back(c);
break;
}
}
@@ -786,21 +852,16 @@ _nc_trans_string(char *ptr, char *last)
number = number * 8 + c - '0';
}
- if (number == 0)
+ number = UChar(number);
+ if (number == 0 && !strict_bsd)
number = 0200;
*(ptr++) = (char) number;
} else {
switch (c) {
case 'E':
- case 'e':
*(ptr++) = '\033';
break;
- case 'a':
- *(ptr++) = '\007';
- break;
-
- case 'l':
case 'n':
*(ptr++) = '\n';
break;
@@ -813,10 +874,6 @@ _nc_trans_string(char *ptr, char *last)
*(ptr++) = '\010';
break;
- case 's':
- *(ptr++) = ' ';
- break;
-
case 'f':
*(ptr++) = '\014';
break;
@@ -837,16 +894,33 @@ _nc_trans_string(char *ptr, char *last)
*(ptr++) = ',';
break;
- case ':':
- *(ptr++) = ':';
- break;
-
case '\n':
continue;
default:
- _nc_warning("Illegal character '%s' in \\ sequence",
- unctrl(UChar(c)));
+ if ((_nc_syntax == SYN_TERMINFO) || !_nc_strict_bsd) {
+ switch (c) {
+ case 'a':
+ c = '\007';
+ break;
+ case 'e':
+ c = '\033';
+ break;
+ case 'l':
+ c = '\n';
+ break;
+ case 's':
+ c = ' ';
+ break;
+ case ':':
+ c = ':';
+ break;
+ default:
+ _nc_warning("Illegal character '%s' in \\ sequence",
+ unctrl(UChar(c)));
+ break;
+ }
+ }
/* FALLTHRU */
case '|':
*(ptr++) = (char) c;
@@ -866,7 +940,7 @@ _nc_trans_string(char *ptr, char *last)
if (!ignored) {
if (_nc_curr_col <= 1) {
- push_back((char) c);
+ push_back(c);
c = '\n';
break;
}
@@ -938,5 +1012,8 @@ _nc_comp_scan_leaks(void)
if (pushname != 0) {
FreeAndNull(pushname);
}
+ if (tok_buf != 0) {
+ FreeAndNull(tok_buf);
+ }
}
#endif
diff --git a/contrib/ncurses/ncurses/tinfo/db_iterator.c b/contrib/ncurses/ncurses/tinfo/db_iterator.c
index 82665cb54be6..a14fb2161e01 100644
--- a/contrib/ncurses/ncurses/tinfo/db_iterator.c
+++ b/contrib/ncurses/ncurses/tinfo/db_iterator.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2012,2013 Free 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,13 +36,142 @@
#include <curses.priv.h>
+#include <time.h>
#include <tic.h>
-MODULE_ID("$Id: db_iterator.c,v 1.9 2010/12/25 23:00:25 tom Exp $")
+#if USE_HASHED_DB
+#include <hashed_db.h>
+#endif
+
+MODULE_ID("$Id: db_iterator.c,v 1.38 2013/12/14 21:23:20 tom Exp $")
#define HaveTicDirectory _nc_globals.have_tic_directory
#define KeepTicDirectory _nc_globals.keep_tic_directory
#define TicDirectory _nc_globals.tic_directory
+#define my_blob _nc_globals.dbd_blob
+#define my_list _nc_globals.dbd_list
+#define my_size _nc_globals.dbd_size
+#define my_time _nc_globals.dbd_time
+#define my_vars _nc_globals.dbd_vars
+
+static void
+add_to_blob(const char *text, size_t limit)
+{
+ (void) limit;
+
+ if (*text != '\0') {
+ char *last = my_blob + strlen(my_blob);
+ if (last != my_blob)
+ *last++ = NCURSES_PATHSEP;
+ _nc_STRCPY(last, text, limit);
+ }
+}
+
+static bool
+check_existence(const char *name, struct stat *sb)
+{
+ bool result = FALSE;
+
+ if (stat(name, sb) == 0
+ && (S_ISDIR(sb->st_mode) || S_ISREG(sb->st_mode))) {
+ result = TRUE;
+ }
+#if USE_HASHED_DB
+ else if (strlen(name) < PATH_MAX - sizeof(DBM_SUFFIX)) {
+ char temp[PATH_MAX];
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "%s%s", name, DBM_SUFFIX);
+ if (stat(temp, sb) == 0 && S_ISREG(sb->st_mode)) {
+ result = TRUE;
+ }
+ }
+#endif
+ return result;
+}
+
+/*
+ * Store the latest value of an environment variable in my_vars[] so we can
+ * detect if one changes, invalidating the cached search-list.
+ */
+static bool
+update_getenv(const char *name, DBDIRS which)
+{
+ bool result = FALSE;
+
+ if (which < dbdLAST) {
+ char *value;
+
+ if ((value = getenv(name)) == 0 || (value = strdup(value)) == 0) {
+ ;
+ } else if (my_vars[which].name == 0 || strcmp(my_vars[which].name, name)) {
+ FreeIfNeeded(my_vars[which].value);
+ my_vars[which].name = name;
+ my_vars[which].value = value;
+ result = TRUE;
+ } else if ((my_vars[which].value != 0) ^ (value != 0)) {
+ FreeIfNeeded(my_vars[which].value);
+ my_vars[which].value = value;
+ result = TRUE;
+ } else if (value != 0 && strcmp(value, my_vars[which].value)) {
+ FreeIfNeeded(my_vars[which].value);
+ my_vars[which].value = value;
+ result = TRUE;
+ } else {
+ free(value);
+ }
+ }
+ return result;
+}
+
+static char *
+cache_getenv(const char *name, DBDIRS which)
+{
+ char *result = 0;
+
+ (void) update_getenv(name, which);
+ if (which < dbdLAST) {
+ result = my_vars[which].value;
+ }
+ return result;
+}
+
+/*
+ * The cache expires if at least a second has passed since the initial lookup,
+ * or if one of the environment variables changed.
+ *
+ * Only a few applications use multiple lookups of terminal entries, seems that
+ * aside from bulk I/O such as tic and toe, that leaves interactive programs
+ * which should not be modifying the terminal databases in a way that would
+ * invalidate the search-list.
+ *
+ * The "1-second" is to allow for user-directed changes outside the program.
+ */
+static bool
+cache_expired(void)
+{
+ bool result = FALSE;
+ time_t now = time((time_t *) 0);
+
+ if (now > my_time) {
+ result = TRUE;
+ } else {
+ DBDIRS n;
+ for (n = (DBDIRS) 0; n < dbdLAST; ++n) {
+ if (my_vars[n].name != 0
+ && update_getenv(my_vars[n].name, n)) {
+ result = TRUE;
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+static void
+free_cache(void)
+{
+ FreeAndNull(my_blob);
+ FreeAndNull(my_list);
+}
/*
* Record the "official" location of the terminfo directory, according to
@@ -51,17 +180,20 @@ MODULE_ID("$Id: db_iterator.c,v 1.9 2010/12/25 23:00:25 tom Exp $")
NCURSES_EXPORT(const char *)
_nc_tic_dir(const char *path)
{
+ T(("_nc_tic_dir %s", NonNull(path)));
if (!KeepTicDirectory) {
if (path != 0) {
TicDirectory = path;
HaveTicDirectory = TRUE;
- } else if (!HaveTicDirectory && use_terminfo_vars()) {
- char *envp;
- if ((envp = getenv("TERMINFO")) != 0)
- return _nc_tic_dir(envp);
+ } else if (HaveTicDirectory == 0) {
+ if (use_terminfo_vars()) {
+ char *envp;
+ if ((envp = getenv("TERMINFO")) != 0)
+ return _nc_tic_dir(envp);
+ }
}
}
- return TicDirectory;
+ return TicDirectory ? TicDirectory : TERMINFO;
}
/*
@@ -77,61 +209,16 @@ _nc_keep_tic_dir(const char *path)
}
/*
- * Process the list of :-separated directories, looking for the terminal type.
- * We don't use strtok because it does not show us empty tokens.
- */
-#define ThisDbList _nc_globals.dbi_list
-#define ThisDbSize _nc_globals.dbi_size
-
-/*
* Cleanup.
*/
NCURSES_EXPORT(void)
_nc_last_db(void)
{
- if (ThisDbList != 0) {
- FreeAndNull(ThisDbList);
+ if (my_blob != 0 && cache_expired()) {
+ free_cache();
}
- ThisDbSize = 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(ThisDbList);
- ThisDbList = strdup(source);
- ThisDbSize = (int) strlen(source);
- }
-
- if (ThisDbList != 0 && ThisDbSize && *offset < ThisDbSize) {
- static char system_db[] = TERMINFO;
- char *result = ThisDbList + *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 += (int) strlen(result);
- } else {
- *marker++ = 0;
- *offset = (int) (marker - ThisDbList);
- }
- if (*result == 0 && result != (ThisDbList + ThisDbSize))
- 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
@@ -141,84 +228,186 @@ 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);
+ (void) offset;
+ if ((int) *state < my_size
+ && my_list != 0
+ && my_list[*state] != 0) {
+ result = my_list[*state];
+ (*state)++;
+ } else {
result = 0;
+ }
+ if (result != 0) {
+ T(("_nc_next_db %d %s", *state, result));
+ }
+ return result;
+}
- switch (*state) {
- case dbdTIC:
- if (HaveTicDirectory)
- 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:
+NCURSES_EXPORT(void)
+_nc_first_db(DBDIRS * state, int *offset)
+{
+ bool cache_has_expired = FALSE;
+ *state = dbdTIC;
+ *offset = 0;
+
+ T(("_nc_first_db"));
+
+ /* build a blob containing all of the strings we will use for a lookup
+ * table.
+ */
+ if (my_blob == 0 || (cache_has_expired = cache_expired())) {
+ size_t blobsize = 0;
+ const char *values[dbdLAST];
+ struct stat *my_stat;
+ int j, k;
+
+ if (cache_has_expired)
+ free_cache();
+
+ for (j = 0; j < dbdLAST; ++j)
+ values[j] = 0;
+
+ /*
+ * This is the first item in the list, and is used only when tic is
+ * writing to the database, as a performance improvement.
+ */
+ values[dbdTIC] = TicDirectory;
+
+#if NCURSES_USE_DATABASE
#ifdef TERMINFO_DIRS
- if ((result = NEXT_DBD(TERMINFO_DIRS, offset)) != 0)
- next = *state;
+ values[dbdCfgList] = TERMINFO_DIRS;
#endif
- break;
- case dbdCfgOnce:
-#ifndef TERMINFO_DIRS
- result = TERMINFO;
+#ifdef TERMINFO
+ values[dbdCfgOnce] = 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;
+#endif
+
+#if NCURSES_USE_TERMCAP
+ values[dbdCfgList2] = TERMPATH;
+#endif
+
+ if (use_terminfo_vars()) {
+#if NCURSES_USE_DATABASE
+ values[dbdEnvOnce] = cache_getenv("TERMINFO", dbdEnvOnce);
+ values[dbdHome] = _nc_home_terminfo();
+ (void) cache_getenv("HOME", dbdHome);
+ values[dbdEnvList] = cache_getenv("TERMINFO_DIRS", dbdEnvList);
+
+#endif
+#if NCURSES_USE_TERMCAP
+ values[dbdEnvOnce2] = cache_getenv("TERMCAP", dbdEnvOnce2);
+ /* only use $TERMCAP if it is an absolute path */
+ if (values[dbdEnvOnce2] != 0
+ && *values[dbdEnvOnce2] != '/') {
+ values[dbdEnvOnce2] = 0;
}
- break;
- case dbdCfgList2:
- if ((result = NEXT_DBD(TERMPATH, offset)) != 0)
- next = *state;
- break;
-#endif /* USE_TERMCAP */
- case dbdLAST:
- break;
+ values[dbdEnvList2] = cache_getenv("TERMPATH", dbdEnvList2);
+#endif /* NCURSES_USE_TERMCAP */
}
- if (*state != next) {
- *state = next;
- *offset = 0;
- _nc_last_db();
+
+ for (j = 0; j < dbdLAST; ++j) {
+ if (values[j] == 0)
+ values[j] = "";
+ blobsize += 2 + strlen(values[j]);
}
- if (result != 0) {
- return result;
+
+ my_blob = malloc(blobsize);
+ if (my_blob != 0) {
+ *my_blob = '\0';
+ for (j = 0; j < dbdLAST; ++j) {
+ add_to_blob(values[j], blobsize);
+ }
+
+ /* Now, build an array which will be pointers to the distinct
+ * strings in the blob.
+ */
+ blobsize = 2;
+ for (j = 0; my_blob[j] != '\0'; ++j) {
+ if (my_blob[j] == NCURSES_PATHSEP)
+ ++blobsize;
+ }
+ my_list = typeCalloc(char *, blobsize);
+ my_stat = typeCalloc(struct stat, blobsize);
+ if (my_list != 0 && my_stat != 0) {
+ k = 0;
+ my_list[k++] = my_blob;
+ for (j = 0; my_blob[j] != '\0'; ++j) {
+ if (my_blob[j] == NCURSES_PATHSEP) {
+ my_blob[j] = '\0';
+ my_list[k++] = &my_blob[j + 1];
+ }
+ }
+
+ /*
+ * Eliminate duplicates from the list.
+ */
+ for (j = 0; my_list[j] != 0; ++j) {
+#ifdef TERMINFO
+ if (*my_list[j] == '\0')
+ my_list[j] = strdup(TERMINFO);
+#endif
+ for (k = 0; k < j; ++k) {
+ if (!strcmp(my_list[j], my_list[k])) {
+ k = j - 1;
+ while ((my_list[j] = my_list[j + 1]) != 0) {
+ ++j;
+ }
+ j = k;
+ break;
+ }
+ }
+ }
+
+ /*
+ * Eliminate non-existent databases, and those that happen to
+ * be symlinked to another location.
+ */
+ for (j = 0; my_list[j] != 0; ++j) {
+ bool found = check_existence(my_list[j], &my_stat[j]);
+#if HAVE_LINK
+ if (found) {
+ for (k = 0; k < j; ++k) {
+ if (my_stat[j].st_dev == my_stat[k].st_dev
+ && my_stat[j].st_ino == my_stat[k].st_ino) {
+ found = FALSE;
+ break;
+ }
+ }
+ }
+#endif
+ if (!found) {
+ k = j;
+ while ((my_list[k] = my_list[k + 1]) != 0) {
+ ++k;
+ }
+ --j;
+ }
+ }
+ my_size = j;
+ my_time = time((time_t *) 0);
+ } else {
+ FreeAndNull(my_blob);
+ }
+ free(my_stat);
}
}
- return 0;
}
-NCURSES_EXPORT(void)
-_nc_first_db(DBDIRS * state, int *offset)
+#if NO_LEAKS
+void
+_nc_db_iterator_leaks(void)
{
- *state = dbdTIC;
- *offset = 0;
+ DBDIRS which;
+
+ if (my_blob != 0)
+ FreeAndNull(my_blob);
+ if (my_list != 0)
+ FreeAndNull(my_list);
+ for (which = 0; (int) which < dbdLAST; ++which) {
+ my_vars[which].name = 0;
+ FreeIfNeeded(my_vars[which].value);
+ my_vars[which].value = 0;
+ }
}
+#endif
diff --git a/contrib/ncurses/ncurses/tinfo/doalloc.c b/contrib/ncurses/ncurses/tinfo/doalloc.c
index fe2a009d19b4..7c502b09f9c1 100644
--- a/contrib/ncurses/ncurses/tinfo/doalloc.c
+++ b/contrib/ncurses/ncurses/tinfo/doalloc.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2000,2012 Free 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: doalloc.c,v 1.8 2002/08/31 21:48:11 Philippe.Blain Exp $")
+MODULE_ID("$Id: doalloc.c,v 1.11 2012/11/03 19:27:41 tom Exp $")
NCURSES_EXPORT(void *)
_nc_doalloc(void *oldp, size_t amount)
@@ -56,20 +56,3 @@ _nc_doalloc(void *oldp, size_t amount)
}
return newp;
}
-
-#if !HAVE_STRDUP
-NCURSES_EXPORT(char *)
-_nc_strdup(const char *src)
-{
- char *dst;
- if (src != 0) {
- dst = typeMalloc(char, strlen(src) + 1);
- if (dst != 0) {
- (void) strcpy(dst, src);
- }
- } else {
- dst = 0;
- }
- return dst;
-}
-#endif
diff --git a/contrib/ncurses/ncurses/tinfo/entries.c b/contrib/ncurses/ncurses/tinfo/entries.c
index b1e14a803f31..e84033d47f1d 100644
--- a/contrib/ncurses/ncurses/tinfo/entries.c
+++ b/contrib/ncurses/ncurses/tinfo/entries.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include <tic.h>
-MODULE_ID("$Id: entries.c,v 1.17 2010/01/23 17:57:43 tom Exp $")
+MODULE_ID("$Id: entries.c,v 1.21 2012/05/05 20:33:44 tom Exp $")
/****************************************************************************
*
@@ -96,6 +96,9 @@ _nc_delink_entry(ENTRY * headp, TERMTYPE *tterm)
if (last != 0) {
last->next = ep->next;
}
+ if (ep->next != 0) {
+ ep->next->last = last;
+ }
if (ep == _nc_head) {
_nc_head = ep->next;
}
@@ -128,19 +131,21 @@ _nc_leaks_tinfo(void)
_nc_free_entries(_nc_head);
_nc_get_type(0);
_nc_first_name(0);
+ _nc_db_iterator_leaks();
_nc_keyname_leaks();
#if BROKEN_LINKER || USE_REENTRANT
_nc_names_leaks();
_nc_codes_leaks();
FreeIfNeeded(_nc_prescreen.real_acs_map);
#endif
+ _nc_comp_error_leaks();
if ((s = _nc_home_terminfo()) != 0)
free(s);
#ifdef TRACE
trace(0);
- _nc_trace_buf(-1, 0);
+ _nc_trace_buf(-1, (size_t) 0);
#endif
#endif /* NO_LEAKS */
diff --git a/contrib/ncurses/ncurses/tinfo/getenv_num.c b/contrib/ncurses/ncurses/tinfo/getenv_num.c
index a90cc08d297c..d5e35cb46638 100644
--- a/contrib/ncurses/ncurses/tinfo/getenv_num.c
+++ b/contrib/ncurses/ncurses/tinfo/getenv_num.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: getenv_num.c,v 1.3 2000/12/10 02:55:07 tom Exp $")
+MODULE_ID("$Id: getenv_num.c,v 1.6 2013/09/28 20:25:08 tom Exp $")
NCURSES_EXPORT(int)
_nc_getenv_num(const char *name)
@@ -54,3 +54,20 @@ _nc_getenv_num(const char *name)
return (int) value;
}
+
+NCURSES_EXPORT(void)
+_nc_setenv_num(const char *name, int value)
+{
+ if (name != 0 && value >= 0) {
+ char buffer[128];
+#if HAVE_SETENV
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "%d", value);
+ setenv(name, buffer, 1);
+#elif HAVE_PUTENV
+ char *s;
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "%s=%d", name, value);
+ if ((s = strdup(buffer)) != 0)
+ putenv(s);
+#endif
+ }
+}
diff --git a/contrib/ncurses/ncurses/tinfo/hashed_db.c b/contrib/ncurses/ncurses/tinfo/hashed_db.c
index bf7a968ee96d..b59420585eac 100644
--- a/contrib/ncurses/ncurses/tinfo/hashed_db.c
+++ b/contrib/ncurses/ncurses/tinfo/hashed_db.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2006,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2011,2013 Free 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,81 @@
#if USE_HASHED_DB
-MODULE_ID("$Id: hashed_db.c,v 1.14 2008/12/13 20:59:02 tom Exp $")
+MODULE_ID("$Id: hashed_db.c,v 1.17 2013/12/15 00:33:01 tom Exp $")
#if HASHED_DB_API >= 2
static DBC *cursor;
#endif
+typedef struct _myconn {
+ struct _myconn *next;
+ DB *db;
+ char *path;
+ bool modify;
+} MYCONN;
+
+static MYCONN *connections;
+
+static void
+cleanup(void)
+{
+ while (connections != 0) {
+ _nc_db_close(connections->db);
+ }
+}
+
+static DB *
+find_connection(const char *path, bool modify)
+{
+ DB *result = 0;
+ MYCONN *p;
+
+ for (p = connections; p != 0; p = p->next) {
+ if (!strcmp(p->path, path) && p->modify == modify) {
+ result = p->db;
+ break;
+ }
+ }
+
+ return result;
+}
+
+static void
+drop_connection(DB * db)
+{
+ MYCONN *p, *q;
+
+ for (p = connections, q = 0; p != 0; q = p, p = p->next) {
+ if (p->db == db) {
+ if (q != 0)
+ q->next = p->next;
+ else
+ connections = p->next;
+ free(p->path);
+ free(p);
+ break;
+ }
+ }
+}
+
+static void
+make_connection(DB * db, const char *path, bool modify)
+{
+ MYCONN *p = typeCalloc(MYCONN, 1);
+
+ if (p != 0) {
+ p->db = db;
+ p->path = strdup(path);
+ p->modify = modify;
+ if (p->path != 0) {
+ p->next = connections;
+ connections = p;
+ } else {
+ free(p);
+ }
+ }
+}
+
/*
* Open the database.
*/
@@ -51,50 +120,57 @@ _nc_db_open(const char *path, bool modify)
DB *result = 0;
int code;
+ if (connections == 0)
+ atexit(cleanup);
+
+ if ((result = find_connection(path, modify)) == 0) {
+
#if HASHED_DB_API >= 4
- db_create(&result, NULL, 0);
- if ((code = result->open(result,
- NULL,
- path,
- NULL,
- DB_HASH,
- modify ? DB_CREATE : DB_RDONLY,
- 0644)) != 0) {
- result = 0;
- }
+ db_create(&result, NULL, 0);
+ if ((code = result->open(result,
+ NULL,
+ path,
+ NULL,
+ DB_HASH,
+ modify ? DB_CREATE : DB_RDONLY,
+ 0644)) != 0) {
+ result = 0;
+ }
#elif HASHED_DB_API >= 3
- db_create(&result, NULL, 0);
- if ((code = result->open(result,
- path,
- NULL,
- DB_HASH,
- modify ? DB_CREATE : DB_RDONLY,
- 0644)) != 0) {
- result = 0;
- }
+ db_create(&result, NULL, 0);
+ if ((code = result->open(result,
+ path,
+ NULL,
+ DB_HASH,
+ modify ? DB_CREATE : DB_RDONLY,
+ 0644)) != 0) {
+ result = 0;
+ }
#elif HASHED_DB_API >= 2
- if ((code = db_open(path,
- DB_HASH,
- modify ? DB_CREATE : DB_RDONLY,
- 0644,
- (DB_ENV *) 0,
- (DB_INFO *) 0,
- &result)) != 0) {
- result = 0;
- }
+ if ((code = db_open(path,
+ DB_HASH,
+ modify ? DB_CREATE : DB_RDONLY,
+ 0644,
+ (DB_ENV *) 0,
+ (DB_INFO *) 0,
+ &result)) != 0) {
+ result = 0;
+ }
#else
- if ((result = dbopen(path,
- modify ? (O_CREAT | O_RDWR) : O_RDONLY,
- 0644,
- DB_HASH,
- NULL)) == 0) {
- code = errno;
- }
+ if ((result = dbopen(path,
+ modify ? (O_CREAT | O_RDWR) : O_RDONLY,
+ 0644,
+ DB_HASH,
+ NULL)) == 0) {
+ code = errno;
+ }
#endif
- if (result != 0) {
- T(("opened %s", path));
- } else {
- T(("cannot open %s: %s", path, strerror(code)));
+ if (result != 0) {
+ make_connection(result, path, modify);
+ T(("opened %s", path));
+ } else {
+ T(("cannot open %s: %s", path, strerror(code)));
+ }
}
return result;
}
@@ -107,6 +183,7 @@ _nc_db_close(DB * db)
{
int result;
+ drop_connection(db);
#if HASHED_DB_API >= 2
result = db->close(db, 0);
#else
@@ -209,7 +286,7 @@ NCURSES_EXPORT(bool)
_nc_db_have_index(DBT * key, DBT * data, char **buffer, int *size)
{
bool result = FALSE;
- int used = data->size - 1;
+ int used = (int) data->size - 1;
char *have = (char *) data->data;
(void) key;
@@ -232,7 +309,7 @@ NCURSES_EXPORT(bool)
_nc_db_have_data(DBT * key, DBT * data, char **buffer, int *size)
{
bool result = FALSE;
- int used = data->size - 1;
+ int used = (int) data->size - 1;
char *have = (char *) data->data;
if (*have++ == 0) {
diff --git a/contrib/ncurses/ncurses/tinfo/home_terminfo.c b/contrib/ncurses/ncurses/tinfo/home_terminfo.c
index 69d69f95bf7c..e77f71c2aeb1 100644
--- a/contrib/ncurses/ncurses/tinfo/home_terminfo.c
+++ b/contrib/ncurses/ncurses/tinfo/home_terminfo.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -37,7 +37,7 @@
#include <curses.priv.h>
#include <tic.h>
-MODULE_ID("$Id: home_terminfo.c,v 1.12 2010/12/25 23:43:58 tom Exp $")
+MODULE_ID("$Id: home_terminfo.c,v 1.15 2012/10/27 21:49:14 tom Exp $")
/* ncurses extension...fall back on user's private directory */
@@ -54,10 +54,8 @@ _nc_home_terminfo(void)
if (MyBuffer == 0) {
if ((home = getenv("HOME")) != 0) {
size_t want = (strlen(home) + sizeof(PRIVATE_INFO));
- MyBuffer = typeMalloc(char, want);
- if (MyBuffer == 0)
- _nc_err_abort(MSG_NO_MEMORY);
- (void) sprintf(MyBuffer, PRIVATE_INFO, home);
+ TYPE_MALLOC(char, want, MyBuffer);
+ _nc_SPRINTF(MyBuffer, _nc_SLIMIT(want) PRIVATE_INFO, home);
}
}
result = MyBuffer;
diff --git a/contrib/ncurses/ncurses/tinfo/lib_acs.c b/contrib/ncurses/ncurses/tinfo/lib_acs.c
index d8fdedca843f..704eda5c9a29 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_acs.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_acs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_acs.c,v 1.43 2010/12/25 23:00:45 tom Exp $")
+MODULE_ID("$Id: lib_acs.c,v 1.44 2013/01/12 17:24:42 tom Exp $")
#if BROKEN_LINKER || USE_REENTRANT
#define MyBuffer _nc_prescreen.real_acs_map
@@ -169,8 +169,7 @@ NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_DCL0)
CallDriver_2(SP_PARM, initacs, real_map, fake_map);
#else
if (ena_acs != NULL) {
- TPUTS_TRACE("ena_acs");
- putp(ena_acs);
+ NCURSES_PUTP2("ena_acs", ena_acs);
}
#if NCURSES_EXT_FUNCS
/*
diff --git a/contrib/ncurses/ncurses/tinfo/lib_baudrate.c b/contrib/ncurses/ncurses/tinfo/lib_baudrate.c
index 9302f022b89c..252d03c593d8 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_baudrate.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_baudrate.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -49,7 +49,7 @@
* of the indices up to B115200 fit nicely in a 'short', allowing us to retain
* ospeed's type for compatibility.
*/
-#if (defined(__FreeBSD__) && (__FreeBSD_version < 700000)) || defined(__NetBSD__) || defined(__OpenBSD__)
+#if NCURSES_OSPEED_COMPAT && ((defined(__FreeBSD__) && (__FreeBSD_version < 700000)) || defined(__NetBSD__) || defined(__OpenBSD__))
#undef B0
#undef B50
#undef B75
@@ -79,7 +79,7 @@
#undef USE_OLD_TTY
#endif /* USE_OLD_TTY */
-MODULE_ID("$Id: lib_baudrate.c,v 1.31 2010/12/19 01:50:50 tom Exp $")
+MODULE_ID("$Id: lib_baudrate.c,v 1.34 2013/12/15 01:29:02 tom Exp $")
/*
* int
@@ -90,54 +90,55 @@ MODULE_ID("$Id: lib_baudrate.c,v 1.31 2010/12/19 01:50:50 tom Exp $")
*/
struct speed {
- int s; /* value for 'ospeed' is an index */
+ NCURSES_OSPEED s; /* values for 'ospeed' */
int sp; /* the actual speed */
};
+#define DATA(number) { B##number, number }
+
static struct speed const speeds[] =
{
- {B0, 0},
- {B50, 50},
- {B75, 75},
- {B110, 110},
- {B134, 134},
- {B150, 150},
- {B200, 200},
- {B300, 300},
- {B600, 600},
- {B1200, 1200},
- {B1800, 1800},
- {B2400, 2400},
- {B4800, 4800},
- {B9600, 9600},
+ DATA(0),
+ DATA(50),
+ DATA(75),
+ DATA(110),
+ DATA(134),
+ DATA(150),
+ DATA(200),
+ DATA(300),
+ DATA(600),
+ DATA(1200),
+ DATA(1800),
+ DATA(2400),
+ DATA(4800),
+ DATA(9600),
#ifdef B19200
- {B19200, 19200},
-#else
-#ifdef EXTA
+ DATA(19200),
+#elif defined(EXTA)
{EXTA, 19200},
#endif
-#endif
#ifdef B38400
- {B38400, 38400},
-#else
-#ifdef EXTB
+ DATA(38400),
+#elif defined(EXTB)
{EXTB, 38400},
#endif
-#endif
#ifdef B57600
- {B57600, 57600},
+ DATA(57600),
#endif
+ /* ifdef to prevent overflow when OLD_TTY is not available */
+#if !(NCURSES_OSPEED_COMPAT && defined(__FreeBSD__) && (__FreeBSD_version > 700000))
#ifdef B115200
- {B115200, 115200},
+ DATA(115200),
#endif
#ifdef B230400
- {B230400, 230400},
+ DATA(230400),
#endif
#ifdef B460800
- {B460800, 460800},
+ DATA(460800),
#endif
#ifdef B921600
- {B921600, 921600},
+ DATA(921600),
+#endif
#endif
};
@@ -167,7 +168,7 @@ _nc_baudrate(int OSpeed)
}
}
#if !USE_REENTRANT
- if (OSpeed == last_OSpeed) {
+ if (OSpeed != last_OSpeed) {
last_OSpeed = OSpeed;
last_baudrate = result;
}
@@ -219,8 +220,8 @@ NCURSES_SP_NAME(baudrate) (NCURSES_SP_DCL0)
if (IsValidTIScreen(SP_PARM)) {
#ifdef USE_OLD_TTY
- result = cfgetospeed(&(TerminalOf(SP_PARM)->Nttyb));
- ospeed = _nc_ospeed(result);
+ result = (int) cfgetospeed(&(TerminalOf(SP_PARM)->Nttyb));
+ ospeed = (NCURSES_OSPEED) _nc_ospeed(result);
#else /* !USE_OLD_TTY */
#ifdef TERMIOS
ospeed = (NCURSES_OSPEED) cfgetospeed(&(TerminalOf(SP_PARM)->Nttyb));
diff --git a/contrib/ncurses/ncurses/tinfo/lib_cur_term.c b/contrib/ncurses/ncurses/tinfo/lib_cur_term.c
index 86e130e78527..eaaacbcbe51f 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-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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,14 +39,12 @@
#include <curses.priv.h>
#include <termcap.h> /* ospeed */
-MODULE_ID("$Id: lib_cur_term.c,v 1.30 2010/12/19 01:38:45 tom Exp $")
+MODULE_ID("$Id: lib_cur_term.c,v 1.32 2013/10/28 00:10:27 tom Exp $")
#undef CUR
#define CUR termp->type.
-#if BROKEN_LINKER && !USE_REENTRANT
-NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0;
-#elif BROKEN_LINKER || USE_REENTRANT
+#if USE_REENTRANT
NCURSES_EXPORT(TERMINAL *)
NCURSES_SP_NAME(_nc_get_cur_term) (NCURSES_SP_DCL0)
@@ -55,6 +53,7 @@ NCURSES_SP_NAME(_nc_get_cur_term) (NCURSES_SP_DCL0)
}
#if NCURSES_SP_FUNCS
+
NCURSES_EXPORT(TERMINAL *)
_nc_get_cur_term(void)
{
@@ -87,10 +86,10 @@ NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
oldterm = cur_term;
if (SP_PARM)
SP_PARM->_term = termp;
-#if BROKEN_LINKER && !USE_REENTRANT
- cur_term = termp;
-#else
+#if USE_REENTRANT
CurTerm = termp;
+#else
+ cur_term = termp;
#endif
if (termp != 0) {
#ifdef USE_TERM_DRIVER
@@ -133,9 +132,7 @@ NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) termp;
#endif
TERMINAL *cur = (
-#if BROKEN_LINKER && !USE_REENTRANT
- cur_term
-#elif BROKEN_LINKER || USE_REENTRANT
+#if USE_REENTRANT
NCURSES_SP_NAME(_nc_get_cur_term) (NCURSES_SP_ARG)
#else
cur_term
@@ -148,8 +145,9 @@ NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL * termp)
FreeIfNeeded(termp->_termname);
#if USE_HOME_TERMINFO
- if (_nc_globals.home_terminfo != 0)
+ if (_nc_globals.home_terminfo != 0) {
FreeAndNull(_nc_globals.home_terminfo);
+ }
#endif
#ifdef USE_TERM_DRIVER
if (TCB->drv)
diff --git a/contrib/ncurses/ncurses/tinfo/lib_data.c b/contrib/ncurses/ncurses/tinfo/lib_data.c
index 195ddf978ab6..06b6f88077e4 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_data.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_data.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_data.c,v 1.61 2010/05/15 22:06:56 tom Exp $")
+MODULE_ID("$Id: lib_data.c,v 1.66 2013/08/24 17:28:24 tom Exp $")
/*
* OS/2's native linker complains if we don't initialize public data when
@@ -114,6 +114,7 @@ NCURSES_EXPORT_VAR(SCREEN *) SP = NULL; /* Some linkers require initialized data
#define TGETENT_0s { TGETENT_0, TGETENT_0, TGETENT_0, TGETENT_0 }
NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = {
+ 0, /* have_sigtstp */
0, /* have_sigwinch */
0, /* cleanup_nested */
@@ -125,13 +126,14 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = {
FALSE, /* have_tic_directory */
FALSE, /* keep_tic_directory */
- TERMINFO, /* tic_directory */
+ 0, /* tic_directory */
NULL, /* dbi_list */
0, /* dbi_size */
NULL, /* first_name */
NULL, /* keyname_table */
+ 0, /* init_keyname */
0, /* slk_format */
@@ -142,6 +144,12 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = {
0, /* tgetent_index */
0, /* tgetent_sequence */
+ 0, /* dbd_blob */
+ 0, /* dbd_list */
+ 0, /* dbd_size */
+ 0, /* dbd_time */
+ { { 0, 0 } }, /* dbd_vars */
+
#ifndef USE_SP_WINDOWLIST
0, /* _nc_windowlist */
#endif
@@ -249,6 +257,7 @@ NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen = {
NULL, /* _tputs_trace */
#endif
#endif
+ FALSE, /* use_tioctl */
};
/* *INDENT-ON* */
diff --git a/contrib/ncurses/ncurses/tinfo/lib_has_cap.c b/contrib/ncurses/ncurses/tinfo/lib_has_cap.c
index d1b9b8d966da..17e59d535173 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-2003,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -46,7 +46,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_has_cap.c,v 1.9 2009/10/24 22:15:47 tom Exp $")
+MODULE_ID("$Id: lib_has_cap.c,v 1.10 2013/11/16 19:57:22 tom Exp $")
NCURSES_EXPORT(bool)
NCURSES_SP_NAME(has_ic) (NCURSES_SP_DCL0)
@@ -55,7 +55,7 @@ NCURSES_SP_NAME(has_ic) (NCURSES_SP_DCL0)
T((T_CALLED("has_ic(%p)"), (void *) SP_PARM));
- if (IsValidTIScreen(SP_PARM) && IsTermInfo(SP_PARM)) {
+ if (HasTInfoTerminal(SP_PARM)) {
code = ((insert_character || parm_ich
|| (enter_insert_mode && exit_insert_mode))
&& (delete_character || parm_dch)) ? TRUE : FALSE;
@@ -77,7 +77,7 @@ NCURSES_SP_NAME(has_il) (NCURSES_SP_DCL0)
{
bool code = FALSE;
T((T_CALLED("has_il(%p)"), (void *) SP_PARM));
- if (IsValidTIScreen(SP_PARM) && IsTermInfo(SP_PARM)) {
+ if (HasTInfoTerminal(SP_PARM)) {
code = ((insert_line || parm_insert_line)
&& (delete_line || parm_delete_line)) ? TRUE : FALSE;
}
diff --git a/contrib/ncurses/ncurses/tinfo/lib_napms.c b/contrib/ncurses/ncurses/tinfo/lib_napms.c
index 1e6abda10d09..36f1d25b8057 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_napms.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_napms.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -51,17 +51,21 @@
#endif
#endif
-MODULE_ID("$Id: lib_napms.c,v 1.20 2009/11/07 20:37:30 tom Exp $")
+MODULE_ID("$Id: lib_napms.c,v 1.23 2012/06/30 22:08:24 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(napms) (NCURSES_SP_DCLx int ms)
{
- (void) SP_PARM;
T((T_CALLED("napms(%d)"), ms));
#ifdef USE_TERM_DRIVER
- CallDriver_1(SP_PARM, nap, ms);
+ if (HasTerminal(SP_PARM)) {
+ CallDriver_1(SP_PARM, nap, ms);
+ }
#else /* !USE_TERM_DRIVER */
+#if NCURSES_SP_FUNCS
+ (void) sp;
+#endif
#if HAVE_NANOSLEEP
{
struct timespec request, remaining;
diff --git a/contrib/ncurses/ncurses/tinfo/lib_options.c b/contrib/ncurses/ncurses/tinfo/lib_options.c
index 654bf940aa1f..e1cda4ebb61a 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_options.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_options.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -46,7 +46,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_options.c,v 1.71 2009/10/24 21:56:15 tom Exp $")
+MODULE_ID("$Id: lib_options.c,v 1.76 2013/12/14 22:23:58 tom Exp $")
NCURSES_EXPORT(int)
idlok(WINDOW *win, bool flag)
@@ -56,7 +56,11 @@ idlok(WINDOW *win, bool flag)
if (win) {
SCREEN *sp = _nc_screen_of(win);
- if (sp && IsTermInfo(sp)) {
+ if (sp != 0
+#ifdef USE_TERM_DRIVER
+ && IsTermInfo(sp)
+#endif
+ ) {
sp->_nc_sp_idlok =
win->_idlok = (flag && (NCURSES_SP_NAME(has_il) (NCURSES_SP_ARG)
|| change_scroll_region));
@@ -165,16 +169,16 @@ meta(WINDOW *win GCC_UNUSED, bool flag)
#ifdef USE_TERM_DRIVER
if (IsTermInfo(sp)) {
if (flag) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_on", meta_on);
+ NCURSES_PUTP2("meta_on", meta_on);
} else {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_off", meta_off);
+ NCURSES_PUTP2("meta_off", meta_off);
}
}
#else
if (flag) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_on", meta_on);
+ NCURSES_PUTP2("meta_on", meta_on);
} else {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_off", meta_off);
+ NCURSES_PUTP2("meta_off", meta_off);
}
#endif
result = OK;
@@ -199,19 +203,16 @@ NCURSES_SP_NAME(curs_set) (NCURSES_SP_DCLx int vis)
if (!bBuiltIn) {
switch (vis) {
case 2:
- code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
- "cursor_visible",
- cursor_visible);
+ code = NCURSES_PUTP2_FLUSH("cursor_visible",
+ cursor_visible);
break;
case 1:
- code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
- "cursor_normal",
- cursor_normal);
+ code = NCURSES_PUTP2_FLUSH("cursor_normal",
+ cursor_normal);
break;
case 0:
- code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
- "cursor_invisible",
- cursor_invisible);
+ code = NCURSES_PUTP2_FLUSH("cursor_invisible",
+ cursor_invisible);
break;
}
} else
@@ -301,7 +302,7 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_DCLx
const char *name, const char *value)
{
- int rc = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx name, value);
+ int rc = NCURSES_PUTP2(name, value);
if (rc != ERR) {
_nc_flush();
}
@@ -324,7 +325,7 @@ _nc_putp_flush(const char *name, const char *value)
* the terminal state _before_ switching modes.
*/
NCURSES_EXPORT(int)
-_nc_keypad(SCREEN *sp, bool flag)
+_nc_keypad(SCREEN *sp, int flag)
{
int rc = ERR;
@@ -354,13 +355,9 @@ _nc_keypad(SCREEN *sp, bool flag)
sp->_keypad_on = flag;
#else
if (flag) {
- (void) NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
- "keypad_xmit",
- keypad_xmit);
+ (void) NCURSES_PUTP2_FLUSH("keypad_xmit", keypad_xmit);
} else if (!flag && keypad_local) {
- (void) NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
- "keypad_local",
- keypad_local);
+ (void) NCURSES_PUTP2_FLUSH("keypad_local", keypad_local);
}
if (flag && !sp->_tried) {
diff --git a/contrib/ncurses/ncurses/tinfo/lib_print.c b/contrib/ncurses/ncurses/tinfo/lib_print.c
index c7bd3a62fa87..0dab4d459115 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_print.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_print.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_print.c,v 1.20 2010/06/05 22:18:35 tom Exp $")
+MODULE_ID("$Id: lib_print.c,v 1.23 2012/02/22 22:34:31 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len)
@@ -76,10 +76,10 @@ NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len)
return (ERR);
}
- (void) strcpy(mybuf, switchon);
- memcpy(mybuf + onsize, data, (unsigned) len);
+ _nc_STRCPY(mybuf, switchon, need);
+ memcpy(mybuf + onsize, data, (size_t) len);
if (offsize)
- (void) strcpy(mybuf + onsize + len, prtr_off);
+ _nc_STRCPY(mybuf + onsize + len, prtr_off, need);
/*
* We're relying on the atomicity of UNIX writes here. The
diff --git a/contrib/ncurses/ncurses/tinfo/lib_raw.c b/contrib/ncurses/ncurses/tinfo/lib_raw.c
index b524a1bb55be..928692b0cb27 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_raw.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_raw.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -49,11 +49,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_raw.c,v 1.19 2010/04/24 23:49:12 tom Exp $")
-
-#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#endif
+MODULE_ID("$Id: lib_raw.c,v 1.21 2012/01/21 19:21:29 KO.Myung-Hun Exp $")
#if HAVE_SYS_TERMIO_H
#include <sys/termio.h> /* needed for ISC */
@@ -66,6 +62,11 @@ MODULE_ID("$Id: lib_raw.c,v 1.19 2010/04/24 23:49:12 tom Exp $")
#define _nc_setmode(mode) /* nothing */
#endif
+#if USE_KLIBC_KBD
+#define INCL_KBD
+#include <os2.h>
+#endif
+
#define COOKED_INPUT (IXON|BRKINT|PARMRK)
#ifdef TRACE
@@ -100,6 +101,17 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0)
#endif
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
if (result == OK) {
+#if USE_KLIBC_KBD
+ KBDINFO kbdinfo;
+
+ kbdinfo.cb = sizeof(kbdinfo);
+ KbdGetStatus(&kbdinfo, 0);
+
+ kbdinfo.cb = sizeof(kbdinfo);
+ kbdinfo.fsMask &= ~KEYBOARD_ASCII_MODE;
+ kbdinfo.fsMask |= KEYBOARD_BINARY_MODE;
+ KbdSetStatus(&kbdinfo, 0);
+#endif
SP_PARM->_raw = TRUE;
SP_PARM->_cbreak = 1;
termp->Nttyb = buf;
@@ -218,6 +230,17 @@ NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0)
#endif
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
if (result == OK) {
+#if USE_KLIBC_KBD
+ KBDINFO kbdinfo;
+
+ kbdinfo.cb = sizeof(kbdinfo);
+ KbdGetStatus(&kbdinfo, 0);
+
+ kbdinfo.cb = sizeof(kbdinfo);
+ kbdinfo.fsMask &= ~KEYBOARD_BINARY_MODE;
+ kbdinfo.fsMask |= KEYBOARD_ASCII_MODE;
+ KbdSetStatus(&kbdinfo, 0);
+#endif
SP_PARM->_raw = FALSE;
SP_PARM->_cbreak = 0;
termp->Nttyb = buf;
diff --git a/contrib/ncurses/ncurses/tinfo/lib_setup.c b/contrib/ncurses/ncurses/tinfo/lib_setup.c
index 5fcf2ae3fc32..946342da41db 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_setup.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_setup.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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,21 +37,18 @@
* Terminal setup routines common to termcap and terminfo:
*
* use_env(bool)
+ * use_tioctl(bool)
* setupterm(char *, int, int *)
*/
#include <curses.priv.h>
#include <tic.h> /* for MAX_NAME_SIZE */
-#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#endif
-
#if HAVE_LOCALE_H
#include <locale.h>
#endif
-MODULE_ID("$Id: lib_setup.c,v 1.135 2011/02/06 01:04:21 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.158 2013/06/22 19:59:08 tom Exp $")
/****************************************************************************
*
@@ -225,6 +222,7 @@ NCURSES_SP_NAME(use_env) (NCURSES_SP_DCLx bool f)
{
T((T_CALLED("use_env(%p,%d)"), (void *) SP_PARM, (int) f));
#if NCURSES_SP_FUNCS
+ START_TRACE();
if (IsPreScreen(SP_PARM)) {
SP_PARM->_use_env = f;
}
@@ -234,14 +232,39 @@ NCURSES_SP_NAME(use_env) (NCURSES_SP_DCLx bool f)
returnVoid;
}
+NCURSES_EXPORT(void)
+NCURSES_SP_NAME(use_tioctl) (NCURSES_SP_DCLx bool f)
+{
+ T((T_CALLED("use_tioctl(%p,%d)"), (void *) SP_PARM, (int) f));
+#if NCURSES_SP_FUNCS
+ START_TRACE();
+ if (IsPreScreen(SP_PARM)) {
+ SP_PARM->_use_tioctl = f;
+ }
+#else
+ _nc_prescreen.use_tioctl = f;
+#endif
+ returnVoid;
+}
+
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(void)
use_env(bool f)
{
T((T_CALLED("use_env(%d)"), (int) f));
+ START_TRACE();
_nc_prescreen.use_env = f;
returnVoid;
}
+
+NCURSES_EXPORT(void)
+use_tioctl(bool f)
+{
+ T((T_CALLED("use_tioctl(%d)"), (int) f));
+ START_TRACE();
+ _nc_prescreen.use_tioctl = f;
+ returnVoid;
+}
#endif
NCURSES_EXPORT(void)
@@ -281,7 +304,7 @@ _nc_get_screensize(SCREEN *sp,
*linep = (int) lines;
*colp = (int) columns;
- if (_nc_prescreen.use_env) {
+ if (_nc_prescreen.use_env || _nc_prescreen.use_tioctl) {
int value;
#ifdef __EMX__
@@ -289,7 +312,9 @@ _nc_get_screensize(SCREEN *sp,
int screendata[2];
_scrsize(screendata);
*colp = screendata[0];
- *linep = screendata[1];
+ *linep = ((sp != 0 && sp->_filtered)
+ ? 1
+ : screendata[1]);
T(("EMX screen size: environment LINES = %d COLUMNS = %d",
*linep, *colp));
}
@@ -315,19 +340,33 @@ _nc_get_screensize(SCREEN *sp,
}
#endif /* HAVE_SIZECHANGE */
- /*
- * Finally, look for environment variables.
- *
- * Solaris lets users override either dimension with an environment
- * variable.
- */
- if ((value = _nc_getenv_num("LINES")) > 0) {
- *linep = value;
- T(("screen size: environment LINES = %d", *linep));
- }
- if ((value = _nc_getenv_num("COLUMNS")) > 0) {
- *colp = value;
- T(("screen size: environment COLUMNS = %d", *colp));
+ if (_nc_prescreen.use_env) {
+ if (_nc_prescreen.use_tioctl) {
+ /*
+ * If environment variables are used, update them.
+ */
+ if ((sp == 0 || !sp->_filtered) && _nc_getenv_num("LINES") > 0) {
+ _nc_setenv_num("LINES", *linep);
+ }
+ if (_nc_getenv_num("COLUMNS") > 0) {
+ _nc_setenv_num("COLUMNS", *colp);
+ }
+ }
+
+ /*
+ * Finally, look for environment variables.
+ *
+ * Solaris lets users override either dimension with an environment
+ * variable.
+ */
+ if ((value = _nc_getenv_num("LINES")) > 0) {
+ *linep = value;
+ T(("screen size: environment LINES = %d", *linep));
+ }
+ if ((value = _nc_getenv_num("COLUMNS")) > 0) {
+ *colp = value;
+ T(("screen size: environment COLUMNS = %d", *colp));
+ }
}
/* if we can't get dynamic info about the size, use static */
@@ -399,10 +438,12 @@ _nc_update_screensize(SCREEN *sp)
* 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))
+ if (sp != 0 && sp->_resize != 0) {
+ if ((new_lines != old_lines) || (new_cols != old_cols)) {
sp->_resize(NCURSES_SP_ARGx new_lines, new_cols);
+ } else if (sp->_sig_winch && (sp->_ungetch != 0)) {
+ sp->_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */
+ }
sp->_sig_winch = FALSE;
}
}
@@ -414,23 +455,7 @@ _nc_update_screensize(SCREEN *sp)
*
****************************************************************************/
-#define ret_error(code, fmt, arg) if (errret) {\
- *errret = code;\
- returnCode(ERR);\
- } else {\
- fprintf(stderr, fmt, arg);\
- exit(EXIT_FAILURE);\
- }
-
-#define ret_error0(code, msg) if (errret) {\
- *errret = code;\
- returnCode(ERR);\
- } else {\
- fprintf(stderr, msg);\
- exit(EXIT_FAILURE);\
- }
-
-#if USE_DATABASE || USE_TERMCAP
+#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP
/*
* Return 1 if entry found, 0 if not found, -1 if database not accessible,
* just like tgetent().
@@ -467,7 +492,7 @@ _nc_setup_tinfo(const char *const tn, TERMTYPE *const tp)
** and substitute it in for the prototype given in 'command_character'.
*/
void
-_nc_tinfo_cmdch(TERMINAL * termp, char proto)
+_nc_tinfo_cmdch(TERMINAL * termp, int proto)
{
unsigned i;
char CC;
@@ -481,8 +506,8 @@ _nc_tinfo_cmdch(TERMINAL * termp, char proto)
if ((tmp = getenv("CC")) != 0 && strlen(tmp) == 1) {
CC = *tmp;
for_each_string(i, &(termp->type)) {
- for (tmp = termp->type.Strings[i]; *tmp; tmp++) {
- if (*tmp == proto)
+ for (tmp = termp->type.Strings[i]; tmp && *tmp; tmp++) {
+ if (UChar(*tmp) == proto)
*tmp = CC;
}
}
@@ -520,7 +545,9 @@ NCURSES_EXPORT(int)
_nc_unicode_locale(void)
{
int result = 0;
-#if HAVE_LANGINFO_CODESET
+#if defined(__MINGW32__) && USE_WIDEC_SUPPORT
+ result = 1;
+#elif HAVE_LANGINFO_CODESET
char *env = nl_langinfo(CODESET);
result = !strcmp(env, "UTF-8");
T(("_nc_unicode_locale(%s) ->%d", env, result));
@@ -551,7 +578,7 @@ _nc_locale_breaks_acs(TERMINAL * termp)
int value;
int result = 0;
- if ((env = getenv(env_name)) != 0) {
+ if (getenv(env_name) != 0) {
result = _nc_getenv_num(env_name);
} else if ((value = tigetnum("U8")) >= 0) {
result = value; /* use extension feature */
@@ -578,7 +605,7 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
NCURSES_CONST char *tname,
int Filedes,
int *errret,
- bool reuse)
+ int reuse)
{
#ifdef USE_TERM_DRIVER
TERMINAL_CONTROL_BLOCK *TCB = 0;
@@ -608,7 +635,11 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
if (tname == 0) {
tname = getenv("TERM");
if (tname == 0 || *tname == '\0') {
+#ifdef USE_TERM_DRIVER
+ tname = "unknown";
+#else
ret_error0(TGETENT_ERR, "TERM environment variable not set.\n");
+#endif
}
}
@@ -651,9 +682,14 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
&& _nc_name_match(termp->type.term_names, tname, "|")) {
T(("reusing existing terminal information and mode-settings"));
code = OK;
+#ifdef USE_TERM_DRIVER
+ TCB = (TERMINAL_CONTROL_BLOCK *) termp;
+#endif
} else {
#ifdef USE_TERM_DRIVER
- termp = (TERMINAL *) typeCalloc(TERMINAL_CONTROL_BLOCK, 1);
+ TERMINAL_CONTROL_BLOCK *my_tcb;
+ my_tcb = typeCalloc(TERMINAL_CONTROL_BLOCK, 1);
+ termp = &(my_tcb->term);
#else
termp = typeCalloc(TERMINAL, 1);
#endif
@@ -673,7 +709,7 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
"Could not find any driver to handle this terminal.\n");
}
#else
-#if USE_DATABASE || USE_TERMCAP
+#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP
status = _nc_setup_tinfo(tname, &termp->type);
#else
status = TGETENT_NO;
@@ -684,7 +720,7 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
const TERMTYPE *fallback = _nc_fallback(tname);
if (fallback) {
- termp->type = *fallback;
+ _nc_copy_termtype(&(termp->type), fallback);
status = TGETENT_YES;
}
}
@@ -694,11 +730,11 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
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);
+ ret_error1(status, "unknown terminal type.\n", tname);
}
}
#if !USE_REENTRANT
- strncpy(ttytype, termp->type.term_names, NAMESIZE - 1);
+ strncpy(ttytype, termp->type.term_names, (size_t) (NAMESIZE - 1));
ttytype[NAMESIZE - 1] = '\0';
#endif
@@ -708,7 +744,7 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
set_curterm(termp);
if (command_character)
- _nc_tinfo_cmdch(termp, *command_character);
+ _nc_tinfo_cmdch(termp, UChar(*command_character));
/*
* If an application calls setupterm() rather than initscr() or
@@ -742,10 +778,20 @@ TINFO_SETUP_TERM(TERMINAL ** tp,
#ifndef USE_TERM_DRIVER
if (generic_type) {
- ret_error(TGETENT_NO, "'%s': I need something more specific.\n", tname);
- }
- if (hard_copy) {
- ret_error(TGETENT_YES, "'%s': I can't handle hardcopy terminals.\n", tname);
+ /*
+ * BSD 4.3's termcap contains mis-typed "gn" for wy99. Do a sanity
+ * check before giving up.
+ */
+ if ((VALID_STRING(cursor_address)
+ || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
+ && VALID_STRING(clear_screen)) {
+ ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
+ } else {
+ del_curterm(termp);
+ ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
+ }
+ } else if (hard_copy) {
+ ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
}
#endif
returnCode(code);
@@ -798,10 +844,10 @@ NCURSES_EXPORT(int)
_nc_setupterm(NCURSES_CONST char *tname,
int Filedes,
int *errret,
- bool reuse)
+ int reuse)
{
int res;
- TERMINAL *termp;
+ TERMINAL *termp = 0;
res = TINFO_SETUP_TERM(&termp, tname, Filedes, errret, reuse);
if (ERR != res)
NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN_PRE, termp);
diff --git a/contrib/ncurses/ncurses/tinfo/lib_termcap.c b/contrib/ncurses/ncurses/tinfo/lib_termcap.c
index 21db21be3d3b..c65b826363e3 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_termcap.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_termcap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -50,7 +50,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_termcap.c,v 1.73 2010/12/25 19:27:12 tom Exp $")
+MODULE_ID("$Id: lib_termcap.c,v 1.80 2013/06/08 16:48:47 tom Exp $")
NCURSES_EXPORT_VAR(char *) UP = 0;
NCURSES_EXPORT_VAR(char *) BC = 0;
@@ -69,6 +69,15 @@ extern char _nc_termcap[]; /* buffer to copy out */
#define LAST_USE MyCache[CacheInx].last_used
#define LAST_SEQ MyCache[CacheInx].sequence
+/*
+ * Termcap names are matched only using the first two bytes.
+ * Ignore any extended names longer than two bytes, to avoid problems
+ * with legacy code which passes in parameters whose use is long forgotten.
+ */
+#define ValidCap(cap) (((cap)[0] != '\0') && ((cap)[1] != '\0'))
+#define SameCap(a,b) (((a)[0] == (b)[0]) && ((a)[1] == (b)[1]))
+#define ValidExt(ext) (ValidCap(ext) && (ext)[2] == '\0')
+
/***************************************************************************
*
* tgetent(bufp, term)
@@ -103,7 +112,7 @@ NCURSES_SP_NAME(tgetent) (NCURSES_SP_DCLx char *bufp, const char *name)
#ifdef USE_TERM_DRIVER
if (termp == 0 ||
!((TERMINAL_CONTROL_BLOCK *) termp)->drv->isTerminfo)
- return (rc);
+ returnCode(rc);
#endif
/*
@@ -218,11 +227,13 @@ tgetent(char *bufp, const char *name)
static bool
same_tcname(const char *a, const char *b)
{
- fprintf(stderr, "compare(%s,%s)\n", a, b);
- return !strncmp(a, b, 2);
+ bool code = SameCap(a, b);
+ fprintf(stderr, "compare(%s,%s) %s\n", a, b, code ? "same" : "diff");
+ return code;
}
+
#else
-#define same_tcname(a,b) !strncmp(a,b,2)
+#define same_tcname(a,b) SameCap(a,b)
#endif
/***************************************************************************
@@ -238,10 +249,10 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(tgetflag) (NCURSES_SP_DCLx NCURSES_CONST char *id)
{
int result = 0; /* Solaris returns zero for missing flag */
- int i, j;
+ int j = -1;
T((T_CALLED("tgetflag(%p, %s)"), (void *) SP_PARM, id));
- if (HasTInfoTerminal(SP_PARM)) {
+ if (HasTInfoTerminal(SP_PARM) && ValidCap(id)) {
TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
struct name_table_entry const *entry_ptr;
@@ -251,10 +262,10 @@ NCURSES_SP_NAME(tgetflag) (NCURSES_SP_DCLx NCURSES_CONST char *id)
}
#if NCURSES_XNAMES
else {
- j = -1;
+ int i;
for_each_ext_boolean(i, tp) {
const char *capname = ExtBoolname(tp, i, boolcodes);
- if (same_tcname(id, capname)) {
+ if (same_tcname(id, capname) && ValidExt(capname)) {
j = i;
break;
}
@@ -290,10 +301,10 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(tgetnum) (NCURSES_SP_DCLx NCURSES_CONST char *id)
{
int result = ABSENT_NUMERIC;
- int i, j;
+ int j = -1;
T((T_CALLED("tgetnum(%p, %s)"), (void *) SP_PARM, id));
- if (HasTInfoTerminal(SP_PARM)) {
+ if (HasTInfoTerminal(SP_PARM) && ValidCap(id)) {
TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
struct name_table_entry const *entry_ptr;
@@ -303,10 +314,10 @@ NCURSES_SP_NAME(tgetnum) (NCURSES_SP_DCLx NCURSES_CONST char *id)
}
#if NCURSES_XNAMES
else {
- j = -1;
+ int i;
for_each_ext_number(i, tp) {
const char *capname = ExtNumname(tp, i, numcodes);
- if (same_tcname(id, capname)) {
+ if (same_tcname(id, capname) && ValidExt(capname)) {
j = i;
break;
}
@@ -342,10 +353,10 @@ NCURSES_EXPORT(char *)
NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area)
{
char *result = NULL;
- int i, j;
+ int j = -1;
T((T_CALLED("tgetstr(%s,%p)"), id, (void *) area));
- if (HasTInfoTerminal(SP_PARM)) {
+ if (HasTInfoTerminal(SP_PARM) && ValidCap(id)) {
TERMTYPE *tp = &(TerminalOf(SP_PARM)->type);
struct name_table_entry const *entry_ptr;
@@ -355,10 +366,10 @@ NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area)
}
#if NCURSES_XNAMES
else {
- j = -1;
+ int i;
for_each_ext_string(i, tp) {
const char *capname = ExtStrname(tp, i, strcodes);
- if (same_tcname(id, capname)) {
+ if (same_tcname(id, capname) && ValidExt(capname)) {
j = i;
break;
}
@@ -367,7 +378,7 @@ NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area)
#endif
if (j >= 0) {
result = tp->Strings[j];
- TR(TRACE_DATABASE, ("found match : %s", _nc_visbuf(result)));
+ TR(TRACE_DATABASE, ("found match %d: %s", j, _nc_visbuf(result)));
/* setupterm forces canceled strings to null */
if (VALID_STRING(result)) {
if (result == exit_attribute_mode
@@ -377,7 +388,7 @@ NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area)
}
if (area != 0
&& *area != 0) {
- (void) strcpy(*area, result);
+ _nc_STRCPY(*area, result, 1024);
result = *area;
*area += strlen(*area) + 1;
}
diff --git a/contrib/ncurses/ncurses/tinfo/lib_tgoto.c b/contrib/ncurses/ncurses/tinfo/lib_tgoto.c
index e07f4643138b..31daf443624f 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_tgoto.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_tgoto.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 2000-2008,2012 Free 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.13 2008/08/16 19:29:32 tom Exp $")
+MODULE_ID("$Id: lib_tgoto.c,v 1.16 2012/02/24 02:08:08 tom Exp $")
#if !PURE_TERMINFO
static bool
@@ -159,7 +159,8 @@ tgoto_internal(const char *string, int x, int y)
break;
}
if (fmt != 0) {
- sprintf(result + used, fmt, *value++);
+ _nc_SPRINTF(result + used, _nc_SLIMIT(length - used)
+ fmt, *value++);
used += strlen(result + used);
fmt = 0;
}
@@ -174,7 +175,7 @@ tgoto_internal(const char *string, int x, int y)
}
if (result != 0) {
if (need_BC) {
- strcpy(result + used, BC);
+ _nc_STRCPY(result + used, BC, length - used);
used += strlen(BC);
}
result[used] = '\0';
diff --git a/contrib/ncurses/ncurses/tinfo/lib_ti.c b/contrib/ncurses/ncurses/tinfo/lib_ti.c
index e41234210c85..e9ae74623cf5 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_ti.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_ti.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <tic.h>
-MODULE_ID("$Id: lib_ti.c,v 1.29 2010/01/23 17:57:43 tom Exp $")
+MODULE_ID("$Id: lib_ti.c,v 1.30 2013/06/08 16:55:05 tom Exp $")
#if 0
static bool
@@ -53,7 +53,7 @@ NCURSES_EXPORT(int)
NCURSES_SP_NAME(tigetflag) (NCURSES_SP_DCLx NCURSES_CONST char *str)
{
int result = ABSENT_BOOLEAN;
- int i, j;
+ int j = -1;
T((T_CALLED("tigetflag(%p, %s)"), (void *) SP_PARM, str));
@@ -67,7 +67,7 @@ NCURSES_SP_NAME(tigetflag) (NCURSES_SP_DCLx NCURSES_CONST char *str)
}
#if NCURSES_XNAMES
else {
- j = -1;
+ int i;
for_each_ext_boolean(i, tp) {
const char *capname = ExtBoolname(tp, i, boolnames);
if (same_name(str, capname)) {
@@ -97,7 +97,7 @@ tigetflag(NCURSES_CONST char *str)
NCURSES_EXPORT(int)
NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx NCURSES_CONST char *str)
{
- int i, j;
+ int j = -1;
int result = CANCELLED_NUMERIC; /* Solaris returns a -1 on error */
T((T_CALLED("tigetnum(%p, %s)"), (void *) SP_PARM, str));
@@ -112,7 +112,7 @@ NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx NCURSES_CONST char *str)
}
#if NCURSES_XNAMES
else {
- j = -1;
+ int i;
for_each_ext_number(i, tp) {
const char *capname = ExtNumname(tp, i, numnames);
if (same_name(str, capname)) {
@@ -145,7 +145,7 @@ NCURSES_EXPORT(char *)
NCURSES_SP_NAME(tigetstr) (NCURSES_SP_DCLx NCURSES_CONST char *str)
{
char *result = CANCELLED_STRING;
- int i, j;
+ int j = -1;
T((T_CALLED("tigetstr(%p, %s)"), (void *) SP_PARM, str));
@@ -159,7 +159,7 @@ NCURSES_SP_NAME(tigetstr) (NCURSES_SP_DCLx NCURSES_CONST char *str)
}
#if NCURSES_XNAMES
else {
- j = -1;
+ int i;
for_each_ext_string(i, tp) {
const char *capname = ExtStrname(tp, i, strnames);
if (same_name(str, capname)) {
diff --git a/contrib/ncurses/ncurses/tinfo/lib_tparm.c b/contrib/ncurses/ncurses/tinfo/lib_tparm.c
index 7cd12f7f6845..439115b01e83 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_tparm.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_tparm.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: lib_tparm.c,v 1.82 2011/01/15 22:19:12 tom Exp $")
+MODULE_ID("$Id: lib_tparm.c,v 1.90 2013/11/09 14:53:05 tom Exp $")
/*
* char *
@@ -53,7 +53,7 @@ MODULE_ID("$Id: lib_tparm.c,v 1.82 2011/01/15 22:19:12 tom Exp $")
*
* Cursor addressing and other strings requiring parame-
* ters in the terminal are described by a parameterized string
- * capability, with like escapes %x in it. For example, to
+ * capability, with escapes like %x in it. For example, to
* address the cursor, the cup capability is given, using two
* parameters: the row and column to address to. (Rows and
* columns are numbered from zero and refer to the physical
@@ -107,6 +107,7 @@ MODULE_ID("$Id: lib_tparm.c,v 1.82 2011/01/15 22:19:12 tom Exp $")
NCURSES_EXPORT_VAR(int) _nc_tparm_err = 0;
#define TPS(var) _nc_prescreen.tparm_state.var
+#define popcount _nc_popcount /* workaround for NetBSD 6.0 defect */
#if NO_LEAKS
NCURSES_EXPORT(void)
@@ -128,9 +129,7 @@ get_space(size_t need)
need += TPS(out_used);
if (need > TPS(out_size)) {
TPS(out_size) = need * 2;
- TPS(out_buff) = typeRealloc(char, TPS(out_size), TPS(out_buff));
- if (TPS(out_buff) == 0)
- _nc_err_abort(MSG_NO_MEMORY);
+ TYPE_REALLOC(char, TPS(out_size), TPS(out_buff));
}
}
@@ -143,7 +142,9 @@ save_text(const char *fmt, const char *s, int len)
get_space(s_len + 1);
- (void) sprintf(TPS(out_buff) + TPS(out_used), fmt, s);
+ _nc_SPRINTF(TPS(out_buff) + TPS(out_used),
+ _nc_SLIMIT(TPS(out_size) - TPS(out_used))
+ fmt, s);
TPS(out_used) += strlen(TPS(out_buff) + TPS(out_used));
}
@@ -153,9 +154,11 @@ save_number(const char *fmt, int number, int len)
if (len < 30)
len = 30; /* actually log10(MAX_INT)+1 */
- get_space((unsigned) len + 1);
+ get_space((size_t) len + 1);
- (void) sprintf(TPS(out_buff) + TPS(out_used), fmt, number);
+ _nc_SPRINTF(TPS(out_buff) + TPS(out_used),
+ _nc_SLIMIT(TPS(out_size) - TPS(out_used))
+ fmt, number);
TPS(out_used) += strlen(TPS(out_buff) + TPS(out_used));
}
@@ -164,7 +167,7 @@ save_char(int c)
{
if (c == 0)
c = 0200;
- get_space(1);
+ get_space((size_t) 1);
TPS(out_buff)[TPS(out_used)++] = (char) c;
}
@@ -450,7 +453,7 @@ _nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount)
}
static NCURSES_INLINE char *
-tparam_internal(bool use_TPARM_ARG, const char *string, va_list ap)
+tparam_internal(int use_TPARM_ARG, const char *string, va_list ap)
{
char *p_is_s[NUM_PARM];
TPARM_ARG param[NUM_PARM];
@@ -522,7 +525,7 @@ tparam_internal(bool use_TPARM_ARG, const char *string, va_list ap)
}
#ifdef TRACE
if (USE_TRACEF(TRACE_CALLS)) {
- for (i = 0; i < popcount; i++) {
+ for (i = 0; i < num_args; i++) {
if (p_is_s[i] != 0)
save_text(", %s", _nc_visbuf(p_is_s[i]), 0);
else
@@ -559,7 +562,7 @@ tparam_internal(bool use_TPARM_ARG, const char *string, va_list ap)
break;
case 'l':
- save_number("%d", (int) strlen(spop()), 0);
+ npush((int) strlen(spop()));
break;
case 's':
@@ -757,7 +760,7 @@ tparam_internal(bool use_TPARM_ARG, const char *string, va_list ap)
cp++;
} /* endwhile (*cp) */
- get_space(1);
+ get_space((size_t) 1);
TPS(out_buff)[TPS(out_used)] = '\0';
T((T_RETURN("%s"), _nc_visbuf(TPS(out_buff))));
diff --git a/contrib/ncurses/ncurses/tinfo/lib_tputs.c b/contrib/ncurses/ncurses/tinfo/lib_tputs.c
index dc70f3e0b0b8..523678210da6 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_tputs.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_tputs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -51,7 +51,7 @@
#include <termcap.h> /* ospeed */
#include <tic.h>
-MODULE_ID("$Id: lib_tputs.c,v 1.81 2010/12/20 00:42:50 tom Exp $")
+MODULE_ID("$Id: lib_tputs.c,v 1.93 2013/01/12 20:57:32 tom Exp $")
NCURSES_EXPORT_VAR(char) PC = 0; /* used by termcap library */
NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0; /* used by termcap library */
@@ -119,7 +119,17 @@ delay_output(int ms)
NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_DCL0)
{
- (void) fflush(NC_OUTPUT(SP_PARM));
+ if (SP_PARM != 0 && SP_PARM->_ofd >= 0) {
+ if (SP_PARM->out_inuse) {
+ size_t amount = SP->out_inuse;
+ /*
+ * Help a little, if the write is interrupted, by first resetting
+ * our amount.
+ */
+ SP->out_inuse = 0;
+ IGNORE_RC(write(SP_PARM->_ofd, SP_PARM->out_buffer, amount));
+ }
+ }
}
#if NCURSES_SP_FUNCS
@@ -138,17 +148,23 @@ NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_DCLx int ch)
COUNT_OUTCHARS(1);
if (HasTInfoTerminal(SP_PARM)
- && SP_PARM != 0
- && SP_PARM->_cleanup) {
- char tmp = (char) ch;
- /*
- * POSIX says write() is safe in a signal handler, but the
- * buffered I/O is not.
- */
- if (write(fileno(NC_OUTPUT(SP_PARM)), &tmp, 1) == -1)
- rc = ERR;
+ && SP_PARM != 0) {
+ if (SP_PARM->out_buffer != 0) {
+ if (SP_PARM->out_inuse + 1 >= SP_PARM->out_limit)
+ NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+ SP_PARM->out_buffer[SP_PARM->out_inuse++] = (char) ch;
+ } else {
+ char tmp = (char) ch;
+ /*
+ * POSIX says write() is safe in a signal handler, but the
+ * buffered I/O is not.
+ */
+ if (write(fileno(NC_OUTPUT(SP_PARM)), &tmp, (size_t) 1) == -1)
+ rc = ERR;
+ }
} else {
- if (putc(ch, NC_OUTPUT(SP_PARM)) == EOF)
+ char tmp = (char) ch;
+ if (write(fileno(stdout), &tmp, (size_t) 1) == -1)
rc = ERR;
}
return rc;
@@ -162,13 +178,48 @@ _nc_outch(int ch)
}
#endif
+/*
+ * This is used for the putp special case.
+ */
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(_nc_putchar) (NCURSES_SP_DCLx int ch)
+{
+ (void) SP_PARM;
+ return putchar(ch);
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(int)
+_nc_putchar(int ch)
+{
+ return putchar(ch);
+}
+#endif
+
+/*
+ * putp is special - per documentation it calls tputs with putchar as the
+ * parameter for outputting characters. This means that it uses stdio, which
+ * is not signal-safe. Applications call this entrypoint; we do not call it
+ * from within the library.
+ */
NCURSES_EXPORT(int)
NCURSES_SP_NAME(putp) (NCURSES_SP_DCLx const char *string)
{
return NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
- string, 1, NCURSES_SP_NAME(_nc_outch));
+ string, 1, NCURSES_SP_NAME(_nc_putchar));
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(int)
+putp(const char *string)
+{
+ return NCURSES_SP_NAME(putp) (CURRENT_SCREEN, string);
}
+#endif
+/*
+ * Use these entrypoints rather than "putp" within the library.
+ */
NCURSES_EXPORT(int)
NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_DCLx
const char *name GCC_UNUSED,
@@ -178,19 +229,14 @@ NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_DCLx
if (string != 0) {
TPUTS_TRACE(name);
- rc = NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx string);
+ rc = NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
+ string, 1, NCURSES_SP_NAME(_nc_outch));
}
return rc;
}
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-putp(const char *string)
-{
- return NCURSES_SP_NAME(putp) (CURRENT_SCREEN, string);
-}
-
-NCURSES_EXPORT(int)
_nc_putp(const char *name, const char *string)
{
return NCURSES_SP_NAME(_nc_putp) (CURRENT_SCREEN, name, string);
@@ -216,9 +262,9 @@ NCURSES_SP_NAME(tputs) (NCURSES_SP_DCLx
if (USE_TRACEF(TRACE_TPUTS)) {
if (outc == NCURSES_SP_NAME(_nc_outch))
- (void) strcpy(addrbuf, "_nc_outch");
+ _nc_STRCPY(addrbuf, "_nc_outch", sizeof(addrbuf));
else
- (void) sprintf(addrbuf, "%p", outc);
+ _nc_SPRINTF(addrbuf, _nc_SLIMIT(sizeof(addrbuf)) "%p", outc);
if (_nc_tputs_trace) {
_tracef("tputs(%s = %s, %d, %s) called", _nc_tputs_trace,
_nc_visbuf(string), affcnt, addrbuf);
diff --git a/contrib/ncurses/ncurses/tinfo/lib_ttyflags.c b/contrib/ncurses/ncurses/tinfo/lib_ttyflags.c
index 663a06898090..700ec481271f 100644
--- a/contrib/ncurses/ncurses/tinfo/lib_ttyflags.c
+++ b/contrib/ncurses/ncurses/tinfo/lib_ttyflags.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free 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 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_ttyflags.c,v 1.27 2010/12/25 23:43:58 tom Exp $")
+MODULE_ID("$Id: lib_ttyflags.c,v 1.28 2012/01/21 19:21:29 KO.Myung-Hun Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(_nc_get_tty_mode) (NCURSES_SP_DCLx TTY * buf)
@@ -105,7 +105,11 @@ NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_DCLx TTY * buf)
result = CallDriver_2(SP_PARM, sgmode, TRUE, buf);
#else
for (;;) {
- if (SET_TTY(termp->Filedes, buf) != 0) {
+ if ((SET_TTY(termp->Filedes, buf) != 0)
+#if USE_KLIBC_KBD
+ && !isatty(termp->Filedes)
+#endif
+ ) {
if (errno == EINTR)
continue;
if ((errno == ENOTTY) && (SP_PARM != 0))
diff --git a/contrib/ncurses/ncurses/tinfo/make_hash.c b/contrib/ncurses/ncurses/tinfo/make_hash.c
index 15c281def50c..37ac7651424c 100644
--- a/contrib/ncurses/ncurses/tinfo/make_hash.c
+++ b/contrib/ncurses/ncurses/tinfo/make_hash.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -44,7 +44,7 @@
#include <ctype.h>
-MODULE_ID("$Id: make_hash.c,v 1.3 2010/05/22 18:02:50 tom Exp $")
+MODULE_ID("$Id: make_hash.c,v 1.13 2013/09/28 20:55:47 tom Exp $")
/*
* _nc_make_hash_table()
@@ -59,6 +59,24 @@ MODULE_ID("$Id: make_hash.c,v 1.3 2010/05/22 18:02:50 tom Exp $")
#define MODULE_ID(id) /*nothing */
#include <tinfo/doalloc.c>
+static void
+failed(const char *s)
+{
+ perror(s);
+ exit(EXIT_FAILURE);
+}
+
+static char *
+strmalloc(char *s)
+{
+ size_t need = strlen(s) + 1;
+ char *result = malloc(need);
+ if (result == 0)
+ failed("strmalloc");
+ _nc_STRCPY(result, s, need);
+ return result;
+}
+
/*
* int hash_function(string)
*
@@ -119,6 +137,18 @@ _nc_make_hash_table(struct name_table_entry *table,
#define MAX_COLUMNS BUFSIZ /* this _has_ to be worst-case */
+static int
+count_columns(char **list)
+{
+ int result = 0;
+ if (list != 0) {
+ while (*list++) {
+ ++result;
+ }
+ }
+ return result;
+}
+
static char **
parse_columns(char *buffer)
{
@@ -126,7 +156,7 @@ parse_columns(char *buffer)
int col = 0;
- if (list == 0 && (list = typeCalloc(char *, MAX_COLUMNS)) == 0)
+ if (list == 0 && (list = typeCalloc(char *, (MAX_COLUMNS + 1))) == 0)
return (0);
if (*buffer != '#') {
@@ -201,8 +231,15 @@ main(int argc, char **argv)
list = parse_columns(buffer);
if (list == 0) /* blank or comment */
continue;
+ if (column > count_columns(list)) {
+ fprintf(stderr, "expected %d columns, have %d:\n%s\n",
+ column,
+ count_columns(list),
+ buffer);
+ exit(EXIT_FAILURE);
+ }
name_table[n].nte_link = -1; /* end-of-hash */
- name_table[n].nte_name = strdup(list[column]);
+ name_table[n].nte_name = strmalloc(list[column]);
if (!strcmp(list[2], "bool")) {
name_table[n].nte_type = BOOLEAN;
name_table[n].nte_index = BoolCount++;
@@ -256,13 +293,12 @@ main(int argc, char **argv)
printf("static struct name_table_entry *_nc_%s_table = 0;\n\n", root_name);
} else {
- printf("static struct name_table_entry %s _nc_%s_table[] =\n",
- bigstring ? "" : "const",
+ printf("static struct name_table_entry const _nc_%s_table[] =\n",
root_name);
printf("{\n");
for (n = 0; n < CAPTABSIZE; n++) {
- sprintf(buffer, "\"%s\"",
- name_table[n].nte_name);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "\"%s\"",
+ name_table[n].nte_name);
printf("\t{ %15s,\t%10s,\t%3d, %3d }%c\n",
buffer,
typenames[name_table[n].nte_type],
diff --git a/contrib/ncurses/ncurses/tinfo/make_keys.c b/contrib/ncurses/ncurses/tinfo/make_keys.c
index a7854e3fe604..f44f7c77ff7e 100644
--- a/contrib/ncurses/ncurses/tinfo/make_keys.c
+++ b/contrib/ncurses/ncurses/tinfo/make_keys.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#define USE_TERMLIB 1
#include <build.priv.h>
-MODULE_ID("$Id: make_keys.c,v 1.19 2010/06/05 22:08:00 tom Exp $")
+MODULE_ID("$Id: make_keys.c,v 1.20 2011/10/22 16:34:50 tom Exp $")
#include <names.c>
@@ -76,7 +76,7 @@ make_keys(FILE *ifp, FILE *ofp)
unsigned maxlen = 16;
int scanned;
- while (fgets(buffer, sizeof(buffer), ifp) != 0) {
+ while (fgets(buffer, (int) sizeof(buffer), ifp) != 0) {
if (*buffer == '#')
continue;
diff --git a/contrib/ncurses/ncurses/tinfo/name_match.c b/contrib/ncurses/ncurses/tinfo/name_match.c
index a9ac64278888..c648535526d2 100644
--- a/contrib/ncurses/ncurses/tinfo/name_match.c
+++ b/contrib/ncurses/ncurses/tinfo/name_match.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2007,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -33,25 +33,38 @@
#include <curses.priv.h>
#include <tic.h>
-MODULE_ID("$Id: name_match.c,v 1.18 2008/11/16 00:19:59 juergen Exp $")
+MODULE_ID("$Id: name_match.c,v 1.23 2013/05/25 20:20:08 tom Exp $")
-/*
- * _nc_first_name(char *names)
- *
- * Extract the primary name from a compiled entry.
- */
#define FirstName _nc_globals.first_name
+#if NCURSES_USE_TERMCAP && NCURSES_XNAMES
+static const char *
+skip_index(const char *name)
+{
+ if ((_nc_syntax == SYN_TERMCAP) && _nc_user_definable) {
+ const char *bar = strchr(name, '|');
+ if (bar != 0 && (bar - name) == 2)
+ name = bar + 1;
+ }
+ return name;
+}
+#endif
+
+/*
+ * Get the primary name from the given name list. For terminfo, this is the
+ * first name. For termcap, this may be the second name, if the first one
+ * happens to be two characters.
+ */
NCURSES_EXPORT(char *)
_nc_first_name(const char *const sp)
-/* get the first name from the given name list */
{
unsigned n;
#if NO_LEAKS
if (sp == 0) {
- if (FirstName != 0)
+ if (FirstName != 0) {
FreeAndNull(FirstName);
+ }
} else
#endif
{
@@ -59,8 +72,12 @@ _nc_first_name(const char *const sp)
FirstName = typeMalloc(char, MAX_NAME_SIZE + 1);
if (FirstName != 0) {
+ const char *src = sp;
+#if NCURSES_USE_TERMCAP && NCURSES_XNAMES
+ src = skip_index(sp);
+#endif
for (n = 0; n < MAX_NAME_SIZE; n++) {
- if ((FirstName[n] = sp[n]) == '\0'
+ if ((FirstName[n] = src[n]) == '\0'
|| (FirstName[n] == '|'))
break;
}
@@ -71,11 +88,8 @@ _nc_first_name(const char *const sp)
}
/*
- * int _nc_name_match(namelist, name, delim)
- *
- * Is the given name matched in namelist?
+ * Is the given name matched in namelist?
*/
-
NCURSES_EXPORT(int)
_nc_name_match(const char *const namelst, const char *const name, const char *const delim)
{
diff --git a/contrib/ncurses/ncurses/base/memmove.c b/contrib/ncurses/ncurses/tinfo/obsolete.c
index 093ad72954ff..9b62917d7ccf 100644
--- a/contrib/ncurses/ncurses/base/memmove.c
+++ b/contrib/ncurses/ncurses/tinfo/obsolete.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2000,2007 Free Software Foundation, Inc. *
+ * Copyright (c) 2013 Free 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,54 @@
* authorization. *
****************************************************************************/
+/****************************************************************************
+ * Author: Thomas E. Dickey 2013 *
+ ****************************************************************************/
+
+/*
+** Support for obsolete features.
+*/
+
#include <curses.priv.h>
-MODULE_ID("$Id: memmove.c,v 1.5 2007/08/11 17:12:43 tom Exp $")
+MODULE_ID("$Id: obsolete.c,v 1.1 2013/01/26 22:07:51 tom Exp $")
-/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1998 *
- ****************************************************************************/
+/*
+ * Obsolete entrypoint retained for binary compatbility.
+ */
+NCURSES_EXPORT(void)
+NCURSES_SP_NAME(_nc_set_buffer) (NCURSES_SP_DCLx FILE *ofp, int buffered)
+{
+#if NCURSES_SP_FUNCS
+ (void) SP_PARM;
+#endif
+ (void) ofp;
+ (void) buffered;
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(void)
+_nc_set_buffer(FILE *ofp, int buffered)
+{
+ NCURSES_SP_NAME(_nc_set_buffer) (CURRENT_SCREEN, ofp, buffered);
+}
+#endif
+
+#if !HAVE_STRDUP
+NCURSES_EXPORT(char *)
+_nc_strdup(const char *s)
+{
+ char *result = 0;
+ if (s != 0) {
+ size_t need = strlen(s);
+ result = malloc(need + 1);
+ if (result != 0) {
+ strcpy(result, s);
+ }
+ }
+ return result;
+}
+#endif
#if USE_MY_MEMMOVE
#define DST ((char *)s1)
@@ -58,12 +99,4 @@ _nc_memmove(void *s1, const void *s2, size_t n)
}
return s1;
}
-#else
-extern
-NCURSES_EXPORT(void)
-_nc_memmove(void); /* quiet's gcc warning */
-NCURSES_EXPORT(void)
-_nc_memmove(void)
-{
-} /* nonempty for strict ANSI compilers */
#endif /* USE_MY_MEMMOVE */
diff --git a/contrib/ncurses/ncurses/tinfo/parse_entry.c b/contrib/ncurses/ncurses/tinfo/parse_entry.c
index ddbc25204fec..2936a64369a8 100644
--- a/contrib/ncurses/ncurses/tinfo/parse_entry.c
+++ b/contrib/ncurses/ncurses/tinfo/parse_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -47,7 +47,7 @@
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: parse_entry.c,v 1.75 2010/05/01 19:35:09 tom Exp $")
+MODULE_ID("$Id: parse_entry.c,v 1.79 2012/10/27 21:43:45 tom Exp $")
#ifdef LINT
static short const parametrized[] =
@@ -145,27 +145,27 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
case BOOLEAN:
tp->ext_Booleans++;
tp->num_Booleans++;
- tp->Booleans = typeRealloc(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans);
+ TYPE_REALLOC(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans);
for_each_value(tp->num_Booleans)
tp->Booleans[last] = tp->Booleans[last - 1];
break;
case NUMBER:
tp->ext_Numbers++;
tp->num_Numbers++;
- tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers);
+ TYPE_REALLOC(short, tp->num_Numbers, tp->Numbers);
for_each_value(tp->num_Numbers)
tp->Numbers[last] = tp->Numbers[last - 1];
break;
case STRING:
tp->ext_Strings++;
tp->num_Strings++;
- tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings);
+ TYPE_REALLOC(char *, tp->num_Strings, tp->Strings);
for_each_value(tp->num_Strings)
tp->Strings[last] = tp->Strings[last - 1];
break;
}
actual = NUM_EXT_NAMES(tp);
- tp->ext_Names = typeRealloc(char *, actual, tp->ext_Names);
+ TYPE_REALLOC(char *, actual, tp->ext_Names);
while (--actual > offset)
tp->ext_Names[actual] = tp->ext_Names[actual - 1];
tp->ext_Names[offset] = _nc_save_str(name);
@@ -203,6 +203,8 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
{ bad_tc_usage = TRUE; \
_nc_warning("Legacy termcap allows only a trailing tc= clause"); }
+#define MAX_NUMBER 0x7fff /* positive shorts only */
+
NCURSES_EXPORT(int)
_nc_parse_entry(struct entry *entryp, int literal, bool silent)
{
@@ -444,8 +446,12 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
break;
case NUMBER:
- entryp->tterm.Numbers[entry_ptr->nte_index] =
- (short) _nc_curr_token.tk_valnumber;
+ if (_nc_curr_token.tk_valnumber > MAX_NUMBER) {
+ entryp->tterm.Numbers[entry_ptr->nte_index] = MAX_NUMBER;
+ } else {
+ entryp->tterm.Numbers[entry_ptr->nte_index] =
+ (short) _nc_curr_token.tk_valnumber;
+ }
break;
case STRING:
@@ -654,14 +660,16 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
if (WANTED(carriage_return)) {
if (carriage_return_delay > 0) {
- sprintf(buf, "%s$<%d>", C_CR, carriage_return_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_CR, carriage_return_delay);
carriage_return = _nc_save_str(buf);
} else
carriage_return = _nc_save_str(C_CR);
}
if (WANTED(cursor_left)) {
if (backspace_delay > 0) {
- sprintf(buf, "%s$<%d>", C_BS, backspace_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_BS, backspace_delay);
cursor_left = _nc_save_str(buf);
} else if (backspaces_with_bs == 1)
cursor_left = _nc_save_str(C_BS);
@@ -674,7 +682,8 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
cursor_down = linefeed_if_not_lf;
else if (linefeed_is_newline != 1) {
if (new_line_delay > 0) {
- sprintf(buf, "%s$<%d>", C_LF, new_line_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_LF, new_line_delay);
cursor_down = _nc_save_str(buf);
} else
cursor_down = _nc_save_str(C_LF);
@@ -685,7 +694,8 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
cursor_down = linefeed_if_not_lf;
else if (linefeed_is_newline != 1) {
if (new_line_delay > 0) {
- sprintf(buf, "%s$<%d>", C_LF, new_line_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_LF, new_line_delay);
scroll_forward = _nc_save_str(buf);
} else
scroll_forward = _nc_save_str(C_LF);
@@ -694,7 +704,8 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
if (WANTED(newline)) {
if (linefeed_is_newline == 1) {
if (new_line_delay > 0) {
- sprintf(buf, "%s$<%d>", C_LF, new_line_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_LF, new_line_delay);
newline = _nc_save_str(buf);
} else
newline = _nc_save_str(C_LF);
@@ -736,7 +747,8 @@ postprocess_termcap(TERMTYPE *tp, bool has_base)
*/
if (WANTED(tab)) {
if (horizontal_tab_delay > 0) {
- sprintf(buf, "%s$<%d>", C_HT, horizontal_tab_delay);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf))
+ "%s$<%d>", C_HT, horizontal_tab_delay);
tab = _nc_save_str(buf);
} else
tab = _nc_save_str(C_HT);
diff --git a/contrib/ncurses/ncurses/tinfo/read_entry.c b/contrib/ncurses/ncurses/tinfo/read_entry.c
index e38b9cbe49d8..eeee0faedc22 100644
--- a/contrib/ncurses/ncurses/tinfo/read_entry.c
+++ b/contrib/ncurses/ncurses/tinfo/read_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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,11 +41,11 @@
#include <tic.h>
-MODULE_ID("$Id: read_entry.c,v 1.108 2011/02/26 15:36:06 tom Exp $")
+MODULE_ID("$Id: read_entry.c,v 1.126 2013/12/15 00:35:36 tom Exp $")
#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts))
-#if USE_DATABASE
+#if NCURSES_USE_DATABASE
static void
convert_shorts(char *buf, short *Numbers, int count)
{
@@ -99,7 +99,7 @@ fake_read(char *src, int *offset, int limit, char *dst, unsigned want)
if (have > 0) {
if ((int) want > have)
want = (unsigned) have;
- memcpy(dst, src + *offset, want);
+ memcpy(dst, src + *offset, (size_t) want);
*offset += (int) want;
} else {
want = 0;
@@ -107,22 +107,56 @@ fake_read(char *src, int *offset, int limit, char *dst, unsigned want)
return (int) want;
}
-#define Read(buf, count) fake_read(buffer, &offset, limit, buf, count)
+#define Read(buf, count) fake_read(buffer, &offset, limit, (char *) buf, (unsigned) count)
#define read_shorts(buf, count) \
- (Read(buf, (unsigned) (count)*2) == (int) (count)*2)
+ (Read(buf, (count)*2) == (int) (count)*2)
#define even_boundary(value) \
if ((value) % 2 != 0) Read(buf, 1)
+#endif
+
+NCURSES_EXPORT(void)
+_nc_init_termtype(TERMTYPE *const tp)
+{
+ unsigned i;
+
+#if NCURSES_XNAMES
+ tp->num_Booleans = BOOLCOUNT;
+ tp->num_Numbers = NUMCOUNT;
+ tp->num_Strings = STRCOUNT;
+ tp->ext_Booleans = 0;
+ tp->ext_Numbers = 0;
+ tp->ext_Strings = 0;
+#endif
+ if (tp->Booleans == 0)
+ TYPE_MALLOC(NCURSES_SBOOL, BOOLCOUNT, tp->Booleans);
+ if (tp->Numbers == 0)
+ TYPE_MALLOC(short, NUMCOUNT, tp->Numbers);
+ if (tp->Strings == 0)
+ TYPE_MALLOC(char *, STRCOUNT, tp->Strings);
+
+ for_each_boolean(i, tp)
+ tp->Booleans[i] = FALSE;
+
+ for_each_number(i, tp)
+ tp->Numbers[i] = ABSENT_NUMERIC;
+ for_each_string(i, tp)
+ tp->Strings[i] = ABSENT_STRING;
+}
+
+#if NCURSES_USE_DATABASE
+/*
+ * Return TGETENT_YES if read, TGETENT_NO if not found or garbled.
+ */
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 + 1];
+ char buf[MAX_ENTRY_SIZE + 2];
char *string_table;
unsigned want, have;
@@ -157,7 +191,7 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
want = (unsigned) (str_size + name_size + 1);
if (str_size) {
/* try to allocate space for the string table */
- if (str_count * 2 >= (int) sizeof(buf)
+ if (str_count * 2 >= MAX_ENTRY_SIZE
|| (string_table = typeMalloc(char, want)) == 0) {
return (TGETENT_NO);
}
@@ -173,7 +207,7 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
ptr->str_table = string_table;
ptr->term_names = string_table;
if ((have = (unsigned) Read(ptr->term_names, want)) != want) {
- memset(ptr->term_names + have, 0, want - have);
+ memset(ptr->term_names + have, 0, (size_t) (want - have));
}
ptr->term_names[want] = '\0';
string_table += (want + 1);
@@ -236,9 +270,9 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
unsigned need = (unsigned) (ext_bool_count + ext_num_count + ext_str_count);
int base = 0;
- if (need >= sizeof(buf)
- || ext_str_size >= (int) sizeof(buf)
- || ext_str_limit >= (int) sizeof(buf)
+ if (need >= (MAX_ENTRY_SIZE / 2)
+ || ext_str_size >= MAX_ENTRY_SIZE
+ || ext_str_limit >= MAX_ENTRY_SIZE
|| ext_bool_count < 0
|| ext_num_count < 0
|| ext_str_count < 0
@@ -250,9 +284,9 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
ptr->num_Numbers = UShort(NUMCOUNT + ext_num_count);
ptr->num_Strings = UShort(STRCOUNT + ext_str_count);
- 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);
+ TYPE_REALLOC(NCURSES_SBOOL, ptr->num_Booleans, ptr->Booleans);
+ TYPE_REALLOC(short, ptr->num_Numbers, ptr->Numbers);
+ TYPE_REALLOC(char *, ptr->num_Strings, ptr->Strings);
TR(TRACE_DATABASE, ("extended header is %d/%d/%d(%d:%d)",
ext_bool_count, ext_num_count, ext_str_count,
@@ -277,6 +311,8 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
}
TR(TRACE_DATABASE, ("READ extended-offsets @%d", offset));
+ if ((unsigned) (ext_str_count + (int) need) >= (MAX_ENTRY_SIZE / 2))
+ return (TGETENT_NO);
if ((ext_str_count || need)
&& !read_shorts(buf, ext_str_count + (int) need))
return (TGETENT_NO);
@@ -313,7 +349,7 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
}
if (need) {
- if (ext_str_count >= (MAX_ENTRY_SIZE * 2))
+ if (ext_str_count >= (MAX_ENTRY_SIZE / 2))
return (TGETENT_NO);
if ((ptr->ext_Names = TYPE_CALLOC(char *, need)) == 0)
return (TGETENT_NO);
@@ -326,17 +362,18 @@ _nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit)
ext_str_limit, ptr->ext_str_table + base);
}
- T(("...done reading terminfo bool %d(%d) num %d(%d) str %d(%d)",
- ptr->num_Booleans, ptr->ext_Booleans,
- ptr->num_Numbers, ptr->ext_Numbers,
- ptr->num_Strings, ptr->ext_Strings));
+ TR(TRACE_DATABASE,
+ ("...done reading terminfo bool %d(%d) num %d(%d) str %d(%d)",
+ ptr->num_Booleans, ptr->ext_Booleans,
+ ptr->num_Numbers, ptr->ext_Numbers,
+ ptr->num_Strings, ptr->ext_Strings));
TR(TRACE_DATABASE, ("extend: num_Booleans:%d", ptr->num_Booleans));
} else
#endif /* NCURSES_XNAMES */
{
- T(("...done reading terminfo bool %d num %d str %d",
- bool_count, num_count, str_count));
+ TR(TRACE_DATABASE, ("...done reading terminfo bool %d num %d str %d",
+ bool_count, num_count, str_count));
#if NCURSES_XNAMES
TR(TRACE_DATABASE, ("normal: num_Booleans:%d", ptr->num_Booleans));
#endif
@@ -371,13 +408,13 @@ _nc_read_file_entry(const char *const filename, TERMTYPE *ptr)
if (_nc_access(filename, R_OK) < 0
|| (fp = fopen(filename, "rb")) == 0) {
- T(("cannot open terminfo %s (errno=%d)", filename, errno));
+ TR(TRACE_DATABASE, ("cannot open terminfo %s (errno=%d)", filename, errno));
code = TGETENT_NO;
} else {
if ((limit = (int) fread(buffer, sizeof(char), sizeof(buffer), fp))
> 0) {
- T(("read terminfo %s", filename));
+ TR(TRACE_DATABASE, ("read terminfo %s", filename));
if ((code = _nc_read_termtype(ptr, buffer, limit)) == TGETENT_NO) {
_nc_free_termtype(ptr);
}
@@ -390,6 +427,58 @@ _nc_read_file_entry(const char *const filename, TERMTYPE *ptr)
return (code);
}
+#if USE_HASHED_DB
+/*
+ * Return if if we can build the filename of a ".db" file.
+ */
+static bool
+make_db_filename(char *filename, unsigned limit, const char *const path)
+{
+ static const char suffix[] = DBM_SUFFIX;
+
+ size_t lens = sizeof(suffix) - 1;
+ size_t size = strlen(path);
+ size_t test = lens + size;
+ bool result = FALSE;
+
+ if (test < limit) {
+ if (size >= lens
+ && !strcmp(path + size - lens, suffix))
+ _nc_STRCPY(filename, path, limit);
+ else
+ _nc_SPRINTF(filename, _nc_SLIMIT(limit) "%s%s", path, suffix);
+ result = TRUE;
+ }
+ return result;
+}
+#endif
+
+/*
+ * Return true if we can build the name of a filesystem entry.
+ */
+static bool
+make_dir_filename(char *filename,
+ unsigned limit,
+ const char *const path,
+ const char *name)
+{
+ bool result = FALSE;
+
+#if NCURSES_USE_TERMCAP
+ if (_nc_is_dir_path(path))
+#endif
+ {
+ unsigned need = (unsigned) (LEAF_LEN + 3 + strlen(path) + strlen(name));
+
+ if (need <= limit) {
+ _nc_SPRINTF(filename, _nc_SLIMIT(limit)
+ "%s/" LEAF_FMT "/%s", path, *name, name);
+ result = TRUE;
+ }
+ }
+ return result;
+}
+
/*
* Build a terminfo pathname and try to read the data. Returns TGETENT_YES on
* success, TGETENT_NO on failure.
@@ -401,103 +490,82 @@ _nc_read_tic_entry(char *filename,
const char *name,
TERMTYPE *const tp)
{
- int result = TGETENT_NO;
-
- /*
- * If we are looking in a directory, assume the entry is a file under that,
- * according to the normal rules.
- */
- unsigned need = (unsigned) (LEAF_LEN + 3 + strlen(path) + strlen(name));
- if (need <= limit)
- (void) sprintf(filename, "%s/" LEAF_FMT "/%s", path, *name, name);
+ int code = TGETENT_NO;
- if (_nc_is_dir_path(path))
- 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 test = lens + size;
-
- if (test < limit) {
- if (size >= lens
- && !strcmp(path + size - lens, suffix))
- (void) strcpy(filename, path);
- else
- (void) sprintf(filename, "%s%s", path, suffix);
+ DB *capdbp;
+
+ if (make_db_filename(filename, limit, path)
+ && (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 = (int) data.size - 1;
+ char *have = (char *) data.data;
+
+ if (*have++ == 0) {
+ if (data.size > key.size
+ && IS_TIC_MAGIC(have)) {
+ code = _nc_read_termtype(tp, have, used);
+ if (code == TGETENT_NO) {
+ _nc_free_termtype(tp);
+ }
+ }
+ break;
+ }
/*
- * 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.
+ * Just in case we have a corrupt database, do not waste time with
+ * it.
*/
- 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;
- }
+ if (++reccnt >= 3)
+ break;
- _nc_db_close(capdbp);
- free(save);
- }
+ /*
+ * Prepare for the second level.
+ */
+ key.data = have;
+ key.size = used;
}
+
+ free(save);
+ } else /* may be either filesystem or flat file */
+#endif
+ if (make_dir_filename(filename, limit, path, name)) {
+ code = _nc_read_file_entry(filename, tp);
+ }
+#if NCURSES_USE_TERMCAP
+ else if (code != TGETENT_YES) {
+ code = _nc_read_termcap_entry(name, tp);
+ _nc_SPRINTF(filename, _nc_SLIMIT(PATH_MAX)
+ "%.*s", PATH_MAX - 1, _nc_get_source());
}
#endif
- return result;
+ return code;
}
-#endif /* USE_DATABASE */
+#endif /* NCURSES_USE_DATABASE */
/*
* _nc_read_entry(char *name, char *filename, TERMTYPE *tp)
@@ -513,31 +581,35 @@ _nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp)
{
int code = TGETENT_NO;
- sprintf(filename, "%.*s", PATH_MAX - 1, name);
+ _nc_SPRINTF(filename, _nc_SLIMIT(PATH_MAX)
+ "%.*s", PATH_MAX - 1, name);
+
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));
+ TR(TRACE_DATABASE, ("illegal or missing entry name '%s'", name));
} else {
-#if USE_DATABASE
- DBDIRS state = dbdTIC;
- int offset = 0;
+#if NCURSES_USE_DATABASE
+ DBDIRS state;
+ int offset;
const char *path;
+ _nc_first_db(&state, &offset);
while ((path = _nc_next_db(&state, &offset)) != 0) {
+ TR(TRACE_DATABASE, ("_nc_read_tic_entry path=%s, name=%s", path, name));
code = _nc_read_tic_entry(filename, PATH_MAX, path, name, tp);
if (code == TGETENT_YES) {
_nc_last_db();
break;
}
}
-#endif
-#if USE_TERMCAP
+#elif NCURSES_USE_TERMCAP
if (code != TGETENT_YES) {
code = _nc_read_termcap_entry(name, tp);
- sprintf(filename, "%.*s", PATH_MAX - 1, _nc_get_source());
+ _nc_SPRINTF(filename, _nc_SLIMIT(PATH_MAX)
+ "%.*s", PATH_MAX - 1, _nc_get_source());
}
#endif
}
diff --git a/contrib/ncurses/ncurses/tinfo/read_termcap.c b/contrib/ncurses/ncurses/tinfo/read_termcap.c
index b39a5bebaa47..6bfb23cdc643 100644
--- a/contrib/ncurses/ncurses/tinfo/read_termcap.c
+++ b/contrib/ncurses/ncurses/tinfo/read_termcap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -54,10 +54,9 @@
#include <ctype.h>
#include <sys/types.h>
-#include <sys/stat.h>
#include <tic.h>
-MODULE_ID("$Id: read_termcap.c,v 1.74 2010/01/23 17:57:43 tom Exp $")
+MODULE_ID("$Id: read_termcap.c,v 1.89 2013/12/15 00:32:43 tom Exp $")
#if !PURE_TERMINFO
@@ -74,7 +73,7 @@ get_termpath(void)
if (!use_terminfo_vars() || (result = getenv("TERMPATH")) == 0)
result = TERMPATH;
- T(("TERMPATH is %s", result));
+ TR(TRACE_DATABASE, ("TERMPATH is %s", result));
return result;
}
@@ -162,7 +161,7 @@ _nc_cgetset(const char *ent)
return (-1);
}
gottoprec = 0;
- (void) strcpy(toprec, ent);
+ _nc_STRCPY(toprec, ent, topreclen);
return (0);
}
@@ -295,7 +294,7 @@ _nc_getent(
errno = ENOMEM;
return (TC_SYS_ERR);
}
- (void) strcpy(record, toprec);
+ _nc_STRCPY(record, toprec, topreclen + BFRAG);
rp = record + topreclen + 1;
r_end = rp + BFRAG;
current = in_array;
@@ -384,7 +383,14 @@ _nc_getent(
c = *bp++;
if (c == '\n') {
lineno++;
- if (rp == record || *(rp - 1) != '\\')
+ /*
+ * Unlike BSD 4.3, this ignores a backslash at the
+ * end of a comment-line. That makes it consistent
+ * with the rest of ncurses -TD
+ */
+ if (rp == record
+ || *record == '#'
+ || *(rp - 1) != '\\')
break;
}
*rp++ = c;
@@ -442,8 +448,10 @@ _nc_getent(
break;
}
- if (!foundit)
+ if (!foundit) {
+ free(record);
return (TC_NOT_FOUND);
+ }
}
/*
@@ -455,7 +463,7 @@ _nc_getent(
register int newilen;
unsigned ilen;
int diff, iret, tclen, oline;
- char *icap, *scan, *tc, *tcstart, *tcend;
+ char *icap = 0, *scan, *tc, *tcstart, *tcend;
/*
* Loop invariants:
@@ -468,8 +476,9 @@ _nc_getent(
scan = record;
tc_not_resolved = FALSE;
for (;;) {
- if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0)
+ if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0) {
break;
+ }
/*
* Find end of tc=name and stomp on the trailing `:'
@@ -486,6 +495,7 @@ _nc_getent(
tclen = s - tcstart;
tcend = s;
+ icap = 0;
iret = _nc_getent(&icap, &ilen, &oline, current, db_array, fd,
tc, depth + 1, 0);
newicap = icap; /* Put into a register. */
@@ -496,12 +506,13 @@ _nc_getent(
if (myfd)
(void) close(fd);
free(record);
+ FreeIfNeeded(icap);
return (iret);
}
- if (iret == TC_UNRESOLVED)
+ if (iret == TC_UNRESOLVED) {
tc_not_resolved = TRUE;
- /* couldn't resolve tc */
- if (iret == TC_NOT_FOUND) {
+ /* couldn't resolve tc */
+ } else if (iret == TC_NOT_FOUND) {
*(s - 1) = ':';
scan = s - 1;
tc_not_resolved = TRUE;
@@ -581,8 +592,9 @@ _nc_getent(
}
*cap = record;
- if (tc_not_resolved)
+ if (tc_not_resolved) {
return (TC_UNRESOLVED);
+ }
return (current);
}
@@ -697,8 +709,6 @@ _nc_nfcmp(const char *nf, char *rec)
#define PVECSIZ 32 /* max number of names in path */
#define TBUFSIZ (2048*2)
-static char *tbuf;
-
/*
* On entry, srcp points to a non ':' character which is the beginning of the
* token, if any. We'll try to return a string that doesn't end with a ':'.
@@ -760,7 +770,7 @@ copy_tc_token(char *dst, const char *src, size_t len)
dst = 0;
break;
}
- *dst++ = ch;
+ *dst++ = (char) ch;
}
return dst;
}
@@ -776,18 +786,16 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
register char *p;
register char *cp;
char *dummy = NULL;
- char **fname;
+ CGETENT_CONST char **fname;
char *home;
int i;
char pathbuf[PBUFSIZ]; /* holds raw path of filenames */
- char *pathvec[PVECSIZ]; /* to point to names in pathbuf */
- char **pvec; /* holds usable tail of path vector */
+ CGETENT_CONST char *pathvec[PVECSIZ]; /* point to names in pathbuf */
NCURSES_CONST char *termpath;
string_desc desc;
+ *lineno = 1;
fname = pathvec;
- pvec = pathvec;
- tbuf = bp;
p = pathbuf;
cp = use_terminfo_vars()? getenv("TERMCAP") : NULL;
@@ -812,10 +820,11 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
if ((home = getenv("HOME")) != 0 && *home != '\0'
&& strchr(home, ' ') == 0
&& strlen(home) < sizeof(temp) - 10) { /* setup path */
- sprintf(temp, "%s/", home); /* $HOME first */
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "%s/", home); /* $HOME first */
}
/* if no $HOME look in current directory */
- strcat(temp, ".termcap");
+ _nc_STRCAT(temp, ".termcap", sizeof(temp));
_nc_safe_strcat(&desc, temp);
_nc_safe_strcat(&desc, " ");
_nc_safe_strcat(&desc, get_termpath());
@@ -841,6 +850,9 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
}
}
*fname = 0; /* mark end of vector */
+#if !HAVE_BSD_CGETENT
+ (void) _nc_cgetset(0);
+#endif
if (_nc_is_abs_path(cp)) {
if (_nc_cgetset(cp) < 0) {
return (TC_SYS_ERR);
@@ -853,6 +865,7 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
* empty fields, and mistakenly use the last valid cap entry instead of
* the first (breaks tc= includes)
*/
+ *bp = '\0';
if (i >= 0) {
char *pd, *ps, *tok;
int endflag = FALSE;
@@ -874,7 +887,7 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
}
if (ignore != TRUE) {
list[count++] = tok;
- pd = copy_tc_token(pd, tok, TBUFSIZ - (2 + pd - bp));
+ pd = copy_tc_token(pd, tok, (size_t) (TBUFSIZ - (2 + pd - bp)));
if (pd == 0) {
i = -1;
break;
@@ -932,7 +945,7 @@ add_tc(char *termpaths[], char *path, int count)
if (count < MAXPATHS
&& _nc_access(path, R_OK) == 0) {
termpaths[count++] = path;
- T(("Adding termpath %s", path));
+ TR(TRACE_DATABASE, ("Adding termpath %s", path));
}
termpaths[count] = 0;
if (save != 0)
@@ -956,13 +969,13 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
static char *source;
static int lineno;
- T(("read termcap entry for %s", tn));
+ TR(TRACE_DATABASE, ("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));
+ TR(TRACE_DATABASE, ("illegal or missing entry name '%s'", tn));
return TGETENT_NO;
}
@@ -980,7 +993,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
_nc_curr_line = lineno;
_nc_set_source(source);
}
- _nc_read_entry_source((FILE *) 0, tc, FALSE, FALSE, NULLHOOK);
+ _nc_read_entry_source((FILE *) 0, tc, FALSE, TRUE, NULLHOOK);
#else
/*
* Here is what the 4.4BSD termcap(3) page prescribes:
@@ -1027,7 +1040,9 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
normal = FALSE;
} else if (_nc_name_match(tc, tn, "|:")) { /* treat as a capability file */
use_buffer = TRUE;
- (void) sprintf(tc_buf, "%.*s\n", (int) sizeof(tc_buf) - 2, tc);
+ _nc_SPRINTF(tc_buf,
+ _nc_SLIMIT(sizeof(tc_buf))
+ "%.*s\n", (int) sizeof(tc_buf) - 2, tc);
normal = FALSE;
}
}
@@ -1049,8 +1064,9 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
if (use_terminfo_vars() && (h = getenv("HOME")) != NULL && *h != '\0'
&& (strlen(h) + sizeof(PRIVATE_CAP)) < PATH_MAX) {
/* user's .termcap, if any, should override it */
- (void) strcpy(envhome, h);
- (void) sprintf(pathbuf, PRIVATE_CAP, envhome);
+ _nc_STRCPY(envhome, h, sizeof(envhome));
+ _nc_SPRINTF(pathbuf, _nc_SLIMIT(sizeof(pathbuf))
+ PRIVATE_CAP, envhome);
ADD_TC(pathbuf, filecount);
}
}
@@ -1063,7 +1079,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
for (j = 0; j < filecount; j++) {
bool omit = FALSE;
if (stat(termpaths[j], &test_stat[j]) != 0
- || (test_stat[j].st_mode & S_IFMT) != S_IFREG) {
+ || !S_ISREG(test_stat[j].st_mode)) {
omit = TRUE;
} else {
for (k = 0; k < j; k++) {
@@ -1075,7 +1091,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
}
}
if (omit) {
- T(("Path %s is a duplicate", termpaths[j]));
+ TR(TRACE_DATABASE, ("Path %s is a duplicate", termpaths[j]));
for (k = j + 1; k < filecount; k++) {
termpaths[k - 1] = termpaths[k];
test_stat[k - 1] = test_stat[k];
@@ -1100,7 +1116,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
for (i = 0; i < filecount; i++) {
- T(("Looking for %s in %s", tn, termpaths[i]));
+ TR(TRACE_DATABASE, ("Looking for %s in %s", tn, termpaths[i]));
if (_nc_access(termpaths[i], R_OK) == 0
&& (fp = fopen(termpaths[i], "r")) != (FILE *) 0) {
_nc_set_source(termpaths[i]);
@@ -1138,8 +1154,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
* from the list.
*/
*tp = ep->tterm;
- _nc_delink_entry(_nc_head, &(ep->tterm));
- free(ep);
+ _nc_free_entry(_nc_head, &(ep->tterm));
/*
* OK, now try to write the type to user's terminfo directory.
diff --git a/contrib/ncurses/ncurses/tinfo/setbuf.c b/contrib/ncurses/ncurses/tinfo/setbuf.c
deleted file mode 100644
index a2e2660c8664..000000000000
--- a/contrib/ncurses/ncurses/tinfo/setbuf.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************/
-
-/****************************************************************************
- * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
- * and: Eric S. Raymond <esr@snark.thyrsus.com> *
- * and: Thomas E. Dickey 1996-on *
- * and: Juergen Pfeifer 2008 *
- ****************************************************************************/
-
-/*
-** setbuf.c
-**
-** Support for set_term(), reset_shell_mode(), reset_prog_mode().
-**
-*/
-
-#include <curses.priv.h>
-
-MODULE_ID("$Id: setbuf.c,v 1.16 2010/08/28 21:08:31 tom Exp $")
-
-/*
- * If the output file descriptor is connected to a tty (the typical case) it
- * will probably be line-buffered. Keith Bostic pointed out that we don't want
- * this; it hoses people running over networks by forcing out a bunch of small
- * packets instead of one big one, so screen updates on ptys look jerky.
- * Restore block buffering to prevent this minor lossage.
- *
- * The buffer size is a compromise. Ideally we'd like a buffer that can hold
- * the maximum possible update size (the whole screen plus cup commands to
- * change lines as it's painted). On a 66-line xterm this can become
- * excessive. So we min it with the amount of data we think we can get through
- * two Ethernet packets (maximum packet size - 100 for TCP/IP overhead).
- *
- * Why two ethernet packets? It used to be one, on the theory that said
- * packets define the maximum size of atomic update. But that's less than the
- * 2000 chars on a 25 x 80 screen, and we don't want local updates to flicker
- * either. Two packet lengths will handle up to a 35 x 80 screen.
- *
- * The magic '6' is the estimated length of the end-of-line cup sequence to go
- * to the next line. It's generous. We used to mess with the buffering in
- * init_mvcur() after cost computation, but that lost the sequences emitted by
- * init_acs() in setupscreen().
- *
- * "The setvbuf function may be used only after the stream pointed to by stream
- * has been associated with an open file and before any other operation is
- * performed on the stream." (ISO 7.9.5.6.)
- *
- * Grrrr...
- *
- * On a lighter note, many implementations do in fact allow an application to
- * reset the buffering after it has been written to. We try to do this because
- * otherwise we leave stdout in buffered mode after endwin() is called. (This
- * also happens with SVr4 curses).
- *
- * There are pros/cons:
- *
- * con:
- * There is no guarantee that we can reestablish buffering once we've
- * dropped it.
- *
- * We _may_ lose data if the implementation does not coordinate this with
- * fflush.
- *
- * pro:
- * An implementation is more likely to refuse to change the buffering than
- * to do it in one of the ways mentioned above.
- *
- * The alternative is to have the application try to change buffering
- * itself, which is certainly no improvement.
- *
- * Just in case it does not work well on a particular system, the calls to
- * change buffering are all via the macro NC_BUFFERED. Some implementations
- * do indeed get confused by changing setbuf on/off, and will overrun the
- * buffer. So we disable this by default (there may yet be a workaround).
- */
-NCURSES_EXPORT(void)
-NCURSES_SP_NAME(_nc_set_buffer) (NCURSES_SP_DCLx FILE *ofp, bool buffered)
-{
- int Cols;
- int Lines;
-
- if (0 == SP_PARM)
- return;
-
- Cols = *(ptrCols(SP_PARM));
- Lines = *(ptrLines(SP_PARM));
-
- /* optional optimization hack -- do before any output to ofp */
-#if HAVE_SETVBUF || HAVE_SETBUFFER
- if (SP_PARM->_buffered != buffered) {
- unsigned buf_len;
- char *buf_ptr;
-
- if (getenv("NCURSES_NO_SETBUF") != 0)
- return;
-
- fflush(ofp);
-#ifdef __DJGPP__
- setmode(ofp, O_BINARY);
-#endif
- if (buffered != 0) {
- buf_len = (unsigned) min(Lines * (Cols + 6), 2800);
- if ((buf_ptr = SP_PARM->_setbuf) == 0) {
- if ((buf_ptr = typeMalloc(char, buf_len)) == NULL)
- return;
- SP_PARM->_setbuf = buf_ptr;
- /* Don't try to free this! */
- }
-#if !USE_SETBUF_0
- else
- return;
-#endif
- } else {
-#if !USE_SETBUF_0
- return;
-#else
- buf_len = 0;
- buf_ptr = 0;
-#endif
- }
-
-#if HAVE_SETVBUF
-#ifdef SETVBUF_REVERSED /* pre-svr3? */
- (void) setvbuf(ofp, buf_ptr, buf_len, buf_len ? _IOFBF : _IOLBF);
-#else
- (void) setvbuf(ofp, buf_ptr, buf_len ? _IOFBF : _IOLBF, buf_len);
-#endif
-#elif HAVE_SETBUFFER
- (void) setbuffer(ofp, buf_ptr, (int) buf_len);
-#endif
-
- SP_PARM->_buffered = buffered;
- }
-#endif /* HAVE_SETVBUF || HAVE_SETBUFFER */
-}
-
-#if NCURSES_SP_FUNCS
-NCURSES_EXPORT(void)
-_nc_set_buffer(FILE *ofp, bool buffered)
-{
- NCURSES_SP_NAME(_nc_set_buffer) (CURRENT_SCREEN, ofp, buffered);
-}
-#endif
diff --git a/contrib/ncurses/ncurses/tinfo/strings.c b/contrib/ncurses/ncurses/tinfo/strings.c
index 78cd2ef4f5f5..393d8e7cab3e 100644
--- a/contrib/ncurses/ncurses/tinfo/strings.c
+++ b/contrib/ncurses/ncurses/tinfo/strings.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2000-2003,2007 Free Software Foundation, Inc. *
+ * Copyright (c) 2000-2007,2012 Free 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.6 2007/08/11 17:12:17 tom Exp $")
+MODULE_ID("$Id: strings.c,v 1.8 2012/02/22 22:34:31 tom Exp $")
/****************************************************************************
* Useful string functions (especially for mvcur)
@@ -110,7 +110,7 @@ _nc_safe_strcat(string_desc * dst, const char *src)
if (len < dst->s_size) {
if (dst->s_tail != 0) {
- strcpy(dst->s_tail, src);
+ _nc_STRCPY(dst->s_tail, src, dst->s_size);
dst->s_tail += len;
}
dst->s_size -= len;
@@ -131,7 +131,7 @@ _nc_safe_strcpy(string_desc * dst, const char *src)
if (len < dst->s_size) {
if (dst->s_head != 0) {
- strcpy(dst->s_head, src);
+ _nc_STRCPY(dst->s_head, src, dst->s_size);
dst->s_tail = dst->s_head + len;
}
dst->s_size = dst->s_init - len;
diff --git a/contrib/ncurses/ncurses/tinfo/tinfo_driver.c b/contrib/ncurses/ncurses/tinfo/tinfo_driver.c
index 5b3b55a4519e..11431996f802 100644
--- a/contrib/ncurses/ncurses/tinfo/tinfo_driver.c
+++ b/contrib/ncurses/ncurses/tinfo/tinfo_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -50,7 +50,7 @@
# endif
#endif
-MODULE_ID("$Id: tinfo_driver.c,v 1.13 2010/12/20 01:47:09 tom Exp $")
+MODULE_ID("$Id: tinfo_driver.c,v 1.32 2013/08/31 15:22:46 tom Exp $")
/*
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
@@ -93,7 +93,7 @@ NCURSES_EXPORT_VAR(int) COLORS = 0;
#define TCBMAGIC NCDRV_MAGIC(NCDRV_TINFO)
#define AssertTCB() assert(TCB!=0 && TCB->magic==TCBMAGIC)
-#define SetSP() assert(TCB->csp!=0); sp = TCB->csp
+#define SetSP() assert(TCB->csp!=0); sp = TCB->csp; (void) sp
/*
* This routine needs to do all the work to make curscr look
@@ -106,22 +106,6 @@ drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
return TINFO_DOUPDATE(TCB->csp);
}
-#define ret_error(code, fmt, arg) if (errret) {\
- *errret = code;\
- return(FALSE); \
- } else {\
- fprintf(stderr, fmt, arg);\
- exit(EXIT_FAILURE);\
- }
-
-#define ret_error0(code, msg) if (errret) {\
- *errret = code;\
- return(FALSE);\
- } else {\
- fprintf(stderr, msg);\
- exit(EXIT_FAILURE);\
- }
-
static bool
drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
{
@@ -135,7 +119,7 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
sp = TCB->csp;
TCB->magic = TCBMAGIC;
-#if (USE_DATABASE || USE_TERMCAP)
+#if (NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP)
status = _nc_setup_tinfo(tname, &termp->type);
#else
status = TGETENT_NO;
@@ -156,12 +140,12 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
if (status == TGETENT_ERR) {
ret_error0(status, "terminals database is inaccessible\n");
} else if (status == TGETENT_NO) {
- ret_error(status, "'%s': unknown terminal type.\n", tname);
+ ret_error1(status, "unknown terminal type.\n", tname);
}
}
result = TRUE;
#if !USE_REENTRANT
- strncpy(ttytype, termp->type.term_names, NAMESIZE - 1);
+ strncpy(ttytype, termp->type.term_names, (size_t) NAMESIZE - 1);
ttytype[NAMESIZE - 1] = '\0';
#endif
@@ -169,17 +153,27 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret)
_nc_tinfo_cmdch(termp, *command_character);
if (generic_type) {
- ret_error(TGETENT_NO, "'%s': I need something more specific.\n", tname);
+ /*
+ * BSD 4.3's termcap contains mis-typed "gn" for wy99. Do a sanity
+ * check before giving up.
+ */
+ if ((VALID_STRING(cursor_address)
+ || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home)))
+ && VALID_STRING(clear_screen)) {
+ ret_error1(TGETENT_YES, "terminal is not really generic.\n", tname);
+ } else {
+ ret_error1(TGETENT_NO, "I need something more specific.\n", tname);
+ }
}
if (hard_copy) {
- ret_error(TGETENT_YES, "'%s': I can't handle hardcopy terminals.\n", tname);
+ ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", tname);
}
return result;
}
static int
-drv_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB, bool beepFlag)
+drv_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB, int beepFlag)
{
SCREEN *sp;
int res = ERR;
@@ -190,22 +184,18 @@ drv_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB, bool beepFlag)
/* FIXME: should make sure that we are not in altchar mode */
if (beepFlag) {
if (bell) {
- res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "bell", bell);
+ res = NCURSES_PUTP2("bell", bell);
NCURSES_SP_NAME(_nc_flush) (sp);
} else if (flash_screen) {
- res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "flash_screen",
- flash_screen);
+ res = NCURSES_PUTP2("flash_screen", flash_screen);
NCURSES_SP_NAME(_nc_flush) (sp);
}
} else {
if (flash_screen) {
- res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "flash_screen",
- flash_screen);
+ res = NCURSES_PUTP2("flash_screen", flash_screen);
NCURSES_SP_NAME(_nc_flush) (sp);
} else if (bell) {
- res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "bell", bell);
+ res = NCURSES_PUTP2("bell", bell);
NCURSES_SP_NAME(_nc_flush) (sp);
}
}
@@ -277,7 +267,7 @@ drv_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB, int fg, int bg)
static void
drv_setcolor(TERMINAL_CONTROL_BLOCK * TCB,
- bool fore,
+ int fore,
int color,
NCURSES_SP_OUTC outc)
{
@@ -321,7 +311,7 @@ drv_rescol(TERMINAL_CONTROL_BLOCK * TCB)
SetSP();
if (orig_pair != 0) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "orig_pair", orig_pair);
+ NCURSES_PUTP2("orig_pair", orig_pair);
result = TRUE;
}
return result;
@@ -337,7 +327,7 @@ drv_rescolors(TERMINAL_CONTROL_BLOCK * TCB)
SetSP();
if (orig_colors != 0) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "orig_colors", orig_colors);
+ NCURSES_PUTP2("orig_colors", orig_colors);
result = TRUE;
}
return result;
@@ -348,14 +338,18 @@ drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *linep, int *colp)
{
SCREEN *sp;
bool useEnv = TRUE;
+ bool useTioctl = TRUE;
AssertTCB();
sp = TCB->csp; /* can be null here */
if (sp) {
useEnv = sp->_use_env;
- } else
+ useTioctl = sp->_use_tioctl;
+ } else {
useEnv = _nc_prescreen.use_env;
+ useTioctl = _nc_prescreen.use_tioctl;
+ }
/* figure out the size of the screen */
T(("screen size: terminfo lines = %d columns = %d", lines, columns));
@@ -363,7 +357,7 @@ drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *linep, int *colp)
*linep = (int) lines;
*colp = (int) columns;
- if (useEnv) {
+ if (useEnv || useTioctl) {
int value;
#ifdef __EMX__
@@ -371,7 +365,9 @@ drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *linep, int *colp)
int screendata[2];
_scrsize(screendata);
*colp = screendata[0];
- *linep = screendata[1];
+ *linep = ((sp != 0 && sp->_filtered)
+ ? 1
+ : screendata[1]);
T(("EMX screen size: environment LINES = %d COLUMNS = %d",
*linep, *colp));
}
@@ -400,19 +396,33 @@ drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *linep, int *colp)
}
#endif /* HAVE_SIZECHANGE */
- /*
- * Finally, look for environment variables.
- *
- * Solaris lets users override either dimension with an environment
- * variable.
- */
- if ((value = _nc_getenv_num("LINES")) > 0) {
- *linep = value;
- T(("screen size: environment LINES = %d", *linep));
- }
- if ((value = _nc_getenv_num("COLUMNS")) > 0) {
- *colp = value;
- T(("screen size: environment COLUMNS = %d", *colp));
+ if (useEnv) {
+ if (useTioctl) {
+ /*
+ * If environment variables are used, update them.
+ */
+ if ((sp == 0 || !sp->_filtered) && _nc_getenv_num("LINES") > 0) {
+ _nc_setenv_num("LINES", *linep);
+ }
+ if (_nc_getenv_num("COLUMNS") > 0) {
+ _nc_setenv_num("COLUMNS", *colp);
+ }
+ }
+
+ /*
+ * Finally, look for environment variables.
+ *
+ * Solaris lets users override either dimension with an environment
+ * variable.
+ */
+ if ((value = _nc_getenv_num("LINES")) > 0) {
+ *linep = value;
+ T(("screen size: environment LINES = %d", *linep));
+ }
+ if ((value = _nc_getenv_num("COLUMNS")) > 0) {
+ *colp = value;
+ T(("screen size: environment COLUMNS = %d", *colp));
+ }
}
/* if we can't get dynamic info about the size, use static */
@@ -463,7 +473,7 @@ drv_setsize(TERMINAL_CONTROL_BLOCK * TCB, int l, int c)
}
static int
-drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, bool setFlag, TTY * buf)
+drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, int setFlag, TTY * buf)
{
SCREEN *sp = TCB->csp;
TERMINAL *_term = (TERMINAL *) TCB;
@@ -497,7 +507,7 @@ drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, bool setFlag, TTY * buf)
}
static int
-drv_mode(TERMINAL_CONTROL_BLOCK * TCB, bool progFlag, bool defFlag)
+drv_mode(TERMINAL_CONTROL_BLOCK * TCB, int progFlag, int defFlag)
{
SCREEN *sp;
TERMINAL *_term = (TERMINAL *) TCB;
@@ -620,15 +630,13 @@ drv_screen_init(SCREEN *sp)
static void
drv_init(TERMINAL_CONTROL_BLOCK * TCB)
{
- SCREEN *sp;
TERMINAL *trm;
AssertTCB();
trm = (TERMINAL *) TCB;
- sp = TCB->csp;
- TCB->info.initcolor = initialize_color;
+ TCB->info.initcolor = VALID_STRING(initialize_color);
TCB->info.canchange = can_change;
TCB->info.hascolor = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs)
&& (((set_foreground != NULL)
@@ -665,7 +673,7 @@ drv_init(TERMINAL_CONTROL_BLOCK * TCB)
#define InPalette(n) ((n) >= 0 && (n) < MAX_PALETTE)
static void
-drv_initpair(TERMINAL_CONTROL_BLOCK * TCB, short pair, short f, short b)
+drv_initpair(TERMINAL_CONTROL_BLOCK * TCB, int pair, int f, int b)
{
SCREEN *sp;
@@ -681,12 +689,11 @@ drv_initpair(TERMINAL_CONTROL_BLOCK * TCB, short pair, short f, short b)
tp[f].red, tp[f].green, tp[f].blue,
tp[b].red, tp[b].green, tp[b].blue));
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "initialize_pair",
- TPARM_7(initialize_pair,
- pair,
- tp[f].red, tp[f].green, tp[f].blue,
- tp[b].red, tp[b].green, tp[b].blue));
+ NCURSES_PUTP2("initialize_pair",
+ TPARM_7(initialize_pair,
+ pair,
+ tp[f].red, tp[f].green, tp[f].blue,
+ tp[b].red, tp[b].green, tp[b].blue));
}
}
@@ -712,23 +719,22 @@ default_bg(SCREEN *sp)
static void
drv_initcolor(TERMINAL_CONTROL_BLOCK * TCB,
- short color, short r, short g, short b)
+ int color, int r, int g, int b)
{
SCREEN *sp = TCB->csp;
AssertTCB();
if (initialize_color != NULL) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "initialize_color",
- TPARM_4(initialize_color, color, r, g, b));
+ NCURSES_PUTP2("initialize_color",
+ TPARM_4(initialize_color, color, r, g, b));
}
}
static void
drv_do_color(TERMINAL_CONTROL_BLOCK * TCB,
- short old_pair,
- short pair,
- bool reverse,
+ int old_pair,
+ int pair,
+ int reverse,
NCURSES_SP_OUTC outc)
{
SCREEN *sp = TCB->csp;
@@ -759,7 +765,7 @@ drv_do_color(TERMINAL_CONTROL_BLOCK * TCB,
if (old_pair >= 0
&& sp != 0
&& NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx
- old_pair,
+ (short) old_pair,
&old_fg,
&old_bg) !=ERR) {
if ((isDefaultColor(fg) && !isDefaultColor(old_fg))
@@ -845,7 +851,9 @@ drv_initmouse(TERMINAL_CONTROL_BLOCK * TCB)
}
static int
-drv_testmouse(TERMINAL_CONTROL_BLOCK * TCB, int delay)
+drv_testmouse(TERMINAL_CONTROL_BLOCK * TCB,
+ int delay
+ EVENTLIST_2nd(_nc_eventlist * evl))
{
int rc = 0;
SCREEN *sp;
@@ -882,7 +890,7 @@ drv_mvcur(TERMINAL_CONTROL_BLOCK * TCB, int yold, int xold, int ynew, int xnew)
{
SCREEN *sp = TCB->csp;
AssertTCB();
- return TINFO_MVCUR(sp, yold, xold, ynew, xnew);
+ return NCURSES_SP_NAME(_nc_mvcur) (sp, yold, xold, ynew, xnew);
}
static void
@@ -892,22 +900,21 @@ drv_hwlabel(TERMINAL_CONTROL_BLOCK * TCB, int labnum, char *text)
AssertTCB();
if (labnum > 0 && labnum <= num_labels) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "plab_norm",
- TPARM_2(plab_norm, labnum, text));
+ NCURSES_PUTP2("plab_norm",
+ TPARM_2(plab_norm, labnum, text));
}
}
static void
-drv_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB, bool OnFlag)
+drv_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB, int OnFlag)
{
SCREEN *sp = TCB->csp;
AssertTCB();
if (OnFlag) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "label_on", label_on);
+ NCURSES_PUTP2("label_on", label_on);
} else {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "label_off", label_off);
+ NCURSES_PUTP2("label_off", label_off);
}
}
@@ -948,6 +955,11 @@ drv_conattr(TERMINAL_CONTROL_BLOCK * TCB)
if (sp && sp->_coloron)
attrs |= A_COLOR;
+#if USE_ITALIC
+ if (enter_italics_mode)
+ attrs |= A_ITALIC;
+#endif
+
return (attrs);
}
@@ -972,7 +984,7 @@ drv_initacs(TERMINAL_CONTROL_BLOCK * TCB, chtype *real_map, chtype *fake_map)
AssertTCB();
assert(sp != 0);
if (ena_acs != NULL) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "ena_acs", ena_acs);
+ NCURSES_PUTP2("ena_acs", ena_acs);
}
#if NCURSES_EXT_FUNCS
/*
@@ -1074,16 +1086,7 @@ _nc_cookie_init(SCREEN *sp)
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_triggers = sp->_ok_attributes & XMC_CONFLICT;
#if 0
/*
* We "should" treat colors as an attribute. The wyse350 (and its
@@ -1176,7 +1179,7 @@ drv_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf)
if ((pthread_self) && (pthread_kill) && (pthread_equal))
_nc_globals.read_thread = pthread_self();
# endif
- n = read(sp->_ifd, &c2, 1);
+ n = read(sp->_ifd, &c2, (size_t) 1);
#if USE_PTHREADS_EINTR
_nc_globals.read_thread = 0;
#endif
@@ -1209,7 +1212,7 @@ __nc_putp(SCREEN *sp, const char *name GCC_UNUSED, const char *value)
int rc = ERR;
if (value) {
- rc = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx name, value);
+ rc = NCURSES_PUTP2(name, value);
}
return rc;
}
@@ -1225,7 +1228,7 @@ __nc_putp_flush(SCREEN *sp, const char *name, const char *value)
}
static int
-drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, bool flag)
+drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, int flag)
{
int ret = ERR;
SCREEN *sp;
@@ -1251,7 +1254,7 @@ drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, bool flag)
}
static int
-drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int c, bool flag)
+drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int c, int flag)
{
SCREEN *sp;
int code = ERR;
@@ -1264,7 +1267,8 @@ drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int c, bool flag)
if (c >= 0) {
unsigned ch = (unsigned) c;
if (flag) {
- while ((s = _nc_expand_try(sp->_key_ok, ch, &count, 0)) != 0
+ while ((s = _nc_expand_try(sp->_key_ok,
+ ch, &count, (size_t) 0)) != 0
&& _nc_remove_key(&(sp->_key_ok), ch)) {
code = _nc_add_to_try(&(sp->_keytry), s, ch);
free(s);
@@ -1273,7 +1277,8 @@ drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int c, bool flag)
break;
}
} else {
- while ((s = _nc_expand_try(sp->_keytry, ch, &count, 0)) != 0
+ while ((s = _nc_expand_try(sp->_keytry,
+ ch, &count, (size_t) 0)) != 0
&& _nc_remove_key(&(sp->_keytry), ch)) {
code = _nc_add_to_try(&(sp->_key_ok), s, ch);
free(s);
diff --git a/contrib/ncurses/ncurses/tinfo/trim_sgr0.c b/contrib/ncurses/ncurses/tinfo/trim_sgr0.c
index 1f99208667ec..ec5e2b78dbf0 100644
--- a/contrib/ncurses/ncurses/tinfo/trim_sgr0.c
+++ b/contrib/ncurses/ncurses/tinfo/trim_sgr0.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2005-2007,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2005-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,7 +36,7 @@
#include <tic.h>
-MODULE_ID("$Id: trim_sgr0.c,v 1.12 2010/12/25 23:03:57 tom Exp $")
+MODULE_ID("$Id: trim_sgr0.c,v 1.15 2012/12/15 20:57:17 tom Exp $")
#undef CUR
#define CUR tp->
@@ -48,21 +48,28 @@ MODULE_ID("$Id: trim_sgr0.c,v 1.12 2010/12/25 23:03:57 tom Exp $")
static char *
set_attribute_9(TERMTYPE *tp, int flag)
{
- const char *result;
+ const char *value;
+ char *result;
- if ((result = tparm(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, flag)) == 0)
- result = "";
- return strdup(result);
+ value = tparm(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, flag);
+ if (PRESENT(value))
+ result = strdup(value);
+ else
+ result = 0;
+ return 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;
+ int result = 0;
+ if (s != 0) {
+ if (UChar(s[0]) == CSI)
+ result = 1;
+ else if (s[0] == ESC && s[1] == L_BRACK)
+ result = 2;
+ }
+ return result;
}
static char *
@@ -97,7 +104,7 @@ skip_delay(const char *s)
static bool
rewrite_sgr(char *s, char *attr)
{
- if (PRESENT(s)) {
+ if (s != 0) {
if (PRESENT(attr)) {
size_t len_s = strlen(s);
size_t len_a = strlen(attr);
@@ -108,7 +115,7 @@ rewrite_sgr(char *s, char *attr)
for (n = 0; n < len_s - len_a; ++n) {
s[n] = s[n + len_a];
}
- strcpy(s + n, attr);
+ _nc_STRCPY(s + n, attr, strlen(s) + 1);
TR(TRACE_DATABASE, ("to:\n\t%s", s));
}
}
@@ -121,33 +128,35 @@ static bool
similar_sgr(char *a, char *b)
{
bool result = FALSE;
- int csi_a = is_csi(a);
- int csi_b = is_csi(b);
- size_t len_a;
- size_t len_b;
+ if (a != 0 && b != 0) {
+ int csi_a = is_csi(a);
+ int csi_b = is_csi(b);
+ size_t len_a;
+ size_t 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);
+ 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)));
}
- 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;
}
diff --git a/contrib/ncurses/ncurses/tinfo/write_entry.c b/contrib/ncurses/ncurses/tinfo/write_entry.c
index a86c11267e93..77f90cb5ffc7 100644
--- a/contrib/ncurses/ncurses/tinfo/write_entry.c
+++ b/contrib/ncurses/ncurses/tinfo/write_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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,21 +39,15 @@
#include <curses.priv.h>
#include <hashed_db.h>
-#include <sys/stat.h>
-
#include <tic.h>
-#ifndef S_ISDIR
-#define S_ISDIR(mode) ((mode & S_IFMT) == S_IFDIR)
-#endif
-
#if 1
#define TRACE_OUT(p) DEBUG(2, p)
#else
#define TRACE_OUT(p) /*nothing */
#endif
-MODULE_ID("$Id: write_entry.c,v 1.78 2010/12/25 23:23:08 tom Exp $")
+MODULE_ID("$Id: write_entry.c,v 1.91 2013/12/14 21:29:42 tom Exp $")
static int total_written;
@@ -76,7 +70,7 @@ write_file(char *filename, TERMTYPE *tp)
DEBUG(1, ("Created %s", filename));
if (write_object(tp, buffer, &offset, limit) == ERR
- || fwrite(buffer, sizeof(char), offset, fp) != offset) {
+ || fwrite(buffer, sizeof(char), (size_t) offset, fp) != offset) {
_nc_syserr_abort("error writing %s/%s", _nc_tic_dir(0), filename);
}
@@ -99,13 +93,13 @@ check_writeable(int code)
char dir[sizeof(LEAF_FMT)];
char *s = 0;
- if (code == 0 || (s = strchr(dirnames, code)) == 0)
+ if (code == 0 || (s = (strchr) (dirnames, code)) == 0)
_nc_err_abort("Illegal terminfo subdirectory \"" LEAF_FMT "\"", code);
if (verified[s - dirnames])
return;
- sprintf(dir, LEAF_FMT, code);
+ _nc_SPRINTF(dir, _nc_SLIMIT(sizeof(dir)) LEAF_FMT, code);
if (make_db_root(dir) < 0) {
_nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir);
}
@@ -115,36 +109,35 @@ check_writeable(int code)
#endif /* !USE_HASHED_DB */
static int
-make_db_path(char *dst, const char *src, unsigned limit)
+make_db_path(char *dst, const char *src, size_t limit)
{
int rc = -1;
const char *top = _nc_tic_dir(0);
if (src == top || _nc_is_abs_path(src)) {
if (strlen(src) + 1 <= limit) {
- (void) strcpy(dst, src);
+ _nc_STRCPY(dst, src, limit);
rc = 0;
}
} else {
if (strlen(top) + strlen(src) + 2 <= limit) {
- (void) sprintf(dst, "%s/%s", top, src);
+ _nc_SPRINTF(dst, _nc_SLIMIT(limit) "%s/%s", top, src);
rc = 0;
}
}
#if USE_HASHED_DB
if (rc == 0) {
- if (_nc_is_dir_path(dst)) {
- rc = -1;
- } else {
- static const char suffix[] = DBM_SUFFIX;
- unsigned have = strlen(dst);
- unsigned need = strlen(suffix);
- if (have > need && strcmp(dst + have - need, suffix)) {
- if (have + need <= limit)
- strcat(dst, suffix);
- else
- rc = -1;
+ static const char suffix[] = DBM_SUFFIX;
+ size_t have = strlen(dst);
+ size_t need = strlen(suffix);
+ if (have > need && strcmp(dst + (int) (have - need), suffix)) {
+ if (have + need <= limit) {
+ _nc_STRCAT(dst, suffix, limit);
+ } else {
+ rc = -1;
}
+ } else if (_nc_is_dir_path(dst)) {
+ rc = -1;
}
}
#endif
@@ -164,10 +157,11 @@ make_db_root(const char *path)
#if USE_HASHED_DB
DB *capdbp;
- if ((capdbp = _nc_db_open(fullpath, TRUE)) == NULL)
+ if ((capdbp = _nc_db_open(fullpath, TRUE)) == NULL) {
rc = -1;
- else if (_nc_db_close(capdbp) < 0)
+ } else if (_nc_db_close(capdbp) < 0) {
rc = -1;
+ }
#else
struct stat statbuf;
@@ -197,7 +191,10 @@ _nc_set_writedir(char *dir)
char actual[PATH_MAX];
if (dir == 0
- && use_terminfo_vars())
+#ifndef USE_ROOT_ENVIRON
+ && use_terminfo_vars()
+#endif
+ )
dir = getenv("TERMINFO");
if (dir != 0)
@@ -279,16 +276,21 @@ _nc_write_entry(TERMTYPE *const tp)
char name_list[MAX_TERMINFO_LENGTH];
char *first_name, *other_names;
char *ptr;
+ char *term_names = tp->term_names;
+ size_t name_size = strlen(term_names);
- assert(strlen(tp->term_names) != 0);
- assert(strlen(tp->term_names) < sizeof(name_list));
+ if (name_size == 0) {
+ _nc_syserr_abort("no terminal name found.");
+ } else if (name_size >= sizeof(name_list) - 1) {
+ _nc_syserr_abort("terminal name too long: %s", term_names);
+ }
- (void) strcpy(name_list, tp->term_names);
+ _nc_STRCPY(name_list, term_names, sizeof(name_list));
DEBUG(7, ("Name list = '%s'", name_list));
first_name = name_list;
- ptr = &name_list[strlen(name_list) - 1];
+ ptr = &name_list[name_size - 1];
other_names = ptr + 1;
while (ptr > name_list && *ptr != '|')
@@ -322,8 +324,8 @@ _nc_write_entry(TERMTYPE *const tp)
buffer[0] = 0;
memset(&key, 0, sizeof(key));
- key.data = tp->term_names;
- key.size = strlen(tp->term_names);
+ key.data = term_names;
+ key.size = name_size;
memset(&data, 0, sizeof(data));
data.data = buffer;
@@ -336,8 +338,10 @@ _nc_write_entry(TERMTYPE *const tp)
key.data = name_list;
key.size = strlen(name_list);
- strcpy(buffer + 1, tp->term_names);
- data.size = strlen(tp->term_names) + 1;
+ _nc_STRCPY(buffer + 1,
+ term_names,
+ sizeof(buffer) - 1);
+ data.size = name_size + 1;
_nc_db_put(capdb, &key, &data);
@@ -355,7 +359,6 @@ _nc_write_entry(TERMTYPE *const tp)
_nc_db_put(capdb, &key, &data);
}
- _nc_db_close(capdb);
}
}
#else /* !USE_HASHED_DB */
@@ -366,7 +369,8 @@ _nc_write_entry(TERMTYPE *const tp)
if (strlen(first_name) >= sizeof(filename) - (2 + LEAF_LEN))
_nc_warning("terminal name too long.");
- sprintf(filename, LEAF_FMT "/%s", first_name[0], first_name);
+ _nc_SPRINTF(filename, _nc_SLIMIT(sizeof(filename))
+ LEAF_FMT "/%s", first_name[0], first_name);
/*
* Has this primary name been written since the first call to
@@ -376,7 +380,22 @@ _nc_write_entry(TERMTYPE *const tp)
if (start_time > 0 &&
stat(filename, &statbuf) >= 0
&& statbuf.st_mtime >= start_time) {
+#if HAVE_LINK && !USE_SYMLINKS
+ /*
+ * If the file has more than one link, the reason for the previous
+ * write could be that the current primary name used to be an alias for
+ * the previous entry. In that case, unlink the file so that we will
+ * not modify the previous entry as we write this one.
+ */
+ if (statbuf.st_nlink > 1) {
+ _nc_warning("name redefined.");
+ unlink(filename);
+ } else {
+ _nc_warning("name multiply defined.");
+ }
+#else
_nc_warning("name multiply defined.");
+#endif
}
check_writeable(first_name[0]);
@@ -407,7 +426,8 @@ _nc_write_entry(TERMTYPE *const tp)
}
check_writeable(ptr[0]);
- sprintf(linkname, LEAF_FMT "/%s", ptr[0], ptr);
+ _nc_SPRINTF(linkname, _nc_SLIMIT(sizeof(linkname))
+ LEAF_FMT "/%s", ptr[0], ptr);
if (strcmp(filename, linkname) == 0) {
_nc_warning("self-synonym ignored");
@@ -422,7 +442,7 @@ _nc_write_entry(TERMTYPE *const tp)
if (first_name[0] == linkname[0])
strncpy(symlinkname, first_name, sizeof(symlinkname) - 1);
else {
- strcpy(symlinkname, "../");
+ _nc_STRCPY(symlinkname, "../", sizeof(suymlinkname));
strncat(symlinkname, filename, sizeof(symlinkname) - 4);
}
symlinkname[sizeof(symlinkname) - 1] = '\0';
@@ -491,7 +511,7 @@ fake_write(char *dst,
return (want / size);
}
-#define Write(buf, size, count) fake_write(buffer, offset, limit, (char *) buf, count, size)
+#define Write(buf, size, count) fake_write(buffer, offset, (size_t) limit, (char *) buf, (size_t) count, (size_t) size)
#undef LITTLE_ENDIAN /* BSD/OS defines this as a feature macro */
#define HI(x) ((x) / 256)
@@ -706,7 +726,7 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
return (ERR);
nextfree = compute_offsets(tp->Strings + STRCOUNT,
- tp->ext_Strings,
+ (size_t) tp->ext_Strings,
offsets);
TRACE_OUT(("after extended string capabilities, nextfree=%d", nextfree));
@@ -714,7 +734,7 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
return (ERR);
nextfree += compute_offsets(tp->ext_Names,
- extcnt,
+ (size_t) extcnt,
offsets + tp->ext_Strings);
TRACE_OUT(("after extended capnames, nextfree=%d", nextfree));
strmax = tp->ext_Strings + extcnt;
@@ -742,7 +762,7 @@ write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit)
TRACE_OUT(("WRITE %d numbers @%d", tp->ext_Numbers, *offset));
if (tp->ext_Numbers) {
- convert_shorts(buf, tp->Numbers + NUMCOUNT, tp->ext_Numbers);
+ convert_shorts(buf, tp->Numbers + NUMCOUNT, (size_t) tp->ext_Numbers);
if (Write(buf, 2, tp->ext_Numbers) != tp->ext_Numbers)
return (ERR);
}
diff --git a/contrib/ncurses/ncurses/trace/lib_trace.c b/contrib/ncurses/ncurses/trace/lib_trace.c
index a726901d4a3a..cec01de517f8 100644
--- a/contrib/ncurses/ncurses/trace/lib_trace.c
+++ b/contrib/ncurses/ncurses/trace/lib_trace.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -47,7 +47,7 @@
#include <ctype.h>
-MODULE_ID("$Id: lib_trace.c,v 1.76 2010/12/19 01:21:19 tom Exp $")
+MODULE_ID("$Id: lib_trace.c,v 1.82 2013/07/06 19:42:09 tom Exp $")
NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */
@@ -103,9 +103,9 @@ trace(const unsigned int tracelevel)
}
TracePath[size] = '\0';
assert(strlen(TracePath) <= size);
- strcat(TracePath, "/trace");
+ _nc_STRCAT(TracePath, "/trace", sizeof(TracePath));
if (_nc_is_dir_path(TracePath)) {
- strcat(TracePath, ".log");
+ _nc_STRCAT(TracePath, ".log", sizeof(TracePath));
}
}
@@ -121,7 +121,7 @@ trace(const unsigned int tracelevel)
* end of each line. This is useful in case the program dies.
*/
#if HAVE_SETVBUF /* ANSI */
- (void) setvbuf(TraceFP, (char *) 0, _IOLBF, 0);
+ (void) setvbuf(TraceFP, (char *) 0, _IOLBF, (size_t) 0);
#elif HAVE_SETBUF /* POSIX */
(void) setbuffer(TraceFP, (char *) 0);
#endif
@@ -185,9 +185,9 @@ _nc_va_tracef(const char *fmt, va_list ap)
if ((pthread_self))
# endif
#ifdef __MINGW32__
- fprintf(TraceFP, "%#lx:", (long) (void *) pthread_self().p);
+ fprintf(TraceFP, "%#lx:", (long) (intptr_t) pthread_self().p);
#else
- fprintf(TraceFP, "%#lx:", (long) (void *) pthread_self());
+ fprintf(TraceFP, "%#lx:", (long) (intptr_t) pthread_self());
#endif
#endif
if (before || after) {
@@ -218,7 +218,7 @@ _tracef(const char *fmt,...)
/* Trace 'bool' return-values */
NCURSES_EXPORT(NCURSES_BOOL)
-_nc_retrace_bool(NCURSES_BOOL code)
+_nc_retrace_bool(int code)
{
T((T_RETURN("%s"), code ? "TRUE" : "FALSE"));
return code;
@@ -226,10 +226,10 @@ _nc_retrace_bool(NCURSES_BOOL code)
/* Trace 'char' return-values */
NCURSES_EXPORT(char)
-_nc_retrace_char(char code)
+_nc_retrace_char(int code)
{
T((T_RETURN("%c"), code));
- return code;
+ return (char) code;
}
/* Trace 'int' return-values */
@@ -339,8 +339,9 @@ _nc_locked_tracef(const char *fmt,...)
_nc_va_tracef(fmt, ap);
va_end(ap);
- if (--(_nc_globals.nested_tracef) == 0)
+ if (--(_nc_globals.nested_tracef) == 0) {
_nc_unlock_global(tracef);
+ }
}
#endif /* USE_REENTRANT */
diff --git a/contrib/ncurses/ncurses/trace/lib_traceatr.c b/contrib/ncurses/ncurses/trace/lib_traceatr.c
index 35ba0d3e6797..5fb0df95f4fd 100644
--- a/contrib/ncurses/ncurses/trace/lib_traceatr.c
+++ b/contrib/ncurses/ncurses/trace/lib_traceatr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -43,10 +43,13 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_traceatr.c,v 1.74 2011/01/22 19:48:01 tom Exp $")
+MODULE_ID("$Id: lib_traceatr.c,v 1.81 2014/02/01 22:09:27 tom Exp $")
#define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name))
+#define TRACE_BUF_SIZE(num) (_nc_globals.tracebuf_ptr[num].size)
+#define COLOR_BUF_SIZE(num) (sizeof(my_buffer[num]))
+
#ifdef TRACE
static const char l_brace[] = StringOf(L_BRACE);
@@ -65,9 +68,12 @@ color_of(int c)
my_cached = c;
my_select = !my_select;
if (c == COLOR_DEFAULT)
- strcpy(my_buffer[my_select], "default");
+ _nc_STRCPY(my_buffer[my_select], "default",
+ COLOR_BUF_SIZE(my_select));
else
- sprintf(my_buffer[my_select], "color%d", c);
+ _nc_SPRINTF(my_buffer[my_select],
+ _nc_SLIMIT(COLOR_BUF_SIZE(my_select))
+ "color%d", c);
}
return my_buffer[my_select];
}
@@ -97,6 +103,9 @@ _traceattr2(int bufnum, chtype newmode)
{ A_CHARTEXT, "A_CHARTEXT" },
{ A_NORMAL, "A_NORMAL" },
{ A_COLOR, "A_COLOR" },
+#if USE_ITALIC
+ { A_ITALIC, "A_ITALIC" },
+#endif
/* *INDENT-ON* */
}
@@ -120,14 +129,14 @@ _traceattr2(int bufnum, chtype newmode)
;
size_t n;
char temp[80];
- char *result = _nc_trace_buf(bufnum, BUFSIZ);
+ char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ);
if (result != 0) {
unsigned save_nc_tracing = _nc_tracing;
_nc_tracing = 0;
- strcpy(result, l_brace);
+ _nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum));
for (n = 0; n < SIZEOF(names); n++) {
if ((newmode & names[n].val) != 0) {
@@ -139,18 +148,20 @@ _traceattr2(int bufnum, chtype newmode)
short pairnum = (short) PairNumber(newmode);
#ifdef USE_TERMLIB
/* pair_content lives in libncurses */
- (void) sprintf(temp, "{%d}", pairnum);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "{%d}", pairnum);
#else
- short fg, bg;
+ NCURSES_COLOR_T fg, bg;
if (pair_content(pairnum, &fg, &bg) == OK) {
- (void) sprintf(temp,
- "{%d = {%s, %s}}",
- pairnum,
- COLOR_OF(fg),
- COLOR_OF(bg));
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "{%d = {%s, %s}}",
+ pairnum,
+ COLOR_OF(fg),
+ COLOR_OF(bg));
} else {
- (void) sprintf(temp, "{%d}", pairnum);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "{%d}", pairnum);
}
#endif
result = _nc_trace_bufcat(bufnum, temp);
@@ -243,7 +254,7 @@ _nc_altcharset_name(attr_t attr, chtype ch)
#if NCURSES_SP_FUNCS
(void) sp;
#endif
- if ((attr & A_ALTCHARSET) && (acs_chars != 0)) {
+ if (SP_PARM != 0 && (attr & A_ALTCHARSET) && (acs_chars != 0)) {
char *cp;
char *found = 0;
const ALT_NAMES *strp;
@@ -271,10 +282,10 @@ NCURSES_EXPORT(char *)
_tracechtype2(int bufnum, chtype ch)
{
const char *found;
- char *result = _nc_trace_buf(bufnum, BUFSIZ);
+ char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ);
if (result != 0) {
- strcpy(result, l_brace);
+ _nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum));
if ((found = _nc_altcharset_name(ChAttrOf(ch), ch)) != 0) {
(void) _nc_trace_bufcat(bufnum, found);
} else
@@ -311,12 +322,12 @@ _nc_retrace_chtype(chtype code)
NCURSES_EXPORT(char *)
_tracecchar_t2(int bufnum, const cchar_t *ch)
{
- char *result = _nc_trace_buf(bufnum, BUFSIZ);
+ char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ);
attr_t attr;
const char *found;
if (result != 0) {
- strcpy(result, l_brace);
+ _nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum));
if (ch != 0) {
attr = AttrOfD(ch);
if ((found = _nc_altcharset_name(attr, (chtype) CharOfD(ch))) != 0) {
diff --git a/contrib/ncurses/ncurses/trace/lib_tracebits.c b/contrib/ncurses/ncurses/trace/lib_tracebits.c
index d19d0e420acc..7d8325a828f4 100644
--- a/contrib/ncurses/ncurses/trace/lib_tracebits.c
+++ b/contrib/ncurses/ncurses/trace/lib_tracebits.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free 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,11 +34,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_tracebits.c,v 1.19 2011/01/09 00:23:03 tom Exp $")
-
-#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#endif
+MODULE_ID("$Id: lib_tracebits.c,v 1.23 2012/06/09 19:55:46 tom Exp $")
#if HAVE_SYS_TERMIO_H
#include <sys/termio.h> /* needed for ISC */
@@ -80,22 +76,24 @@ typedef struct {
const char *name;
} BITNAMES;
+#define TRACE_BUF_SIZE(num) (_nc_globals.tracebuf_ptr[num].size)
+
static void
lookup_bits(char *buf, const BITNAMES * table, const char *label, unsigned int val)
{
const BITNAMES *sp;
- (void) strcat(buf, label);
- (void) strcat(buf, ": {");
+ _nc_STRCAT(buf, label, TRACE_BUF_SIZE(0));
+ _nc_STRCAT(buf, ": {", TRACE_BUF_SIZE(0));
for (sp = table; sp->name; sp++)
if (sp->val != 0
&& (val & sp->val) == sp->val) {
- (void) strcat(buf, sp->name);
- (void) strcat(buf, ", ");
+ _nc_STRCAT(buf, sp->name, TRACE_BUF_SIZE(0));
+ _nc_STRCAT(buf, ", ", TRACE_BUF_SIZE(0));
}
if (buf[strlen(buf) - 2] == ',')
buf[strlen(buf) - 2] = '\0';
- (void) strcat(buf, "} ");
+ _nc_STRCAT(buf, "} ", TRACE_BUF_SIZE(0));
}
NCURSES_EXPORT(char *)
@@ -192,7 +190,7 @@ _nc_trace_ttymode(TTY * tty)
CS_DATA(CS8),
};
const char *result = "CSIZE? ";
- int value = (tty->c_cflag & CSIZE);
+ int value = (int) (tty->c_cflag & CSIZE);
unsigned n;
if (value != 0) {
@@ -203,7 +201,7 @@ _nc_trace_ttymode(TTY * tty)
}
}
}
- strcat(buf, result);
+ _nc_STRCAT(buf, result, TRACE_BUF_SIZE(0));
}
#endif
diff --git a/contrib/ncurses/ncurses/trace/lib_tracechr.c b/contrib/ncurses/ncurses/trace/lib_tracechr.c
index a1f9f5aa2706..8977f752b505 100644
--- a/contrib/ncurses/ncurses/trace/lib_tracechr.c
+++ b/contrib/ncurses/ncurses/trace/lib_tracechr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2012 Free 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,12 @@
#include <ctype.h>
-MODULE_ID("$Id: lib_tracechr.c,v 1.20 2009/04/18 22:48:29 tom Exp $")
+MODULE_ID("$Id: lib_tracechr.c,v 1.22 2012/02/22 22:40:24 tom Exp $")
#ifdef TRACE
+#define MyBufSize sizeof(_nc_globals.tracechr_buf)
+
NCURSES_EXPORT(char *)
_nc_tracechar(SCREEN *sp, int ch)
{
@@ -55,19 +57,22 @@ _nc_tracechar(SCREEN *sp, int ch)
name = safe_keyname(SP_PARM, ch);
if (name == 0 || *name == '\0')
name = "NULL";
- (void) sprintf(MyBuffer, "'%.30s' = %#03o", name, ch);
+ _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize)
+ "'%.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(MyBuffer, "%#03o", ch);
+ _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize)
+ "%#03o", ch);
} else {
name = safe_unctrl(SP_PARM, (chtype) ch);
if (name == 0 || *name == 0)
name = "null"; /* shouldn't happen */
- (void) sprintf(MyBuffer, "'%.30s' = %#03o", name, ch);
+ _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize)
+ "'%.30s' = %#03o", name, ch);
}
return (MyBuffer);
}
diff --git a/contrib/ncurses/ncurses/trace/lib_tracedmp.c b/contrib/ncurses/ncurses/trace/lib_tracedmp.c
index c7fcbf2e0d56..0fda15b252e6 100644
--- a/contrib/ncurses/ncurses/trace/lib_tracedmp.c
+++ b/contrib/ncurses/ncurses/trace/lib_tracedmp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_tracedmp.c,v 1.32 2009/04/18 21:01:38 tom Exp $")
+MODULE_ID("$Id: lib_tracedmp.c,v 1.34 2012/10/27 20:54:42 tom Exp $")
#ifdef TRACE
@@ -70,6 +70,8 @@ _tracedump(const char *name, WINDOW *win)
if (++width + 1 > (int) my_length) {
my_length = (unsigned) (2 * (width + 1));
my_buffer = typeRealloc(char, my_length, my_buffer);
+ if (my_buffer == 0)
+ return;
}
for (n = 0; n <= win->_maxy; ++n) {
@@ -111,7 +113,7 @@ _tracedump(const char *name, WINDOW *win)
if (multicolumn) {
ep = my_buffer;
for (j = 0; j < width; ++j) {
- chtype test = WidecExt(win->_line[n].text[j]);
+ int test = WidecExt(win->_line[n].text[j]);
if (test) {
ep[j] = (char) (test + '0');
} else {
diff --git a/contrib/ncurses/ncurses/trace/lib_tracemse.c b/contrib/ncurses/ncurses/trace/lib_tracemse.c
index 1afd15d2e785..51ffa2ef7634 100644
--- a/contrib/ncurses/ncurses/trace/lib_tracemse.c
+++ b/contrib/ncurses/ncurses/trace/lib_tracemse.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free 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_tracemse.c,v 1.18 2011/01/22 19:48:08 tom Exp $")
+MODULE_ID("$Id: lib_tracemse.c,v 1.21 2012/12/15 23:51:19 tom Exp $")
#ifdef TRACE
@@ -47,7 +47,11 @@ MODULE_ID("$Id: lib_tracemse.c,v 1.18 2011/01/22 19:48:08 tom Exp $")
static char *
_trace_mmask_t(SCREEN *sp, mmask_t code)
{
-#define SHOW(m, s) if ((code & m) == m) strcat(strcat(my_buffer, s), ", ")
+#define SHOW(m, s) \
+ if ((code & m) == m) { \
+ _nc_STRCAT(my_buffer, s, sizeof(my_buffer)); \
+ _nc_STRCAT(my_buffer, ", ", sizeof(my_buffer)); \
+ }
SHOW(BUTTON1_RELEASED, "release-1");
SHOW(BUTTON1_PRESSED, "press-1");
@@ -110,23 +114,33 @@ _trace_mmask_t(SCREEN *sp, mmask_t code)
NCURSES_EXPORT(char *)
_nc_tracemouse(SCREEN *sp, MEVENT const *ep)
{
- (void) sprintf(my_buffer, TRACEMSE_FMT,
- ep->id,
- ep->x,
- ep->y,
- ep->z,
- (unsigned long) ep->bstate);
-
- (void) _trace_mmask_t(sp, ep->bstate);
- (void) strcat(my_buffer, "}");
- return (my_buffer);
+ char *result = 0;
+
+ if (sp != 0) {
+ _nc_SPRINTF(my_buffer, _nc_SLIMIT(sizeof(my_buffer))
+ TRACEMSE_FMT,
+ ep->id,
+ ep->x,
+ ep->y,
+ ep->z,
+ (unsigned long) ep->bstate);
+
+ (void) _trace_mmask_t(sp, ep->bstate);
+ _nc_STRCAT(my_buffer, "}", sizeof(my_buffer));
+ result = (my_buffer);
+ }
+ return result;
}
NCURSES_EXPORT(mmask_t)
_nc_retrace_mmask_t(SCREEN *sp, mmask_t code)
{
- *my_buffer = '\0';
- T((T_RETURN("{%s}"), _trace_mmask_t(sp, code)));
+ if (sp != 0) {
+ *my_buffer = '\0';
+ T((T_RETURN("{%s}"), _trace_mmask_t(sp, code)));
+ } else {
+ T((T_RETURN("{?}")));
+ }
return code;
}
diff --git a/contrib/ncurses/ncurses/trace/trace_buf.c b/contrib/ncurses/ncurses/trace/trace_buf.c
index 46baba4796b2..84a7a0ce076c 100644
--- a/contrib/ncurses/ncurses/trace/trace_buf.c
+++ b/contrib/ncurses/ncurses/trace/trace_buf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -35,7 +35,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: trace_buf.c,v 1.17 2011/01/22 19:48:16 tom Exp $")
+MODULE_ID("$Id: trace_buf.c,v 1.20 2012/02/22 22:34:31 tom Exp $")
#ifdef TRACE
@@ -103,13 +103,14 @@ _nc_trace_buf(int bufnum, size_t want)
NCURSES_EXPORT(char *)
_nc_trace_bufcat(int bufnum, const char *value)
{
- char *buffer = _nc_trace_alloc(bufnum, 0);
+ char *buffer = _nc_trace_alloc(bufnum, (size_t) 0);
if (buffer != 0) {
size_t have = strlen(buffer);
+ size_t need = strlen(value) + have;
- buffer = _nc_trace_alloc(bufnum, 1 + have + strlen(value));
+ buffer = _nc_trace_alloc(bufnum, 1 + need);
if (buffer != 0)
- (void) strcpy(buffer + have, value);
+ _nc_STRCPY(buffer + have, value, need);
}
return buffer;
diff --git a/contrib/ncurses/ncurses/trace/trace_tries.c b/contrib/ncurses/ncurses/trace/trace_tries.c
index d3380131ecac..50ba01683e16 100644
--- a/contrib/ncurses/ncurses/trace/trace_tries.c
+++ b/contrib/ncurses/ncurses/trace/trace_tries.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999-2009,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1999-2011,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -35,7 +35,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: trace_tries.c,v 1.16 2011/01/09 00:23:27 tom Exp $")
+MODULE_ID("$Id: trace_tries.c,v 1.17 2012/10/27 20:50:50 tom Exp $")
#ifdef TRACE
#define my_buffer _nc_globals.tracetry_buf
@@ -49,28 +49,31 @@ recur_tries(TRIES * tree, unsigned level)
my_buffer = (unsigned char *) _nc_doalloc(my_buffer, my_length);
}
- while (tree != 0) {
- if ((my_buffer[level] = tree->ch) == 0)
- my_buffer[level] = 128;
- my_buffer[level + 1] = 0;
- if (tree->value != 0) {
- _tracef("%5d: %s (%s)", tree->value,
- _nc_visbuf((char *) my_buffer), keyname(tree->value));
+ if (my_buffer != 0) {
+ while (tree != 0) {
+ if ((my_buffer[level] = tree->ch) == 0)
+ my_buffer[level] = 128;
+ my_buffer[level + 1] = 0;
+ if (tree->value != 0) {
+ _tracef("%5d: %s (%s)", tree->value,
+ _nc_visbuf((char *) my_buffer), keyname(tree->value));
+ }
+ if (tree->child)
+ recur_tries(tree->child, level + 1);
+ tree = tree->sibling;
}
- if (tree->child)
- recur_tries(tree->child, level + 1);
- tree = tree->sibling;
}
}
NCURSES_EXPORT(void)
_nc_trace_tries(TRIES * tree)
{
- my_buffer = typeMalloc(unsigned char, my_length = 80);
- _tracef("BEGIN tries %p", (void *) tree);
- recur_tries(tree, 0);
- _tracef(". . . tries %p", (void *) tree);
- free(my_buffer);
+ if ((my_buffer = typeMalloc(unsigned char, my_length = 80)) != 0) {
+ _tracef("BEGIN tries %p", (void *) tree);
+ recur_tries(tree, 0);
+ _tracef(". . . tries %p", (void *) tree);
+ free(my_buffer);
+ }
}
#else
diff --git a/contrib/ncurses/ncurses/trace/varargs.c b/contrib/ncurses/ncurses/trace/varargs.c
index 541173d27459..66252d88db21 100644
--- a/contrib/ncurses/ncurses/trace/varargs.c
+++ b/contrib/ncurses/ncurses/trace/varargs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001-2007,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2008,2012 Free 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 <ctype.h>
-MODULE_ID("$Id: varargs.c,v 1.8 2008/11/16 00:19:59 juergen Exp $")
+MODULE_ID("$Id: varargs.c,v 1.11 2012/10/27 21:03:28 tom Exp $")
#ifdef TRACE
@@ -149,25 +149,32 @@ _nc_varargs(const char *fmt, va_list ap)
param = buffer;
switch (used) {
case atInteger:
- sprintf(buffer, "%d", ival);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%d", ival);
break;
case atFloat:
- sprintf(buffer, "%f", fval);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%f", fval);
break;
case atPoint:
- sprintf(buffer, "%p", pval);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%p", pval);
break;
case atString:
param = _nc_visbuf2(1, sval);
break;
case atUnknown:
default:
- strcpy(buffer, "?");
+ _nc_STRCPY(buffer, "?", sizeof(buffer));
break;
}
MyLength += strlen(param) + 2;
MyBuffer = typeRealloc(char, MyLength, MyBuffer);
- sprintf(MyBuffer + strlen(MyBuffer), ", %s", param);
+ if (MyBuffer != 0) {
+ _nc_SPRINTF(MyBuffer + strlen(MyBuffer),
+ _nc_SLIMIT(MyLength - strlen(MyBuffer))
+ ", %s", param);
+ }
}
}
used = atUnknown;
@@ -177,7 +184,7 @@ _nc_varargs(const char *fmt, va_list ap)
}
}
- return (MyBuffer);
+ return (MyBuffer ? MyBuffer : dummy);
}
#else
EMPTY_MODULE(_nc_varargs)
diff --git a/contrib/ncurses/ncurses/trace/visbuf.c b/contrib/ncurses/ncurses/trace/visbuf.c
index 66da4f4beca3..effa84352b7d 100644
--- a/contrib/ncurses/ncurses/trace/visbuf.c
+++ b/contrib/ncurses/ncurses/trace/visbuf.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2012,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <tic.h>
#include <ctype.h>
-MODULE_ID("$Id: visbuf.c,v 1.37 2010/05/29 18:51:41 tom Exp $")
+MODULE_ID("$Id: visbuf.c,v 1.43 2014/02/23 01:21:08 tom Exp $")
#define NUM_VISBUFS 4
@@ -55,13 +55,21 @@ static const char l_brace[] = StringOf(L_BRACE);
static const char r_brace[] = StringOf(R_BRACE);
#endif
+#if USE_STRING_HACKS && HAVE_SNPRINTF
+#define VisChar(tp, chr, limit) _nc_vischar(tp, chr, limit)
+#define LIMIT_ARG ,size_t limit
+#else
+#define VisChar(tp, chr, limit) _nc_vischar(tp, chr)
+#define LIMIT_ARG /* nothing */
+#endif
+
static char *
-_nc_vischar(char *tp, unsigned c)
+_nc_vischar(char *tp, unsigned c LIMIT_ARG)
{
if (c == '"' || c == '\\') {
*tp++ = '\\';
*tp++ = (char) c;
- } else if (is7bits(c) && (isgraph(c) || c == ' ')) {
+ } else if (is7bits((int)c) && (isgraph((int)c) || c == ' ')) {
*tp++ = (char) c;
} else if (c == '\n') {
*tp++ = '\\';
@@ -84,7 +92,8 @@ _nc_vischar(char *tp, unsigned c)
*tp++ = '^';
*tp++ = (char) ('@' + c);
} else {
- sprintf(tp, "\\%03lo", (unsigned long) ChCharOf(c));
+ _nc_SPRINTF(tp, _nc_SLIMIT(limit)
+ "\\%03lo", (unsigned long) ChCharOf(c));
tp += strlen(tp);
}
*tp = 0;
@@ -97,6 +106,7 @@ _nc_visbuf2n(int bufnum, const char *buf, int len)
const char *vbuf = 0;
char *tp;
int c;
+ int count;
if (buf == 0)
return ("(null)");
@@ -106,6 +116,7 @@ _nc_visbuf2n(int bufnum, const char *buf, int len)
if (len < 0)
len = (int) strlen(buf);
+ count = len;
#ifdef TRACE
vbuf = tp = _nc_trace_buf(bufnum, NormalLen(len));
#else
@@ -124,8 +135,8 @@ _nc_visbuf2n(int bufnum, const char *buf, int len)
#endif
if (tp != 0) {
*tp++ = D_QUOTE;
- while ((--len >= 0) && (c = *buf++) != '\0') {
- tp = _nc_vischar(tp, UChar(c));
+ while ((--count >= 0) && (c = *buf++) != '\0') {
+ tp = VisChar(tp, UChar(c), NormalLen(len));
}
*tp++ = D_QUOTE;
*tp = '\0';
@@ -175,6 +186,7 @@ _nc_viswbuf2n(int bufnum, const wchar_t *buf, int len)
const char *vbuf;
char *tp;
wchar_t c;
+ int count;
if (buf == 0)
return ("(null)");
@@ -182,6 +194,7 @@ _nc_viswbuf2n(int bufnum, const wchar_t *buf, int len)
if (len < 0)
len = (int) wcslen(buf);
+ count = len;
#ifdef TRACE
vbuf = tp = _nc_trace_buf(bufnum, WideLen(len));
#else
@@ -193,15 +206,16 @@ _nc_viswbuf2n(int bufnum, const wchar_t *buf, int len)
#endif
if (tp != 0) {
*tp++ = D_QUOTE;
- while ((--len >= 0) && (c = *buf++) != '\0') {
+ while ((--count >= 0) && (c = *buf++) != '\0') {
char temp[CCHARW_MAX + 80];
int j = wctomb(temp, c), k;
if (j <= 0) {
- sprintf(temp, "\\u%08X", (unsigned) c);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+ "\\u%08X", (unsigned) c);
j = (int) strlen(temp);
}
for (k = 0; k < j; ++k) {
- tp = _nc_vischar(tp, UChar(temp[k]));
+ tp = VisChar(tp, UChar(temp[k]), WideLen(len));
}
}
*tp++ = D_QUOTE;
@@ -248,10 +262,12 @@ _nc_viswibuf(const wint_t *buf)
else
mybuf = typeMalloc(wchar_t, mylen);
}
- for (n = 0; buf[n] != 0; ++n) {
- mybuf[n] = (wchar_t) buf[n];
+ if (mybuf != 0) {
+ for (n = 0; buf[n] != 0; ++n) {
+ mybuf[n] = (wchar_t) buf[n];
+ }
+ mybuf[n] = L'\0';
}
- mybuf[n] = L'\0';
return _nc_viswbuf2(0, mybuf);
}
@@ -261,7 +277,7 @@ _nc_viswibuf(const wint_t *buf)
NCURSES_EXPORT(const char *)
_nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len)
{
- char *result = _nc_trace_buf(bufnum, BUFSIZ);
+ char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ);
int first;
const char *found;
@@ -315,7 +331,7 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len)
break;
for (k = 0; k < PUTC_n; k++) {
char temp[80];
- _nc_vischar(temp, UChar(PUTC_buf[k]));
+ VisChar(temp, UChar(PUTC_buf[k]), sizeof(temp));
(void) _nc_trace_bufcat(bufnum, temp);
}
}
@@ -323,8 +339,8 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len)
#else
{
char temp[80];
- _nc_vischar(temp, UChar(buf[j]));
- result = _nc_trace_bufcat(bufnum, temp);
+ VisChar(temp, UChar(buf[j]), sizeof(temp));
+ (void) _nc_trace_bufcat(bufnum, temp);
}
#endif /* USE_WIDEC_SUPPORT */
}
diff --git a/contrib/ncurses/ncurses/tty/hardscroll.c b/contrib/ncurses/ncurses/tty/hardscroll.c
index af68c961728d..4ec168a0028e 100644
--- a/contrib/ncurses/ncurses/tty/hardscroll.c
+++ b/contrib/ncurses/ncurses/tty/hardscroll.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -147,7 +147,7 @@ AUTHOR
#include <curses.priv.h>
-MODULE_ID("$Id: hardscroll.c,v 1.47 2010/04/24 23:46:47 tom Exp $")
+MODULE_ID("$Id: hardscroll.c,v 1.51 2012/10/17 09:01:10 tom Exp $")
#if defined(SCROLLDEBUG) || defined(HASHDEBUG)
@@ -173,9 +173,9 @@ NCURSES_EXPORT_VAR (int *)
# if USE_HASHMAP
# define oldnums(sp) (sp)->_oldnum_list
# define OLDNUM(sp,n) oldnums(sp)[n]
-# else /* !USE_HASHMAP */
+# else /* !USE_HASHMAP */
# define OLDNUM(sp,n) NewScreen(sp)->_line[n].oldindex
-# endif /* !USE_HASHMAP */
+# endif /* !USE_HASHMAP */
#define OLDNUM_SIZE(sp) (sp)->_oldnum_size
@@ -193,14 +193,20 @@ NCURSES_SP_NAME(_nc_scroll_optimize) (NCURSES_SP_DCL0)
#if !defined(SCROLLDEBUG) && !defined(HASHDEBUG)
#if USE_HASHMAP
/* get enough storage */
- if (OLDNUM_SIZE(SP_PARM) < screen_lines(SP_PARM)) {
+ assert(OLDNUM_SIZE(SP_PARM) >= 0);
+ assert(screen_lines(SP_PARM) > 0);
+ if ((oldnums(SP_PARM) == 0)
+ || (OLDNUM_SIZE(SP_PARM) < screen_lines(SP_PARM))) {
+ int need_lines = ((OLDNUM_SIZE(SP_PARM) < screen_lines(SP_PARM))
+ ? screen_lines(SP_PARM)
+ : OLDNUM_SIZE(SP_PARM));
int *new_oldnums = typeRealloc(int,
- (size_t) screen_lines(SP_PARM),
+ (size_t) need_lines,
oldnums(SP_PARM));
if (!new_oldnums)
return;
oldnums(SP_PARM) = new_oldnums;
- OLDNUM_SIZE(SP_PARM) = screen_lines(SP_PARM);
+ OLDNUM_SIZE(SP_PARM) = need_lines;
}
/* calculate the indices */
NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_ARG);
@@ -302,7 +308,9 @@ NCURSES_SP_NAME(_nc_linedump) (NCURSES_SP_DCL0)
*buf = '\0';
for (n = 0; n < screen_lines(SP_PARM); n++)
- (void) sprintf(buf + strlen(buf), " %02d", OLDNUM(SP_PARM, n));
+ _nc_SPRINTF(buf + strlen(buf),
+ _nc_SLIMIT(want - strlen(buf))
+ " %02d", OLDNUM(SP_PARM, n));
TR(TRACE_UPDATE | TRACE_MOVE, ("virt %s", buf));
free(buf);
}
diff --git a/contrib/ncurses/ncurses/tty/hashmap.c b/contrib/ncurses/ncurses/tty/hashmap.c
index b670e1b9691f..4a723865a4fd 100644
--- a/contrib/ncurses/ncurses/tty/hashmap.c
+++ b/contrib/ncurses/ncurses/tty/hashmap.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -73,7 +73,7 @@ AUTHOR
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: hashmap.c,v 1.62 2010/04/24 23:46:07 tom Exp $")
+MODULE_ID("$Id: hashmap.c,v 1.63 2011/10/22 16:34:50 tom Exp $")
#ifdef HASHDEBUG
@@ -163,7 +163,7 @@ update_cost_from_blank(SCREEN *sp, NCURSES_CH_T * to)
* effective. 'blank' indicates whether the line 'to' would become blank.
*/
static NCURSES_INLINE bool
-cost_effective(SCREEN *sp, const int from, const int to, const bool blank)
+cost_effective(SCREEN *sp, const int from, const int to, const int blank)
{
int new_from;
diff --git a/contrib/ncurses/ncurses/tty/lib_mvcur.c b/contrib/ncurses/ncurses/tty/lib_mvcur.c
index ad41f8dd72d8..2ea04c58a8f2 100644
--- a/contrib/ncurses/ncurses/tty/lib_mvcur.c
+++ b/contrib/ncurses/ncurses/tty/lib_mvcur.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -159,7 +159,7 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_mvcur.c,v 1.126 2011/01/22 19:48:21 tom Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.133 2013/05/25 23:59:41 tom Exp $")
#define WANT_CHAR(sp, y, x) NewScreen(sp)->_line[y].text[x] /* desired state */
@@ -176,6 +176,9 @@ static bool profiling = FALSE;
static float diff;
#endif /* MAIN */
+#undef NCURSES_OUTC_FUNC
+#define NCURSES_OUTC_FUNC myOutCh
+
#define OPT_SIZE 512
static int normalized_cost(NCURSES_SP_DCLx const char *const cap, int affcnt);
@@ -274,10 +277,9 @@ reset_scroll_region(NCURSES_SP_DCL0)
/* Set the scroll-region to a known state (the default) */
{
if (change_scroll_region) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "change_scroll_region",
- TPARM_2(change_scroll_region,
- 0, screen_lines(SP_PARM) - 1));
+ NCURSES_PUTP2("change_scroll_region",
+ TPARM_2(change_scroll_region,
+ 0, screen_lines(SP_PARM) - 1));
}
}
@@ -285,14 +287,12 @@ NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_DCL0)
/* what to do at initialization time and after each shellout */
{
- if (SP_PARM && !IsTermInfo(SP_PARM))
+ if (!SP_PARM || !IsTermInfo(SP_PARM))
return;
/* initialize screen for cursor access */
if (enter_ca_mode) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "enter_ca_mode",
- enter_ca_mode);
+ NCURSES_PUTP2("enter_ca_mode", enter_ca_mode);
}
/*
@@ -327,13 +327,14 @@ NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0)
/* initialize the cost structure */
{
- if (SP_PARM->_ofp && isatty(fileno(SP_PARM->_ofp)))
+ if (SP_PARM->_ofp && isatty(fileno(SP_PARM->_ofp))) {
SP_PARM->_char_padding = ((BAUDBYTE * 1000 * 10)
/ (BAUDRATE(SP_PARM) > 0
? BAUDRATE(SP_PARM)
: 9600));
- else
+ } else {
SP_PARM->_char_padding = 1; /* must be nonzero */
+ }
if (SP_PARM->_char_padding <= 0)
SP_PARM->_char_padding = 1; /* must be nonzero */
TR(TRACE_CHARPUT | TRACE_MOVE, ("char_padding %d msecs", SP_PARM->_char_padding));
@@ -481,9 +482,7 @@ NCURSES_SP_NAME(_nc_mvcur_wrap) (NCURSES_SP_DCL0)
}
if (exit_ca_mode) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "exit_ca_mode",
- exit_ca_mode);
+ NCURSES_PUTP2("exit_ca_mode", exit_ca_mode);
}
/*
* Reset terminal's tab counter. There's a long-time bug that
@@ -549,7 +548,7 @@ relative_move(NCURSES_SP_DCLx
int from_x,
int to_y,
int to_x,
- bool ovw)
+ int ovw)
/* move via local motions (cuu/cuu1/cud/cud1/cub1/cub/cuf1/cuf/vpa/hpa) */
{
string_desc save;
@@ -770,7 +769,10 @@ relative_move(NCURSES_SP_DCLx
*/
static NCURSES_INLINE int
-onscreen_mvcur(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew, bool ovw)
+onscreen_mvcur(NCURSES_SP_DCLx
+ int yold, int xold,
+ int ynew, int xnew, int ovw,
+ NCURSES_SP_OUTC myOutCh)
/* onscreen move from (yold, xold) to (ynew, xnew) */
{
string_desc result;
@@ -935,7 +937,7 @@ onscreen_mvcur(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew, bool ovw)
if (usecost != INFINITY) {
TPUTS_TRACE("mvcur");
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
- buffer, 1, NCURSES_SP_NAME(_nc_outch));
+ buffer, 1, myOutCh);
SP_PARM->_cursrow = ynew;
SP_PARM->_curscol = xnew;
return (OK);
@@ -943,9 +945,15 @@ onscreen_mvcur(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew, bool ovw)
return (ERR);
}
-NCURSES_EXPORT(int)
-TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
-/* optimized cursor move from (yold, xold) to (ynew, xnew) */
+/*
+ * optimized cursor move from (yold, xold) to (ynew, xnew)
+ */
+static int
+_nc_real_mvcur(NCURSES_SP_DCLx
+ int yold, int xold,
+ int ynew, int xnew,
+ NCURSES_SP_OUTC myOutCh,
+ int ovw)
{
NCURSES_CH_T oldattr;
int code;
@@ -994,20 +1002,18 @@ TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
if (l > 0) {
if (carriage_return) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "carriage_return",
- carriage_return);
- } else
- NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx '\r');
+ NCURSES_PUTP2("carriage_return", carriage_return);
+ } else {
+ myOutCh(NCURSES_SP_ARGx '\r');
+ }
xold = 0;
while (l > 0) {
if (newline) {
- NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
- "newline",
- newline);
- } else
- NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx '\n');
+ NCURSES_PUTP2("newline", newline);
+ } else {
+ myOutCh(NCURSES_SP_ARGx '\n');
+ }
l--;
}
}
@@ -1027,7 +1033,7 @@ TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
ynew = screen_lines(SP_PARM) - 1;
/* destination location is on screen now */
- code = onscreen_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew, TRUE);
+ code = onscreen_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew, ovw, myOutCh);
/*
* Restore attributes if we disabled them before moving.
@@ -1042,13 +1048,66 @@ TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
returnCode(code);
}
-#if NCURSES_SP_FUNCS && !defined(USE_TERM_DRIVER)
+/*
+ * These entrypoints are used within the library.
+ */
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(_nc_mvcur) (NCURSES_SP_DCLx
+ int yold, int xold,
+ int ynew, int xnew)
+{
+ return _nc_real_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew,
+ NCURSES_SP_NAME(_nc_outch),
+ TRUE);
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(int)
+_nc_mvcur(int yold, int xold,
+ int ynew, int xnew)
+{
+ return NCURSES_SP_NAME(_nc_mvcur) (CURRENT_SCREEN, yold, xold, ynew, xnew);
+}
+#endif
+
+#if defined(USE_TERM_DRIVER)
+/*
+ * The terminal driver does not support the external "mvcur()".
+ */
+NCURSES_EXPORT(int)
+TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
+{
+ return _nc_real_mvcur(NCURSES_SP_ARGx
+ yold, xold,
+ ynew, xnew,
+ NCURSES_SP_NAME(_nc_outch),
+ TRUE);
+}
+
+#else /* !USE_TERM_DRIVER */
+
+/*
+ * These entrypoints support users of the library.
+ */
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(mvcur) (NCURSES_SP_DCLx int yold, int xold, int ynew,
+ int xnew)
+{
+ return _nc_real_mvcur(NCURSES_SP_ARGx
+ yold, xold,
+ ynew, xnew,
+ NCURSES_SP_NAME(_nc_putchar),
+ FALSE);
+}
+
+#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
mvcur(int yold, int xold, int ynew, int xnew)
{
return NCURSES_SP_NAME(mvcur) (CURRENT_SCREEN, yold, xold, ynew, xnew);
}
#endif
+#endif /* USE_TERM_DRIVER */
#if defined(TRACE) || defined(NCURSES_TEST)
NCURSES_EXPORT_VAR(int) _nc_optimize_enable = OPTIMIZE_ALL;
diff --git a/contrib/ncurses/ncurses/tty/lib_tstp.c b/contrib/ncurses/ncurses/tty/lib_tstp.c
index 70f805a2ad5e..b6955c456248 100644
--- a/contrib/ncurses/ncurses/tty/lib_tstp.c
+++ b/contrib/ncurses/ncurses/tty/lib_tstp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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,11 +42,7 @@
#include <SigAction.h>
-#if SVR4_ACTION && !defined(_POSIX_SOURCE)
-#define _POSIX_SOURCE
-#endif
-
-MODULE_ID("$Id: lib_tstp.c,v 1.41 2010/05/15 21:31:12 tom Exp $")
+MODULE_ID("$Id: lib_tstp.c,v 1.47 2013/04/27 19:50:17 tom Exp $")
#if defined(SIGTSTP) && (HAVE_SIGACTION || HAVE_SIGVEC)
#define USE_SIGTSTP 1
@@ -138,7 +134,7 @@ signal_name(int sig)
#if USE_SIGTSTP
static void
-tstp(int dummy GCC_UNUSED)
+handle_SIGTSTP(int dummy GCC_UNUSED)
{
SCREEN *sp = CURRENT_SCREEN;
sigset_t mask, omask;
@@ -148,7 +144,8 @@ tstp(int dummy GCC_UNUSED)
int sigttou_blocked;
#endif
- T(("tstp() called"));
+ _nc_globals.have_sigtstp = 1;
+ T(("handle_SIGTSTP() called"));
/*
* The user may have changed the prog_mode tty bits, so save them.
@@ -239,21 +236,24 @@ tstp(int dummy GCC_UNUSED)
#endif /* USE_SIGTSTP */
static void
-cleanup(int sig)
+handle_SIGINT(int sig)
{
SCREEN *sp = CURRENT_SCREEN;
/*
- * Actually, doing any sort of I/O from within an signal handler is
- * "unsafe". But we'll _try_ to clean up the screen and terminal
- * settings on the way out.
+ * Much of this is unsafe from a signal handler. But we'll _try_ to clean
+ * up the screen and terminal settings on the way out.
+ *
+ * There are at least the following problems:
+ * 1) Walking the SCREEN list is unsafe, since all list management
+ * is done without any signal blocking.
+ * 2) On systems which have REENTRANT turned on, set_term() uses
+ * _nc_lock_global() which could deadlock or misbehave in other ways.
+ * 3) endwin() calls all sorts of stuff, many of which use stdio or
+ * other library functions which are clearly unsafe.
*/
if (!_nc_globals.cleanup_nested++
- && (sig == SIGINT
-#ifdef SIGQUIT
- || sig == SIGQUIT
-#endif
- )) {
+ && (sig == SIGINT || sig == SIGTERM)) {
#if HAVE_SIGACTION || HAVE_SIGVEC
sigaction_t act;
sigemptyset(&act.sa_mask);
@@ -268,22 +268,21 @@ cleanup(int sig)
for (each_screen(scan)) {
if (scan->_ofp != 0
&& isatty(fileno(scan->_ofp))) {
- scan->_cleanup = TRUE;
scan->_outch = NCURSES_SP_NAME(_nc_outch);
}
set_term(scan);
NCURSES_SP_NAME(endwin) (NCURSES_SP_ARG);
if (sp)
- sp->_endwin = FALSE; /* in case we have an atexit! */
+ sp->_endwin = FALSE; /* in case of reuse */
}
}
}
- exit(EXIT_FAILURE);
+ _exit(EXIT_FAILURE);
}
#if USE_SIGWINCH
static void
-sigwinch(int sig GCC_UNUSED)
+handle_SIGWINCH(int sig GCC_UNUSED)
{
_nc_globals.have_sigwinch = 1;
# if USE_PTHREADS_EINTR
@@ -301,7 +300,7 @@ sigwinch(int sig GCC_UNUSED)
* handler.
*/
static int
-CatchIfDefault(int sig, RETSIGTYPE (*handler) (int))
+CatchIfDefault(int sig, void (*handler) (int))
{
int result;
#if HAVE_SIGACTION || HAVE_SIGVEC
@@ -331,7 +330,7 @@ CatchIfDefault(int sig, RETSIGTYPE (*handler) (int))
result = FALSE;
}
#else /* !HAVE_SIGACTION */
- RETSIGTYPE (*ohandler) (int);
+ void (*ohandler) (int);
ohandler = signal(sig, SIG_IGN);
if (ohandler == SIG_DFL
@@ -364,7 +363,7 @@ CatchIfDefault(int sig, RETSIGTYPE (*handler) (int))
* the caller later changes its mind, but that doesn't seem correct.
*/
NCURSES_EXPORT(void)
-_nc_signal_handler(bool enable)
+_nc_signal_handler(int enable)
{
T((T_CALLED("_nc_signal_handler(%d)"), enable));
#if USE_SIGTSTP /* Xenix 2.x doesn't have SIGTSTP, for example */
@@ -385,7 +384,7 @@ _nc_signal_handler(bool enable)
#ifdef SA_RESTART
new_sigaction.sa_flags |= SA_RESTART;
#endif /* SA_RESTART */
- new_sigaction.sa_handler = tstp;
+ new_sigaction.sa_handler = handle_SIGTSTP;
(void) sigaction(SIGTSTP, &new_sigaction, NULL);
} else {
ignore_tstp = TRUE;
@@ -396,10 +395,10 @@ _nc_signal_handler(bool enable)
if (!_nc_globals.init_signals) {
if (enable) {
- CatchIfDefault(SIGINT, cleanup);
- CatchIfDefault(SIGTERM, cleanup);
+ CatchIfDefault(SIGINT, handle_SIGINT);
+ CatchIfDefault(SIGTERM, handle_SIGINT);
#if USE_SIGWINCH
- CatchIfDefault(SIGWINCH, sigwinch);
+ CatchIfDefault(SIGWINCH, handle_SIGWINCH);
#endif
_nc_globals.init_signals = TRUE;
}
diff --git a/contrib/ncurses/ncurses/tty/lib_twait.c b/contrib/ncurses/ncurses/tty/lib_twait.c
index 329ec29a019f..2f70550fb578 100644
--- a/contrib/ncurses/ncurses/tty/lib_twait.c
+++ b/contrib/ncurses/ncurses/tty/lib_twait.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -53,6 +53,11 @@
#include <OS.h>
#endif
+#if USE_KLIBC_KBD
+#define INCL_KBD
+#include <os2.h>
+#endif
+
#if USE_FUNC_POLL
# if HAVE_SYS_TIME_H
# include <sys/time.h>
@@ -70,10 +75,10 @@
#endif
#undef CUR
-MODULE_ID("$Id: lib_twait.c,v 1.61 2010/12/25 23:43:58 tom Exp $")
+MODULE_ID("$Id: lib_twait.c,v 1.67 2013/02/18 09:22:27 tom Exp $")
static long
-_nc_gettime(TimeType * t0, bool first)
+_nc_gettime(TimeType * t0, int first)
{
long res;
@@ -184,6 +189,12 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
fd_set set;
#endif
+#if USE_KLIBC_KBD
+ fd_set saved_set;
+ KBDKEYINFO ki;
+ struct timeval tv;
+#endif
+
long starttime, returntime;
TR(TRACE_IEVENT, ("start twait: %d milliseconds, mode: %d",
@@ -207,6 +218,7 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
starttime = _nc_gettime(&t0, TRUE);
count = 0;
+ (void) count;
#ifdef NCURSES_WGETCH_EVENTS
if ((mode & TW_EVENT) && evl)
@@ -217,8 +229,11 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
memset(fd_list, 0, sizeof(fd_list));
#ifdef NCURSES_WGETCH_EVENTS
- if ((mode & TW_EVENT) && evl)
+ if ((mode & TW_EVENT) && evl) {
fds = typeMalloc(struct pollfd, MIN_FDS + evl->count);
+ if (fds == 0)
+ return TW_NONE;
+ }
#endif
if (mode & TW_INPUT) {
@@ -247,7 +262,7 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
}
#endif
- result = poll(fds, (unsigned) count, milliseconds);
+ result = poll(fds, (size_t) count, milliseconds);
#ifdef NCURSES_WGETCH_EVENTS
if ((mode & TW_EVENT) && evl) {
@@ -274,10 +289,6 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
}
}
}
-
- if (fds != fd_list)
- free((char *) fds);
-
#endif
#elif defined(__BEOS__)
@@ -329,10 +340,12 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
*/
FD_ZERO(&set);
+#if !USE_KLIBC_KBD
if (mode & TW_INPUT) {
FD_SET(sp->_ifd, &set);
count = sp->_ifd + 1;
}
+#endif
if ((mode & TW_MOUSE)
&& (fd = sp->_mouse_fd) >= 0) {
FD_SET(fd, &set);
@@ -352,6 +365,31 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
}
#endif
+#if USE_KLIBC_KBD
+ for (saved_set = set;; set = saved_set) {
+ if ((mode & TW_INPUT)
+ && (sp->_extended_key
+ || (KbdPeek(&ki, 0) == 0
+ && (ki.fbStatus & KBDTRF_FINAL_CHAR_IN)))) {
+ FD_ZERO(&set);
+ FD_SET(sp->_ifd, &set);
+ result = 1;
+ break;
+ }
+
+ tv.tv_sec = 0;
+ tv.tv_usec = (milliseconds == 0) ? 0 : (10 * 1000);
+
+ if ((result = select(count, &set, NULL, NULL, &tv)) != 0)
+ break;
+
+ /* Time out ? */
+ if (milliseconds >= 0 && _nc_gettime(&t0, FALSE) >= milliseconds) {
+ result = 0;
+ break;
+ }
+ }
+#else
if (milliseconds >= 0) {
struct timeval ntimeout;
ntimeout.tv_sec = milliseconds / 1000;
@@ -360,6 +398,7 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
} else {
result = select(count, &set, NULL, NULL, NULL);
}
+#endif
#ifdef NCURSES_WGETCH_EVENTS
if ((mode & TW_EVENT) && evl) {
@@ -462,5 +501,12 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED,
result |= TW_EVENT;
#endif
+#if USE_FUNC_POLL
+#ifdef NCURSES_WGETCH_EVENTS
+ if (fds != fd_list)
+ free((char *) fds);
+#endif
+#endif
+
return (result);
}
diff --git a/contrib/ncurses/ncurses/tty/lib_vidattr.c b/contrib/ncurses/ncurses/tty/lib_vidattr.c
index 9656b3c70ee6..0846d8485f42 100644
--- a/contrib/ncurses/ncurses/tty/lib_vidattr.c
+++ b/contrib/ncurses/ncurses/tty/lib_vidattr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -69,27 +69,27 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_vidattr.c,v 1.61 2010/06/05 22:22:04 tom Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.67 2013/08/31 20:08:59 tom Exp $")
#define doPut(mode) \
TPUTS_TRACE(#mode); \
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc)
-#define TurnOn(mask,mode) \
+#define TurnOn(mask, mode) \
if ((turn_on & mask) && mode) { doPut(mode); }
-#define TurnOff(mask,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) \
+#define SetColorsIf(why, old_attr) \
if (can_color && (why)) { \
int old_pair = PairNumber(old_attr); \
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))) { \
- NCURSES_SP_NAME(_nc_do_color)(NCURSES_SP_ARGx \
+ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx \
(short) old_pair, \
(short) pair, \
reverse, outc); \
@@ -139,6 +139,9 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
A_BOLD,
A_INVIS,
A_PROTECT,
+#if USE_ITALIC
+ A_ITALIC,
+#endif
};
unsigned n;
int used = 0;
@@ -229,6 +232,11 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
if (!SP_PARM || SP_PARM->_use_rmso) {
TurnOff(A_STANDOUT, exit_standout_mode);
}
+#if USE_ITALIC
+ if (!SP_PARM || SP_PARM->_use_ritm) {
+ TurnOff(A_ITALIC, exit_italics_mode);
+ }
+#endif
}
PreviousAttr &= ALL_BUT_COLOR;
}
@@ -251,6 +259,15 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
1, outc);
PreviousAttr &= ALL_BUT_COLOR;
}
+#if USE_ITALIC
+ if (!SP_PARM || SP_PARM->_use_ritm) {
+ if (turn_on & A_ITALIC) {
+ TurnOn(A_ITALIC, enter_italics_mode);
+ } else if (turn_off & A_ITALIC) {
+ TurnOff(A_ITALIC, exit_italics_mode);
+ }
+ }
+#endif
SetColorsIf((pair != 0) || fix_pair0, PreviousAttr);
} else {
@@ -265,7 +282,11 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
if (!SP_PARM || SP_PARM->_use_rmso) {
TurnOff(A_STANDOUT, exit_standout_mode);
}
-
+#if USE_ITALIC
+ if (!SP_PARM || SP_PARM->_use_ritm) {
+ TurnOff(A_ITALIC, exit_italics_mode);
+ }
+#endif
if (turn_off && exit_attribute_mode) {
doPut(exit_attribute_mode);
turn_on |= (newmode & ALL_BUT_COLOR);
@@ -284,6 +305,9 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx
TurnOn(A_PROTECT, enter_protected_mode);
TurnOn(A_INVIS, enter_secure_mode);
TurnOn(A_UNDERLINE, enter_underline_mode);
+#if USE_ITALIC
+ TurnOn(A_ITALIC, enter_italics_mode);
+#endif
#if USE_WIDEC_SUPPORT
TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode);
TurnOn(A_LEFT, enter_left_hl_mode);
@@ -324,7 +348,7 @@ NCURSES_SP_NAME(vidattr) (NCURSES_SP_DCLx chtype newmode)
T((T_CALLED("vidattr(%p,%s)"), (void *) SP_PARM, _traceattr(newmode)));
returnCode(NCURSES_SP_NAME(vidputs) (NCURSES_SP_ARGx
newmode,
- NCURSES_SP_NAME(_nc_outch)));
+ NCURSES_SP_NAME(_nc_putchar)));
}
#if NCURSES_SP_FUNCS
@@ -341,42 +365,49 @@ NCURSES_SP_NAME(termattrs) (NCURSES_SP_DCL0)
chtype attrs = A_NORMAL;
T((T_CALLED("termattrs(%p)"), (void *) SP_PARM));
+
+ if (HasTerminal(SP_PARM)) {
#ifdef USE_TERM_DRIVER
- if (HasTerminal(SP_PARM))
attrs = CallDriver(SP_PARM, conattr);
-#else
+#else /* ! USE_TERM_DRIVER */
- if (enter_alt_charset_mode)
- attrs |= A_ALTCHARSET;
+ if (enter_alt_charset_mode)
+ attrs |= A_ALTCHARSET;
- if (enter_blink_mode)
- attrs |= A_BLINK;
+ if (enter_blink_mode)
+ attrs |= A_BLINK;
- if (enter_bold_mode)
- attrs |= A_BOLD;
+ if (enter_bold_mode)
+ attrs |= A_BOLD;
- if (enter_dim_mode)
- attrs |= A_DIM;
+ if (enter_dim_mode)
+ attrs |= A_DIM;
- if (enter_reverse_mode)
- attrs |= A_REVERSE;
+ if (enter_reverse_mode)
+ attrs |= A_REVERSE;
- if (enter_standout_mode)
- attrs |= A_STANDOUT;
+ if (enter_standout_mode)
+ attrs |= A_STANDOUT;
- if (enter_protected_mode)
- attrs |= A_PROTECT;
+ if (enter_protected_mode)
+ attrs |= A_PROTECT;
- if (enter_secure_mode)
- attrs |= A_INVIS;
+ if (enter_secure_mode)
+ attrs |= A_INVIS;
- if (enter_underline_mode)
- attrs |= A_UNDERLINE;
+ if (enter_underline_mode)
+ attrs |= A_UNDERLINE;
- if (SP_PARM->_coloron)
- attrs |= A_COLOR;
+ if (SP_PARM->_coloron)
+ attrs |= A_COLOR;
+#if USE_ITALIC
+ if (enter_italics_mode)
+ attrs |= A_ITALIC;
#endif
+
+#endif /* USE_TERM_DRIVER */
+ }
returnChtype(attrs);
}
diff --git a/contrib/ncurses/ncurses/tty/tty_display.h b/contrib/ncurses/ncurses/tty/tty_display.h
deleted file mode 100644
index 4c45a08450ed..000000000000
--- a/contrib/ncurses/ncurses/tty/tty_display.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/****************************************************************************
- * 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 *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ************************************************************************** */
-
-#ifndef TTY_DISPLAY_H
-#define TTY_DISPLAY_H 1
-
-/*
- * $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);
-extern NCURSES_EXPORT(bool) _nc_tty_flash (void);
-extern NCURSES_EXPORT(bool) _nc_tty_init_color (int,int,int,int);
-extern NCURSES_EXPORT(bool) _nc_tty_init_pair (int,int,int);
-extern NCURSES_EXPORT(bool) _nc_tty_slk_hide (bool);
-extern NCURSES_EXPORT(bool) _nc_tty_slk_update (int,const char *);
-extern NCURSES_EXPORT(bool) _nc_tty_start_color (void);
-extern NCURSES_EXPORT(void) _nc_tty_display_resume (void);
-extern NCURSES_EXPORT(void) _nc_tty_display_suspend (void);
-extern NCURSES_EXPORT(void) _nc_tty_dispose (void); /* frees SP->_term */
-extern NCURSES_EXPORT(void) _nc_tty_switch_to (void);
-extern NCURSES_EXPORT(void) _nc_tty_update (void);
-
-struct tty_display_data {
- int _fifohold; /* set if breakout marked */
- unsigned long _current_attr; /* terminal attribute current set */
- int _cursrow; /* physical cursor row (-1=unknown) */
- int _curscol; /* physical cursor column */
-
- /* cursor movement costs; units are 10ths of milliseconds */
- int _char_padding; /* cost of character put */
- int _cr_cost; /* cost of (carriage_return) */
- int _cup_cost; /* cost of (cursor_address) */
- int _home_cost; /* cost of (cursor_home) */
- int _ll_cost; /* cost of (cursor_to_ll) */
-#if USE_HARD_TABS
- int _ht_cost; /* cost of (tab) */
- int _cbt_cost; /* cost of (backtab) */
-#endif /* USE_HARD_TABS */
- int _cub1_cost; /* cost of (cursor_left) */
- int _cuf1_cost; /* cost of (cursor_right) */
- int _cud1_cost; /* cost of (cursor_down) */
- int _cuu1_cost; /* cost of (cursor_up) */
- int _cub_cost; /* cost of (parm_cursor_left) */
- int _cuf_cost; /* cost of (parm_cursor_right) */
- int _cud_cost; /* cost of (parm_cursor_down) */
- int _cuu_cost; /* cost of (parm_cursor_up) */
- int _hpa_cost; /* cost of (column_address) */
- int _vpa_cost; /* cost of (row_address) */
- /* used in lib_doupdate.c, must be chars */
- int _ed_cost; /* cost of (clr_eos) */
- int _el_cost; /* cost of (clr_eol) */
- int _el1_cost; /* cost of (clr_bol) */
- int _dch1_cost; /* cost of (delete_character) */
- int _ich1_cost; /* cost of (insert_character) */
- int _dch_cost; /* cost of (parm_dch) */
- int _ich_cost; /* cost of (parm_ich) */
- int _ech_cost; /* cost of (erase_chars) */
- int _rep_cost; /* cost of (repeat_char) */
- int _hpa_ch_cost; /* cost of (column_address) */
- int _cup_ch_cost; /* cost of (cursor_address) */
- int _smir_cost; /* cost of (enter_insert_mode) */
- int _rmir_cost; /* cost of (exit_insert_mode) */
- int _ip_cost; /* cost of (insert_padding) */
- /* used in lib_mvcur.c */
- char * _address_cursor;
- int _carriage_return_length;
- int _cursor_home_length;
- int _cursor_to_ll_length;
-
- chtype _xmc_suppress; /* attributes to suppress if xmc */
- chtype _xmc_triggers; /* attributes to process if xmc */
-
- bool _sig_winch;
-};
-
-
-#define DelCharCost(count) \
- ((parm_dch != 0) \
- ? D->_dch_cost \
- : ((delete_character != 0) \
- ? (D->_dch1_cost * count) \
- : INFINITY))
-
-#define InsCharCost(count) \
- ((parm_ich != 0) \
- ? D->_ich_cost \
- : ((enter_insert_mode && exit_insert_mode) \
- ? D->_smir_cost + D->_rmir_cost + (D->_ip_cost * count) \
- : ((insert_character != 0) \
- ? ((D->_ich1_cost + D->_ip_cost) * count) \
- : INFINITY)))
-
-#if USE_XMC_SUPPORT
-#define UpdateAttrs(c) if (!SameAttrOf(D->_current_attr, AttrOf(c))) { \
- attr_t chg = D->_current_attr; \
- vidattr(AttrOf(c)); \
- if (magic_cookie_glitch > 0 \
- && XMC_CHANGES((chg ^ D->_current_attr))) { \
- T(("%s @%d before glitch %d,%d", \
- __FILE__, __LINE__, \
- D->_cursrow, \
- D->_curscol)); \
- _nc_do_xmc_glitch(chg); \
- } \
- }
-#else
-#define UpdateAttrs(c) if (!SameAttrOf(D->_current_attr, AttrOf(c))) \
- vidattr(AttrOf(c));
-#endif
-
-#define XMC_CHANGES(c) ((c) & D->_xmc_suppress)
-
-#endif /* TTY_DISPLAY_H */
diff --git a/contrib/ncurses/ncurses/tty/tty_update.c b/contrib/ncurses/ncurses/tty/tty_update.c
index f0d2369c18d6..8a110ee92125 100644
--- a/contrib/ncurses/ncurses/tty/tty_update.c
+++ b/contrib/ncurses/ncurses/tty/tty_update.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -82,7 +82,7 @@
#include <ctype.h>
-MODULE_ID("$Id: tty_update.c,v 1.264 2010/12/19 01:21:02 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.277 2014/02/01 22:09:27 tom Exp $")
/*
* This define controls the line-breakout optimization. Every once in a
@@ -145,8 +145,7 @@ position_check(NCURSES_SP_DCLx int expected_y, int expected_x, char *legend)
NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
memset(buf, '\0', sizeof(buf));
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx "\033[6n"); /* only works on ANSI-compatibles */
- NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+ NCURSES_PUTP2_FLUSH("cpr", "\033[6n"); /* only works on ANSI-compatibles */
*(s = buf) = 0;
do {
int ask = sizeof(buf) - 1 - (s - buf);
@@ -209,7 +208,9 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
{
int chlen = 1;
NCURSES_CH_T my_ch;
+#if USE_WIDEC_SUPPORT
PUTC_DATA;
+#endif
NCURSES_CH_T tilde;
NCURSES_CH_T attr = CHDEREF(ch);
@@ -276,6 +277,11 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
&& SP_PARM->_screen_acs_map[CharOf(my_ch)]) {
RemAttr(attr, A_ALTCHARSET);
my_ch = _nc_wacs[CharOf(my_ch)];
+ } else if (SP_PARM->_screen_unicode
+ && !SP_PARM->_screen_acs_map[CharOf(my_ch)]
+ && _nc_wacs[CharOf(my_ch)].chars[0]) {
+ RemAttr(attr, A_ALTCHARSET);
+ my_ch = _nc_wacs[CharOf(my_ch)];
}
#endif
/*
@@ -288,13 +294,12 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
int j = CharOfD(ch);
chtype temp = UChar(SP_PARM->_acs_map[j]);
- if (!(SP_PARM->_screen_acs_map[j])) {
+ if (temp != 0) {
+ SetChar(my_ch, temp, AttrOf(attr));
+ } else {
+ my_ch = CHDEREF(ch);
RemAttr(attr, A_ALTCHARSET);
- if (temp == 0)
- temp = ' ';
}
- if (temp != 0)
- SetChar(my_ch, temp, AttrOf(attr));
}
ch = CHREF(my_ch);
}
@@ -304,22 +309,13 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
}
UpdateAttrs(SP_PARM, attr);
+ PUTC(CHDEREF(ch));
#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_PARM->_outch != 0) {
- SP_PARM->_outch(NCURSES_SP_ARGx UChar(ch));
- } else
+ COUNT_OUTCHARS(1);
#endif
- {
- PUTC(CHDEREF(ch), SP_PARM->_ofp); /* macro's fastest... */
- COUNT_OUTCHARS(1);
- }
SP_PARM->_curscol += chlen;
if (char_padding) {
- TPUTS_TRACE("char_padding");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx char_padding);
+ NCURSES_PUTP2("char_padding", char_padding);
}
}
@@ -342,7 +338,7 @@ check_pending(NCURSES_SP_DCL0)
struct pollfd fds[1];
fds[0].fd = SP_PARM->_checkfd;
fds[0].events = POLLIN;
- if (poll(fds, 1, 0) > 0) {
+ if (poll(fds, (size_t) 1, 0) > 0) {
have_pending = TRUE;
}
#elif defined(__BEOS__)
@@ -390,8 +386,7 @@ PutCharLR(NCURSES_SP_DCLx const ARG_CH_T ch)
PutAttrChar(NCURSES_SP_ARGx ch);
} else if (enter_am_mode && exit_am_mode) {
/* we can suppress automargin */
- TPUTS_TRACE("exit_am_mode");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_am_mode);
+ NCURSES_PUTP2("exit_am_mode", exit_am_mode);
PutAttrChar(NCURSES_SP_ARGx ch);
SP_PARM->_curscol--;
@@ -400,8 +395,7 @@ PutCharLR(NCURSES_SP_DCLx const ARG_CH_T ch)
SP_PARM->_curscol,
"exit_am_mode");
- TPUTS_TRACE("enter_am_mode");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx enter_am_mode);
+ NCURSES_PUTP2("enter_am_mode", enter_am_mode);
} else if ((enter_insert_mode && exit_insert_mode)
|| insert_character || parm_ich) {
GoTo(NCURSES_SP_ARGx
@@ -496,12 +490,13 @@ can_clear_with(NCURSES_SP_DCLx ARG_CH_T ch)
if (SP_PARM->_default_fg != C_MASK || SP_PARM->_default_bg != C_MASK)
return FALSE;
if ((pair = GetPair(CHDEREF(ch))) != 0) {
- short fg, bg;
- NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx
- (short) pair,
- &fg, &bg);
- if (fg != C_MASK || bg != C_MASK)
+ NCURSES_COLOR_T fg, bg;
+ if (NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx
+ (short) pair,
+ &fg, &bg) == ERR
+ || (fg != C_MASK || bg != C_MASK)) {
return FALSE;
+ }
}
#else
if (AttrOfD(ch) & A_COLOR)
@@ -563,8 +558,7 @@ EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T * ntext, int num)
&& runcount > SP_PARM->_ech_cost + SP_PARM->_cup_ch_cost
&& can_clear_with(NCURSES_SP_ARGx CHREF(ntext0))) {
UpdateAttrs(SP_PARM, ntext0);
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
- TPARM_1(erase_chars, runcount));
+ NCURSES_PUTP2("erase_chars", TPARM_1(erase_chars, runcount));
/*
* If this is the last part of the given interval,
@@ -677,6 +671,9 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0)
T((T_CALLED("_nc_tinfo:doupdate(%p)"), (void *) SP_PARM));
+ if (SP_PARM == 0)
+ returnCode(ERR);
+
#if !USE_REENTRANT
/*
* It is "legal" but unlikely that an application could assign a new
@@ -1076,32 +1073,29 @@ ClrUpdate(NCURSES_SP_DCL0)
*/
static void
-ClrToEOL(NCURSES_SP_DCLx NCURSES_CH_T blank, bool needclear)
+ClrToEOL(NCURSES_SP_DCLx NCURSES_CH_T blank, int needclear)
{
int j;
- if (SP_PARM != 0) {
- if (CurScreen(SP_PARM) != 0
- && SP_PARM->_cursrow >= 0) {
- for (j = SP_PARM->_curscol; j < screen_columns(SP_PARM); j++) {
- if (j >= 0) {
- NCURSES_CH_T *cp =
- &(CurScreen(SP_PARM)->_line[SP_PARM->_cursrow].text[j]);
-
- if (!CharEq(*cp, blank)) {
- *cp = blank;
- needclear = TRUE;
- }
+ if (CurScreen(SP_PARM) != 0
+ && SP_PARM->_cursrow >= 0) {
+ for (j = SP_PARM->_curscol; j < screen_columns(SP_PARM); j++) {
+ if (j >= 0) {
+ NCURSES_CH_T *cp =
+ &(CurScreen(SP_PARM)->_line[SP_PARM->_cursrow].text[j]);
+
+ if (!CharEq(*cp, blank)) {
+ *cp = blank;
+ needclear = TRUE;
}
}
}
}
- if (needclear && (SP_PARM != 0)) {
+ if (needclear) {
UpdateAttrs(SP_PARM, blank);
- TPUTS_TRACE("clr_eol");
if (clr_eol && SP_PARM->_el_cost <= (screen_columns(SP_PARM) - SP_PARM->_curscol)) {
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_eol);
+ NCURSES_PUTP2("clr_eol", clr_eol);
} else {
int count = (screen_columns(SP_PARM) - SP_PARM->_curscol);
while (count-- > 0)
@@ -1121,12 +1115,14 @@ ClrToEOS(NCURSES_SP_DCLx NCURSES_CH_T blank)
{
int row, col;
- if (0 == SP_PARM)
- return;
-
row = SP_PARM->_cursrow;
col = SP_PARM->_curscol;
+ if (row < 0)
+ row = 0;
+ if (col < 0)
+ col = 0;
+
UpdateAttrs(SP_PARM, blank);
TPUTS_TRACE("clr_eos");
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
@@ -1370,13 +1366,11 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
&& SP_PARM->_el_cost <= SP_PARM->_el1_cost) {
GoTo(NCURSES_SP_ARGx lineno, 0);
UpdateAttrs(SP_PARM, blank);
- TPUTS_TRACE("clr_eol");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_eol);
+ NCURSES_PUTP2("clr_eol", clr_eol);
} else {
GoTo(NCURSES_SP_ARGx lineno, nFirstChar - 1);
UpdateAttrs(SP_PARM, blank);
- TPUTS_TRACE("clr_bol");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_bol);
+ NCURSES_PUTP2("clr_bol", clr_bol);
}
while (firstChar < nFirstChar)
@@ -1574,8 +1568,7 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank)
if (fast_clear) {
if (clear_screen) {
UpdateAttrs(SP_PARM, blank);
- TPUTS_TRACE("clear_screen");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clear_screen);
+ NCURSES_PUTP2("clear_screen", clear_screen);
SP_PARM->_cursrow = SP_PARM->_curscol = 0;
position_check(SP_PARM,
SP_PARM->_cursrow,
@@ -1595,8 +1588,7 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank)
UpdateAttrs(SP_PARM, blank);
for (i = 0; i < screen_lines(SP_PARM); i++) {
GoTo(NCURSES_SP_ARGx i, 0);
- TPUTS_TRACE("clr_eol");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_eol);
+ NCURSES_PUTP2("clr_eol", clr_eol);
}
GoTo(NCURSES_SP_ARGx 0, 0);
}
@@ -1647,27 +1639,22 @@ InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count)
count--;
}
} else if (enter_insert_mode && exit_insert_mode) {
- TPUTS_TRACE("enter_insert_mode");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx enter_insert_mode);
+ NCURSES_PUTP2("enter_insert_mode", enter_insert_mode);
while (count) {
PutAttrChar(NCURSES_SP_ARGx CHREF(*line));
if (insert_padding) {
- TPUTS_TRACE("insert_padding");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_padding);
+ NCURSES_PUTP2("insert_padding", insert_padding);
}
line++;
count--;
}
- TPUTS_TRACE("exit_insert_mode");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_insert_mode);
+ NCURSES_PUTP2("exit_insert_mode", exit_insert_mode);
} else {
while (count) {
- TPUTS_TRACE("insert_character");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_character);
+ NCURSES_PUTP2("insert_character", insert_character);
PutAttrChar(NCURSES_SP_ARGx CHREF(*line));
if (insert_padding) {
- TPUTS_TRACE("insert_padding");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_padding);
+ NCURSES_PUTP2("insert_padding", insert_padding);
}
line++;
count--;
@@ -1701,8 +1688,7 @@ DelChar(NCURSES_SP_DCLx int count)
NCURSES_SP_NAME(_nc_outch));
} else {
for (n = 0; n < count; n++) {
- TPUTS_TRACE("delete_character");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_character);
+ NCURSES_PUTP2("delete_character", delete_character);
}
}
}
@@ -1754,13 +1740,11 @@ scroll_csr_forward(NCURSES_SP_DCLx
if (n == 1 && scroll_forward && top == miny && bot == maxy) {
GoTo(NCURSES_SP_ARGx bot, 0);
UpdateAttrs(SP_PARM, blank);
- TPUTS_TRACE("scroll_forward");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_forward);
+ NCURSES_PUTP2("scroll_forward", scroll_forward);
} else if (n == 1 && delete_line && bot == maxy) {
GoTo(NCURSES_SP_ARGx top, 0);
UpdateAttrs(SP_PARM, blank);
- TPUTS_TRACE("delete_line");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line);
+ NCURSES_PUTP2("delete_line", delete_line);
} else if (parm_index && top == miny && bot == maxy) {
GoTo(NCURSES_SP_ARGx bot, 0);
UpdateAttrs(SP_PARM, blank);
@@ -1781,15 +1765,13 @@ scroll_csr_forward(NCURSES_SP_DCLx
GoTo(NCURSES_SP_ARGx bot, 0);
UpdateAttrs(SP_PARM, blank);
for (i = 0; i < n; i++) {
- TPUTS_TRACE("scroll_forward");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_forward);
+ NCURSES_PUTP2("scroll_forward", scroll_forward);
}
} else if (delete_line && bot == maxy) {
GoTo(NCURSES_SP_ARGx top, 0);
UpdateAttrs(SP_PARM, blank);
for (i = 0; i < n; i++) {
- TPUTS_TRACE("delete_line");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line);
+ NCURSES_PUTP2("delete_line", delete_line);
}
} else
return ERR;
@@ -1823,13 +1805,11 @@ scroll_csr_backward(NCURSES_SP_DCLx
if (n == 1 && scroll_reverse && top == miny && bot == maxy) {
GoTo(NCURSES_SP_ARGx top, 0);
UpdateAttrs(SP_PARM, blank);
- TPUTS_TRACE("scroll_reverse");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_reverse);
+ NCURSES_PUTP2("scroll_reverse", scroll_reverse);
} else if (n == 1 && insert_line && bot == maxy) {
GoTo(NCURSES_SP_ARGx top, 0);
UpdateAttrs(SP_PARM, blank);
- TPUTS_TRACE("insert_line");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line);
+ NCURSES_PUTP2("insert_line", insert_line);
} else if (parm_rindex && top == miny && bot == maxy) {
GoTo(NCURSES_SP_ARGx top, 0);
UpdateAttrs(SP_PARM, blank);
@@ -1850,15 +1830,13 @@ scroll_csr_backward(NCURSES_SP_DCLx
GoTo(NCURSES_SP_ARGx top, 0);
UpdateAttrs(SP_PARM, blank);
for (i = 0; i < n; i++) {
- TPUTS_TRACE("scroll_reverse");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_reverse);
+ NCURSES_PUTP2("scroll_reverse", scroll_reverse);
}
} else if (insert_line && bot == maxy) {
GoTo(NCURSES_SP_ARGx top, 0);
UpdateAttrs(SP_PARM, blank);
for (i = 0; i < n; i++) {
- TPUTS_TRACE("insert_line");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line);
+ NCURSES_PUTP2("insert_line", insert_line);
}
} else
return ERR;
@@ -1889,8 +1867,7 @@ scroll_idl(NCURSES_SP_DCLx int n, int del, int ins, NCURSES_CH_T blank)
GoTo(NCURSES_SP_ARGx del, 0);
UpdateAttrs(SP_PARM, blank);
if (n == 1 && delete_line) {
- TPUTS_TRACE("delete_line");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line);
+ NCURSES_PUTP2("delete_line", delete_line);
} else if (parm_delete_line) {
TPUTS_TRACE("parm_delete_line");
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
@@ -1899,16 +1876,14 @@ scroll_idl(NCURSES_SP_DCLx int n, int del, int ins, NCURSES_CH_T blank)
NCURSES_SP_NAME(_nc_outch));
} else { /* if (delete_line) */
for (i = 0; i < n; i++) {
- TPUTS_TRACE("delete_line");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line);
+ NCURSES_PUTP2("delete_line", delete_line);
}
}
GoTo(NCURSES_SP_ARGx ins, 0);
UpdateAttrs(SP_PARM, blank);
if (n == 1 && insert_line) {
- TPUTS_TRACE("insert_line");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line);
+ NCURSES_PUTP2("insert_line", insert_line);
} else if (parm_insert_line) {
TPUTS_TRACE("parm_insert_line");
NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
@@ -1917,8 +1892,7 @@ scroll_idl(NCURSES_SP_DCLx int n, int del, int ins, NCURSES_CH_T blank)
NCURSES_SP_NAME(_nc_outch));
} else { /* if (insert_line) */
for (i = 0; i < n; i++) {
- TPUTS_TRACE("insert_line");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line);
+ NCURSES_PUTP2("insert_line", insert_line);
}
}
@@ -1975,24 +1949,20 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx
&& (SP_PARM->_cursrow == bot || SP_PARM->_cursrow == bot - 1))
&& save_cursor && restore_cursor) {
cursor_saved = TRUE;
- TPUTS_TRACE("save_cursor");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx save_cursor);
+ NCURSES_PUTP2("save_cursor", save_cursor);
}
- TPUTS_TRACE("change_scroll_region");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
- TPARM_2(change_scroll_region, top, bot));
+ NCURSES_PUTP2("change_scroll_region",
+ TPARM_2(change_scroll_region, top, bot));
if (cursor_saved) {
- TPUTS_TRACE("restore_cursor");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx restore_cursor);
+ NCURSES_PUTP2("restore_cursor", restore_cursor);
} else {
SP_PARM->_cursrow = SP_PARM->_curscol = -1;
}
res = scroll_csr_forward(NCURSES_SP_ARGx n, top, bot, top, bot, blank);
- TPUTS_TRACE("change_scroll_region");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
- TPARM_2(change_scroll_region, 0, maxy));
+ NCURSES_PUTP2("change_scroll_region",
+ TPARM_2(change_scroll_region, 0, maxy));
SP_PARM->_cursrow = SP_PARM->_curscol = -1;
}
@@ -2025,15 +1995,12 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx
SP_PARM->_cursrow == top - 1)
&& save_cursor && restore_cursor) {
cursor_saved = TRUE;
- TPUTS_TRACE("save_cursor");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx save_cursor);
+ NCURSES_PUTP2("save_cursor", save_cursor);
}
- TPUTS_TRACE("change_scroll_region");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
- TPARM_2(change_scroll_region, top, bot));
+ NCURSES_PUTP2("change_scroll_region",
+ TPARM_2(change_scroll_region, top, bot));
if (cursor_saved) {
- TPUTS_TRACE("restore_cursor");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx restore_cursor);
+ NCURSES_PUTP2("restore_cursor", restore_cursor);
} else {
SP_PARM->_cursrow = SP_PARM->_curscol = -1;
}
@@ -2041,9 +2008,8 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx
res = scroll_csr_backward(NCURSES_SP_ARGx
-n, top, bot, top, bot, blank);
- TPUTS_TRACE("change_scroll_region");
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
- TPARM_2(change_scroll_region, 0, maxy));
+ NCURSES_PUTP2("change_scroll_region",
+ TPARM_2(change_scroll_region, 0, maxy));
SP_PARM->_cursrow = SP_PARM->_curscol = -1;
}
@@ -2114,23 +2080,25 @@ NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_DCL0)
}
if (exit_attribute_mode)
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_attribute_mode);
+ NCURSES_PUTP2("exit_attribute_mode", exit_attribute_mode);
else {
/* turn off attributes */
if (exit_alt_charset_mode)
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_alt_charset_mode);
+ NCURSES_PUTP2("exit_alt_charset_mode", exit_alt_charset_mode);
if (exit_standout_mode)
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_standout_mode);
+ NCURSES_PUTP2("exit_standout_mode", exit_standout_mode);
if (exit_underline_mode)
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_underline_mode);
+ NCURSES_PUTP2("exit_underline_mode", exit_underline_mode);
}
if (exit_insert_mode)
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_insert_mode);
- if (enter_am_mode && exit_am_mode)
- NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
- (auto_right_margin
- ? enter_am_mode
- : exit_am_mode));
+ NCURSES_PUTP2("exit_insert_mode", exit_insert_mode);
+ if (enter_am_mode && exit_am_mode) {
+ if (auto_right_margin) {
+ NCURSES_PUTP2("enter_am_mode", enter_am_mode);
+ } else {
+ NCURSES_PUTP2("exit_am_mode", exit_am_mode);
+ }
+ }
}
#if NCURSES_SP_FUNCS
@@ -2159,33 +2127,33 @@ _nc_screen_init(void)
NCURSES_EXPORT(void)
NCURSES_SP_NAME(_nc_screen_wrap) (NCURSES_SP_DCL0)
{
- if (SP_PARM == 0)
- return;
+ if (SP_PARM != 0) {
- UpdateAttrs(SP_PARM, normal);
+ UpdateAttrs(SP_PARM, normal);
#if NCURSES_EXT_FUNCS
- if (SP_PARM->_coloron
- && !SP_PARM->_default_color) {
- static const NCURSES_CH_T blank = NewChar(BLANK_TEXT);
- SP_PARM->_default_color = TRUE;
- NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx
- -1,
- 0,
- FALSE,
- NCURSES_SP_NAME(_nc_outch));
- SP_PARM->_default_color = FALSE;
-
- TINFO_MVCUR(NCURSES_SP_ARGx
- SP_PARM->_cursrow,
- SP_PARM->_curscol,
- screen_lines(SP_PARM) - 1,
- 0);
-
- ClrToEOL(NCURSES_SP_ARGx blank, TRUE);
- }
+ if (SP_PARM->_coloron
+ && !SP_PARM->_default_color) {
+ static const NCURSES_CH_T blank = NewChar(BLANK_TEXT);
+ SP_PARM->_default_color = TRUE;
+ NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx
+ -1,
+ 0,
+ FALSE,
+ NCURSES_SP_NAME(_nc_outch));
+ SP_PARM->_default_color = FALSE;
+
+ TINFO_MVCUR(NCURSES_SP_ARGx
+ SP_PARM->_cursrow,
+ SP_PARM->_curscol,
+ screen_lines(SP_PARM) - 1,
+ 0);
+
+ ClrToEOL(NCURSES_SP_ARGx blank, TRUE);
+ }
#endif
- if (SP_PARM->_color_defs) {
- NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_ARG);
+ if (SP_PARM->_color_defs) {
+ NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_ARG);
+ }
}
}
diff --git a/contrib/ncurses/ncurses/wcwidth.h b/contrib/ncurses/ncurses/wcwidth.h
index 61e822ad679f..e261170188b1 100644
--- a/contrib/ncurses/ncurses/wcwidth.h
+++ b/contrib/ncurses/ncurses/wcwidth.h
@@ -192,15 +192,18 @@ int mk_wcwidth(wchar_t ucs)
(ucs <= 0x115f || /* Hangul Jamo init. consonants */
ucs == 0x2329 || ucs == 0x232a ||
(ucs >= 0x2e80 && ucs <= 0xa4cf &&
- ucs != 0x303f) || /* CJK ... Yi */
- (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */
- (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */
- (ucs >= 0xfe10 && ucs <= 0xfe19) || /* Vertical forms */
- (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */
- (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */
- (ucs >= 0xffe0 && ucs <= 0xffe6) ||
- (ucs >= 0x20000 && ucs <= 0x2fffd) ||
- (ucs >= 0x30000 && ucs <= 0x3fffd)));
+ ucs != 0x303f) /* CJK ... Yi */
+ || (ucs >= 0xac00 && ucs <= 0xd7a3) /* Hangul Syllables */
+ || (ucs >= 0xf900 && ucs <= 0xfaff) /* CJK Compatibility Ideographs */
+ || (ucs >= 0xfe10 && ucs <= 0xfe19) /* Vertical forms */
+ || (ucs >= 0xfe30 && ucs <= 0xfe6f) /* CJK Compatibility Forms */
+ || (ucs >= 0xff00 && ucs <= 0xff60) /* Fullwidth Forms */
+ || (ucs >= 0xffe0 && ucs <= 0xffe6)
+#if !defined(SIZEOF_WCHAR_T) || (SIZEOF_WCHAR_T >= 4)
+ || (ucs >= 0x20000 && ucs <= 0x2fffd)
+ || (ucs >= 0x30000 && ucs <= 0x3fffd)
+#endif
+ ));
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_box_set.c b/contrib/ncurses/ncurses/widechar/lib_box_set.c
index 585c94963b0f..f9e701fa14cf 100644
--- a/contrib/ncurses/ncurses/widechar/lib_box_set.c
+++ b/contrib/ncurses/ncurses/widechar/lib_box_set.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2003,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2009,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_box_set.c,v 1.5 2009/10/24 22:36:56 tom Exp $")
+MODULE_ID("$Id: lib_box_set.c,v 1.6 2011/06/25 19:02:07 Vassili.Courzakis Exp $")
NCURSES_EXPORT(int)
wborder_set(WINDOW *win,
@@ -52,7 +52,7 @@ wborder_set(WINDOW *win,
NCURSES_SIZE_T endx, endy;
NCURSES_CH_T wls, wrs, wts, wbs, wtl, wtr, wbl, wbr;
- T((T_CALLED("wborder(%p,%s,%s,%s,%s,%s,%s,%s,%s)"),
+ T((T_CALLED("wborder_set(%p,%s,%s,%s,%s,%s,%s,%s,%s)"),
(void *) win,
_tracech_t2(1, ls),
_tracech_t2(2, rs),
diff --git a/contrib/ncurses/ncurses/widechar/lib_cchar.c b/contrib/ncurses/ncurses/widechar/lib_cchar.c
index c61c79529db7..654bebb46d36 100644
--- a/contrib/ncurses/ncurses/widechar/lib_cchar.c
+++ b/contrib/ncurses/ncurses/widechar/lib_cchar.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2012,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -35,7 +35,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_cchar.c,v 1.20 2010/12/25 23:46:26 tom Exp $")
+MODULE_ID("$Id: lib_cchar.c,v 1.27 2014/02/01 22:10:42 tom Exp $")
/*
* The SuSv2 description leaves some room for interpretation. We'll assume wch
@@ -47,7 +47,7 @@ NCURSES_EXPORT(int)
setcchar(cchar_t *wcval,
const wchar_t *wch,
const attr_t attrs,
- short color_pair,
+ NCURSES_PAIRS_T color_pair,
const void *opts)
{
unsigned i;
@@ -56,11 +56,11 @@ setcchar(cchar_t *wcval,
TR(TRACE_CCALLS, (T_CALLED("setcchar(%p,%s,%lu,%d,%p)"),
(void *) wcval, _nc_viswbuf(wch),
- (unsigned long) attrs, color_pair, opts));
+ (unsigned long) attrs, (int) color_pair, opts));
- len = (unsigned) wcslen(wch);
if (opts != NULL
- || (len > 1 && wcwidth(wch[0]) < 0)) {
+ || wch == NULL
+ || ((len = (unsigned) wcslen(wch)) > 1 && wcwidth(wch[0]) < 0)) {
code = ERR;
} else {
if (len > CCHARW_MAX)
@@ -80,7 +80,7 @@ setcchar(cchar_t *wcval,
memset(wcval, 0, sizeof(*wcval));
if (len != 0) {
- SetAttr(*wcval, attrs | (attr_t) ColorPair(color_pair));
+ SetAttr(*wcval, attrs);
SetPair(CHDEREF(wcval), color_pair);
memcpy(&wcval->chars, wch, len * sizeof(wchar_t));
TR(TRACE_CCALLS, ("copy %d wchars, first is %s", len,
@@ -96,7 +96,7 @@ NCURSES_EXPORT(int)
getcchar(const cchar_t *wcval,
wchar_t *wch,
attr_t *attrs,
- short *color_pair,
+ NCURSES_PAIRS_T *color_pair,
void *opts)
{
wchar_t *wp;
@@ -110,8 +110,8 @@ getcchar(const cchar_t *wcval,
(void *) color_pair,
opts));
- if (opts == NULL) {
- len = ((wp = wmemchr(wcval->chars, L'\0', CCHARW_MAX))
+ if (opts == NULL && wcval != NULL) {
+ len = ((wp = wmemchr(wcval->chars, L'\0', (size_t) CCHARW_MAX))
? (int) (wp - wcval->chars)
: CCHARW_MAX);
@@ -125,8 +125,8 @@ getcchar(const cchar_t *wcval,
code = ERR;
} else if (len >= 0) {
*attrs = AttrOf(*wcval) & A_ATTRIBUTES;
- *color_pair = (short) GetPair(*wcval);
- wmemcpy(wch, wcval->chars, (unsigned) len);
+ *color_pair = (NCURSES_PAIRS_T) GetPair(*wcval);
+ wmemcpy(wch, wcval->chars, (size_t) len);
wch[len] = L'\0';
code = OK;
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_erasewchar.c b/contrib/ncurses/ncurses/widechar/lib_erasewchar.c
index a4ee93ffa428..ddce27a53ecc 100644
--- a/contrib/ncurses/ncurses/widechar/lib_erasewchar.c
+++ b/contrib/ncurses/ncurses/widechar/lib_erasewchar.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2010,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_erasewchar.c,v 1.2 2010/07/24 11:35:12 tom Exp $")
+MODULE_ID("$Id: lib_erasewchar.c,v 1.3 2014/02/23 01:21:08 tom Exp $")
/*
* erasewchar()
@@ -49,7 +49,7 @@ erasewchar(wchar_t *wch)
T((T_CALLED("erasewchar()")));
if ((value = erasechar()) != ERR) {
- *wch = value;
+ *wch = (wchar_t) value;
result = OK;
}
returnCode(result);
@@ -70,7 +70,7 @@ killwchar(wchar_t *wch)
T((T_CALLED("killwchar()")));
if ((value = killchar()) != ERR) {
- *wch = value;
+ *wch = (wchar_t) value;
result = OK;
}
returnCode(result);
diff --git a/contrib/ncurses/ncurses/widechar/lib_get_wch.c b/contrib/ncurses/ncurses/widechar/lib_get_wch.c
index 32033df2ff9b..71d560367d73 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-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -40,7 +40,7 @@
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_get_wch.c,v 1.22 2010/08/28 21:00:35 tom Exp $")
+MODULE_ID("$Id: lib_get_wch.c,v 1.23 2011/05/28 23:00:29 tom Exp $")
NCURSES_EXPORT(int)
wget_wch(WINDOW *win, wint_t *result)
@@ -106,7 +106,10 @@ wget_wch(WINDOW *win, wint_t *result)
} else {
code = ERR;
}
- *result = (wint_t) value;
+
+ if (result != 0)
+ *result = (wint_t) value;
+
_nc_unlock_global(curses);
T(("result %#o", value));
returnCode(code);
diff --git a/contrib/ncurses/ncurses/widechar/lib_get_wstr.c b/contrib/ncurses/ncurses/widechar/lib_get_wstr.c
index 0b450211b2c3..27cdae0c1fd8 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-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2009,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_get_wstr.c,v 1.12 2009/10/24 22:38:11 tom Exp $")
+MODULE_ID("$Id: lib_get_wstr.c,v 1.13 2011/10/22 16:31:35 tom Exp $")
static int
wadd_wint(WINDOW *win, wint_t *src)
@@ -49,7 +49,7 @@ wadd_wint(WINDOW *win, wint_t *src)
wch[0] = (wchar_t) (*src);
wch[1] = 0;
- setcchar(&tmp, wch, A_NORMAL, 0, NULL);
+ setcchar(&tmp, wch, A_NORMAL, (short) 0, NULL);
return wadd_wch(win, &tmp);
}
@@ -58,7 +58,7 @@ wadd_wint(WINDOW *win, wint_t *src)
* or other character, and handles reverse wraparound.
*/
static wint_t *
-WipeOut(WINDOW *win, int y, int x, wint_t *first, wint_t *last, bool echoed)
+WipeOut(WINDOW *win, int y, int x, wint_t *first, wint_t *last, int echoed)
{
if (last > first) {
*--last = '\0';
diff --git a/contrib/ncurses/ncurses/widechar/lib_ins_wch.c b/contrib/ncurses/ncurses/widechar/lib_ins_wch.c
index 1eee8a3ec016..2aa71a506639 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-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_ins_wch.c,v 1.16 2010/12/19 01:34:04 tom Exp $")
+MODULE_ID("$Id: lib_ins_wch.c,v 1.17 2011/10/22 16:34:50 tom Exp $")
/*
* Insert the given character, updating the current location to simplify
@@ -132,7 +132,7 @@ wins_nwstr(WINDOW *win, const wchar_t *wstr, int n)
(void) setcchar(&tmp_cchar,
&tmp_wchar,
WA_NORMAL,
- 0,
+ (short) 0,
(void *) 0);
code = _nc_insert_wch(win, &tmp_cchar);
} else {
diff --git a/contrib/ncurses/ncurses/widechar/lib_inwstr.c b/contrib/ncurses/ncurses/widechar/lib_inwstr.c
index 4cf7182ae061..a4f5b8ea2040 100644
--- a/contrib/ncurses/ncurses/widechar/lib_inwstr.c
+++ b/contrib/ncurses/ncurses/widechar/lib_inwstr.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2004,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2009,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_inwstr.c,v 1.5 2009/10/24 22:37:29 tom Exp $")
+MODULE_ID("$Id: lib_inwstr.c,v 1.6 2011/05/28 22:49:49 tom Exp $")
NCURSES_EXPORT(int)
winnwstr(WINDOW *win, wchar_t *wstr, int n)
@@ -93,8 +93,13 @@ NCURSES_EXPORT(int)
winwstr(WINDOW *win, wchar_t *wstr)
{
int result = OK;
+
T((T_CALLED("winwstr(%p,%p)"), (void *) win, (void *) wstr));
- if (winnwstr(win, wstr, CCHARW_MAX * (win->_maxx - win->_curx + 1)) == ERR)
+ if (win == 0) {
+ result = ERR;
+ } else if (winnwstr(win, wstr,
+ CCHARW_MAX * (win->_maxx - win->_curx + 1)) == ERR) {
result = ERR;
+ }
returnCode(result);
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_slk_wset.c b/contrib/ncurses/ncurses/widechar/lib_slk_wset.c
index 646b5d9e2fa8..89275567557b 100644
--- a/contrib/ncurses/ncurses/widechar/lib_slk_wset.c
+++ b/contrib/ncurses/ncurses/widechar/lib_slk_wset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2003-2004,2005 Free Software Foundation, Inc. *
+ * Copyright (c) 2003-2002,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -40,7 +40,7 @@
#include <wctype.h>
#endif
-MODULE_ID("$Id: lib_slk_wset.c,v 1.11 2005/01/16 01:03:53 tom Exp $")
+MODULE_ID("$Id: lib_slk_wset.c,v 1.13 2011/10/22 15:52:20 tom Exp $")
NCURSES_EXPORT(int)
slk_wset(int i, const wchar_t *astr, int format)
@@ -53,19 +53,21 @@ slk_wset(int i, const wchar_t *astr, int format)
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);
+ if (astr != 0) {
+ init_mb(state);
+ str = astr;
+ if ((arglen = wcsrtombs(NULL, &str, (size_t) 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);
}
- 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 7a626a9eee84..d5ae608e36ed 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-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_unget_wch.c,v 1.14 2010/07/24 11:35:21 tom Exp $")
+MODULE_ID("$Id: lib_unget_wch.c,v 1.15 2011/10/22 16:34:50 tom Exp $")
/*
* Wrapper for wcrtomb() which obtains the length needed for the given
@@ -55,7 +55,7 @@ _nc_wcrtomb(char *target, wchar_t source, mbstate_t * state)
const wchar_t *tempp = temp;
temp[0] = source;
temp[1] = 0;
- result = (int) wcsrtombs(NULL, &tempp, 0, state);
+ result = (int) wcsrtombs(NULL, &tempp, (size_t) 0, state);
} else {
result = (int) wcrtomb(target, source, state);
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_vid_attr.c b/contrib/ncurses/ncurses/widechar/lib_vid_attr.c
index e4cf093a1f6b..0be2b195c3d2 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-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -36,14 +36,16 @@
#define CUR SP_TERMTYPE
#endif
-MODULE_ID("$Id: lib_vid_attr.c,v 1.14 2010/12/19 01:44:24 tom Exp $")
+MODULE_ID("$Id: lib_vid_attr.c,v 1.22 2014/02/01 22:09:27 tom Exp $")
-#define doPut(mode) TPUTS_TRACE(#mode); NCURSES_SP_NAME(tputs)(NCURSES_SP_ARGx mode, 1, outc)
+#define doPut(mode) \
+ TPUTS_TRACE(#mode); \
+ NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc)
-#define TurnOn(mask,mode) \
+#define TurnOn(mask, mode) \
if ((turn_on & mask) && mode) { doPut(mode); }
-#define TurnOff(mask,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 */
@@ -66,7 +68,7 @@ MODULE_ID("$Id: lib_vid_attr.c,v 1.14 2010/12/19 01:44:24 tom Exp $")
NCURSES_EXPORT(int)
NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
attr_t newmode,
- short pair,
+ NCURSES_PAIRS_T pair,
void *opts GCC_UNUSED,
NCURSES_SP_OUTC outc)
{
@@ -120,7 +122,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
* 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;
+ unsigned value = (unsigned) no_color_video;
attr_t mask = NCURSES_BITS((value & 63)
| ((value & 192) << 1)
| ((value & 256) >> 2), 8);
@@ -161,6 +163,11 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
if (!SP_PARM || SP_PARM->_use_rmso) {
TurnOff(A_STANDOUT, exit_standout_mode);
}
+#if USE_ITALIC
+ if (!SP_PARM || SP_PARM->_use_ritm) {
+ TurnOff(A_ITALIC, exit_italics_mode);
+ }
+#endif
}
previous_attr &= ALL_BUT_COLOR;
previous_pair = 0;
@@ -185,6 +192,15 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
previous_attr &= ALL_BUT_COLOR;
previous_pair = 0;
}
+#if USE_ITALIC
+ if (!SP_PARM || SP_PARM->_use_ritm) {
+ if (turn_on & A_ITALIC) {
+ TurnOn(A_ITALIC, enter_italics_mode);
+ } else if (turn_off & A_ITALIC) {
+ TurnOff(A_ITALIC, exit_italics_mode);
+ }
+ }
+#endif
SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair);
} else {
@@ -199,7 +215,11 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
if (!SP_PARM || SP_PARM->_use_rmso) {
TurnOff(A_STANDOUT, exit_standout_mode);
}
-
+#if USE_ITALIC
+ if (!SP_PARM || SP_PARM->_use_ritm) {
+ TurnOff(A_ITALIC, exit_italics_mode);
+ }
+#endif
if (turn_off && exit_attribute_mode) {
doPut(exit_attribute_mode);
turn_on |= (newmode & ALL_BUT_COLOR);
@@ -219,6 +239,9 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
TurnOn(A_PROTECT, enter_protected_mode);
TurnOn(A_INVIS, enter_secure_mode);
TurnOn(A_UNDERLINE, enter_underline_mode);
+#if USE_ITALIC
+ TurnOn(A_ITALIC, enter_italics_mode);
+#endif
#if USE_WIDEC_SUPPORT
TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode);
TurnOn(A_LEFT, enter_left_hl_mode);
@@ -244,7 +267,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
returnCode(OK);
#else
- T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), pair));
+ T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), (int) pair));
set_color(newmode, pair);
returnCode(NCURSES_SP_NAME(vidputs) (NCURSES_SP_ARGx newmode, outc));
#endif
@@ -253,7 +276,7 @@ NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
vid_puts(attr_t newmode,
- short pair,
+ NCURSES_PAIRS_T pair,
void *opts GCC_UNUSED,
NCURSES_OUTC outc)
{
@@ -270,20 +293,20 @@ vid_puts(attr_t newmode,
NCURSES_EXPORT(int)
NCURSES_SP_NAME(vid_attr) (NCURSES_SP_DCLx
attr_t newmode,
- short pair,
+ NCURSES_PAIRS_T pair,
void *opts)
{
- T((T_CALLED("vid_attr(%s,%d)"), _traceattr(newmode), pair));
+ T((T_CALLED("vid_attr(%s,%d)"), _traceattr(newmode), (int) pair));
returnCode(NCURSES_SP_NAME(vid_puts) (NCURSES_SP_ARGx
newmode,
pair,
opts,
- NCURSES_SP_NAME(_nc_outch)));
+ NCURSES_SP_NAME(_nc_putchar)));
}
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(int)
-vid_attr(attr_t newmode, short pair, void *opts)
+vid_attr(attr_t newmode, NCURSES_PAIRS_T pair, void *opts)
{
return NCURSES_SP_NAME(vid_attr) (CURRENT_SCREEN, newmode, pair, opts);
}
@@ -296,24 +319,26 @@ vid_attr(attr_t newmode, short pair, void *opts)
NCURSES_EXPORT(attr_t)
NCURSES_SP_NAME(term_attrs) (NCURSES_SP_DCL0)
{
- attr_t attrs;
+ attr_t attrs = 0;
T((T_CALLED("term_attrs()")));
- attrs = SP_PARM ? NCURSES_SP_NAME(termattrs) (NCURSES_SP_ARG) : 0;
-
- /* 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;
+ if (SP_PARM) {
+ attrs = NCURSES_SP_NAME(termattrs) (NCURSES_SP_ARG);
+
+ /* 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 5a16e457e091..dc3af21e11b2 100644
--- a/contrib/ncurses/ncurses/widechar/lib_wacs.c
+++ b/contrib/ncurses/ncurses/widechar/lib_wacs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2002-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -32,7 +32,7 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_wacs.c,v 1.10 2010/12/19 01:43:19 tom Exp $")
+MODULE_ID("$Id: lib_wacs.c,v 1.14 2014/02/23 01:21:08 tom Exp $")
NCURSES_EXPORT_VAR(cchar_t) * _nc_wacs = 0;
@@ -119,22 +119,24 @@ _nc_init_wacs(void)
T(("initializing WIDE-ACS map (Unicode is%s active)",
active ? "" : " not"));
- _nc_wacs = typeCalloc(cchar_t, ACS_LEN);
- for (n = 0; n < SIZEOF(table); ++n) {
- int wide = wcwidth(table[n].value[active]);
+ if ((_nc_wacs = typeCalloc(cchar_t, ACS_LEN)) != 0) {
- m = table[n].map;
- 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);
- }
+ for (n = 0; n < SIZEOF(table); ++n) {
+ int wide = wcwidth((wchar_t) table[n].value[active]);
+
+ m = table[n].map;
+ if (active && (wide == 1)) {
+ SetChar(_nc_wacs[m], table[n].value[1], 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],
- _tracecchar_t(&_nc_wacs[m])));
+ T(("#%d, SetChar(%c, %#04x) = %s",
+ n, m,
+ table[n].value[active],
+ _tracecchar_t(&_nc_wacs[m])));
+ }
}
}
diff --git a/contrib/ncurses/ncurses/widechar/lib_wunctrl.c b/contrib/ncurses/ncurses/widechar/lib_wunctrl.c
index 50958e44c7bb..45d495203fc6 100644
--- a/contrib/ncurses/ncurses/widechar/lib_wunctrl.c
+++ b/contrib/ncurses/ncurses/widechar/lib_wunctrl.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2001-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2001-2011,2012 Free 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,14 +35,17 @@
#include <curses.priv.h>
-MODULE_ID("$Id: lib_wunctrl.c,v 1.14 2010/12/19 01:42:15 tom Exp $")
+MODULE_ID("$Id: lib_wunctrl.c,v 1.16 2012/12/15 20:53:42 tom Exp $")
NCURSES_EXPORT(wchar_t *)
NCURSES_SP_NAME(wunctrl) (NCURSES_SP_DCLx cchar_t *wc)
{
static wchar_t str[CCHARW_MAX + 1], *wsp;
+ wchar_t *result;
- if (Charable(*wc)) {
+ if (wc == 0) {
+ result = 0;
+ } else if (SP_PARM != 0 && Charable(*wc)) {
const char *p =
NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx
(unsigned) _nc_to_char((wint_t)CharOf(*wc)));
@@ -51,9 +54,11 @@ NCURSES_SP_NAME(wunctrl) (NCURSES_SP_DCLx cchar_t *wc)
*wsp++ = (wchar_t) _nc_to_widechar(*p);
}
*wsp = 0;
- return str;
- } else
- return wc->chars;
+ result = str;
+ } else {
+ result = wc->chars;
+ }
+ return result;
}
#if NCURSES_SP_FUNCS
diff --git a/contrib/ncurses/ncurses/widechar/widechars.c b/contrib/ncurses/ncurses/widechar/widechars.c
new file mode 100644
index 000000000000..6951e2863fa0
--- /dev/null
+++ b/contrib/ncurses/ncurses/widechar/widechars.c
@@ -0,0 +1,152 @@
+/****************************************************************************
+ * Copyright (c) 2012,2013 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+
+#include <curses.priv.h>
+
+#if USE_WIDEC_SUPPORT
+
+MODULE_ID("$Id: widechars.c,v 1.5 2013/03/02 18:55:51 tom Exp $")
+
+#if defined(__MINGW32__)
+/*
+ * MinGW has wide-character functions, but they do not work correctly.
+ */
+
+int
+_nc_mbtowc(wchar_t *pwc, const char *s, size_t n)
+{
+ int result;
+ int count;
+ int try;
+
+ if (s != 0 && n != 0) {
+ /*
+ * MultiByteToWideChar() can decide to return more than one
+ * wide-character. We want only one. Ignore any trailing null, both
+ * in the initial count and in the conversion.
+ */
+ count = 0;
+ for (try = 1; try <= (int) n; ++try) {
+ count = MultiByteToWideChar(CP_UTF8,
+ MB_ERR_INVALID_CHARS,
+ s,
+ try,
+ pwc,
+ 0);
+ TR(TRACE_BITS, ("...try %d:%d", try, count));
+ if (count > 0) {
+ break;
+ }
+ }
+ if (count < 1 || count > 2) {
+ result = -1;
+ } else {
+ wchar_t actual[2];
+ memset(&actual, 0, sizeof(actual));
+ count = MultiByteToWideChar(CP_UTF8,
+ MB_ERR_INVALID_CHARS,
+ s,
+ try,
+ actual,
+ 2);
+ TR(TRACE_BITS, ("\twin32 ->%#x, %#x", actual[0], actual[1]));
+ *pwc = actual[0];
+ if (actual[1] != 0)
+ result = -1;
+ else
+ result = try;
+ }
+ } else {
+ result = 0;
+ }
+
+ return result;
+}
+
+int
+_nc_mblen(const char *s, size_t n)
+{
+ int result = -1;
+ int count;
+ wchar_t temp;
+
+ if (s != 0 && n != 0) {
+ count = _nc_mbtowc(&temp, s, n);
+ if (count == 1) {
+ int check = WideCharToMultiByte(CP_UTF8,
+ 0,
+ &temp,
+ 1,
+ NULL,
+ 0, /* compute length only */
+ NULL,
+ NULL);
+ TR(TRACE_BITS, ("\tcheck ->%d\n", check));
+ if (check > 0 && (size_t) check <= n) {
+ result = check;
+ }
+ }
+ } else {
+ result = 0;
+ }
+
+ return result;
+}
+
+int __MINGW_NOTHROW
+_nc_wctomb(char *s, wchar_t wc)
+{
+ int result;
+ int check;
+
+ check = WideCharToMultiByte(CP_UTF8,
+ 0,
+ &wc,
+ 1,
+ NULL,
+ 0, /* compute length only */
+ NULL,
+ NULL);
+ if (check > 0) {
+ result = WideCharToMultiByte(CP_UTF8,
+ 0,
+ &wc,
+ 1,
+ s,
+ check + 1,
+ NULL,
+ NULL);
+ } else {
+ result = -1;
+ }
+ return result;
+}
+
+#endif /* __MINGW32__ */
+
+#endif /* USE_WIDEC_SUPPORT */
diff --git a/contrib/ncurses/ncurses/win32con/win_driver.c b/contrib/ncurses/ncurses/win32con/win_driver.c
index c214639cd4df..c664d92387cc 100644
--- a/contrib/ncurses/ncurses/win32con/win_driver.c
+++ b/contrib/ncurses/ncurses/win32con/win_driver.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -28,26 +28,32 @@
/****************************************************************************
* Author: Juergen Pfeifer *
- * *
****************************************************************************/
/*
* TODO - GetMousePos(POINT * result) from ntconio.c
* TODO - implement nodelay
+ * TODO - when $NCGDB is set, implement non-buffered output, like PDCurses
*/
#include <curses.priv.h>
#define CUR my_term.type.
-MODULE_ID("$Id: win_driver.c,v 1.10 2010/12/25 19:28:21 tom Exp $")
+MODULE_ID("$Id: win_driver.c,v 1.24 2014/02/23 01:23:29 tom Exp $")
#define WINMAGIC NCDRV_MAGIC(NCDRV_WINCONSOLE)
-#define AssertTCB() assert(TCB!=0 && TCB->magic==WINMAGIC)
-#define SetSP() assert(TCB->csp!=0); sp = TCB->csp
+#define EXP_OPTIMIZE 0
+
+#define okConsoleHandle(TCB) (TCB != 0 && !InvalidConsoleHandle(TCB->hdl))
+
+#define AssertTCB() assert(TCB != 0 && (TCB->magic == WINMAGIC))
+#define SetSP() assert(TCB->csp != 0); sp = TCB->csp; (void) sp
#define GenMap(vKey,key) MAKELONG(key, vKey)
+#define AdjustY(p) ((p)->buffered ? 0 : (int) (p)->SBI.srWindow.Top)
+
static const LONG keylist[] =
{
GenMap(VK_PRIOR, KEY_PPAGE),
@@ -69,9 +75,13 @@ static const LONG keylist[] =
typedef struct props {
CONSOLE_SCREEN_BUFFER_INFO SBI;
bool progMode;
+ TERM_HANDLE lastOut;
DWORD map[MAPSIZE];
DWORD rmap[MAPSIZE];
WORD pairs[NUMPAIRS];
+ bool buffered;
+ COORD origin;
+ CHAR_INFO *save_screen;
} Properties;
#define PropOf(TCB) ((Properties*)TCB->prop)
@@ -103,7 +113,7 @@ MapColor(bool fore, int color)
}
static WORD
-MapAttr(TERMINAL_CONTROL_BLOCK * TCB, WORD res, chtype ch)
+MapAttr(TERMINAL_CONTROL_BLOCK * TCB, WORD res, attr_t ch)
{
if (ch & A_COLOR) {
int p;
@@ -135,8 +145,69 @@ MapAttr(TERMINAL_CONTROL_BLOCK * TCB, WORD res, chtype ch)
return res;
}
+#if USE_WIDEC_SUPPORT
+/*
+ * TODO: support surrogate pairs
+ * TODO: support combining characters
+ * TODO: support acsc
+ * TODO: check wcwidth of base character, fill if needed for double-width
+ * TODO: _nc_wacs should be part of sp.
+ */
+static BOOL
+con_write16(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, cchar_t *str, int limit)
+{
+ int actual = 0;
+ CHAR_INFO ci[limit];
+ COORD loc, siz;
+ SMALL_RECT rec;
+ int i;
+ cchar_t ch;
+ SCREEN *sp;
+ Properties *p = PropOf(TCB);
+
+ AssertTCB();
+
+ SetSP();
+
+ for (i = actual = 0; i < limit; i++) {
+ ch = str[i];
+ if (isWidecExt(ch))
+ continue;
+ ci[actual].Char.UnicodeChar = CharOf(ch);
+ ci[actual].Attributes = MapAttr(TCB,
+ PropOf(TCB)->SBI.wAttributes,
+ AttrOf(ch));
+ if (AttrOf(ch) & A_ALTCHARSET) {
+ if (_nc_wacs) {
+ int which = CharOf(ch);
+ if (which > 0
+ && which < ACS_LEN
+ && CharOf(_nc_wacs[which]) != 0) {
+ ci[actual].Char.UnicodeChar = CharOf(_nc_wacs[which]);
+ } else {
+ ci[actual].Char.UnicodeChar = ' ';
+ }
+ }
+ }
+ ++actual;
+ }
+
+ loc.X = (short) 0;
+ loc.Y = (short) 0;
+ siz.X = (short) actual;
+ siz.Y = 1;
+
+ rec.Left = (short) x;
+ rec.Top = (SHORT) (y + AdjustY(p));
+ rec.Right = (short) (x + limit - 1);
+ rec.Bottom = rec.Top;
+
+ return WriteConsoleOutputW(TCB->hdl, ci, siz, loc, &rec);
+}
+#define con_write(tcb, y, x, str, n) con_write16(tcb, y, x, str, n)
+#else
static BOOL
-con_write(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n)
+con_write8(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n)
{
CHAR_INFO ci[n];
COORD loc, siz;
@@ -147,9 +218,6 @@ con_write(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n)
AssertTCB();
- if (TCB == 0 || InvalidConsoleHandle(TCB->hdl))
- return FALSE;
-
SetSP();
for (i = 0; i < n; i++) {
@@ -161,7 +229,7 @@ con_write(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n)
if (ChAttrOf(ch) & A_ALTCHARSET) {
if (sp->_acs_map)
ci[i].Char.AsciiChar =
- ChCharOf(NCURSES_SP_NAME(_nc_acs_char) (sp, ChCharOf(ch)));
+ ChCharOf(NCURSES_SP_NAME(_nc_acs_char) (sp, ChCharOf(ch)));
}
}
@@ -177,55 +245,163 @@ con_write(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n)
return WriteConsoleOutput(TCB->hdl, ci, siz, loc, &rec);
}
+#define con_write(tcb, y, x, str, n) con_write8(tcb, y, x, str, n)
+#endif
+
+#if EXP_OPTIMIZE
+/*
+ * Comparing new/current screens, determine the last column-index for a change
+ * beginning on the given row,col position. Unlike a serial terminal, there is
+ * no cost for "moving" the "cursor" on the line as we update it.
+ */
+static int
+find_end_of_change(SCREEN *sp, int row, int col)
+{
+ int result = col;
+ struct ldat *curdat = CurScreen(sp)->_line + row;
+ struct ldat *newdat = NewScreen(sp)->_line + row;
+
+ while (col <= newdat->lastchar) {
+#if USE_WIDEC_SUPPORT
+ if (isWidecExt(curdat->text[col]) || isWidecExt(newdat->text[col])) {
+ result = col;
+ } else if (memcmp(&curdat->text[col],
+ &newdat->text[col],
+ sizeof(curdat->text[0]))) {
+ result = col;
+ } else {
+ break;
+ }
+#else
+ if (curdat->text[col] != newdat->text[col]) {
+ result = col;
+ } else {
+ break;
+ }
+#endif
+ ++col;
+ }
+ return result;
+}
+
+/*
+ * Given a row,col position at the end of a change-chunk, look for the
+ * beginning of the next change-chunk.
+ */
+static int
+find_next_change(SCREEN *sp, int row, int col)
+{
+ struct ldat *curdat = CurScreen(sp)->_line + row;
+ struct ldat *newdat = NewScreen(sp)->_line + row;
+ int result = newdat->lastchar + 1;
+
+ while (++col <= newdat->lastchar) {
+#if USE_WIDEC_SUPPORT
+ if (isWidecExt(curdat->text[col]) != isWidecExt(newdat->text[col])) {
+ result = col;
+ break;
+ } else if (memcmp(&curdat->text[col],
+ &newdat->text[col],
+ sizeof(curdat->text[0]))) {
+ result = col;
+ break;
+ }
+#else
+ if (curdat->text[col] != newdat->text[col]) {
+ result = col;
+ break;
+ }
+#endif
+ }
+ return result;
+}
+
+#define EndChange(first) \
+ find_end_of_change(sp, y, first)
+#define NextChange(last) \
+ find_next_change(sp, y, last)
+
+#endif /* EXP_OPTIMIZE */
#define MARK_NOCHANGE(win,row) \
win->_line[row].firstchar = _NOCHANGE; \
win->_line[row].lastchar = _NOCHANGE
+static void
+selectActiveHandle(TERMINAL_CONTROL_BLOCK * TCB)
+{
+ if (PropOf(TCB)->lastOut != TCB->hdl) {
+ PropOf(TCB)->lastOut = TCB->hdl;
+ SetConsoleActiveScreenBuffer(PropOf(TCB)->lastOut);
+ }
+}
+
static int
drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
{
+ int result = ERR;
int y, nonempty, n, x0, x1, Width, Height;
SCREEN *sp;
AssertTCB();
SetSP();
- Width = screen_columns(sp);
- Height = screen_lines(sp);
- nonempty = min(Height, NewScreen(sp)->_maxy + 1);
+ T((T_CALLED("win32con::drv_doupdate(%p)"), TCB));
+ if (okConsoleHandle(TCB)) {
- if ((CurScreen(sp)->_clear || NewScreen(sp)->_clear)) {
- int x;
- chtype empty[Width];
+ Width = screen_columns(sp);
+ Height = screen_lines(sp);
+ nonempty = min(Height, NewScreen(sp)->_maxy + 1);
- for (x = 0; x < Width; x++)
- empty[x] = ' ';
+ if ((CurScreen(sp)->_clear || NewScreen(sp)->_clear)) {
+ int x;
+#if USE_WIDEC_SUPPORT
+ cchar_t empty[Width];
+ wchar_t blank[2] =
+ {
+ L' ', L'\0'
+ };
- for (y = 0; y < nonempty; y++) {
- con_write(TCB, y, 0, empty, Width);
- memcpy(empty,
- CurScreen(sp)->_line[y].text,
- Width * sizeof(chtype));
+ for (x = 0; x < Width; x++)
+ setcchar(&empty[x], blank, 0, 0, 0);
+#else
+ chtype empty[Width];
+
+ for (x = 0; x < Width; x++)
+ empty[x] = ' ';
+#endif
+
+ for (y = 0; y < nonempty; y++) {
+ con_write(TCB, y, 0, empty, Width);
+ memcpy(empty,
+ CurScreen(sp)->_line[y].text,
+ (size_t) Width * sizeof(empty[0]));
+ }
+ CurScreen(sp)->_clear = FALSE;
+ NewScreen(sp)->_clear = FALSE;
+ touchwin(NewScreen(sp));
}
- CurScreen(sp)->_clear = FALSE;
- NewScreen(sp)->_clear = FALSE;
- touchwin(NewScreen(sp));
- }
- for (y = 0; y < nonempty; y++) {
- x0 = NewScreen(sp)->_line[y].firstchar;
- if (x0 != _NOCHANGE) {
- x1 = NewScreen(sp)->_line[y].lastchar;
- n = x1 - x0 + 1;
- if (n > 0) {
- memcpy(CurScreen(sp)->_line[y].text + x0,
- NewScreen(sp)->_line[y].text + x0,
- n * sizeof(chtype));
- con_write(TCB,
- y,
- x0,
- ((chtype *) CurScreen(sp)->_line[y].text) + x0, n);
+ for (y = 0; y < nonempty; y++) {
+ x0 = NewScreen(sp)->_line[y].firstchar;
+ if (x0 != _NOCHANGE) {
+#if EXP_OPTIMIZE
+ int x2;
+ int limit = NewScreen(sp)->_line[y].lastchar;
+ while ((x1 = EndChange(x0)) <= limit) {
+ while ((x2 = NextChange(x1)) <= limit && x2 <= (x1 + 2)) {
+ x1 = x2;
+ }
+ n = x1 - x0 + 1;
+ memcpy(&CurScreen(sp)->_line[y].text[x0],
+ &NewScreen(sp)->_line[y].text[x0],
+ n * sizeof(CurScreen(sp)->_line[y].text[x0]));
+ con_write(TCB,
+ y,
+ x0,
+ &CurScreen(sp)->_line[y].text[x0], n);
+ x0 = NextChange(x1);
+ }
/* mark line changed successfully */
if (y <= NewScreen(sp)->_maxy) {
@@ -234,26 +410,50 @@ drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB)
if (y <= CurScreen(sp)->_maxy) {
MARK_NOCHANGE(CurScreen(sp), y);
}
+#else
+ x1 = NewScreen(sp)->_line[y].lastchar;
+ n = x1 - x0 + 1;
+ if (n > 0) {
+ memcpy(&CurScreen(sp)->_line[y].text[x0],
+ &NewScreen(sp)->_line[y].text[x0],
+ (size_t) n * sizeof(CurScreen(sp)->_line[y].text[x0]));
+ con_write(TCB,
+ y,
+ x0,
+ &CurScreen(sp)->_line[y].text[x0], n);
+
+ /* mark line changed successfully */
+ if (y <= NewScreen(sp)->_maxy) {
+ MARK_NOCHANGE(NewScreen(sp), y);
+ }
+ if (y <= CurScreen(sp)->_maxy) {
+ MARK_NOCHANGE(CurScreen(sp), y);
+ }
+ }
+#endif
}
}
- }
- /* put everything back in sync */
- for (y = nonempty; y <= NewScreen(sp)->_maxy; y++) {
- MARK_NOCHANGE(NewScreen(sp), y);
- }
- for (y = nonempty; y <= CurScreen(sp)->_maxy; y++) {
- MARK_NOCHANGE(CurScreen(sp), y);
- }
+ /* put everything back in sync */
+ for (y = nonempty; y <= NewScreen(sp)->_maxy; y++) {
+ MARK_NOCHANGE(NewScreen(sp), y);
+ }
+ for (y = nonempty; y <= CurScreen(sp)->_maxy; y++) {
+ MARK_NOCHANGE(CurScreen(sp), y);
+ }
- if (!NewScreen(sp)->_leaveok) {
- CurScreen(sp)->_curx = NewScreen(sp)->_curx;
- CurScreen(sp)->_cury = NewScreen(sp)->_cury;
+ if (!NewScreen(sp)->_leaveok) {
+ CurScreen(sp)->_curx = NewScreen(sp)->_curx;
+ CurScreen(sp)->_cury = NewScreen(sp)->_cury;
- TCB->drv->hwcur(TCB, 0, 0, CurScreen(sp)->_cury, CurScreen(sp)->_curx);
+ TCB->drv->hwcur(TCB,
+ 0, 0,
+ CurScreen(sp)->_cury, CurScreen(sp)->_curx);
+ }
+ selectActiveHandle(TCB);
+ result = OK;
}
- SetConsoleActiveScreenBuffer(TCB->hdl);
- return OK;
+ returnCode(result);
}
static bool
@@ -269,14 +469,14 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB,
assert(tname != 0);
TCB->magic = WINMAGIC;
- if (*tname == 0 || *tname == 0) {
+ if (*tname == 0 || *tname == 0 || *tname == '#') {
code = TRUE;
} else {
TERMINAL my_term;
int status;
code = FALSE;
-#if (USE_DATABASE || USE_TERMCAP)
+#if (NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP)
status = _nc_setup_tinfo(tname, &my_term.type);
#else
status = TGETENT_NO;
@@ -299,7 +499,7 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB,
if (code) {
if ((TCB->term.type.Booleans) == 0) {
- _nc_init_entry(&(TCB->term.type));
+ _nc_init_termtype(&(TCB->term.type));
}
}
@@ -308,7 +508,7 @@ drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB,
static int
drv_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB,
- bool beepFlag GCC_UNUSED)
+ int beepFlag GCC_UNUSED)
{
SCREEN *sp;
int res = ERR;
@@ -346,19 +546,55 @@ drv_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB,
return (code);
}
+static bool
+get_SBI(TERMINAL_CONTROL_BLOCK * TCB)
+{
+ bool rc = FALSE;
+ Properties *p = PropOf(TCB);
+ if (GetConsoleScreenBufferInfo(TCB->hdl, &(p->SBI))) {
+ T(("GetConsoleScreenBufferInfo"));
+ T(("... buffer(X:%d Y:%d)",
+ p->SBI.dwSize.X,
+ p->SBI.dwSize.Y));
+ T(("... window(X:%d Y:%d)",
+ p->SBI.dwMaximumWindowSize.X,
+ p->SBI.dwMaximumWindowSize.Y));
+ T(("... cursor(X:%d Y:%d)",
+ p->SBI.dwCursorPosition.X,
+ p->SBI.dwCursorPosition.Y));
+ T(("... display(Top:%d Bottom:%d Left:%d Right:%d)",
+ p->SBI.srWindow.Top,
+ p->SBI.srWindow.Bottom,
+ p->SBI.srWindow.Left,
+ p->SBI.srWindow.Right));
+ if (p->buffered) {
+ p->origin.X = 0;
+ p->origin.Y = 0;
+ } else {
+ p->origin.X = p->SBI.srWindow.Left;
+ p->origin.Y = p->SBI.srWindow.Top;
+ }
+ rc = TRUE;
+ } else {
+ T(("GetConsoleScreenBufferInfo ERR"));
+ }
+ return rc;
+}
+
static void
drv_setcolor(TERMINAL_CONTROL_BLOCK * TCB,
- bool fore,
+ int fore,
int color,
int (*outc) (SCREEN *, int) GCC_UNUSED)
{
AssertTCB();
- if (TCB && !InvalidConsoleHandle(TCB->hdl)) {
+ if (okConsoleHandle(TCB) &&
+ PropOf(TCB) != 0) {
WORD a = MapColor(fore, color);
- a = ((PropOf(TCB)->SBI.wAttributes) & (fore ? 0xfff8 : 0xff8f)) | a;
+ a |= (WORD) ((PropOf(TCB)->SBI.wAttributes) & (fore ? 0xfff8 : 0xff8f));
SetConsoleTextAttribute(TCB->hdl, a);
- GetConsoleScreenBufferInfo(TCB->hdl, &(PropOf(TCB)->SBI));
+ get_SBI(TCB);
}
}
@@ -368,10 +604,10 @@ drv_rescol(TERMINAL_CONTROL_BLOCK * TCB)
bool res = FALSE;
AssertTCB();
- if (TCB && !InvalidConsoleHandle(TCB->hdl)) {
+ if (okConsoleHandle(TCB)) {
WORD a = FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN;
SetConsoleTextAttribute(TCB->hdl, a);
- GetConsoleScreenBufferInfo(TCB->hdl, &(PropOf(TCB)->SBI));
+ get_SBI(TCB);
res = TRUE;
}
return res;
@@ -392,14 +628,28 @@ drv_rescolors(TERMINAL_CONTROL_BLOCK * TCB)
static int
drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *Lines, int *Cols)
{
+ int result = ERR;
+
AssertTCB();
- if (TCB == NULL || Lines == NULL || Cols == NULL || InvalidConsoleHandle(TCB->hdl))
- return ERR;
+ T((T_CALLED("win32con::drv_size(%p)"), TCB));
- *Lines = (int) (PropOf(TCB)->SBI.dwSize.Y);
- *Cols = (int) (PropOf(TCB)->SBI.dwSize.X);
- return OK;
+ if (okConsoleHandle(TCB) &&
+ PropOf(TCB) != 0 &&
+ Lines != NULL &&
+ Cols != NULL) {
+ if (PropOf(TCB)->buffered) {
+ *Lines = (int) (PropOf(TCB)->SBI.dwSize.Y);
+ *Cols = (int) (PropOf(TCB)->SBI.dwSize.X);
+ } else {
+ *Lines = (int) (PropOf(TCB)->SBI.srWindow.Bottom + 1 -
+ PropOf(TCB)->SBI.srWindow.Top);
+ *Cols = (int) (PropOf(TCB)->SBI.srWindow.Right + 1 -
+ PropOf(TCB)->SBI.srWindow.Left);
+ }
+ result = OK;
+ }
+ returnCode(result);
}
static int
@@ -412,7 +662,7 @@ drv_setsize(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED,
}
static int
-drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, bool setFlag, TTY * buf)
+drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, int setFlag, TTY * buf)
{
DWORD dwFlag = 0;
tcflag_t iflag;
@@ -432,17 +682,17 @@ drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, bool setFlag, TTY * buf)
if (lflag & ICANON)
dwFlag |= ENABLE_LINE_INPUT;
else
- dwFlag &= ~ENABLE_LINE_INPUT;
+ dwFlag &= (DWORD) (~ENABLE_LINE_INPUT);
if (lflag & ECHO)
dwFlag |= ENABLE_ECHO_INPUT;
else
- dwFlag &= ~ENABLE_ECHO_INPUT;
+ dwFlag &= (DWORD) (~ENABLE_ECHO_INPUT);
if (iflag & BRKINT)
dwFlag |= ENABLE_PROCESSED_INPUT;
else
- dwFlag &= ~ENABLE_PROCESSED_INPUT;
+ dwFlag &= (DWORD) (~ENABLE_PROCESSED_INPUT);
dwFlag |= ENABLE_MOUSE_INPUT;
@@ -458,17 +708,17 @@ drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, bool setFlag, TTY * buf)
if (dwFlag & ENABLE_LINE_INPUT)
lflag |= ICANON;
else
- lflag &= ~ICANON;
+ lflag &= (tcflag_t) (~ICANON);
if (dwFlag & ENABLE_ECHO_INPUT)
lflag |= ECHO;
else
- lflag &= ~ECHO;
+ lflag &= (tcflag_t) (~ECHO);
if (dwFlag & ENABLE_PROCESSED_INPUT)
iflag |= BRKINT;
else
- iflag &= ~BRKINT;
+ iflag &= (tcflag_t) (~BRKINT);
TCB->term.Nttyb.c_iflag = iflag;
TCB->term.Nttyb.c_lflag = lflag;
@@ -479,7 +729,7 @@ drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, bool setFlag, TTY * buf)
}
static int
-drv_mode(TERMINAL_CONTROL_BLOCK * TCB, bool progFlag, bool defFlag)
+drv_mode(TERMINAL_CONTROL_BLOCK * TCB, int progFlag, int defFlag)
{
SCREEN *sp;
TERMINAL *_term = (TERMINAL *) TCB;
@@ -489,12 +739,13 @@ drv_mode(TERMINAL_CONTROL_BLOCK * TCB, bool progFlag, bool defFlag)
sp = TCB->csp;
PropOf(TCB)->progMode = progFlag;
- SetConsoleActiveScreenBuffer(progFlag ? TCB->hdl : TCB->out);
+ PropOf(TCB)->lastOut = progFlag ? TCB->hdl : TCB->out;
+ SetConsoleActiveScreenBuffer(PropOf(TCB)->lastOut);
if (progFlag) /* prog mode */ {
if (defFlag) {
if ((drv_sgmode(TCB, FALSE, &(_term->Nttyb)) == OK)) {
- _term->Nttyb.c_oflag &= ~OFLAGS_TABS;
+ _term->Nttyb.c_oflag &= (tcflag_t) (~OFLAGS_TABS);
code = OK;
}
} else {
@@ -593,6 +844,92 @@ drv_release(TERMINAL_CONTROL_BLOCK * TCB)
returnVoid;
}
+/*
+ * Attempt to save the screen contents. PDCurses does this if
+ * PDC_RESTORE_SCREEN is set, giving the same visual appearance on restoration
+ * as if the library had allocated a console buffer.
+ */
+static bool
+save_original_screen(TERMINAL_CONTROL_BLOCK * TCB)
+{
+ bool result = FALSE;
+ Properties *p = PropOf(TCB);
+ COORD bufferSize;
+ COORD bufferCoord;
+ SMALL_RECT readRegion;
+ size_t want;
+
+ bufferSize.X = p->SBI.dwSize.X;
+ bufferSize.Y = p->SBI.dwSize.Y;
+ want = (size_t) (bufferSize.X * bufferSize.Y);
+
+ if ((p->save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) {
+ bufferCoord.X = bufferCoord.Y = 0;
+
+ readRegion.Top = 0;
+ readRegion.Left = 0;
+ readRegion.Bottom = (SHORT) (bufferSize.Y - 1);
+ readRegion.Right = (SHORT) (bufferSize.X - 1);
+
+ T(("... reading console buffer %dx%d into %d,%d - %d,%d at %d,%d",
+ bufferSize.Y, bufferSize.X,
+ readRegion.Top,
+ readRegion.Left,
+ readRegion.Bottom,
+ readRegion.Right,
+ bufferCoord.Y,
+ bufferCoord.X));
+
+ if (ReadConsoleOutput(TCB->hdl,
+ p->save_screen,
+ bufferSize,
+ bufferCoord,
+ &readRegion)) {
+ result = TRUE;
+ } else {
+ T((" error %#lx", (unsigned long) GetLastError()));
+ FreeAndNull(p->save_screen);
+
+ bufferSize.X = (SHORT) (p->SBI.srWindow.Right
+ - p->SBI.srWindow.Left + 1);
+ bufferSize.Y = (SHORT) (p->SBI.srWindow.Bottom
+ - p->SBI.srWindow.Top + 1);
+ want = (size_t) (bufferSize.X * bufferSize.Y);
+
+ if ((p->save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) {
+ bufferCoord.X = bufferCoord.Y = 0;
+
+ readRegion.Top = p->SBI.srWindow.Top;
+ readRegion.Left = p->SBI.srWindow.Left;
+ readRegion.Bottom = p->SBI.srWindow.Bottom;
+ readRegion.Right = p->SBI.srWindow.Right;
+
+ T(("... reading console window %dx%d into %d,%d - %d,%d at %d,%d",
+ bufferSize.Y, bufferSize.X,
+ readRegion.Top,
+ readRegion.Left,
+ readRegion.Bottom,
+ readRegion.Right,
+ bufferCoord.Y,
+ bufferCoord.X));
+
+ if (ReadConsoleOutput(TCB->hdl,
+ p->save_screen,
+ bufferSize,
+ bufferCoord,
+ &readRegion)) {
+ result = TRUE;
+ } else {
+ T((" error %#lx", (unsigned long) GetLastError()));
+ }
+ }
+ }
+ }
+
+ T(("... save original screen contents %s", result ? "ok" : "err"));
+ return result;
+}
+
static void
drv_init(TERMINAL_CONTROL_BLOCK * TCB)
{
@@ -606,6 +943,7 @@ drv_init(TERMINAL_CONTROL_BLOCK * TCB)
BOOL b = AllocConsole();
WORD a;
int i;
+ bool buffered = TRUE;
if (!b)
b = AttachConsole(ATTACH_PARENT_PROCESS);
@@ -613,18 +951,31 @@ drv_init(TERMINAL_CONTROL_BLOCK * TCB)
TCB->inp = GetStdHandle(STD_INPUT_HANDLE);
TCB->out = GetStdHandle(STD_OUTPUT_HANDLE);
- if (getenv("NCGDB"))
+ if (getenv("NCGDB")) {
TCB->hdl = TCB->out;
- else
+ buffered = FALSE;
+ } else {
TCB->hdl = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,
0,
NULL,
CONSOLE_TEXTMODE_BUFFER,
NULL);
+ }
- if (!InvalidConsoleHandle(TCB->hdl)) {
- TCB->prop = typeCalloc(Properties, 1);
- GetConsoleScreenBufferInfo(TCB->hdl, &(PropOf(TCB)->SBI));
+ if (InvalidConsoleHandle(TCB->hdl)) {
+ returnVoid;
+ } else if ((TCB->prop = typeCalloc(Properties, 1)) != 0) {
+ PropOf(TCB)->buffered = buffered;
+ if (!get_SBI(TCB)) {
+ FreeAndNull(TCB->prop); /* force error in drv_size */
+ returnVoid;
+ }
+ if (!buffered) {
+ if (!save_original_screen(TCB)) {
+ FreeAndNull(TCB->prop); /* force error in drv_size */
+ returnVoid;
+ }
+ }
}
TCB->info.initcolor = TRUE;
@@ -642,7 +993,7 @@ drv_init(TERMINAL_CONTROL_BLOCK * TCB)
if (GetNumberOfConsoleMouseButtons(&num_buttons)) {
T(("mouse has %ld buttons", num_buttons));
- TCB->info.numbuttons = num_buttons;
+ TCB->info.numbuttons = (int) num_buttons;
} else {
TCB->info.numbuttons = 1;
}
@@ -651,7 +1002,7 @@ drv_init(TERMINAL_CONTROL_BLOCK * TCB)
for (i = 0; i < (N_INI + FKEYS); i++) {
if (i < N_INI)
- PropOf(TCB)->rmap[i] = PropOf(TCB)->map[i] = keylist[i];
+ PropOf(TCB)->rmap[i] = PropOf(TCB)->map[i] = (DWORD) keylist[i];
else
PropOf(TCB)->rmap[i] = PropOf(TCB)->map[i] =
GenMap((VK_F1 + (i - N_INI)), (KEY_F(1) + (i - N_INI)));
@@ -674,9 +1025,9 @@ drv_init(TERMINAL_CONTROL_BLOCK * TCB)
static void
drv_initpair(TERMINAL_CONTROL_BLOCK * TCB,
- short pair,
- short f,
- short b)
+ int pair,
+ int f,
+ int b)
{
SCREEN *sp;
@@ -691,10 +1042,10 @@ drv_initpair(TERMINAL_CONTROL_BLOCK * TCB,
static void
drv_initcolor(TERMINAL_CONTROL_BLOCK * TCB,
- short color GCC_UNUSED,
- short r GCC_UNUSED,
- short g GCC_UNUSED,
- short b GCC_UNUSED)
+ int color GCC_UNUSED,
+ int r GCC_UNUSED,
+ int g GCC_UNUSED,
+ int b GCC_UNUSED)
{
SCREEN *sp;
@@ -704,9 +1055,9 @@ drv_initcolor(TERMINAL_CONTROL_BLOCK * TCB,
static void
drv_do_color(TERMINAL_CONTROL_BLOCK * TCB,
- short old_pair GCC_UNUSED,
- short pair GCC_UNUSED,
- bool reverse GCC_UNUSED,
+ int old_pair GCC_UNUSED,
+ int pair GCC_UNUSED,
+ int reverse GCC_UNUSED,
int (*outc) (SCREEN *, int) GCC_UNUSED
)
{
@@ -755,10 +1106,11 @@ drv_mvcur(TERMINAL_CONTROL_BLOCK * TCB,
int y, int x)
{
int ret = ERR;
- if (TCB && !InvalidConsoleHandle(TCB->hdl)) {
+ if (okConsoleHandle(TCB)) {
+ Properties *p = PropOf(TCB);
COORD loc;
loc.X = (short) x;
- loc.Y = (short) y;
+ loc.Y = (short) (y + AdjustY(p));
SetConsoleCursorPosition(TCB->hdl, loc);
ret = OK;
}
@@ -778,7 +1130,7 @@ drv_hwlabel(TERMINAL_CONTROL_BLOCK * TCB,
static void
drv_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB,
- bool OnFlag GCC_UNUSED)
+ int OnFlag GCC_UNUSED)
{
SCREEN *sp;
@@ -844,7 +1196,7 @@ drv_initacs(TERMINAL_CONTROL_BLOCK * TCB,
SetSP();
for (n = 0; n < SIZEOF(table); ++n) {
- real_map[table[n].acs_code] = table[n].use_code | A_ALTCHARSET;
+ real_map[table[n].acs_code] = (chtype) table[n].use_code | A_ALTCHARSET;
if (sp != 0)
sp->_screen_acs_map[table[n].acs_code] = TRUE;
}
@@ -931,7 +1283,7 @@ drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
SCREEN *sp;
INPUT_RECORD inp_rec;
BOOL b;
- DWORD nRead = 0, rc = -1;
+ DWORD nRead = 0, rc = (DWORD) (-1);
int code = 0;
FILETIME fstart;
FILETIME fend;
@@ -953,7 +1305,7 @@ drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
while (true) {
GetSystemTimeAsFileTime(&fstart);
- rc = WaitForSingleObject(TCB->inp, milliseconds);
+ rc = WaitForSingleObject(TCB->inp, (DWORD) milliseconds);
GetSystemTimeAsFileTime(&fend);
diff = (int) tdiff(fstart, fend);
milliseconds = Adjust(milliseconds, diff);
@@ -999,8 +1351,7 @@ drv_twait(TERMINAL_CONTROL_BLOCK * TCB,
}
continue;
default:
- SetConsoleActiveScreenBuffer(!PropOf(TCB)->progMode ?
- TCB->hdl : TCB->out);
+ selectActiveHandle(TCB);
continue;
}
}
@@ -1046,23 +1397,26 @@ handle_mouse(TERMINAL_CONTROL_BLOCK * TCB, MOUSE_EVENT_RECORD mer)
* FIXME: implement continuous event-tracking.
*/
if (sp->_drv_mouse_new_buttons != sp->_drv_mouse_old_buttons) {
+ Properties *p = PropOf(TCB);
memset(&work, 0, sizeof(work));
if (sp->_drv_mouse_new_buttons) {
- work.bstate |= decode_mouse(TCB, sp->_drv_mouse_new_buttons);
+ work.bstate |= (mmask_t) decode_mouse(TCB, sp->_drv_mouse_new_buttons);
} else {
/* cf: BUTTON_PRESSED, BUTTON_RELEASED */
- work.bstate |= (decode_mouse(TCB, sp->_drv_mouse_old_buttons) >> 1);
+ work.bstate |= (mmask_t) (decode_mouse(TCB,
+ sp->_drv_mouse_old_buttons)
+ >> 1);
result = TRUE;
}
work.x = mer.dwMousePosition.X;
- work.y = mer.dwMousePosition.Y;
+ work.y = mer.dwMousePosition.Y - AdjustY(p);
sp->_drv_mouse_fifo[sp->_drv_mouse_tail] = work;
sp->_drv_mouse_tail += 1;
@@ -1080,7 +1434,6 @@ drv_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf)
BOOL b;
DWORD nRead;
WORD vk;
- WORD sc;
AssertTCB();
assert(buf);
@@ -1096,7 +1449,6 @@ drv_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf)
continue;
*buf = (int) inp_rec.Event.KeyEvent.uChar.AsciiChar;
vk = inp_rec.Event.KeyEvent.wVirtualKeyCode;
- sc = inp_rec.Event.KeyEvent.wVirtualScanCode;
if (*buf == 0) {
if (sp->_keypad_on) {
*buf = MapKey(TCB, vk);
@@ -1124,8 +1476,9 @@ drv_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf)
static int
drv_nap(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int ms)
{
- Sleep(ms);
- return OK;
+ T((T_CALLED("win32con::drv_nap(%p, %d)"), TCB, ms));
+ Sleep((DWORD) ms);
+ returnCode(OK);
}
static bool
@@ -1142,6 +1495,7 @@ drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int keycode)
AssertTCB();
+ T((T_CALLED("win32con::drv_kyExist(%p, %d)"), TCB, keycode));
res = bsearch(&key,
PropOf(TCB)->rmap,
(size_t) (N_INI + FKEYS),
@@ -1153,11 +1507,11 @@ drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int keycode)
if (!(nKey & 0x8000))
found = TRUE;
}
- return found;
+ returnCode(found);
}
static int
-drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, bool flag GCC_UNUSED)
+drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, int flag GCC_UNUSED)
{
SCREEN *sp;
int code = ERR;
@@ -1165,14 +1519,15 @@ drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, bool flag GCC_UNUSED)
AssertTCB();
sp = TCB->csp;
+ T((T_CALLED("win32con::drv_kpad(%p, %d)"), TCB, flag));
if (sp) {
code = OK;
}
- return code;
+ returnCode(code);
}
static int
-drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int keycode, bool flag)
+drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int keycode, int flag)
{
int code = ERR;
SCREEN *sp;
@@ -1184,6 +1539,7 @@ drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int keycode, bool flag)
AssertTCB();
SetSP();
+ T((T_CALLED("win32con::drv_keyok(%p, %d, %d)"), TCB, keycode, flag));
if (sp) {
res = bsearch(&key,
PropOf(TCB)->rmap,
@@ -1199,7 +1555,7 @@ drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int keycode, bool flag)
*(LONG *) res = GenMap(vKey, nKey);
}
}
- return code;
+ returnCode(code);
}
NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_WIN_DRIVER = {
diff --git a/contrib/ncurses/panel/Makefile.in b/contrib/ncurses/panel/Makefile.in
index f0f0a4922bd0..baa080b3c7b0 100644
--- a/contrib/ncurses/panel/Makefile.in
+++ b/contrib/ncurses/panel/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.58 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.62 2013/08/04 20:23:32 tom Exp $
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -57,7 +57,11 @@ exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
includedir = @includedir@
+datarootdir = @datarootdir@
datadir = @datadir@
+includesubdir = @includesubdir@
+
+INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
LIBTOOL = @LIBTOOL@
LIBTOOL_CLEAN = @LIB_CLEAN@
@@ -103,6 +107,7 @@ LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib
SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
+RPATH_LIST = @RPATH_LIST@
MK_SHARED_LIB = @MK_SHARED_LIB@
NCURSES_MAJOR = @NCURSES_MAJOR@
@@ -112,7 +117,7 @@ ABI_VERSION = @cf_cv_abi_version@
RANLIB = @LIB_PREP@
-LIBRARIES = @LIBS_TO_MAKE@
+LIBRARIES = @Libs_To_Make@
LINT = @LINT@
LINT_OPTS = @LINT_OPTS@
diff --git a/contrib/ncurses/panel/p_above.c b/contrib/ncurses/panel/p_above.c
index 8bbf1bc21cea..76209fe84b8b 100644
--- a/contrib/ncurses/panel/p_above.c
+++ b/contrib/ncurses/panel/p_above.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free 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,13 +36,13 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_above.c,v 1.8 2010/01/23 21:22:15 tom Exp $")
+MODULE_ID("$Id: p_above.c,v 1.9 2012/03/10 23:43:41 tom Exp $")
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(PANEL *)
ground_panel(SCREEN * sp)
{
- T((T_CALLED("ground_panel(%p)"), sp));
+ T((T_CALLED("ground_panel(%p)"), (void *)sp));
if (sp)
{
struct panelhook *ph = NCURSES_SP_NAME(_nc_panelhook) (sp);
diff --git a/contrib/ncurses/panel/p_below.c b/contrib/ncurses/panel/p_below.c
index f276ef959da5..913efa91390b 100644
--- a/contrib/ncurses/panel/p_below.c
+++ b/contrib/ncurses/panel/p_below.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free 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,13 +36,13 @@
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_below.c,v 1.8 2010/01/23 21:22:15 tom Exp $")
+MODULE_ID("$Id: p_below.c,v 1.9 2012/03/10 23:43:41 tom Exp $")
#if NCURSES_SP_FUNCS
NCURSES_EXPORT(PANEL *)
ceiling_panel(SCREEN * sp)
{
- T((T_CALLED("ceiling_panel(%p)"), sp));
+ T((T_CALLED("ceiling_panel(%p)"), (void *)sp));
if (sp)
{
struct panelhook *ph = NCURSES_SP_NAME(_nc_panelhook) (sp);
diff --git a/contrib/ncurses/panel/panel.c b/contrib/ncurses/panel/panel.c
index 96cbbab77400..97bebca9c069 100644
--- a/contrib/ncurses/panel/panel.c
+++ b/contrib/ncurses/panel/panel.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2010,2012 Free 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 @@
/* panel.c -- implementation of panels library, some core routines */
#include "panel.priv.h"
-MODULE_ID("$Id: panel.c,v 1.25 2010/01/23 21:22:16 tom Exp $")
+MODULE_ID("$Id: panel.c,v 1.26 2012/02/23 10:02:15 tom Exp $")
/*+-------------------------------------------------------------------------
_nc_retrace_panel (pan)
@@ -61,9 +61,9 @@ _nc_my_visbuf(const void *ptr)
char temp[32];
if (ptr != 0)
- sprintf(temp, "ptr:%p", ptr);
+ _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "ptr:%p", ptr);
else
- strcpy(temp, "<null>");
+ _nc_STRCPY(temp, "<null>", sizeof(temp));
return _nc_visbuf(temp);
}
#endif
@@ -95,7 +95,7 @@ _nc_dStack(const char *fmt, int num, const PANEL * pan)
GetPanelHook(pan);
- sprintf(s80, fmt, num, pan);
+ _nc_SPRINTF(s80, _nc_SLIMIT(sizeof(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) : "--");
@@ -143,7 +143,7 @@ _nc_Touchline(const PANEL * pan, int start, int count)
{
char s80[80];
- sprintf(s80, "Touchline s=%d c=%d", start, count);
+ _nc_SPRINTF(s80, _nc_SLIMIT(sizeof(s80)) "Touchline s=%d c=%d", start, count);
dPanel(s80, pan);
touchline(pan->win, start, count);
}
diff --git a/contrib/ncurses/panel/panel.priv.h b/contrib/ncurses/panel/panel.priv.h
index ce4f98937fc9..76607fb2c0ca 100644
--- a/contrib/ncurses/panel/panel.priv.h
+++ b/contrib/ncurses/panel/panel.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free 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.23 2009/04/11 20:33:55 tom Exp $ */
+/* $Id: panel.priv.h,v 1.25 2012/12/15 23:57:43 tom Exp $ */
#ifndef NCURSES_PANEL_PRIV_H
#define NCURSES_PANEL_PRIV_H 1
@@ -89,7 +89,7 @@ struct screen; /* forward declaration */
#define GetScreenHook(sp) \
struct panelhook* ph = NCURSES_SP_NAME(_nc_panelhook)(sp)
#define GetPanelHook(pan) \
- GetScreenHook(_nc_screen_of((pan)->win))
+ GetScreenHook(pan ? _nc_screen_of((pan)->win) : 0)
#define GetWindowHook(win) \
SCREEN* sp = _nc_screen_of(win); \
GetScreenHook(sp)
@@ -160,7 +160,7 @@ struct screen; /* forward declaration */
---------------------------------------------------------------------------*/
#define PANEL_UPDATE(pan,panstart)\
{ PANEL* pan2 = ((panstart) ? (panstart) : _nc_bottom_panel);\
- while(pan2) {\
+ while(pan2 && pan2->win) {\
if ((pan2 != pan) && PANELS_OVERLAPPED(pan,pan2)) {\
int y, ix1, ix2, iy1, iy2;\
COMPUTE_INTERSECTION(pan, pan2, ix1, ix2, iy1, iy2);\
diff --git a/contrib/ncurses/progs/Makefile.in b/contrib/ncurses/progs/Makefile.in
index bdb8a0f04898..a9161b16cbca 100644
--- a/contrib/ncurses/progs/Makefile.in
+++ b/contrib/ncurses/progs/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.85 2010/11/27 21:45:27 tom Exp $
+# $Id: Makefile.in,v 1.90 2013/08/04 20:23:20 tom Exp $
##############################################################################
-# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -61,7 +61,11 @@ exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
includedir = @includedir@
+datarootdir = @datarootdir@
datadir = @datadir@
+includesubdir = @includesubdir@
+
+INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir)
LIBTOOL = @LIBTOOL@
LIBTOOL_CLEAN = @LIB_CLEAN@
@@ -104,20 +108,21 @@ LOCAL_LIBDIR = @top_builddir@/lib
LD = @LD@
LINK = @LINK_PROGS@ $(LIBTOOL_LINK)
LDFLAGS = @EXTRA_LDFLAGS@ @LDFLAGS@
+RPATH_LIST = @RPATH_LIST@
LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL)
LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL)
LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG)
-LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE)
+LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE)
LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@
LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@)
-LIBS_TIC = @LDFLAGS_STATIC@ @TICS_ARGS@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@
-LDFLAGS_TIC = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TIC)
+LIBS_TIC = @TINFO_LDFLAGS@ @LDFLAGS_STATIC@ @TICS_LIBS@ @TINFO_LIBS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@
+LDFLAGS_TIC = @TICS_LDFLAGS@ $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TIC)
-LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@
-LDFLAGS_TINFO = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TINFO)
+LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_LIBS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@
+LDFLAGS_TINFO = @TINFO_LDFLAGS@ $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TINFO)
LINT = @LINT@
LINT_OPTS = @LINT_OPTS@
@@ -230,46 +235,46 @@ DEPS_TIC = \
$(MODEL)/transform$o
tic$x: $(DEPS_TIC) $(DEPS_CURSES) transform.h
- @ECHO_LINK@ $(LINK) $(DEPS_TIC) $(LDFLAGS_TIC) -o $@
+ @ECHO_LD@ $(LINK) $(DEPS_TIC) $(LDFLAGS_TIC) -o $@
DEPS_TOE = \
$(MODEL)/toe$o
toe$x: $(DEPS_TOE) $(DEPS_CURSES)
- @ECHO_LINK@ $(LINK) $(DEPS_TOE) $(LDFLAGS_TIC) -o $@
+ @ECHO_LD@ $(LINK) $(DEPS_TOE) $(LDFLAGS_TIC) -o $@
DEPS_CLEAR = \
$(MODEL)/clear$o
clear$x: $(DEPS_CLEAR) $(DEPS_CURSES)
- @ECHO_LINK@ $(LINK) $(DEPS_CLEAR) $(LDFLAGS_TINFO) -o $@
+ @ECHO_LD@ $(LINK) $(DEPS_CLEAR) $(LDFLAGS_TINFO) -o $@
DEPS_TABS = \
$(MODEL)/tabs$o
tabs$x: $(DEPS_TABS) $(DEPS_TABS)
- @ECHO_LINK@ $(LINK) $(DEPS_TABS) $(LDFLAGS_TINFO) -o $@
+ @ECHO_LD@ $(LINK) $(DEPS_TABS) $(LDFLAGS_TINFO) -o $@
DEPS_TPUT = \
$(MODEL)/tput$o \
$(MODEL)/transform$o
tput$x: $(DEPS_TPUT) $(DEPS_CURSES) transform.h
- @ECHO_LINK@ $(LINK) $(DEPS_TPUT) $(LDFLAGS_TINFO) -o $@
+ @ECHO_LD@ $(LINK) $(DEPS_TPUT) $(LDFLAGS_TINFO) -o $@
DEPS_INFOCMP = \
$(MODEL)/infocmp$o \
$(MODEL)/dump_entry$o
infocmp$x: $(DEPS_INFOCMP) $(DEPS_CURSES)
- @ECHO_LINK@ $(LINK) $(DEPS_INFOCMP) $(LDFLAGS_TIC) -o $@
+ @ECHO_LD@ $(LINK) $(DEPS_INFOCMP) $(LDFLAGS_TIC) -o $@
DEPS_TSET = \
$(MODEL)/tset$o \
$(MODEL)/transform$o
tset$x: $(DEPS_TSET) $(DEPS_CURSES) transform.h
- @ECHO_LINK@ $(LINK) $(DEPS_TSET) $(LDFLAGS_TINFO) -o $@
+ @ECHO_LD@ $(LINK) $(DEPS_TSET) $(LDFLAGS_TINFO) -o $@
termsort.c: $(srcdir)/MKtermsort.sh
sh $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ >$@
diff --git a/contrib/ncurses/progs/capconvert b/contrib/ncurses/progs/capconvert
index 8199bbf09b7e..eb382e0bc86c 100755
--- a/contrib/ncurses/progs/capconvert
+++ b/contrib/ncurses/progs/capconvert
@@ -1,6 +1,6 @@
#!/bin/sh
##############################################################################
-# Copyright (c) 1998,2006 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2006,2011 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -26,7 +26,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: capconvert,v 1.4 2006/04/22 21:46:17 tom Exp $
+# $Id: capconvert,v 1.5 2011/11/12 23:28:07 Robert.Millan Exp $
#
# capconvert -- automated conversion from termcap to terminfo
#
@@ -77,16 +77,18 @@ then
# Assumes the terminfo master covers all canned terminal types
exit;
fi
- if test "$TERM" = "xterm"
- then
+ case $TERM in
+ xterm | xterm-*)
echo "You are running xterm, which usually sets TERMCAP itself."
echo "We can ignore this, because terminfo knows about xterm."
echo "So you will just use the system-wide terminfo tree."
- exit;
- else
+ exit
+ ;;
+ *)
echo "We will have to make a local one for you anyway, to capture the effect"
echo "of your TERMCAP variable."
- fi
+ ;;
+ esac
else
echo "No system-wide terminfo tree. We will make you a local one."
fi
@@ -109,7 +111,7 @@ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:"
for x in $PATH .
do
if test $OPT $x/tic
- then
+ then
TIC=$x/tic
break
fi
@@ -141,7 +143,7 @@ if test -d $HOME/.terminfo
then
echo "It appears you already have a private terminfo directory"
echo "at $HOME/.terminfo; this seems odd, because TERMINFO"
- echo "is not defined. I am not going to second-guess this -- if you"
+ echo "is not defined. I am not going to second-guess this -- if you"
echo "really want me to try auto-configuring for you, remove or"
echo "rename $HOME/terminfo and run me again."
exit;
@@ -214,7 +216,7 @@ trap 0 1 2 5 15
#
echo "You now have a private tree under $HOME/.terminfo;"
echo "the ncurses library will automatically read from it,"
-echo "and ncurses tic will automatically compile entries to it."
+echo "and ncurses tic will automatically compile entries to it."
# We're done unless user has a .termcap file or equivalent named by TERMCAP
if test -z "$TERMCAP"
@@ -235,7 +237,7 @@ then
echo "Done."
echo "Note that editing $HOME/.termcap will no longer change the data curses sees."
elif test -f "$TERMCAP"
-then
+then
echo "Your TERMCAP names the file $TERMCAP. I will compile that."
eval $TIC $TERMCAP
echo "Done."
diff --git a/contrib/ncurses/progs/clear.c b/contrib/ncurses/progs/clear.c
index 9f5a543848a1..4ac503ed3641 100644
--- a/contrib/ncurses/progs/clear.c
+++ b/contrib/ncurses/progs/clear.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2007,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -39,7 +39,7 @@
#define USE_LIBTINFO
#include <progs.priv.h>
-MODULE_ID("$Id: clear.c,v 1.11 2007/10/13 22:16:02 tom Exp $")
+MODULE_ID("$Id: clear.c,v 1.13 2013/06/22 22:20:54 tom Exp $")
static int
putch(int c)
@@ -52,7 +52,15 @@ main(
int argc GCC_UNUSED,
char *argv[]GCC_UNUSED)
{
+ char *E3;
+
setupterm((char *) 0, STDOUT_FILENO, (int *) 0);
+
+ /* Clear the scrollback buffer if possible. */
+ E3 = tigetstr("E3");
+ if (E3)
+ (void) tputs(E3, lines > 0 ? lines : 1, putch);
+
ExitProgram((tputs(clear_screen, lines > 0 ? lines : 1, putch) == ERR)
? EXIT_FAILURE
: EXIT_SUCCESS);
diff --git a/contrib/ncurses/progs/dump_entry.c b/contrib/ncurses/progs/dump_entry.c
index 485bbbd91d64..65de9f9bc1f1 100644
--- a/contrib/ncurses/progs/dump_entry.c
+++ b/contrib/ncurses/progs/dump_entry.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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.89 2010/05/01 22:04:08 tom Exp $")
+MODULE_ID("$Id: dump_entry.c,v 1.111 2013/12/15 01:05:20 tom Exp $")
#define INDENT 8
#define DISCARD(string) string = ABSENT_STRING
@@ -57,6 +57,7 @@ static int tversion; /* terminfo version */
static int outform; /* output format to use */
static int sortmode; /* sort mode to use */
static int width = 60; /* max line width for listings */
+static int height = 65535; /* max number of lines for listings */
static int column; /* current column, limited by 'width' */
static int oldcol; /* last value of column before wrap */
static bool pretty; /* true if we format if-then-else strings */
@@ -72,7 +73,7 @@ static NCURSES_CONST char *const *bool_names;
static NCURSES_CONST char *const *num_names;
static NCURSES_CONST char *const *str_names;
-static const char *separator, *trailer;
+static const char *separator = "", *trailer = "";
/* cover various ports and variants of terminfo */
#define V_ALLCAPS 0 /* all capabilities (SVr4, XSI, ncurses) */
@@ -99,6 +100,15 @@ static const char *separator, *trailer;
#define StrIndirect(j) ((sortmode == S_NOSORT) ? (j) : str_indirect[j])
#endif
+static void failed(const char *) GCC_NORETURN;
+
+static void
+failed(const char *s)
+{
+ perror(s);
+ ExitProgram(EXIT_FAILURE);
+}
+
static void
strncpy_DYN(DYNBUF * dst, const char *src, size_t need)
{
@@ -106,6 +116,8 @@ strncpy_DYN(DYNBUF * dst, const char *src, size_t need)
if (want > dst->size) {
dst->size += (want + 1024); /* be generous */
dst->text = typeRealloc(char, dst->size, dst->text);
+ if (dst->text == 0)
+ failed("strncpy_DYN");
}
(void) strncpy(dst->text + dst->used, src, need);
dst->used += need;
@@ -172,11 +184,17 @@ nametrans(const char *name)
}
void
-dump_init(const char *version, int mode, int sort, int twidth, int traceval,
+dump_init(const char *version,
+ int mode,
+ int sort,
+ int twidth,
+ int theight,
+ unsigned traceval,
bool formatted)
/* set up for entry display */
{
width = twidth;
+ height = theight;
pretty = formatted;
/* versions */
@@ -201,7 +219,7 @@ dump_init(const char *version, int mode, int sort, int twidth, int traceval,
bool_names = boolnames;
num_names = numnames;
str_names = strnames;
- separator = twidth ? ", " : ",";
+ separator = (twidth > 0 && theight > 1) ? ", " : ",";
trailer = "\n\t";
break;
@@ -209,7 +227,7 @@ dump_init(const char *version, int mode, int sort, int twidth, int traceval,
bool_names = boolfnames;
num_names = numfnames;
str_names = strfnames;
- separator = twidth ? ", " : ",";
+ separator = (twidth > 0 && theight > 1) ? ", " : ",";
trailer = "\n\t";
break;
@@ -291,7 +309,11 @@ dump_predicate(PredType type, PredIdx idx)
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))
+#define FNKEY(i) \
+ (((i) >= STR_IDX(key_f0) && \
+ (i) <= STR_IDX(key_f9)) || \
+ ((i) >= STR_IDX(key_f11) && \
+ (i) <= STR_IDX(key_f63)))
/*
* If we configure with a different Caps file, the offsets into the arrays
@@ -393,8 +415,8 @@ force_wrap(void)
static void
wrap_concat(const char *src)
{
- unsigned need = strlen(src);
- unsigned want = strlen(separator) + need;
+ size_t need = strlen(src);
+ size_t want = strlen(separator) + need;
if (column > INDENT
&& column + (int) want > width) {
@@ -445,7 +467,7 @@ indent_DYN(DYNBUF * buffer, int level)
int n;
for (n = 0; n < level; n++)
- strncpy_DYN(buffer, "\t", 1);
+ strncpy_DYN(buffer, "\t", (size_t) 1);
}
static bool
@@ -458,9 +480,9 @@ has_params(const char *src)
bool params = FALSE;
for (n = 0; n < len - 1; ++n) {
- if (!strncmp(src + n, "%p", 2)) {
+ if (!strncmp(src + n, "%p", (size_t) 2)) {
params = TRUE;
- } else if (!strncmp(src + n, "%;", 2)) {
+ } else if (!strncmp(src + n, "%;", (size_t) 2)) {
ifthen = TRUE;
result = params;
break;
@@ -473,7 +495,7 @@ has_params(const char *src)
}
static char *
-fmt_complex(char *src, int level)
+fmt_complex(TERMTYPE *tterm, const char *capability, char *src, int level)
{
bool percent = FALSE;
bool params = has_params(src);
@@ -482,7 +504,7 @@ fmt_complex(char *src, int level)
switch (*src) {
case '\\':
percent = FALSE;
- strncpy_DYN(&tmpbuf, src++, 1);
+ strncpy_DYN(&tmpbuf, src++, (size_t) 1);
break;
case '%':
percent = TRUE;
@@ -496,26 +518,28 @@ fmt_complex(char *src, int level)
/* 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, 1);
+ strncpy_DYN(&tmpbuf, "%", (size_t) 1);
+ strncpy_DYN(&tmpbuf, src, (size_t) 1);
src++;
params = has_params(src);
if (!params && *src != '\0' && *src != '%') {
- strncpy_DYN(&tmpbuf, "\n", 1);
+ strncpy_DYN(&tmpbuf, "\n", (size_t) 1);
indent_DYN(&tmpbuf, level + 1);
}
} else {
indent_DYN(&tmpbuf, level + 1);
- strncpy_DYN(&tmpbuf, "%", 1);
- strncpy_DYN(&tmpbuf, src, 1);
+ strncpy_DYN(&tmpbuf, "%", (size_t) 1);
+ strncpy_DYN(&tmpbuf, src, (size_t) 1);
if (*src++ == '?') {
- src = fmt_complex(src, level + 1);
+ src = fmt_complex(tterm, capability, src, level + 1);
if (*src != '\0' && *src != '%') {
- strncpy_DYN(&tmpbuf, "\n", 1);
+ strncpy_DYN(&tmpbuf, "\n", (size_t) 1);
indent_DYN(&tmpbuf, level + 1);
}
} else if (level == 1) {
- _nc_warning("%%%c without %%?", *src);
+ _nc_warning("%s: %%%c without %%? in %s",
+ _nc_first_name(tterm->term_names),
+ *src, capability);
}
}
continue;
@@ -527,31 +551,39 @@ fmt_complex(char *src, int level)
if (level > 1) {
tmpbuf.text[tmpbuf.used - 1] = '\n';
indent_DYN(&tmpbuf, level);
- strncpy_DYN(&tmpbuf, "%", 1);
- strncpy_DYN(&tmpbuf, src++, 1);
+ strncpy_DYN(&tmpbuf, "%", (size_t) 1);
+ strncpy_DYN(&tmpbuf, src++, (size_t) 1);
+ if (src[0] == '%'
+ && src[1] != '\0'
+ && (strchr("?e;", src[1])) == 0) {
+ tmpbuf.text[tmpbuf.used++] = '\n';
+ indent_DYN(&tmpbuf, level);
+ }
return src;
}
- _nc_warning("%%; without %%?");
+ _nc_warning("%s: %%; without %%? in %s",
+ _nc_first_name(tterm->term_names),
+ capability);
}
break;
case 'p':
if (percent && params) {
tmpbuf.text[tmpbuf.used - 1] = '\n';
indent_DYN(&tmpbuf, level + 1);
- strncpy_DYN(&tmpbuf, "%", 1);
+ strncpy_DYN(&tmpbuf, "%", (size_t) 1);
}
params = FALSE;
percent = FALSE;
break;
case ' ':
- strncpy_DYN(&tmpbuf, "\\s", 2);
+ strncpy_DYN(&tmpbuf, "\\s", (size_t) 2);
++src;
continue;
default:
percent = FALSE;
break;
}
- strncpy_DYN(&tmpbuf, src++, 1);
+ strncpy_DYN(&tmpbuf, src++, (size_t) 1);
}
return src;
}
@@ -562,9 +594,9 @@ fmt_complex(char *src, int level)
int
fmt_entry(TERMTYPE *tterm,
PredFunc pred,
- bool content_only,
- bool suppress_untranslatable,
- bool infodump,
+ int content_only,
+ int suppress_untranslatable,
+ int infodump,
int numbers)
{
PredIdx i, j;
@@ -593,14 +625,28 @@ fmt_entry(TERMTYPE *tterm,
column = INDENT; /* FIXME: workaround to prevent empty lines */
} else {
strcpy_DYN(&outbuf, tterm->term_names);
+
+ /*
+ * Colon is legal in terminfo descriptions, but not in termcap.
+ */
+ if (!infodump) {
+ char *p = outbuf.text;
+ while (*p) {
+ if (*p == ':') {
+ *p = '=';
+ }
+ ++p;
+ }
+ }
strcpy_DYN(&outbuf, separator);
column = (int) outbuf.used;
- force_wrap();
+ if (height > 1)
+ force_wrap();
}
for_each_boolean(j, tterm) {
i = BoolIndirect(j);
- name = ExtBoolname(tterm, i, bool_names);
+ name = ExtBoolname(tterm, (int) i, bool_names);
assert(strlen(name) < sizeof(buffer) - EXTRA_CAP);
if (!version_filter(BOOLEAN, i))
@@ -610,21 +656,21 @@ fmt_entry(TERMTYPE *tterm,
predval = pred(BOOLEAN, i);
if (predval != FAIL) {
- (void) strcpy(buffer, name);
+ _nc_STRCPY(buffer, name, sizeof(buffer));
if (predval <= 0)
- (void) strcat(buffer, "@");
+ _nc_STRCAT(buffer, "@", sizeof(buffer));
else if (i + 1 > num_bools)
num_bools = i + 1;
WRAP_CONCAT;
}
}
- if (column != INDENT)
+ if (column != INDENT && height > 1)
force_wrap();
for_each_number(j, tterm) {
i = NumIndirect(j);
- name = ExtNumname(tterm, i, num_names);
+ name = ExtNumname(tterm, (int) i, num_names);
assert(strlen(name) < sizeof(buffer) - EXTRA_CAP);
if (!version_filter(NUMBER, i))
@@ -635,9 +681,11 @@ fmt_entry(TERMTYPE *tterm,
predval = pred(NUMBER, i);
if (predval != FAIL) {
if (tterm->Numbers[i] < 0) {
- sprintf(buffer, "%s@", name);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%s@", name);
} else {
- sprintf(buffer, "%s#%d", name, tterm->Numbers[i]);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%s#%d", name, tterm->Numbers[i]);
if (i + 1 > num_values)
num_values = i + 1;
}
@@ -645,7 +693,7 @@ fmt_entry(TERMTYPE *tterm,
}
}
- if (column != INDENT)
+ if (column != INDENT && height > 1)
force_wrap();
len += (int) (num_bools
@@ -670,7 +718,7 @@ fmt_entry(TERMTYPE *tterm,
for_each_string(j, tterm) {
i = StrIndirect(j);
- name = ExtStrname(tterm, i, str_names);
+ name = ExtStrname(tterm, (int) i, str_names);
assert(strlen(name) < sizeof(buffer) - EXTRA_CAP);
capability = tterm->Strings[i];
@@ -698,14 +746,14 @@ fmt_entry(TERMTYPE *tterm,
if (PRESENT(insert_character) || PRESENT(parm_ich)) {
if (SAME_CAP(i, enter_insert_mode)
&& enter_insert_mode == ABSENT_STRING) {
- (void) strcpy(buffer, "im=");
+ _nc_STRCPY(buffer, "im=", sizeof(buffer));
WRAP_CONCAT;
continue;
}
if (SAME_CAP(i, exit_insert_mode)
&& exit_insert_mode == ABSENT_STRING) {
- (void) strcpy(buffer, "ei=");
+ _nc_STRCPY(buffer, "ei=", sizeof(buffer));
WRAP_CONCAT;
continue;
}
@@ -739,7 +787,8 @@ fmt_entry(TERMTYPE *tterm,
num_strings = i + 1;
if (!VALID_STRING(capability)) {
- sprintf(buffer, "%s@", name);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%s@", name);
WRAP_CONCAT;
} else if (outform == F_TERMCAP || outform == F_TCONVERR) {
int params = ((i < (int) SIZEOF(parametrized))
@@ -750,13 +799,14 @@ fmt_entry(TERMTYPE *tterm,
if (cv == 0) {
if (outform == F_TCONVERR) {
- sprintf(buffer, "%s=!!! %s WILL NOT CONVERT !!!",
- name, srccap);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%s=!!! %s WILL NOT CONVERT !!!",
+ name, srccap);
} else if (suppress_untranslatable) {
continue;
} else {
char *s = srccap, *d = buffer;
- sprintf(d, "..%s=", name);
+ _nc_SPRINTF(d, _nc_SLIMIT(sizeof(buffer)) "..%s=", name);
d += strlen(d);
while ((*d = *s++) != 0) {
if (*d == ':') {
@@ -769,7 +819,8 @@ fmt_entry(TERMTYPE *tterm,
}
}
} else {
- sprintf(buffer, "%s=%s", name, cv);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%s=%s", name, cv);
}
len += (int) strlen(capability) + 1;
WRAP_CONCAT;
@@ -783,7 +834,7 @@ fmt_entry(TERMTYPE *tterm,
if (pretty
&& (outform == F_TERMINFO
|| outform == F_VARIABLE)) {
- fmt_complex(src, 1);
+ fmt_complex(tterm, name, src, 1);
} else {
strcpy_DYN(&tmpbuf, src);
}
@@ -793,7 +844,9 @@ fmt_entry(TERMTYPE *tterm,
}
}
/* e.g., trimmed_sgr0 */
- if (capability != tterm->Strings[i])
+ if (capability != ABSENT_STRING &&
+ capability != CANCELLED_STRING &&
+ capability != tterm->Strings[i])
free(capability);
}
len += (int) (num_strings * 2);
@@ -805,11 +858,13 @@ fmt_entry(TERMTYPE *tterm,
*/
if (tversion == V_HPUX) {
if (VALID_STRING(memory_lock)) {
- (void) sprintf(buffer, "meml=%s", memory_lock);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "meml=%s", memory_lock);
WRAP_CONCAT;
}
if (VALID_STRING(memory_unlock)) {
- (void) sprintf(buffer, "memu=%s", memory_unlock);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "memu=%s", memory_unlock);
WRAP_CONCAT;
}
} else if (tversion == V_AIX) {
@@ -821,7 +876,7 @@ fmt_entry(TERMTYPE *tterm,
tp = boxchars;
for (cp = acstrans; *cp; cp++) {
- sp = strchr(acs_chars, *cp);
+ sp = (strchr) (acs_chars, *cp);
if (sp)
*tp++ = sp[1];
else {
@@ -832,9 +887,41 @@ fmt_entry(TERMTYPE *tterm,
tp[0] = '\0';
if (box_ok) {
- (void) strcpy(buffer, "box1=");
- (void) strcat(buffer, _nc_tic_expand(boxchars,
- outform == F_TERMINFO, numbers));
+ char *tmp = _nc_tic_expand(boxchars,
+ (outform == F_TERMINFO),
+ numbers);
+ _nc_STRCPY(buffer, "box1=", sizeof(buffer));
+ while (*tmp != '\0') {
+ size_t have = strlen(buffer);
+ size_t next = strlen(tmp);
+ size_t want = have + next + 1;
+ size_t last = next;
+ char save = '\0';
+
+ /*
+ * If the expanded string is too long for the buffer,
+ * chop it off and save the location where we chopped it.
+ */
+ if (want >= sizeof(buffer)) {
+ save = tmp[last];
+ tmp[last] = '\0';
+ }
+ _nc_STRCAT(buffer, tmp, sizeof(buffer));
+
+ /*
+ * If we chopped the buffer, replace the missing piece and
+ * shift everything to append the remainder.
+ */
+ if (save != '\0') {
+ next = 0;
+ tmp[last] = save;
+ while ((tmp[next] = tmp[last + next]) != '\0') {
+ ++next;
+ }
+ } else {
+ break;
+ }
+ }
WRAP_CONCAT;
}
}
@@ -846,7 +933,7 @@ fmt_entry(TERMTYPE *tterm,
*/
if (outcount) {
bool trimmed = FALSE;
- j = outbuf.used;
+ j = (PredIdx) outbuf.used;
if (j >= 2
&& outbuf.text[j - 1] == '\t'
&& outbuf.text[j - 2] == '\n') {
@@ -926,7 +1013,7 @@ kill_labels(TERMTYPE *tterm, int target)
char name[10];
for (n = 0; n <= 10; ++n) {
- sprintf(name, "lf%d", n);
+ _nc_SPRINTF(name, _nc_SLIMIT(sizeof(name)) "lf%d", n);
if ((cap = find_string(tterm, name)) != ABSENT_STRING
&& kill_string(tterm, cap)) {
target -= (int) (strlen(cap) + 5);
@@ -951,7 +1038,7 @@ kill_fkeys(TERMTYPE *tterm, int target)
char name[10];
for (n = 60; n >= 0; --n) {
- sprintf(name, "kf%d", n);
+ _nc_SPRINTF(name, _nc_SLIMIT(sizeof(name)) "kf%d", n);
if ((cap = find_string(tterm, name)) != ABSENT_STRING
&& kill_string(tterm, cap)) {
target -= (int) (strlen(cap) + 5);
@@ -1017,8 +1104,8 @@ purged_acs(TERMTYPE *tterm)
*/
void
dump_entry(TERMTYPE *tterm,
- bool suppress_untranslatable,
- bool limited,
+ int suppress_untranslatable,
+ int limited,
int numbers,
PredFunc pred)
{
@@ -1064,7 +1151,7 @@ dump_entry(TERMTYPE *tterm,
*/
unsigned n;
for (n = STRCOUNT; n < NUM_STRINGS(tterm); n++) {
- const char *name = ExtStrname(tterm, n, strnames);
+ const char *name = ExtStrname(tterm, (int) n, strnames);
if (VALID_STRING(tterm->Strings[n])) {
set_attributes = ABSENT_STRING;
@@ -1144,21 +1231,45 @@ dump_uses(const char *name, bool infodump)
if (outform == F_TERMCAP || outform == F_TCONVERR)
trim_trailing();
- (void) sprintf(buffer, "%s%s", infodump ? "use=" : "tc=", name);
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "%s%s", infodump ? "use=" : "tc=", name);
wrap_concat(buffer);
}
int
show_entry(void)
{
- trim_trailing();
+ /*
+ * Trim any remaining whitespace.
+ */
+ if (outbuf.used != 0) {
+ bool infodump = (outform != F_TERMCAP && outform != F_TCONVERR);
+ char delim = (char) (infodump ? ',' : ':');
+ int j;
+
+ for (j = (int) outbuf.used - 1; j > 0; --j) {
+ char ch = outbuf.text[j];
+ if (ch == '\n') {
+ ;
+ } else if (isspace(UChar(ch))) {
+ outbuf.used = (size_t) j;
+ } else if (!infodump && ch == '\\') {
+ outbuf.used = (size_t) j;
+ } else if (ch == delim && (j == 0 || outbuf.text[j - 1] != '\\')) {
+ outbuf.used = (size_t) (j + 1);
+ } else {
+ break;
+ }
+ }
+ outbuf.text[outbuf.used] = '\0';
+ }
(void) fputs(outbuf.text, stdout);
putchar('\n');
return (int) outbuf.used;
}
void
-compare_entry(void (*hook) (PredType t, PredIdx i, const char *name),
+compare_entry(PredHook hook,
TERMTYPE *tp GCC_UNUSED,
bool quiet)
/* compare two entries */
@@ -1170,7 +1281,7 @@ compare_entry(void (*hook) (PredType t, PredIdx i, const char *name),
fputs(" comparing booleans.\n", stdout);
for_each_boolean(j, tp) {
i = BoolIndirect(j);
- name = ExtBoolname(tp, i, bool_names);
+ name = ExtBoolname(tp, (int) i, bool_names);
if (isObsolete(outform, name))
continue;
@@ -1182,7 +1293,7 @@ compare_entry(void (*hook) (PredType t, PredIdx i, const char *name),
fputs(" comparing numbers.\n", stdout);
for_each_number(j, tp) {
i = NumIndirect(j);
- name = ExtNumname(tp, i, num_names);
+ name = ExtNumname(tp, (int) i, num_names);
if (isObsolete(outform, name))
continue;
@@ -1194,7 +1305,7 @@ compare_entry(void (*hook) (PredType t, PredIdx i, const char *name),
fputs(" comparing strings.\n", stdout);
for_each_string(j, tp) {
i = StrIndirect(j);
- name = ExtStrname(tp, i, str_names);
+ name = ExtStrname(tp, (int) i, str_names);
if (isObsolete(outform, name))
continue;
diff --git a/contrib/ncurses/progs/dump_entry.h b/contrib/ncurses/progs/dump_entry.h
index b99a37a74f25..cb2a44fe7d4f 100644
--- a/contrib/ncurses/progs/dump_entry.h
+++ b/contrib/ncurses/progs/dump_entry.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2013 Free 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,9 +32,8 @@
* and: Thomas E. Dickey 1996-on *
****************************************************************************/
-
/*
- * $Id: dump_entry.h,v 1.30 2008/07/12 20:23:03 tom Exp $
+ * $Id: dump_entry.h,v 1.33 2013/12/15 01:08:03 tom Exp $
*
* Dump control definitions and variables
*/
@@ -64,16 +63,17 @@
typedef unsigned PredType;
typedef unsigned PredIdx;
-typedef int (*PredFunc)(PredType, PredIdx);
+typedef int (*PredFunc) (PredType, PredIdx);
+typedef void (*PredHook) (PredType, PredIdx, const char *);
extern NCURSES_CONST char *nametrans(const char *);
-extern int fmt_entry(TERMTYPE *, PredFunc, bool, bool, bool, int);
+extern int fmt_entry(TERMTYPE *, PredFunc, int, int, int, 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 void compare_entry(PredHook, TERMTYPE *, bool);
+extern void dump_entry(TERMTYPE *, int, int, int, PredFunc);
+extern void dump_init(const char *, int, int, int, int, unsigned, bool);
extern void dump_uses(const char *, bool);
-extern void repair_acsc(TERMTYPE * tp);
+extern void repair_acsc(TERMTYPE *tp);
#define FAIL -1
diff --git a/contrib/ncurses/progs/infocmp.c b/contrib/ncurses/progs/infocmp.c
index 2af9cb50b1d7..587cbc3449be 100644
--- a/contrib/ncurses/progs/infocmp.c
+++ b/contrib/ncurses/progs/infocmp.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -42,7 +42,7 @@
#include <dump_entry.h>
-MODULE_ID("$Id: infocmp.c,v 1.105 2010/05/01 22:04:08 tom Exp $")
+MODULE_ID("$Id: infocmp.c,v 1.129 2014/02/01 22:11:03 tom Exp $")
#define L_CURL "{"
#define R_CURL "}"
@@ -70,8 +70,9 @@ static const char *bool_sep = ":";
static const char *s_absent = "NULL";
static const char *s_cancel = "NULL";
static const char *tversion; /* terminfo version selected */
-static int itrace; /* trace flag for debugging */
+static unsigned itrace; /* trace flag for debugging */
static int mwidth = 60;
+static int mheight = 65535;
static int numbers = 0; /* format "%'char'" to/from "%{number}" */
static int outform = F_TERMINFO; /* output format */
static int sortmode; /* sort_mode */
@@ -86,27 +87,52 @@ static int compare;
static bool ignorepads; /* ignore pad prefixes when diffing */
#if NO_LEAKS
+
+typedef struct {
+ ENTRY *head;
+ ENTRY *tail;
+} ENTERED;
+
+static ENTERED *entered;
+
#undef ExitProgram
static void ExitProgram(int code) GCC_NORETURN;
/* prototype is to get gcc to accept the noreturn attribute */
static void
ExitProgram(int code)
{
- while (termcount-- > 0)
- _nc_free_termtype(&entries[termcount].tterm);
+ int n;
+
+ for (n = 0; n < termcount; ++n) {
+ ENTRY *new_head = _nc_head;
+ ENTRY *new_tail = _nc_tail;
+ _nc_head = entered[n].head;
+ _nc_tail = entered[n].tail;
+ _nc_free_entries(entered[n].head);
+ _nc_head = new_head;
+ _nc_tail = new_tail;
+ }
_nc_leaks_dump_entry();
free(entries);
+ free(entered);
_nc_free_tic(code);
}
#endif
+static void
+failed(const char *s)
+{
+ perror(s);
+ ExitProgram(EXIT_FAILURE);
+}
+
static char *
canonical_name(char *ptr, char *buf)
/* extract the terminal type's primary name */
{
char *bp;
- (void) strcpy(buf, ptr);
+ _nc_STRCPY(buf, ptr, NAMESIZE);
if ((bp = strchr(buf, '|')) != 0)
*bp = '\0';
@@ -307,13 +333,13 @@ dump_numeric(int val, char *buf)
{
switch (val) {
case ABSENT_NUMERIC:
- strcpy(buf, s_absent);
+ _nc_STRCPY(buf, s_absent, MAX_STRING);
break;
case CANCELLED_NUMERIC:
- strcpy(buf, s_cancel);
+ _nc_STRCPY(buf, s_cancel, MAX_STRING);
break;
default:
- sprintf(buf, "%d", val);
+ _nc_SPRINTF(buf, _nc_SLIMIT(MAX_STRING) "%d", val);
break;
}
}
@@ -323,31 +349,94 @@ dump_string(char *val, char *buf)
/* display the value of a string capability */
{
if (val == ABSENT_STRING)
- strcpy(buf, s_absent);
+ _nc_STRCPY(buf, s_absent, MAX_STRING);
else if (val == CANCELLED_STRING)
- strcpy(buf, s_cancel);
+ _nc_STRCPY(buf, s_cancel, MAX_STRING);
else {
- sprintf(buf, "'%.*s'", MAX_STRING - 3, TIC_EXPAND(val));
+ _nc_SPRINTF(buf, _nc_SLIMIT(MAX_STRING)
+ "'%.*s'", MAX_STRING - 3, TIC_EXPAND(val));
}
}
+/*
+ * Show "comparing..." message for the given terminal names.
+ */
+static void
+show_comparing(char **names)
+{
+ if (itrace) {
+ switch (compare) {
+ case C_DIFFERENCE:
+ (void) fprintf(stderr, "%s: dumping differences\n", _nc_progname);
+ break;
+
+ case C_COMMON:
+ (void) fprintf(stderr, "%s: dumping common capabilities\n", _nc_progname);
+ break;
+
+ case C_NAND:
+ (void) fprintf(stderr, "%s: dumping differences\n", _nc_progname);
+ break;
+ }
+ }
+ if (*names) {
+ printf("comparing %s", *names++);
+ if (*names) {
+ printf(" to %s", *names++);
+ while (*names) {
+ printf(", %s", *names++);
+ }
+ }
+ printf(".\n");
+ }
+}
+
+/*
+ * ncurses stores two types of non-standard capabilities:
+ * a) capabilities listed past the "STOP-HERE" comment in the Caps file.
+ * These are used in the terminfo source file to provide data for termcaps,
+ * e.g., when there is no equivalent capability in terminfo, as well as for
+ * widely-used non-standard capabilities.
+ * b) user-definable capabilities, via "tic -x".
+ *
+ * However, if "-x" is omitted from the tic command, both types of
+ * non-standard capability are not loaded into the terminfo database. This
+ * macro is used for limit-checks against the symbols that tic uses to omit
+ * the two types of non-standard entry.
+ */
+#if NCURSES_XNAMES
+#define check_user_definable(n,limit) if (!_nc_user_definable && (n) > (limit)) break
+#else
+#define check_user_definable(n,limit) if ((n) > (limit)) break
+#endif
+
+/*
+ * Use these macros to simplify loops on C_COMMON and C_NAND:
+ */
+#define for_each_entry() while (entries[extra].tterm.term_names)
+#define next_entry (&(entries[extra++].tterm))
+
static void
compare_predicate(PredType type, PredIdx idx, const char *name)
/* predicate function to use for entry difference reports */
{
- register ENTRY *e1 = &entries[0];
- register ENTRY *e2 = &entries[1];
- char buf1[MAX_STRING], buf2[MAX_STRING];
+ ENTRY *e1 = &entries[0];
+ ENTRY *e2 = &entries[1];
+ char buf1[MAX_STRING];
+ char buf2[MAX_STRING];
int b1, b2;
int n1, n2;
char *s1, *s2;
+ bool found;
+ int extra = 1;
switch (type) {
case CMP_BOOLEAN:
+ check_user_definable(idx, BOOLWRITE);
b1 = e1->tterm.Booleans[idx];
- b2 = e2->tterm.Booleans[idx];
switch (compare) {
case C_DIFFERENCE:
+ b2 = next_entry->Booleans[idx];
if (!(b1 == ABSENT_BOOLEAN && b2 == ABSENT_BOOLEAN) && b1 != b2)
(void) printf("\t%s: %s%s%s.\n",
name,
@@ -357,45 +446,93 @@ compare_predicate(PredType type, PredIdx idx, const char *name)
break;
case C_COMMON:
- if (b1 == b2 && b1 != ABSENT_BOOLEAN)
- (void) printf("\t%s= %s.\n", name, dump_boolean(b1));
+ if (b1 != ABSENT_BOOLEAN) {
+ found = TRUE;
+ for_each_entry() {
+ b2 = next_entry->Booleans[idx];
+ if (b1 != b2) {
+ found = FALSE;
+ break;
+ }
+ }
+ if (found) {
+ (void) printf("\t%s= %s.\n", name, dump_boolean(b1));
+ }
+ }
break;
case C_NAND:
- if (b1 == ABSENT_BOOLEAN && b2 == ABSENT_BOOLEAN)
- (void) printf("\t!%s.\n", name);
+ if (b1 == ABSENT_BOOLEAN) {
+ found = TRUE;
+ for_each_entry() {
+ b2 = next_entry->Booleans[idx];
+ if (b1 != b2) {
+ found = FALSE;
+ break;
+ }
+ }
+ if (found) {
+ (void) printf("\t!%s.\n", name);
+ }
+ }
break;
}
break;
case CMP_NUMBER:
+ check_user_definable(idx, NUMWRITE);
n1 = e1->tterm.Numbers[idx];
- n2 = e2->tterm.Numbers[idx];
- dump_numeric(n1, buf1);
- dump_numeric(n2, buf2);
switch (compare) {
case C_DIFFERENCE:
- if (!((n1 == ABSENT_NUMERIC && n2 == ABSENT_NUMERIC)) && n1 != n2)
+ n2 = next_entry->Numbers[idx];
+ if (!((n1 == ABSENT_NUMERIC && n2 == ABSENT_NUMERIC)) && n1 != n2) {
+ dump_numeric(n1, buf1);
+ dump_numeric(n2, buf2);
(void) printf("\t%s: %s, %s.\n", name, buf1, buf2);
+ }
break;
case C_COMMON:
- if (n1 != ABSENT_NUMERIC && n2 != ABSENT_NUMERIC && n1 == n2)
- (void) printf("\t%s= %s.\n", name, buf1);
+ if (n1 != ABSENT_NUMERIC) {
+ found = TRUE;
+ for_each_entry() {
+ n2 = next_entry->Numbers[idx];
+ if (n1 != n2) {
+ found = FALSE;
+ break;
+ }
+ }
+ if (found) {
+ dump_numeric(n1, buf1);
+ (void) printf("\t%s= %s.\n", name, buf1);
+ }
+ }
break;
case C_NAND:
- if (n1 == ABSENT_NUMERIC && n2 == ABSENT_NUMERIC)
- (void) printf("\t!%s.\n", name);
+ if (n1 == ABSENT_NUMERIC) {
+ found = TRUE;
+ for_each_entry() {
+ n2 = next_entry->Numbers[idx];
+ if (n1 != n2) {
+ found = FALSE;
+ break;
+ }
+ }
+ if (found) {
+ (void) printf("\t!%s.\n", name);
+ }
+ }
break;
}
break;
case CMP_STRING:
+ check_user_definable(idx, STRWRITE);
s1 = e1->tterm.Strings[idx];
- s2 = e2->tterm.Strings[idx];
switch (compare) {
case C_DIFFERENCE:
+ s2 = next_entry->Strings[idx];
if (capcmp(idx, s1, s2)) {
dump_string(s1, buf1);
dump_string(s2, buf2);
@@ -405,13 +542,35 @@ compare_predicate(PredType type, PredIdx idx, const char *name)
break;
case C_COMMON:
- if (s1 && s2 && !capcmp(idx, s1, s2))
- (void) printf("\t%s= '%s'.\n", name, TIC_EXPAND(s1));
+ if (s1 != ABSENT_STRING) {
+ found = TRUE;
+ for_each_entry() {
+ s2 = next_entry->Strings[idx];
+ if (capcmp(idx, s1, s2) != 0) {
+ found = FALSE;
+ break;
+ }
+ }
+ if (found) {
+ (void) printf("\t%s= '%s'.\n", name, TIC_EXPAND(s1));
+ }
+ }
break;
case C_NAND:
- if (!s1 && !s2)
- (void) printf("\t!%s.\n", name);
+ if (s1 == ABSENT_STRING) {
+ found = TRUE;
+ for_each_entry() {
+ s2 = next_entry->Strings[idx];
+ if (s2 != s1) {
+ found = FALSE;
+ break;
+ }
+ }
+ if (found) {
+ (void) printf("\t!%s.\n", name);
+ }
+ }
break;
}
break;
@@ -430,16 +589,37 @@ compare_predicate(PredType type, PredIdx idx, const char *name)
break;
case C_COMMON:
- if (e1->nuses && e2->nuses && useeq(e1, e2)) {
- (void) fputs("\tuse: ", stdout);
- print_uses(e1, stdout);
- fputs(".\n", stdout);
+ if (e1->nuses) {
+ found = TRUE;
+ for_each_entry() {
+ e2 = &entries[extra++];
+ if (e2->nuses != e1->nuses || !useeq(e1, e2)) {
+ found = FALSE;
+ break;
+ }
+ }
+ if (found) {
+ (void) fputs("\tuse: ", stdout);
+ print_uses(e1, stdout);
+ fputs(".\n", stdout);
+ }
}
break;
case C_NAND:
- if (!e1->nuses && !e2->nuses)
- (void) printf("\t!use.\n");
+ if (!e1->nuses) {
+ found = TRUE;
+ for_each_entry() {
+ e2 = &entries[extra++];
+ if (e2->nuses != e1->nuses) {
+ found = FALSE;
+ break;
+ }
+ }
+ if (found) {
+ (void) printf("\t!use.\n");
+ }
+ }
break;
}
}
@@ -556,7 +736,7 @@ skip_csi(const char *cap)
}
static bool
-same_param(const char *table, const char *param, unsigned length)
+same_param(const char *table, const char *param, size_t length)
{
bool result = FALSE;
if (strncmp(table, param, length) == 0) {
@@ -581,15 +761,15 @@ lookup_params(const assoc * table, char *dst, char *src)
size_t tlen = strlen(ap->from);
if (same_param(ap->from, ep, tlen)) {
- (void) strcat(dst, ap->to);
+ _nc_STRCAT(dst, ap->to, MAX_TERMINFO_LENGTH);
found = TRUE;
break;
}
}
if (!found)
- (void) strcat(dst, ep);
- (void) strcat(dst, ";");
+ _nc_STRCAT(dst, ep, MAX_TERMINFO_LENGTH);
+ _nc_STRCAT(dst, ";", MAX_TERMINFO_LENGTH);
} while
((ep = strtok((char *) 0, ";")));
@@ -608,7 +788,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
const assoc *ap;
int tp_lines = tp->Numbers[2];
- if (cap == ABSENT_STRING || cap == CANCELLED_STRING)
+ if (!VALID_STRING(cap))
return;
(void) printf("%s: ", name);
@@ -624,12 +804,13 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
for (i = 0; i < STRCOUNT; i++) {
char *cp = tp->Strings[i];
- /* don't use soft-key capabilities */
- if (strnames[i][0] == 'k' && strnames[i][0] == 'f')
+ /* don't use function-key capabilities */
+ if (strnames[i][0] == 'k' && strnames[i][1] == 'f')
continue;
- if (cp != ABSENT_STRING && cp != CANCELLED_STRING && cp[0] && cp
- != cap) {
+ if (VALID_STRING(cp) &&
+ cp[0] != '\0' &&
+ cp != cap) {
len = strlen(cp);
(void) strncpy(buf2, sp, len);
buf2[len] = '\0';
@@ -637,7 +818,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
if (_nc_capcmp(cp, buf2))
continue;
-#define ISRS(s) (!strncmp((s), "is", 2) || !strncmp((s), "rs", 2))
+#define ISRS(s) (!strncmp((s), "is", (size_t) 2) || !strncmp((s), "rs", (size_t) 2))
/*
* Theoretically we just passed the test for translation
* (equality once the padding is stripped). However, there
@@ -677,12 +858,16 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
/* now check for standard-mode sequences */
if (!expansion
&& (csi = skip_csi(sp)) != 0
- && (len = strspn(sp + csi, "0123456789;"))
+ && (len = (strspn) (sp + csi, "0123456789;"))
&& (len < sizeof(buf3))
&& (next = (size_t) csi + len)
&& ((sp[next] == 'h') || (sp[next] == 'l'))) {
- (void) strcpy(buf2, (sp[next] == 'h') ? "ECMA+" : "ECMA-");
+ _nc_STRCPY(buf2,
+ ((sp[next] == 'h')
+ ? "ECMA+"
+ : "ECMA-"),
+ sizeof(buf2));
(void) strncpy(buf3, sp + csi, len);
buf3[len] = '\0';
len += (size_t) csi + 1;
@@ -694,12 +879,16 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
if (!expansion
&& (csi = skip_csi(sp)) != 0
&& sp[csi] == '?'
- && (len = strspn(sp + csi + 1, "0123456789;"))
+ && (len = (strspn) (sp + csi + 1, "0123456789;"))
&& (len < sizeof(buf3))
&& (next = (size_t) csi + 1 + len)
&& ((sp[next] == 'h') || (sp[next] == 'l'))) {
- (void) strcpy(buf2, (sp[next] == 'h') ? "DEC+" : "DEC-");
+ _nc_STRCPY(buf2,
+ ((sp[next] == 'h')
+ ? "DEC+"
+ : "DEC-"),
+ sizeof(buf2));
(void) strncpy(buf3, sp + csi + 1, len);
buf3[len] = '\0';
len += (size_t) csi + 2;
@@ -710,12 +899,12 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
/* now check for ECMA highlight sequences */
if (!expansion
&& (csi = skip_csi(sp)) != 0
- && (len = strspn(sp + csi, "0123456789;")) != 0
+ && (len = (strspn) (sp + csi, "0123456789;")) != 0
&& (len < sizeof(buf3))
&& (next = (size_t) csi + len)
&& sp[next] == 'm') {
- (void) strcpy(buf2, "SGR:");
+ _nc_STRCPY(buf2, "SGR:", sizeof(buf2));
(void) strncpy(buf3, sp + csi, len);
buf3[len] = '\0';
len += (size_t) csi + 1;
@@ -727,8 +916,8 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
&& (csi = skip_csi(sp)) != 0
&& sp[csi] == 'm') {
len = (size_t) csi + 1;
- (void) strcpy(buf2, "SGR:");
- strcat(buf2, ecma_highlights[0].to);
+ _nc_STRCPY(buf2, "SGR:", sizeof(buf2));
+ _nc_STRCAT(buf2, ecma_highlights[0].to, sizeof(buf2));
expansion = buf2;
}
@@ -739,7 +928,7 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
expansion = "RSR";
len = 1;
} else {
- (void) sprintf(buf2, "1;%dr", tp_lines);
+ _nc_SPRINTF(buf2, _nc_SLIMIT(sizeof(buf2)) "1;%dr", tp_lines);
len = strlen(buf2);
if (strncmp(buf2, sp + csi, len) == 0)
expansion = "RSR";
@@ -750,12 +939,12 @@ analyze_string(const char *name, const char *cap, TERMTYPE *tp)
/* now check for home-down */
if (!expansion
&& (csi = skip_csi(sp)) != 0) {
- (void) sprintf(buf2, "%d;1H", tp_lines);
+ _nc_SPRINTF(buf2, _nc_SLIMIT(sizeof(buf2)) "%d;1H", tp_lines);
len = strlen(buf2);
if (strncmp(buf2, sp + csi, len) == 0) {
expansion = "LL";
} else {
- (void) sprintf(buf2, "%dH", tp_lines);
+ _nc_SPRINTF(buf2, _nc_SLIMIT(sizeof(buf2)) "%dH", tp_lines);
len = strlen(buf2);
if (strncmp(buf2, sp + csi, len) == 0) {
expansion = "LL";
@@ -795,12 +984,16 @@ file_comparison(int argc, char *argv[])
int i, n;
memset(heads, 0, sizeof(heads));
- dump_init((char *) 0, F_LITERAL, S_TERMINFO, 0, itrace, FALSE);
+ dump_init((char *) 0, F_LITERAL, S_TERMINFO, 0, 65535, itrace, FALSE);
for (n = 0; n < argc && n < MAXCOMPARE; n++) {
if (freopen(argv[n], "r", stdin) == 0)
_nc_err_abort("Can't open %s", argv[n]);
+#if NO_LEAKS
+ entered[n].head = _nc_head;
+ entered[n].tail = _nc_tail;
+#endif
_nc_head = _nc_tail = 0;
/* parse entries out of the source file */
@@ -925,6 +1118,11 @@ file_comparison(int argc, char *argv[])
#endif
if (!(entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp))) {
char name1[NAMESIZE], name2[NAMESIZE];
+ char *names[3];
+
+ names[0] = name1;
+ names[1] = name2;
+ names[2] = 0;
entries[0] = *qp;
entries[1] = *rp;
@@ -934,29 +1132,17 @@ file_comparison(int argc, char *argv[])
switch (compare) {
case C_DIFFERENCE:
- if (itrace)
- (void) fprintf(stderr,
- "%s: dumping differences\n",
- _nc_progname);
- (void) printf("comparing %s to %s.\n", name1, name2);
+ show_comparing(names);
compare_entry(compare_predicate, &entries->tterm, quiet);
break;
case C_COMMON:
- if (itrace)
- (void) fprintf(stderr,
- "%s: dumping common capabilities\n",
- _nc_progname);
- (void) printf("comparing %s to %s.\n", name1, name2);
+ show_comparing(names);
compare_entry(compare_predicate, &entries->tterm, quiet);
break;
case C_NAND:
- if (itrace)
- (void) fprintf(stderr,
- "%s: dumping differences\n",
- _nc_progname);
- (void) printf("comparing %s to %s.\n", name1, name2);
+ show_comparing(names);
compare_entry(compare_predicate, &entries->tterm, quiet);
break;
@@ -974,7 +1160,9 @@ usage(void)
"Usage: infocmp [options] [-A directory] [-B directory] [termname...]"
,""
,"Options:"
+ ," -0 print single-row"
," -1 print single-column"
+ ," -K use termcap-names and BSD syntax"
," -C use termcap-names"
," -F compare terminfo-files"
," -I use terminfo-names"
@@ -982,6 +1170,7 @@ usage(void)
," -R subset (see manpage)"
," -T eliminate size limits (test)"
," -U eliminate post-processing of entries"
+ ," -D print database locations"
," -V print version"
#if NCURSES_XNAMES
," -a with -F, list commented-out caps"
@@ -1030,19 +1219,25 @@ static char *
any_initializer(const char *fmt, const char *type)
{
static char *initializer;
+ static size_t need;
char *s;
- if (initializer == 0)
- initializer = (char *) malloc(strlen(entries->tterm.term_names) +
- strlen(type) + strlen(fmt));
+ if (initializer == 0) {
+ need = (strlen(entries->tterm.term_names)
+ + strlen(type)
+ + strlen(fmt));
+ initializer = (char *) malloc(need + 1);
+ if (initializer == 0)
+ failed("any_initializer");
+ }
- (void) strcpy(initializer, entries->tterm.term_names);
+ _nc_STRCPY(initializer, entries->tterm.term_names, need);
for (s = initializer; *s != 0 && *s != '|'; s++) {
if (!isalnum(UChar(*s)))
*s = '_';
}
*s = 0;
- (void) sprintf(s, fmt, type);
+ _nc_SPRINTF(s, _nc_SLIMIT(need) fmt, type);
return initializer;
}
@@ -1073,9 +1268,10 @@ dump_initializers(TERMTYPE *term)
if (VALID_STRING(term->Strings[n])) {
tp = buf;
+#define TP_LIMIT ((MAX_STRING - 5) - (size_t)(tp - buf))
*tp++ = '"';
for (sp = term->Strings[n];
- *sp != 0 && (tp - buf) < MAX_STRING - 6;
+ *sp != 0 && TP_LIMIT > 2;
sp++) {
if (isascii(UChar(*sp))
&& isprint(UChar(*sp))
@@ -1083,14 +1279,15 @@ dump_initializers(TERMTYPE *term)
&& *sp != '"')
*tp++ = *sp;
else {
- (void) sprintf(tp, "\\%03o", UChar(*sp));
+ _nc_SPRINTF(tp, _nc_SLIMIT(TP_LIMIT) "\\%03o", UChar(*sp));
tp += 4;
}
}
*tp++ = '"';
*tp = '\0';
(void) printf("static char %-20s[] = %s;\n",
- string_variable(ExtStrname(term, n, strnames)), buf);
+ string_variable(ExtStrname(term, (int) n, strnames)),
+ buf);
}
}
printf("\n");
@@ -1116,7 +1313,7 @@ dump_initializers(TERMTYPE *term)
break;
}
(void) printf("\t/* %3u: %-8s */\t%s,\n",
- n, ExtBoolname(term, n, boolnames), str);
+ n, ExtBoolname(term, (int) n, boolnames), str);
}
(void) printf("%s;\n", R_CURL);
@@ -1132,12 +1329,12 @@ dump_initializers(TERMTYPE *term)
str = "CANCELLED_NUMERIC";
break;
default:
- sprintf(buf, "%d", term->Numbers[n]);
+ _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "%d", term->Numbers[n]);
str = buf;
break;
}
(void) printf("\t/* %3u: %-8s */\t%s,\n", n,
- ExtNumname(term, n, numnames), str);
+ ExtNumname(term, (int) n, numnames), str);
}
(void) printf("%s;\n", R_CURL);
@@ -1150,10 +1347,10 @@ dump_initializers(TERMTYPE *term)
else if (term->Strings[n] == CANCELLED_STRING)
str = "CANCELLED_STRING";
else {
- str = string_variable(ExtStrname(term, n, strnames));
+ str = string_variable(ExtStrname(term, (int) n, strnames));
}
(void) printf("\t/* %3u: %-8s */\t%s,\n", n,
- ExtStrname(term, n, strnames), str);
+ ExtStrname(term, (int) n, strnames), str);
}
(void) printf("%s;\n", R_CURL);
@@ -1165,15 +1362,15 @@ dump_initializers(TERMTYPE *term)
name_initializer("string_ext"), L_CURL);
for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) {
(void) printf("\t/* %3u: bool */\t\"%s\",\n",
- n, ExtBoolname(term, n, boolnames));
+ n, ExtBoolname(term, (int) n, boolnames));
}
for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) {
(void) printf("\t/* %3u: num */\t\"%s\",\n",
- n, ExtNumname(term, n, numnames));
+ n, ExtNumname(term, (int) n, numnames));
}
for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) {
(void) printf("\t/* %3u: str */\t\"%s\",\n",
- n, ExtStrname(term, n, strnames));
+ n, ExtStrname(term, (int) n, strnames));
}
(void) printf("%s;\n", R_CURL);
}
@@ -1247,6 +1444,23 @@ terminal_env(void)
return terminal;
}
+/*
+ * Show the databases that infocmp knows about. The location to which it writes is
+ */
+static void
+show_databases(void)
+{
+ DBDIRS state;
+ int offset;
+ const char *path2;
+
+ _nc_first_db(&state, &offset);
+ while ((path2 = _nc_next_db(&state, &offset)) != 0) {
+ printf("%s\n", path2);
+ }
+ _nc_last_db();
+}
+
/***************************************************************************
*
* Main sequence
@@ -1269,7 +1483,7 @@ main(int argc, char *argv[])
/* Also avoid overflowing smaller stacks on systems like AmigaOS */
path *tfile = 0;
char **tname = 0;
- int maxterms;
+ size_t maxterms;
char **myargv;
@@ -1287,18 +1501,27 @@ main(int argc, char *argv[])
#if NCURSES_XNAMES
use_extended_names(FALSE);
#endif
+ _nc_strict_bsd = 0;
_nc_progname = _nc_rootname(argv[0]);
/* make sure we have enough space to add two terminal entries */
myargv = typeCalloc(char *, (size_t) (argc + 3));
+ if (myargv == 0)
+ failed("myargv");
+
memcpy(myargv, argv, (sizeof(char *) * (size_t) argc));
argv = myargv;
while ((c = getopt(argc,
argv,
- "1A:aB:CcdEeFfGgIiLlnpqR:rs:TtUuVv:w:x")) != -1) {
+ "01A:aB:CcDdEeFfGgIiKLlnpqR:rs:TtUuVv:w:x")) != -1) {
switch (c) {
+ case '0':
+ mwidth = 65535;
+ mheight = 1;
+ break;
+
case '1':
mwidth = 0;
break;
@@ -1317,6 +1540,9 @@ main(int argc, char *argv[])
restdir = optarg;
break;
+ case 'K':
+ _nc_strict_bsd = 1;
+ /* FALLTHRU */
case 'C':
outform = F_TERMCAP;
tversion = "BSD";
@@ -1324,6 +1550,11 @@ main(int argc, char *argv[])
sortmode = S_TERMCAP;
break;
+ case 'D':
+ show_databases();
+ ExitProgram(EXIT_SUCCESS);
+ break;
+
case 'c':
compare = C_COMMON;
break;
@@ -1441,7 +1672,7 @@ main(int argc, char *argv[])
ExitProgram(EXIT_SUCCESS);
case 'v':
- itrace = optarg_to_number();
+ itrace = (unsigned) optarg_to_number();
set_trace_level(itrace);
break;
@@ -1460,10 +1691,17 @@ main(int argc, char *argv[])
}
}
- maxterms = (argc + 2 - optind);
- tfile = typeMalloc(path, maxterms);
- tname = typeCalloc(char *, maxterms);
- entries = typeCalloc(ENTRY, maxterms);
+ maxterms = (size_t) (argc + 2 - optind);
+ if ((tfile = typeMalloc(path, maxterms)) == 0)
+ failed("tfile");
+ if ((tname = typeCalloc(char *, maxterms)) == 0)
+ failed("tname");
+ if ((entries = typeCalloc(ENTRY, maxterms)) == 0)
+ failed("entries");
+#if NO_LEAKS
+ if ((entered = typeCalloc(ENTERED, maxterms)) == 0)
+ failed("entered");
+#endif
if (tfile == 0
|| tname == 0
@@ -1476,9 +1714,6 @@ main(int argc, char *argv[])
if (sortmode == S_DEFAULT)
sortmode = S_TERMINFO;
- /* set up for display */
- dump_init(tversion, outform, sortmode, mwidth, itrace, formatted);
-
/* make sure we have at least one terminal name to work with */
if (optind >= argc)
argv[argc++] = terminal_env();
@@ -1487,9 +1722,23 @@ main(int argc, char *argv[])
if (compare != C_DEFAULT && optind >= argc - 1)
argv[argc++] = terminal_env();
+ /* exactly one terminal name with no options means display it */
/* exactly two terminal names with no options means do -d */
- if (argc - optind == 2 && compare == C_DEFAULT)
- compare = C_DIFFERENCE;
+ if (compare == C_DEFAULT) {
+ switch (argc - optind) {
+ default:
+ fprintf(stderr, "%s: too many names to compare\n", _nc_progname);
+ ExitProgram(EXIT_FAILURE);
+ case 1:
+ break;
+ case 2:
+ compare = C_DIFFERENCE;
+ break;
+ }
+ }
+
+ /* set up for display */
+ dump_init(tversion, outform, sortmode, mwidth, mheight, itrace, formatted);
if (!filecompare) {
/* grab the entries */
@@ -1501,15 +1750,17 @@ main(int argc, char *argv[])
tname[termcount] = argv[optind];
if (directory) {
-#if USE_DATABASE
+#if NCURSES_USE_DATABASE
#if MIXEDCASE_FILENAMES
#define LEAF_FMT "%c"
#else
#define LEAF_FMT "%02x"
#endif
- (void) sprintf(tfile[termcount], "%s/" LEAF_FMT "/%s",
- directory,
- UChar(*argv[optind]), argv[optind]);
+ _nc_SPRINTF(tfile[termcount],
+ _nc_SLIMIT(sizeof(path))
+ "%s/" LEAF_FMT "/%s",
+ directory,
+ UChar(*argv[optind]), argv[optind]);
if (itrace)
(void) fprintf(stderr,
"%s: reading entry %s from file %s\n",
@@ -1599,27 +1850,17 @@ main(int argc, char *argv[])
break;
case C_DIFFERENCE:
- if (itrace)
- (void) fprintf(stderr, "%s: dumping differences\n", _nc_progname);
- (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
+ show_comparing(tname);
compare_entry(compare_predicate, &entries->tterm, quiet);
break;
case C_COMMON:
- if (itrace)
- (void) fprintf(stderr,
- "%s: dumping common capabilities\n",
- _nc_progname);
- (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
+ show_comparing(tname);
compare_entry(compare_predicate, &entries->tterm, quiet);
break;
case C_NAND:
- if (itrace)
- (void) fprintf(stderr,
- "%s: dumping differences\n",
- _nc_progname);
- (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
+ show_comparing(tname);
compare_entry(compare_predicate, &entries->tterm, quiet);
break;
@@ -1640,15 +1881,16 @@ main(int argc, char *argv[])
break;
}
}
- } else if (compare == C_USEALL)
+ } else if (compare == C_USEALL) {
(void) fprintf(stderr, "Sorry, -u doesn't work with -F\n");
- else if (compare == C_DEFAULT)
+ } else if (compare == C_DEFAULT) {
(void) fprintf(stderr, "Use `tic -[CI] <file>' for this.\n");
- else if (argc - optind != 2)
+ } else if (argc - optind != 2) {
(void) fprintf(stderr,
"File comparison needs exactly two file arguments.\n");
- else
+ } else {
file_comparison(argc - optind, argv + optind);
+ }
MAIN_LEAKS();
ExitProgram(EXIT_SUCCESS);
diff --git a/contrib/ncurses/progs/progs.priv.h b/contrib/ncurses/progs/progs.priv.h
index f0ea4608227d..3ead89f85d20 100644
--- a/contrib/ncurses/progs/progs.priv.h
+++ b/contrib/ncurses/progs/progs.priv.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2011,2012 Free 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 1997-on *
****************************************************************************/
/*
- * $Id: progs.priv.h,v 1.34 2008/08/03 17:43:05 tom Exp $
+ * $Id: progs.priv.h,v 1.39 2012/02/22 22:11:27 tom Exp $
*
* progs.priv.h
*
@@ -42,7 +42,7 @@
#if USE_RCS_IDS
#define MODULE_ID(id) static const char Ident[] = id;
#else
-#define MODULE_ID(id) /*nothing*/
+#define MODULE_ID(id) /*nothing */
#endif
#include <stdlib.h>
@@ -90,6 +90,14 @@
# endif
#endif
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#else
+# if HAVE_STDINT_H
+# include <stdint.h>
+# endif
+#endif
+
#include <assert.h>
#include <errno.h>
@@ -99,7 +107,7 @@ extern int errno;
#if HAVE_GETOPT_H
#include <getopt.h>
-#else
+#elif !defined(HAVE_GETOPT_HEADER)
/* 'getopt()' may be prototyped in <stdlib.h>, but declaring its
* variables doesn't hurt.
*/
@@ -109,9 +117,11 @@ extern int optind;
#include <curses.h>
#include <term_entry.h>
+#include <nc_termios.h>
#include <tic.h>
#include <nc_tparm.h>
+#include <nc_string.h>
#include <nc_alloc.h>
#if HAVE_NC_FREEALL
#undef ExitProgram
@@ -171,7 +181,7 @@ extern int optind;
# elif defined(MAXPATHLEN)
# define PATH_MAX MAXPATHLEN
# else
-# define PATH_MAX 255 /* the Posix minimum pathsize */
+# define PATH_MAX 255 /* the Posix minimum pathsize */
# endif
#endif
@@ -183,7 +193,7 @@ extern int optind;
# if ('z'-'a' == 25) && ('z' < 127) && ('Z'-'A' == 25) && ('Z' < 127) && ('9' < 127)
# define isascii(c) (UChar(c) <= 127)
# else
-# define isascii(c) 1 /* not really ascii anyway */
+# define isascii(c) 1 /* not really ascii anyway */
# endif
#endif
diff --git a/contrib/ncurses/progs/tabs.c b/contrib/ncurses/progs/tabs.c
index b59c9086d8d3..7ed3007549d8 100644
--- a/contrib/ncurses/progs/tabs.c
+++ b/contrib/ncurses/progs/tabs.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2008-2012,2013 Free 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,12 +37,20 @@
#define USE_LIBTINFO
#include <progs.priv.h>
-MODULE_ID("$Id: tabs.c,v 1.19 2010/10/23 22:26:01 tom Exp $")
+MODULE_ID("$Id: tabs.c,v 1.34 2013/06/11 08:18:27 tom Exp $")
static void usage(void) GCC_NORETURN;
+static char *prg_name;
static int max_cols;
+static void
+failed(const char *s)
+{
+ perror(s);
+ ExitProgram(EXIT_FAILURE);
+}
+
static int
putch(int c)
{
@@ -83,28 +91,29 @@ decode_tabs(const char *tab_list)
int prior = 0;
int ch;
- if (result != 0) {
- while ((ch = *tab_list++) != '\0') {
- if (isdigit(UChar(ch))) {
- value *= 10;
- value += (ch - '0');
- } else if (ch == ',') {
- result[n] = value + prior;
- if (n > 0 && result[n] <= result[n - 1]) {
- fprintf(stderr,
- "tab-stops are not in increasing order: %d %d\n",
- value, result[n - 1]);
- free(result);
- result = 0;
- break;
- }
- ++n;
- value = 0;
- prior = 0;
- } else if (ch == '+') {
- if (n)
- prior = result[n - 1];
+ if (result == 0)
+ failed("decode_tabs");
+
+ while ((ch = *tab_list++) != '\0') {
+ if (isdigit(UChar(ch))) {
+ value *= 10;
+ value += (ch - '0');
+ } else if (ch == ',') {
+ result[n] = value + prior;
+ if (n > 0 && result[n] <= result[n - 1]) {
+ fprintf(stderr,
+ "%s: tab-stops are not in increasing order: %d %d\n",
+ prg_name, value, result[n - 1]);
+ free(result);
+ result = 0;
+ break;
}
+ ++n;
+ value = 0;
+ prior = 0;
+ } else if (ch == '+') {
+ if (n)
+ prior = result[n - 1];
}
}
@@ -114,6 +123,7 @@ decode_tabs(const char *tab_list)
*/
if ((n == 0) && (value > 0)) {
int step = value;
+ value = 1;
while (n < max_cols - 1) {
result[n++] = value;
value += step;
@@ -126,6 +136,7 @@ decode_tabs(const char *tab_list)
result[n++] = value + prior;
result[n] = 0;
}
+
return result;
}
@@ -140,10 +151,11 @@ print_ruler(int *tab_list)
for (n = 0; n < max_cols; n += 10) {
int ch = 1 + (n / 10);
char buffer[20];
- sprintf(buffer, "----+----%c",
- ((ch < 10)
- ? (ch + '0')
- : (ch + 'A' - 10)));
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer))
+ "----+----%c",
+ ((ch < 10)
+ ? (ch + '0')
+ : (ch + 'A' - 10)));
printf("%.*s", ((max_cols - n) > 10) ? 10 : (max_cols - n), buffer);
}
putchar('\n');
@@ -227,7 +239,7 @@ comma_is_needed(const char *source)
bool result = FALSE;
if (source != 0) {
- unsigned len = strlen(source);
+ size_t len = strlen(source);
if (len != 0)
result = (source[len - 1] != ',');
} else {
@@ -251,7 +263,7 @@ add_to_tab_list(char **append, const char *value)
if (copied != 0 && *copied != '\0') {
const char *comma = ",";
- unsigned need = 1 + strlen(copied);
+ size_t need = 1 + strlen(copied);
if (*copied == ',')
comma = "";
@@ -263,15 +275,16 @@ add_to_tab_list(char **append, const char *value)
need += strlen(*append);
result = malloc(need);
- if (result != 0) {
- *result = '\0';
- if (*append != 0) {
- strcpy(result, *append);
- free(*append);
- }
- strcat(result, comma);
- strcat(result, copied);
+ if (result == 0)
+ failed("add_to_tab_list");
+
+ *result = '\0';
+ if (*append != 0) {
+ _nc_STRCPY(result, *append, need);
+ free(*append);
}
+ _nc_STRCAT(result, comma, need);
+ _nc_STRCAT(result, copied, need);
*append = result;
}
@@ -282,7 +295,7 @@ add_to_tab_list(char **append, const char *value)
* Check for illegal characters in the tab-list.
*/
static bool
-legal_tab_list(const char *program, const char *tab_list)
+legal_tab_list(const char *tab_list)
{
bool result = TRUE;
@@ -294,22 +307,34 @@ legal_tab_list(const char *program, const char *tab_list)
if (!(isdigit(ch) || ch == ',' || ch == '+')) {
fprintf(stderr,
"%s: unexpected character found '%c'\n",
- program, ch);
+ prg_name, ch);
result = FALSE;
break;
}
}
} else {
- fprintf(stderr, "%s: trailing comma found '%s'\n", program, tab_list);
+ fprintf(stderr, "%s: trailing comma found '%s'\n", prg_name, tab_list);
result = FALSE;
}
} else {
- fprintf(stderr, "%s: no tab-list given\n", program);
+ fprintf(stderr, "%s: no tab-list given\n", prg_name);
result = FALSE;
}
return result;
}
+static char *
+skip_list(char *value)
+{
+ while (*value != '\0' &&
+ (isdigit(UChar(*value)) ||
+ isspace(UChar(*value)) ||
+ strchr("+,", UChar(*value)) != 0)) {
+ ++value;
+ }
+ return value;
+}
+
static void
usage(void)
{
@@ -332,6 +357,7 @@ usage(void)
," -s SNOBOL"
," -u UNIVAC 1100 Assembler"
," -T name use terminal type 'name'"
+ ," -V print version"
,""
,"A tabstop-list is an ordered list of column numbers, e.g., 1,11,21"
,"or 1,+10,+10 which is the same."
@@ -353,10 +379,11 @@ main(int argc, char *argv[])
bool no_op = FALSE;
int n, ch;
NCURSES_CONST char *term_name = 0;
- const char *mar_list = 0; /* ignored */
char *append = 0;
const char *tab_list = 0;
+ prg_name = _nc_rootname(argv[0]);
+
if ((term_name = getenv("TERM")) == 0)
term_name = "ansi+tabs";
@@ -368,23 +395,25 @@ main(int argc, char *argv[])
while ((ch = *++option) != '\0') {
switch (ch) {
case 'a':
- switch (*option) {
+ switch (*++option) {
+ default:
case '\0':
tab_list = "1,10,16,36,72";
+ option--;
/* Assembler, IBM S/370, first format */
break;
case '2':
tab_list = "1,10,16,40,72";
/* Assembler, IBM S/370, second format */
break;
- default:
- usage();
}
break;
case 'c':
- switch (*option) {
+ switch (*++option) {
+ default:
case '\0':
tab_list = "1,8,12,16,20,55";
+ option--;
/* COBOL, normal format */
break;
case '2':
@@ -395,8 +424,6 @@ main(int argc, char *argv[])
tab_list = "1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67";
/* COBOL compact format extended */
break;
- default:
- usage();
}
break;
case 'd': /* ncurses extension */
@@ -427,17 +454,22 @@ main(int argc, char *argv[])
term_name = option;
} else {
term_name = argv[n++];
+ option--;
}
option += ((int) strlen(option)) - 1;
continue;
+ case 'V':
+ puts(curses_version());
+ ExitProgram(EXIT_SUCCESS);
default:
if (isdigit(UChar(*option))) {
- tab_list = option;
- ++n;
+ char *copy = strdup(option);
+ *skip_list(copy) = '\0';
+ tab_list = copy;
+ option = skip_list(option) - 1;
} else {
usage();
}
- option += ((int) strlen(option)) - 1;
break;
}
}
@@ -446,7 +478,11 @@ main(int argc, char *argv[])
while ((ch = *++option) != '\0') {
switch (ch) {
case 'm':
- mar_list = option;
+ /*
+ * The "+mXXX" option is unimplemented because only the long-obsolete
+ * att510d implements smgl, which is needed to support
+ * this option.
+ */
break;
default:
/* special case of relative stops separated by spaces? */
@@ -477,12 +513,12 @@ main(int argc, char *argv[])
if (!VALID_STRING(clear_all_tabs)) {
fprintf(stderr,
"%s: terminal type '%s' cannot reset tabs\n",
- argv[0], term_name);
+ prg_name, term_name);
} else if (!VALID_STRING(set_tab)) {
fprintf(stderr,
"%s: terminal type '%s' cannot set tabs\n",
- argv[0], term_name);
- } else if (legal_tab_list(argv[0], tab_list)) {
+ prg_name, term_name);
+ } else if (legal_tab_list(tab_list)) {
int *list = decode_tabs(tab_list);
if (!no_op)
diff --git a/contrib/ncurses/progs/tic.c b/contrib/ncurses/progs/tic.c
index 8e89095fc676..fef78ee0745e 100644
--- a/contrib/ncurses/progs/tic.c
+++ b/contrib/ncurses/progs/tic.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free 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,6 +35,7 @@
/*
* tic.c --- Main program for terminfo compiler
* by Eric S. Raymond
+ * and Thomas E Dickey
*
*/
@@ -42,9 +43,12 @@
#include <sys/stat.h>
#include <dump_entry.h>
+#include <hashed_db.h>
#include <transform.h>
-MODULE_ID("$Id: tic.c,v 1.147 2011/02/12 18:39:08 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.189 2013/11/16 19:58:09 tom Exp $")
+
+#define STDIN_NAME "<stdin>"
const char *_nc_progname = "tic";
@@ -53,6 +57,7 @@ static FILE *tmp_fp;
static bool capdump = FALSE; /* running as infotocap? */
static bool infodump = FALSE; /* running as captoinfo? */
static bool showsummary = FALSE;
+static char **namelst = 0;
static const char *to_remove;
static void (*save_check_termtype) (TERMTYPE *, bool);
@@ -69,11 +74,13 @@ static const char usage_string[] = "\
1\
a\
C\
+D\
c\
f\
G\
g\
I\
+K\
L\
N\
r\
@@ -99,8 +106,10 @@ free_namelist(char **src)
#endif
static void
-cleanup(char **namelst GCC_UNUSED)
+cleanup(void)
{
+ int rc;
+
#if NO_LEAKS
free_namelist(namelst);
#endif
@@ -108,10 +117,12 @@ cleanup(char **namelst GCC_UNUSED)
fclose(tmp_fp);
if (to_remove != 0) {
#if HAVE_REMOVE
- remove(to_remove);
+ rc = remove(to_remove);
#else
- unlink(to_remove);
+ rc = unlink(to_remove);
#endif
+ if (rc != 0)
+ perror(to_remove);
}
}
@@ -119,7 +130,6 @@ static void
failed(const char *msg)
{
perror(msg);
- cleanup((char **) 0);
ExitProgram(EXIT_FAILURE);
}
@@ -133,7 +143,9 @@ usage(void)
#if NCURSES_XNAMES
" -a retain commented-out capabilities (sets -x also)",
#endif
+ " -K translate entries to termcap source form with BSD syntax",
" -C translate entries to termcap source form",
+ " -D print list of tic's database locations (first must be writable)",
" -c check only, validate input without compiling or translating",
" -e<names> translate/compile only entries named by comma-separated list",
" -f format complex strings for readability",
@@ -173,7 +185,7 @@ usage(void)
#define L_BRACE '{'
#define R_BRACE '}'
-#define S_QUOTE '\'';
+#define S_QUOTE '\''
static void
write_it(ENTRY * ep)
@@ -216,12 +228,12 @@ write_it(ENTRY * ep)
}
*d = 0;
if (strlen(result) < strlen(s))
- strcpy(s, result);
+ _nc_STRCPY(s, result, strlen(s) + 1);
}
}
_nc_set_type(_nc_first_name(ep->tterm.term_names));
- _nc_curr_line = ep->startline;
+ _nc_curr_line = (int) ep->startline;
_nc_write_entry(&ep->tterm);
}
@@ -286,8 +298,10 @@ put_translate(int c)
if (in_name) {
if (used + 1 >= have) {
have += 132;
- namebuf = typeRealloc(char, have, namebuf);
- suffix = typeRealloc(char, have, suffix);
+ if ((namebuf = typeRealloc(char, have, namebuf)) == 0)
+ failed("put_translate namebuf");
+ if ((suffix = typeRealloc(char, have, suffix)) == 0)
+ failed("put_translate suffix");
}
if (c == '\n' || c == '@') {
namebuf[used++] = '\0';
@@ -308,7 +322,7 @@ put_translate(int c)
if ((up = strchr(namebuf, '#')) != 0
|| (up = strchr(namebuf, '=')) != 0
|| ((up = strchr(namebuf, '@')) != 0 && up[1] == '>')) {
- (void) strcpy(suffix, up);
+ _nc_STRCPY(suffix, up, have);
*up = '\0';
}
@@ -339,39 +353,122 @@ put_translate(int c)
static char *
stripped(char *src)
{
+ char *dst = 0;
+
while (isspace(UChar(*src)))
src++;
+
if (*src != '\0') {
- char *dst;
size_t len;
- if ((dst = strdup(src)) == NULL)
+ if ((dst = strdup(src)) == NULL) {
failed("strdup");
+ } else {
+ len = strlen(dst);
+ while (--len != 0 && isspace(UChar(dst[len])))
+ dst[len] = '\0';
+ }
+ }
+ return dst;
+}
- assert(dst != 0);
+static FILE *
+open_tempfile(char *filename)
+{
+ FILE *result = 0;
- len = strlen(dst);
- while (--len != 0 && isspace(UChar(dst[len])))
- dst[len] = '\0';
- return dst;
+ _nc_STRCPY(filename, "/tmp/XXXXXX", PATH_MAX);
+#if HAVE_MKSTEMP
+ {
+ int oldmask = (int) umask(077);
+ int fd = mkstemp(filename);
+ if (fd >= 0)
+ result = fdopen(fd, "w");
+ umask((mode_t) oldmask);
}
- return 0;
+#else
+ if (tmpnam(filename) != 0)
+ result = fopen(filename, "w");
+#endif
+ return result;
}
static FILE *
-open_input(const char *filename)
+copy_input(FILE *source, const char *filename, char *alt_file)
{
- FILE *fp = fopen(filename, "r");
+ char my_altfile[PATH_MAX];
+ FILE *result = 0;
+ FILE *target = 0;
+ int ch;
+
+ if (alt_file == 0)
+ alt_file = my_altfile;
+
+ if (source == 0) {
+ failed("copy_input (source)");
+ } else if ((target = open_tempfile(alt_file)) == 0) {
+ failed("copy_input (target)");
+ } else {
+ clearerr(source);
+ for (;;) {
+ ch = fgetc(source);
+ if (feof(source)) {
+ break;
+ } else if (ferror(source)) {
+ failed(filename);
+ } else if (ch == 0) {
+ /* don't loop in case someone wants to convert /dev/zero */
+ fprintf(stderr, "%s: %s is not a text-file\n", _nc_progname, filename);
+ ExitProgram(EXIT_FAILURE);
+ }
+ fputc(ch, target);
+ }
+ fclose(source);
+ /*
+ * rewind() does not force the target file's data to disk (not does
+ * fflush()...). So open a second stream on the data and then close
+ * the one that we were writing on before starting to read from the
+ * second stream.
+ */
+ result = fopen(alt_file, "r+");
+ fclose(target);
+ to_remove = strdup(alt_file);
+ }
+ return result;
+}
+
+static FILE *
+open_input(const char *filename, char *alt_file)
+{
+ FILE *fp;
struct stat sb;
+ int mode;
- if (fp == 0) {
- fprintf(stderr, "%s: Can't open %s\n", _nc_progname, filename);
+ if (!strcmp(filename, "-")) {
+ fp = copy_input(stdin, STDIN_NAME, alt_file);
+ } else if (stat(filename, &sb) < 0) {
+ fprintf(stderr, "%s: %s %s\n", _nc_progname, filename, strerror(errno));
ExitProgram(EXIT_FAILURE);
- }
- if (fstat(fileno(fp), &sb) < 0
- || (sb.st_mode & S_IFMT) != S_IFREG) {
+ } else if ((mode = (sb.st_mode & S_IFMT)) == S_IFDIR
+ || (mode != S_IFREG && mode != S_IFCHR)) {
fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename);
ExitProgram(EXIT_FAILURE);
+ } else {
+ fp = fopen(filename, "r");
+
+ if (fp == 0) {
+ fprintf(stderr, "%s: Can't open %s\n", _nc_progname, filename);
+ ExitProgram(EXIT_FAILURE);
+ }
+ if (mode != S_IFREG) {
+ if (alt_file != 0) {
+ FILE *fp2 = copy_input(fp, filename, alt_file);
+ fp = fp2;
+ } else {
+ fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename);
+ ExitProgram(EXIT_FAILURE);
+ }
+ }
}
return fp;
}
@@ -389,7 +486,7 @@ make_namelist(char *src)
if (src == 0) {
/* EMPTY */ ;
} else if (strchr(src, '/') != 0) { /* a filename */
- FILE *fp = open_input(src);
+ FILE *fp = open_input(src, (char *) 0);
for (pass = 1; pass <= 2; pass++) {
nn = 0;
@@ -403,7 +500,8 @@ make_namelist(char *src)
}
}
if (pass == 1) {
- dst = typeCalloc(char *, nn + 1);
+ if ((dst = typeCalloc(char *, nn + 1)) == 0)
+ failed("make_namelist");
rewind(fp);
}
}
@@ -425,8 +523,10 @@ make_namelist(char *src)
if (mark == '\0')
break;
}
- if (pass == 1)
- dst = typeCalloc(char *, nn + 1);
+ if (pass == 1) {
+ if ((dst = typeCalloc(char *, nn + 1)) == 0)
+ failed("make_namelist");
+ }
}
}
if (showsummary && (dst != 0)) {
@@ -456,26 +556,118 @@ matches(char **needle, const char *haystack)
return (code);
}
-static FILE *
-open_tempfile(char *name)
+static char *
+valid_db_path(const char *nominal)
{
- FILE *result = 0;
-#if HAVE_MKSTEMP
- int fd = mkstemp(name);
- if (fd >= 0)
- result = fdopen(fd, "w");
+ struct stat sb;
+#if USE_HASHED_DB
+ char suffix[] = DBM_SUFFIX;
+ size_t need = strlen(nominal) + sizeof(suffix);
+ char *result = malloc(need);
+
+ if (result == 0)
+ failed("valid_db_path");
+ _nc_STRCPY(result, nominal, need);
+ if (strcmp(result + need - sizeof(suffix), suffix)) {
+ _nc_STRCAT(result, suffix, need);
+ }
#else
- if (tmpnam(name) != 0)
- result = fopen(name, "w");
+ char *result = strdup(nominal);
#endif
+
+ DEBUG(1, ("** stat(%s)", result));
+ if (stat(result, &sb) >= 0) {
+#if USE_HASHED_DB
+ if (!S_ISREG(sb.st_mode)
+ || access(result, R_OK | W_OK) != 0) {
+ DEBUG(1, ("...not a writable file"));
+ free(result);
+ result = 0;
+ }
+#else
+ if (!S_ISDIR(sb.st_mode)
+ || access(result, R_OK | W_OK | X_OK) != 0) {
+ DEBUG(1, ("...not a writable directory"));
+ free(result);
+ result = 0;
+ }
+#endif
+ } else {
+ /* check if parent is directory and is writable */
+ unsigned leaf = _nc_pathlast(result);
+
+ DEBUG(1, ("...not found"));
+ if (leaf) {
+ char save = result[leaf];
+ result[leaf] = 0;
+ if (stat(result, &sb) >= 0
+ && S_ISDIR(sb.st_mode)
+ && access(result, R_OK | W_OK | X_OK) == 0) {
+ result[leaf] = save;
+ } else {
+ DEBUG(1, ("...parent directory %s is not writable", result));
+ free(result);
+ result = 0;
+ }
+ } else {
+ DEBUG(1, ("... no parent directory"));
+ free(result);
+ result = 0;
+ }
+ }
return result;
}
+/*
+ * Show the databases to which tic could write. The location to which it
+ * writes is always the first one. If none are writable, print an error
+ * message.
+ */
+static void
+show_databases(const char *outdir)
+{
+ bool specific = (outdir != 0) || getenv("TERMINFO") != 0;
+ char *result;
+ const char *tried = 0;
+
+ if (outdir == 0) {
+ outdir = _nc_tic_dir(0);
+ }
+ if ((result = valid_db_path(outdir)) != 0) {
+ printf("%s\n", result);
+ free(result);
+ } else {
+ tried = outdir;
+ }
+
+ if ((outdir = _nc_home_terminfo())) {
+ if ((result = valid_db_path(outdir)) != 0) {
+ printf("%s\n", result);
+ free(result);
+ } else if (!specific) {
+ tried = outdir;
+ }
+ }
+
+ /*
+ * If we can write in neither location, give an error message.
+ */
+ if (tried) {
+ fflush(stdout);
+ fprintf(stderr, "%s: %s (no permission)\n", _nc_progname, tried);
+ ExitProgram(EXIT_FAILURE);
+ }
+}
+
+#define VtoTrace(opt) (unsigned) ((opt > 0) ? opt : (opt == 0))
+
int
main(int argc, char *argv[])
{
char my_tmpname[PATH_MAX];
- int v_opt = -1, debug_level;
+ char my_altfile[PATH_MAX];
+ int v_opt = -1;
+ unsigned debug_level;
int smart_defaults = TRUE;
char *termcap;
ENTRY *qp;
@@ -486,6 +678,7 @@ main(int argc, char *argv[])
int sortmode = S_TERMINFO; /* sort_mode */
int width = 60;
+ int height = 65535;
bool formatted = FALSE; /* reformat complex strings? */
bool literal = FALSE; /* suppress post-processing? */
int numbers = 0; /* format "%'char'" to/from "%{number}" */
@@ -493,7 +686,6 @@ main(int argc, char *argv[])
bool limited = TRUE;
char *tversion = (char *) NULL;
const char *source_file = "terminfo";
- char **namelst = 0;
char *outdir = (char *) NULL;
bool check_only = FALSE;
bool suppress_untranslatable = FALSE;
@@ -501,6 +693,7 @@ main(int argc, char *argv[])
log_fp = stderr;
_nc_progname = _nc_rootname(argv[0]);
+ atexit(cleanup);
if ((infodump = same_program(_nc_progname, PROG_CAPTOINFO)) != FALSE) {
outform = F_TERMINFO;
@@ -513,6 +706,7 @@ main(int argc, char *argv[])
#if NCURSES_XNAMES
use_extended_names(FALSE);
#endif
+ _nc_strict_bsd = 0;
/*
* Processing arguments is a little complicated, since someone made a
@@ -520,7 +714,7 @@ main(int argc, char *argv[])
* be optional.
*/
while ((this_opt = getopt(argc, argv,
- "0123456789CILNR:TUVace:fGgo:rstvwx")) != -1) {
+ "0123456789CDIKLNR:TUVace:fGgo:rstvwx")) != -1) {
if (isdigit(this_opt)) {
switch (last_opt) {
case 'v':
@@ -530,19 +724,40 @@ main(int argc, char *argv[])
width = (width * 10) + (this_opt - '0');
break;
default:
- if (this_opt != '1')
+ switch (this_opt) {
+ case '0':
+ last_opt = this_opt;
+ width = 65535;
+ height = 1;
+ break;
+ case '1':
+ last_opt = this_opt;
+ width = 0;
+ break;
+ default:
usage();
- last_opt = this_opt;
- width = 0;
+ }
}
continue;
}
switch (this_opt) {
+ case 'K':
+ _nc_strict_bsd = 1;
+ /* the initial version of -K in 20110730 fell-thru here, but the
+ * same flag is useful when reading sources -TD
+ */
+ break;
case 'C':
capdump = TRUE;
outform = F_TERMCAP;
sortmode = S_TERMCAP;
break;
+ case 'D':
+ debug_level = VtoTrace(v_opt);
+ set_trace_level(debug_level);
+ show_databases(outdir);
+ ExitProgram(EXIT_SUCCESS);
+ break;
case 'I':
infodump = TRUE;
outform = F_TERMINFO;
@@ -568,7 +783,6 @@ main(int argc, char *argv[])
break;
case 'V':
puts(curses_version());
- cleanup(namelst);
ExitProgram(EXIT_SUCCESS);
case 'c':
check_only = TRUE;
@@ -618,7 +832,7 @@ main(int argc, char *argv[])
last_opt = this_opt;
}
- debug_level = (v_opt > 0) ? v_opt : (v_opt == 0);
+ debug_level = VtoTrace(v_opt);
set_trace_level(debug_level);
if (_nc_tracing) {
@@ -638,8 +852,8 @@ main(int argc, char *argv[])
*/
if (namelst && (!infodump && !capdump)) {
(void) fprintf(stderr,
- "Sorry, -e can't be used without -I or -C\n");
- cleanup(namelst);
+ "%s: Sorry, -e can't be used without -I or -C\n",
+ _nc_progname);
ExitProgram(EXIT_FAILURE);
}
#endif /* HAVE_BIG_CORE */
@@ -663,16 +877,16 @@ main(int argc, char *argv[])
if (access(termcap, F_OK) == 0) {
/* file exists */
source_file = termcap;
- } else if ((tmp_fp = open_tempfile(strcpy(my_tmpname,
- "/tmp/XXXXXX")))
- != 0) {
- source_file = my_tmpname;
- fprintf(tmp_fp, "%s\n", termcap);
- fclose(tmp_fp);
- tmp_fp = open_input(source_file);
- to_remove = source_file;
} else {
- failed("tmpnam");
+ if ((tmp_fp = open_tempfile(my_tmpname)) != 0) {
+ source_file = my_tmpname;
+ fprintf(tmp_fp, "%s\n", termcap);
+ fclose(tmp_fp);
+ tmp_fp = open_input(source_file, (char *) 0);
+ to_remove = source_file;
+ } else {
+ failed("tmpnam");
+ }
}
}
} else {
@@ -682,24 +896,28 @@ main(int argc, char *argv[])
_nc_progname,
_nc_progname,
usage_string);
- cleanup(namelst);
ExitProgram(EXIT_FAILURE);
}
}
- if (tmp_fp == 0)
- tmp_fp = open_input(source_file);
+ if (tmp_fp == 0) {
+ tmp_fp = open_input(source_file, my_altfile);
+ if (!strcmp(source_file, "-")) {
+ source_file = STDIN_NAME;
+ }
+ }
- if (infodump)
+ if (infodump) {
dump_init(tversion,
smart_defaults
? outform
: F_LITERAL,
- sortmode, width, debug_level, formatted);
- else if (capdump)
+ sortmode, width, height, debug_level, formatted);
+ } else if (capdump) {
dump_init(tversion,
outform,
- sortmode, width, debug_level, FALSE);
+ sortmode, width, height, debug_level, FALSE);
+ }
/* parse entries out of the source file */
_nc_set_source(source_file);
@@ -716,7 +934,6 @@ main(int argc, char *argv[])
/* do use resolution */
if (check_only || (!infodump && !capdump) || forceresolve) {
if (!_nc_resolve_uses2(TRUE, literal) && !check_only) {
- cleanup(namelst);
ExitProgram(EXIT_FAILURE);
}
}
@@ -750,7 +967,7 @@ main(int argc, char *argv[])
for_entry_list(qp) {
if (matches(namelst, qp->tterm.term_names)) {
- int j = qp->cend - qp->cstart;
+ long j = qp->cend - qp->cstart;
int len = 0;
/* this is in case infotocap() generates warnings */
@@ -767,7 +984,7 @@ main(int argc, char *argv[])
repair_acsc(&qp->tterm);
dump_entry(&qp->tterm, suppress_untranslatable,
limited, numbers, NULL);
- for (j = 0; j < (int) qp->nuses; j++)
+ for (j = 0; j < (long) qp->nuses; j++)
dump_uses(qp->uses[j].name, !capdump);
len = show_entry();
if (debug_level != 0 && !limited)
@@ -811,7 +1028,6 @@ main(int argc, char *argv[])
else
fprintf(log_fp, "No entries written\n");
}
- cleanup(namelst);
ExitProgram(EXIT_SUCCESS);
}
@@ -915,18 +1131,18 @@ keypad_final(const char *string)
return result;
}
-static int
+static long
keypad_index(const char *string)
{
char *test;
const char *list = "PQRSwxymtuvlqrsPpn"; /* app-keypad except "Enter" */
int ch;
- int result = -1;
+ long result = -1;
if ((ch = keypad_final(string)) != '\0') {
- test = strchr(list, ch);
+ test = (strchr) (list, ch);
if (test != 0)
- result = (test - list);
+ result = (long) (test - list);
}
return result;
}
@@ -1008,6 +1224,19 @@ check_ansi_cursor(char *list[4])
}
#define EXPECTED(name) if (!PRESENT(name)) _nc_warning("expected " #name)
+#define UNEXPECTED(name) if (PRESENT(name)) _nc_warning("unexpected " #name ", for %s", why)
+
+static void
+check_noaddress(TERMTYPE *tp, const char *why)
+{
+ UNEXPECTED(column_address);
+ UNEXPECTED(cursor_address);
+ UNEXPECTED(cursor_home);
+ UNEXPECTED(cursor_mem_address);
+ UNEXPECTED(cursor_to_ll);
+ UNEXPECTED(row_address);
+ UNEXPECTED(row_address);
+}
static void
check_cursor(TERMTYPE *tp)
@@ -1015,13 +1244,55 @@ check_cursor(TERMTYPE *tp)
int count;
char *list[4];
+ if (hard_copy) {
+ check_noaddress(tp, "hard_copy");
+ } else if (generic_type) {
+ check_noaddress(tp, "generic_type");
+ } else if (strchr(tp->term_names, '+') == 0) {
+ int y = 0;
+ int x = 0;
+ if (PRESENT(column_address))
+ ++y;
+ if (PRESENT(cursor_address))
+ y = x = 10;
+ if (PRESENT(cursor_home))
+ ++y, ++x;
+ if (PRESENT(cursor_mem_address))
+ y = x = 10;
+ if (PRESENT(cursor_to_ll))
+ ++y, ++x;
+ if (PRESENT(row_address))
+ ++x;
+ if (PRESENT(cursor_down))
+ ++y;
+ if (PRESENT(cursor_up))
+ ++y;
+ if (PRESENT(cursor_left))
+ ++x;
+ if (PRESENT(cursor_right))
+ ++x;
+ if (x < 2 && y < 2) {
+ _nc_warning("terminal lacks cursor addressing");
+ } else {
+ if (x < 2)
+ _nc_warning("terminal lacks cursor column-addressing");
+ if (y < 2)
+ _nc_warning("terminal lacks cursor row-addressing");
+ }
+ }
+
+ /* it is rare to have an insert-line feature without a matching delete */
+ ANDMISSING(parm_insert_line, insert_line);
+ ANDMISSING(parm_delete_line, delete_line);
+ ANDMISSING(parm_insert_line, parm_delete_line);
+
/* if we have a parameterized form, then the non-parameterized is easy */
ANDMISSING(parm_down_cursor, cursor_down);
ANDMISSING(parm_up_cursor, cursor_up);
ANDMISSING(parm_left_cursor, cursor_left);
ANDMISSING(parm_right_cursor, cursor_right);
- /* Given any of a set of cursor movement, the whole set should be present.
+ /* Given any of a set of cursor movement, the whole set should be present.
* Technically this is not true (we could use cursor_address to fill in
* unsupported controls), but it is likely.
*/
@@ -1097,11 +1368,11 @@ check_keypad(TERMTYPE *tp)
VALID_STRING(key_c1) &&
VALID_STRING(key_c3)) {
char final[MAX_KP + 1];
- int list[MAX_KP];
+ long list[MAX_KP];
int increase = 0;
int j, k, kk;
- int last;
- int test;
+ long last;
+ long test;
final[0] = keypad_final(key_a1);
final[1] = keypad_final(key_a3);
@@ -1149,19 +1420,19 @@ check_keypad(TERMTYPE *tp)
assert(strlen(show) < (MAX_KP * 4));
switch (kk) {
case 0:
- strcat(show, " ka1");
+ _nc_STRCAT(show, " ka1", sizeof(show));
break;
case 1:
- strcat(show, " ka3");
+ _nc_STRCAT(show, " ka3", sizeof(show));
break;
case 2:
- strcat(show, " kb2");
+ _nc_STRCAT(show, " kb2", sizeof(show));
break;
case 3:
- strcat(show, " kc1");
+ _nc_STRCAT(show, " kc1", sizeof(show));
break;
case 4:
- strcat(show, " kc3");
+ _nc_STRCAT(show, " kc3", sizeof(show));
break;
}
}
@@ -1176,18 +1447,24 @@ check_keypad(TERMTYPE *tp)
VALID_STRING(key_c3)) {
show[0] = '\0';
if (keypad_index(key_a1) >= 0)
- strcat(show, " ka1");
+ _nc_STRCAT(show, " ka1", sizeof(show));
if (keypad_index(key_a3) >= 0)
- strcat(show, " ka3");
+ _nc_STRCAT(show, " ka3", sizeof(show));
if (keypad_index(key_b2) >= 0)
- strcat(show, " kb2");
+ _nc_STRCAT(show, " kb2", sizeof(show));
if (keypad_index(key_c1) >= 0)
- strcat(show, " kc1");
+ _nc_STRCAT(show, " kc1", sizeof(show));
if (keypad_index(key_c3) >= 0)
- strcat(show, " kc3");
+ _nc_STRCAT(show, " kc3", sizeof(show));
if (*show != '\0')
_nc_warning("vt100 keypad map incomplete:%s", show);
}
+
+ /*
+ * These warnings are useful for consistency checks - it is possible that
+ * there are real terminals with mismatches in these
+ */
+ ANDMISSING(key_ic, key_dc);
}
static void
@@ -1216,6 +1493,74 @@ check_printer(TERMTYPE *tp)
ANDMISSING(parm_up_micro, micro_up);
}
+static bool
+uses_SGR_39_49(const char *value)
+{
+ return (strstr(value, "39;49") != 0
+ || strstr(value, "49;39") != 0);
+}
+
+/*
+ * Check consistency of termcap extensions related to "screen".
+ */
+static void
+check_screen(TERMTYPE *tp)
+{
+#if NCURSES_XNAMES
+ if (_nc_user_definable) {
+ int have_XT = tigetflag("XT");
+ int have_XM = tigetflag("XM");
+ int have_bce = back_color_erase;
+ bool have_kmouse = FALSE;
+ bool use_sgr_39_49 = FALSE;
+ char *name = _nc_first_name(tp->term_names);
+
+ if (!VALID_BOOLEAN(have_bce)) {
+ have_bce = FALSE;
+ }
+ if (!VALID_BOOLEAN(have_XM)) {
+ have_XM = FALSE;
+ }
+ if (!VALID_BOOLEAN(have_XT)) {
+ have_XT = FALSE;
+ }
+ if (VALID_STRING(key_mouse)) {
+ have_kmouse = !strcmp("\033[M", key_mouse);
+ }
+ if (VALID_STRING(orig_colors)) {
+ use_sgr_39_49 = uses_SGR_39_49(orig_colors);
+ } else if (VALID_STRING(orig_pair)) {
+ use_sgr_39_49 = uses_SGR_39_49(orig_pair);
+ }
+
+ if (have_XM && have_XT) {
+ _nc_warning("Screen's XT capability conflicts with XM");
+ } else if (have_XT
+ && strstr(name, "screen") != 0
+ && strchr(name, '.') != 0) {
+ _nc_warning("Screen's \"screen\" entries should not have XT set");
+ } else if (have_XT) {
+ if (!have_kmouse && have_bce) {
+ if (VALID_STRING(key_mouse)) {
+ _nc_warning("Value of kmous inconsistent with screen's usage");
+ } else {
+ _nc_warning("Expected kmous capability with XT");
+ }
+ }
+ if (!have_bce && max_colors > 0)
+ _nc_warning("Expected bce capability with XT");
+ if (!use_sgr_39_49 && have_bce && max_colors > 0)
+ _nc_warning("Expected orig_colors capability with XT to have 39/49 parameters");
+ if (VALID_STRING(to_status_line))
+ _nc_warning("\"tsl\" capability is redundant, given XT");
+ } else {
+ if (have_kmouse && !have_XM)
+ _nc_warning("Expected XT to be set, given kmous");
+ }
+ }
+#endif
+}
+
/*
* Returns the expected number of parameters for the given capability.
*/
@@ -1527,7 +1872,7 @@ static void
show_where(unsigned level)
{
if (_nc_tracing >= DEBUG_LEVEL(level)) {
- char my_name[256];
+ char my_name[MAX_NAME_SIZE];
_nc_get_type(my_name);
_tracef("\"%s\", line %d, '%s'",
_nc_get_source(),
@@ -1539,6 +1884,58 @@ show_where(unsigned level)
#define show_where(level) /* nothing */
#endif
+typedef struct {
+ int keycode;
+ const char *name;
+ const char *value;
+} NAME_VALUE;
+
+static NAME_VALUE *
+get_fkey_list(TERMTYPE *tp)
+{
+ NAME_VALUE *result = typeMalloc(NAME_VALUE, NUM_STRINGS(tp) + 1);
+ const struct tinfo_fkeys *all_fkeys = _nc_tinfo_fkeys;
+ int used = 0;
+ int j;
+
+ if (result == 0)
+ failed("get_fkey_list");
+
+ for (j = 0; all_fkeys[j].code; j++) {
+ char *a = tp->Strings[all_fkeys[j].offset];
+ if (VALID_STRING(a)) {
+ result[used].keycode = (int) all_fkeys[j].code;
+ result[used].name = strnames[all_fkeys[j].offset];
+ result[used].value = a;
+ ++used;
+ }
+ }
+#if NCURSES_XNAMES
+ for (j = STRCOUNT; j < NUM_STRINGS(tp); ++j) {
+ const char *name = ExtStrname(tp, j, strnames);
+ if (*name == 'k') {
+ result[used].keycode = -1;
+ result[used].name = name;
+ result[used].value = tp->Strings[j];
+ ++used;
+ }
+ }
+#endif
+ result[used].keycode = 0;
+ return result;
+}
+
+static void
+show_fkey_name(NAME_VALUE * data)
+{
+ if (data->keycode > 0) {
+ fprintf(stderr, " %s", keyname(data->keycode));
+ fprintf(stderr, " (capability \"%s\")", data->name);
+ } else {
+ fprintf(stderr, " capability \"%s\"", data->name);
+ }
+}
+
/* other sanity-checks (things that we don't want in the normal
* logic that reads a terminfo entry)
*/
@@ -1547,7 +1944,6 @@ check_termtype(TERMTYPE *tp, bool literal)
{
bool conflict = FALSE;
unsigned j, k;
- char fkeys[STRCOUNT];
/*
* A terminal entry may contain more than one keycode assigned to
@@ -1555,44 +1951,50 @@ check_termtype(TERMTYPE *tp, bool literal)
* return one (the last one assigned).
*/
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];
+ char *check = calloc((size_t) (NUM_STRINGS(tp) + 1), sizeof(char));
+ NAME_VALUE *given = get_fkey_list(tp);
+
+ if (check == 0)
+ failed("check_termtype");
+
+ for (j = 0; given[j].keycode; ++j) {
+ const char *a = given[j].value;
bool first = TRUE;
- if (!VALID_STRING(a))
- continue;
- for (k = j + 1; _nc_tinfo_fkeys[k].code; k++) {
- char *b = tp->Strings[_nc_tinfo_fkeys[k].offset];
- if (!VALID_STRING(b)
- || fkeys[k])
+
+ for (k = j + 1; given[k].keycode; k++) {
+ const char *b = given[k].value;
+ if (check[k])
continue;
if (!_nc_capcmp(a, b)) {
- fkeys[j] = 1;
- fkeys[k] = 1;
+ check[j] = 1;
+ check[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));
+ fprintf(stderr, "...");
+ show_fkey_name(given + j);
+ fprintf(stderr, " is the same as");
+ show_fkey_name(given + k);
first = FALSE;
} else {
- fprintf(stderr, ", %s",
- keyname((int) _nc_tinfo_fkeys[k].code));
+ fprintf(stderr, ", ");
+ show_fkey_name(given + k);
}
}
}
if (!first)
fprintf(stderr, "\n");
}
+ free(given);
+ free(check);
}
- for (j = 0; j < NUM_STRINGS(tp); j++) {
+ for_each_string(j, tp) {
char *a = tp->Strings[j];
if (VALID_STRING(a))
- check_params(tp, ExtStrname(tp, j, strnames), a);
+ check_params(tp, ExtStrname(tp, (int) j, strnames), a);
}
check_acs(tp);
@@ -1600,6 +2002,7 @@ check_termtype(TERMTYPE *tp, bool literal)
check_cursor(tp);
check_keypad(tp);
check_printer(tp);
+ check_screen(tp);
/*
* These may be mismatched because the terminal description relies on
diff --git a/contrib/ncurses/progs/toe.c b/contrib/ncurses/progs/toe.c
index 6f45992f7124..0d299b457dfb 100644
--- a/contrib/ncurses/progs/toe.c
+++ b/contrib/ncurses/progs/toe.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -44,12 +44,23 @@
#include <hashed_db.h>
#endif
-MODULE_ID("$Id: toe.c,v 1.52 2010/05/01 22:04:08 tom Exp $")
+MODULE_ID("$Id: toe.c,v 1.74 2013/12/15 01:08:28 tom Exp $")
#define isDotname(name) (!strcmp(name, ".") || !strcmp(name, ".."))
+typedef struct {
+ int db_index;
+ unsigned long checksum;
+ char *term_name;
+ char *description;
+} TERMDATA;
+
const char *_nc_progname;
+static TERMDATA *ptr_termdata; /* array of terminal data */
+static size_t use_termdata; /* actual usage in ptr_termdata[] */
+static size_t len_termdata; /* allocated size of ptr_termdata[] */
+
#if NO_LEAKS
#undef ExitProgram
static void ExitProgram(int code) GCC_NORETURN;
@@ -61,6 +72,8 @@ ExitProgram(int code)
}
#endif
+static void failed(const char *) GCC_NORETURN;
+
static void
failed(const char *msg)
{
@@ -68,6 +81,150 @@ failed(const char *msg)
ExitProgram(EXIT_FAILURE);
}
+static char *
+strmalloc(const char *value)
+{
+ char *result = strdup(value);
+ if (result == 0) {
+ failed("strmalloc");
+ }
+ return result;
+}
+
+static TERMDATA *
+new_termdata(void)
+{
+ size_t want = use_termdata + 1;
+
+ if (want >= len_termdata) {
+ len_termdata = (2 * want) + 10;
+ ptr_termdata = typeRealloc(TERMDATA, len_termdata, ptr_termdata);
+ if (ptr_termdata == 0)
+ failed("ptr_termdata");
+ }
+
+ return ptr_termdata + use_termdata++;
+}
+
+static int
+compare_termdata(const void *a, const void *b)
+{
+ const TERMDATA *p = (const TERMDATA *) a;
+ const TERMDATA *q = (const TERMDATA *) b;
+ int result = strcmp(p->term_name, q->term_name);
+
+ if (result == 0) {
+ result = (p->db_index - q->db_index);
+ }
+ return result;
+}
+
+/*
+ * Sort the array of TERMDATA and print it. If more than one database is being
+ * reported, add a column to show which database has a given entry.
+ */
+static void
+show_termdata(int eargc, char **eargv)
+{
+ int j, k;
+ size_t n;
+
+ if (use_termdata) {
+ if (eargc > 1) {
+ for (j = 0; j < eargc; ++j) {
+ for (k = 0; k <= j; ++k) {
+ printf("--");
+ }
+ printf("> ");
+ printf("%s\n", eargv[j]);
+ }
+ }
+ if (use_termdata > 1)
+ qsort(ptr_termdata, use_termdata, sizeof(TERMDATA), compare_termdata);
+ for (n = 0; n < use_termdata; ++n) {
+
+ /*
+ * If there is more than one database, show how they differ.
+ */
+ if (eargc > 1) {
+ unsigned long check = 0;
+ k = 0;
+ for (;;) {
+ for (; k < ptr_termdata[n].db_index; ++k) {
+ printf("--");
+ }
+
+ /*
+ * If this is the first entry, or its checksum differs
+ * from the first entry's checksum, print "*". Otherwise
+ * it looks enough like a duplicate to print "+".
+ */
+ printf("%c-", ((check == 0
+ || (check != ptr_termdata[n].checksum))
+ ? '*'
+ : '+'));
+ check = ptr_termdata[n].checksum;
+
+ ++k;
+ if ((n + 1) >= use_termdata
+ || strcmp(ptr_termdata[n].term_name,
+ ptr_termdata[n + 1].term_name)) {
+ break;
+ }
+ ++n;
+ }
+ for (; k < eargc; ++k) {
+ printf("--");
+ }
+ printf(":\t");
+ }
+
+ (void) printf("%-10s\t%s\n",
+ ptr_termdata[n].term_name,
+ ptr_termdata[n].description);
+ }
+ }
+}
+
+static void
+free_termdata(void)
+{
+ if (ptr_termdata != 0) {
+ while (use_termdata != 0) {
+ --use_termdata;
+ free(ptr_termdata[use_termdata].term_name);
+ free(ptr_termdata[use_termdata].description);
+ }
+ free(ptr_termdata);
+ ptr_termdata = 0;
+ }
+ use_termdata = 0;
+ len_termdata = 0;
+}
+
+static char **
+allocArgv(size_t count)
+{
+ char **result = typeCalloc(char *, count + 1);
+ if (result == 0)
+ failed("realloc eargv");
+
+ assert(result != 0);
+ return result;
+}
+
+static void
+freeArgv(char **argv)
+{
+ if (argv) {
+ int count = 0;
+ while (argv[count]) {
+ free(argv[count++]);
+ }
+ free(argv);
+ }
+}
+
#if USE_HASHED_DB
static bool
make_db_name(char *dst, const char *src, unsigned limit)
@@ -75,67 +232,100 @@ make_db_name(char *dst, const char *src, unsigned limit)
static const char suffix[] = DBM_SUFFIX;
bool result = FALSE;
- unsigned lens = sizeof(suffix) - 1;
- unsigned size = strlen(src);
- unsigned need = lens + size;
+ size_t lens = sizeof(suffix) - 1;
+ size_t size = strlen(src);
+ size_t 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);
+ && !strcmp(src + size - lens, suffix)) {
+ _nc_STRCPY(dst, src, PATH_MAX);
+ } else {
+ _nc_SPRINTF(dst, _nc_SLIMIT(PATH_MAX) "%s%s", src, suffix);
+ }
result = TRUE;
}
return result;
}
#endif
-static bool
-is_database(const char *path)
+typedef void (DescHook) (int /* db_index */ ,
+ int /* db_limit */ ,
+ const char * /* term_name */ ,
+ TERMTYPE * /* term */ );
+
+static const char *
+term_description(TERMTYPE *tp)
{
- 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;
+ const char *desc;
+
+ if (tp->term_names == 0
+ || (desc = strrchr(tp->term_names, '|')) == 0
+ || (*++desc == '\0')) {
+ desc = "(No description)";
}
-#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;
- }
+
+ return desc;
+}
+
+/* display a description for the type */
+static void
+deschook(int db_index, int db_limit, const char *term_name, TERMTYPE *tp)
+{
+ (void) db_index;
+ (void) db_limit;
+ (void) printf("%-10s\t%s\n", term_name, term_description(tp));
+}
+
+static unsigned long
+string_sum(const char *value)
+{
+ unsigned long result = 0;
+
+ if ((intptr_t) value == (intptr_t) (-1)) {
+ result = ~result;
+ } else if (value) {
+ while (*value) {
+ result += UChar(*value);
+ ++value;
}
}
-#endif
return result;
}
-static void
-deschook(const char *cn, TERMTYPE *tp)
-/* display a description for the type */
+static unsigned long
+checksum_of(TERMTYPE *tp)
{
- const char *desc;
+ unsigned long result = string_sum(tp->term_names);
+ unsigned i;
- if ((desc = strrchr(tp->term_names, '|')) == 0 || *++desc == '\0')
- desc = "(No description)";
+ for (i = 0; i < NUM_BOOLEANS(tp); i++) {
+ result += (unsigned long) (tp->Booleans[i]);
+ }
+ for (i = 0; i < NUM_NUMBERS(tp); i++) {
+ result += (unsigned long) (tp->Numbers[i]);
+ }
+ for (i = 0; i < NUM_STRINGS(tp); i++) {
+ result += string_sum(tp->Strings[i]);
+ }
+ return result;
+}
+
+/* collect data, to sort before display */
+static void
+sorthook(int db_index, int db_limit, const char *term_name, TERMTYPE *tp)
+{
+ TERMDATA *data = new_termdata();
- (void) printf("%-10s\t%s\n", cn, desc);
+ data->db_index = db_index;
+ data->checksum = ((db_limit > 1) ? checksum_of(tp) : 0);
+ data->term_name = strmalloc(term_name);
+ data->description = strmalloc(term_description(tp));
}
-#if USE_TERMCAP
+#if NCURSES_USE_TERMCAP
static void
-show_termcap(char *buffer,
- void (*hook) (const char *, TERMTYPE *tp))
+show_termcap(int db_index, int db_limit, char *buffer, DescHook hook)
{
TERMTYPE data;
char *next = strchr(buffer, ':');
@@ -149,26 +339,42 @@ show_termcap(char *buffer,
if (last)
++last;
- data.term_names = strdup(buffer);
+ memset(&data, 0, sizeof(data));
+ data.term_names = strmalloc(buffer);
while ((next = strtok(list, "|")) != 0) {
if (next != last)
- hook(next, &data);
+ hook(db_index, db_limit, next, &data);
list = 0;
}
free(data.term_names);
}
#endif
+#if NCURSES_USE_DATABASE
+static char *
+copy_entryname(DIRENT * src)
+{
+ size_t len = NAMLEN(src);
+ char *result = malloc(len + 1);
+ if (result == 0)
+ failed("copy entryname");
+ memcpy(result, src->d_name, len);
+ result[len] = '\0';
+
+ return result;
+}
+#endif
+
static int
typelist(int eargc, char *eargv[],
- bool verbosity,
- void (*hook) (const char *, TERMTYPE *tp))
+ int verbosity,
+ DescHook hook)
/* apply a function to each entry in given terminfo directories */
{
int i;
for (i = 0; i < eargc; i++) {
-#if USE_DATABASE
+#if NCURSES_USE_DATABASE
if (_nc_is_dir_path(eargv[i])) {
char *cwd_buf = 0;
DIR *termdir;
@@ -179,28 +385,35 @@ typelist(int eargc, char *eargv[],
(void) fprintf(stderr,
"%s: can't open terminfo directory %s\n",
_nc_progname, eargv[i]);
- return (EXIT_FAILURE);
- } else if (verbosity)
+ continue;
+ }
+
+ if (verbosity)
(void) printf("#\n#%s:\n#\n", eargv[i]);
while ((subdir = readdir(termdir)) != 0) {
- size_t len = NAMLEN(subdir);
- size_t cwd_len = len + strlen(eargv[i]) + 3;
- char name_1[PATH_MAX];
+ size_t cwd_len;
+ char *name_1;
DIR *entrydir;
DIRENT *entry;
+ name_1 = copy_entryname(subdir);
+ if (isDotname(name_1)) {
+ free(name_1);
+ continue;
+ }
+
+ cwd_len = NAMLEN(subdir) + strlen(eargv[i]) + 3;
cwd_buf = typeRealloc(char, cwd_len, cwd_buf);
if (cwd_buf == 0)
failed("realloc cwd_buf");
assert(cwd_buf != 0);
- strncpy(name_1, subdir->d_name, len)[len] = '\0';
- if (isDotname(name_1))
- continue;
+ _nc_SPRINTF(cwd_buf, _nc_SLIMIT(cwd_len)
+ "%s/%s/", eargv[i], name_1);
+ free(name_1);
- (void) sprintf(cwd_buf, "%s/%.*s/", eargv[i], (int) len, name_1);
if (chdir(cwd_buf) != 0)
continue;
@@ -210,15 +423,16 @@ typelist(int eargc, char *eargv[],
continue;
}
while ((entry = readdir(entrydir)) != 0) {
- char name_2[PATH_MAX];
+ char *name_2;
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))
+ name_2 = copy_entryname(entry);
+ if (isDotname(name_2) || !_nc_is_file_path(name_2)) {
+ free(name_2);
continue;
+ }
status = _nc_read_file_entry(name_2, &lterm);
if (status <= 0) {
@@ -226,6 +440,10 @@ typelist(int eargc, char *eargv[],
(void) fprintf(stderr,
"%s: couldn't open terminfo file %s.\n",
_nc_progname, name_2);
+ free(cwd_buf);
+ free(name_2);
+ closedir(entrydir);
+ closedir(termdir);
return (EXIT_FAILURE);
}
@@ -233,21 +451,26 @@ typelist(int eargc, char *eargv[],
cn = _nc_first_name(lterm.term_names);
if (!strcmp(cn, name_2)) {
/* apply the selected hook function */
- (*hook) (cn, &lterm);
+ hook(i, eargc, cn, &lterm);
}
_nc_free_termtype(&lterm);
+ free(name_2);
}
closedir(entrydir);
}
closedir(termdir);
if (cwd_buf != 0)
free(cwd_buf);
+ continue;
}
#if USE_HASHED_DB
else {
DB *capdbp;
char filename[PATH_MAX];
+ if (verbosity)
+ (void) printf("#\n#%s:\n#\n", eargv[i]);
+
if (make_db_name(filename, eargv[i], sizeof(filename))) {
if ((capdbp = _nc_db_open(filename, FALSE)) != 0) {
DBT key, data;
@@ -265,7 +488,7 @@ typelist(int eargc, char *eargv[],
/* only visit things once, by primary name */
cn = _nc_first_name(lterm.term_names);
/* apply the selected hook function */
- (*hook) (cn, &lterm);
+ hook(i, eargc, cn, &lterm);
_nc_free_termtype(&lterm);
}
}
@@ -273,44 +496,51 @@ typelist(int eargc, char *eargv[],
}
_nc_db_close(capdbp);
+ continue;
}
}
}
#endif
#endif
-#if USE_TERMCAP
+#if NCURSES_USE_TERMCAP
#if HAVE_BSD_CGETENT
- char *db_array[2];
- char *buffer = 0;
+ {
+ CGETENT_CONST char *db_array[2];
+ char *buffer = 0;
- if (verbosity)
- (void) printf("#\n#%s:\n#\n", eargv[i]);
+ if (verbosity)
+ (void) printf("#\n#%s:\n#\n", eargv[i]);
- db_array[0] = eargv[i];
- db_array[1] = 0;
+ 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);
+ if (cgetfirst(&buffer, db_array) > 0) {
+ show_termcap(i, eargc, buffer, hook);
free(buffer);
+ while (cgetnext(&buffer, db_array) > 0) {
+ show_termcap(i, eargc, buffer, hook);
+ free(buffer);
+ }
+ cgetclose();
+ continue;
}
}
- cgetclose();
#else
/* scan termcap text-file only */
if (_nc_is_file_path(eargv[i])) {
char buffer[2048];
FILE *fp;
+ if (verbosity)
+ (void) printf("#\n#%s:\n#\n", eargv[i]);
+
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);
+ show_termcap(i, eargc, buffer, hook);
}
fclose(fp);
}
@@ -319,13 +549,18 @@ typelist(int eargc, char *eargv[],
#endif
}
+ if (hook == sorthook) {
+ show_termdata(eargc, eargv);
+ free_termdata();
+ }
+
return (EXIT_SUCCESS);
}
static void
usage(void)
{
- (void) fprintf(stderr, "usage: %s [-ahuUV] [-v n] [file...]\n", _nc_progname);
+ (void) fprintf(stderr, "usage: %s [-ahsuUV] [-v n] [file...]\n", _nc_progname);
ExitProgram(EXIT_FAILURE);
}
@@ -340,23 +575,24 @@ main(int argc, char *argv[])
unsigned i;
int code;
int this_opt, last_opt = '?';
- int v_opt = 0;
+ unsigned v_opt = 0;
+ DescHook *hook = deschook;
_nc_progname = _nc_rootname(argv[0]);
- while ((this_opt = getopt(argc, argv, "0123456789ahu:vU:V")) != -1) {
+ while ((this_opt = getopt(argc, argv, "0123456789ahsu:vU:V")) != -1) {
/* handle optional parameter */
if (isdigit(this_opt)) {
switch (last_opt) {
case 'v':
- v_opt = (this_opt - '0');
+ v_opt = (unsigned) (this_opt - '0');
break;
default:
if (isdigit(last_opt))
v_opt *= 10;
else
v_opt = 0;
- v_opt += (this_opt - '0');
+ v_opt += (unsigned) (this_opt - '0');
last_opt = this_opt;
}
continue;
@@ -368,6 +604,9 @@ main(int argc, char *argv[])
case 'h':
header = TRUE;
break;
+ case 's':
+ hook = sorthook;
+ break;
case 'u':
direct_dependencies = TRUE;
report_file = optarg;
@@ -450,7 +689,7 @@ main(int argc, char *argv[])
* If we get this far, user wants a simple terminal type listing.
*/
if (optind < argc) {
- code = typelist(argc - optind, argv + optind, header, deschook);
+ code = typelist(argc - optind, argv + optind, header, hook);
} else if (all_dirs) {
DBDIRS state;
int offset;
@@ -460,64 +699,41 @@ main(int argc, char *argv[])
code = EXIT_FAILURE;
for (pass = 0; pass < 2; ++pass) {
- unsigned count = 0;
+ size_t 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[count] = strmalloc(path);
}
+ ++count;
}
if (!pass) {
- eargv = typeCalloc(char *, count + 1);
+ eargv = allocArgv(count);
if (eargv == 0)
- failed("realloc eargv");
-
- assert(eargv != 0);
+ failed("eargv");
} else {
- code = typelist((int) count, eargv, header, deschook);
- while (count-- > 0)
- free(eargv[count]);
- free(eargv);
+ code = typelist((int) count, eargv, header, hook);
+ freeArgv(eargv);
}
}
} else {
DBDIRS state;
int offset;
const char *path;
- char *eargv[3];
- int count = 0;
+ char **eargv = allocArgv((size_t) 2);
+ size_t count = 0;
+ if (eargv == 0)
+ failed("eargv");
_nc_first_db(&state, &offset);
- while ((path = _nc_next_db(&state, &offset)) != 0) {
- if (is_database(path)) {
- eargv[count++] = strdup(path);
- break;
- }
+ if ((path = _nc_next_db(&state, &offset)) != 0) {
+ eargv[count++] = strmalloc(path);
}
- eargv[count] = 0;
- code = typelist(count, eargv, header, deschook);
+ code = typelist((int) count, eargv, header, hook);
- while (count-- > 0)
- free(eargv[count]);
+ freeArgv(eargv);
}
_nc_last_db();
diff --git a/contrib/ncurses/progs/tput.c b/contrib/ncurses/progs/tput.c
index 2e67cfecbef4..6652d3450a2d 100644
--- a/contrib/ncurses/progs/tput.c
+++ b/contrib/ncurses/progs/tput.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -47,7 +47,7 @@
#endif
#include <transform.h>
-MODULE_ID("$Id: tput.c,v 1.46 2010/01/09 16:53:24 tom Exp $")
+MODULE_ID("$Id: tput.c,v 1.49 2013/09/28 20:57:25 tom Exp $")
#define PUTS(s) fputs(s, stdout)
#define PUTCHAR(c) putchar(c)
@@ -94,9 +94,6 @@ check_aliases(const char *name)
* Lookup the type of call we should make to tparm(). This ignores the actual
* terminfo capability (bad, because it is not extensible), but makes this
* code portable to platforms where sizeof(int) != sizeof(char *).
- *
- * FIXME: If we want extensibility, analyze the capability string as we do
- * in tparm() to decide how to parse the varargs list.
*/
static TParams
tparm_type(const char *name)
@@ -306,7 +303,7 @@ tput(int argc, char *argv[])
} else if (s != ABSENT_STRING) {
if (argc > 1) {
int k;
- int popcount;
+ int ignored;
long numbers[1 + NUM_PARM];
char *strings[1 + NUM_PARM];
char *p_is_s[NUM_PARM];
@@ -337,8 +334,8 @@ tput(int argc, char *argv[])
break;
case Numbers:
default:
- (void) _nc_tparm_analyze(s, p_is_s, &popcount);
-#define myParam(n) (p_is_s[n - 1] != 0 ? ((long) strings[n]) : numbers[n])
+ (void) _nc_tparm_analyze(s, p_is_s, &ignored);
+#define myParam(n) (p_is_s[n - 1] != 0 ? ((TPARM_ARG) strings[n]) : numbers[n])
s = TPARM_9(s,
myParam(1),
myParam(2),
diff --git a/contrib/ncurses/progs/transform.c b/contrib/ncurses/progs/transform.c
index 75f4573357c3..c0557f0b98fb 100644
--- a/contrib/ncurses/progs/transform.c
+++ b/contrib/ncurses/progs/transform.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 2009-2010,2011 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -34,21 +34,21 @@
#include <transform.h>
-MODULE_ID("$Id: transform.c,v 1.2 2010/09/04 21:16:17 tom Exp $")
+MODULE_ID("$Id: transform.c,v 1.3 2011/05/14 22:41:17 tom Exp $")
#ifdef SUFFIX_IGNORED
static void
-trim_suffix(const char *a, unsigned *len)
+trim_suffix(const char *a, size_t *len)
{
const char ignore[] = SUFFIX_IGNORED;
if (sizeof(ignore) != 0) {
bool trim = FALSE;
- unsigned need = (sizeof(ignore) - 1);
+ size_t need = (sizeof(ignore) - 1);
if (*len > need) {
- unsigned first = *len - need;
- unsigned n;
+ size_t first = *len - need;
+ size_t n;
trim = TRUE;
for (n = first; n < *len; ++n) {
if (tolower(UChar(a[n])) != tolower(UChar(ignore[n - first]))) {
@@ -69,8 +69,8 @@ trim_suffix(const char *a, unsigned *len)
bool
same_program(const char *a, const char *b)
{
- unsigned len_a = strlen(a);
- unsigned len_b = strlen(b);
+ size_t len_a = strlen(a);
+ size_t len_b = strlen(b);
trim_suffix(a, &len_a);
trim_suffix(b, &len_b);
diff --git a/contrib/ncurses/progs/tset.c b/contrib/ncurses/progs/tset.c
index 084e41d6db24..f01acd721091 100644
--- a/contrib/ncurses/progs/tset.c
+++ b/contrib/ncurses/progs/tset.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -119,7 +119,7 @@ char *ttyname(int fd);
#include <dump_entry.h>
#include <transform.h>
-MODULE_ID("$Id: tset.c,v 1.82 2010/05/01 21:42:46 tom Exp $")
+MODULE_ID("$Id: tset.c,v 1.93 2013/12/15 01:05:56 tom Exp $")
/*
* SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
@@ -148,6 +148,10 @@ extern char **environ;
#undef CTRL
#define CTRL(x) ((x) & 0x1f)
+static void failed(const char *) GCC_NORETURN;
+static void exit_error(void) GCC_NORETURN;
+static void err(const char *,...) GCC_NORETURN;
+
const char *_nc_progname = "tset";
static TTY mode, oldmode, original;
@@ -160,7 +164,10 @@ static bool isreset = FALSE; /* invoked as reset */
static int terasechar = -1; /* new erase character */
static int intrchar = -1; /* new interrupt character */
static int tkillchar = -1; /* new kill character */
+
+#if HAVE_SIZECHANGE
static int tlines, tcolumns; /* window size */
+#endif
#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c))
@@ -203,13 +210,13 @@ static void
failed(const char *msg)
{
char temp[BUFSIZ];
- unsigned len = strlen(_nc_progname) + 2;
+ size_t len = strlen(_nc_progname) + 2;
if ((int) len < (int) sizeof(temp) - 12) {
- strcpy(temp, _nc_progname);
- strcat(temp, ": ");
+ _nc_STRCPY(temp, _nc_progname, sizeof(temp));
+ _nc_STRCAT(temp, ": ", sizeof(temp));
} else {
- strcpy(temp, "tset: ");
+ _nc_STRCPY(temp, "tset: ", sizeof(temp));
}
perror(strncat(temp, msg, sizeof(temp) - strlen(temp) - 2));
exit_error();
@@ -467,9 +474,6 @@ add_mapping(const char *port, char *arg)
mapp->speed = tbaudrate(p);
}
- if (arg == (char *) 0) /* Non-optional type. */
- goto badmopt;
-
mapp->type = arg;
/* Terminate porttype, if specified. */
@@ -527,19 +531,19 @@ mapped(const char *type)
match = TRUE;
break;
case EQ:
- match = (ospeed == mapp->speed);
+ match = ((int) ospeed == mapp->speed);
break;
case GE:
- match = (ospeed >= mapp->speed);
+ match = ((int) ospeed >= mapp->speed);
break;
case GT:
- match = (ospeed > mapp->speed);
+ match = ((int) ospeed > mapp->speed);
break;
case LE:
- match = (ospeed <= mapp->speed);
+ match = ((int) ospeed <= mapp->speed);
break;
case LT:
- match = (ospeed < mapp->speed);
+ match = ((int) ospeed < mapp->speed);
break;
default:
match = FALSE;
@@ -631,13 +635,14 @@ 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 && !_nc_is_abs_path(p)) {
+ found:
+ if ((p = getenv("TERMCAP")) != 0 && !_nc_is_abs_path(p)) {
/* 'unsetenv("TERMCAP")' is not portable.
* The 'environ' array is better.
*/
int n;
for (n = 0; environ[n] != 0; n++) {
- if (!strncmp("TERMCAP=", environ[n], 8)) {
+ if (!strncmp("TERMCAP=", environ[n], (size_t) 8)) {
while ((environ[n] = environ[n + 1]) != 0) {
n++;
}
@@ -788,14 +793,14 @@ reset_mode(void)
mode.c_cc[VWERASE] = CHK(mode.c_cc[VWERASE], CWERASE);
#endif
- mode.c_iflag &= ~(IGNBRK | PARMRK | INPCK | ISTRIP | INLCR | IGNCR
+ mode.c_iflag &= ~((unsigned) (IGNBRK | PARMRK | INPCK | ISTRIP | INLCR | IGNCR
#ifdef IUCLC
- | IUCLC
+ | IUCLC
#endif
#ifdef IXANY
- | IXANY
+ | IXANY
#endif
- | IXOFF);
+ | IXOFF));
mode.c_iflag |= (BRKINT | IGNPAR | ICRNL | IXON
#ifdef IMAXBEL
@@ -803,44 +808,44 @@ reset_mode(void)
#endif
);
- mode.c_oflag &= ~(0
+ mode.c_oflag &= ~((unsigned) (0
#ifdef OLCUC
- | OLCUC
+ | OLCUC
#endif
#ifdef OCRNL
- | OCRNL
+ | OCRNL
#endif
#ifdef ONOCR
- | ONOCR
+ | ONOCR
#endif
#ifdef ONLRET
- | ONLRET
+ | ONLRET
#endif
#ifdef OFILL
- | OFILL
+ | OFILL
#endif
#ifdef OFDEL
- | OFDEL
+ | OFDEL
#endif
#ifdef NLDLY
- | NLDLY
+ | NLDLY
#endif
#ifdef CRDLY
- | CRDLY
+ | CRDLY
#endif
#ifdef TABDLY
- | TABDLY
+ | TABDLY
#endif
#ifdef BSDLY
- | BSDLY
+ | BSDLY
#endif
#ifdef VTDLY
- | VTDLY
+ | VTDLY
#endif
#ifdef FFDLY
- | FFDLY
+ | FFDLY
#endif
- );
+ ));
mode.c_oflag |= (OPOST
#ifdef ONLCR
@@ -848,19 +853,19 @@ reset_mode(void)
#endif
);
- mode.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD | CLOCAL);
+ mode.c_cflag &= ~((unsigned) (CSIZE | CSTOPB | PARENB | PARODD | CLOCAL));
mode.c_cflag |= (CS8 | CREAD);
- mode.c_lflag &= ~(ECHONL | NOFLSH
+ mode.c_lflag &= ~((unsigned) (ECHONL | NOFLSH
#ifdef TOSTOP
- | TOSTOP
+ | TOSTOP
#endif
#ifdef ECHOPTR
- | ECHOPRT
+ | ECHOPRT
#endif
#ifdef XCASE
- | XCASE
+ | XCASE
#endif
- );
+ ));
mode.c_lflag |= (ISIG | ICANON | ECHO | ECHOE | ECHOK
#ifdef ECHOCTL
@@ -907,14 +912,23 @@ static void
set_control_chars(void)
{
#ifdef TERMIOS
- if (DISABLED(mode.c_cc[VERASE]) || terasechar >= 0)
- mode.c_cc[VERASE] = (terasechar >= 0) ? terasechar : default_erase();
+ if (DISABLED(mode.c_cc[VERASE]) || terasechar >= 0) {
+ mode.c_cc[VERASE] = UChar((terasechar >= 0)
+ ? terasechar
+ : default_erase());
+ }
- if (DISABLED(mode.c_cc[VINTR]) || intrchar >= 0)
- mode.c_cc[VINTR] = (intrchar >= 0) ? intrchar : CINTR;
+ if (DISABLED(mode.c_cc[VINTR]) || intrchar >= 0) {
+ mode.c_cc[VINTR] = UChar((intrchar >= 0)
+ ? intrchar
+ : CINTR);
+ }
- if (DISABLED(mode.c_cc[VKILL]) || tkillchar >= 0)
- mode.c_cc[VKILL] = (tkillchar >= 0) ? tkillchar : CKILL;
+ if (DISABLED(mode.c_cc[VKILL]) || tkillchar >= 0) {
+ mode.c_cc[VKILL] = UChar((tkillchar >= 0)
+ ? tkillchar
+ : CKILL);
+ }
#endif
}
@@ -970,9 +984,9 @@ set_conversions(void)
if (newline != (char *) 0 && newline[0] == '\n' && !newline[1]) {
/* Newline, not linefeed. */
#ifdef ONLCR
- mode.c_oflag &= ~ONLCR;
+ mode.c_oflag &= ~((unsigned) ONLCR);
#endif
- mode.c_iflag &= ~ICRNL;
+ mode.c_iflag &= ~((unsigned) ICRNL);
}
#ifdef __OBSOLETE__
if (tgetflag("HD")) /* Half duplex. */
@@ -1043,11 +1057,18 @@ set_tabs(void)
{
if (set_tab && clear_all_tabs) {
int c;
+ int lim =
+#if HAVE_SIZECHANGE
+ tcolumns
+#else
+ columns
+#endif
+ ;
(void) putc('\r', stderr); /* Force to left margin. */
tputs(clear_all_tabs, 0, outc);
- for (c = 8; c < tcolumns; c += 8) {
+ for (c = 8; c < lim; c += 8) {
/* Get to the right column. In BSD tset, this
* used to try a bunch of half-clever things
* with cup and hpa, for an average saving of
@@ -1273,10 +1294,10 @@ main(int argc, char **argv)
(void) get_termcap_entry(*argv);
if (!noset) {
+#if HAVE_SIZECHANGE
tcolumns = columns;
tlines = lines;
-#if HAVE_SIZECHANGE
if (opt_w) {
STRUCT_WINSIZE win;
/* Set window size if not set already */