#!/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
#!/bin/rc
rfork ne
path=/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/$name
if (! test -x $repl)
fatal no such replica: $name
. $repl
if (~ $#serverchg 0) {
serverchg=$s/$name/chg
clientchg=$c/client/$name.chg
}
# check changes
servermount || fatal mount server failed
if ( 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