#!/bin/rc

rfork e

if (! ~ $#* 2) {
	echo usage $0 olddir newdir >[1=2]
	exit usage
}

old=$1
new=$2
diffs=/tmp/restore.$pid

fn sigint { rm $diffs }
fn sighup { rm $diffs }

diff -r $old $new > $diffs
grep '^Only in '^$new $diffs | sed -e 's|Only in|rm|' -e 's|: |/|'
fromstr='Only in '^$old^'/(.+): ([^ ]+)'
tostr='cp '^$old^'/\1/\2 '^$new^'/\1'
grep '^Only in '^$old $diffs | sed -e 's|'^$fromstr^'|'^$tostr^'|'
grep '^diff ' $diffs | sed 's/diff/cp/'
rm $diffs
exit ''
