[1/5] msvcirt: Add stub of class filebuf

Iván Matellanes matellanesivan at gmail.com
Mon Aug 3 09:48:37 CDT 2015


---
 dlls/msvcirt/msvcirt.c      | 205 ++++++++++++++++++++++++++++++++++++++++++++
 dlls/msvcirt/msvcirt.h      |  12 +++
 dlls/msvcirt/msvcirt.spec   |  74 ++++++++--------
 dlls/msvcrt20/msvcrt20.spec |  74 ++++++++--------
 dlls/msvcrt40/msvcrt40.spec |  74 ++++++++--------
 5 files changed, 328 insertions(+), 111 deletions(-)

diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c
index 1c26e1c..9a39b1a 100644
--- a/dlls/msvcirt/msvcirt.c
+++ b/dlls/msvcirt/msvcirt.c
@@ -80,6 +80,13 @@ streambuf* __thiscall streambuf_setbuf(streambuf*, char*, int);
 void __thiscall streambuf_setg(streambuf*, char*, char*, char*);
 void __thiscall streambuf_setp(streambuf*, char*, char*);
 
+/* class filebuf */
+typedef struct {
+    streambuf base;
+    filedesc fd;
+    int close;
+} filebuf;
+
 /* class ios */
 struct _ostream;
 typedef struct {
@@ -116,6 +123,8 @@ typedef struct {
 
 /* ??_7streambuf@@6B@ */
 extern const vtable_ptr MSVCP_streambuf_vtable;
+/* ??_7filebuf@@6B@ */
+extern const vtable_ptr MSVCP_filebuf_vtable;
 /* ??_7ios@@6B@ */
 extern const vtable_ptr MSVCP_ios_vtable;
 
@@ -134,6 +143,18 @@ void __asm_dummy_vtables(void) {
             VTABLE_ADD_FUNC(streambuf_underflow)
             VTABLE_ADD_FUNC(streambuf_pbackfail)
             VTABLE_ADD_FUNC(streambuf_doallocate));
+    __ASM_VTABLE(filebuf,
+            VTABLE_ADD_FUNC(filebuf_vector_dtor)
+            VTABLE_ADD_FUNC(filebuf_sync)
+            VTABLE_ADD_FUNC(filebuf_setbuf)
+            VTABLE_ADD_FUNC(filebuf_seekoff)
+            VTABLE_ADD_FUNC(streambuf_seekpos)
+            VTABLE_ADD_FUNC(streambuf_xsputn)
+            VTABLE_ADD_FUNC(streambuf_xsgetn)
+            VTABLE_ADD_FUNC(filebuf_overflow)
+            VTABLE_ADD_FUNC(filebuf_underflow)
+            VTABLE_ADD_FUNC(streambuf_pbackfail)
+            VTABLE_ADD_FUNC(streambuf_doallocate));
     __ASM_VTABLE(ios,
             VTABLE_ADD_FUNC(ios_vector_dtor));
 #ifndef __GNUC__
@@ -141,6 +162,7 @@ void __asm_dummy_vtables(void) {
 #endif
 
 DEFINE_RTTI_DATA0(streambuf, 0, ".?AVstreambuf@@")
+DEFINE_RTTI_DATA1(filebuf, 0, &streambuf_rtti_base_descriptor, ".?AVfilebuf@@")
 DEFINE_RTTI_DATA0(ios, 0, ".?AVios@@")
 
 /* ??0streambuf@@IAE at PADH@Z */
@@ -738,6 +760,188 @@ void __thiscall streambuf_dbp(streambuf *this)
     }
 }
 
+/* ??0filebuf@@QAE at ABV0@@Z */
+/* ??0filebuf@@QEAA at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(filebuf_copy_ctor, 8)
+filebuf* __thiscall filebuf_copy_ctor(filebuf* this, const filebuf *copy)
+{
+    FIXME("(%p %p) stub\n", this, copy);
+    return this;
+}
+
+/* ??0filebuf@@QAE at H@Z */
+/* ??0filebuf@@QEAA at H@Z */
+DEFINE_THISCALL_WRAPPER(filebuf_fd_ctor, 8)
+filebuf* __thiscall filebuf_fd_ctor(filebuf* this, filedesc fd)
+{
+    FIXME("(%p %d) stub\n", this, fd);
+    return this;
+}
+
+/* ??0filebuf@@QAE at HPADH@Z */
+/* ??0filebuf@@QEAA at HPEADH@Z */
+DEFINE_THISCALL_WRAPPER(filebuf_fd_reserve_ctor, 16)
+filebuf* __thiscall filebuf_fd_reserve_ctor(filebuf* this, filedesc fd, char *buffer, int length)
+{
+    FIXME("(%p %d %p %d) stub\n", this, fd, buffer, length);
+    return this;
+}
+
+/* ??0filebuf@@QAE at XZ */
+/* ??0filebuf@@QEAA at XZ */
+DEFINE_THISCALL_WRAPPER(filebuf_ctor, 4)
+filebuf* __thiscall filebuf_ctor(filebuf* this)
+{
+    FIXME("(%p) stub\n", this);
+    return this;
+}
+
+/* ??1filebuf@@UAE at XZ */
+/* ??1filebuf@@UEAA at XZ */
+DEFINE_THISCALL_WRAPPER(filebuf_dtor, 4)
+void __thiscall filebuf_dtor(filebuf* this)
+{
+    FIXME("(%p) stub\n", this);
+}
+
+/* ??4filebuf@@QAEAAV0 at ABV0@@Z */
+/* ??4filebuf@@QEAAAEAV0 at AEBV0@@Z */
+DEFINE_THISCALL_WRAPPER(filebuf_assign, 8)
+filebuf* __thiscall filebuf_assign(filebuf* this, const filebuf *rhs)
+{
+    FIXME("(%p %p) stub\n", this, rhs);
+    return this;
+}
+
+/* ??_Efilebuf@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(filebuf_vector_dtor, 8)
+filebuf* __thiscall filebuf_vector_dtor(filebuf *this, unsigned int flags)
+{
+    TRACE("(%p %x)\n", this, flags);
+    if (flags & 2) {
+        /* we have an array, with the number of elements stored before the first object */
+        INT_PTR i, *ptr = (INT_PTR *)this-1;
+
+        for (i = *ptr-1; i >= 0; i--)
+            filebuf_dtor(this+i);
+        MSVCRT_operator_delete(ptr);
+    } else {
+        filebuf_dtor(this);
+        if (flags & 1)
+            MSVCRT_operator_delete(this);
+    }
+    return this;
+}
+
+/* ??_Gfilebuf@@UAEPAXI at Z */
+DEFINE_THISCALL_WRAPPER(filebuf_scalar_dtor, 8)
+filebuf* __thiscall filebuf_scalar_dtor(filebuf *this, unsigned int flags)
+{
+    TRACE("(%p %x)\n", this, flags);
+    filebuf_dtor(this);
+    if (flags & 1) MSVCRT_operator_delete(this);
+    return this;
+}
+
+/* ?attach at filebuf@@QAEPAV1 at H@Z */
+/* ?attach at filebuf@@QEAAPEAV1 at H@Z */
+DEFINE_THISCALL_WRAPPER(filebuf_attach, 8)
+filebuf* __thiscall filebuf_attach(filebuf *this, filedesc fd)
+{
+    FIXME("(%p %d) stub\n", this, fd);
+    return NULL;
+}
+
+/* ?close at filebuf@@QAEPAV1 at XZ */
+/* ?close at filebuf@@QEAAPEAV1 at XZ */
+DEFINE_THISCALL_WRAPPER(filebuf_close, 4)
+filebuf* __thiscall filebuf_close(filebuf *this)
+{
+    FIXME("(%p) stub\n", this);
+    return NULL;
+}
+
+/* ?fd at filebuf@@QBEHXZ */
+/* ?fd at filebuf@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(filebuf_fd, 4)
+filedesc __thiscall filebuf_fd(const filebuf *this)
+{
+    FIXME("(%p) stub\n", this);
+    return EOF;
+}
+
+/* ?is_open at filebuf@@QBEHXZ */
+/* ?is_open at filebuf@@QEBAHXZ */
+DEFINE_THISCALL_WRAPPER(filebuf_is_open, 4)
+int __thiscall filebuf_is_open(const filebuf *this)
+{
+    FIXME("(%p) stub\n", this);
+    return 0;
+}
+
+/* ?open at filebuf@@QAEPAV1 at PBDHH@Z */
+/* ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z */
+DEFINE_THISCALL_WRAPPER(filebuf_open, 16)
+filebuf* __thiscall filebuf_open(filebuf *this, const char *name, ios_open_mode mode, int protection)
+{
+    FIXME("(%p %s %d %d) stub\n", this, name, mode, protection);
+    return NULL;
+}
+
+/* ?overflow at filebuf@@UAEHH at Z */
+/* ?overflow at filebuf@@UEAAHH at Z */
+DEFINE_THISCALL_WRAPPER(filebuf_overflow, 8)
+int __thiscall filebuf_overflow(filebuf *this, int c)
+{
+    FIXME("(%p %d) stub\n", this, c);
+    return EOF;
+}
+
+/* ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z */
+/* ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z */
+DEFINE_THISCALL_WRAPPER(filebuf_seekoff, 16)
+streampos __thiscall filebuf_seekoff(filebuf *this, streamoff offset, ios_seek_dir dir, int mode)
+{
+    FIXME("(%p %d %d %d) stub\n", this, offset, dir, mode);
+    return EOF;
+}
+
+/* ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z */
+/* ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z */
+DEFINE_THISCALL_WRAPPER(filebuf_setbuf, 12)
+streambuf* __thiscall filebuf_setbuf(filebuf *this, char *buffer, int length)
+{
+    FIXME("(%p %p %d) stub\n", this, buffer, length);
+    return NULL;
+}
+
+/* ?setmode at filebuf@@QAEHH at Z */
+/* ?setmode at filebuf@@QEAAHH at Z */
+DEFINE_THISCALL_WRAPPER(filebuf_setmode, 8)
+int __thiscall filebuf_setmode(filebuf *this, int mode)
+{
+    FIXME("(%p %d) stub\n", this, mode);
+    return 0;
+}
+
+/* ?sync at filebuf@@UAEHXZ */
+/* ?sync at filebuf@@UEAAHXZ */
+DEFINE_THISCALL_WRAPPER(filebuf_sync, 4)
+int __thiscall filebuf_sync(filebuf *this)
+{
+    FIXME("(%p) stub\n", this);
+    return EOF;
+}
+
+/* ?underflow at filebuf@@UAEHXZ */
+/* ?underflow at filebuf@@UEAAHXZ */
+DEFINE_THISCALL_WRAPPER(filebuf_underflow, 4)
+int __thiscall filebuf_underflow(filebuf *this)
+{
+    FIXME("(%p) stub\n", this);
+    return EOF;
+}
+
 /* ??0ios@@IAE at ABV0@@Z */
 /* ??0ios@@IEAA at AEBV0@@Z */
 DEFINE_THISCALL_WRAPPER(ios_copy_ctor, 8)
