Git fork
at reftables-rust 28 lines 688 B view raw
1#include "git-compat-util.h" 2#include <winternl.h> 3#include "lazyload.h" 4 5int win32_fsync_no_flush(int fd) 6{ 7 IO_STATUS_BLOCK io_status; 8 9#define FLUSH_FLAGS_FILE_DATA_ONLY 1 10 11 DECLARE_PROC_ADDR(ntdll.dll, NTSTATUS, NTAPI, NtFlushBuffersFileEx, 12 HANDLE FileHandle, ULONG Flags, PVOID Parameters, ULONG ParameterSize, 13 PIO_STATUS_BLOCK IoStatusBlock); 14 15 if (!INIT_PROC_ADDR(NtFlushBuffersFileEx)) { 16 errno = ENOSYS; 17 return -1; 18 } 19 20 memset(&io_status, 0, sizeof(io_status)); 21 if (NtFlushBuffersFileEx((HANDLE)_get_osfhandle(fd), FLUSH_FLAGS_FILE_DATA_ONLY, 22 NULL, 0, &io_status)) { 23 errno = EINVAL; 24 return -1; 25 } 26 27 return 0; 28}