1*d583b39bSJohn Wren Kennedy#!/bin/ksh -p
2*d583b39bSJohn Wren Kennedy#
3*d583b39bSJohn Wren Kennedy# CDDL HEADER START
4*d583b39bSJohn Wren Kennedy#
5*d583b39bSJohn Wren Kennedy# The contents of this file are subject to the terms of the
6*d583b39bSJohn Wren Kennedy# Common Development and Distribution License (the "License").
7*d583b39bSJohn Wren Kennedy# You may not use this file except in compliance with the License.
8*d583b39bSJohn Wren Kennedy#
9*d583b39bSJohn Wren Kennedy# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*d583b39bSJohn Wren Kennedy# or http://www.opensolaris.org/os/licensing.
11*d583b39bSJohn Wren Kennedy# See the License for the specific language governing permissions
12*d583b39bSJohn Wren Kennedy# and limitations under the License.
13*d583b39bSJohn Wren Kennedy#
14*d583b39bSJohn Wren Kennedy# When distributing Covered Code, include this CDDL HEADER in each
15*d583b39bSJohn Wren Kennedy# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*d583b39bSJohn Wren Kennedy# If applicable, add the following below this CDDL HEADER, with the
17*d583b39bSJohn Wren Kennedy# fields enclosed by brackets "[]" replaced with your own identifying
18*d583b39bSJohn Wren Kennedy# information: Portions Copyright [yyyy] [name of copyright owner]
19*d583b39bSJohn Wren Kennedy#
20*d583b39bSJohn Wren Kennedy# CDDL HEADER END
21*d583b39bSJohn Wren Kennedy#
22*d583b39bSJohn Wren Kennedy
23*d583b39bSJohn Wren Kennedy#
24*d583b39bSJohn Wren Kennedy# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
25*d583b39bSJohn Wren Kennedy# Use is subject to license terms.
26*d583b39bSJohn Wren Kennedy#
27*d583b39bSJohn Wren Kennedy
28*d583b39bSJohn Wren Kennedy. $STF_SUITE/tests/functional/acl/acl_common.kshlib
29*d583b39bSJohn Wren Kennedy
30*d583b39bSJohn Wren Kennedy#
31*d583b39bSJohn Wren Kennedy# DESCRIPTION:
32*d583b39bSJohn Wren Kennedy#	Verifies ability to find files with attribute with -xattr flag and using
33*d583b39bSJohn Wren Kennedy#	"-exec runat ls".
34*d583b39bSJohn Wren Kennedy#
35*d583b39bSJohn Wren Kennedy# STRATEGY:
36*d583b39bSJohn Wren Kennedy#	1. In directory A, create several files and add attribute files for them
37*d583b39bSJohn Wren Kennedy#	2. Delete all the attribute files.
38*d583b39bSJohn Wren Kennedy#	2. Verify all the specified files can not be found with '-xattr',
39*d583b39bSJohn Wren Kennedy#	3. Verify all the attribute files can not be found with '-exec runat ls'
40*d583b39bSJohn Wren Kennedy#
41*d583b39bSJohn Wren Kennedy
42*d583b39bSJohn Wren Kennedyverify_runnable "both"
43*d583b39bSJohn Wren Kennedy
44*d583b39bSJohn Wren Kennedylog_assert "verifies -xattr doesn't include files without " \
45*d583b39bSJohn Wren Kennedy		"attribute and using '-exec runat ls'"
46*d583b39bSJohn Wren Kennedylog_onexit cleanup
47*d583b39bSJohn Wren Kennedy
48*d583b39bSJohn Wren Kennedyfor user in root $ZFS_ACL_STAFF1; do
49*d583b39bSJohn Wren Kennedy	log_must set_cur_usr $user
50*d583b39bSJohn Wren Kennedy
51*d583b39bSJohn Wren Kennedy	log_must create_files $TESTDIR
52*d583b39bSJohn Wren Kennedy
53*d583b39bSJohn Wren Kennedy	initfiles=$($LS -R $INI_DIR/*)
54*d583b39bSJohn Wren Kennedy	typeset -i i=0
55*d583b39bSJohn Wren Kennedy	while (( i < NUM_FILE )); do
56*d583b39bSJohn Wren Kennedy		f=$(getitem $i $initfiles)
57*d583b39bSJohn Wren Kennedy		usr_exec $RUNAT $f $RM attribute*
58*d583b39bSJohn Wren Kennedy		(( i += 1 ))
59*d583b39bSJohn Wren Kennedy	done
60*d583b39bSJohn Wren Kennedy
61*d583b39bSJohn Wren Kennedy	i=0
62*d583b39bSJohn Wren Kennedy	while (( i < NUM_FILE )); do
63*d583b39bSJohn Wren Kennedy		f=$(getitem $i $initfiles)
64*d583b39bSJohn Wren Kennedy		ff=$(usr_exec $FIND $INI_DIR -type f -name ${f##*/} \
65*d583b39bSJohn Wren Kennedy			-xattr -print)
66*d583b39bSJohn Wren Kennedy		if [[ $ff == $f ]]; then
67*d583b39bSJohn Wren Kennedy			log_fail "find not containing attribute should fail."
68*d583b39bSJohn Wren Kennedy		fi
69*d583b39bSJohn Wren Kennedy
70*d583b39bSJohn Wren Kennedy		typeset -i j=0
71*d583b39bSJohn Wren Kennedy		while (( j < NUM_ATTR )); do
72*d583b39bSJohn Wren Kennedy			fa=$(usr_exec $FIND $INI_DIR -type f -name ${f##*/} \
73*d583b39bSJohn Wren Kennedy				-xattr -exec $RUNAT {} $LS attribute.$j \\\;)
74*d583b39bSJohn Wren Kennedy			if [[ $fa == attribute.$j ]]; then
75*d583b39bSJohn Wren Kennedy				log_fail "find file attribute should fail."
76*d583b39bSJohn Wren Kennedy			fi
77*d583b39bSJohn Wren Kennedy			(( j += 1 ))
78*d583b39bSJohn Wren Kennedy		done
79*d583b39bSJohn Wren Kennedy		log_note "Failed to find $f and its attribute file as expected."
80*d583b39bSJohn Wren Kennedy
81*d583b39bSJohn Wren Kennedy		(( i += 1 ))
82*d583b39bSJohn Wren Kennedy	done
83*d583b39bSJohn Wren Kennedy
84*d583b39bSJohn Wren Kennedy	log_must cleanup
85*d583b39bSJohn Wren Kennedydone
86*d583b39bSJohn Wren Kennedy
87*d583b39bSJohn Wren Kennedylog_pass "find files which have no attrabute files with -xattr passed."
88