@@ -1411,6 +1615,7 @@ static void init_io(void *base)
 {
 #ifdef __x86_64__
     init_streambuf_rtti(base);
+    init_filebuf_rtti(base);
     init_ios_rtti(base);
 #endif
 }
diff --git a/dlls/msvcirt/msvcirt.h b/dlls/msvcirt/msvcirt.h
index 5ec369b..8886a44 100644
--- a/dlls/msvcirt/msvcirt.h
+++ b/dlls/msvcirt/msvcirt.h
@@ -22,6 +22,7 @@
 
 typedef LONG streamoff;
 typedef LONG streampos;
+typedef int filedesc;
 
 typedef enum {
     IOSTATE_goodbit   = 0x0,
@@ -31,6 +32,17 @@ typedef enum {
 } ios_io_state;
 
 typedef enum {
+    OPENMODE_in          = 0x1,
+    OPENMODE_out         = 0x2,
+    OPENMODE_ate         = 0x4,
+    OPENMODE_app         = 0x8,
+    OPENMODE_trunc       = 0x10,
+    OPENMODE_nocreate    = 0x20,
+    OPENMODE_noreplace   = 0x40,
+    OPENMODE_binary      = 0x80
+} ios_open_mode;
+
+typedef enum {
     SEEKDIR_beg = 0,
     SEEKDIR_cur = 1,
     SEEKDIR_end = 2
diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec
index 2780ecf..249ee91 100644
--- a/dlls/msvcirt/msvcirt.spec
+++ b/dlls/msvcirt/msvcirt.spec
@@ -8,14 +8,14 @@
 @ cdecl -arch=win64 ??0exception@@QEAA at AEBV0@@Z(ptr ptr) MSVCP_exception_copy_ctor
 @ thiscall -arch=i386 ??0exception@@QAE at XZ(ptr) MSVCP_exception_default_ctor
 @ cdecl -arch=win64 ??0exception@@QEAA at XZ(ptr) MSVCP_exception_default_ctor
-@ stub -arch=win32 ??0filebuf@@QAE at ABV0@@Z  # __thiscall filebuf::filebuf(class filebuf const &)
-@ stub -arch=win64 ??0filebuf@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0filebuf@@QAE at H@Z  # __thiscall filebuf::filebuf(int)
-@ stub -arch=win64 ??0filebuf@@QEAA at H@Z
-@ stub -arch=win32 ??0filebuf@@QAE at HPADH@Z  # __thiscall filebuf::filebuf(int,char *,int)
-@ stub -arch=win64 ??0filebuf@@QEAA at HPEADH@Z
-@ stub -arch=win32 ??0filebuf@@QAE at XZ  # __thiscall filebuf::filebuf(void)
-@ stub -arch=win64 ??0filebuf@@QEAA at XZ
+@ thiscall -arch=win32 ??0filebuf@@QAE at ABV0@@Z(ptr ptr) filebuf_copy_ctor
+@ cdecl -arch=win64 ??0filebuf@@QEAA at AEBV0@@Z(ptr ptr) filebuf_copy_ctor
+@ thiscall -arch=win32 ??0filebuf@@QAE at H@Z(ptr long) filebuf_fd_ctor
+@ cdecl -arch=win64 ??0filebuf@@QEAA at H@Z(ptr long) filebuf_fd_ctor
+@ thiscall -arch=win32 ??0filebuf@@QAE at HPADH@Z(ptr long ptr long) filebuf_fd_reserve_ctor
+@ cdecl -arch=win64 ??0filebuf@@QEAA at HPEADH@Z(ptr long ptr long) filebuf_fd_reserve_ctor
+@ thiscall -arch=win32 ??0filebuf@@QAE at XZ(ptr) filebuf_ctor
+@ cdecl -arch=win64 ??0filebuf@@QEAA at XZ(ptr) filebuf_ctor
 @ stub -arch=win32 ??0fstream@@QAE at ABV0@@Z  # __thiscall fstream::fstream(class fstream const &)
 @ stub -arch=win64 ??0fstream@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0fstream@@QAE at H@Z  # __thiscall fstream::fstream(int)
@@ -134,8 +134,8 @@
 @ stub -arch=win64 ??1Iostream_init@@QEAA at XZ
 @ thiscall -arch=i386 ??1exception@@UAE at XZ(ptr) MSVCP_exception_dtor
 @ cdecl -arch=win64 ??1exception@@UEAA at XZ(ptr) MSVCP_exception_dtor
-@ stub -arch=win32 ??1filebuf@@UAE at XZ  # virtual __thiscall filebuf::~filebuf(void)
-@ stub -arch=win64 ??1filebuf@@UEAA at XZ
+@ thiscall -arch=win32 ??1filebuf@@UAE at XZ(ptr) filebuf_dtor
+@ cdecl -arch=win64 ??1filebuf@@UEAA at XZ(ptr) filebuf_dtor
 @ stub -arch=win32 ??1fstream@@UAE at XZ  # virtual __thiscall fstream::~fstream(void)
 @ stub -arch=win64 ??1fstream@@UEAA at XZ
 @ stub -arch=win32 ??1ifstream@@UAE at XZ  # virtual __thiscall ifstream::~ifstream(void)
@@ -174,8 +174,8 @@
 @ stub -arch=win64 ??4Iostream_init@@QEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=i386 ??4exception@@QAEAAV0 at ABV0@@Z(ptr ptr) MSVCP_exception_assign
 @ cdecl -arch=win64 ??4exception@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) MSVCP_exception_assign
-@ stub -arch=win32 ??4filebuf@@QAEAAV0 at ABV0@@Z  # class filebuf & __thiscall filebuf::operator=(class filebuf const &)
-@ stub -arch=win64 ??4filebuf@@QEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4filebuf@@QAEAAV0 at ABV0@@Z(ptr ptr) filebuf_assign
+@ cdecl -arch=win64 ??4filebuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) filebuf_assign
 @ stub -arch=win32 ??4fstream@@QAEAAV0 at AAV0@@Z  # class fstream & __thiscall fstream::operator=(class fstream &)
 @ stub -arch=win64 ??4fstream@@QEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4ifstream@@QAEAAV0 at ABV0@@Z  # class ifstream & __thiscall ifstream::operator=(class ifstream const &)
@@ -303,7 +303,7 @@
 @ thiscall -arch=win32 ??Bios@@QBEPAXXZ(ptr) ios_op_void
 @ cdecl -arch=win64 ??Bios@@QEBAPEAXXZ(ptr) ios_op_void
 @ extern ??_7exception@@6B@ MSVCP_exception_vtable
