File db-mingw-sparse-files.patch of Package mingw64-libdb
diff -urEbwB os_windows/os_open.c os_windows/os_open.c
--- os_windows/os_open.c 2010-04-12 22:25:34.000000000 +0200
+++ os_windows/os_open.c 2010-07-26 18:10:35.000000000 +0200
@@ -9,6 +9,7 @@
#include "db_config.h"
#include "db_int.h"
+#include <winioctl.h>
/*
* __os_open --
@@ -167,6 +168,7 @@
fhp->handle = fhp->trunc_handle = INVALID_HANDLE_VALUE;
for (nrepeat = 1;; ++nrepeat) {
if (fhp->handle == INVALID_HANDLE_VALUE) {
+ DWORD bytes_returned;
#ifdef DB_WINCE
if (LF_ISSET(DB_OSO_REGION))
fhp->handle = CreateFileForMapping(tname,
@@ -175,6 +177,12 @@
#endif
fhp->handle = CreateFile(tname,
access, share, NULL, createflag, attr, 0);
+ if (fhp->handle != INVALID_HANDLE_VALUE)
+ DeviceIoControl(fhp->handle,
+ FSCTL_SET_SPARSE,
+ NULL, 0,
+ NULL, 0,
+ &bytes_returned, NULL);
}
#ifdef HAVE_FTRUNCATE