#! /bin/bash
# FS QA Test No. 079
#
# Run the t_immutable test program for immutable/append-only files.
#
#-----------------------------------------------------------------------
# Copyright (c) 2000-2003 Silicon Graphics, Inc.  All Rights Reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it would be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write the Free Software Foundation,
# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
#-----------------------------------------------------------------------
#
# creator
owner=nathans@sgi.com

seq=`basename $0`
echo "QA output created by $seq"

here=`pwd`
timmutable=$here/src/t_immutable
tmp=/tmp/$$
status=1	# failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

_cleanup()
{
    cd /
    echo "*** cleaning up"
    $timmutable -r $SCRATCH_MNT/$seq
    umount $SCRATCH_MNT
}

# get standard environment, filters and checks
. ./common.rc
. ./common.filter
. ./common.attr

_supported_fs generic
_supported_os Linux

_require_attrs
_require_scratch

[ -x $timmutable ] || _notrun "t_immutable was not built for this platform"

# real QA test starts here
_scratch_mkfs >/dev/null 2>&1 || _fail "mkfs failed"
_scratch_mount || _fail "mount failed"

echo "*** starting up"
$timmutable -c $SCRATCH_MNT/$seq >$tmp.out 2>&1
if grep -q 'Operation not supported' $tmp.out; then
    rm -f $tmp.out
    _notrun "Setting immutable/append flag not supported"
fi
cat $tmp.out
rm -f $tmp.out
status=$?
exit
