#!/bin/rc
rfork e
fn usage {
echo 'usage: show [-a prefix] [-t] file yyyy/mmdd[n]' >[1=2]
exit usage
}
filter=cat
aflag=''
if(~ $1 -a){
shift
aflag=$1
shift
}
tflag=0
if(~ $1 -t){
tflag=1
shift
}
if(! ~ $#* 1 2)
usage
if(~ $#* 2 && ! ~ $2 - [0-9][0-9][0-9][0-9]/[0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]/[0-9][0-9][0-9][0-9][0-9])
usage
if(~ $2 -)
*=($1 9999/9999)
if(! test -f $1){
echo 'no such file'
exit no file
}
if(~ $#* 1){
sed -n 's:^## diffname [^ ]* :show '^$1^' :p' $1
if(~ $aflag '')
exit 0
*=($1 9999/9999)
filter=catnull
}
fn catnull { cat >/dev/null }
y=`{echo $2 | tr / ' '}
awk -v 'y='^$y(1) -v 'd=x'^$y(2) -v 'aflag='$aflag -v 'tflag='$tflag '
BEGIN { indiff=0; print "."; }
END { if(indiff && aflag) print "w " aflag "." indiff; print "w"; }
/^## diffname/ {
if(indiff && aflag)
print "w " aflag "." indiff;
indiff++;
date = $4;
split(date, a, "/");
if(a[1] > y || (a[1] == y && "x"a[2] > d)){
indiff = 0;
exit;
}
next
}
/^## diff/ { next }
{
if(tflag && insert && $0 != ".")
print date, $0;
else
print;
if(!insert && /[ac]$/)
insert=1;
if(insert && $0==".")
insert=0;
}
' $1 |ed -o - | $filter
|