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