| 
#!/usr/local/plan9/bin/rc
# mkventi - prepare venti(7) file system
. 9.rc
fn usage {
	echo >[2=1] 'usage: mkventi [-f] [-a arenasize] [-b blocksize] venti.conf'
	exit usage
}
fn fmtisect  { venti/fmtisect -b $blocksize `{basename $1} $1 }
fn fmtarenas { venti/fmtarenas -a $arenasize -b $blocksize `{basename $1}^. $1 }
fn fmtbloom  { venti/fmtbloom $1 }
fn fmtfiles  {
	files=`{sed /^'#'/d $conf | awk '/'$1'/{print $2}'}
	if(! ~ $#files 0){
		count=''
		while(~ $count ''){
			echo -n $1' size (in blocks): '
			count=`{read}
		}
		for(f in $files){
			if(test -f $f)
				echo >[2=1] $f' exists; skipping'
			if not{
				dd -quiet 1 -if /dev/zero -of $f -bs $blocksize -count $count
				$2 $f && fmtindex=1
			}
		}
	}
}
arenasize=512m
blocksize=8k
fmtindex=0
while(~ $1 -*){
	switch($1){
	case -a
		if(~ $#* 1)
			usage
		arenasize=$2
		shift
	case -b
		if(~ $#* 1)
			usage
		blocksize=$2
		shift
	case -f
		fmtindex=1
	case *
		usage
	}
	shift
}
if(! ~ $#* 1)
	usage
conf=$1
fmtfiles isect fmtisect
fmtfiles arenas fmtarenas
fmtfiles bloom fmtbloom
if(~ $fmtindex 0)
	echo >[2=1] 'fmtindex: no changes; skipping'
if not
	venti/fmtindex $conf
exit ''
 |