// // commit.cpp // // Copyright (c) Microsoft Corporation. All rights reserved. // // Defines _commit(), which flushes a file buffer to disk. // #include // Flushes the buffer for the given file to disk. // // On success, 0 is returned. On failure, -1 is returned and errno is set. extern "C" int __cdecl _commit(int const fh) { _CHECK_FH_RETURN(fh, EBADF, -1); _VALIDATE_RETURN((fh >= 0 && (unsigned)fh < (unsigned)_nhandle), EBADF, -1); _VALIDATE_RETURN((_osfile(fh) & FOPEN), EBADF, -1); return __acrt_lowio_lock_fh_and_call(fh, [&]() { if (_osfile(fh) & FOPEN) { if (FlushFileBuffers(reinterpret_cast(_get_osfhandle(fh)))) return 0; // Success _doserrno = GetLastError(); } errno = EBADF; _ASSERTE(("Invalid file descriptor. File possibly closed by a different thread",0)); return -1; }); }