Module: wine Branch: master Commit: a8c2ae17510ba75bea35a39538183fa195bdce84 URL: http://source.winehq.org/git/wine.git/?a=commit;h=a8c2ae17510ba75bea35a39538...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Jan 11 11:19:08 2013 +0100
msvcrt: Use fputwc to output characters to file in fprintf functions.
---
dlls/msvcrt/file.c | 20 +++++++++++++++++++- 1 files changed, 19 insertions(+), 1 deletions(-)
diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c index 19ad11c..daea39a 100644 --- a/dlls/msvcrt/file.c +++ b/dlls/msvcrt/file.c @@ -4208,7 +4208,25 @@ static int puts_clbk_file_a(void *file, int len, const char *str)
static int puts_clbk_file_w(void *file, int len, const MSVCRT_wchar_t *str) { - return MSVCRT_fwrite(str, sizeof(MSVCRT_wchar_t), len, file); + int i, ret; + + MSVCRT__lock_file(file); + + if(!(msvcrt_get_ioinfo(((MSVCRT_FILE*)file)->_file)->wxflag & WX_TEXT)) { + ret = MSVCRT_fwrite(str, sizeof(MSVCRT_wchar_t), len, file); + MSVCRT__unlock_file(file); + return ret; + } + + for(i=0; i<len; i++) { + if(MSVCRT_fputwc(str[i], file) == MSVCRT_WEOF) { + MSVCRT__unlock_file(file); + return -1; + } + } + + MSVCRT__unlock_file(file); + return len; }
/*********************************************************************