Esempio n. 1
0
static res_language_enumeration check_code_page( void )
/*****************************************************/
{
    unsigned int        codepage = 0;
#if defined __OS2__
    OS_UINT             cp;
    OS_UINT             bytesOutput;
#elif defined __WINDOWS__
    char                lang[4];
#endif

    /*** Determine the system default code page ***/
    #if defined __NT__
        codepage = GetOEMCP();
    #elif defined __OS2__
        DosGetCp( 2, &cp, &bytesOutput );
        codepage = cp;
    #elif defined __OSI__
        codepage = 437;         // Maybe we could try harder...
    #elif defined __DOS__
        codepage = dos_get_code_page();
    #elif defined __WINDOWS__
        if( GetProfileString( "Intl", "sLanguage", "ENU", lang, 4 ) ) {
            if( !stricmp( lang, "JPN" ) )  codepage = 932;
        }
    #endif

    /*** Try to match the returned code page to known ones ***/
    switch( codepage ) {
        case 932:   return( RLE_JAPANESE );
        default:    return( RLE_ENGLISH );
    }
}
Esempio n. 2
0
int __mbinit( int codepage )
{
#ifdef __NT__
    CPINFO                  cpInfo;
    BOOL                    rc;
#elif defined __OS2__
    COUNTRYCODE             countryInfo;
    unsigned short          leadBytes[6];
    APIRET                  rc;
    OS_UINT                 buf[8];
    OS_UINT                 bytes;
#elif defined __OSI__
#elif defined __DOS__
    unsigned short          __far *leadBytes;
#elif defined __WINDOWS__
    DWORD                   version;
#elif defined __LINUX__
#elif defined __RDOS__
#endif

    clear_dbcs_table();
    /*** Handle values from _setmbcp ***/
    if( codepage == _MBINIT_CP_ANSI ) {
#ifdef __NT__
        codepage = GetACP();
#else
        codepage = 0;
#endif
    } else if( codepage == _MBINIT_CP_OEM ) {
#ifdef __NT__
        codepage = GetOEMCP();
#else
        codepage = 0;
#endif
    } else if( codepage == _MBINIT_CP_SBCS ) {
        return( 0 );
    } else if( codepage == _MBINIT_CP_932 ) {
        _set_dbcs_table( 0x81, 0x9F );
        _set_dbcs_table( 0xE0, 0xFC );
        __IsDBCS = 1;
        __MBCodePage = 932;
        return( 0 );
    }

#ifdef __NT__
    /*** Initialize the __MBCSIsTable values ***/
    if( codepage == 0 )
        codepage = CP_OEMCP;
    rc = GetCPInfo( codepage, &cpInfo );    /* get code page info */
    if( rc == FALSE )
        return( 1 );
    set_dbcs_table( (unsigned short *)cpInfo.LeadByte );
    /*** Update __MBCodePage ***/
    if( codepage == CP_OEMCP ) {
        __MBCodePage = GetOEMCP();
    } else {
        __MBCodePage = codepage;
    }
#elif defined __OS2__
    /*** Initialize the __MBCSIsTable values ***/
    countryInfo.country = 0;                /* default country */
    countryInfo.codepage = codepage;        /* specified code page */
  #if defined(__WARP__)
    rc = DosQueryDBCSEnv( sizeof( leadBytes ), &countryInfo, (PCHAR)leadBytes );
  #else
    rc = DosGetDBCSEv( sizeof( leadBytes ), &countryInfo, (PCHAR)leadBytes );
  #endif
    if( rc != 0 )
        return( 1 );
    set_dbcs_table( leadBytes );
    /*** Update __MBCodePage ***/
    if( codepage == 0 ) {
  #if defined(__386__) || defined(__PPC__)
        rc = DosQueryCp( sizeof( buf ), &buf, &bytes );
  #else
        rc = DosGetCp( sizeof( buf ), &buf, &bytes );
  #endif
        if( rc != 0 ) {
            __MBCodePage = 0;
        } else {
            __MBCodePage = (unsigned int)buf[0];
        }
    } else {
        __MBCodePage = codepage;
    }
#elif defined __OSI__
#elif defined __DOS__
    /*** Initialize the __MBCSIsTable values ***/
    if( codepage != 0 )
        return( 1 );        /* can only handle default */
    leadBytes = dos_get_dbcs_lead_table();
    if( leadBytes == NULL )
        return( 0 );
    set_dbcs_table( leadBytes );
    __MBCodePage = dos_get_code_page();
#elif defined __WINDOWS__
    /*** Initialize the __MBCSIsTable values ***/
    if( codepage != 0 )
        return( 1 );        /* can only handle default */
    version = GetVersion();
    if( LOWORD(version) < 0x0A03 )
        return( 1 );        /* 3.1+ needed */
    set_dbcs_table();
    __MBCodePage = GetKBCodePage();
#elif defined __LINUX__
#elif defined __RDOS__
#endif
    return( 0 );                                /* return success code */
}