summaryrefslogtreecommitdiffstats
path: root/testsuite/syscalls01
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-11 14:48:13 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-10-31 13:18:47 +0100
commit6ffb9b9e27ee4df316bf851ec94b24c53d45c4f8 (patch)
tree9308e6311890a3cf0f2abbdd43d3fb0c30058e75 /testsuite/syscalls01
parentAdd socket fstat() support (diff)
downloadrtems-libbsd-6ffb9b9e27ee4df316bf851ec94b24c53d45c4f8.tar.bz2
Use shutdown() from FreeBSD
Diffstat (limited to 'testsuite/syscalls01')
-rw-r--r--testsuite/syscalls01/test_main.c52
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);