annotate mp_msg.c @ 27808:2988c38b6620

Make sure that linker flags passed as configure parameters appear before those detected by configure so that the former can override the latter. patch by Giacomo Comes, comes naic edu
author diego
date Tue, 28 Oct 2008 18:00:11 +0000
parents 4876c89bafdd
children 9e739bdb049c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1562
2caba2f48026 new message printing system
arpi
parents:
diff changeset
1 #include <stdio.h>
2caba2f48026 new message printing system
arpi
parents:
diff changeset
2 #include <stdlib.h>
2caba2f48026 new message printing system
arpi
parents:
diff changeset
3 #include <stdarg.h>
17972
03170287aea9 10l missing header for strdup
ods15
parents: 17931
diff changeset
4 #include <string.h>
1562
2caba2f48026 new message printing system
arpi
parents:
diff changeset
5
1925
633a7f0d72a4 add gui error handling jol.
pontscho
parents: 1566
diff changeset
6 #include "config.h"
633a7f0d72a4 add gui error handling jol.
pontscho
parents: 1566
diff changeset
7
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
8 #ifdef CONFIG_ICONV
17772
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
9 #include <iconv.h>
22002
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
10 #include <errno.h>
22886
71b3e04d0555 "()" to "(void)" function param list fixes
uau
parents: 22517
diff changeset
11 extern char* get_term_charset(void);
17772
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
12 #endif
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
13
22517
3d3b328fcfb3 mp_msg.c is never built with -DCODECS2HTML.
diego
parents: 22471
diff changeset
14 #if defined(FOR_MENCODER)
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 27341
diff changeset
15 #undef CONFIG_GUI
24697
8f2154e066cf Make sure forked code does not try to display a GTK message box (and thus crashes)
reimar
parents: 24121
diff changeset
16 int use_gui;
8573
b2e4f9dab7ad codec-cfg cannot be built when the gui is enabled - it fails to link with a
jkeil
parents: 7205
diff changeset
17 #endif
b2e4f9dab7ad codec-cfg cannot be built when the gui is enabled - it fails to link with a
jkeil
parents: 7205
diff changeset
18
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 27341
diff changeset
19 #ifdef CONFIG_GUI
23077
17bf4f4b0715 Gui --> gui
diego
parents: 22886
diff changeset
20 #include "gui/interface.h"
1925
633a7f0d72a4 add gui error handling jol.
pontscho
parents: 1566
diff changeset
21 #endif
1562
2caba2f48026 new message printing system
arpi
parents:
diff changeset
22 #include "mp_msg.h"
2caba2f48026 new message printing system
arpi
parents:
diff changeset
23
6306
786ab42c10be Extend maximum mp_msg message size, some translations need it or help message will be cutted.
atmos4
parents: 6048
diff changeset
24 /* maximum message length of mp_msg */
786ab42c10be Extend maximum mp_msg message size, some translations need it or help message will be cutted.
atmos4
parents: 6048
diff changeset
25 #define MSGSIZE_MAX 3072
786ab42c10be Extend maximum mp_msg message size, some translations need it or help message will be cutted.
atmos4
parents: 6048
diff changeset
26
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25403
diff changeset
27 int mp_msg_levels[MSGT_MAX]; // verbose level of this module. initialized to -2
17120
637a2f4ff216 Some more cola for msglevel, codec-cfg can't even call mp_msg_init or it'll
ods15
parents: 17108
diff changeset
28 int mp_msg_level_all = MSGL_STATUS;
637a2f4ff216 Some more cola for msglevel, codec-cfg can't even call mp_msg_init or it'll
ods15
parents: 17108
diff changeset
29 int verbose = 0;
26370
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
30 int mp_msg_color = 0;
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
31 int mp_msg_module = 0;
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
32 #ifdef CONFIG_ICONV
17772
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
33 char *mp_msg_charset = NULL;
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
34 static char *old_charset = NULL;
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
35 static iconv_t msgiconv;
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
36 #endif
1562
2caba2f48026 new message printing system
arpi
parents:
diff changeset
37
22002
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
38 const char* filename_recode(const char* filename)
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
39 {
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
40 #if !defined(CONFIG_ICONV) || !defined(MSG_CHARSET)
22002
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
41 return filename;
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
42 #else
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
43 static iconv_t inv_msgiconv = (iconv_t)(-1);
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
44 static char recoded_filename[MSGSIZE_MAX];
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
45 size_t filename_len, max_path;
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
46 char* precoded;
22006
b79ca70e0cad Handle mp_msg_charset == NULL correctly in filename_recode.
reimar
parents: 22005
diff changeset
47 if (!mp_msg_charset ||
b79ca70e0cad Handle mp_msg_charset == NULL correctly in filename_recode.
reimar
parents: 22005
diff changeset
48 !strcasecmp(mp_msg_charset, MSG_CHARSET) ||
22005
77c4ad229db6 Cosmetics: remove tabs, almost all added during last patch, from
reimar
parents: 22002
diff changeset
49 !strcasecmp(mp_msg_charset, "noconv"))
77c4ad229db6 Cosmetics: remove tabs, almost all added during last patch, from
reimar
parents: 22002
diff changeset
50 return filename;
22002
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
51 if (inv_msgiconv == (iconv_t)(-1)) {
22005
77c4ad229db6 Cosmetics: remove tabs, almost all added during last patch, from
reimar
parents: 22002
diff changeset
52 inv_msgiconv = iconv_open(MSG_CHARSET, mp_msg_charset);
77c4ad229db6 Cosmetics: remove tabs, almost all added during last patch, from
reimar
parents: 22002
diff changeset
53 if (inv_msgiconv == (iconv_t)(-1))
77c4ad229db6 Cosmetics: remove tabs, almost all added during last patch, from
reimar
parents: 22002
diff changeset
54 return filename;
22002
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
55 }
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
56 filename_len = strlen(filename);
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
57 max_path = MSGSIZE_MAX - 4;
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
58 precoded = recoded_filename;
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
59 if (iconv(inv_msgiconv, &filename, &filename_len,
22005
77c4ad229db6 Cosmetics: remove tabs, almost all added during last patch, from
reimar
parents: 22002
diff changeset
60 &precoded, &max_path) == (size_t)(-1) && errno == E2BIG) {
77c4ad229db6 Cosmetics: remove tabs, almost all added during last patch, from
reimar
parents: 22002
diff changeset
61 precoded[0] = precoded[1] = precoded[2] = '.';
77c4ad229db6 Cosmetics: remove tabs, almost all added during last patch, from
reimar
parents: 22002
diff changeset
62 precoded += 3;
22002
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
63 }
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
64 *precoded = '\0';
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
65 return recoded_filename;
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
66 #endif
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
67 }
ebd2d5efb11b filename double-conversion, especially usefull for CJK users :-)
gpoirier
parents: 21653
diff changeset
68
17566
f580a7755ac5 Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents: 17440
diff changeset
69 void mp_msg_init(void){
17106
05af35012e4f new -msglevel option, constrols msg level for every msg module
ods15
parents: 16618
diff changeset
70 int i;
17440
de9a36b1082c MPLAYER_VERBOSE, new enviorment variable to control verbosity before init
ods15
parents: 17120
diff changeset
71 char *env = getenv("MPLAYER_VERBOSE");
de9a36b1082c MPLAYER_VERBOSE, new enviorment variable to control verbosity before init
ods15
parents: 17120
diff changeset
72 if (env)
de9a36b1082c MPLAYER_VERBOSE, new enviorment variable to control verbosity before init
ods15
parents: 17120
diff changeset
73 verbose = atoi(env);
17106
05af35012e4f new -msglevel option, constrols msg level for every msg module
ods15
parents: 16618
diff changeset
74 for(i=0;i<MSGT_MAX;i++) mp_msg_levels[i] = -2;
18237
4231482179b6 Get ride of the several if(identify) messy lines and rearangment of some of the output, both patches by Kiriuja mplayer-patches AT en-directo_net, his changes are barely unrelated, nevertheless Im commiting them thogeter just for the sake of my mental healt, I had both patches already applied on my local three
reynaldo
parents: 18000
diff changeset
75 mp_msg_levels[MSGT_IDENTIFY] = -1; // no -identify output by default
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
76 #ifdef CONFIG_ICONV
17772
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
77 mp_msg_charset = getenv("MPLAYER_CHARSET");
22442
56a0b0f8a66e Add code to detect and convert to console codepage on Windows.
reimar
parents: 22006
diff changeset
78 if (!mp_msg_charset)
56a0b0f8a66e Add code to detect and convert to console codepage on Windows.
reimar
parents: 22006
diff changeset
79 mp_msg_charset = get_term_charset();
17772
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
80 #endif
1562
2caba2f48026 new message printing system
arpi
parents:
diff changeset
81 }
2caba2f48026 new message printing system
arpi
parents:
diff changeset
82
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6306
diff changeset
83 int mp_msg_test(int mod, int lev)
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6306
diff changeset
84 {
17106
05af35012e4f new -msglevel option, constrols msg level for every msg module
ods15
parents: 16618
diff changeset
85 return lev <= (mp_msg_levels[mod] == -2 ? mp_msg_level_all + verbose : mp_msg_levels[mod]);
7058
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6306
diff changeset
86 }
2e5c07262861 new v4l capture patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>:
arpi
parents: 6306
diff changeset
87
26370
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
88 static void set_msg_color(FILE* stream, int lev)
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
89 {
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
90 static const unsigned char v_colors[10] = {9, 1, 3, 15, 7, 2, 2, 8, 8, 8};
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
91 int c = v_colors[lev];
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
92 #ifdef MP_ANNOY_ME
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
93 /* that's only a silly color test */
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
94 {
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
95 int c;
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
96 static int flag = 1;
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
97 if (flag)
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
98 for(c = 0; c < 24; c++)
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
99 printf("\033[%d;3%dm*** COLOR TEST %d ***\n", c>7, c&7, c);
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
100 flag = 0;
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
101 }
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
102 #endif
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
103 if (mp_msg_color)
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
104 fprintf(stream, "\033[%d;3%dm", c >> 3, c & 7);
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
105 }
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
106
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
107 static void print_msg_module(FILE* stream, int mod)
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
108 {
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
109 static const char *module_text[MSGT_MAX] = {
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
110 "GLOBAL",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
111 "CPLAYER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
112 "GPLAYER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
113 "VIDEOOUT",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
114 "AUDIOOUT",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
115 "DEMUXER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
116 "DS",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
117 "DEMUX",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
118 "HEADER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
119 "AVSYNC",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
120 "AUTOQ",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
121 "CFGPARSER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
122 "DECAUDIO",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
123 "DECVIDEO",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
124 "SEEK",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
125 "WIN32",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
126 "OPEN",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
127 "DVD",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
128 "PARSEES",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
129 "LIRC",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
130 "STREAM",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
131 "CACHE",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
132 "MENCODER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
133 "XACODEC",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
134 "TV",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
135 "OSDEP",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
136 "SPUDEC",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
137 "PLAYTREE",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
138 "INPUT",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
139 "VFILTER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
140 "OSD",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
141 "NETWORK",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
142 "CPUDETECT",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
143 "CODECCFG",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
144 "SWS",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
145 "VOBSUB",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
146 "SUBREADER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
147 "AFILTER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
148 "NETST",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
149 "MUXER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
150 "OSDMENU",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
151 "IDENTIFY",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
152 "RADIO",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
153 "ASS",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
154 "LOADER",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
155 "STATUSLINE",
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
156 };
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
157 int c2 = (mod + 1) % 15 + 1;
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
158
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
159 if (!mp_msg_module)
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
160 return;
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
161 if (mp_msg_color)
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
162 fprintf(stream, "\033[%d;3%dm", c2 >> 3, c2 & 7);
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
163 fprintf(stream, "%9s", module_text[mod]);
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
164 if (mp_msg_color)
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
165 fprintf(stream, "\033[0;37m");
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
166 fprintf(stream, ": ");
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
167 }
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
168
16618
bad73cd81b23 mp_msg cleanup.
ods15
parents: 16379
diff changeset
169 void mp_msg(int mod, int lev, const char *format, ... ){
5102
17f97ed8259e added i18n support
alex
parents: 4888
diff changeset
170 va_list va;
6306
786ab42c10be Extend maximum mp_msg message size, some translations need it or help message will be cutted.
atmos4
parents: 6048
diff changeset
171 char tmp[MSGSIZE_MAX];
26370
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
172 FILE *stream = lev <= MSGL_WARN ? stderr : stdout;
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
173 static int header = 1;
25403
e256d72c1f7a cosmetics: Remove trailing whitespace.
diego
parents: 24697
diff changeset
174
17106
05af35012e4f new -msglevel option, constrols msg level for every msg module
ods15
parents: 16618
diff changeset
175 if (!mp_msg_test(mod, lev)) return; // do not display
5286
30caf02c0eae 10l - va_start needs teh pointer to stack - not the translated message
arpi
parents: 5220
diff changeset
176 va_start(va, format);
18000
3b4e03cb518d more cruft
rfelker
parents: 17998
diff changeset
177 vsnprintf(tmp, MSGSIZE_MAX, format, va);
7195
a5b2566f3c2b print only fatal/error/warning to stderr, others go to stdout
arpi
parents: 7058
diff changeset
178 va_end(va);
10853
1e04ac498440 force a new line if a message is very long
pl
parents: 10415
diff changeset
179 tmp[MSGSIZE_MAX-2] = '\n';
6306
786ab42c10be Extend maximum mp_msg message size, some translations need it or help message will be cutted.
atmos4
parents: 6048
diff changeset
180 tmp[MSGSIZE_MAX-1] = 0;
5102
17f97ed8259e added i18n support
alex
parents: 4888
diff changeset
181
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 27341
diff changeset
182 #ifdef CONFIG_GUI
5102
17f97ed8259e added i18n support
alex
parents: 4888
diff changeset
183 if(use_gui)
16618
bad73cd81b23 mp_msg cleanup.
ods15
parents: 16379
diff changeset
184 guiMessageBox(lev, tmp);
5102
17f97ed8259e added i18n support
alex
parents: 4888
diff changeset
185 #endif
17f97ed8259e added i18n support
alex
parents: 4888
diff changeset
186
27393
4876c89bafdd Rename font-related preprocessor directives.
diego
parents: 27359
diff changeset
187 #if defined(CONFIG_ICONV) && defined(MSG_CHARSET)
17772
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
188 if (mp_msg_charset && strcasecmp(mp_msg_charset, "noconv")) {
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
189 char tmp2[MSGSIZE_MAX];
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
190 size_t inlen = strlen(tmp), outlen = MSGSIZE_MAX;
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
191 char *in = tmp, *out = tmp2;
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
192 if (!old_charset || strcmp(old_charset, mp_msg_charset)) {
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
193 if (old_charset) {
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
194 free(old_charset);
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
195 iconv_close(msgiconv);
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
196 }
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
197 msgiconv = iconv_open(mp_msg_charset, MSG_CHARSET);
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
198 old_charset = strdup(mp_msg_charset);
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
199 }
17931
ed9950b8200d The fix in mp_msg.c avoids a core dump when iconv_open() fails, the other
albeu
parents: 17772
diff changeset
200 if (msgiconv == (iconv_t)(-1)) {
ed9950b8200d The fix in mp_msg.c avoids a core dump when iconv_open() fails, the other
albeu
parents: 17772
diff changeset
201 fprintf(stderr,"iconv: conversion from %s to %s unsupported\n"
19549
5680696f964b Mixed up from and to charsets in iconv open failure message.
reimar
parents: 18237
diff changeset
202 ,MSG_CHARSET,mp_msg_charset);
17931
ed9950b8200d The fix in mp_msg.c avoids a core dump when iconv_open() fails, the other
albeu
parents: 17772
diff changeset
203 }else{
17772
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
204 memset(tmp2, 0, MSGSIZE_MAX);
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
205 while (iconv(msgiconv, &in, &inlen, &out, &outlen) == -1) {
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
206 if (!inlen || !outlen)
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
207 break;
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
208 *out++ = *in++;
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
209 outlen--; inlen--;
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
210 }
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
211 strncpy(tmp, tmp2, MSGSIZE_MAX);
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
212 tmp[MSGSIZE_MAX-1] = 0;
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
213 tmp[MSGSIZE_MAX-2] = '\n';
17931
ed9950b8200d The fix in mp_msg.c avoids a core dump when iconv_open() fails, the other
albeu
parents: 17772
diff changeset
214 }
17772
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
215 }
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
216 #endif
0d7cc103ed1e Automaticall convert message to console charset, use utf8 for GTK2 Gui
reimar
parents: 17742
diff changeset
217
26370
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
218 if (header)
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
219 print_msg_module(stream, mod);
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
220 set_msg_color(stream, lev);
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
221 header = tmp[strlen(tmp)-1] == '\n' || tmp[strlen(tmp)-1] == '\r';
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
222
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
223 fprintf(stream, "%s", tmp);
b450d3591845 Enable runtime control for colorful and/or module name output
zuxy
parents: 25962
diff changeset
224 fflush(stream);
1562
2caba2f48026 new message printing system
arpi
parents:
diff changeset
225 }