[MPlayer-cvslog] CVS: main configure, 1.1138, 1.1139 mp_msg.c, 1.35, 1.36 cfg-common.h, 1.156, 1.157
Reimar Döffinger CVS
syncmail at mplayerhq.hu
Wed Mar 8 13:45:50 CET 2006
CVS change done by Reimar Döffinger CVS
Update of /cvsroot/mplayer/main
In directory mail:/var2/tmp/cvs-serv18244
Modified Files:
configure mp_msg.c cfg-common.h
Log Message:
Automaticall convert message to console charset, use utf8 for GTK2 Gui
Index: configure
===================================================================
RCS file: /cvsroot/mplayer/main/configure,v
retrieving revision 1.1138
retrieving revision 1.1139
diff -u -r1.1138 -r1.1139
--- configure 5 Mar 2006 10:03:53 -0000 1.1138
+++ configure 8 Mar 2006 12:45:46 -0000 1.1139
@@ -6958,6 +6958,20 @@
fi
# --------------- GUI specific tests end -------------------
+if test "$_charset" = "noconv" ; then
+ _charset=""
+elif test -z "$_charset" ; then
+ if test "$_gtk1" = yes ; then
+ _charset=`cat ${_mp_help}.charset`
+ else
+ _charset=utf8
+ fi
+fi
+if test "$_charset" ; then
+ _def_charset="#define MSG_CHARSET \"$_charset\""
+else
+ _def_charset="#undef MSG_CHARSET"
+fi
#############################################################################
@@ -7404,6 +7418,9 @@
/* use GNU internationalization */
$_def_i18n
+/* name of messages charset */
+$_def_charset
+
/* Runtime CPU detection */
$_def_runtime_cpudetection
Index: mp_msg.c
===================================================================
RCS file: /cvsroot/mplayer/main/mp_msg.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- mp_msg.c 5 Mar 2006 18:28:20 -0000 1.35
+++ mp_msg.c 8 Mar 2006 12:45:47 -0000 1.36
@@ -7,6 +7,14 @@
#include "config.h"
+#ifdef USE_LANGINFO
+#include <locale.h>
+#include <langinfo.h>
+#endif
+#ifdef USE_ICONV
+#include <iconv.h>
+#endif
+
#if defined(FOR_MENCODER) || defined(CODECS2HTML)
#undef HAVE_NEW_GUI
#endif
@@ -23,6 +31,11 @@
int mp_msg_levels[MSGT_MAX]; // verbose level of this module. inited to -2
int mp_msg_level_all = MSGL_STATUS;
int verbose = 0;
+#ifdef USE_ICONV
+char *mp_msg_charset = NULL;
+static char *old_charset = NULL;
+static iconv_t msgiconv;
+#endif
void mp_msg_init(void){
int i;
@@ -43,6 +56,16 @@
#endif
#endif
for(i=0;i<MSGT_MAX;i++) mp_msg_levels[i] = -2;
+#ifdef USE_ICONV
+ mp_msg_charset = getenv("MPLAYER_CHARSET");
+#ifdef USE_LANGINFO
+ if (!mp_msg_charset) {
+ setlocale(LC_CTYPE, "");
+ mp_msg_charset = nl_langinfo(CODESET);
+ setlocale(LC_CTYPE, "C");
+ }
+#endif
+#endif
}
int mp_msg_test(int mod, int lev)
@@ -66,6 +89,32 @@
guiMessageBox(lev, tmp);
#endif
+#if defined(USE_ICONV) && defined(MSG_CHARSET)
+ if (mp_msg_charset && strcasecmp(mp_msg_charset, "noconv")) {
+ char tmp2[MSGSIZE_MAX];
+ size_t inlen = strlen(tmp), outlen = MSGSIZE_MAX;
+ char *in = tmp, *out = tmp2;
+ if (!old_charset || strcmp(old_charset, mp_msg_charset)) {
+ if (old_charset) {
+ free(old_charset);
+ iconv_close(msgiconv);
+ }
+ msgiconv = iconv_open(mp_msg_charset, MSG_CHARSET);
+ old_charset = strdup(mp_msg_charset);
+ }
+ memset(tmp2, 0, MSGSIZE_MAX);
+ while (iconv(msgiconv, &in, &inlen, &out, &outlen) == -1) {
+ if (!inlen || !outlen)
+ break;
+ *out++ = *in++;
+ outlen--; inlen--;
+ }
+ strncpy(tmp, tmp2, MSGSIZE_MAX);
+ tmp[MSGSIZE_MAX-1] = 0;
+ tmp[MSGSIZE_MAX-2] = '\n';
+ }
+#endif
+
#ifdef MSG_USE_COLORS
/* that's only a silly color test */
#ifdef MP_ANNOY_ME
Index: cfg-common.h
===================================================================
RCS file: /cvsroot/mplayer/main/cfg-common.h,v
retrieving revision 1.156
retrieving revision 1.157
diff -u -r1.156 -r1.157
--- cfg-common.h 4 Mar 2006 17:33:55 -0000 1.156
+++ cfg-common.h 8 Mar 2006 12:45:47 -0000 1.157
@@ -6,6 +6,9 @@
{"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},
+#ifdef USE_ICONV
+ {"msgcharset", &mp_msg_charset, CONF_TYPE_STRING, CONF_GLOBAL, 0, 0, NULL},
+#endif
{"include", cfg_include, CONF_TYPE_FUNC_PARAM, CONF_NOSAVE, 0, 0, NULL},
#ifdef WIN32
{"priority", &proc_priority, CONF_TYPE_STRING, 0, 0, 0, NULL},
@@ -302,6 +305,7 @@
extern int quiet;
extern int verbose;
+extern char *mp_msg_charset;
// codec/filter opts: (defined at libmpcodecs/vd.c)
extern float screen_size_xy;
More information about the MPlayer-cvslog
mailing list