summaryrefslogtreecommitdiffstats
path: root/source/a/nvi/patches/nvi-13-widechar_horrors.patch
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2020-01-13 00:11:55 +0000
committer Eric Hameleers <alien@slackware.com>2020-01-13 08:59:48 +0100
commitba4217f7183fb76ae1774062c06ae5d77cc1b2f7 (patch)
tree640c8f162254a4b20617d19329f8549ae757443b /source/a/nvi/patches/nvi-13-widechar_horrors.patch
parented2eb16b1115533f646c6a631c2576f139096e6d (diff)
downloadcurrent-37f60bb8f51e4e929ad6140011ea1af1e860919d.tar.gz
current-37f60bb8f51e4e929ad6140011ea1af1e860919d.tar.xz
Mon Jan 13 00:11:55 UTC 202020200113001155
a/elvis-2.2_0-x86_64-5.txz: Rebuilt. Don't make /usr/bin/{ex,vi} symlinks. a/kernel-generic-5.4.11-x86_64-1.txz: Upgraded. a/kernel-huge-5.4.11-x86_64-1.txz: Upgraded. a/kernel-modules-5.4.11-x86_64-1.txz: Upgraded. a/nvi-1.81.6-x86_64-1.txz: Added. This is an implementation of the classic ex/vi text editor written by Keith Bostic. Due to this having UTF8 support which elvis lacks, we'll have it take over the ex/vi symlinks if they aren't already pointing to a different choice. Note that the removal of vi/ex symlinks from the elvis and vim packages might cause your ex/vi symlinks to point to this after all the ex/vi packages have been upgraded. You can set them to your preferences using pkgtool -> Setup -> vi-ex. a/pkgtools-15.0-noarch-29.txz: Rebuilt. Added an installer/pkgtool menu to select the default ex/vi editor. ap/vim-8.2.0114-x86_64-1.txz: Upgraded. Don't make /usr/bin/{ex,vi} symlinks. d/kernel-headers-5.4.11-x86-1.txz: Upgraded. d/python-setuptools-45.0.0-x86_64-1.txz: Upgraded. k/kernel-source-5.4.11-noarch-1.txz: Upgraded. l/imagemagick-7.0.9_15-x86_64-1.txz: Upgraded. n/ethtool-5.4-x86_64-1.txz: Upgraded. xap/vim-gvim-8.2.0114-x86_64-1.txz: Upgraded. isolinux/initrd.img: Rebuilt. kernels/*: Upgraded. usb-and-pxe-installers/usbboot.img: Rebuilt.
Diffstat (limited to 'source/a/nvi/patches/nvi-13-widechar_horrors.patch')
-rw-r--r--source/a/nvi/patches/nvi-13-widechar_horrors.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/source/a/nvi/patches/nvi-13-widechar_horrors.patch b/source/a/nvi/patches/nvi-13-widechar_horrors.patch
new file mode 100644
index 000000000..21cdb48d1
--- /dev/null
+++ b/source/a/nvi/patches/nvi-13-widechar_horrors.patch
@@ -0,0 +1,67 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 13widechar_horrors.dpatch by <hesso@pool.math.tu-berlin.de>
+##
+## DP: This patch tries to cope with the fact that widechar support
+## DP: in nvi is at best rudimentary.
+## DP: Hunk 1)
+## DP: * Due to "ch = *t", this code is not wide-char aware, so
+## DP: cast the value to a proper type so the KEY_ macros make
+## DP: the right choice.
+## DP: Hunk 2)
+## DP: * Printing of the in-/decreased number back into the screen
+## DP: buffer is not widechar-aware, either. Add a dirty fix.
+## DP: Cf. #497349.
+
+@DPATCH@
+--- nvi-1.81.6.orig/vi/vs_msg.c 2007-11-18 17:41:42.000000000 +0100
++++ nvi-1.81.6/vi/vs_msg.c 2009-03-01 14:51:08.211414132 +0100
+@@ -472,10 +472,10 @@
+ */
+ if (ch == '\t')
+ ch = ' ';
+- chlen = KEY_LEN(sp, ch);
++ chlen = KEY_LEN(sp, (unsigned char)ch);
+ if (cbp + chlen >= ecbp)
+ FLUSH;
+- for (kp = KEY_NAME(sp, ch); chlen--;)
++ for (kp = KEY_NAME(sp, (unsigned char)ch); chlen--;)
+ *cbp++ = *kp++;
+ }
+ if (cbp > cbuf)
+--- nvi-1.81.6.orig/vi/v_increment.c 2007-11-18 17:41:42.000000000 +0100
++++ nvi-1.81.6/vi/v_increment.c 2009-03-01 15:12:50.950415874 +0100
+@@ -57,7 +57,7 @@
+ long change, ltmp, lval;
+ size_t beg, blen, end, len, nlen, wlen;
+ int base, isempty, rval;
+- char *ntype, nbuf[100];
++ char *ntype, nbuf[100 * sizeof(CHAR_T)];
+ CHAR_T *bp, *p, *t;
+
+ /* Validate the operator. */
+@@ -202,7 +202,7 @@
+ /* If we cross 0, signed numbers lose their sign. */
+ if (lval == 0 && ntype == fmt[SDEC])
+ ntype = fmt[DEC];
+- nlen = snprintf(nbuf, sizeof(nbuf), ntype, lval);
++ nlen = snprintf(nbuf, sizeof(nbuf)/sizeof(CHAR_T), ntype, lval);
+ } else {
+ if ((nret = nget_uslong(sp, &ulval, t, NULL, base)) != NUM_OK)
+ goto err;
+@@ -224,7 +224,15 @@
+ if (base == 16)
+ wlen -= 2;
+
+- nlen = snprintf(nbuf, sizeof(nbuf), ntype, wlen, ulval);
++ nlen = snprintf(nbuf, sizeof(nbuf)/sizeof(CHAR_T), ntype, wlen, ulval);
++ }
++
++ /* Inflate the printed char buffer to CHAR_T elements if necessary */
++ if (sizeof(CHAR_T) > sizeof(char)) {
++ int nlen_inflate;
++ for (nlen_inflate = nlen; nlen_inflate >= 0; nlen_inflate--) {
++ ((CHAR_T *)nbuf)[nlen_inflate] = nbuf[nlen_inflate];
++ }
+ }
+
+ /* Build the new line. */