tyesterday - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
tyesterday (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 }