-# @ extern ??_7filebuf@@6B@  # const filebuf::`vftable'
+@ extern ??_7filebuf@@6B@ MSVCP_filebuf_vtable
 # @ extern ??_7fstream@@6B@  # const fstream::`vftable'
 # @ extern ??_7ifstream@@6B@  # const ifstream::`vftable'
 @ extern ??_7ios@@6B@ MSVCP_ios_vtable
@@ -362,7 +362,7 @@
 @ stub -arch=win32 ??_Dstrstream@@QAEXXZ  # void __thiscall strstream::`vbase destructor'(void)
 @ stub -arch=win64 ??_Dstrstream@@QEAAXXZ
 @ thiscall -arch=win32 ??_Eexception@@UAEPAXI at Z(ptr long) MSVCP_exception_vector_dtor
-@ stub -arch=win32 ??_Efilebuf@@UAEPAXI at Z  # virtual void * __thiscall filebuf::`vector deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Efilebuf@@UAEPAXI at Z(ptr long) filebuf_vector_dtor
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z  # virtual void * __thiscall fstream::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z  # virtual void * __thiscall ifstream::`vector deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Eios@@UAEPAXI at Z(ptr long) ios_vector_dtor
@@ -381,7 +381,7 @@
 @ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z  # virtual void * __thiscall strstream::`vector deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Estrstreambuf@@UAEPAXI at Z  # virtual void * __thiscall strstreambuf::`vector deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Gexception@@UAEPAXI at Z(ptr long) MSVCP_exception_scalar_dtor
-@ stub -arch=win32 ??_Gfilebuf@@UAEPAXI at Z  # virtual void * __thiscall filebuf::`scalar deleting destructor'(unsigned int)
+@ thiscall -arch=win32 ??_Gfilebuf@@UAEPAXI at Z(ptr long) filebuf_scalar_dtor
 @ stub -arch=win32 ??_Gfstream@@UAEPAXI at Z  # virtual void * __thiscall fstream::`scalar deleting destructor'(unsigned int)
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z  # virtual void * __thiscall ifstream::`scalar deleting destructor'(unsigned int)
 @ thiscall -arch=win32 ??_Gios@@UAEPAXI at Z(ptr long) ios_scalar_dtor
@@ -402,8 +402,8 @@
 @ extern ?adjustfield at ios@@2JB ios_adjustfield
 @ thiscall -arch=win32 ?allocate at streambuf@@IAEHXZ(ptr) streambuf_allocate
 @ cdecl -arch=win64 ?allocate at streambuf@@IEAAHXZ(ptr) streambuf_allocate
-@ stub -arch=win32 ?attach at filebuf@@QAEPAV1 at H@Z  # class filebuf * __thiscall filebuf::attach(int)
-@ stub -arch=win64 ?attach at filebuf@@QEAAPEAV1 at H@Z
+@ thiscall -arch=win32 ?attach at filebuf@@QAEPAV1 at H@Z(ptr long) filebuf_attach
+@ cdecl -arch=win64 ?attach at filebuf@@QEAAPEAV1 at H@Z(ptr long) filebuf_attach
 @ stub -arch=win32 ?attach at fstream@@QAEXH at Z  # void __thiscall fstream::attach(int)
 @ stub -arch=win64 ?attach at fstream@@QEAAXH at Z
 @ stub -arch=win32 ?attach at ifstream@@QAEXH at Z  # void __thiscall ifstream::attach(int)
@@ -424,8 +424,8 @@
 @ thiscall -arch=win32 ?clear at ios@@QAEXH at Z(ptr long) ios_clear
 @ cdecl -arch=win64 ?clear at ios@@QEAAXH at Z(ptr long) ios_clear
 @ stub ?clog@@3Vostream_withassign@@A  # class ostream_withassign clog
-@ stub -arch=win32 ?close at filebuf@@QAEPAV1 at XZ  # class filebuf * __thiscall filebuf::close(void)
-@ stub -arch=win64 ?close at filebuf@@QEAAPEAV1 at XZ
+@ thiscall -arch=win32 ?close at filebuf@@QAEPAV1 at XZ(ptr) filebuf_close
+@ cdecl -arch=win64 ?close at filebuf@@QEAAPEAV1 at XZ(ptr) filebuf_close
 @ stub -arch=win32 ?close at fstream@@QAEXXZ  # void __thiscall fstream::close(void)
 @ stub -arch=win64 ?close at fstream@@QEAAXXZ
 @ stub -arch=win32 ?close at ifstream@@QAEXXZ  # void __thiscall ifstream::close(void)
@@ -468,8 +468,8 @@
 @ extern ?fLockcInit at ios@@0HA ios_fLockcInit
 @ thiscall -arch=win32 ?fail at ios@@QBEHXZ(ptr) ios_fail
 @ cdecl -arch=win64 ?fail at ios@@QEBAHXZ(ptr) ios_fail
-@ stub -arch=win32 ?fd at filebuf@@QBEHXZ  # int __thiscall filebuf::fd(void)const 
-@ stub -arch=win64 ?fd at filebuf@@QEBAHXZ
+@ thiscall -arch=win32 ?fd at filebuf@@QBEHXZ(ptr) filebuf_fd
+@ cdecl -arch=win64 ?fd at filebuf@@QEBAHXZ(ptr) filebuf_fd
 @ stub -arch=win32 ?fd at fstream@@QBEHXZ  # int __thiscall fstream::fd(void)const 
 @ stub -arch=win64 ?fd at fstream@@QEBAHXZ
 @ stub -arch=win32 ?fd at ifstream@@QBEHXZ  # int __thiscall ifstream::fd(void)const 
@@ -537,8 +537,8 @@
 @ cdecl -arch=win64 ?init at ios@@IEAAXPEAVstreambuf@@@Z(ptr ptr) ios_init
 @ stub -arch=win32 ?ipfx at istream@@QAEHH at Z  # int __thiscall istream::ipfx(int)
 @ stub -arch=win64 ?ipfx at istream@@QEAAHH at Z
-@ stub -arch=win32 ?is_open at filebuf@@QBEHXZ  # int __thiscall filebuf::is_open(void)const 
-@ stub -arch=win64 ?is_open at filebuf@@QEBAHXZ
+@ thiscall -arch=win32 ?is_open at filebuf@@QBEHXZ(ptr) filebuf_is_open
+@ cdecl -arch=win64 ?is_open at filebuf@@QEBAHXZ(ptr) filebuf_is_open
 @ stub -arch=win32 ?is_open at fstream@@QBEHXZ  # int __thiscall fstream::is_open(void)const 
 @ stub -arch=win64 ?is_open at fstream@@QEBAHXZ
 @ stub -arch=win32 ?is_open at ifstream@@QBEHXZ  # int __thiscall ifstream::is_open(void)const 
@@ -562,8 +562,8 @@
 @ cdecl -arch=win64 ?lockptr at streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) streambuf_lockptr
 @ cdecl -arch=win32 ?oct@@YAAAVios@@AAV1@@Z(ptr) ios_oct
 @ cdecl -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z(ptr) ios_oct
-@ stub -arch=win32 ?open at filebuf@@QAEPAV1 at PBDHH@Z  # class filebuf * __thiscall filebuf::open(char const *,int,int)
-@ stub -arch=win64 ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z
+@ thiscall -arch=win32 ?open at filebuf@@QAEPAV1 at PBDHH@Z(ptr str long long) filebuf_open
+@ cdecl -arch=win64 ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z(ptr str long long) filebuf_open
 @ stub -arch=win32 ?open at fstream@@QAEXPBDHH at Z  # void __thiscall fstream::open(char const *,int,int)
 @ stub -arch=win64 ?open at fstream@@QEAAXPEBDHH at Z
 @ stub -arch=win32 ?open at ifstream@@QAEXPBDHH at Z  # void __thiscall ifstream::open(char const *,int,int)
@@ -577,8 +577,8 @@
 @ stub -arch=win64 ?osfx at ostream@@QEAAXXZ
 @ thiscall -arch=win32 ?out_waiting at streambuf@@QBEHXZ(ptr) streambuf_out_waiting
 @ cdecl -arch=win64 ?out_waiting at streambuf@@QEBAHXZ(ptr) streambuf_out_waiting
-@ stub -arch=win32 ?overflow at filebuf@@UAEHH at Z  # virtual int __thiscall filebuf::overflow(int)
-@ stub -arch=win64 ?overflow at filebuf@@UEAAHH at Z
+@ thiscall -arch=win32 ?overflow at filebuf@@UAEHH at Z(ptr long) filebuf_overflow
+@ cdecl -arch=win64 ?overflow at filebuf@@UEAAHH at Z(ptr long) filebuf_overflow
 @ stub -arch=win32 ?overflow at stdiobuf@@UAEHH at Z  # virtual int __thiscall stdiobuf::overflow(int)
 @ stub -arch=win64 ?overflow at stdiobuf@@UEAAHH at Z
 @ stub -arch=win32 ?overflow at strstreambuf@@UAEHH at Z  # virtual int __thiscall strstreambuf::overflow(int)
