34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# CDDL HEADER START
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# The contents of this file are subject to the terms of the
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# Common Development and Distribution License (the "License").
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# You may not use this file except in compliance with the License.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# See the License for the specific language governing permissions
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# and limitations under the License.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# When distributing Covered Code, include this CDDL HEADER in each
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# If applicable, add the following below this CDDL HEADER, with the
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# fields enclosed by brackets "[]" replaced with your own identifying
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# information: Portions Copyright [yyyy] [name of copyright owner]
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# CDDL HEADER END
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# Use is subject to license terms.
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz# Test whether the ksh93/poll builtin works as expected
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzbuiltin -f libshell.so.1 poll || err_exit "poll builtin not found."
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainzcat /dev/zero | { redirect 5<&0 ; poll -e d1.res -t 5. d1.u ; } || err_exit "poll returned non-zero exit code $?"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ "${d1.u[x].revents}" == "POLLIN" ]] || err_exit "d1.u[x].revents contains '${d1.u[x].revents}', not POLLIN"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ "${d1.u[y].revents}" == "POLLIN" ]] || err_exit "d1.u[y].revents contains '${d1.u[y].revents}', not POLLIN"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ "${d1.res[*]}" == "x y" ]] || err_exit "d1.res contains '${d1.res[*]}', not 'x y'"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz{ poll -e d1.res -t 5. d1.u ; } 5</dev/null 5>/dev/null || err_exit "poll returned non-zero exit code $?"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ "${d1.u[x].revents}" == "POLLIN" ]] || err_exit "d1.u[x].revents contains '${d1.u[x].revents}', not 'POLLIN'"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ "${d1.u[y].revents}" == "POLLIN" ]] || err_exit "d1.u[y].revents contains '${d1.u[y].revents}', not 'POLLIN'"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ "${d1.u[z].revents}" == "POLLOUT|POLLWRNORM" ]] || err_exit "d1.u[z].revents contains '${d1.u[z].revents}', not 'POLLOUT|POLLWRNORM,'"
34f9b3eef6fdadbda0a846aa4d68691ac40eace5Roland Mainz[[ "${d1.res[*]}" == "x y z" ]] || err_exit "d1.res contains '${d1.res[*]}', not 'x y z'"