libcdio
[mplayer.git] / mp_msg.c
blob80770885366b249f9b006de40395e5ee30d7d804
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 static int mp_msg_levels[MSGT_MAX]; // verbose level of this module
25 void mp_msg_init(){
26 #ifdef USE_I18N
27 #ifdef MP_DEBUG
28 fprintf(stdout, "Using GNU internationalization\n");
29 fprintf(stdout, "Original domain: %s\n", textdomain(NULL));
30 fprintf(stdout, "Original dirname: %s\n", bindtextdomain(textdomain(NULL),NULL));
31 #endif
32 bindtextdomain("mplayer", PREFIX"/share/locale");
33 textdomain("mplayer");
34 #ifdef MP_DEBUG
35 fprintf(stdout, "Current domain: %s\n", textdomain(NULL));
36 fprintf(stdout, "Current dirname: %s\n\n", bindtextdomain(textdomain(NULL),NULL));
37 #endif
38 #endif
39 mp_msg_set_level(MSGL_STATUS);
42 void mp_msg_set_level(int verbose){
43 int i;
44 for(i=0;i<MSGT_MAX;i++){
45 mp_msg_levels[i]=verbose;
49 int mp_msg_test(int mod, int lev)
51 return lev <= mp_msg_levels[mod];
54 void mp_msg(int mod, int lev, const char *format, ... ){
55 va_list va;
56 char tmp[MSGSIZE_MAX];
58 if (lev > mp_msg_levels[mod]) return; // do not display
59 va_start(va, format);
60 vsnprintf(tmp, MSGSIZE_MAX, mp_gettext(format), va);
61 va_end(va);
62 tmp[MSGSIZE_MAX-2] = '\n';
63 tmp[MSGSIZE_MAX-1] = 0;
65 #ifdef HAVE_NEW_GUI
66 if(use_gui)
67 guiMessageBox(lev, tmp);
68 #endif
70 #ifdef MSG_USE_COLORS
71 /* that's only a silly color test */
72 #ifdef MP_ANNOY_ME
73 { int c;
74 static int flag=1;
75 if(flag)
76 for(c=0;c<24;c++)
77 printf("\033[%d;3%dm*** COLOR TEST %d ***\n",(c>7),c&7,c);
78 flag=0;
80 #endif
81 { unsigned char v_colors[10]={9,1,3,15,7,2,2,8,8,8};
82 static const char *lev_text[]= {
83 "FATAL",
84 "ERROR",
85 "WARN",
86 "HINT",
87 "INFO",
88 "STATUS",
89 "V",
90 "DGB2",
91 "DGB3",
92 "DGB4"};
93 static const char *mod_text[]= {
94 "GLOBAL",
95 "CPLAYER",
96 "GPLAYER",
97 "VIDEOOUT",
98 "AUDIOOUT",
99 "DEMUXER",
100 "DS",
101 "DEMUX",
102 "HEADER",
103 "AVSYNC",
104 "AUTOQ",
105 "CFGPARSER",
106 "DECAUDIO",
107 "DECVIDEO",
108 "SEEK",
109 "WIN32",
110 "OPEN",
111 "DVD",
112 "PARSEES",
113 "LIRC",
114 "STREAM",
115 "CACHE",
116 "MENCODER",
117 "XACODEC",
118 "TV",
119 "OSDEP",
120 "SPUDEC",
121 "PLAYTREE",
122 "INPUT",
123 "VFILTER",
124 "OSD",
125 "NETWORK",
126 "CPUDETECT",
127 "CODECCFG",
128 "SWS",
129 "VOBSUB",
130 "SUBREADER",
131 "AFILTER",
132 "NETST",
133 "MUXER"};
135 int c=v_colors[lev];
136 int c2=(mod+1)%15+1;
137 static int header=1;
138 FILE *stream= (lev) <= MSGL_WARN ? stderr : stdout;
139 if(header){
140 fprintf(stream, "\033[%d;3%dm%9s\033[0;37m: ",c2>>3,c2&7, mod_text[mod]);
142 fprintf(stream, "\033[%d;3%dm",c>>3,c&7);
143 header= tmp[strlen(tmp)-1] == '\n'
144 /*||tmp[strlen(tmp)-1] == '\r'*/;
146 #endif
147 if (lev <= MSGL_WARN){
148 fprintf(stderr, "%s", tmp);fflush(stderr);
149 } else {
150 printf("%s", tmp);fflush(stdout);