aboutsummaryrefslogtreecommitdiff
path: root/win32
diff options
context:
space:
mode:
Diffstat (limited to 'win32')
-rw-r--r--win32/mingw.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/win32/mingw.c b/win32/mingw.c
index 894388b64..7f8fecdc3 100644
--- a/win32/mingw.c
+++ b/win32/mingw.c
@@ -1750,3 +1750,20 @@ void fix_path_case(char *path)
1750 } 1750 }
1751 } 1751 }
1752} 1752}
1753
1754void seek_sparse(int fd, size_t size)
1755{
1756 DWORD dwTemp;
1757 HANDLE fh;
1758 FILE_ZERO_DATA_INFORMATION fzdi;
1759
1760 if ((fh=(HANDLE)_get_osfhandle(fd)) == INVALID_HANDLE_VALUE)
1761 return;
1762
1763 DeviceIoControl(fh, FSCTL_SET_SPARSE, NULL, 0, NULL, 0, &dwTemp, NULL);
1764
1765 fzdi.FileOffset.QuadPart = 0;
1766 fzdi.BeyondFinalZero.QuadPart = size;
1767 DeviceIoControl(fh, FSCTL_SET_ZERO_DATA, &fzdi, sizeof(fzdi),
1768 NULL, 0, &dwTemp, NULL);
1769}