[MPlayer-dev-eng] [PATCH] Support locale under Windows console
Zuxy Meng
zuxy.meng at gmail.com
Sat Jan 27 14:18:05 CET 2007
Hi,
2007/1/27, Reimar Döffinger <Reimar.Doeffinger at stud.uni-karlsruhe.de>:
> Hello,
> On Sat, Jan 27, 2007 at 12:23:10AM +0800, Zuxy Meng wrote:
> > Copy & paste from GnuPG:-) Comments are welcome.
> >
> > --
> > Zuxy
> > Beauty is truth,
> > While truth is beauty.
> > PGP KeyID: E8555ED6
>
> > Index: mp_msg.c
> > ===================================================================
> > --- mp_msg.c ???????? 22020??
> > +++ mp_msg.c ????????????
> > @@ -27,6 +27,10 @@
> > #endif
> > #include "mp_msg.h"
> >
> > +#ifdef __MINGW32__
> > +#include <windows.h>
> > +#endif
> > +
> > /* maximum message length of mp_msg */
> > #define MSGSIZE_MAX 3072
> >
> > @@ -72,6 +76,30 @@
> > void mp_msg_init(void){
> > int i;
> > char *env = getenv("MPLAYER_VERBOSE");
> > +#if defined(USE_ICONV) && defined(__MINGW32__) && !defined(USE_LANGINFO)
> > + static char codepage[10];
> > + unsigned cpno;
> > + const struct {
> > + unsigned cp;
> > + char* alias;
> > + } cp_alias[] = {
> > + { 20127, "ASCII" },
> > + { 20866, "KOI8-R" },
> > + { 21866, "KOI8-RU" },
> > + { 28591, "ISO-8859-1" },
> > + { 28592, "ISO-8859-2" },
> > + { 28593, "ISO-8859-3" },
> > + { 28594, "ISO-8859-4" },
> > + { 28595, "ISO-8859-5" },
> > + { 28596, "ISO-8859-6" },
> > + { 28597, "ISO-8859-7" },
> > + { 28598, "ISO-8859-8" },
> > + { 28599, "ISO-8859-9" },
> > + { 28605, "ISO-8859-15" },
> > + { 65001, "UTF-8" },
> > + { 0, NULL }
> > + };
> > +#endif
>
> Too much code, put it in a separate function IMO, maybe best into
> osdep/getch2-win.c (I know it fits not quite. On the other hand that's
> where all the other windows console functions are currently).
>
> > @@ -84,6 +112,30 @@
> > mp_msg_charset = nl_langinfo(CODESET);
> > setlocale(LC_CTYPE, "C");
> > }
> > +#elif defined(__MINGW32__)
> > + if (mp_msg_charset)
> > + return;
>
> Do not use tabs in this file.
>
> > + cpno = GetConsoleOutputCP();
> > + if (!cpno)
> > + cpno = GetACP();
> > + if (!cpno)
> > + return;
> > +
> > + if (cpno >= cp_alias[0].cp) {
> > + unsigned cur_cp;
> > + i = 0;
> > + while (cur_cp = cp_alias[i].cp) {
> > + if (cpno == cur_cp) {
> > + mp_msg_charset = cp_alias[i].alias;
> > + return;
> > + }
> > + i++;
> > + }
> > + }
>
> (assuming you put it in a separate function:)
> for (i = 0; cp_alias[i].alias; i++)
> if (cur_cp == cpno)
> return cp_alias[i].alias;
>
> > +
> > + snprintf(codepage, sizeof(codepage), "CP%u", cpno);
> > + mp_msg_charset = codepage;
> > + return;
>
> that return is useless in this case.
>
> Greetings,
> Reimar Döffinger
Thanks! What should I declare the function when it's moved to
osdep/getch2-win.c?
--
Zuxy
Beauty is truth,
While truth is beauty.
PGP KeyID: E8555ED6
More information about the MPlayer-dev-eng
mailing list