xref: /reactos/sdk/lib/crt/mbstring/jmstojis.c (revision b09b5584)
1 #include <precomp.h>
2 #include <mbstring.h>
3 #include <locale.h>
4 
5 /*
6  * @implemented
7  */
8 unsigned int __cdecl _mbcjmstojis(unsigned int c)
9 {
10   /* Conversion takes place only when codepage is 932.
11      In all other cases, c is returned unchanged */
12   if(get_mbcinfo()->mbcodepage == 932)
13   {
14     if(_ismbclegal(c) && HIBYTE(c) < 0xf0)
15     {
16       if(HIBYTE(c) >= 0xe0)
17         c -= 0x4000;
18 
19       c = (((HIBYTE(c) - 0x81)*2 + 0x21) << 8) | LOBYTE(c);
20 
21       if(LOBYTE(c) > 0x7f)
22         c -= 0x1;
23 
24       if(LOBYTE(c) > 0x9d)
25         c += 0x83;
26       else
27         c -= 0x1f;
28     }
29     else
30       return 0; /* Codepage is 932, but c can't be converted */
31   }
32 
33   return c;
34 }
35