#! /bin/sh
# PCP QA Test No. 417
# Exercise tools with a corrupted archive
#
# Copyright (c) 1995-2002 Silicon Graphics, Inc.  All Rights Reserved.
#

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

# get standard filters
. ./common.product
. ./common.filter
. ./common.check

status=1	# failure is the default!
trap "cd $here; rm -rf $tmp; rm -f $tmp.*; exit \$status" 0 1 2 3 15

_check_core()
{
    if [ "`echo core*`" != "core*" ]
    then
	$PCP_ECHO_PROG $PCP_ECHO_N "Dumped core! (saved in $here as""$PCP_ECHO_C"
	for c in core*
	do
	    $sudo mv $c $here/$seq.$c
	    $PCP_ECHO_PROG $PCP_ECHO_N " $seq.$c""$PCP_ECHO_C"
	done
	echo ")"
    fi
}

rm -rf $tmp
mkdir $tmp
cd $tmp

# make the corrupted archive
arch=src/bigace_v2
cp $here/$arch.meta bad.meta
dd ibs=1 count=512 if=$here/$arch.index of=bad.index 2>/dev/null
dd ibs=1 count=512 if=$here/$arch.index >>bad.index 2>/dev/null
dd if=$here/$arch.0 ibs=1 count=2052 of=bad.0 2>/dev/null
dd if=/dev/zero ibs=1 count=1024 >>bad.0 2>/dev/null

# deal with an annoying libc error ... using TZ=:Australia/Melbourne
# causes the -z option to report the wrong time, at least for some
# times of the year
#
export TZ=EST-10

# real QA test starts here

echo
echo "=== pminfo ==="
pminfo -O0 -n $here/src/bigace.pmns -a bad >$tmp.out 2>$tmp.err
cat $tmp.err $tmp.out
_check_core

echo
echo "=== pminfo -f irix ==="
pminfo -O0 -n $here/src/bigace.pmns -a bad -f irix
_check_core

echo
echo "=== pmdumplog -t ==="
pmdumplog -n $here/src/bigace.pmns -z -t bad
_check_core

echo
echo "=== pmdumplog -t, no index ==="
mv bad.index save.index
pmdumplog -n $here/src/bigace.pmns -z -t bad
mv save.index bad.index
_check_core

echo
echo "=== pmdumplog -l ==="
pmdumplog -n $here/src/bigace.pmns -z -l bad
_check_core

echo
echo "=== pmdumplog -L ==="
pmdumplog -n $here/src/bigace.pmns -z -L bad
_check_core

echo
echo "=== pmdumplog -m ==="
pmdumplog -n $here/src/bigace.pmns -z -m bad >$tmp.out 2>$tmp.err
cat $tmp.err $tmp.out
_check_core

echo
echo "=== pmlogsummary ==="
pmlogsummary -n $here/src/bigace.pmns bad >$tmp.out 2>$tmp.err
cat $tmp.err $tmp.out | sed -e 's/^\*//g'
_check_core

# success, all done
status=0
exit
