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