termux-packages/packages/bvi/column_number_bugfix.patch
ElTopo 35aecce3a3 add new package: redir (#772)
* add bvi package

* add new package: cgdb

* add gdb in cgdb's TERMUX_PKG_DEPENDS

* add new package: redir

* bvi package revision 1: fix column number issue with clang (gcc does not seem to have this issue)
bvi (compiled with clang) incorrectly displayed only 12 bytes for each line on a 80-column terminal (instead of 16 bytes normally). command :set cm=## also had similar problems.
I found the issue was caused by the following statements:
       sprintf(addr_form,  "%%0%dllX  ", AnzAdd);
       AnzAdd = sprintf(tmp, addr_form, block_begin);

	   ('block_begin''s data type is off_t)
	   gcc automatically typecasts 'block_begin' from off_t to loff_t,
	   on the otherhand, clang takes address of 'block_begin' and uses
	   it as loff_t thus writes some garbage value in 'tmp' string.
2017-02-20 22:14:52 +01:00

31 lines
952 B
Diff

--- bvi-1.4.0/bvi.c 2014-10-07 13:09:45.000000000 -0700
+++ src/bvi.c 2017-02-19 00:35:24.587363303 -0800
@@ -276,7 +276,7 @@
if (AnzAdd > sizeof(block_begin) * 2)
AnzAdd = sizeof(block_begin) * 2;
sprintf(addr_form, "%%0%dllX ", AnzAdd);
- AnzAdd = sprintf(tmp, addr_form, block_begin);
+ AnzAdd = sprintf(tmp, addr_form, (long long unsigned)block_begin);
}
Anzahl = ((COLS - AnzAdd - 1) / 16) * 4;
@@ -729,7 +729,6 @@
char *arg;
{
off_t val;
- extern int errno;
char *poi;
errno = 0;
--- bvi-1.4.0/set.c 2014-09-30 05:00:53.000000000 -0700
+++ src/set.c 2017-02-19 00:36:08.927600541 -0800
@@ -135,7 +135,7 @@
if (((COLS - AnzAdd - 1) / 4) >= P(P_CM)) {
Anzahl = P(P_CM);
} else {
- Anzahl = P(P_CM) = ((COLS - AnzAdd - 1) / 4);
+ Anzahl = P(P_CM) = ((COLS - AnzAdd - 1) / 16) * 4;
}
maxx = Anzahl * 4 + AnzAdd + 1;
Anzahl3 = Anzahl * 3;