Thumbnail

rani/cscroll.git

Clone URL: https://git.buni.party/rani/cscroll.git

commit 013f27a31e094259a344afbcaa8c6b7c102c7740 Author: Raniconduh <clagv.randomgames@gmail.com> Date: Thu Oct 14 09:15:44 2021 +0000 use dup2() instead of chagning stdout variable diff --git a/include/io.h b/include/io.h index 6bdbb8c..1d3cf0c 100644 --- a/include/io.h +++ b/include/io.h @@ -385 +385 @@ void unmark_all(void);  void mark_all(void);    extern bool print_path; -extern FILE * stdout_back; +extern int stdout_back;  extern size_t n_marked_files; diff --git a/src/io.c b/src/io.c index a29acf5..18e51aa 100644 --- a/src/io.c +++ b/src/io.c @@ -318 +320 @@  #include <string.h>  #include <stdio.h>  #include <stdlib.h> +#include <unistd.h> +#include <fcntl.h>    #include "dir.h"  #include "io.h"    bool print_path = false; -FILE * stdout_back = NULL; +int stdout_back = 0;  size_t n_marked_files = false;    void curses_init(void) {   if (print_path) { - stdout_back = stdout; - stdout = fopen("/dev/tty", "w"); + stdout_back = dup(STDOUT_FILENO); + dup2(open("/dev/tty", O_WRONLY), STDOUT_FILENO);   }     initscr(); @@ -408 +427 @@ void terminate_curses(void) {   endwin();     if (print_path) { - fclose(stdout); - stdout = stdout_back; + dup2(stdout_back, STDOUT_FILENO);   }  }