[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