#!/bin/rc # ramfossil score/vacfile [ramsrv name] [fossil fsname] # creates a small fossil in ram and initializes it with the provided score diskfile=() disksize=200000 while (~ $1 -*){ switch($1){ case -l listenport=$2 shift case -s disksize=$2 shift case -f diskfile=$2 shift } shift } score=$1 if(~ $1 *.vac) score=`{cat $1} if(~ $#1 0){ echo no rootscore! exit } ramsrv=$2 fos=$3 if(~ $#ramsrv 0) ramsrv=ramdisk if(~ $#fos 0) fos=ram if(~ $#diskfile 0) diskfile=/n/$ramsrv/fossil score=`{echo $score |sed 's/vac://'} echo fsys main config $diskfile >/tmp/ramfosconf echo fsys main open -c 1024 >>/tmp/ramfosconf echo srv -p $fos^fscons >>/tmp/ramfosconf echo srv -A $fos^fossil >>/tmp/ramfosconf if(! ~ $#listenport 0) echo 'listen tcp!*!'^$listenport >>/tmp/ramfosconf echo 'kill fossil.'^$pid^' |rc' >/usr/grid/killscript echo 'kill ramfs.'^$pid^' |rc' >>/usr/grid/killscript echo 'rm /tmp/fossil.'^$pid >>/usr/grid/killscript echo 'rm /tmp/ramfs.'^$pid >>/usr/grid/killscript if(~ $diskfile /n/$ramsrv/fossil){ cp /bin/ramfs /tmp/ramfs.$pid /tmp/ramfs.$pid -S $ramsrv mount -c /srv/$ramsrv /n/$ramsrv touch $diskfile dd -if /dev/zero -of $diskfile -count $disksize } if(test -d /bin/fossil){ cp /bin/fossil/fossil /tmp/fossil.$pid fossil/conf -w $diskfile /tmp/ramfosconf fossil/flfmt -y -v $score $diskfile /tmp/fossil.$pid -f $diskfile exit } cp /bin/fossil /tmp/fossil.$pid fossilconf -w $diskfile /tmp/ramfosconf flfmt -y -v $1 $diskfile /tmp/fossil.$pid -f $diskfile