Module: wine Branch: refs/heads/master Commit: 88aeeb9fd838af4bb40669f561506b52785f60bd URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=88aeeb9fd838af4bb40669f5...
Author: Duane Clark fpga@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");