#!/bin/rc rfork n fn usage { echo usage: patch2diff patch >[1=2] echo example: patch2diff /n/sources/patch/yacc-go >[1=2] exit usage } if(! ~ $#* 1){ usage } if(! test -d $1){ usage } fn setname { sed s,'(--- ).*( )',\1$file\2,g | sed s,'(\+\+\+ ).*( )',\1$file\2,g } fn setepoch { sed 's/\-\-\- (.*) ... ... .. ..:..:.. ..../\-\-\- \1 Thu Jan 1 00:00:00 1970/' } fn nodiff { sed '/^diff \-Nru /d' } nifs=' ' @ { f=$1 n=`{basename $f} cd $f if(! test -f readme 2>/dev/null && ! test -f Readme 2>/dev/null) exit failed if(! test -f files) exit failed oifs=$ifs ifs=$nifs if(test -f readme) cat readme if(test -f Readme) cat Readme echo if(test -s notes){ echo Notes: cat notes echo } echo Reference: $f d=`{date `{mtime $f/readme | awk '{print $1}'}} echo Date: $d if(test -f email){ for(i in `{cat email}){ echo Signed-off-by: $i } } if(test -s $f/notes){ r=`{ls -l $f/notes | awk '{print $4}'} echo Reviewed-by: $r } if(test -s removed){ echo for(i in `{cat removed}){ echo '#' rm $i } } echo for(i in `{cat files}){ file=`{echo $i | awk '{ print $1}'} new=`{echo $i | awk '{ print $2}'} orig=$new.orig nf=/tmp/new nd=/tmp/newdir if(test -f $orig) # modified file ape/diff -Nru $orig $new | setname if not if(test -d $new){ # new dir rm -rf $nd && mkdir $nd ape/diff -Nru $nd $new | sed s,$nf,$file,g | setname | setepoch | nodiff } if not{ # new file rm -f $nf && touch $nf ape/diff -Nru $nf $new | sed s,$nf,$file,g | setname | setepoch | nodiff } } }