X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=tests%2Ftest-dup2.c;h=379a6135ee2ccf2f9ff3157ee293df11a8ccd535;hb=c26924950a3a546112e35c99aad85c0855f4664a;hp=67f49eff05dd44cfb4f5757cc9b4421c50ff89bc;hpb=b80176069521ff306b2b81ef0a9abfa8d741ada7;p=gnulib.git diff --git a/tests/test-dup2.c b/tests/test-dup2.c index 67f49eff0..379a6135e 100644 --- a/tests/test-dup2.c +++ b/tests/test-dup2.c @@ -65,10 +65,14 @@ main () { const char *file = "test-dup2.tmp"; char buffer[1]; - int fd = open (file, O_CREAT | O_RDWR, 0600); + int fd = open (file, O_CREAT | O_TRUNC | O_RDWR, 0600); - ASSERT (0 <= fd); + /* Assume std descriptors were provided by invoker. */ + ASSERT (STDERR_FILENO < fd); ASSERT (is_open (fd)); + /* Ignore any other fd's leaked into this process. */ + close (fd + 1); + close (fd + 2); ASSERT (!is_open (fd + 1)); ASSERT (!is_open (fd + 2)); @@ -90,6 +94,9 @@ main () errno = 0; ASSERT (dup2 (fd, -2) == -1); ASSERT (errno == EBADF); + errno = 0; + ASSERT (dup2 (fd, 10000000) == -1); + ASSERT (errno == EBADF); /* Using dup2 can skip fds. */ ASSERT (dup2 (fd, fd + 2) == fd + 2); @@ -97,14 +104,15 @@ main () ASSERT (!is_open (fd + 1)); ASSERT (is_open (fd + 2)); - /* Prove that dup2 closes the previous occupant of a fd. */ + /* Verify that dup2 closes the previous occupant of a fd. */ ASSERT (open ("/dev/null", O_WRONLY, 0600) == fd + 1); ASSERT (dup2 (fd + 1, fd) == fd); ASSERT (close (fd + 1) == 0); ASSERT (write (fd, "1", 1) == 1); ASSERT (dup2 (fd + 2, fd) == fd); + ASSERT (lseek (fd, 0, SEEK_END) == 0); ASSERT (write (fd + 2, "2", 1) == 1); - ASSERT (lseek (fd, SEEK_SET, 0) == 0); + ASSERT (lseek (fd, 0, SEEK_SET) == 0); ASSERT (read (fd, buffer, 1) == 1); ASSERT (*buffer == '2');