Remove buffering to fileio instead of calling fflush - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 720cb816dcff55f8b75bdc2a8ffa265f460f5d55
 (DIR) parent b9d5fec4f277b688b3bb4741134abf152e801e90
 (HTM) Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
       Date:   Wed, 12 Sep 2012 21:51:55 +0200
       
       Remove buffering to fileio instead of calling fflush
       
       By default text files are line buffered, and this means that -f option will
       not write the line until a \n is printed. This is not very useful for
       debugging, so a call to fflush was added. This patch substitute this call
       (which will be done by each character painted) by the full remove of the
       buffering in the file.
       ---
        st.c |   12 +++++-------
        1 file changed, 5 insertions(+), 7 deletions(-)
       Diffstat:
         M st.c                                |      12 +++++-------
       
       1 file changed, 5 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -355,7 +355,7 @@ static STREscape strescseq;
        static int cmdfd;
        static pid_t pid;
        static Selection sel;
       -static FILE *fileio;
       +static int iofd = -1;
        static char **opt_cmd  = NULL;
        static char *opt_io    = NULL;
        static char *opt_title = NULL;
       @@ -821,9 +821,9 @@ ttynew(void) {
                        signal(SIGCHLD, sigchld);
                        if(opt_io) {
                                if(!strcmp(opt_io, "-")) {
       -                                fileio = stdout;
       +                                iofd = STDOUT_FILENO;
                                } else {
       -                                if(!(fileio = fopen(opt_io, "w"))) {
       +                                if((iofd = open(opt_io, O_WRONLY | O_CREAT, 0666)) < 0) {
                                                fprintf(stderr, "Error opening %s:%s\n",
                                                        opt_io, strerror(errno));
                                        }
       @@ -1599,10 +1599,8 @@ void
        tputc(char *c) {
                char ascii = *c;
        
       -        if(fileio) {
       -                putc(ascii, fileio);
       -                fflush(fileio);
       -        }
       +        if(iofd != -1)
       +                write(iofd, c, 1);
        
                if(term.esc & ESC_START) {
                        if(term.esc & ESC_CSI) {