* fhandler.h (fhandler_console::trunc_buf): Add to use as cache for

truncated multibyte characters on input.
	(fhandler_console::write_replacement_char): Declare new method.
	* fhandler_console.cc (CONVERT_LIMIT): Raise to 64K.
	(fhandler_console::fhandler_console): Initialize trunc_buf.
	(ERR): Define as independent value again.
	(fhandler_console::write_replacement_char): New method to print
	replacement chars.
	(fhandler_console::write_normal): Add handling for truncated multibyte
	sequences.  Call next_char instead of pathetic CharNextExA function.
	Don't change src, rather just work with found later on.
	* miscfuncs.cc (is_cp_multibyte): Move here from strfuncs.cc.
	Don't call Windows function, restrict to well-known ANSI/OEM codepages
	and UTF-8.
	(next_char): Call CharNextExA only for doublebyte codepages.
	Implement for UTF-8 here.
	* strfuncs.cc (is_cp_multibyte): Move to miscfuncs.cc.
	* winsup.h (next_char): Declare.
	* include/limits.h (MB_LEN_MAX): Set to maximum value of MB_CUR_MAX
	as defined by newlib for now.
This commit is contained in:
Corinna Vinschen
2008-02-06 18:24:50 +00:00
parent a7197550f3
commit 4b65f19045
7 changed files with 226 additions and 34 deletions

View File

@ -28,7 +28,9 @@ details. */
/* Maximum length of a multibyte character. */
#ifndef MB_LEN_MAX
#define MB_LEN_MAX 1
/* TODO: This is newlib's max value. We should probably rather define our
own _mbtowc_r and _wctomb_r functions which are only codepage dependent. */
#define MB_LEN_MAX 8
#endif
/* Minimum and maximum values a `signed char' can hold. */