# st

Unnamed repository; edit this file 'description' to name the repository.

| Log | Files | Refs | README | LICENSE

    commit 720cb816dcff55f8b75bdc2a8ffa265f460f5d55
    parent b9d5fec4f277b688b3bb4741134abf152e801e90
    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:
    Mst.c | 12+++++-------

    1 file changed, 5 insertions(+), 7 deletions(-)
    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) {