unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
blob 4ec1b01e5d4785445409384af84726d98d230d43 2191 bytes (raw)
name: gnu/packages/patches/nvi-widechar-horrors.patch 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
This patch originates from the Debian project, see https://www.debian.org/

13widechar_horrors.dpatch by  <hesso@pool.math.tu-berlin.de>


This patch tries to cope with the fact that widechar support in nvi is at
best rudimentary.

Hunk 1)
* Due to "ch = *t", this code is not wide-char aware, so
  cast the value to a proper type so the KEY_ macros make
  the right choice.
Hunk 2)
* Printing of the in-/decreased number back into the screen
  buffer is not widechar-aware, either. Add a dirty fix.
  Cf. #497349.

--- 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. */

debug log:

solving 4ec1b01 ...
found 4ec1b01 in https://yhetil.org/guix-devel/54BE9C68.9070103@gmail.com/

applying [1/1] https://yhetil.org/guix-devel/54BE9C68.9070103@gmail.com/
diff --git a/gnu/packages/patches/nvi-widechar-horrors.patch b/gnu/packages/patches/nvi-widechar-horrors.patch
new file mode 100644
index 0000000..4ec1b01

1:27: space before tab in indent.
 			 */
1:28: space before tab in indent.
 			if (ch == '\t')
1:29: space before tab in indent.
 				ch = ' ';
1:32: space before tab in indent.
 			if (cbp + chlen >= ecbp)
1:33: space before tab in indent.
 				FLUSH;
Checking patch gnu/packages/patches/nvi-widechar-horrors.patch...
Applied patch gnu/packages/patches/nvi-widechar-horrors.patch cleanly.
warning: squelched 21 whitespace errors
warning: 26 lines add whitespace errors.

index at:
100644 4ec1b01e5d4785445409384af84726d98d230d43	gnu/packages/patches/nvi-widechar-horrors.patch

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).