@@ -643,8 +643,8 @@
 @ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at J@Z
 @ stub -arch=win32 ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z  # class istream & __thiscall istream::seekg(long,enum ios::seek_dir)
 @ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
-@ stub -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z  # virtual long __thiscall filebuf::seekoff(long,enum ios::seek_dir,int)
-@ stub -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z
+@ thiscall -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) filebuf_seekoff
+@ cdecl -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) filebuf_seekoff
 @ stub -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z  # virtual long __thiscall stdiobuf::seekoff(long,enum ios::seek_dir,int)
 @ stub -arch=win64 ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ thiscall -arch=win32 ?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) streambuf_seekoff
@@ -659,8 +659,8 @@
 @ cdecl -arch=win64 ?seekpos at streambuf@@UEAAJJH at Z(ptr long long) streambuf_seekpos
 @ thiscall -arch=win32 ?setb at streambuf@@IAEXPAD0H at Z(ptr ptr ptr long) streambuf_setb
 @ cdecl -arch=win64 ?setb at streambuf@@IEAAXPEAD0H at Z(ptr ptr ptr long) streambuf_setb
-@ stub -arch=win32 ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z  # virtual class streambuf * __thiscall filebuf::setbuf(char *,int)
-@ stub -arch=win64 ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z
+@ thiscall -arch=win32 ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z(ptr ptr long) filebuf_setbuf
+@ cdecl -arch=win64 ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z(ptr ptr long) filebuf_setbuf
 @ stub -arch=win32 ?setbuf at fstream@@QAEPAVstreambuf@@PADH at Z  # class streambuf * __thiscall fstream::setbuf(char *,int)
 @ stub -arch=win64 ?setbuf at fstream@@QEAAPEAVstreambuf@@PEADH at Z
 @ stub -arch=win32 ?setbuf at ifstream@@QAEPAVstreambuf@@PADH at Z  # class streambuf * __thiscall ifstream::setbuf(char *,int)
@@ -681,8 +681,8 @@
 @ cdecl -arch=win64 ?setlock at ios@@QEAAXXZ(ptr) ios_setlock
 @ thiscall -arch=win32 ?setlock at streambuf@@QAEXXZ(ptr) streambuf_setlock
 @ cdecl -arch=win64 ?setlock at streambuf@@QEAAXXZ(ptr) streambuf_setlock
-@ stub -arch=win32 ?setmode at filebuf@@QAEHH at Z  # int __thiscall filebuf::setmode(int)
-@ stub -arch=win64 ?setmode at filebuf@@QEAAHH at Z
+@ thiscall -arch=win32 ?setmode at filebuf@@QAEHH at Z(ptr long) filebuf_setmode
+@ cdecl -arch=win64 ?setmode at filebuf@@QEAAHH at Z(ptr long) filebuf_setmode
 @ stub -arch=win32 ?setmode at fstream@@QAEHH at Z  # int __thiscall fstream::setmode(int)
 @ stub -arch=win64 ?setmode at fstream@@QEAAHH at Z
 @ stub -arch=win32 ?setmode at ifstream@@QAEHH at Z  # int __thiscall ifstream::setmode(int)
@@ -721,8 +721,8 @@
 @ thiscall -arch=win32 ?str at strstreambuf@@QAEPADXZ(ptr) MSVCIRT_str_sl_void  # char * __thiscall strstreambuf::str(void)
 @ cdecl -arch=win64 ?str at strstreambuf@@QEAAPEADXZ(ptr) MSVCIRT_str_sl_void
 # @ extern ?sunk_with_stdio at ios@@0HA  # static int ios::sunk_with_stdio
-@ stub -arch=win32 ?sync at filebuf@@UAEHXZ  # virtual int __thiscall filebuf::sync(void)
-@ stub -arch=win64 ?sync at filebuf@@UEAAHXZ
+@ thiscall -arch=win32 ?sync at filebuf@@UAEHXZ(ptr) filebuf_sync
+@ cdecl -arch=win64 ?sync at filebuf@@UEAAHXZ(ptr) filebuf_sync
 @ stub -arch=win32 ?sync at istream@@QAEHXZ  # int __thiscall istream::sync(void)
 @ stub -arch=win64 ?sync at istream@@QEAAHXZ
 @ stub -arch=win32 ?sync at stdiobuf@@UAEHXZ  # virtual int __thiscall stdiobuf::sync(void)
@@ -745,8 +745,8 @@
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEAAXH at Z(ptr long) streambuf_unbuffered_set
 @ thiscall -arch=win32 ?unbuffered at streambuf@@IBEHXZ(ptr) streambuf_unbuffered_get
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEBAHXZ(ptr) streambuf_unbuffered_get
-@ stub -arch=win32 ?underflow at filebuf@@UAEHXZ  # virtual int __thiscall filebuf::underflow(void)
-@ stub -arch=win64 ?underflow at filebuf@@UEAAHXZ
+@ thiscall -arch=win32 ?underflow at filebuf@@UAEHXZ(ptr) filebuf_underflow
+@ cdecl -arch=win64 ?underflow at filebuf@@UEAAHXZ(ptr) filebuf_underflow
 @ stub -arch=win32 ?underflow at stdiobuf@@UAEHXZ  # virtual int __thiscall stdiobuf::underflow(void)
 @ stub -arch=win64 ?underflow at stdiobuf@@UEAAHXZ
 @ stub -arch=win32 ?underflow at strstreambuf@@UAEHXZ  # virtual int __thiscall strstreambuf::underflow(void)
diff --git a/dlls/msvcrt20/msvcrt20.spec b/dlls/msvcrt20/msvcrt20.spec
index 1206715..ab59dde 100644
--- a/dlls/msvcrt20/msvcrt20.spec
+++ b/dlls/msvcrt20/msvcrt20.spec
@@ -2,14 +2,14 @@
 @ stub -arch=win64 ??0Iostream_init@@QEAA at AEAVios@@H at Z
 @ stub -arch=win32 ??0Iostream_init@@QAE at XZ
 @ stub -arch=win64 ??0Iostream_init@@QEAA at XZ
-@ stub -arch=win32 ??0filebuf@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0filebuf@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0filebuf@@QAE at H@Z
-@ stub -arch=win64 ??0filebuf@@QEAA at H@Z
-@ stub -arch=win32 ??0filebuf@@QAE at HPADH@Z
-@ stub -arch=win64 ??0filebuf@@QEAA at HPEADH@Z
-@ stub -arch=win32 ??0filebuf@@QAE at XZ
-@ stub -arch=win64 ??0filebuf@@QEAA at XZ
+@ thiscall -arch=win32 ??0filebuf@@QAE at ABV0@@Z(ptr ptr) msvcirt.??0filebuf@@QAE at ABV0@@Z
+@ cdecl -arch=win64 ??0filebuf@@QEAA at AEBV0@@Z(ptr ptr) msvcirt.??0filebuf@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0filebuf@@QAE at H@Z(ptr long) msvcirt.??0filebuf@@QAE at H@Z
+@ cdecl -arch=win64 ??0filebuf@@QEAA at H@Z(ptr long) msvcirt.??0filebuf@@QEAA at H@Z
+@ thiscall -arch=win32 ??0filebuf@@QAE at HPADH@Z(ptr long ptr long) msvcirt.??0filebuf@@QAE at HPADH@Z
+@ cdecl -arch=win64 ??0filebuf@@QEAA at HPEADH@Z(ptr long ptr long) msvcirt.??0filebuf@@QEAA at HPEADH@Z
+@ thiscall -arch=win32 ??0filebuf@@QAE at XZ(ptr) msvcirt.??0filebuf@@QAE at XZ
+@ cdecl -arch=win64 ??0filebuf@@QEAA at XZ(ptr) msvcirt.??0filebuf@@QEAA at XZ
 @ stub -arch=win32 ??0fstream@@QAE at ABV0@@Z
 @ stub -arch=win64 ??0fstream@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0fstream@@QAE at H@Z
@@ -120,8 +120,8 @@
 @ stub -arch=win64 ??0strstreambuf@@QEAA at XZ
 @ stub -arch=win32 ??1Iostream_init@@QAE at XZ
 @ stub -arch=win64 ??1Iostream_init@@QEAA at XZ
