#!/usr/local/plan9/bin/rc

. 9.rc

smon='s/Jan/01/
	s/Feb/02/
	s/Mar/03/
	s/Apr/04/
	s/May/05/
	s/Jun/06/
	s/Jul/07/
	s/Aug/08/
	s/Sep/09/
	s/Oct/10/
	s/Nov/11/
	s/Dec/12/'


fn usage {
	echo 'usage: yesterday [-cd] [-[[yy]yy]mm]dd] [-n daysago] file ...' >[1=2]
	exit 1
}

fn Xcp {
	echo cp $1 $2
	cp $1 $2
}

fn Xcarefulcp {
	if(! cmp -s $1 $2) Xcp $1 $2
}

fn Xdiff {
	echo diff -c $1 $2
	diff -c $1 $2
}

fn Xecho {
	echo $1
}

year=`{date|sed 's/.* //'}
copy=Xecho
last=()
while(! ~ $#* 0 && ~ $1 -* && ! ~ $1 --){
	switch($1){
	case -c
		copy=Xcp
		shift
	case -d
		copy=Xdiff
		shift
	case -C
		copy=Xcarefulcp
		shift
	case -n*
		if(~ $1 -n){
			if(~ $#* 1)
				usage
			shift
			days=$1
		}
		if not
			days=`{echo $1 | sed 's/^-.//'}
		last=`{date `{hoc -e `{date -n} ^ '-'$days'*60*60*24'} | \
				sed -e 's%... (...) (..) ..:..:.. ... (....)%\3/\1\2%' -e 'y/ /0/' -e $smon}
		shift
	case -[0-9]
		mon=`{date|9 sed 's/^....(...).*/\1/' -e $smon}
		last=$year/$mon ^`{echo $1|sed 's/^-/0/'}
		shift
	case -[0-9][0-9]
		mon=`{date|9 sed 's/^....(...).*/\1/' -e $smon}
		last=$year/$mon ^`{echo $1|9 sed 's/^-//'}
		shift
	case -[0-9][0-9][0-9][0-9]
		last=$year/ ^ `{echo $1|9 sed 's/^-//'}
		shift
	case -[0-9][0-9][0-9][0-9][0-9][0-9]
		last=`{echo $year|9 sed 's/..$//'} ^ `{echo $1|9 sed 's/^-(..)/\1\//'}
		shift
	case -[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
		last=`{echo $1|9 sed 's/^-(....)/\1\//'}
		shift
	case *
		usage
	}
}
if(! ~ $#* 0 && ~ $1 --)
	shift

if(~ $#* 0)
	usage

dir=`{pwd}
if(! ~ $status ''){
	echo 'yesterday: can''t find directory' >[1=2]
	exit 'pwd failed'
}

h=`{hostname}
switch($h){
case amsterdam
	xdump=/dump/am
case *
	if(! test -d /dump/$h){
		echo 'no dumps on '^`{hostname} >[1=2]
		exit 1
	}
	xdump=/dump/$h
}

for(i){
	xpath=$i
	if(! ~ $xpath /*)
		xpath=`{9 cleanname -d `{pwd} $i}
	dumppath=$xpath
	if(~ $#last 0)
		xlast=`{9 ls -t $xdump/$year|sed 1q}
	if not
		xlast=$xdump/$last
	$copy $xlast^$dumppath $xpath
}
