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