in win_unicode.c [36:98]
int get_convtype(void)
{
const UCHAR *cdt;
#if defined(__WCS_ISO10646__)
if (convtype < 0)
{
wchar_t *wdt = L"a";
int sizeof_w = sizeof(wchar_t);
cdt = (UCHAR *) wdt;
switch (sizeof_w)
{
case 2:
if ('a' == cdt[0] &&
'\0' == cdt[1] &&
'\0' == cdt[2] &&
'\0' == cdt[3])
{
MYLOG(MIN_LOG_LEVEL, " UTF-16LE detected\n");
convtype = WCSTYPE_UTF16_LE;
use_wcs = TRUE;
}
break;
case 4:
if ('a' == cdt[0] &&
'\0' == cdt[1] &&
'\0' == cdt[2] &&
'\0' == cdt[3] &&
'\0' == cdt[4] &&
'\0' == cdt[5] &&
'\0' == cdt[6] &&
'\0' == cdt[7])
{
MYLOG(MIN_LOG_LEVEL, " UTF32-LE detected\n");
convtype = WCSTYPE_UTF32_LE;
use_wcs = TRUE;
}
break;
}
}
#endif /* __WCS_ISO10646__ */
#ifdef __CHAR16_UTF_16__
if (convtype < 0)
{
char16_t *c16dt = u"a";
cdt = (UCHAR *) c16dt;
if ('a' == cdt[0] &&
'\0' == cdt[1] &&
'\0' == cdt[2] &&
'\0' == cdt[3])
{
MYLOG(MIN_LOG_LEVEL, " C16_UTF-16LE detected\n");
convtype = C16TYPE_UTF16_LE;
use_c16 = TRUE;
}
}
#endif /* __CHAR16_UTF_16__ */
if (convtype < 0)
convtype = CONVTYPE_UNKNOWN; /* unknown */
return convtype;
}