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