Duane Clark : msvcrt: Fix _getw.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jul 31 04:32:14 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 88aeeb9fd838af4bb40669f561506b52785f60bd
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=88aeeb9fd838af4bb40669f561506b52785f60bd

Author: Duane Clark <fpga at pacbell.net>
Date:   Sat Jul 29 15:38:02 2006 -0700

msvcrt: Fix _getw.

---

 dlls/msvcrt/file.c       |   34 +++++++++++++++++++---------------
 dlls/msvcrt/tests/file.c |    4 ++--
 2 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/dlls/msvcrt/file.c b/dlls/msvcrt/file.c
index a1bc07a..d5d9647 100644
--- a/dlls/msvcrt/file.c
+++ b/dlls/msvcrt/file.c
@@ -1675,21 +1675,6 @@ int CDECL _read(int fd, void *buf, unsig
 }
 
 /*********************************************************************
- *		_getw (MSVCRT.@)
- */
-int CDECL MSVCRT__getw(MSVCRT_FILE* file)
-{
-  int i;
-  switch (_read(file->_file, &i, sizeof(int)))
-  {
-  case 1: return i;
-  case 0: file->_flag |= MSVCRT__IOEOF; break;
-  default: file->_flag |= MSVCRT__IOERR; break;
-  }
-  return EOF;
-}
-
-/*********************************************************************
  *		_setmode (MSVCRT.@)
  */
 int CDECL _setmode(int fd,int mode)
@@ -2226,6 +2211,25 @@ MSVCRT_wint_t CDECL MSVCRT_fgetwc(MSVCRT
 }
 
 /*********************************************************************
+ *		_getw (MSVCRT.@)
+ */
+int CDECL MSVCRT__getw(MSVCRT_FILE* file)
+{
+  char *ch;
+  int i, j, k;
+  ch = (char *)&i;
+  for (j=0; j<sizeof(int); j++) {
+    k = MSVCRT_fgetc(file);
+    if (k == MSVCRT_EOF) {
+      file->_flag |= MSVCRT__IOEOF;
+      return EOF;
+    }
+    ch[j] = k;
+  }
+  return i;
+}
+
+/*********************************************************************
  *		getwc (MSVCRT.@)
  */
 MSVCRT_wint_t CDECL MSVCRT_getwc(MSVCRT_FILE* file)
diff --git a/dlls/msvcrt/tests/file.c b/dlls/msvcrt/tests/file.c
index e3f8ce5..b9387ce 100644
--- a/dlls/msvcrt/tests/file.c
+++ b/dlls/msvcrt/tests/file.c
@@ -227,7 +227,7 @@ static void test_readmode( BOOL ascii_mo
     ok(fgets(buffer,MSVCRT_BUFSIZ+256,file) !=0,"padding line fgets failed unexpected in %s\n", IOMODE);
     i = _getw(file);
     ip = (int *)outbuffer;
-    todo_wine ok(i == *ip,"_getw failed, expected %08x got %08x in %s\n", *ip, i, IOMODE);
+    ok(i == *ip,"_getw failed, expected %08x got %08x in %s\n", *ip, i, IOMODE);
     for (fp=0; fp<strlen(outbuffer); fp++)
         if (outbuffer[fp] == '\n') break;
     fp++;
@@ -239,7 +239,7 @@ static void test_readmode( BOOL ascii_mo
     }
     i = _getw(file);
     ip = (int *)buffer;
-    todo_wine ok(i == *ip,"_getw failed, expected %08x got %08x in %s\n", *ip, i, IOMODE);
+    ok(i == *ip,"_getw failed, expected %08x got %08x in %s\n", *ip, i, IOMODE);
 
     fclose (file);
     unlink ("fdopen.tst");




More information about the wine-cvs mailing list