Module: wine Branch: master Commit: 7b877fbce8dab7d60faa29a1e97d0d73ee39a532 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7b877fbce8dab7d60faa29a1e9...
Author: Iván Matellanes matellanesivan@gmail.com Date: Sat Jun 20 16:40:21 2015 +0200
msvcirt: Add implementation of streambuf::sgetn/sputn.
---
dlls/msvcirt/msvcirt.c | 18 ++++++++++++++++++ dlls/msvcirt/msvcirt.spec | 8 ++++---- dlls/msvcrt20/msvcrt20.spec | 8 ++++---- dlls/msvcrt40/msvcrt40.spec | 8 ++++---- 4 files changed, 30 insertions(+), 12 deletions(-)
diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c index e8faa54..35777e3 100644 --- a/dlls/msvcirt/msvcirt.c +++ b/dlls/msvcirt/msvcirt.c @@ -502,6 +502,7 @@ void __thiscall streambuf_unlock(streambuf *this) /* ?xsgetn@streambuf@@UAEHPADH@Z */ /* ?xsgetn@streambuf@@UEAAHPEADH@Z */ DEFINE_THISCALL_WRAPPER(streambuf_xsgetn, 12) +#define call_streambuf_xsgetn(this, buffer, count) CALL_VTBL_FUNC(this, 24, int, (streambuf*, char*, int), (this, buffer, count)) int __thiscall streambuf_xsgetn(streambuf *this, char *buffer, int count) { int copied = 0, chunk; @@ -533,6 +534,7 @@ int __thiscall streambuf_xsgetn(streambuf *this, char *buffer, int count) /* ?xsputn@streambuf@@UAEHPBDH@Z */ /* ?xsputn@streambuf@@UEAAHPEBDH@Z */ DEFINE_THISCALL_WRAPPER(streambuf_xsputn, 12) +#define call_streambuf_xsputn(this, data, length) CALL_VTBL_FUNC(this, 20, int, (streambuf*, const char*, int), (this, data, length)) int __thiscall streambuf_xsputn(streambuf *this, const char *data, int length) { int copied = 0, chunk; @@ -579,6 +581,22 @@ int __thiscall streambuf_sputc(streambuf *this, int ch) return (this->pptr < this->epptr) ? *this->pptr++ = ch : call_streambuf_overflow(this, ch); }
+/* ?sgetn@streambuf@@QAEHPADH@Z */ +/* ?sgetn@streambuf@@QEAAHPEADH@Z */ +DEFINE_THISCALL_WRAPPER(streambuf_sgetn, 12) +int __thiscall streambuf_sgetn(streambuf *this, char *buffer, int count) +{ + return call_streambuf_xsgetn(this, buffer, count); +} + +/* ?sputn@streambuf@@QAEHPBDH@Z */ +/* ?sputn@streambuf@@QEAAHPEBDH@Z */ +DEFINE_THISCALL_WRAPPER(streambuf_sputn, 12) +int __thiscall streambuf_sputn(streambuf *this, const char *data, int length) +{ + return call_streambuf_xsputn(this, data, length); +} + /****************************************************************** * ??1ios@@UAE@XZ (MSVCRTI.@) * class ios & __thiscall ios::-ios<<(void) diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec index 7d6df5f..2a65e2f 100644 --- a/dlls/msvcirt/msvcirt.spec +++ b/dlls/msvcirt/msvcirt.spec @@ -695,8 +695,8 @@ @ stub -arch=win64 ?setrwbuf@stdiobuf@@QEAAHHH@Z @ thiscall -arch=win32 ?sgetc@streambuf@@QAEHXZ(ptr) streambuf_sgetc @ cdecl -arch=win64 ?sgetc@streambuf@@QEAAHXZ(ptr) streambuf_sgetc -@ stub -arch=win32 ?sgetn@streambuf@@QAEHPADH@Z # int __thiscall streambuf::sgetn(char *,int) -@ stub -arch=win64 ?sgetn@streambuf@@QEAAHPEADH@Z +@ thiscall -arch=win32 ?sgetn@streambuf@@QAEHPADH@Z(ptr ptr long) streambuf_sgetn +@ cdecl -arch=win64 ?sgetn@streambuf@@QEAAHPEADH@Z(ptr ptr long) streambuf_sgetn # @ extern ?sh_none@filebuf@@2HB # static int const filebuf::sh_none # @ extern ?sh_read@filebuf@@2HB # static int const filebuf::sh_read # @ extern ?sh_write@filebuf@@2HB # static int const filebuf::sh_write @@ -706,8 +706,8 @@ @ stub -arch=win64 ?sputbackc@streambuf@@QEAAHD@Z @ thiscall -arch=win32 ?sputc@streambuf@@QAEHH@Z(ptr long) streambuf_sputc @ cdecl -arch=win64 ?sputc@streambuf@@QEAAHH@Z(ptr long) streambuf_sputc -@ stub -arch=win32 ?sputn@streambuf@@QAEHPBDH@Z # int __thiscall streambuf::sputn(char const *,int) -@ stub -arch=win64 ?sputn@streambuf@@QEAAHPEBDH@Z +@ thiscall -arch=win32 ?sputn@streambuf@@QAEHPBDH@Z(ptr str long) streambuf_sputn +@ cdecl -arch=win64 ?sputn@streambuf@@QEAAHPEBDH@Z(ptr str long) streambuf_sputn @ stub -arch=win32 ?stdiofile@stdiobuf@@QAEPAU_iobuf@@XZ # struct _iobuf * __thiscall stdiobuf::stdiofile(void) @ stub -arch=win64 ?stdiofile@stdiobuf@@QEAAPEAU_iobuf@@XZ @ stub -arch=win32 ?stossc@streambuf@@QAEXXZ # void __thiscall streambuf::stossc(void) diff --git a/dlls/msvcrt20/msvcrt20.spec b/dlls/msvcrt20/msvcrt20.spec index 79f5902..1be499b 100644 --- a/dlls/msvcrt20/msvcrt20.spec +++ b/dlls/msvcrt20/msvcrt20.spec @@ -683,8 +683,8 @@ @ stub -arch=win64 ?setrwbuf@stdiobuf@@QEAAHHH@Z @ thiscall -arch=win32 ?sgetc@streambuf@@QAEHXZ(ptr) msvcirt.?sgetc@streambuf@@QAEHXZ @ cdecl -arch=win64 ?sgetc@streambuf@@QEAAHXZ(ptr) msvcirt.?sgetc@streambuf@@QEAAHXZ -@ stub -arch=win32 ?sgetn@streambuf@@QAEHPADH@Z -@ stub -arch=win64 ?sgetn@streambuf@@QEAAHPEADH@Z +@ thiscall -arch=win32 ?sgetn@streambuf@@QAEHPADH@Z(ptr ptr long) msvcirt.?sgetn@streambuf@@QAEHPADH@Z +@ cdecl -arch=win64 ?sgetn@streambuf@@QEAAHPEADH@Z(ptr ptr long) msvcirt.?sgetn@streambuf@@QEAAHPEADH@Z # @ extern ?sh_none@filebuf@@2HB # @ extern ?sh_read@filebuf@@2HB # @ extern ?sh_write@filebuf@@2HB @@ -694,8 +694,8 @@ @ stub -arch=win64 ?sputbackc@streambuf@@QEAAHD@Z @ thiscall -arch=win32 ?sputc@streambuf@@QAEHH@Z(ptr long) msvcirt.?sputc@streambuf@@QAEHH@Z @ cdecl -arch=win64 ?sputc@streambuf@@QEAAHH@Z(ptr long) msvcirt.?sputc@streambuf@@QEAAHH@Z -@ stub -arch=win32 ?sputn@streambuf@@QAEHPBDH@Z -@ stub -arch=win64 ?sputn@streambuf@@QEAAHPEBDH@Z +@ thiscall -arch=win32 ?sputn@streambuf@@QAEHPBDH@Z(ptr str long) msvcirt.?sputn@streambuf@@QAEHPBDH@Z +@ cdecl -arch=win64 ?sputn@streambuf@@QEAAHPEBDH@Z(ptr str long) msvcirt.?sputn@streambuf@@QEAAHPEBDH@Z @ stub -arch=win32 ?stdiofile@stdiobuf@@QAEPAU_iobuf@@XZ @ stub -arch=win64 ?stdiofile@stdiobuf@@QEAAPEAU_iobuf@@XZ @ stub -arch=win32 ?stossc@streambuf@@QAEXXZ diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec index 86d3985..94d9035 100644 --- a/dlls/msvcrt40/msvcrt40.spec +++ b/dlls/msvcrt40/msvcrt40.spec @@ -755,8 +755,8 @@ @ stub -arch=win64 ?setrwbuf@stdiobuf@@QEAAHHH@Z @ thiscall -arch=win32 ?sgetc@streambuf@@QAEHXZ(ptr) msvcirt.?sgetc@streambuf@@QAEHXZ @ cdecl -arch=win64 ?sgetc@streambuf@@QEAAHXZ(ptr) msvcirt.?sgetc@streambuf@@QEAAHXZ -@ stub -arch=win32 ?sgetn@streambuf@@QAEHPADH@Z -@ stub -arch=win64 ?sgetn@streambuf@@QEAAHPEADH@Z +@ thiscall -arch=win32 ?sgetn@streambuf@@QAEHPADH@Z(ptr ptr long) msvcirt.?sgetn@streambuf@@QAEHPADH@Z +@ cdecl -arch=win64 ?sgetn@streambuf@@QEAAHPEADH@Z(ptr ptr long) msvcirt.?sgetn@streambuf@@QEAAHPEADH@Z # @ extern ?sh_none@filebuf@@2HB # @ extern ?sh_read@filebuf@@2HB # @ extern ?sh_write@filebuf@@2HB @@ -766,8 +766,8 @@ @ stub -arch=win64 ?sputbackc@streambuf@@QEAAHD@Z @ thiscall -arch=win32 ?sputc@streambuf@@QAEHH@Z(ptr long) msvcirt.?sputc@streambuf@@QAEHH@Z @ cdecl -arch=win64 ?sputc@streambuf@@QEAAHH@Z(ptr long) msvcirt.?sputc@streambuf@@QEAAHH@Z -@ stub -arch=win32 ?sputn@streambuf@@QAEHPBDH@Z -@ stub -arch=win64 ?sputn@streambuf@@QEAAHPEBDH@Z +@ thiscall -arch=win32 ?sputn@streambuf@@QAEHPBDH@Z(ptr str long) msvcirt.?sputn@streambuf@@QAEHPBDH@Z +@ cdecl -arch=win64 ?sputn@streambuf@@QEAAHPEBDH@Z(ptr str long) msvcirt.?sputn@streambuf@@QEAAHPEBDH@Z @ stub -arch=win32 ?stdiofile@stdiobuf@@QAEPAU_iobuf@@XZ @ stub -arch=win64 ?stdiofile@stdiobuf@@QEAAPEAU_iobuf@@XZ @ stub -arch=win32 ?stossc@streambuf@@QAEXXZ