summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends/markup-tree.c37
-rw-r--r--gconf/gconfd.c30
2 files changed, 67 insertions, 0 deletions
diff --git a/backends/markup-tree.c b/backends/markup-tree.c
index c08d6c79..4857caec 100644
--- a/backends/markup-tree.c
+++ b/backends/markup-tree.c
@@ -34,6 +34,43 @@
#include <stdio.h>
#include <time.h>
+#ifdef G_OS_WIN32
+#include <io.h>
+#include <conio.h>
+#define _WIN32_WINNT 0x0500
+#include <windows.h>
+
+static int
+fsync (int fd)
+{
+ HANDLE h = (HANDLE) _get_osfhandle (fd);
+ DWORD err;
+
+ if (h == INVALID_HANDLE_VALUE)
+ {
+ errno = EBADF;
+ return -1;
+ }
+
+ if (!FlushFileBuffers (h))
+ {
+ err = GetLastError ();
+ switch (err)
+ {
+ case ERROR_INVALID_HANDLE:
+ errno = EINVAL;
+ break;
+
+ default:
+ errno = EIO;
+ }
+ return -1;
+ }
+
+ return 0;
+}
+#endif
+
typedef struct
{
char *locale;
diff --git a/gconf/gconfd.c b/gconf/gconfd.c
index 66c18ffc..2827635d 100644
--- a/gconf/gconfd.c
+++ b/gconf/gconfd.c
@@ -62,6 +62,36 @@
#include <conio.h>
#define _WIN32_WINNT 0x0500
#include <windows.h>
+
+static int
+fsync (int fd)
+{
+ HANDLE h = (HANDLE) _get_osfhandle (fd);
+ DWORD err;
+
+ if (h == INVALID_HANDLE_VALUE)
+ {
+ errno = EBADF;
+ return -1;
+ }
+
+ if (!FlushFileBuffers (h))
+ {
+ err = GetLastError ();
+ switch (err)
+ {
+ case ERROR_INVALID_HANDLE:
+ errno = EINVAL;
+ break;
+
+ default:
+ errno = EIO;
+ }
+ return -1;
+ }
+
+ return 0;
+}
#endif
/* This makes hash table safer when debugging */