#!/bin/sh
# (c) Copyright 1995 James H. Lowe, Jr.  
#$Id: shak0_lheader_v 1.17 1997/03/23 16:11:53 jhl Exp $
# 
# Program to find most recent backup header for a given host, backup type and program 
#
# Usage: no args need be given;
#	reads a list of header from stdin,
#	writes the right one to stdout, if the
#	right one was not read, nothing is echoed.
#		SHAK_BACKHOST 
#		SHAK_SHAKHEADER
#		SHAK_SHAKTYPE
#	are already set.

part2="`echo "$SHAK_SHAKHEADER" | sed -e 's/\$/\\\$/' | awk -F __CALT__ '{print $2}'`"
if [ $? -ne 0 ]; then
  echo "shak0_lheader: internal error 14" 1>&2 
  exit 1
fi

if [ "$shak_debug" = "1" ]; then
	echo "$part2" 1>&2
fi

refId="`echo "$part2" |
ident -q | grep '^ *\$Id'  |
sed -e 's/^ *//g' |
cut -d ' ' -f 2,3 |
sed -e 's/\.[^\. ]*\.[^\. ]*$//'`"


if [ $? -ne 0 ]; then
  echo "shak0_lheader: internal error 13" 1>&2 
  exit 1
fi

reftype="`echo "$part2" |  sed -e 's/^.*__SHAK__[^:]*:\([^:]*\):.*/\1/'`"
if [ $? -ne 0 ]; then
  echo "shak0_lheader: internal error 12" 1>&2 
  exit 1
fi

refhost="`echo "$part2" |  sed -e 's/^.*__SHAK__[^:]*:[^:]*:\([^:]*\):.*/\1/'`"
if [ $? -ne 0 ]; then
  echo "shak0_lheader: internal error 11" 1>&2 
  exit 1
fi

refrcsfile="`echo $refId | cut -d ' ' -f 1`"
if [ $? -ne 0 ]; then
  echo "shak0_lheader: internal error 11" 1>&2 
  exit 1
fi

reftrunkrev="`echo $refId | cut -d ' ' -f 2 | sed -e 's/\.[^\. ]*\.[^\. ]*$//'`"
if [ $? -ne 0 ]; then
  echo "shak0_lheader: internal error 11" 1>&2 
  exit 1
fi


if [ "$shak_debug" = "1" ]; then
	echo "refId $refId"  1>&2
	echo "reftype $reftype" 1>&2
	echo "refhost $refhost" 1>&2
	echo "refrcsfile $refrcsfile" 1>&2
	echo "reftrunkrev $reftrunkrev" 1>&2
fi

case $reftype in
	incrs)
		r_reftype='incrs|full'
		;;

	diffs|full|fullu)
		r_reftype='full'
		;;
	??)    echo "shak0_lheader: internal error invalid backup type" 1>&2
               exit 1;
                ;;
	0)
		echo "shak0_lheader: internal error invalid backup type, type 0" 1>&2
                exit 1;
		;;
	1)
		r_reftype='0'
		;;
	2)
		r_reftype='0|1'
		;;
	3)
		r_reftype='0|1|2'
		;;
	4)
		r_reftype='0|1|2|3'
		;;
	5)
		r_reftype='0|1|2|3|4'
		;;
	6)
		r_reftype='0|1|2|3|4|5'
		;;
	7)
		r_reftype='0|1|2|3|4|5|6'
		;;
	8)
		r_reftype='0|1|2|3|4|5|6|7'
		;;
	9)
		r_reftype='0|1|2|3|4|5|6|7|8'
		;;

	*) echo "shak0_lheader: internal error 5" 1>&2
               exit 1;
              ;;
esac


grep -v '^File 0:' |
awk -F __CALT__ '{print $2 "__CALT__" $1}' |

(

#
#  Here we implement the dump date selection policy.
#
#

case $r_reftype in
	0*)
		sort -t : -k1.1,2.1n -k2.1,3.1n 
		;;
	*)
		sort -n 
		;;
esac

) |

awk -F __CALT__ '{print $2 "__CALT__" $1}' |
awk -f ${SHAK_LIBPATH}/shak0_qfilter 0 "" "" "" "" "" "${r_reftype}" "^${refhost}\$" "$refrcsfile" "^$reftrunkrev" "" "" "0" "" "" "" "0|256" "" "no" "" "" |
tail -1
exit $?

