diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-11 14:48:13 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-10-31 13:18:47 +0100 |
commit | 6ffb9b9e27ee4df316bf851ec94b24c53d45c4f8 (patch) | |
tree | 9308e6311890a3cf0f2abbdd43d3fb0c30058e75 /testsuite/syscalls01 | |
parent | Add socket fstat() support (diff) | |
download | rtems-libbsd-6ffb9b9e27ee4df316bf851ec94b24c53d45c4f8.tar.bz2 |
Use shutdown() from FreeBSD
Diffstat (limited to 'testsuite/syscalls01')
-rw-r--r-- | testsuite/syscalls01/test_main.c | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/testsuite/syscalls01/test_main.c b/testsuite/syscalls01/test_main.c index 58492af6..6f8dfcbf 100644 --- a/testsuite/syscalls01/test_main.c +++ b/testsuite/syscalls01/test_main.c @@ -370,7 +370,16 @@ no_mem_socket_fstat(int fd) } static void -test_socket_fstat(void) +no_mem_socket_shutdown(int fd) +{ + int rv; + + rv = shutdown(fd, SHUT_RDWR); + assert(rv == 0); +} + +static void +test_socket_fstat_and_shutdown(void) { mode_t canrecv = S_IRUSR | S_IRGRP | S_IROTH; mode_t cansend = S_IWUSR | S_IWGRP | S_IWOTH; @@ -379,7 +388,7 @@ test_socket_fstat(void) int sd; int rv; - puts("test socket fstat"); + puts("test socket fstat and shutdown"); rtems_resource_snapshot_take(&snapshot); @@ -392,9 +401,46 @@ test_socket_fstat(void) assert(rv == 0); assert(st.st_mode == (S_IFSOCK | canrecv | cansend)); + rv = shutdown(sd, SHUT_RD); + assert(rv == 0); + + rv = fstat(sd, &st); + assert(rv == 0); + assert(st.st_mode == (S_IFSOCK | cansend)); + + rv = shutdown(sd, SHUT_WR); + assert(rv == 0); + + rv = fstat(sd, &st); + assert(rv == 0); + assert(st.st_mode == S_IFSOCK); + + errno = 0; + rv = shutdown(sd, ~SHUT_RDWR); + assert(rv == -1); + assert(errno == EINVAL); + rv = close(sd); assert(rv == 0); + sd = socket(PF_INET, SOCK_DGRAM, 0); + assert(sd >= 0); + + do_no_mem_test(no_mem_socket_shutdown, sd); + + rv = close(sd); + assert(rv == 0); + + errno = 0; + rv = shutdown(sd, SHUT_RDWR); + assert(rv == -1); + assert(errno == EBADF); + + errno = 0; + rv = shutdown(0, SHUT_RDWR); + assert(rv == -1); + assert(errno == ENOTSOCK); + assert(rtems_resource_snapshot_check(&snapshot)); } @@ -405,7 +451,7 @@ test_main(void) test_sockets(); test_socket_unsupported_ops(); - test_socket_fstat(); + test_socket_fstat_and_shutdown(); puts("*** END OF " TEST_NAME " TEST ***"); exit(0); |