Author: peter
Date: Sun Dec  8 00:08:03 2013
New Revision: 259088
URL: http://svnweb.freebsd.org/changeset/base/259088

Log:
  Vendor import nvi-2.1.2-c80f493b038 a multikey mapping fix
  
  PR:           bin/182463

Modified:
  head/contrib/nvi/cl/cl_term.c
  head/contrib/nvi/common/key.c
  head/contrib/nvi/common/key.h
Directory Properties:
  head/contrib/nvi/   (props changed)

Modified: head/contrib/nvi/cl/cl_term.c
==============================================================================
--- head/contrib/nvi/cl/cl_term.c       Sun Dec  8 00:05:31 2013        
(r259087)
+++ head/contrib/nvi/cl/cl_term.c       Sun Dec  8 00:08:03 2013        
(r259088)
@@ -10,7 +10,7 @@
 #include "config.h"
 
 #ifndef lint
-static const char sccsid[] = "$Id: cl_term.c,v 10.33 2012/04/21 23:51:46 zy 
Exp $";
+static const char sccsid[] = "$Id: cl_term.c,v 10.34 2013/12/07 16:21:14 
wjenkner Exp $";
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -187,14 +187,18 @@ cl_term_init(SCR *sp)
 int
 cl_term_end(GS *gp)
 {
-       SEQ *qp, *nqp;
+       SEQ *qp, *nqp, *pre_qp = NULL;
 
        /* Delete screen specific mappings. */
        SLIST_FOREACH_SAFE(qp, gp->seqq, q, nqp)
                if (F_ISSET(qp, SEQ_SCREEN)) {
-                       SLIST_REMOVE_HEAD(gp->seqq, q);
+                       if (qp == SLIST_FIRST(gp->seqq))
+                               SLIST_REMOVE_HEAD(gp->seqq, q);
+                       else
+                               SLIST_REMOVE_AFTER(pre_qp, q);
                        (void)seq_free(qp);
-               }
+               } else
+                       pre_qp = qp;
        return (0);
 }
 

Modified: head/contrib/nvi/common/key.c
==============================================================================
--- head/contrib/nvi/common/key.c       Sun Dec  8 00:05:31 2013        
(r259087)
+++ head/contrib/nvi/common/key.c       Sun Dec  8 00:08:03 2013        
(r259088)
@@ -10,7 +10,7 @@
 #include "config.h"
 
 #ifndef lint
-static const char sccsid[] = "$Id: key.c,v 10.53 2013/03/11 01:20:53 yamt Exp 
$";
+static const char sccsid[] = "$Id: key.c,v 10.54 2013/11/13 12:15:27 zy Exp $";
 #endif /* not lint */
 
 #include <sys/types.h>
@@ -272,7 +272,7 @@ v_key_name(
         * The code prints non-printable wide characters in 4 or 5 digits
         * Unicode escape sequences, so only supports plane 0 to 15.
         */
-       if (ISPRINT(ach))
+       if (CAN_PRINT(sp, ach))
                goto done;
 nopr:  if (iscntrl(ch) && (ch < 0x20 || ch == 0x7f)) {
                sp->cname[0] = '^';

Modified: head/contrib/nvi/common/key.h
==============================================================================
--- head/contrib/nvi/common/key.h       Sun Dec  8 00:05:31 2013        
(r259087)
+++ head/contrib/nvi/common/key.h       Sun Dec  8 00:08:03 2013        
(r259088)
@@ -6,7 +6,7 @@
  *
  * See the LICENSE file for redistribution information.
  *
- *     $Id: key.h,v 10.55 2012/10/07 01:31:17 zy Exp $
+ *     $Id: key.h,v 10.56 2013/11/13 12:15:27 zy Exp $
  */
 
 #include "multibyte.h"
@@ -23,8 +23,9 @@
 #define INPUT2INT5(sp,cw,n,nlen,w,wlen)                                        
    \
     sp->conv.input2int(sp, n, nlen, &(cw), &wlen, &w)
 #define CONST
+#define INTISWIDE(c)        (wctob(c) == EOF)
 #define CHAR_WIDTH(sp, ch)  wcwidth(ch)
-#define INTISWIDE(c)   (wctob(c) == EOF)
+#define CAN_PRINT(sp, ch)   (CHAR_WIDTH(sp, ch) > 0)
 #else
 #define FILE2INT5(sp,buf,n,nlen,w,wlen) \
     (w = n, wlen = nlen, 0)
@@ -36,9 +37,10 @@
     (n = w, nlen = wlen, 0)
 #define INPUT2INT5(sp,buf,n,nlen,w,wlen) \
     (w = n, wlen = nlen, 0)
-#define CONST const
-#define INTISWIDE(c)       0
+#define CONST               const
+#define INTISWIDE(c)        0
 #define CHAR_WIDTH(sp, ch)  1
+#define CAN_PRINT(sp, ch)   isprint(ch)
 #endif
 #define FILE2INT(sp,n,nlen,w,wlen)                                         \
     FILE2INT5(sp,sp->cw,n,nlen,w,wlen)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to