-@ stub -arch=win32 ??1filebuf@@UAE at XZ
-@ stub -arch=win64 ??1filebuf@@UEAA at XZ
+@ thiscall -arch=win32 ??1filebuf@@UAE at XZ(ptr) msvcirt.??1filebuf@@UAE at XZ
+@ cdecl -arch=win64 ??1filebuf@@UEAA at XZ(ptr) msvcirt.??1filebuf@@UEAA at XZ
 @ stub -arch=win32 ??1fstream@@UAE at XZ
 @ stub -arch=win64 ??1fstream@@UEAA at XZ
 @ stub -arch=win32 ??1ifstream@@UAE at XZ
@@ -160,8 +160,8 @@
 @ cdecl -arch=win64 ??3 at YAXPEAX@Z(ptr) msvcrt.??3 at YAXPEAX@Z
 @ stub -arch=win32 ??4Iostream_init@@QAEAAV0 at ABV0@@Z
 @ stub -arch=win64 ??4Iostream_init@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4filebuf@@QAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4filebuf@@QEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4filebuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4filebuf@@QAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4filebuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4filebuf@@QEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4fstream@@QAEAAV0 at AAV0@@Z
 @ stub -arch=win64 ??4fstream@@QEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4ifstream@@QAEAAV0 at ABV0@@Z
@@ -286,7 +286,7 @@
 @ cdecl -arch=win64 ??7ios@@QEBAHXZ(ptr) msvcirt.??7ios@@QEBAHXZ
 @ thiscall -arch=win32 ??Bios@@QBEPAXXZ(ptr) msvcirt.??Bios@@QBEPAXXZ
 @ cdecl -arch=win64 ??Bios@@QEBAPEAXXZ(ptr) msvcirt.??Bios@@QEBAPEAXXZ
-# @ extern ??_7filebuf@@6B@
+@ extern ??_7filebuf@@6B@ msvcirt.??_7filebuf@@6B@
 # @ extern ??_7fstream@@6B@
 # @ extern ??_7ifstream@@6B@
 @ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
@@ -344,7 +344,7 @@
 @ stub -arch=win32 ??_Dstrstream@@QAEXXZ
 @ stub -arch=win64 ??_Dstrstream@@QEAAXXZ
 @ stub -arch=win32 ??_EIostream_init@@QAEPAXI at Z
-@ stub -arch=win32 ??_Efilebuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Efilebuf@@UAEPAXI at Z(ptr long) msvcirt.??_Efilebuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eios@@UAEPAXI at Z(ptr long) msvcirt.??_Eios@@UAEPAXI at Z
@@ -362,7 +362,7 @@
 @ stub -arch=win32 ??_Estrstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Estrstreambuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_GIostream_init@@QAEPAXI at Z
-@ stub -arch=win32 ??_Gfilebuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gfilebuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gfilebuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gfstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gios@@UAEPAXI at Z(ptr long) msvcirt.??_Gios@@UAEPAXI at Z
@@ -390,8 +390,8 @@
 @ extern ?adjustfield at ios@@2JB msvcirt.?adjustfield at ios@@2JB
 @ thiscall -arch=win32 ?allocate at streambuf@@IAEHXZ(ptr) msvcirt.?allocate at streambuf@@IAEHXZ
 @ cdecl -arch=win64 ?allocate at streambuf@@IEAAHXZ(ptr) msvcirt.?allocate at streambuf@@IEAAHXZ
-@ stub -arch=win32 ?attach at filebuf@@QAEPAV1 at H@Z
-@ stub -arch=win64 ?attach at filebuf@@QEAAPEAV1 at H@Z
+@ thiscall -arch=win32 ?attach at filebuf@@QAEPAV1 at H@Z(ptr long) msvcirt.?attach at filebuf@@QAEPAV1 at H@Z
+@ cdecl -arch=win64 ?attach at filebuf@@QEAAPEAV1 at H@Z(ptr long) msvcirt.?attach at filebuf@@QEAAPEAV1 at H@Z
 @ stub -arch=win32 ?attach at fstream@@QAEXH at Z
 @ stub -arch=win64 ?attach at fstream@@QEAAXH at Z
 @ stub -arch=win32 ?attach at ifstream@@QAEXH at Z
@@ -412,8 +412,8 @@
 @ thiscall -arch=win32 ?clear at ios@@QAEXH at Z(ptr long) msvcirt.?clear at ios@@QAEXH at Z
 @ cdecl -arch=win64 ?clear at ios@@QEAAXH at Z(ptr long) msvcirt.?clear at ios@@QEAAXH at Z
 @ stub ?clog@@3Vostream_withassign@@A
-@ stub -arch=win32 ?close at filebuf@@QAEPAV1 at XZ
-@ stub -arch=win64 ?close at filebuf@@QEAAPEAV1 at XZ
+@ thiscall -arch=win32 ?close at filebuf@@QAEPAV1 at XZ(ptr) msvcirt.?close at filebuf@@QAEPAV1 at XZ
+@ cdecl -arch=win64 ?close at filebuf@@QEAAPEAV1 at XZ(ptr) msvcirt.?close at filebuf@@QEAAPEAV1 at XZ
 @ stub -arch=win32 ?close at fstream@@QAEXXZ
 @ stub -arch=win64 ?close at fstream@@QEAAXXZ
 @ stub -arch=win32 ?close at ifstream@@QAEXXZ
@@ -456,8 +456,8 @@
 @ extern ?fLockcInit at ios@@0HA msvcirt.?fLockcInit at ios@@0HA
 @ thiscall -arch=win32 ?fail at ios@@QBEHXZ(ptr) msvcirt.?fail at ios@@QBEHXZ
 @ cdecl -arch=win64 ?fail at ios@@QEBAHXZ(ptr) msvcirt.?fail at ios@@QEBAHXZ
-@ stub -arch=win32 ?fd at filebuf@@QBEHXZ
-@ stub -arch=win64 ?fd at filebuf@@QEBAHXZ
+@ thiscall -arch=win32 ?fd at filebuf@@QBEHXZ(ptr) msvcirt.?fd at filebuf@@QBEHXZ
+@ cdecl -arch=win64 ?fd at filebuf@@QEBAHXZ(ptr) msvcirt.?fd at filebuf@@QEBAHXZ
 @ stub -arch=win32 ?fd at fstream@@QBEHXZ
 @ stub -arch=win64 ?fd at fstream@@QEBAHXZ
 @ stub -arch=win32 ?fd at ifstream@@QBEHXZ
@@ -523,8 +523,8 @@
 @ cdecl -arch=win64 ?init at ios@@IEAAXPEAVstreambuf@@@Z(ptr ptr) msvcirt.?init at ios@@IEAAXPEAVstreambuf@@@Z
 @ stub -arch=win32 ?ipfx at istream@@QAEHH at Z
 @ stub -arch=win64 ?ipfx at istream@@QEAAHH at Z
-@ stub -arch=win32 ?is_open at filebuf@@QBEHXZ
-@ stub -arch=win64 ?is_open at filebuf@@QEBAHXZ
+@ thiscall -arch=win32 ?is_open at filebuf@@QBEHXZ(ptr) msvcirt.?is_open at filebuf@@QBEHXZ
+@ cdecl -arch=win64 ?is_open at filebuf@@QEBAHXZ(ptr) msvcirt.?is_open at filebuf@@QEBAHXZ
 @ stub -arch=win32 ?is_open at fstream@@QBEHXZ
 @ stub -arch=win64 ?is_open at fstream@@QEBAHXZ
 @ stub -arch=win32 ?is_open at ifstream@@QBEHXZ
@@ -548,8 +548,8 @@
 @ cdecl -arch=win64 ?lockptr at streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ(ptr) msvcirt.?lockptr at streambuf@@IEAAPEAU_CRT_CRITICAL_SECTION@@XZ
 @ cdecl -arch=win32 ?oct@@YAAAVios@@AAV1@@Z(ptr) msvcirt.?oct@@YAAAVios@@AAV1@@Z
 @ cdecl -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?oct@@YAAEAVios@@AEAV1@@Z
-@ stub -arch=win32 ?open at filebuf@@QAEPAV1 at PBDHH@Z
-@ stub -arch=win64 ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z
+@ thiscall -arch=win32 ?open at filebuf@@QAEPAV1 at PBDHH@Z(ptr str long long) msvcirt.?open at filebuf@@QAEPAV1 at PBDHH@Z
+@ cdecl -arch=win64 ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z(ptr str long long) msvcirt.?open at filebuf@@QEAAPEAV1 at PEBDHH@Z
 @ stub -arch=win32 ?open at fstream@@QAEXPBDHH at Z
 @ stub -arch=win64 ?open at fstream@@QEAAXPEBDHH at Z
 @ stub -arch=win32 ?open at ifstream@@QAEXPBDHH at Z
@@ -563,8 +563,8 @@
 @ stub -arch=win64 ?osfx at ostream@@QEAAXXZ
 @ thiscall -arch=win32 ?out_waiting at streambuf@@QBEHXZ(ptr) msvcirt.?out_waiting at streambuf@@QBEHXZ
 @ cdecl -arch=win64 ?out_waiting at streambuf@@QEBAHXZ(ptr) msvcirt.?out_waiting at streambuf@@QEBAHXZ
