#!/bin/rc rfork ne ramfs if(! test -f /bin/bincmp) bind -a /usr/rsc/bin/rc /bin if(! test -f /bin/binhash) bind -a /usr/rsc/bin/$cputype /bin cd /sys/lib/dist/changes 9fs sourcesdump 9fs sources if(~ $#* 1 && ~ $1 now){ *=(`{yesterday /n/sources/plan9 | sed 's;/plan9;;'} /n/sources) } switch($#*){ case 0 y=`{date |awk '{print $NF}'} x=`{ls /n/sourcesdump/$y | tail -2} if(~ $#x 1){ ly=`{echo $y^-1 | hoc} x=(`{ls /n/sourcesdump/$ly | tail -1} $x) } old=$x(1) new=$x(2) case 2 old=$1 new=$2 } # group changes to common files fn group { switch($4){ case sys/src/9/* echo kernel case sys/src/boot/* echo 9load case 386/* echo binaries case sys/man/*/* echo $4 | sed 's;sys/man/[0-9]+/;;' case sys/src/lib*/* echo $4 | sed 's;sys/src/;;; s;/.*;;' case sys/src/cmd/disk/prep/* echo $4 | sed 's;sys/src/cmd/disk/prep/;;; s;/.*;;; s;\.[cy]$;;' case sys/src/cmd/ip/* echo $4 | sed 's;sys/src/cmd/ip/;;; s;/.*;;; s;\.[cy]$;;' case sys/src/cmd/aux/* echo $4 | sed 's;sys/src/cmd/aux/;;; s;/.*;;; s;\.[cy]$;;' case sys/src/cmd/*/* echo $4 | sed 's;sys/src/cmd/;;; s;/.*;;' case sys/src/cmd/* echo $4 | sed 's;sys/src/cmd/;;; s;\.[cy]$;;' case sys/src/games/*/* echo $4 | sed 's;sys/src/games/;;; s;/.*;;' case sys/lib/kbmap/* echo kbmap case * echo $4 } | tr '/' '_' } fn summarize { # time n a|c|d|m name name mode uid gid mtime size switch($3){ case c if(! ~ $4 $didsum){ didsum=($didsum $4) switch($4){ case 386/9load* ; case 386/* */386/* bincmp $old/plan9/$4 $new/plan9/$4 | sed 's/^/ /' case * diff -c $old/plan9/$4 $new/plan9/$4 | sed 's!(^/.*) - !\1 - \ !' | sed 's/^/ /' >/tmp/a if(test `{wc -l /tmp/a echo ' ['diff -c $old/plan9/$4 $new/plan9/$4']' >>/tmp/a } cat /tmp/a } } } } fn x { # time n a|c|d|m name name mode uid gid mtime size base=$1.$2 echo '#' $* if(! test -f $base.sum) summarize $* >$base.sum grp=`{group $*} xbase=$base if(test -f grp.$grp && ! test -s $base.txt){ xbase=`{cat grp.$grp} echo '@'$xbase >$base.txt } nnn=1 while(test -s $xbase.txt && sed 1q $xbase.txt |grep -s '^@' && ! ~ $nnn 100){ xbase=`{sed 1q $xbase.txt | sed 's/^@//'} nnn=`{echo 1+$nnn|hoc} } if(! test -f grp.$grp) echo $xbase >grp.$grp if(! test -s $xbase.txt){ >$xbase.txt } # Header starts with annotations. if(! test -s $xbase.txt.0){ if(test -s $xbase.txt){ echo '#RSC# cat >/sys/lib/dist/changes/'$xbase.txt' << EOF' >$xbase.txt.0 cat $xbase.txt >>$xbase.txt.0 echo '#RSC# EOF' >>$xbase.txt.0 } if not{ { echo '% cat >/sys/lib/dist/changes/'$xbase.txt' << EOF' echo Your text here. echo EOF } >$xbase.txt.0 } } # Next come the ls lines and change summaries. if(test -f $xbase.txt.1 && ! cmp -s $base.sum $xbase.txt.1){ cat $xbase.txt.1 >>$xbase.txt.0 rm $xbase.txt.1 } echo '#RSC#' $base $* >>$xbase.txt.0 @{cd $new/plan9; ls -lmd $4 | sed 's/^/ /'} >>$xbase.txt.0 cp $base.sum $xbase.txt.1 } rm -f *.sum rm -f *.txt.[01] grp.* sum.all whatis old new diff $old/plan9/dist/replica/plan9.log $new/plan9/dist/replica/plan9.log | sed -n 's/^> //p' | sed '/^[0-9]+ [0-9]+ . (386\/(9pc|9load|init|bin\/|lib\/)|rc\/bin\/stock|acme\/bin\/386|sys\/games\/lib\/fortunes|lib\/face\/)/d' | sed 's; ;'' '';g; s;^;'';; s;$;'';; s;^;x ;' | rc for(i in `{ls *.txt.0 >[2]/dev/null}){ x=`{echo $i | sed 's/0$/1/'} if(test -s $x) cat $x >>$i echo >>$i } cat *.txt.0 >sum.all.local if(grep -s '^% cat >' sum.all.local) echo NEED SOME FILES >>sum.all.local echo ',s/\n\n\n+/\n\n/g w q' | sam -d sum.all.local >[2]/dev/null grep -v '^#RSC#' sum.all.local >sum.all