- ASSERT (func (dfd, BASE "fifo", 0600) == 0);
- ASSERT (fchdir (dfd) == 0);
- errno = 0;
- ASSERT (func (AT_FDCWD, BASE "fifo", 0600) == -1);
- ASSERT (errno == EEXIST);
- memset (&st, 0, sizeof st);
- ASSERT (fstatat (AT_FDCWD, BASE "fifo", &st, AT_SYMLINK_NOFOLLOW) == 0);
- ASSERT (S_ISFIFO (st.st_mode));
- memset (&st, 0, sizeof st);
- ASSERT (fstatat (dfd, BASE "fifo", &st, AT_SYMLINK_NOFOLLOW) == 0);
- ASSERT (S_ISFIFO (st.st_mode));
- ASSERT (unlink (BASE "fifo") == 0);
+ if (func (dfd, BASE "fifo", 0600) != 0)
+ ASSERT (errno == ENOSYS); /* seen on native Windows */
+ else
+ {
+ ASSERT (fchdir (dfd) == 0);
+ errno = 0;
+ ASSERT (func (AT_FDCWD, BASE "fifo", 0600) == -1);
+ ASSERT (errno == EEXIST);
+ memset (&st, 0, sizeof st);
+ ASSERT (fstatat (AT_FDCWD, BASE "fifo", &st, AT_SYMLINK_NOFOLLOW)
+ == 0);
+ ASSERT (S_ISFIFO (st.st_mode));
+ memset (&st, 0, sizeof st);
+ ASSERT (fstatat (dfd, BASE "fifo", &st, AT_SYMLINK_NOFOLLOW) == 0);
+ ASSERT (S_ISFIFO (st.st_mode));
+ ASSERT (unlink (BASE "fifo") == 0);
+ }