/*---------------------------------------------------------------------------- %%File: fechmap.c %%Unit: fechmap %%Contact: jpick DLL entry points for FarEast conversion module. ----------------------------------------------------------------------------*/ #include "private.h" #include "fechmap_.h" #include "codepage.h" static CODEPAGE _mpicetce[icetCount] = { CP_EUC_CH, // icetEucCn CP_EUC_JP, // icetEucJp CP_EUC_KR, // icetEucKr CP_UNDEFINED, // icetEucTw (Not externally supported) CP_UNDEFINED, // icetIso2022Cn (Not externally supported) CP_ISO_2022_JP, // icetIso2022Jp CP_ISO_2022_KR, // icetIso2022Kr CP_UNDEFINED, // icetIso2022Tw (Not externally supported) CP_TWN, // icetBig5 CP_CHN_GB, // icetGbk CP_CHN_HZ, // icetHz CP_JPN_SJ, // icetShiftJis CP_KOR_5601, // icetWansung CP_UTF_7, // icetUtf7 CP_UTF_8, // icetUtf8 }; /* C C E D E T E C T I N P U T C O D E */ /*---------------------------------------------------------------------------- %%Function: CceDetectInputCode %%Contact: jpick Routine that will analyze contents of file to make a best guess as to what encoding method was used on it. Caller-supplied get and unget routines used for data access. ----------------------------------------------------------------------------*/ EXPIMPL(CCE) CceDetectInputCode( IStream *pstmIn, // input stream DWORD dwFlags, // configuration flags EFam efPref, // optional: preferred encoding family int nPrefCp, // optional: preferred code page UINT *lpCe, // set to detected encoding BOOL *lpfGuess // set to fTrue if function "guessed" ) { CCE cceRet; ICET icet; if (!pstmIn || !lpCe || !lpfGuess) return cceInvalidParameter; // DEBUG, only. Prepare the assert handler. This macro will // return cceInternal to the calling app if an assert is hit // before the handler is cleared, below. // // InitAndCatchAsserts(); cceRet = CceDetermineInputType(pstmIn, dwFlags, efPref, nPrefCp, &icet, lpfGuess); if ((cceRet == cceSuccess) || (cceRet == cceMayBeAscii)) { if (_mpicetce[icet] != CP_UNDEFINED ) *lpCe = (UINT) _mpicetce[icet]; else cceRet = cceUnknownInput; } // Done with the assert handler. // // ClearAsserts(); return cceRet; }