mirror of
https://github.com/reactos/reactos.git
synced 2025-04-22 05:00:27 +00:00
38 lines
824 B
C++
38 lines
824 B
C++
//
|
|
// clearerr.cpp
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// Defines clearerr(), which clears error and EOF flags from a stream.
|
|
//
|
|
#include <corecrt_internal_stdio.h>
|
|
|
|
|
|
|
|
extern "C" errno_t __cdecl clearerr_s(FILE* const public_stream)
|
|
{
|
|
__crt_stdio_stream const stream(public_stream);
|
|
|
|
_VALIDATE_RETURN_ERRCODE(stream.valid(), EINVAL);
|
|
|
|
_lock_file(stream.public_stream());
|
|
__try
|
|
{
|
|
stream.unset_flags(_IOERROR | _IOEOF); // Clear stdio flags
|
|
_osfile_safe(_fileno(stream.public_stream())) &= ~(FEOFLAG); // Clear lowio flags
|
|
}
|
|
__finally
|
|
{
|
|
_unlock_file(stream.public_stream());
|
|
}
|
|
__endtry
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
extern "C" void __cdecl clearerr(FILE* const stream)
|
|
{
|
|
clearerr_s(stream);
|
|
}
|