ionly line mode (no column mode) - 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 736debe5b48614568e55b641368589e2e37ae3d9 /scm/iomenu/commit/736debe5b48614568e55b641368589e2e37ae3d9.gph bitreich.org 70 1parent 173b8e981c29a274af7398f08c76b9e07562e6de /scm/iomenu/commit/173b8e981c29a274af7398f08c76b9e07562e6de.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:mail@josuah.net bitreich.org 70 iDate: Wed, 12 Apr 2017 00:11:24 +0200 Err bitreich.org 70 i Err bitreich.org 70 ionly line mode (no column mode) Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M iomenu.c | 72 +++---------------------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 5 insertions(+), 67 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@@ -25,7 +25,7 @@ static int current = 0, offset = 0, prev = 0, next = 0; Err bitreich.org 70 i static int linec = 0, matchc = 0; Err bitreich.org 70 i static char **linev = NULL, **matchv = NULL; Err bitreich.org 70 i static char input[BUFSIZ], formatted[BUFSIZ * 8]; Err bitreich.org 70 i-static int opt_l = 0, opt_tb = 0; Err bitreich.org 70 i+static int opt_l = 20, opt_tb = 0; Err bitreich.org 70 i static char *opt_p = "", opt_s = '\0'; Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i@@ -138,19 +138,6 @@ read_lines(void) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i-static int Err bitreich.org 70 i-string_width(char *str) Err bitreich.org 70 i-{ Err bitreich.org 70 i- int len = 0; Err bitreich.org 70 i- Err bitreich.org 70 i- for (int i = 0; str[i]; i++, len++) Err bitreich.org 70 i- if (str[i] == '\t') Err bitreich.org 70 i- len += (len + 7) % 8; Err bitreich.org 70 i- Err bitreich.org 70 i- return len; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i /* Err bitreich.org 70 i * Prepare a string for printing. Err bitreich.org 70 i */ Err bitreich.org 70 i@@ -185,8 +172,7 @@ print_string(char *str, int iscurrent) Err bitreich.org 70 i extern int opt_l; Err bitreich.org 70 i extern char opt_s; Err bitreich.org 70 i Err bitreich.org 70 i- fputs(iscurrent ? "\033[30;47m" : "", stderr); Err bitreich.org 70 i- fputs(opt_l ? "\033[K " : " ", stderr); Err bitreich.org 70 i+ fputs(iscurrent ? "\033[30;47m\033[K " : "\033[K ", stderr); Err bitreich.org 70 i Err bitreich.org 70 i if (opt_s && str[0] == '#') Err bitreich.org 70 i fputs("\033[1;30m", stderr); Err bitreich.org 70 i@@ -212,49 +198,6 @@ print_lines(int count) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i-static int Err bitreich.org 70 i-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 (int col = 0; pos > 0; pos--) Err bitreich.org 70 i- if ((col += string_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- Err bitreich.org 70 i- Err bitreich.org 70 i-static int Err bitreich.org 70 i-next_page(int pos, int cols) Err bitreich.org 70 i-{ Err bitreich.org 70 i- for (int col = 0; pos < matchc; pos++) Err bitreich.org 70 i- if ((col += string_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- Err bitreich.org 70 i- Err bitreich.org 70 i-static void Err bitreich.org 70 i-print_columns(void) Err bitreich.org 70 i-{ Err bitreich.org 70 i- if (current < offset) { Err bitreich.org 70 i- next = offset; Err bitreich.org 70 i- offset = prev_page(offset, ws.ws_col - OFFSET - 4); Err bitreich.org 70 i- Err bitreich.org 70 i- } else if (current >= next) { Err bitreich.org 70 i- offset = next; Err bitreich.org 70 i- next = next_page(offset, ws.ws_col - OFFSET - 4); Err bitreich.org 70 i- } Err bitreich.org 70 i- Err bitreich.org 70 i- fputs(offset > 0 ? "< " : " ", stderr); Err bitreich.org 70 i- Err bitreich.org 70 i- for (int i = offset; i < next && i < matchc; i++) Err bitreich.org 70 i- print_string(matchv[i], i == current); Err bitreich.org 70 i- Err bitreich.org 70 i- if (next < matchc) Err bitreich.org 70 i- fprintf(stderr, "\033[%dC>", ws.ws_col - OFFSET); Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i static void Err bitreich.org 70 i print_screen(void) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -265,14 +208,9 @@ print_screen(void) Err bitreich.org 70 i fputs("\r\033[K", stderr); Err bitreich.org 70 i Err bitreich.org 70 i /* items */ Err bitreich.org 70 i- if (opt_l) { Err bitreich.org 70 i- int count = MIN(opt_l, ws.ws_row - 2); Err bitreich.org 70 i- print_lines(count); Err bitreich.org 70 i- fprintf(stderr, "\033[%dA", count + 1); Err bitreich.org 70 i- } else { Err bitreich.org 70 i- fprintf(stderr, "\033[%dC", OFFSET); Err bitreich.org 70 i- print_columns(); Err bitreich.org 70 i- } Err bitreich.org 70 i+ int count = MIN(opt_l, ws.ws_row - 2); Err bitreich.org 70 i+ print_lines(count); Err bitreich.org 70 i+ fprintf(stderr, "\033[%dA", count + 1); Err bitreich.org 70 i Err bitreich.org 70 i fputs("\r", stderr); Err bitreich.org 70 i Err bitreich.org 70 .