summaryrefslogtreecommitdiffstats
path: root/tools/regression/fstest
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2007-07-18 18:07:15 +0000
committerpjd <pjd@FreeBSD.org>2007-07-18 18:07:15 +0000
commit9b52656cc2c15dababfc24992c3e5a00263580b2 (patch)
tree48c7269d063e3cacb90db4c1da017c934dbdc50f /tools/regression/fstest
parentf9539fa2932dd08852036c4f8260bb1fbd5814ff (diff)
downloadFreeBSD-src-9b52656cc2c15dababfc24992c3e5a00263580b2.zip
FreeBSD-src-9b52656cc2c15dababfc24992c3e5a00263580b2.tar.gz
Make fstest work out-of-the-box on Solaris:
- Solaris' setgroups(2) doesn't change process' effective gid, so set it explicitly. - POSIX doesn't define O_NOFOLLOW. FreeBSD returns EMLINK when target is a symbolic link, but Solaris returns ELOOP then. - Solaris doesn't define O_SHLOCK and O_EXLOCK flags. Approved by: re (rwatson)
Diffstat (limited to 'tools/regression/fstest')
-rw-r--r--tools/regression/fstest/fstest.c4
-rw-r--r--tools/regression/fstest/tests/open/16.t20
-rw-r--r--tools/regression/fstest/tests/open/18.t23
3 files changed, 34 insertions, 13 deletions
diff --git a/tools/regression/fstest/fstest.c b/tools/regression/fstest/fstest.c
index 98211d0..886b90f 100644
--- a/tools/regression/fstest/fstest.c
+++ b/tools/regression/fstest/fstest.c
@@ -530,6 +530,10 @@ set_gids(char *gids)
fprintf(stderr, "cannot change groups: %s\n", strerror(errno));
exit(1);
}
+ if (setegid(gidset[0]) < 0) {
+ fprintf(stderr, "cannot change effective gid: %s\n", strerror(errno));
+ exit(1);
+ }
free(gidset);
}
diff --git a/tools/regression/fstest/tests/open/16.t b/tools/regression/fstest/tests/open/16.t
index 7b4194e..ec31768 100644
--- a/tools/regression/fstest/tests/open/16.t
+++ b/tools/regression/fstest/tests/open/16.t
@@ -1,7 +1,7 @@
#!/bin/sh
# $FreeBSD$
-desc="open returns EMLINK when O_NOFOLLOW was specified and the target is a symbolic link"
+desc="open returns EMLINK/ELOOP when O_NOFOLLOW was specified and the target is a symbolic link"
dir=`dirname $0`
. ${dir}/../misc.sh
@@ -12,8 +12,18 @@ n0=`namegen`
n1=`namegen`
expect 0 symlink ${n0} ${n1}
-expect EMLINK open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644
-expect EMLINK open ${n1} O_RDONLY,O_NOFOLLOW
-expect EMLINK open ${n1} O_WRONLY,O_NOFOLLOW
-expect EMLINK open ${n1} O_RDWR,O_NOFOLLOW
+case "${os}" in
+SunOS)
+ expect ELOOP open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644
+ expect ELOOP open ${n1} O_RDONLY,O_NOFOLLOW
+ expect ELOOP open ${n1} O_WRONLY,O_NOFOLLOW
+ expect ELOOP open ${n1} O_RDWR,O_NOFOLLOW
+ ;;
+*)
+ expect EMLINK open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644
+ expect EMLINK open ${n1} O_RDONLY,O_NOFOLLOW
+ expect EMLINK open ${n1} O_WRONLY,O_NOFOLLOW
+ expect EMLINK open ${n1} O_RDWR,O_NOFOLLOW
+ ;;
+esac
expect 0 unlink ${n1}
diff --git a/tools/regression/fstest/tests/open/18.t b/tools/regression/fstest/tests/open/18.t
index e14fc4b..978ba16 100644
--- a/tools/regression/fstest/tests/open/18.t
+++ b/tools/regression/fstest/tests/open/18.t
@@ -6,13 +6,20 @@ desc="open returns EWOULDBLOCK when O_NONBLOCK and one of O_SHLOCK or O_EXLOCK i
dir=`dirname $0`
. ${dir}/../misc.sh
-echo "1..6"
+case "${os}" in
+FreeBSD)
+ echo "1..6"
-n0=`namegen`
+ n0=`namegen`
-expect 0 create ${n0} 0644
-expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
-expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
-expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
-expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
-expect 0 unlink ${n0}
+ expect 0 create ${n0} 0644
+ expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
+ expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
+ expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
+ expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
+ expect 0 unlink ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
OpenPOWER on IntegriCloud