Piotr Caban : msvcrt: Use fputwc to output characters to file in fprintf functions.

Alexandre Julliard julliard at winehq.org
Fri Jan 11 13:46:58 CST 2013


Module: wine
Branch: master
Commit: a8c2ae17510ba75bea35a39538183fa195bdce84
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a8c2ae17510ba75bea35a39538183fa195bdce84

Author: Piotr Caban <piotr at 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;
 }
 
 /*********************************************************************




More information about the wine-cvs mailing list