changeset 26370:b450d3591845

Enable runtime control for colorful and/or module name output
author zuxy
date Sat, 12 Apr 2008 12:51:07 +0000
parents ad825aff822b
children 27427f606a91
files DOCS/man/en/mplayer.1 cfg-common-opts.h cfg-common.h configure mp_msg.c
diffstat 5 files changed, 104 insertions(+), 96 deletions(-) [+]
line wrap: on
line diff
--- a/DOCS/man/en/mplayer.1	Fri Apr 11 23:06:33 2008 +0000
+++ b/DOCS/man/en/mplayer.1	Sat Apr 12 12:51:07 2008 +0000
@@ -692,6 +692,14 @@
 .PD 1
 .
 .TP
+.B \-msgcolor
+Enable colorful console output on terminals that support ANSI color.
+.
+.TP
+.B \-msgmodule
+Prepend module name in front of each console message.
+.
+.TP
 .B "\-quiet\ "
 Make console output less verbose; in particular, prevents the status line
 (i.e.\& A:   0.7 V:   0.6 A-V:  0.068 ...) from being displayed.
--- a/cfg-common-opts.h	Fri Apr 11 23:06:33 2008 +0000
+++ b/cfg-common-opts.h	Sat Apr 12 12:51:07 2008 +0000
@@ -9,6 +9,8 @@
 	{"really-quiet", &verbose, CONF_TYPE_FLAG, CONF_GLOBAL, 0, -10, NULL},
 	{"v", cfg_inc_verbose, CONF_TYPE_FUNC, CONF_GLOBAL|CONF_NOSAVE, 0, 0, NULL},
 	{"msglevel", msgl_config, CONF_TYPE_SUBCONFIG, CONF_GLOBAL, 0, 0, NULL},
+	{"msgcolor", &mp_msg_color, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
+	{"msgmodule", &mp_msg_module, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL},
 #ifdef USE_ICONV
 	{"msgcharset", &mp_msg_charset, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
 #endif
--- a/cfg-common.h	Fri Apr 11 23:06:33 2008 +0000
+++ b/cfg-common.h	Sat Apr 12 12:51:07 2008 +0000
@@ -4,6 +4,8 @@
 #include "config.h"
 
 extern char *mp_msg_charset;
+extern int mp_msg_color;
+extern int mp_msg_module;
 
 // codec/filter opts: (defined at libmpcodecs/vd.c)
 extern float screen_size_xy;
--- a/configure	Fri Apr 11 23:06:33 2008 +0000
+++ b/configure	Sat Apr 12 12:51:07 2008 +0000
@@ -411,7 +411,6 @@
                          \$LINGUAS is also honored) [en]
                          (Available: $LANGUAGES all)
   --with-install=PATH    path to a custom install program
-  --enable-color-console enable color console output (UNSUPPORTED) [disable]
 
 Advanced options:
   --enable-mmx              enable MMX [autodetect]
@@ -672,7 +671,6 @@
 _ass=auto
 _rpath=no
 _asmalign_pot=auto
-_color_console=no
 _stream_cache=yes
 _def_stream_cache="#define USE_STREAM_CACHE 1"
 _need_shmem=yes
@@ -1118,8 +1116,6 @@
   --disable-ass)        _ass=no         ;;
   --enable-rpath)       _rpath=yes      ;;
   --disable-rpath)      _rpath=no       ;;
-  --enable-color-console)  _color_console=yes ;;
-  --disable-color-console) _color_console=no  ;;
 
   --enable-fribidi)     _fribidi=yes    ;;
   --disable-fribidi)    _fribidi=no     ;;
@@ -7544,14 +7540,6 @@
 echores "$_maemo"
 fi
 
-echocheck "color console output"
-if test "$_color_console" = yes ; then
-  _def_color_console='#define MSG_USE_COLORS 1'
-else
-  _def_color_console='#undef MSG_USE_COLORS'
-fi
-echores "$_color_console"
-
 # linker paths should be the same for mencoder and mplayer
 _ld_tmp=""
 for I in $_libs_mplayer ; do
@@ -8003,9 +7991,6 @@
 /* Toggles debugging informations */
 $_def_debug
 
-/* Toggles color console output */
-$_def_color_console
-
 /* Indicates that libcdio is available for VCD and CD-DA playback */
 $_def_libcdio
 
--- a/mp_msg.c	Fri Apr 11 23:06:33 2008 +0000
+++ b/mp_msg.c	Sat Apr 12 12:51:07 2008 +0000
@@ -1,6 +1,3 @@
-
-//#define MSG_USE_COLORS
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdarg.h>
@@ -30,6 +27,8 @@
 int mp_msg_levels[MSGT_MAX]; // verbose level of this module. initialized to -2
 int mp_msg_level_all = MSGL_STATUS;
 int verbose = 0;
+int mp_msg_color = 0;
+int mp_msg_module = 0;
 #ifdef USE_ICONV
 char *mp_msg_charset = NULL;
 static char *old_charset = NULL;
@@ -86,9 +85,92 @@
     return lev <= (mp_msg_levels[mod] == -2 ? mp_msg_level_all + verbose : mp_msg_levels[mod]);
 }
 
