imake the code a bit cleaner - 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 dc5363e17ca9699906f7789d6175dc09aa6418ec /scm/iomenu/commit/dc5363e17ca9699906f7789d6175dc09aa6418ec.gph bitreich.org 70
1parent e72aa011e805f26becc50b68673bad057a743c39 /scm/iomenu/commit/e72aa011e805f26becc50b68673bad057a743c39.gph bitreich.org 70
hAuthor: Josuah Demangeon <mail@josuah.net> URL:mailto:mail@josuah.net bitreich.org 70
iDate: Sat, 9 Jun 2018 19:03:51 +0200 Err bitreich.org 70
i Err bitreich.org 70
imake the code a bit cleaner Err bitreich.org 70
i Err bitreich.org 70
iRemove the "extern ..." everywhere and remove unused / rename functions Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M iomenu.c | 132 ++++++++++--------------------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 42 insertions(+), 90 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@@ -78,9 +78,6 @@ getkey(void) Err bitreich.org 70
i static void Err bitreich.org 70
i split_lines(char *buf) Err bitreich.org 70
i { Err bitreich.org 70
i- extern char **linev, **matchv; Err bitreich.org 70
i- extern int linec; Err bitreich.org 70
i- Err bitreich.org 70
i char *b, **lv, **mv; Err bitreich.org 70
i Err bitreich.org 70
i linec = 1; Err bitreich.org 70
i@@ -104,8 +101,8 @@ split_lines(char *buf) Err bitreich.org 70
i static void Err bitreich.org 70
i read_stdin(void) Err bitreich.org 70
i { Err bitreich.org 70
i- size_t size, len, off; Err bitreich.org 70
i- char *buf; Err bitreich.org 70
i+ size_t size, len, off; Err bitreich.org 70
i+ char *buf; Err bitreich.org 70
i Err bitreich.org 70
i size = BUFSIZ; Err bitreich.org 70
i off = 0; Err bitreich.org 70
i@@ -126,10 +123,7 @@ read_stdin(void) Err bitreich.org 70
i static void Err bitreich.org 70
i move(int sign) Err bitreich.org 70
i { Err bitreich.org 70
i- extern char **matchv; Err bitreich.org 70
i- extern int matchc; Err bitreich.org 70
i- Err bitreich.org 70
i- int i; Err bitreich.org 70
i+ int i; Err bitreich.org 70
i Err bitreich.org 70
i for (i = cur + sign; 0 <= i && i < matchc; i += sign) { Err bitreich.org 70
i if (hsflag == 0 || matchv[i][0] != '#') { Err bitreich.org 70
i@@ -157,12 +151,9 @@ tokenize(char **tokv, char *str) Err bitreich.org 70
i static void Err bitreich.org 70
i filter(int searchc, char **searchv) Err bitreich.org 70
i { Err bitreich.org 70
i- extern char **matchv; Err bitreich.org 70
i- extern int matchc, cur; Err bitreich.org 70
i- Err bitreich.org 70
i- int n; Err bitreich.org 70
i- char *tokv[sizeof(input) * sizeof(char *) + sizeof(NULL)]; Err bitreich.org 70
i- char buf[sizeof(input)]; Err bitreich.org 70
i+ int n; Err bitreich.org 70
i+ char *tokv[sizeof(input) * sizeof(char *) + sizeof(NULL)]; Err bitreich.org 70
i+ char buf[sizeof(input)]; Err bitreich.org 70
i Err bitreich.org 70
i strncpy(buf, input, sizeof(input)); Err bitreich.org 70
i buf[sizeof(input) - 1] = '\0'; Err bitreich.org 70
i@@ -179,10 +170,7 @@ filter(int searchc, char **searchv) 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- extern struct winsize ws; Err bitreich.org 70
i- extern int matchc, cur; Err bitreich.org 70
i- Err bitreich.org 70
i- int i, rows; Err bitreich.org 70
i+ int i, rows; Err bitreich.org 70
i Err bitreich.org 70
i rows = ws.ws_row - 1; Err bitreich.org 70
i i = cur - cur % rows + rows * sign; Err bitreich.org 70
i@@ -195,9 +183,6 @@ move_page(signed int sign) Err bitreich.org 70
i static void Err bitreich.org 70
i move_header(signed int sign) Err bitreich.org 70
i { Err bitreich.org 70
i- extern char **matchv; Err bitreich.org 70
i- extern int matchc, cur; Err bitreich.org 70
i- Err bitreich.org 70
i move(sign); Err bitreich.org 70
i if (hsflag == 0) Err bitreich.org 70
i return; Err bitreich.org 70
i@@ -215,9 +200,7 @@ move_header(signed int sign) Err bitreich.org 70
i static void Err bitreich.org 70
i remove_word() Err bitreich.org 70
i { Err bitreich.org 70
i- extern char input[LINE_MAX]; Err bitreich.org 70
i- Err bitreich.org 70
i- int len, i; Err bitreich.org 70
i+ int len, i; Err bitreich.org 70
i Err bitreich.org 70
i len = strlen(input) - 1; Err bitreich.org 70
i for (i = len; i >= 0 && isspace(input[i]); i--) Err bitreich.org 70
i@@ -231,9 +214,7 @@ remove_word() Err bitreich.org 70
i static void Err bitreich.org 70
i add_char(char c) Err bitreich.org 70
i { Err bitreich.org 70
i- extern char input[LINE_MAX]; Err bitreich.org 70
i- Err bitreich.org 70
i- int len; Err bitreich.org 70
i+ int len; Err bitreich.org 70
i Err bitreich.org 70
i len = strlen(input); Err bitreich.org 70
i if (isprint(c)) { Err bitreich.org 70
i@@ -246,10 +227,7 @@ add_char(char c) Err bitreich.org 70
i static void Err bitreich.org 70
i print_selection(void) Err bitreich.org 70
i { Err bitreich.org 70
i- extern char **matchv, input[LINE_MAX]; Err bitreich.org 70
i- extern int matchc; Err bitreich.org 70
i- Err bitreich.org 70
i- char **match; Err bitreich.org 70
i+ char **match; Err bitreich.org 70
i Err bitreich.org 70
i if (hsflag) { Err bitreich.org 70
i match = matchv + cur; Err bitreich.org 70
i@@ -268,17 +246,16 @@ print_selection(void) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i-** Big case table, that calls itself back for with ALT (aka Esc), CSI Err bitreich.org 70
i-** (aka Esc + [). These last two have values above the range of ASCII. Err bitreich.org 70
i-*/ Err bitreich.org 70
i+ * Big case table, that calls itself back for with ALT (aka Esc), CSI Err bitreich.org 70
i+ * (aka Esc + [). These last two have values above the range of ASCII. Err bitreich.org 70
i+ */ Err bitreich.org 70
i int Err bitreich.org 70
i-key(int k) Err bitreich.org 70
i+key(void) Err bitreich.org 70
i { Err bitreich.org 70
i- extern char **matchv, input[LINE_MAX]; Err bitreich.org 70
i- extern int linec; Err bitreich.org 70
i+ int k; Err bitreich.org 70
i Err bitreich.org 70
i top: Err bitreich.org 70
i- switch (k) { Err bitreich.org 70
i+ switch ((k = getkey())) { Err bitreich.org 70
i case CTL('C'): Err bitreich.org 70
i return -1; Err bitreich.org 70
i case CTL('U'): Err bitreich.org 70
i@@ -348,8 +325,6 @@ top: Err bitreich.org 70
i static void Err bitreich.org 70
i print_line(char *line, int highlight) Err bitreich.org 70
i { Err bitreich.org 70
i- extern struct winsize ws; Err bitreich.org 70
i- Err bitreich.org 70
i if (hsflag && line[0] == '#') Err bitreich.org 70
i fprintf(stderr, "\n\x1b[1m\r%.*s\x1b[m", Err bitreich.org 70
i utf8_col(line + 1, ws.ws_col, 0), line + 1); Err bitreich.org 70
i@@ -364,15 +339,11 @@ print_line(char *line, int highlight) 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- extern struct winsize ws; Err bitreich.org 70
i- extern char **matchv, input[LINE_MAX]; Err bitreich.org 70
i- extern int matchc; Err bitreich.org 70
i- Err bitreich.org 70
i- char **m; Err bitreich.org 70
i- int p, i, c, cols, rows; Err bitreich.org 70
i+ char **m; Err bitreich.org 70
i+ int p, i, c, cols, rows; Err bitreich.org 70
i Err bitreich.org 70
i cols = ws.ws_col; Err bitreich.org 70
i- rows = ws.ws_row - 1; /* keep one line for user input */ Err bitreich.org 70
i+ rows = ws.ws_row - 1; /* -1 to keep one line for user input */ Err bitreich.org 70
i p = c = 0; Err bitreich.org 70
i i = cur - cur % rows; Err bitreich.org 70
i m = matchv + i; Err bitreich.org 70
i@@ -387,12 +358,12 @@ print_screen(void) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i-** Set terminal in raw mode. Err bitreich.org 70
i-*/ Err bitreich.org 70
i+ * Set terminal to raw mode. Err bitreich.org 70
i+ */ Err bitreich.org 70
i static void Err bitreich.org 70
i-set_terminal(void) Err bitreich.org 70
i+term_set(void) Err bitreich.org 70
i { Err bitreich.org 70
i- struct termios new; Err bitreich.org 70
i+ struct termios new; Err bitreich.org 70
i Err bitreich.org 70
i fputs("\x1b[s\x1b[?1049h\x1b[H", stderr); Err bitreich.org 70
i if (tcgetattr(STDERR_FILENO, &termios) == -1 || Err bitreich.org 70
i@@ -404,10 +375,10 @@ set_terminal(void) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i /* Err bitreich.org 70
i-** Take terminal out of raw mode. Err bitreich.org 70
i-*/ Err bitreich.org 70
i+ * Take terminal out of raw mode. Err bitreich.org 70
i+ */ Err bitreich.org 70
i static void Err bitreich.org 70
i-reset_terminal(void) Err bitreich.org 70
i+term_reset(void) Err bitreich.org 70
i { Err bitreich.org 70
i fputs("\x1b[2J\x1b[u\033[?1049l", stderr); Err bitreich.org 70
i if (tcsetattr(STDERR_FILENO, TCSANOW, &termios)) Err bitreich.org 70
i@@ -415,18 +386,12 @@ reset_terminal(void) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static void Err bitreich.org 70
i-sighandle(int sig) Err bitreich.org 70
i+sigwinch(int sig) Err bitreich.org 70
i { Err bitreich.org 70
i- extern struct winsize ws; Err bitreich.org 70
i- Err bitreich.org 70
i- switch (sig) { Err bitreich.org 70
i- case SIGWINCH: Err bitreich.org 70
i- if (ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) == -1) Err bitreich.org 70
i- die("ioctl"); Err bitreich.org 70
i- print_screen(); Err bitreich.org 70
i- break; Err bitreich.org 70
i- } Err bitreich.org 70
i- signal(sig, sighandle); Err bitreich.org 70
i+ if (ioctl(STDERR_FILENO, TIOCGWINSZ, &ws) == -1) Err bitreich.org 70
i+ die("ioctl"); Err bitreich.org 70
i+ print_screen(); Err bitreich.org 70
i+ signal(sig, sigwinch); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i static void Err bitreich.org 70
i@@ -436,22 +401,6 @@ usage(void) Err bitreich.org 70
i exit(EXIT_FAILURE); Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i-void Err bitreich.org 70
i-init(void) Err bitreich.org 70
i-{ Err bitreich.org 70
i- extern char input[LINE_MAX]; Err bitreich.org 70
i- Err bitreich.org 70
i- input[0] = '\0'; Err bitreich.org 70
i- read_stdin(); Err bitreich.org 70
i- filter(linec, linev); Err bitreich.org 70
i- Err bitreich.org 70
i- if (freopen("/dev/tty", "r", stdin) == NULL) Err bitreich.org 70
i- die("reopening /dev/tty as stdin"); Err bitreich.org 70
i- Err bitreich.org 70
i- set_terminal(); Err bitreich.org 70
i- sighandle(SIGWINCH); Err bitreich.org 70
i-} Err bitreich.org 70
i- Err bitreich.org 70
i /* Err bitreich.org 70
i ** Read stdin in a buffer, filling a table of lines, then re-open stdin to Err bitreich.org 70
i ** /dev/tty for an interactive (raw) session to let the user filter and select Err bitreich.org 70
i@@ -460,8 +409,6 @@ init(void) Err bitreich.org 70
i int Err bitreich.org 70
i main(int argc, char *argv[]) Err bitreich.org 70
i { Err bitreich.org 70
i- int exit_code; Err bitreich.org 70
i- Err bitreich.org 70
i ARGBEGIN { Err bitreich.org 70
i case '#': Err bitreich.org 70
i hsflag = 1; Err bitreich.org 70
i@@ -469,17 +416,22 @@ main(int argc, char *argv[]) Err bitreich.org 70
i default: Err bitreich.org 70
i usage(); Err bitreich.org 70
i } ARGEND Err bitreich.org 70
i- init(); Err bitreich.org 70
i+ Err bitreich.org 70
i+ input[0] = '\0'; Err bitreich.org 70
i+ read_stdin(); Err bitreich.org 70
i+ filter(linec, linev); Err bitreich.org 70
i+ if (freopen("/dev/tty", "r", stdin) == NULL) Err bitreich.org 70
i+ die("reopening /dev/tty as stdin"); Err bitreich.org 70
i+ term_set(); Err bitreich.org 70
i+ sigwinch(SIGWINCH); Err bitreich.org 70
i Err bitreich.org 70
i #ifdef __OpenBSD__ Err bitreich.org 70
i pledge("stdio tty", NULL); Err bitreich.org 70
i #endif Err bitreich.org 70
i Err bitreich.org 70
i- while ((exit_code = key(getkey())) > 0) Err bitreich.org 70
i+ while (key() > 0) Err bitreich.org 70
i print_screen(); Err bitreich.org 70
i+ term_reset(); Err bitreich.org 70
i Err bitreich.org 70
i- print_screen(); Err bitreich.org 70
i- reset_terminal(); Err bitreich.org 70
i- Err bitreich.org 70
i- return exit_code; Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i } Err bitreich.org 70
.
Response:
text/plain