ncurses 5.9 - patch 20120428
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 29 Apr 2012 00:54:13 +0000 (00:54 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 29 Apr 2012 00:54:13 +0000 (00:54 +0000)
+ 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.

NEWS
dist.mk
doc/html/ncurses-intro.html
doc/ncurses-intro.doc
man/curs_inopts.3x
misc/terminfo.src
ncurses/tinfo/comp_scan.c
ncurses/trace/lib_trace.c
progs/tic.c

diff --git a/NEWS b/NEWS
index 1f94738c50f050f47c401f15a6664fac3b764195..d69e57e1b31c4a714e5f5e320694b058f050eacd 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.1896 2012/04/21 20:09:09 tom Exp $
+-- $Id: NEWS,v 1.1899 2012/04/28 22:50:44 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -45,6 +45,21 @@ 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.
 
+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
diff --git a/dist.mk b/dist.mk
index 93e3ed7226cd7b6797f1ebe77e5a400cad0b50cb..72872a1b6b4b459900d14ba50a62dab4ee5b67c3 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -25,7 +25,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: dist.mk,v 1.870 2012/04/21 15:29:45 tom Exp $
+# $Id: dist.mk,v 1.871 2012/04/28 15:31:11 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -37,7 +37,7 @@ SHELL = /bin/sh
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 5
 NCURSES_MINOR = 9
-NCURSES_PATCH = 20120421
+NCURSES_PATCH = 20120428
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
index fc529f293e23d63d704a6a57dedfd35b303ef63a..5930f66fda6c12b49dba9198f43ca93326cf1ebd 100644 (file)
@@ -1,8 +1,8 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <!--
-  $Id: ncurses-intro.html,v 1.44 2010/12/04 16:46:22 tom Exp $
+  $Id: ncurses-intro.html,v 1.45 2012/04/28 21:39:17 Paul.Waring Exp $
   ****************************************************************************
-  * 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            *
@@ -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;
 
index 85179d1666961b41f7f6e9e540502a804d27e20d..b44800503a32e8ad6e0965ffefc0af3b5a5c37b3 100644 (file)
@@ -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);
index aecb2e3714f8177c8a8d9c7514bad6c7ab9cee39..372010bc337385d1ed27fbaf7a0529c19860051e 100644 (file)
@@ -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,7 +26,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_inopts.3x,v 1.15 2010/12/04 18:40:45 tom Exp $
+.\" $Id: curs_inopts.3x,v 1.17 2012/04/28 19:09:15 tom Exp $
 .TH curs_inopts 3X ""
 .na
 .hy 0
@@ -223,6 +223,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 +269,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)
index 97af71dfd1859285b99f8268c283fe6ab6fcba78..c3b38fad3765da5e32a2ac67c2c8c724df2d87dc 100644 (file)
@@ -6,8 +6,8 @@
 # Report bugs and new terminal descriptions to
 #      bug-ncurses@gnu.org
 #
-#      $Revision: 1.437 $
-#      $Date: 2012/04/21 19:07:11 $
+#      $Revision: 1.440 $
+#      $Date: 2012/04/28 21:37:23 $
 #
 # 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
@@ -2524,6 +2524,7 @@ vt220|vt200|dec vt220,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
        smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=ansi+pp,
+       use=ansi+enq,
 vt220-w|vt200-w|DEC vt220 in wide mode,
        cols#132,
        rs3=\E[?3h, use=vt220,
@@ -2628,7 +2629,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,
@@ -2637,9 +2638,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~,
@@ -2656,7 +2656,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=dec+pp, 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,
@@ -2766,7 +2766,7 @@ 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)
@@ -2775,15 +2775,15 @@ vt420|DEC VT420,
        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,
