#!/bin/sh
#Tag 0x00010D0C
#
# Copyright (c) 1995-2001 Silicon Graphics, Inc.  All Rights Reserved.
# 
# This program is free software; you can redistribute it and/or modify it
# under the terms of version 2 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.
# 
# Further, this software is distributed without any warranty that it is
# free of the rightful claim of any third person regarding infringement
# or the like.  Any license provided herein, whether implied or
# otherwise, applies only to this software file.  Patent licenses, if
# any, provided herein do not apply to combinations of this program with
# other software, or any other product whatsoever.
# 
# You should have received a copy of the GNU General Public License along
# with this program; if not, write the Free Software Foundation, Inc., 59
# Temple Place - Suite 330, Boston MA 02111-1307, USA.
# 
# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
# Mountain View, CA  94043, or:
# 
# http://www.sgi.com 
# 
# For further information regarding this notice, see: 
# 
# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
#
# $Id: mkaf,v 1.3 2001/06/04 04:32:10 kenmcd Exp $

# Get standard environment
. /etc/pcp.env

_usage()
{
    echo "Usage: mkaf [findopts] filename ..."
}

if [ $# -eq 0 ]
then
    _usage
    exit 1
fi

tmp=/tmp/$$
status=0
trap "rm -f $tmp; exit \$status" 0 1 2 3 15
findopts=""

while [ $# -gt 0 ]
do
    case $1
    in
	-?)
	    _usage
	    exit 1
	    ;;
	-*)
	    findopts="$findopts $1"
	    ;;

	*)
	    unset MAGIC		# if set, file(1) may be confused!
	    type=`file $1 | sed -e 's/^[^ 	]*:[ 	]*//'`
	    case "$type"
	    in

		directory)
		    [ -z "$findopts" ] && findopts="-follow"
		    echo >&2 "Searching \"find $1 \\( $findopts \\) ...\" \c"
		    find $1 \( $findopts \) -type f -print \
		    | xargs file \
		    | sed -e 's/://' \
		    | while read file type
		    do
			case "$type"
			in
			    "PCP archive"*)
				echo $file >>$tmp
				;;
			esac
		    done
		    echo >&2 " done"
		    ;;

		"PCP archive"*)
		    echo $1 >>$tmp
		    ;;

	    esac
	    ;;

    esac

    shift
done


if [ ! -s $tmp ]
then
    echo >&2 "mkaf: Warning: no PCP archives found, so no folio created"
    status=1
    exit
fi

host=somehost
which hostname >/dev/null 2>&1 && host=`hostname`

cat <<End-of-File
PCPFolio
Version: 1
# use pmafm(1) to process this PCP archive folio
#
Created: on $host at `date`
Creator: pmchart
# 		Host			Basename
#
End-of-File

sed <$tmp \
    -e 's/\.[0-9][0-9]*$//' \
    -e 's/\.meta$//' \
    -e 's/\.index$//' \
| sort -u \
| while read base
do
    host=`pmdumplog -l $base 2>&1 | sed -n -e '/^Performance metrics/s/.* host //p'`
    if [ -z "$host" ]
    then
	echo >&2 "mkaf: Warning: cannot extract hostname from archive \"$base\" ... skipped"
    else
	printf "%-15s %-23s %s\n" "Archive:" "$host" "$base"
    fi
done

exit