-@ stub -arch=win32 ?overflow at filebuf@@UAEHH at Z
-@ stub -arch=win64 ?overflow at filebuf@@UEAAHH at Z
+@ thiscall -arch=win32 ?overflow at filebuf@@UAEHH at Z(ptr long) msvcirt.?overflow at filebuf@@UAEHH at Z
+@ cdecl -arch=win64 ?overflow at filebuf@@UEAAHH at Z(ptr long) msvcirt.?overflow at filebuf@@UEAAHH at Z
 @ stub -arch=win32 ?overflow at stdiobuf@@UAEHH at Z
 @ stub -arch=win64 ?overflow at stdiobuf@@UEAAHH at Z
 @ stub -arch=win32 ?overflow at strstreambuf@@UAEHH at Z
@@ -629,8 +629,8 @@
 @ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at J@Z
 @ stub -arch=win32 ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z
 @ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
-@ stub -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z
-@ stub -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z
+@ thiscall -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z
+@ cdecl -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ stub -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z
 @ stub -arch=win64 ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ thiscall -arch=win32 ?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z
@@ -647,8 +647,8 @@
 @ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ at Z(ptr) msvcrt.?set_unexpected@@YAP6AXXZP6AXXZ at Z
 @ thiscall -arch=win32 ?setb at streambuf@@IAEXPAD0H at Z(ptr ptr ptr long) msvcirt.?setb at streambuf@@IAEXPAD0H at Z
 @ cdecl -arch=win64 ?setb at streambuf@@IEAAXPEAD0H at Z(ptr ptr ptr long) msvcirt.?setb at streambuf@@IEAAXPEAD0H at Z
-@ stub -arch=win32 ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z
-@ stub -arch=win64 ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z
+@ thiscall -arch=win32 ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z(ptr ptr long) msvcirt.?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z
+@ cdecl -arch=win64 ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z(ptr ptr long) msvcirt.?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z
 @ stub -arch=win32 ?setbuf at fstream@@QAEPAVstreambuf@@PADH at Z
 @ stub -arch=win64 ?setbuf at fstream@@QEAAPEAVstreambuf@@PEADH at Z
 @ stub -arch=win32 ?setbuf at ifstream@@QAEPAVstreambuf@@PADH at Z
@@ -669,8 +669,8 @@
 @ cdecl -arch=win64 ?setlock at ios@@QEAAXXZ(ptr) msvcirt.?setlock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?setlock at streambuf@@QAEXXZ(ptr) msvcirt.?setlock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?setlock at streambuf@@QEAAXXZ(ptr) msvcirt.?setlock at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?setmode at filebuf@@QAEHH at Z
-@ stub -arch=win64 ?setmode at filebuf@@QEAAHH at Z
+@ thiscall -arch=win32 ?setmode at filebuf@@QAEHH at Z(ptr long) msvcirt.?setmode at filebuf@@QAEHH at Z
+@ cdecl -arch=win64 ?setmode at filebuf@@QEAAHH at Z(ptr long) msvcirt.?setmode at filebuf@@QEAAHH at Z
 @ stub -arch=win32 ?setmode at fstream@@QAEHH at Z
 @ stub -arch=win64 ?setmode at fstream@@QEAAHH at Z
 @ stub -arch=win32 ?setmode at ifstream@@QAEHH at Z
@@ -709,8 +709,8 @@
 @ thiscall -arch=win32 ?str at strstreambuf@@QAEPADXZ(ptr) msvcirt.?str at strstreambuf@@QAEPADXZ
 @ cdecl -arch=win64 ?str at strstreambuf@@QEAAPEADXZ(ptr) msvcirt.?str at strstreambuf@@QEAAPEADXZ
 # @ extern ?sunk_with_stdio at ios@@0HA
-@ stub -arch=win32 ?sync at filebuf@@UAEHXZ
-@ stub -arch=win64 ?sync at filebuf@@UEAAHXZ
+@ thiscall -arch=win32 ?sync at filebuf@@UAEHXZ(ptr) msvcirt.?sync at filebuf@@UAEHXZ
+@ cdecl -arch=win64 ?sync at filebuf@@UEAAHXZ(ptr) msvcirt.?sync at filebuf@@UEAAHXZ
 @ stub -arch=win32 ?sync at istream@@QAEHXZ
 @ stub -arch=win64 ?sync at istream@@QEAAHXZ
 @ stub -arch=win32 ?sync at stdiobuf@@UAEHXZ
@@ -734,8 +734,8 @@
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEAAXH at Z(ptr long) msvcirt.?unbuffered at streambuf@@IEAAXH at Z
 @ thiscall -arch=win32 ?unbuffered at streambuf@@IBEHXZ(ptr) msvcirt.?unbuffered at streambuf@@IBEHXZ
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEBAHXZ(ptr) msvcirt.?unbuffered at streambuf@@IEBAHXZ
-@ stub -arch=win32 ?underflow at filebuf@@UAEHXZ
-@ stub -arch=win64 ?underflow at filebuf@@UEAAHXZ
+@ thiscall -arch=win32 ?underflow at filebuf@@UAEHXZ(ptr) msvcirt.?underflow at filebuf@@UAEHXZ
+@ cdecl -arch=win64 ?underflow at filebuf@@UEAAHXZ(ptr) msvcirt.?underflow at filebuf@@UEAAHXZ
 @ stub -arch=win32 ?underflow at stdiobuf@@UAEHXZ
 @ stub -arch=win64 ?underflow at stdiobuf@@UEAAHXZ
 @ stub -arch=win32 ?underflow at strstreambuf@@UAEHXZ
diff --git a/dlls/msvcrt40/msvcrt40.spec b/dlls/msvcrt40/msvcrt40.spec
index f944408..0f5811a 100644
--- a/dlls/msvcrt40/msvcrt40.spec
+++ b/dlls/msvcrt40/msvcrt40.spec
@@ -20,14 +20,14 @@
 @ cdecl -arch=win64 ??0exception@@QEAA at AEBV0@@Z(ptr ptr) msvcrt.??0exception@@QEAA at AEBV0@@Z
 @ thiscall -arch=i386 ??0exception@@QAE at XZ(ptr) msvcrt.??0exception@@QAE at XZ
 @ cdecl -arch=win64 ??0exception@@QEAA at XZ(ptr) msvcrt.??0exception@@QEAA at XZ
-@ stub -arch=win32 ??0filebuf@@QAE at ABV0@@Z
-@ stub -arch=win64 ??0filebuf@@QEAA at AEBV0@@Z
-@ stub -arch=win32 ??0filebuf@@QAE at H@Z
-@ stub -arch=win64 ??0filebuf@@QEAA at H@Z
-@ stub -arch=win32 ??0filebuf@@QAE at HPADH@Z
-@ stub -arch=win64 ??0filebuf@@QEAA at HPEADH@Z
-@ stub -arch=win32 ??0filebuf@@QAE at XZ
-@ stub -arch=win64 ??0filebuf@@QEAA at XZ
+@ thiscall -arch=win32 ??0filebuf@@QAE at ABV0@@Z(ptr ptr) msvcirt.??0filebuf@@QAE at ABV0@@Z
+@ cdecl -arch=win64 ??0filebuf@@QEAA at AEBV0@@Z(ptr ptr) msvcirt.??0filebuf@@QEAA at AEBV0@@Z
+@ thiscall -arch=win32 ??0filebuf@@QAE at H@Z(ptr long) msvcirt.??0filebuf@@QAE at H@Z
+@ cdecl -arch=win64 ??0filebuf@@QEAA at H@Z(ptr long) msvcirt.??0filebuf@@QEAA at H@Z
+@ thiscall -arch=win32 ??0filebuf@@QAE at HPADH@Z(ptr long ptr long) msvcirt.??0filebuf@@QAE at HPADH@Z
+@ cdecl -arch=win64 ??0filebuf@@QEAA at HPEADH@Z(ptr long ptr long) msvcirt.??0filebuf@@QEAA at HPEADH@Z
+@ thiscall -arch=win32 ??0filebuf@@QAE at XZ(ptr) msvcirt.??0filebuf@@QAE at XZ
+@ cdecl -arch=win64 ??0filebuf@@QEAA at XZ(ptr) msvcirt.??0filebuf@@QEAA at XZ
 @ stub -arch=win32 ??0fstream@@QAE at ABV0@@Z
 @ stub -arch=win64 ??0fstream@@QEAA at AEBV0@@Z
 @ stub -arch=win32 ??0fstream@@QAE at H@Z
