ireopen /dev/tty as stdin and stderr at interaction time - 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 1035fe68e4071585215a146fd1d31a914534c89d /scm/iomenu/commit/1035fe68e4071585215a146fd1d31a914534c89d.gph bitreich.org 70 1parent 99385dc242897b4bb94f0ab0c402bcbb7bea6b9f /scm/iomenu/commit/99385dc242897b4bb94f0ab0c402bcbb7bea6b9f.gph bitreich.org 70 hAuthor: Josuah Demangeonā  ā µ URL:mailto:mail@josuah.net bitreich.org 70 iDate: Thu, 30 Mar 2017 22:54:50 +0200 Err bitreich.org 70 i Err bitreich.org 70 ireopen /dev/tty as stdin and stderr at interaction time Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M iomenu.c | 16 +++++++--------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 7 insertions(+), 9 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@@ -21,7 +21,6 @@ Err bitreich.org 70 i Err bitreich.org 70 i static struct winsize ws; Err bitreich.org 70 i static struct termios termios; Err bitreich.org 70 i-FILE *tty_fp = NULL; Err bitreich.org 70 i int tty_fd; Err bitreich.org 70 i Err bitreich.org 70 i static int current = 0, offset = 0, prev = 0, next = 0; Err bitreich.org 70 i@@ -48,8 +47,7 @@ static void Err bitreich.org 70 i die(const char *s) Err bitreich.org 70 i { Err bitreich.org 70 i tcsetattr(tty_fd, TCSANOW, &termios); Err bitreich.org 70 i- fclose(tty_fp); Err bitreich.org 70 i- close(tty_fd); Err bitreich.org 70 i+ close(tty_fd); Err bitreich.org 70 i free_all(); Err bitreich.org 70 i perror(s); Err bitreich.org 70 i exit(EXIT_FAILURE); Err bitreich.org 70 i@@ -337,7 +335,7 @@ print_selection(void) Err bitreich.org 70 i static int Err bitreich.org 70 i input_key(void) Err bitreich.org 70 i { Err bitreich.org 70 i- wchar_t key = fgetwc(tty_fp); Err bitreich.org 70 i+ wchar_t key = fgetwc(stdin); Err bitreich.org 70 i Err bitreich.org 70 i switch (key) { Err bitreich.org 70 i Err bitreich.org 70 i@@ -401,8 +399,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- set_terminal(); Err bitreich.org 70 i- 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@@ -443,16 +439,18 @@ main(int argc, char *argv[]) Err bitreich.org 70 i setlocale(LC_ALL, ""); Err bitreich.org 70 i read_lines(); Err bitreich.org 70 i Err bitreich.org 70 i- tty_fp = fopen("/dev/tty", "r"); Err bitreich.org 70 i+ if (!freopen("/dev/tty", "r", stdin) || !freopen("/dev/tty", "w", stderr)) Err bitreich.org 70 i+ die("freopen"); 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+ Err bitreich.org 70 i print_screen(); Err bitreich.org 70 i exit_code = input_get(); Err bitreich.org 70 i Err bitreich.org 70 i tcsetattr(tty_fd, TCSANOW, &termios); Err bitreich.org 70 i clear(opt_l); Err bitreich.org 70 i- fclose(tty_fp); Err bitreich.org 70 i- close(tty_fd); Err bitreich.org 70 i+ close(tty_fd); Err bitreich.org 70 i free_all(); Err bitreich.org 70 i Err bitreich.org 70 i return exit_code; Err bitreich.org 70 .