Blob


1 #!/usr/local/plan9/bin/rc
3 path=($path $PLAN9/bin)
5 fn usage {
6 echo 'usage: yesterday [-cd] [-[[yy]yy]mm]dd] [-n daysago] file ...' >[1=2]
7 exit 1
8 }
10 fn Xcp {
11 echo cp $1 $2
12 cp $1 $2
13 }
15 fn Xcarefulcp {
16 if(! cmp -s $1 $2) Xcp $1 $2
17 }
19 fn Xdiff {
20 echo diff -c $1 $2
21 diff -c $1 $2
22 }
24 fn Xecho {
25 echo $1
26 }
28 year=`{date|sed 's/.* //'}
29 copy=Xecho
30 last=()
31 while(! ~ $#* 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 }
75 if(! ~ $#* 0 && ~ $1 --)
76 shift
78 if(~ $#* 0)
79 usage
81 dir=`{pwd}
82 if(! ~ $status ''){
83 echo 'yesterday: can''t find directory' >[1=2]
84 exit 'pwd failed'
85 }
87 h=`{hostname}
88 switch($h){
89 case amsterdam
90 xdump=/dump/am
91 case *
92 if(! test -d /dump/$h){
93 echo 'no dumps on '^`{hostname} >[1=2]
94 exit 1
95 }
96 xdump=/dump/$h
97 }
99 for(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