@@ -150,8 +150,8 @@
 @ cdecl -arch=win64 ??1bad_typeid@@UEAA at XZ(ptr) msvcrt.??1bad_typeid@@UEAA at XZ
 @ thiscall -arch=i386 ??1exception@@UAE at XZ(ptr) msvcrt.??1exception@@UAE at XZ
 @ cdecl -arch=win64 ??1exception@@UEAA at XZ(ptr) msvcrt.??1exception@@UEAA at XZ
-@ stub -arch=win32 ??1filebuf@@UAE at XZ
-@ stub -arch=win64 ??1filebuf@@UEAA at XZ
+@ thiscall -arch=win32 ??1filebuf@@UAE at XZ(ptr) msvcirt.??1filebuf@@UAE at XZ
+@ cdecl -arch=win64 ??1filebuf@@UEAA at XZ(ptr) msvcirt.??1filebuf@@UEAA at XZ
 @ stub -arch=win32 ??1fstream@@UAE at XZ
 @ stub -arch=win64 ??1fstream@@UEAA at XZ
 @ stub -arch=win32 ??1ifstream@@UAE at XZ
@@ -202,8 +202,8 @@
 @ cdecl -arch=win64 ??4bad_typeid@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcrt.??4bad_typeid@@QEAAAEAV0 at AEBV0@@Z
 @ thiscall -arch=i386 ??4exception@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcrt.??4exception@@QAEAAV0 at ABV0@@Z
 @ cdecl -arch=win64 ??4exception@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcrt.??4exception@@QEAAAEAV0 at AEBV0@@Z
-@ stub -arch=win32 ??4filebuf@@QAEAAV0 at ABV0@@Z
-@ stub -arch=win64 ??4filebuf@@QEAAAEAV0 at AEBV0@@Z
+@ thiscall -arch=win32 ??4filebuf@@QAEAAV0 at ABV0@@Z(ptr ptr) msvcirt.??4filebuf@@QAEAAV0 at ABV0@@Z
+@ cdecl -arch=win64 ??4filebuf@@QEAAAEAV0 at AEBV0@@Z(ptr ptr) msvcirt.??4filebuf@@QEAAAEAV0 at AEBV0@@Z
 @ stub -arch=win32 ??4fstream@@QAEAAV0 at AAV0@@Z
 @ stub -arch=win64 ??4fstream@@QEAAAEAV0 at AEAV0@@Z
 @ stub -arch=win32 ??4ifstream@@QAEAAV0 at ABV0@@Z
@@ -338,7 +338,7 @@
 @ extern ??_7bad_cast@@6B@ msvcrt.??_7bad_cast@@6B@
 @ extern ??_7bad_typeid@@6B@ msvcrt.??_7bad_typeid@@6B@
 @ extern ??_7exception@@6B@ msvcrt.??_7exception@@6B@
-# @ extern ??_7filebuf@@6B@
+@ extern ??_7filebuf@@6B@ msvcirt.??_7filebuf@@6B@
 # @ extern ??_7fstream@@6B@
 # @ extern ??_7ifstream@@6B@
 @ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
@@ -401,7 +401,7 @@
 @ thiscall -arch=win32 ??_Ebad_cast@@UAEPAXI at Z(ptr long) msvcrt.??_Ebad_cast@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Ebad_typeid@@UAEPAXI at Z(ptr long) msvcrt.??_Ebad_typeid@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eexception@@UAEPAXI at Z(ptr long) msvcrt.??_Eexception@@UAEPAXI at Z
-@ stub -arch=win32 ??_Efilebuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Efilebuf@@UAEPAXI at Z(ptr long) msvcirt.??_Efilebuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Efstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Eifstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Eios@@UAEPAXI at Z(ptr long) msvcirt.??_Eios@@UAEPAXI at Z
@@ -424,7 +424,7 @@
 @ thiscall -arch=win32 ??_Gbad_cast@@UAEPAXI at Z(ptr long) msvcrt.??_Gbad_cast@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gbad_typeid@@UAEPAXI at Z(ptr long) msvcrt.??_Gbad_typeid@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gexception@@UAEPAXI at Z(ptr long) msvcrt.??_Gexception@@UAEPAXI at Z
-@ stub -arch=win32 ??_Gfilebuf@@UAEPAXI at Z
+@ thiscall -arch=win32 ??_Gfilebuf@@UAEPAXI at Z(ptr long) msvcirt.??_Gfilebuf@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gfstream@@UAEPAXI at Z
 @ stub -arch=win32 ??_Gifstream@@UAEPAXI at Z
 @ thiscall -arch=win32 ??_Gios@@UAEPAXI at Z(ptr long) msvcirt.??_Gios@@UAEPAXI at Z
@@ -453,8 +453,8 @@
 @ extern ?adjustfield at ios@@2JB msvcirt.?adjustfield at ios@@2JB
 @ thiscall -arch=win32 ?allocate at streambuf@@IAEHXZ(ptr) msvcirt.?allocate at streambuf@@IAEHXZ
 @ cdecl -arch=win64 ?allocate at streambuf@@IEAAHXZ(ptr) msvcirt.?allocate at streambuf@@IEAAHXZ
-@ stub -arch=win32 ?attach at filebuf@@QAEPAV1 at H@Z
-@ stub -arch=win64 ?attach at filebuf@@QEAAPEAV1 at H@Z
+@ thiscall -arch=win32 ?attach at filebuf@@QAEPAV1 at H@Z(ptr long) msvcirt.?attach at filebuf@@QAEPAV1 at H@Z
+@ cdecl -arch=win64 ?attach at filebuf@@QEAAPEAV1 at H@Z(ptr long) msvcirt.?attach at filebuf@@QEAAPEAV1 at H@Z
 @ stub -arch=win32 ?attach at fstream@@QAEXH at Z
 @ stub -arch=win64 ?attach at fstream@@QEAAXH at Z
 @ stub -arch=win32 ?attach at ifstream@@QAEXH at Z
@@ -477,8 +477,8 @@
 @ thiscall -arch=win32 ?clear at ios@@QAEXH at Z(ptr long) msvcirt.?clear at ios@@QAEXH at Z
 @ cdecl -arch=win64 ?clear at ios@@QEAAXH at Z(ptr long) msvcirt.?clear at ios@@QEAAXH at Z
 @ stub ?clog@@3Vostream_withassign@@A
-@ stub -arch=win32 ?close at filebuf@@QAEPAV1 at XZ
-@ stub -arch=win64 ?close at filebuf@@QEAAPEAV1 at XZ
+@ thiscall -arch=win32 ?close at filebuf@@QAEPAV1 at XZ(ptr) msvcirt.?close at filebuf@@QAEPAV1 at XZ
+@ cdecl -arch=win64 ?close at filebuf@@QEAAPEAV1 at XZ(ptr) msvcirt.?close at filebuf@@QEAAPEAV1 at XZ
 @ stub -arch=win32 ?close at fstream@@QAEXXZ
 @ stub -arch=win64 ?close at fstream@@QEAAXXZ
 @ stub -arch=win32 ?close at ifstream@@QAEXXZ
@@ -521,8 +521,8 @@
 @ extern ?fLockcInit at ios@@0HA msvcirt.?fLockcInit at ios@@0HA
 @ thiscall -arch=win32 ?fail at ios@@QBEHXZ(ptr) msvcirt.?fail at ios@@QBEHXZ
 @ cdecl -arch=win64 ?fail at ios@@QEBAHXZ(ptr) msvcirt.?fail at ios@@QEBAHXZ
-@ stub -arch=win32 ?fd at filebuf@@QBEHXZ
-@ stub -arch=win64 ?fd at filebuf@@QEBAHXZ
+@ thiscall -arch=win32 ?fd at filebuf@@QBEHXZ(ptr) msvcirt.?fd at filebuf@@QBEHXZ
+@ cdecl -arch=win64 ?fd at filebuf@@QEBAHXZ(ptr) msvcirt.?fd at filebuf@@QEBAHXZ
 @ stub -arch=win32 ?fd at fstream@@QBEHXZ
 @ stub -arch=win64 ?fd at fstream@@QEBAHXZ
 @ stub -arch=win32 ?fd at ifstream@@QBEHXZ
@@ -590,8 +590,8 @@
 @ cdecl -arch=win64 ?init at ios@@IEAAXPEAVstreambuf@@@Z(ptr ptr) msvcirt.?init at ios@@IEAAXPEAVstreambuf@@@Z
 @ stub -arch=win32 ?ipfx at istream@@QAEHH at Z
 @ stub -arch=win64 ?ipfx at istream@@QEAAHH at Z
