support for Geforce FX5500 based on patch by Pascal Yu <yu_pascal at hotmail.com>
[mplayer/greg.git] / mp_msg.c
blobed98c702148f0ccc6af3fbfca70a56397ca878ca
2 //#define MSG_USE_COLORS
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <stdarg.h>
8 #include "config.h"
10 #if defined(FOR_MENCODER) || defined(CODECS2HTML)
11 #undef HAVE_NEW_GUI
12 #endif
14 #ifdef HAVE_NEW_GUI
15 #include "Gui/interface.h"
16 extern int use_gui;
17 #endif
18 #include "mp_msg.h"
20 /* maximum message length of mp_msg */
21 #define MSGSIZE_MAX 3072
23 int mp_msg_levels[MSGT_MAX]; // verbose level of this module. inited to 2
24 int mp_msg_level_all = MSGL_STATUS;
25 int verbose = 0;
27 void mp_msg_init(void){
28 int i;
29 char *env = getenv("MPLAYER_VERBOSE");
30 if (env)
31 verbose = atoi(env);
32 #ifdef USE_I18N
33 #ifdef MP_DEBUG
34 fprintf(stdout, "Using GNU internationalization\n");
35 fprintf(stdout, "Original domain: %s\n", textdomain(NULL));
36 fprintf(stdout, "Original dirname: %s\n", bindtextdomain(textdomain(NULL),NULL));
37 #endif
38 bindtextdomain("mplayer", PREFIX"/share/locale");
39 textdomain("mplayer");
40 #ifdef MP_DEBUG
41 fprintf(stdout, "Current domain: %s\n", textdomain(NULL));
42 fprintf(stdout, "Current dirname: %s\n\n", bindtextdomain(textdomain(NULL),NULL));
43 #endif
44 #endif
45 for(i=0;i<MSGT_MAX;i++) mp_msg_levels[i] = -2;
48 int mp_msg_test(int mod, int lev)
50 return lev <= (mp_msg_levels[mod] == -2 ? mp_msg_level_all + verbose : mp_msg_levels[mod]);
53 void mp_msg(int mod, int lev, const char *format, ... ){
54 va_list va;
55 char tmp[MSGSIZE_MAX];
57 if (!mp_msg_test(mod, lev)) return; // do not display
58 va_start(va, format);
59 vsnprintf(tmp, MSGSIZE_MAX, mp_gettext(format), va);
60 va_end(va);
61 tmp[MSGSIZE_MAX-2] = '\n';
62 tmp[MSGSIZE_MAX-1] = 0;
64 #ifdef HAVE_NEW_GUI
65 if(use_gui)
66 guiMessageBox(lev, tmp);
67 #endif
69 #ifdef MSG_USE_COLORS
70 /* that's only a silly color test */
71 #ifdef MP_ANNOY_ME
72 { int c;
73 static int flag=1;
74 if(flag)
75 for(c=0;c<24;c++)
76 printf("\033[%d;3%dm*** COLOR TEST %d ***\n",(c>7),c&7,c);
77 flag=0;
79 #endif
80 { unsigned char v_colors[10]={9,1,3,15,7,2,2,8,8,8};
81 static const char *lev_text[]= {
82 "FATAL",
83 "ERROR",
84 "WARN",
85 "HINT",
86 "INFO",
87 "STATUS",
88 "V",
89 "DGB2",
90 "DGB3",
91 "DGB4"};
92 static const char *mod_text[]= {
93 "GLOBAL",
94 "CPLAYER",
95 "GPLAYER",
96 "VIDEOOUT",
97 "AUDIOOUT",
98 "DEMUXER",
99 "DS",
100 "DEMUX",
101 "HEADER",
102 "AVSYNC",
103 "AUTOQ",
104 "CFGPARSER",
105 "DECAUDIO",
106 "DECVIDEO",
107 "SEEK",
108 "WIN32",
109 "OPEN",
110 "DVD",
111 "PARSEES",
112 "LIRC",
113 "STREAM",
114 "CACHE",
115 "MENCODER",
116 "XACODEC",
117 "TV",
118 "OSDEP",
119 "SPUDEC",
120 "PLAYTREE",
121 "INPUT",
122 "VFILTER",
123 "OSD",
124 "NETWORK",
125 "CPUDETECT",
126 "CODECCFG",
127 "SWS",
128 "VOBSUB",
129 "SUBREADER",
130 "AFILTER",
131 "NETST",
132 "MUXER"};
134 int c=v_colors[lev];
135 int c2=(mod+1)%15+1;
136 static int header=1;
137 FILE *stream= (lev) <= MSGL_WARN ? stderr : stdout;
138 if(header){
139 fprintf(stream, "\033[%d;3%dm%9s\033[0;37m: ",c2>>3,c2&7, mod_text[mod]);
141 fprintf(stream, "\033[%d;3%dm",c>>3,c&7);
142 header= tmp[strlen(tmp)-1] == '\n'
143 /*||tmp[strlen(tmp)-1] == '\r'*/;
145 #endif
146 if (lev <= MSGL_WARN){
147 fprintf(stderr, "%s", tmp);fflush(stderr);
148 } else {
149 printf("%s", tmp);fflush(stdout);