Home | History | Annotate | Line # | Download | only in rc.d
bootconf.sh revision 1.8
      1 #!/bin/sh
      2 #
      3 # $NetBSD: bootconf.sh,v 1.8 2004/10/11 15:00:51 christos Exp $
      4 #
      5 
      6 # PROVIDE: bootconf
      7 # REQUIRE: mountcritlocal
      8 
      9 bootconf_start()
     10 {
     11 		# Refer to newbtconf(8) for more information
     12 		#
     13 
     14 	if [ ! -e /etc/etc.current ]; then
     15 		return 0
     16 	fi
     17 	if [ -h /etc/etc.default ]; then
     18 		def=$(ls -ld /etc/etc.default 2>&1)
     19 		default="${def##*-> *etc.}"
     20 	else
     21 		default=current
     22 	fi
     23 	if [ "$default" = "current" ]; then
     24 		def=$(ls -ld /etc/etc.current 2>&1)
     25 		default="${def##*-> *etc.}"
     26 	fi
     27 
     28 	spc=""
     29 	for i in /etc/etc.*; do
     30 		name="${i##/etc/etc.}"
     31 		case $name in
     32 		current|default|\*)
     33 			continue
     34 			;;	
     35 		*)
     36 			if [ "$name" = "$default" ]; then
     37 				echo -n "${spc}[${name}]"
     38 			else
     39 				echo -n "${spc}${name}"
     40 			fi
     41 			spc=" "
     42 			;;
     43 		esac
     44 	done
     45 	echo
     46 	master=$$
     47 	_DUMMY=/etc/passwd
     48 	conf=${_DUMMY}
     49 	while [ ! -d /etc/etc.$conf/. ]; do
     50 		trap "conf=$default; echo; echo Using default of $default" ALRM
     51 		echo -n "Which configuration [$default] ? "
     52 		(sleep 30 && kill -ALRM $master) >/dev/null 2>&1 &
     53 		read conf
     54 		trap : ALRM
     55 		if [ -z $conf ] ; then
     56 			conf=$default
     57 		fi
     58 		if [ ! -d /etc/etc.$conf/. ]; then
     59 			conf=${_DUMMY}
     60 		fi
     61 	done
     62 
     63 	case  $conf in
     64 	current|default)
     65 		;;
     66 	*)
     67 		rm -f /etc/etc.current
     68 		ln -s /etc/etc.$conf /etc/etc.current
     69 		;;
     70 	esac
     71 
     72 	if [ -f /etc/rc.conf ] ; then
     73 		. /etc/rc.conf
     74 	fi
     75 }
     76 
     77 case "$1" in
     78 *start)
     79 	bootconf_start
     80 	;;
     81 esac
     82