| #!/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 |
| } |