#807093 fbi: spams stderr in successful operation

Package:
fbi
Source:
fbi
Description:
Linux frame buffer image viewer
Submitter:
Daniel Shahaf
Date:
2015-12-19 09:36:09 UTC
Severity:
normal
#807093#5
Date:
2015-12-05 10:13:14 UTC
From:
To:
Dear Maintainer,

fbi prints messages to stderr in successful operation:

    % fbi foo.jpg >/dev/null
    using "Inconsolata-16", pixelsize=16.67 file=/usr/share/fonts/truetype/inconsolata/Inconsolata.otf
    map: vt05 => fb0
    % fbi --noverbose foo.jpg >/dev/null
    using "Inconsolata-16", pixelsize=16.67 file=/usr/share/fonts/truetype/inconsolata/Inconsolata.otf
    map: vt05 => fb0

Please disable such output (at least via an option).  There is already
a --verbose flag; perhaps the messages could be displayed in --verbose
mode only.

My use-case: I'm invoking fbi from an interactive REPL-type program, and
I don't wish such "normal operation" messages to be displayed to the
user.  However, I don't want to discard fbi's stderr entirely, in case
it prints an error message that should be presented to the user.

Thanks,

Daniel

#807093#10
Date:
2015-12-05 11:21:12 UTC
From:
To:
Patch welcome :-)

Cheers,
        Moritz

#807093#15
Date:
2015-12-19 09:32:46 UTC
From:
To:
Moritz Muehlenhoff wrote on Sat, Dec 05, 2015 at 12:21:12 +0100:

Here you go. :-)

Thanks for your work!

Daniel


(patch written against 2.10-2)
--- a/fb-gui.c
+++ b/fb-gui.c
@@ -14,6 +14,7 @@
 #include "fbtools.h"
 #include "dither.h"
 #include "fb-gui.h"
+#include "fbiconfig.h"

 /* public */
 int visible = 1;
@@ -648,7 +649,8 @@
     /* try get the face directly */
     result = FcPatternGetFTFace(match, FC_FT_FACE, 0, &face);
     if (FcResultMatch == result) {
-	fprintf(stderr,"using \"%s\", face=%p\n",fontname,face);
+	if (GET_DEBUG())
+	    fprintf(stderr,"using \"%s\", face=%p\n",fontname,face);
 	return face;
     }

@@ -658,8 +660,9 @@
 	result = FcPatternGetDouble(match, FC_PIXEL_SIZE, 0, &pixelsize);
 	if (FcResultMatch != result)
 	    pixelsize = 16;
-	fprintf(stderr,"using \"%s\", pixelsize=%.2lf file=%s\n",
-		fontname,pixelsize,filename);
+	if (GET_DEBUG())
+	    fprintf(stderr,"using \"%s\", pixelsize=%.2lf file=%s\n",
+		    fontname,pixelsize,filename);
 	rc = FT_New_Face (freetype, filename, 0, &face);
 	if (rc)
 	    return NULL;
--- a/fbtools.c
+++ b/fbtools.c
@@ -23,6 +23,7 @@
 #include <linux/fb.h>

 #include "fbtools.h"
+#include "fbiconfig.h"

 #ifndef HAVE_STRSIGNAL
 static const char *strsignal(int signr)
@@ -357,8 +358,9 @@
 		exit(1);
 	    }
 	    close(fb);
-	    fprintf(stderr,"map: vt%02d => fb%d\n",
-		    c2m.console, c2m.framebuffer);
+	    if (GET_DEBUG())
+		fprintf(stderr,"map: vt%02d => fb%d\n",
+			c2m.console, c2m.framebuffer);
 	    sprintf(fbdev,devices->fbnr,c2m.framebuffer);
 	    device = fbdev;
 	}
--- a/fbiconfig.h
+++ b/fbiconfig.h
@@ -15,6 +15,7 @@
 #define O_FIT_WIDTH		O_OPTIONS, "fit-width"
 #define O_QUIET		        O_OPTIONS, "quiet"
 #define O_VERBOSE		O_OPTIONS, "verbose"
+#define O_DEBUG			O_OPTIONS, "debug"
 #define O_RANDOM		O_OPTIONS, "random"
 #define O_ONCE		        O_OPTIONS, "once"
 #define O_COMMENTS		O_OPTIONS, "comments"
@@ -47,6 +48,7 @@
 #define GET_FIT_WIDTH()		cfg_get_bool(O_FIT_WIDTH,     0)
 #define GET_QUIET()		cfg_get_bool(O_QUIET,         0)
 #define GET_VERBOSE()		cfg_get_bool(O_VERBOSE,       1)
+#define GET_DEBUG()		cfg_get_bool(O_DEBUG,         0)
 #define GET_RANDOM()		cfg_get_bool(O_RANDOM,        0)
 #define GET_ONCE()		cfg_get_bool(O_ONCE,          0)
 #define GET_COMMENTS()		cfg_get_bool(O_COMMENTS,      0)
--- a/fbiconfig.c
+++ b/fbiconfig.c
@@ -74,6 +74,11 @@
 	.yesno    = 1,
 	.desc     = "show filenames all the time",
     },{
+	.cmdline  = "debug",
+	.option   = { O_DEBUG },
+	.yesno    = 1,
+	.desc     = "show debugging information on stderr",
+    },{
 	.letter   = 'u',
 	.cmdline  = "random",
 	.option   = { O_RANDOM },
--- a/fbi.man
+++ b/fbi.man
@@ -61,6 +61,9 @@
 Be verbose: enable status line on the bottom of the screen (enabled by
 default).
 .TP
+.B --(no)debug
+Print debug messages to stderr (disabled by default).
+.TP
 .B -u, --(no)random
 Randomize the order of the filenames.
 .TP