isigwinch - 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 4a488ca1bbb3bf794bccdd502c5c64173f4b5bdb /scm/iomenu/commit/4a488ca1bbb3bf794bccdd502c5c64173f4b5bdb.gph bitreich.org 70 1parent 4ce5703054613b342e3bc0fb1b1d35f510984fbd /scm/iomenu/commit/4ce5703054613b342e3bc0fb1b1d35f510984fbd.gph bitreich.org 70 hAuthor: Josuah Demangeon URL:mailto:josuah.demangeon@gandi.net bitreich.org 70 iDate: Thu, 18 May 2017 11:53:32 +0200 Err bitreich.org 70 i Err bitreich.org 70 isigwinch Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M iomenu.c | 22 +++++++++++++++++----- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 17 insertions(+), 5 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@@ -1,5 +1,6 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i@@ -58,10 +59,6 @@ set_terminal(void) Err bitreich.org 70 i { Err bitreich.org 70 i struct termios new; Err bitreich.org 70 i Err bitreich.org 70 i- /* get window size */ Err bitreich.org 70 i- if (ioctl(tty_fd, TIOCGWINSZ, &ws) < 0) Err bitreich.org 70 i- die("ioctl"); Err bitreich.org 70 i- Err bitreich.org 70 i /* save cursor postition */ Err bitreich.org 70 i fputs("\033[s", stderr); Err bitreich.org 70 i Err bitreich.org 70 i@@ -434,7 +431,6 @@ input_get(void) Err bitreich.org 70 i Err bitreich.org 70 i input[0] = '\0'; Err bitreich.org 70 i Err bitreich.org 70 i- print_screen(); Err bitreich.org 70 i while ((exit_code = input_key()) == CONTINUE) Err bitreich.org 70 i print_screen(); Err bitreich.org 70 i Err bitreich.org 70 i@@ -445,6 +441,21 @@ input_get(void) Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i static void Err bitreich.org 70 i+sigwinch() Err bitreich.org 70 i+{ Err bitreich.org 70 i+ extern struct winsize ws; Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* get window size */ Err bitreich.org 70 i+ if (ioctl(tty_fd, TIOCGWINSZ, &ws) < 0) Err bitreich.org 70 i+ die("ioctl"); Err bitreich.org 70 i+ Err bitreich.org 70 i+ print_screen(); Err bitreich.org 70 i+ Err bitreich.org 70 i+ signal(SIGWINCH, sigwinch); 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 usage(void) Err bitreich.org 70 i { Err bitreich.org 70 i fprintf(stderr, "%s [-b] [-t] [-s] [-l lines] [-p prompt]\n", argv0); Err bitreich.org 70 i@@ -505,6 +516,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i tty_fd = open("/dev/tty", O_RDWR); Err bitreich.org 70 i Err bitreich.org 70 i set_terminal(); Err bitreich.org 70 i+ sigwinch(); Err bitreich.org 70 i exit_code = input_get(); /* main loop */ Err bitreich.org 70 i reset_terminal(); Err bitreich.org 70 i close(tty_fd); Err bitreich.org 70 .