[3/4] msvcirt: Implement filebuf::setmode
Piotr Caban
piotr.caban at gmail.com
Thu Aug 6 04:06:04 CDT 2015
On 08/05/15 20:32, Iván Matellanes wrote:
> diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c
> index bf89650..0f82f30 100644
> --- a/dlls/msvcirt/msvcirt.c
> +++ b/dlls/msvcirt/msvcirt.c
> @@ -1009,8 +1009,16 @@ streambuf* __thiscall filebuf_setbuf(filebuf *this, char *buffer, int length)
> DEFINE_THISCALL_WRAPPER(filebuf_setmode, 8)
> int __thiscall filebuf_setmode(filebuf *this, int mode)
> {
> - FIXME("(%p %d) stub\n", this, mode);
> - return 0;
> + int previous;
> +
> + TRACE("(%p %d)\n", this, mode);
> + if (mode != filebuf_text && mode != filebuf_binary)
> + return -1;
> +
> + streambuf_lock(&this->base);
> + previous = _setmode(this->fd, mode);
> + streambuf_unlock(&this->base);
> + return previous;
> }
The function should empty the buffers before it changes the mode. Also
it will be cleaner if filebuf_text and filebuf_binary definition is
changed so _O_TEXT and _O_BINARY is used instead of its value.
Thanks,
Piotr
More information about the wine-devel
mailing list