+static void set_msg_color(FILE* stream, int lev)
+{
+    static const unsigned char v_colors[10] = {9, 1, 3, 15, 7, 2, 2, 8, 8, 8};
+    int c = v_colors[lev];
+#ifdef MP_ANNOY_ME
+    /* that's only a silly color test */
+    {
+        int c;
+        static int flag = 1;
+        if (flag)
+            for(c = 0; c < 24; c++)
+                printf("\033[%d;3%dm***  COLOR TEST %d  ***\n", c>7, c&7, c);
+        flag = 0;
+    }
+#endif
+    if (mp_msg_color)
+        fprintf(stream, "\033[%d;3%dm", c >> 3, c & 7);
+}
+
+static void print_msg_module(FILE* stream, int mod)
+{
+    static const char *module_text[MSGT_MAX] = {
+        "GLOBAL",
+        "CPLAYER",
+        "GPLAYER",
+        "VIDEOOUT",
+        "AUDIOOUT",
+        "DEMUXER",
+        "DS",
+        "DEMUX",
+        "HEADER",
+        "AVSYNC",
+        "AUTOQ",
+        "CFGPARSER",
+        "DECAUDIO",
+        "DECVIDEO",
+        "SEEK",
+        "WIN32",
+        "OPEN",
+        "DVD",
+        "PARSEES",
+        "LIRC",
+        "STREAM",
+        "CACHE",
+        "MENCODER",
+        "XACODEC",
+        "TV",
+        "OSDEP",
+        "SPUDEC",
+        "PLAYTREE",
+        "INPUT",
+        "VFILTER",
+        "OSD",
+        "NETWORK",
+        "CPUDETECT",
+        "CODECCFG",
+        "SWS",
+        "VOBSUB",
+        "SUBREADER",
+        "AFILTER",
+        "NETST",
+        "MUXER",
+        "OSDMENU",
+        "IDENTIFY",
+        "RADIO",
+        "ASS",
+        "LOADER",
+        "STATUSLINE",
+    };
+    int c2 = (mod + 1) % 15 + 1;
+
+    if (!mp_msg_module)
+        return;
+    if (mp_msg_color)
+        fprintf(stream, "\033[%d;3%dm", c2 >> 3, c2 & 7);
+    fprintf(stream, "%9s", module_text[mod]);
+    if (mp_msg_color)
+        fprintf(stream, "\033[0;37m");
+    fprintf(stream, ": ");
+}
+
 void mp_msg(int mod, int lev, const char *format, ... ){
     va_list va;
     char tmp[MSGSIZE_MAX];
+    FILE *stream = lev <= MSGL_WARN ? stderr : stdout;
+    static int header = 1;
 
     if (!mp_msg_test(mod, lev)) return; // do not display
     va_start(va, format);
@@ -133,82 +215,11 @@
     }
 #endif
 
-#ifdef MSG_USE_COLORS
-/* that's only a silly color test */
-#ifdef MP_ANNOY_ME
-    { int c;
-      static int flag=1;
-      if(flag)
-      for(c=0;c<24;c++)
-          printf("\033[%d;3%dm***  COLOR TEST %d  ***\n",(c>7),c&7,c);
-      flag=0;
-    }
-#endif
-    {   unsigned char v_colors[10]={9,1,3,15,7,2,2,8,8,8};
-        static const char *mod_text[MSGT_MAX]= {
-                                "GLOBAL",
-                                "CPLAYER",
-                                "GPLAYER",
-                                "VIDEOOUT",
-                                "AUDIOOUT",
-                                "DEMUXER",
-                                "DS",
-                                "DEMUX",
-                                "HEADER",
-                                "AVSYNC",
-                                "AUTOQ",
-                                "CFGPARSER",
-                                "DECAUDIO",
-                                "DECVIDEO",
-                                "SEEK",
-                                "WIN32",
-                                "OPEN",
-                                "DVD",
-                                "PARSEES",
-                                "LIRC",
-                                "STREAM",
-                                "CACHE",
-                                "MENCODER",
-                                "XACODEC",
-                                "TV",
-                                "OSDEP",
-                                "SPUDEC",
-                                "PLAYTREE",
-                                "INPUT",
-                                "VFILTER",
-                                "OSD",
-                                "NETWORK",
-                                "CPUDETECT",
-                                "CODECCFG",
-                                "SWS",
-                                "VOBSUB",
-                                "SUBREADER",
-                                "AFILTER",
-                                "NETST",
-                                "MUXER",
-                                "OSDMENU",
-                                "IDENTIFY",
-                                "RADIO",
-                                "ASS",
-                                "LOADER",
-                                "STATUSLINE",
-        };
-
-        int c=v_colors[lev];
-        int c2=(mod+1)%15+1;
-        static int header=1;
-        FILE *stream= (lev) <= MSGL_WARN ? stderr : stdout;
-        if(header){
-            fprintf(stream, "\033[%d;3%dm%9s\033[0;37m: ",c2>>3,c2&7, mod_text[mod]);
-        }
-        fprintf(stream, "\033[%d;3%dm",c>>3,c&7);
-        header=    tmp[strlen(tmp)-1] == '\n'
-                 ||tmp[strlen(tmp)-1] == '\r';
-    }
-#endif
-    if (lev <= MSGL_WARN){
-        fprintf(stderr, "%s", tmp);fflush(stderr);
-    } else {
-        printf("%s", tmp);fflush(stdout);
-    }
+    if (header)
+        print_msg_module(stream, mod);
+    set_msg_color(stream, lev);
+    header = tmp[strlen(tmp)-1] == '\n' || tmp[strlen(tmp)-1] == '\r';
+ 
+    fprintf(stream, "%s", tmp);
+    fflush(stream);
 }