#!/bin/sh
#
# ident "@(#)bbinit.src	1.16 05/06/01 SMI"
#
# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#

. $BBROOT/etc/opt/SUNWbb/blackbox.rc

# Make sure that $BBPATH is mounted
[ ! -d $BBPATH ] && exit 1         

Files="hosts netmasks resolv.conf"

KIOSK_CONF=/var/opt/SUNWut/kiosk/kiosk.conf

copy_files() {

	for f in $Files; do

		if [ -f $BBROOT/etc/$f ]; then
			cp -p $BBROOT/etc/$f $BBROOTPATH/etc/$f
		fi
	done 
}

copy_dir() {

	SRC=$1
	TARGET=$2

	if [ ! -d $SRC ]; then
		echo "$SRC not found"
		return 1
	fi

	if [ ! -d $TARGET ]; then 
		mkdir -p $TARGET > /dev/null 2>&1 
		if [ $? != 0 ]; then
			echo "copy $SRC to $TARGET failed"
			return 2
		fi
	else
		rm -rf $TARGET/*
	fi

	(
                cd $SRC
		tar cf - * | ( cd $TARGET; tar xf - ) 
	)
	return 0	
}

setup_chroot() {

	copy_dir $BBROOTPATH/usr/libgen $BBROOTPATH/usr/lib
	copy_dir $BBROOT/usr/lib/locale $BBROOTPATH/usr/lib/locale
	copy_dir $BBROOT/var/yp $BBROOTPATH/var/yp

	HOSTDEF=`awk '{
		if ( $1 == "hosts:" )
                        print $0
	}' $BBROOT/etc/nsswitch.conf`
	nawk -v H="$HOSTDEF" '{ 
		if ( $1 != "hosts:" ) 
			print $0 
		else
			print H
	}' $BBROOTPATH/etc/nsswitch.conf > /tmp/bbchr.nsswitch.conf
	mv /tmp/bbchr.nsswitch.conf $BBROOTPATH/etc/nsswitch.conf
	chmod 644 $BBROOTPATH/etc/nsswitch.conf

	if [ -f $BBPATH/config/copy.list ]; then
		$BBPATH/bin/bbcpfiles $BBPATH/config/copy.list 
        fi

	return 0
}

do_cleanup() {

        rm -f $BBLOCKPATH/*
        rm -f $BBTMPPATH/*
        rm -rf $BBROOTPATH/tmp/* > /dev/null 2>&1
}

umask 022

case "$1" in

'start')
	if [ ! -f $KIOSK_CONF ]; then
		exit 0
	fi
	( cd $BBROOTPATH/dev; $BBPATH/bin/bbdevices )   
	copy_files
	rm -rf $BBROOTPATH/home/*
        rm -rf $BBROOTPATH/home/.* 
	do_cleanup
	setup_chroot 
	SCRIPTLIST=`ls $BBPATH/init.d/* 2>/dev/null`
	for SCRIPT in $SCRIPTLIST; do
          if [ -x $SCRIPT -a ! -d $SCRIPT ]; then
            echo "exec $SCRIPT"
            $SCRIPT
          fi
        done        
	grep $BBROOTPATH/proc /etc/mnttab > /dev/null 2>&1
	if [ $? != 0 ]; then
		/sbin/mount -F proc /proc $BBROOTPATH/proc 
	fi
	if [ -x $BBROOTPATH/bb/bin/nscd ]; then
        	/usr/sbin/chroot $BBROOTPATH /bb/bin/nscd 
	fi
	uname -S `cat /etc/nodename`
	;;

'stop') 
	grep $BBROOTPATH/proc /etc/mnttab > /dev/null 2>&1
	if [ $? = 0 ]; then
                /sbin/umount $BBROOTPATH/proc
        fi
	;;
'cleanup')
	do_cleanup 
	;;
*)
        echo "Usage: $0 { start | stop }"
        exit 1
        ;;

esac       

