mirror of https://github.com/OpenTTD/OpenTTD
(svn r25674) -Fix: [Win32] The console code page for non-Unicode builds is not the normal ANSI code page and definitely not UTF-8 either.
parent
e37968aadd
commit
e3648455aa
|
@ -131,13 +131,14 @@ static void debug_print(const char *dbg, const char *buf)
|
||||||
fflush(f);
|
fflush(f);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
|
char buffer[512];
|
||||||
|
seprintf(buffer, lastof(buffer), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf);
|
||||||
#if defined(WINCE)
|
#if defined(WINCE)
|
||||||
/* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */
|
NKDbgPrintfW(OTTD2FS(buffer));
|
||||||
TCHAR tbuf[512];
|
#elif defined(WIN32) || defined(WIN64)
|
||||||
_sntprintf(tbuf, sizeof(tbuf), _T("%s"), OTTD2FS(dbg));
|
_fputts(OTTD2FS(buffer, true), stderr);
|
||||||
NKDbgPrintfW(_T("dbg: [%s] %s\n"), tbuf, OTTD2FS(buf));
|
|
||||||
#else
|
#else
|
||||||
fprintf(stderr, "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf);
|
fputs(buffer, stderr);
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_NETWORK
|
#ifdef ENABLE_NETWORK
|
||||||
NetworkAdminConsole(dbg, buf);
|
NetworkAdminConsole(dbg, buf);
|
||||||
|
|
|
@ -621,12 +621,13 @@ const char *FS2OTTD(const TCHAR *name)
|
||||||
* The returned value's contents can only be guaranteed until the next call to
|
* The returned value's contents can only be guaranteed until the next call to
|
||||||
* this function. So if the value is needed for anything else, use convert_from_fs
|
* this function. So if the value is needed for anything else, use convert_from_fs
|
||||||
* @param name pointer to a valid string that will be converted (UTF8)
|
* @param name pointer to a valid string that will be converted (UTF8)
|
||||||
|
* @param console_cp convert to the console encoding instead of the normal system encoding.
|
||||||
* @return pointer to the converted string; if failed string is of zero-length
|
* @return pointer to the converted string; if failed string is of zero-length
|
||||||
*/
|
*/
|
||||||
const TCHAR *OTTD2FS(const char *name)
|
const TCHAR *OTTD2FS(const char *name, bool console_cp)
|
||||||
{
|
{
|
||||||
static TCHAR system_buf[512];
|
static TCHAR system_buf[512];
|
||||||
return convert_to_fs(name, system_buf, lengthof(system_buf));
|
return convert_to_fs(name, system_buf, lengthof(system_buf), console_cp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -669,9 +670,10 @@ char *convert_from_fs(const TCHAR *name, char *utf8_buf, size_t buflen)
|
||||||
* @param utf16_buf pointer to a valid wide-char buffer that will receive the
|
* @param utf16_buf pointer to a valid wide-char buffer that will receive the
|
||||||
* converted string
|
* converted string
|
||||||
* @param buflen length in wide characters of the receiving buffer
|
* @param buflen length in wide characters of the receiving buffer
|
||||||
|
* @param console_cp convert to the console encoding instead of the normal system encoding.
|
||||||
* @return pointer to utf16_buf. If conversion fails the string is of zero-length
|
* @return pointer to utf16_buf. If conversion fails the string is of zero-length
|
||||||
*/
|
*/
|
||||||
TCHAR *convert_to_fs(const char *name, TCHAR *system_buf, size_t buflen)
|
TCHAR *convert_to_fs(const char *name, TCHAR *system_buf, size_t buflen, bool console_cp)
|
||||||
{
|
{
|
||||||
#if defined(UNICODE)
|
#if defined(UNICODE)
|
||||||
int len = MultiByteToWideChar(CP_UTF8, 0, name, -1, system_buf, (int)buflen);
|
int len = MultiByteToWideChar(CP_UTF8, 0, name, -1, system_buf, (int)buflen);
|
||||||
|
@ -686,7 +688,7 @@ TCHAR *convert_to_fs(const char *name, TCHAR *system_buf, size_t buflen)
|
||||||
WCHAR *wide_buf = AllocaM(WCHAR, len);
|
WCHAR *wide_buf = AllocaM(WCHAR, len);
|
||||||
MultiByteToWideChar(CP_UTF8, 0, name, -1, wide_buf, len);
|
MultiByteToWideChar(CP_UTF8, 0, name, -1, wide_buf, len);
|
||||||
|
|
||||||
len = WideCharToMultiByte(CP_ACP, 0, wide_buf, len, system_buf, (int)buflen, NULL, NULL);
|
len = WideCharToMultiByte(console_cp ? CP_OEMCP : CP_ACP, 0, wide_buf, len, system_buf, (int)buflen, NULL, NULL);
|
||||||
if (len == 0) system_buf[0] = '\0';
|
if (len == 0) system_buf[0] = '\0';
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ typedef void (*Function)(int);
|
||||||
bool LoadLibraryList(Function proc[], const char *dll);
|
bool LoadLibraryList(Function proc[], const char *dll);
|
||||||
|
|
||||||
char *convert_from_fs(const TCHAR *name, char *utf8_buf, size_t buflen);
|
char *convert_from_fs(const TCHAR *name, char *utf8_buf, size_t buflen);
|
||||||
TCHAR *convert_to_fs(const char *name, TCHAR *utf16_buf, size_t buflen);
|
TCHAR *convert_to_fs(const char *name, TCHAR *utf16_buf, size_t buflen, bool console_cp = false);
|
||||||
|
|
||||||
/* Function shortcuts for UTF-8 <> UNICODE conversion. When unicode is not
|
/* Function shortcuts for UTF-8 <> UNICODE conversion. When unicode is not
|
||||||
* defined these macros return the string passed to them, with UNICODE
|
* defined these macros return the string passed to them, with UNICODE
|
||||||
|
|
|
@ -287,7 +287,7 @@
|
||||||
#endif /* WINCE */
|
#endif /* WINCE */
|
||||||
|
|
||||||
const char *FS2OTTD(const TCHAR *name);
|
const char *FS2OTTD(const TCHAR *name);
|
||||||
const TCHAR *OTTD2FS(const char *name);
|
const TCHAR *OTTD2FS(const char *name, bool console_cp = false);
|
||||||
#define SQ2OTTD(name) FS2OTTD(name)
|
#define SQ2OTTD(name) FS2OTTD(name)
|
||||||
#define OTTD2SQ(name) OTTD2FS(name)
|
#define OTTD2SQ(name) OTTD2FS(name)
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Reference in New Issue