[hackers] [st] Remove buffering to fileio instead of calling fflush || "Roberto E. Vargas Caballero"

From: <hg_AT_suckless.org>
Date: Wed, 12 Sep 2012 21:53:59 +0200 (CEST)

changeset: 296:57218df89123
tag: tip
user: "Roberto E. Vargas Caballero" <k0ga_AT_shike2.com>
date: Wed Sep 12 21:51:55 2012 +0200
files: st.c
description:
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(-)
diff -r 2a91ba0148f3 -r 57218df89123 st.c
--- a/st.c	Wed Sep 12 21:25:35 2012 +0200
+++ b/st.c	Wed Sep 12 21:51:55 2012 +0200
_AT_@ -355,7 +355,7 @@
 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;
_AT_@ -821,9 +821,9 @@
 		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));
 				}
_AT_@ -1599,10 +1599,8 @@
 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) {
Received on Wed Sep 12 2012 - 21:53:59 CEST

This archive was generated by hypermail 2.3.0 : Wed Sep 12 2012 - 22:00:07 CEST