63 lines · 1.0 KB · Text
RawDownload
#!/bin/rc rfork nepath=/bin fn fatal {	echo $*	exit $"*} flags=()while(! ~ $#* 1 && ~ $1 -*){	if(~ $1 -c -s){		flags=($flags $1)		shift	}	flags=($flags $1)	shift} if (! ~ $#* 1)	fatal 'usage: contrib/pull [-c file] [-s file] name' >[1=2] #remove "user" from "user/replica"name=`{basename $1}repl=/dist/replica/$nameif (! test -x $repl)	fatal no such replica: $name . $repl if (~ $#serverchg 0) {	serverchg=$s/$name/chg	clientchg=$c/client/$name.chg} # check changesservermount || fatal mount server failedif ( test -e $serverchg) {	n=`{ls -l $clientchg >[2]/dev/null |awk '{print $6}'}	s=`{ls -l $serverchg >[2]/dev/null |awk '{print $6}'}	if (~ $n 0 || ~ $#n 0 || test $s -lt $n) {		fcp $serverchg $clientchg		cat $clientchg	}	if not {		m=`{echo $n-1024 | hoc}		if(~ $m -*)			m=0		cmp -s $serverchg $clientchg $m $m		x=$status		switch($x){		case *': EOF'			tail +^$n^c $serverchg >>$clientchg			tail +^$n^c $clientchg		case *': differ'			fcp $serverchg $clientchg			cat $clientchg		}	}} exec replica/pull -v $flags $repl