/* Test changing to a directory named by a file descriptor.
- Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2009-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
int
main (void)
{
- char *cwd = getcwd (NULL, 0);
- int fd = open (".", O_RDONLY);
+ char *cwd;
+ int fd;
int i;
+ cwd = getcwd (NULL, 0);
ASSERT (cwd);
+
+ fd = open (".", O_RDONLY);
ASSERT (0 <= fd);
- /* Check for failure cases. */
+ /* Test behaviour for invalid file descriptors. */
+ {
+ errno = 0;
+ ASSERT (fchdir (-1) == -1);
+ ASSERT (errno == EBADF);
+ }
+ {
+ close (99);
+ errno = 0;
+ ASSERT (fchdir (99) == -1);
+ ASSERT (errno == EBADF);
+ }
+
+ /* Check for other failure cases. */
{
int bad_fd = open ("/dev/null", O_RDONLY);
ASSERT (0 <= bad_fd);
ASSERT (fchdir (bad_fd) == -1);
ASSERT (errno == ENOTDIR);
ASSERT (close (bad_fd) == 0);
- errno = 0;
- ASSERT (fchdir (-1) == -1);
- ASSERT (errno == EBADF);
}
/* Repeat test twice, once in '.' and once in '..'. */
ASSERT (close (fd) == 0);
ASSERT (fcntl (new_fd, F_DUPFD, fd) == fd);
ASSERT (close (new_fd) == 0);
-#if GNULIB_DUP3
+#if GNULIB_TEST_DUP3
ASSERT (dup3 (fd, new_fd, 0) == new_fd);
ASSERT (dup3 (new_fd, fd, 0) == fd);
ASSERT (close (new_fd) == 0);