Simplify the code for fputwc, when the file is opened in text mode.

I verified this behaviour with a test app under Windows XP SP2. This is also the code used by the fputwc function of our previous msvcrt.

svn path=/trunk/; revision=34266
This commit is contained in:
Colin Finck 2008-07-02 16:07:01 +00:00
parent 9bd1f760d5
commit d1a42af5b7

View file

@ -2475,24 +2475,20 @@ size_t CDECL fwrite(const void *ptr, size_t size, size_t nmemb, FILE* file)
*/
wint_t CDECL fputwc(wint_t wc, FILE* file)
{
wchar_t mwc=wc;
char mbchar[10]; // MB_CUR_MAX_CONST
int mb_return;
if (file->_flag & _IOBINARY)
{
wchar_t mwc = wc;
if (fwrite( &mwc, sizeof(mwc), 1, file) != 1)
return WEOF;
}
else
{
/* Convert to multibyte in text mode */
mb_return = wctomb(mbchar, mwc);
if (mb_return == -1) return WEOF;
/* Convert the character to ANSI */
char c = (unsigned char)wc;
/* Output all characters */
if (fwrite( mbchar, 1, mb_return, file) != 1)
return WEOF;
if (fwrite( &c, sizeof(c), 1, file) != 1)
return WEOF;
}
return wc;