#!/usr/local/plan9/bin/rc

# the venti configuration is stored at the 248kB offset in the first index
# partition and extends for at most 8 kB.

rfork e
fn usage {
	echo 'usage: venti/conf [-w] /dev/sdC0/v.arenas' >[1=2]
	exit usage
}

wflag=no
while(! ~ $#* 0 && ~ $1 -* && ! ~ $1 --){
	switch($1){
	case -w
		wflag=yes
	case *
		usage
	}
	shift
}
if(~ $1 --)
	shift

if(~ $wflag no && ! ~ $#* 1)
	usage
if(~ $wflag yes && ! ~ $#* 1 2)
	usage

disk=$1
if(! 9 test -f $disk){
	echo 'unknown disk' $1 >[1=2]
	exit nodisk
}

fn sigexit {
	#rm -f /tmp/venticonf.$pid
}

if(~ $wflag yes){
	{echo venti config; cat $2} >/tmp/venticonf.$pid || exit oops
	if(! 9 test -s /tmp/venticonf.$pid){
		echo 'config is empty; will not install' >[1=2]
		exit emptyconfig
	}
	if(9 test `{9 ls -l /tmp/venticonf.$pid | awk '{print $6}'} -gt 8192){
		echo 'config is too long; max is a little less than eight kilobytes' >[1=2]
		exit toolong
	}
	9 dd -quiet 1 -bs 1024 -count 8 -if $disk -iseek 248 \
		>/tmp/_venticonf.old || exit backup
	9 dd -quiet 1 -count 2 </dev/zero >> /tmp/venticonf.$pid || exit dd
	9 dd -quiet 1 -bs 1024 -count 8 -if /tmp/venticonf.$pid \
		-of $disk -trunc 0 -oseek 248 || exit dd2
	exit 0
}

9 dd -quiet 1 -bs 1024 -count 8 -if $disk -iseek 248 |
	zerotrunc >/tmp/venticonf.$pid

if(! cmp <{sed 1q /tmp/venticonf.$pid} <{echo venti config}){
	echo 'config has bad header' >[1=2]
	exit badconfig
}

sed 1d /tmp/venticonf.$pid
exit ''
