summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-04-12 12:51:07 +0000
committerzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-04-12 12:51:07 +0000
commitb74750a948e70fc153944f0ae76749b9b118baad (patch)
tree32e6b2f1c0aef7746417f399a49de1249082ef60
parentc3f944e14a4f94ebcfdb0318a74122dc77da85e0 (diff)
downloadmpv-b74750a948e70fc153944f0ae76749b9b118baad.tar.bz2
mpv-b74750a948e70fc153944f0ae76749b9b118baad.tar.xz
Enable runtime control for colorful and/or module name output
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26402 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--DOCS/man/en/mplayer.18
-rw-r--r--cfg-common-opts.h2
-rw-r--r--cfg-common.h2
-rwxr-xr-xconfigure15
-rw-r--r--mp_msg.c173
5 files changed, 104 insertions, 96 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index 98ddf67da6..8e2cc8ee9d 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -692,6 +692,14 @@ debug level 4
.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.
diff --git a/cfg-common-opts.h b/cfg-common-opts.h
index b6f9d4cc0f..244e064529 100644
--- a/cfg-common-opts.h
+++ b/cfg-common-opts.h
@@ -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
diff --git a/cfg-common.h b/cfg-common.h
index ea967295e3..a5f03582a6 100644
--- a/cfg-common.h
+++ b/cfg-common.h
@@ -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;
diff --git a/configure b/configure
index acd88374d8..0f91f2a1dd 100755
--- a/configure
+++ b/configure
@@ -411,7 +411,6 @@ Miscellaneous options:
\$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 @@ _w32threads=auto
_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 @@ for ac_option do
--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 @@ fi
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 @@ $_def_crash_debug
/* 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
diff --git a/mp_msg.c b/mp_msg.c
index 30ae209d29..b05db4e546 100644
--- a/mp_msg.c
+++ b/mp_msg.c
@@ -1,6 +1,3 @@
-
-//#define MSG_USE_COLORS
-
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
@@ -30,6 +27,8 @@ int use_gui;
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 @@ int mp_msg_test(int mod, int lev)
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 @@ void mp_msg(int mod, int lev, const char *format, ... ){
}
#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);
}