iiomenu.c: fixed tab width calculation - iomenu - interactive terminal-based selection menu Err bitreich.org 70
hgit clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu URL:git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu bitreich.org 70
1Log /scm/iomenu/log.gph bitreich.org 70
1Files /scm/iomenu/files.gph bitreich.org 70
1Refs /scm/iomenu/refs.gph bitreich.org 70
1Tags /scm/iomenu/tag bitreich.org 70
1README /scm/iomenu/file/README.gph bitreich.org 70
1LICENSE /scm/iomenu/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit 4b996da3d1d470de301037c3de2cf45d03325c48 /scm/iomenu/commit/4b996da3d1d470de301037c3de2cf45d03325c48.gph bitreich.org 70
1parent 695c25f7dc0613e9aa3e9057b333ec22c0e580f9 /scm/iomenu/commit/695c25f7dc0613e9aa3e9057b333ec22c0e580f9.gph bitreich.org 70
hAuthor: Josuah Demangeon <josuah.demangeon@gandi.net> URL:mailto:josuah.demangeon@gandi.net bitreich.org 70
iDate: Mon, 4 Sep 2017 10:23:14 +0200 Err bitreich.org 70
i Err bitreich.org 70
iiomenu.c: fixed tab width calculation Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M iomenu.c | 23 ++++++++++++----------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 12 insertions(+), 11 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/iomenu.c b/iomenu.c /scm/iomenu/file/iomenu.c.gph bitreich.org 70
i@@ -116,13 +116,13 @@ reset_terminal(void) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static size_t Err bitreich.org 70
i-str_width(char *s) Err bitreich.org 70
i+width(char *s) Err bitreich.org 70
i { Err bitreich.org 70
i int width = 0; Err bitreich.org 70
i Err bitreich.org 70
i while (*s) { Err bitreich.org 70
i if (*s++ == '\t') Err bitreich.org 70
i- width += (width + 7) % 8; Err bitreich.org 70
i+ width += 8 - (width % 8); Err bitreich.org 70
i else Err bitreich.org 70
i width++; Err bitreich.org 70
i } Err bitreich.org 70
i@@ -137,7 +137,7 @@ prev_page(int pos, int cols) Err bitreich.org 70
i Err bitreich.org 70
i pos -= pos > 0 ? 1 : 0; Err bitreich.org 70
i for (col = 0; pos > 0; pos--) Err bitreich.org 70
i- if ((col += str_width(matchv[pos]) + 2) > cols) Err bitreich.org 70
i+ if ((col += width(matchv[pos]) + 2) > cols) Err bitreich.org 70
i return pos + 1; Err bitreich.org 70
i return pos; Err bitreich.org 70
i } Err bitreich.org 70
i@@ -148,7 +148,7 @@ next_page(int pos, int cols) Err bitreich.org 70
i int col; Err bitreich.org 70
i Err bitreich.org 70
i for (col = 0; pos < matchc; pos++) Err bitreich.org 70
i- if ((col += str_width(matchv[pos]) + 2) > cols) Err bitreich.org 70
i+ if ((col += width(matchv[pos]) + 2) > cols) Err bitreich.org 70
i return pos; Err bitreich.org 70
i return pos; Err bitreich.org 70
i } Err bitreich.org 70
i@@ -169,12 +169,14 @@ move(signed int sign) Err bitreich.org 70
i static void Err bitreich.org 70
i move_page(signed int sign) Err bitreich.org 70
i { Err bitreich.org 70
i- int i = current - current % rows + rows * sign; Err bitreich.org 70
i+ int i; Err bitreich.org 70
i Err bitreich.org 70
i- if (!opt['l']) Err bitreich.org 70
i+ if (opt['l'] <= 0) Err bitreich.org 70
i return; Err bitreich.org 70
i Err bitreich.org 70
i- if (0 > i || i > matchc) Err bitreich.org 70
i+ i = current - current % rows + rows * sign; Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (!(0 < i && i < matchc)) Err bitreich.org 70
i return; Err bitreich.org 70
i Err bitreich.org 70
i current = i - 1; Err bitreich.org 70
i@@ -232,6 +234,8 @@ print_lines(void) Err bitreich.org 70
i Err bitreich.org 70
i while (printed++ < rows) Err bitreich.org 70
i fputs("\n\033[K", stderr); Err bitreich.org 70
i+ Err bitreich.org 70
i+ fprintf(stderr, "\033[%dA\r\033[K", rows); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static void Err bitreich.org 70
i@@ -273,7 +277,6 @@ print_screen(void) Err bitreich.org 70
i Err bitreich.org 70
i if (opt['l'] > 0) { Err bitreich.org 70
i print_lines(); Err bitreich.org 70
i- fprintf(stderr, "\033[%dA\r", rows); Err bitreich.org 70
i } else { Err bitreich.org 70
i print_segments(); Err bitreich.org 70
i } Err bitreich.org 70
i@@ -432,14 +435,12 @@ top: Err bitreich.org 70
i Err bitreich.org 70
i case CSI('6'): /* page down */ Err bitreich.org 70
i if (fgetc(stdin) != '~') break; Err bitreich.org 70
i- /* FALLTHROUGH */ Err bitreich.org 70
i case CTL('V'): Err bitreich.org 70
i move_page(+1); Err bitreich.org 70
i break; Err bitreich.org 70
i Err bitreich.org 70
i case CTL('I'): /* tab */ Err bitreich.org 70
i- if (linec > 0) Err bitreich.org 70
i- strcpy(input, matchv[current]); Err bitreich.org 70
i+ if (linec > 0) strcpy(input, matchv[current]); Err bitreich.org 70
i filter(); Err bitreich.org 70
i break; Err bitreich.org 70
i Err bitreich.org 70
.
Response:
text/plain