Fix fsync/fdatasync for windows
authorBert Belder <bertbelder@gmail.com>
Thu, 25 Nov 2010 00:25:25 +0000 (01:25 +0100)
committerBert Belder <bertbelder@gmail.com>
Mon, 20 Dec 2010 22:50:41 +0000 (23:50 +0100)
src/node_file.cc

index 241965c..f17cbfa 100644 (file)
@@ -437,6 +437,8 @@ static Handle<Value> Fdatasync(const Arguments& args) {
   } else {
 #if HAVE_FDATASYNC
     int ret = fdatasync(fd);
+#elif defined(__MINGW32__)
+    int ret = FlushFileBuffers((HANDLE)_get_osfhandle(fd)) ? 0 : -1;
 #else
     int ret = fsync(fd);
 #endif
@@ -457,7 +459,11 @@ static Handle<Value> Fsync(const Arguments& args) {
   if (args[1]->IsFunction()) {
     ASYNC_CALL(fsync, args[1], fd)
   } else {
+#ifdef __MINGW32__
+    int ret = FlushFileBuffers((HANDLE)_get_osfhandle(fd)) ? 0 : -1;
+#else
     int ret = fsync(fd);
+#endif
     if (ret != 0) return ThrowException(ErrnoException(errno));
     return Undefined();
   }