-@ stub -arch=win32 ?is_open at filebuf@@QBEHXZ
-@ stub -arch=win64 ?is_open at filebuf@@QEBAHXZ
+@ thiscall -arch=win32 ?is_open at filebuf@@QBEHXZ(ptr) msvcirt.?is_open at filebuf@@QBEHXZ
+@ cdecl -arch=win64 ?is_open at filebuf@@QEBAHXZ(ptr) msvcirt.?is_open at filebuf@@QEBAHXZ
 @ stub -arch=win32 ?is_open at fstream@@QBEHXZ
 @ stub -arch=win64 ?is_open at fstream@@QEBAHXZ
 @ stub -arch=win32 ?is_open at ifstream@@QBEHXZ
@@ -617,8 +617,8 @@
 @ cdecl -arch=win64 ?name at type_info@@QEBAPEBDXZ(ptr) msvcrt.?name at type_info@@QEBAPEBDXZ
 @ cdecl -arch=win32 ?oct@@YAAAVios@@AAV1@@Z(ptr) msvcirt.?oct@@YAAAVios@@AAV1@@Z
 @ cdecl -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?oct@@YAAEAVios@@AEAV1@@Z
-@ stub -arch=win32 ?open at filebuf@@QAEPAV1 at PBDHH@Z
-@ stub -arch=win64 ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z
+@ thiscall -arch=win32 ?open at filebuf@@QAEPAV1 at PBDHH@Z(ptr str long long) msvcirt.?open at filebuf@@QAEPAV1 at PBDHH@Z
+@ cdecl -arch=win64 ?open at filebuf@@QEAAPEAV1 at PEBDHH@Z(ptr str long long) msvcirt.?open at filebuf@@QEAAPEAV1 at PEBDHH@Z
 @ stub -arch=win32 ?open at fstream@@QAEXPBDHH at Z
 @ stub -arch=win64 ?open at fstream@@QEAAXPEBDHH at Z
 @ stub -arch=win32 ?open at ifstream@@QAEXPBDHH at Z
@@ -632,8 +632,8 @@
 @ stub -arch=win64 ?osfx at ostream@@QEAAXXZ
 @ thiscall -arch=win32 ?out_waiting at streambuf@@QBEHXZ(ptr) msvcirt.?out_waiting at streambuf@@QBEHXZ
 @ cdecl -arch=win64 ?out_waiting at streambuf@@QEBAHXZ(ptr) msvcirt.?out_waiting at streambuf@@QEBAHXZ
-@ stub -arch=win32 ?overflow at filebuf@@UAEHH at Z
-@ stub -arch=win64 ?overflow at filebuf@@UEAAHH at Z
+@ thiscall -arch=win32 ?overflow at filebuf@@UAEHH at Z(ptr long) msvcirt.?overflow at filebuf@@UAEHH at Z
+@ cdecl -arch=win64 ?overflow at filebuf@@UEAAHH at Z(ptr long) msvcirt.?overflow at filebuf@@UEAAHH at Z
 @ stub -arch=win32 ?overflow at stdiobuf@@UAEHH at Z
 @ stub -arch=win64 ?overflow at stdiobuf@@UEAAHH at Z
 @ stub -arch=win32 ?overflow at strstreambuf@@UAEHH at Z
@@ -700,8 +700,8 @@
 @ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at J@Z
 @ stub -arch=win32 ?seekg at istream@@QAEAAV1 at JW4seek_dir@ios@@@Z
 @ stub -arch=win64 ?seekg at istream@@QEAAAEAV1 at JW4seek_dir@ios@@@Z
-@ stub -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z
-@ stub -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z
+@ thiscall -arch=win32 ?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UAEJJW4seek_dir at ios@@H at Z
+@ cdecl -arch=win64 ?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at filebuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ stub -arch=win32 ?seekoff at stdiobuf@@UAEJJW4seek_dir at ios@@H at Z
 @ stub -arch=win64 ?seekoff at stdiobuf@@UEAAJJW4seek_dir at ios@@H at Z
 @ thiscall -arch=win32 ?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z(ptr long long long) msvcirt.?seekoff at streambuf@@UAEJJW4seek_dir at ios@@H at Z
@@ -719,8 +719,8 @@
 @ cdecl ?set_unexpected@@YAP6AXXZP6AXXZ at Z(ptr) msvcrt.?set_unexpected@@YAP6AXXZP6AXXZ at Z
 @ thiscall -arch=win32 ?setb at streambuf@@IAEXPAD0H at Z(ptr ptr ptr long) msvcirt.?setb at streambuf@@IAEXPAD0H at Z
 @ cdecl -arch=win64 ?setb at streambuf@@IEAAXPEAD0H at Z(ptr ptr ptr long) msvcirt.?setb at streambuf@@IEAAXPEAD0H at Z
-@ stub -arch=win32 ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z
-@ stub -arch=win64 ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z
+@ thiscall -arch=win32 ?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z(ptr ptr long) msvcirt.?setbuf at filebuf@@UAEPAVstreambuf@@PADH at Z
+@ cdecl -arch=win64 ?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z(ptr ptr long) msvcirt.?setbuf at filebuf@@UEAAPEAVstreambuf@@PEADH at Z
 @ stub -arch=win32 ?setbuf at fstream@@QAEPAVstreambuf@@PADH at Z
 @ stub -arch=win64 ?setbuf at fstream@@QEAAPEAVstreambuf@@PEADH at Z
 @ stub -arch=win32 ?setbuf at ifstream@@QAEPAVstreambuf@@PADH at Z
@@ -741,8 +741,8 @@
 @ cdecl -arch=win64 ?setlock at ios@@QEAAXXZ(ptr) msvcirt.?setlock at ios@@QEAAXXZ
 @ thiscall -arch=win32 ?setlock at streambuf@@QAEXXZ(ptr) msvcirt.?setlock at streambuf@@QAEXXZ
 @ cdecl -arch=win64 ?setlock at streambuf@@QEAAXXZ(ptr) msvcirt.?setlock at streambuf@@QEAAXXZ
-@ stub -arch=win32 ?setmode at filebuf@@QAEHH at Z
-@ stub -arch=win64 ?setmode at filebuf@@QEAAHH at Z
+@ thiscall -arch=win32 ?setmode at filebuf@@QAEHH at Z(ptr long) msvcirt.?setmode at filebuf@@QAEHH at Z
+@ cdecl -arch=win64 ?setmode at filebuf@@QEAAHH at Z(ptr long) msvcirt.?setmode at filebuf@@QEAAHH at Z
 @ stub -arch=win32 ?setmode at fstream@@QAEHH at Z
 @ stub -arch=win64 ?setmode at fstream@@QEAAHH at Z
 @ stub -arch=win32 ?setmode at ifstream@@QAEHH at Z
@@ -781,8 +781,8 @@
 @ thiscall -arch=win32 ?str at strstreambuf@@QAEPADXZ(ptr) msvcirt.?str at strstreambuf@@QAEPADXZ
 @ cdecl -arch=win64 ?str at strstreambuf@@QEAAPEADXZ(ptr) msvcirt.?str at strstreambuf@@QEAAPEADXZ
 # @ extern ?sunk_with_stdio at ios@@0HA
-@ stub -arch=win32 ?sync at filebuf@@UAEHXZ
-@ stub -arch=win64 ?sync at filebuf@@UEAAHXZ
+@ thiscall -arch=win32 ?sync at filebuf@@UAEHXZ(ptr) msvcirt.?sync at filebuf@@UAEHXZ
+@ cdecl -arch=win64 ?sync at filebuf@@UEAAHXZ(ptr) msvcirt.?sync at filebuf@@UEAAHXZ
 @ stub -arch=win32 ?sync at istream@@QAEHXZ
 @ stub -arch=win64 ?sync at istream@@QEAAHXZ
 @ stub -arch=win32 ?sync at stdiobuf@@UAEHXZ
@@ -806,8 +806,8 @@
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEAAXH at Z(ptr long) msvcirt.?unbuffered at streambuf@@IEAAXH at Z
 @ thiscall -arch=win32 ?unbuffered at streambuf@@IBEHXZ(ptr) msvcirt.?unbuffered at streambuf@@IBEHXZ
 @ cdecl -arch=win64 ?unbuffered at streambuf@@IEBAHXZ(ptr) msvcirt.?unbuffered at streambuf@@IEBAHXZ
-@ stub -arch=win32 ?underflow at filebuf@@UAEHXZ
-@ stub -arch=win64 ?underflow at filebuf@@UEAAHXZ
+@ thiscall -arch=win32 ?underflow at filebuf@@UAEHXZ(ptr) msvcirt.?underflow at filebuf@@UAEHXZ
+@ cdecl -arch=win64 ?underflow at filebuf@@UEAAHXZ(ptr) msvcirt.?underflow at filebuf@@UEAAHXZ
 @ stub -arch=win32 ?underflow at stdiobuf@@UAEHXZ
 @ stub -arch=win64 ?underflow at stdiobuf@@UEAAHXZ
 @ stub -arch=win32 ?underflow at strstreambuf@@UAEHXZ
-- 
2.1.4




More information about the wine-patches mailing list