-       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,
+       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~,
@@ -2797,7 +2797,7 @@ vt420|DEC VT420,
        sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p1%p3%|%t;7%;m%?%p9%t\E(0%e\E(B%;$<2>,
        sgr0=\E[m\E(B$<2>, smacs=\E(0$<2>, smam=\E[?7h,
        smir=\E[4h, smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
-       use=ansi+pp,
+       use=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
@@ -2895,35 +2895,11 @@ vt520|DEC VT520,
        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,
+       smso=\E[7m, smul=\E[4m, use=ansi+tabs, use=ansi+enq,
+       use=dec+sl,
 
-# (vt525: I added <rmam>/<smam> based on the init string;
-# removed <rmso>=\E[m, <rmul>=\E[m, added <sc> -- esr)
-# added msgr -TD
 vt525|DEC VT525,
-       am, mir, msgr, 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
 #
@@ -2987,7 +2963,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,
@@ -2997,11 +2973,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,
@@ -3022,7 +2997,7 @@ 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, 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,
@@ -3801,11 +3776,9 @@ xterm-utf8|xterm with no VT100 line-drawing in UTF-8 mode,
 #    don't want to mess with icon-name when using those window managers.
 xterm+sl|access X title line and icon name,
        hs,
-       wsl#40,
        dsl=\E]0;\007, fsl=^G, tsl=\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;,
 
 # In contrast, this block can be used for a DEC vt320 and up.  There are two
@@ -3835,7 +3808,7 @@ xterm+sl-twm|access X title line (pacify twm-descended window managers),
 # can be used for this purpose is HPA, e.g., \E[5d to go to column 5.
 #
 dec+sl|DEC VTxx status line,
-       hs,
+       eslok, hs,
        dsl=\E[1$~, fsl=\E[0$}, tsl=\E[2$~\E[1$}\E[%i%p1%d`,
 
 #
@@ -3912,6 +3885,7 @@ xtermc|xterm terminal emulator (color),
 # 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,
@@ -5242,18 +5216,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~,
@@ -5267,8 +5241,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,
@@ -5399,6 +5373,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,
@@ -17426,6 +17404,7 @@ nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-char
        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,
        hs,
        wsl#50,
@@ -22879,4 +22858,13 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #        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
+#
 ######## SHANTIH!  SHANTIH!  SHANTIH!
index dea8259100a13f24939e9698160095cd7a37b057..058cf9ab21b5c74794619ebbbe0dd71983756d32 100644 (file)
@@ -50,7 +50,7 @@
 #include <ctype.h>
 #include <tic.h>
 
-MODULE_ID("$Id: comp_scan.c,v 1.99 2012/04/01 20:37:08 tom Exp $")
+MODULE_ID("$Id: comp_scan.c,v 1.100 2012/04/29 00:20:51 tom Exp $")
 
 /*
  * Maximum length of string capability we'll accept before raising an error.
@@ -530,7 +530,7 @@ _nc_get_token(bool silent)
                                                   _nc_get_hash_table(FALSE))) {
                                    capability = TRUE;
                                }
-                               *s = c0;
+                               *s = (char) c0;
                            }
                        }
                        if (capability) {
index f4b7ab92a202cf4dfee36ef1052c13694ba3efdb..00431d489b9b60a9aed497fde729378d886495eb 100644 (file)
@@ -47,7 +47,7 @@
 
 #include <ctype.h>
 
-MODULE_ID("$Id: lib_trace.c,v 1.80 2012/02/22 22:26:58 tom Exp $")
+MODULE_ID("$Id: lib_trace.c,v 1.81 2012/04/29 00:20:43 tom Exp $")
 
 NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */
 
@@ -229,7 +229,7 @@ NCURSES_EXPORT(char)
 _nc_retrace_char(int code)
 {
     T((T_RETURN("%c"), code));
-    return code;
+    return (char) code;
 }
 
 /* Trace 'int' return-values */
index 28e48738b300163108736e228551fd433c73ea38..d96555e9bee6a11dc34018b438d2ced1245e210a 100644 (file)
@@ -46,7 +46,7 @@
 #include <hashed_db.h>
 #include <transform.h>
 
-MODULE_ID("$Id: tic.c,v 1.170 2012/04/21 19:59:53 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.176 2012/04/29 00:23:38 tom Exp $")
 
 #define STDIN_NAME "<stdin>"
 
@@ -1790,7 +1790,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(),
@@ -1802,6 +1802,55 @@ 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;
+
+    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)
  */
@@ -1810,7 +1859,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
@@ -1818,41 +1866,44 @@ 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);
+
+       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, (int) j, strnames), a);