svn commit: r273520 - head/contrib/netbsd-tests/lib/libc/sys

Garrett Cooper ngie at FreeBSD.org
Thu Oct 23 06:18:29 UTC 2014


Author: ngie
Date: Thu Oct 23 06:18:28 2014
New Revision: 273520
URL: https://svnweb.freebsd.org/changeset/base/273520

Log:
  Port t_pipe2.c to FreeBSD
  
  - Omit the pipe2_nosigpipe testcase on FreeBSD (FreeBSD doesn't have
    O_NOSIGPIPE).
  - Convert "fcntl(n, F_CLOSEM)" to "closefrom(n)".
  - Save and restore the resource limit on the number of files (RLIMIT_NOFILE).
  
  In collaboration with: pho
  Sponsored by: EMC / Isilon Storage Division

Modified:
  head/contrib/netbsd-tests/lib/libc/sys/t_pipe2.c

Modified: head/contrib/netbsd-tests/lib/libc/sys/t_pipe2.c
==============================================================================
--- head/contrib/netbsd-tests/lib/libc/sys/t_pipe2.c	Thu Oct 23 06:13:42 2014	(r273519)
+++ head/contrib/netbsd-tests/lib/libc/sys/t_pipe2.c	Thu Oct 23 06:18:28 2014	(r273520)
@@ -53,7 +53,11 @@ run(int flags)
 	while ((i = open("/", O_RDONLY)) < 3)
 		ATF_REQUIRE(i != -1);
 
+#if defined(__FreeBSD__)
+	closefrom(3);
+#else
 	ATF_REQUIRE(fcntl(3, F_CLOSEM) != -1);
+#endif
 
 	ATF_REQUIRE(pipe2(fd, flags) == 0);
 
@@ -76,6 +80,7 @@ run(int flags)
 		ATF_REQUIRE((fcntl(fd[1], F_GETFL) & O_NONBLOCK) == 0);
 	}
 
+#if !defined(__FreeBSD__)
 	if (flags & O_NOSIGPIPE) {
 		ATF_REQUIRE(fcntl(fd[0], F_GETNOSIGPIPE) != 0);
 		ATF_REQUIRE(fcntl(fd[1], F_GETNOSIGPIPE) != 0);
@@ -83,6 +88,7 @@ run(int flags)
 		ATF_REQUIRE(fcntl(fd[0], F_GETNOSIGPIPE) == 0);
 		ATF_REQUIRE(fcntl(fd[1], F_GETNOSIGPIPE) == 0);
 	}
+#endif
 
 	ATF_REQUIRE(close(fd[0]) != -1);
 	ATF_REQUIRE(close(fd[1]) != -1);
@@ -110,9 +116,14 @@ ATF_TC_BODY(pipe2_consume, tc)
 {
 	struct rlimit rl;
 	int err, filedes[2];
+#if defined(__FreeBSD__)
+	int old;
 
+	closefrom(4);
+#else
 	err = fcntl(4, F_CLOSEM);
 	ATF_REQUIRE(err == 0);
+#endif
 
 	err = getrlimit(RLIMIT_NOFILE, &rl);
 	ATF_REQUIRE(err == 0);
@@ -121,12 +132,19 @@ ATF_TC_BODY(pipe2_consume, tc)
 	 * file descriptor limit in the middle of a pipe2() call - i.e.
 	 * before the call only a single descriptor may be openend.
 	 */
+#if defined(__FreeBSD__)
+	old = rl.rlim_cur;
+#endif
 	rl.rlim_cur = 4;
 	err = setrlimit(RLIMIT_NOFILE, &rl);
 	ATF_REQUIRE(err == 0);
 
 	err = pipe2(filedes, O_CLOEXEC);
 	ATF_REQUIRE(err == -1);
+#if defined(__FreeBSD__)
+	rl.rlim_cur = old;
+	err = setrlimit(RLIMIT_NOFILE, &rl);
+#endif
 }
 
 ATF_TC(pipe2_nonblock);
@@ -151,6 +169,7 @@ ATF_TC_BODY(pipe2_cloexec, tc)
 	run(O_CLOEXEC);
 }
 
+#if defined(__NetBSD__)
 ATF_TC(pipe2_nosigpipe);
 ATF_TC_HEAD(pipe2_nosigpipe, tc)
 {
@@ -161,6 +180,7 @@ ATF_TC_BODY(pipe2_nosigpipe, tc)
 {
 	run(O_NOSIGPIPE);
 }
+#endif
 
 ATF_TC(pipe2_einval);
 ATF_TC_HEAD(pipe2_einval, tc)
@@ -181,7 +201,9 @@ ATF_TP_ADD_TCS(tp)
 	ATF_TP_ADD_TC(tp, pipe2_consume);
 	ATF_TP_ADD_TC(tp, pipe2_nonblock);
 	ATF_TP_ADD_TC(tp, pipe2_cloexec);
+#if defined(__NetBSD__)
 	ATF_TP_ADD_TC(tp, pipe2_nosigpipe);
+#endif
 	ATF_TP_ADD_TC(tp, pipe2_einval);
 
 	return atf_no_error();


More information about the svn-src-all mailing list