+ /* Assuming stdin and stdout are ttys, fsync is allowed to fail, but
+ may succeed as an extension. */
+ for (fd = 0; fd < 2; fd++)
+ if (fsync (fd) != 0)
+ {
+ ASSERT (errno == EINVAL /* POSIX */
+ || errno == ENOTSUP /* seen on Mac OS X 10.5 */
+ || errno == EBADF /* seen on AIX 7.1 */
+ || errno == EIO /* seen on mingw */
+ );
+ }
+
+ /* fsync must fail on invalid fd. */
+ {
+ errno = 0;
+ ASSERT (fsync (-1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ close (99);
+ errno = 0;
+ ASSERT (fsync (99) == -1);
+ ASSERT (errno == EBADF);
+ }
+