blob: bf31dac62b026789d56b90f6c9c60925015fdad1 [file] [log] [blame]
rsc17e662e2005-07-13 04:02:10 +00001#!/usr/local/plan9/bin/rc
2
3path=($path $PLAN9/bin)
4
5fn usage {
6 echo 'usage: yesterday [-cd] [-[[yy]yy]mm]dd] [-n daysago] file ...' >[1=2]
7 exit 1
8}
9
10fn Xcp {
11 echo cp $1 $2
12 cp $1 $2
13}
14
15fn Xcarefulcp {
16 if(! cmp -s $1 $2) Xcp $1 $2
17}
18
19fn Xdiff {
20 echo diff -c $1 $2
21 diff -c $1 $2
22}
23
24fn Xecho {
25 echo $1
26}
27
28year=`{date|sed 's/.* //'}
29copy=Xecho
30last=()
31while(! ~ $#* 0 && ~ $1 -* && ! ~ $1 --){
32 switch($1){
33 case -c
34 copy=Xcp
35 shift
36 case -d
37 copy=Xdiff
38 shift
39 case -C
40 copy=Xcarefulcp
41 shift
42 case -n*
43 if(~ $1 -n){
44 if(~ $#* 1)
45 usage
46 shift
47 days=$1
48 }
49 if not
50 days=`{echo $1 | sed 's/^-.//'}
51 last=`{date -r `{perl -e 'print time() - '$days'*60*60*24'} |
52 9 sed -e 's%... (...) (..) ..:..:.. ... (....)%\3/\1\2%' -e 'y/ /0/' -e $smon}
53 shift
54 case -[0-9]
55 mon=`{date|9 sed 's/^....(...).*/\1/' -e $smon}
56 last=$year/$mon ^`{echo $1|sed 's/^-/0/'}
57 shift
58 case -[0-9][0-9]
59 mon=`{date|9 sed 's/^....(...).*/\1/' -e $smon}
60 last=$year/$mon ^`{echo $1|9 sed 's/^-//'}
61 shift
62 case -[0-9][0-9][0-9][0-9]
63 last=$year/ ^ `{echo $1|9 sed 's/^-//'}
64 shift
65 case -[0-9][0-9][0-9][0-9][0-9][0-9]
66 last=`{echo $year|9 sed 's/..$//'} ^ `{echo $1|9 sed 's/^-(..)/\1\//'}
67 shift
68 case -[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
69 last=`{echo $1|9 sed 's/^-(....)/\1\//'}
70 shift
71 case *
72 usage
73 }
74}
75if(! ~ $#* 0 && ~ $1 --)
76 shift
77
78if(~ $#* 0)
79 usage
80
81dir=`{pwd}
82if(! ~ $status ''){
83 echo 'yesterday: can''t find directory' >[1=2]
84 exit 'pwd failed'
85}
86
87h=`{hostname}
88switch($h){
89case amsterdam
90 xdump=/dump/am
91case *
92 if(! test -d /dump/$h){
93 echo 'no dumps on '^`{hostname} >[1=2]
94 exit 1
95 }
96 xdump=/dump/$h
97}
98
99for(i){
100 xpath=$i
101 if(! ~ $xpath /*)
102 xpath=`{9 cleanname -d `{pwd} $i}
103 dumppath=$xpath
104 if(~ $#last 0)
105 xlast=`{9 ls -t $xdump/$year|sed 1q}
106 if not
107 xlast=$xdump/$last
108 $copy $xlast^$dumppath $xpath
109}