This is the mail archive of the
cygwin-patches@cygwin.com
mailing list for the Cygwin project.
sync(3)
- From: Reini Urban <rurban at x-ray dot at>
- To: cygwin-patches mailing-list <cygwin-patches at cygwin dot com>
- Date: Wed, 27 Oct 2004 04:36:17 +0200
- Subject: sync(3)
Why is this a bad idea?
--
Reini Urban
http://xarch.tu-graz.ac.at/home/rurban/
2004-10-27 Reini Urban <rurban@x-ray.at>
* syscalls.cc (sync): Implement it via cygheap->fdtab and
FlushFileBuffers. Better than a noop.
Index: syscalls.cc
===================================================================
RCS file: /cvs/src/src/winsup/cygwin/syscalls.cc,v
retrieving revision 1.345
diff -u -b -r1.345 syscalls.cc
--- syscalls.cc 3 Sep 2004 01:53:12 -0000 1.345
+++ syscalls.cc 27 Oct 2004 02:30:01 -0000
@@ -1082,6 +1082,24 @@
extern "C" void
sync ()
{
+ int err = 0;
+ cygheap->fdtab.lock ();
+
+ fhandler_base *fh;
+ for (int i = 0; i < (int) cygheap->fdtab.size; i++)
+ if ((fh = cygheap->fdtab[i]) != NULL)
+ {
+#ifdef DEBUGGING
+ debug_printf ("syncing fd %d", i);
+#endif
+ if (FlushFileBuffers (fh->get_handle ()) == 0)
+ {
+ __seterrno ();
+ err++;
+ }
+ }
+ cygheap->fdtab.unlock ();
+ return err ? 1 : 0;
}
/* Cygwin internal */