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