[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