1095a621fSSascha Wildner#!/bin/sh 2095a621fSSascha Wildner# 3095a621fSSascha Wildner# $NetBSD: bootconf.sh,v 1.5 2002/03/25 03:22:10 wiz Exp $ 4095a621fSSascha Wildner# $FreeBSD: src/etc/rc.d/bootconf.sh,v 1.4 2002/10/12 10:31:31 schweikh Exp $ 5095a621fSSascha Wildner# 6095a621fSSascha Wildner 7095a621fSSascha Wildner# PROVIDE: bootconf 8095a621fSSascha Wildner# REQUIRE: root 9095a621fSSascha Wildner# BEFORE: mountcritlocal 10095a621fSSascha Wildner 11095a621fSSascha Wildner. /etc/rc.subr 12095a621fSSascha Wildner 13095a621fSSascha Wildnerbootconf_start() 14095a621fSSascha Wildner{ 15095a621fSSascha Wildner # Refer to newbtconf(8) for more information 16095a621fSSascha Wildner # 17095a621fSSascha Wildner 18095a621fSSascha Wildner if [ ! -e /etc/etc.current ]; then 19095a621fSSascha Wildner return 0 20095a621fSSascha Wildner fi 21095a621fSSascha Wildner if [ -L /etc/etc.default ]; then 22095a621fSSascha Wildner def=`ls -ld /etc/etc.default 2>&1` 23095a621fSSascha Wildner default="${def##*-> etc.}" 24095a621fSSascha Wildner else 25095a621fSSascha Wildner default=current 26095a621fSSascha Wildner fi 27095a621fSSascha Wildner if [ "$default" = "current" ]; then 28095a621fSSascha Wildner def=`ls -ld /etc/etc.current 2>&1` 29095a621fSSascha Wildner default="${def##*-> etc.}" 30095a621fSSascha Wildner fi 31095a621fSSascha Wildner 32095a621fSSascha Wildner spc="" 33095a621fSSascha Wildner for i in /etc/etc.*; do 34095a621fSSascha Wildner name="${i##/etc/etc.}" 35095a621fSSascha Wildner case $name in 36095a621fSSascha Wildner current|default|\*) 37095a621fSSascha Wildner continue 38095a621fSSascha Wildner ;; 39095a621fSSascha Wildner *) 40095a621fSSascha Wildner if [ "$name" = "$default" ]; then 41095a621fSSascha Wildner echo -n "${spc}[${name}]" 42095a621fSSascha Wildner else 43095a621fSSascha Wildner echo -n "${spc}${name}" 44095a621fSSascha Wildner fi 45095a621fSSascha Wildner spc=" " 46095a621fSSascha Wildner ;; 47095a621fSSascha Wildner esac 48095a621fSSascha Wildner done 49095a621fSSascha Wildner echo 50*e54c8dc8SAaron LI 51095a621fSSascha Wildner master=$$ 52095a621fSSascha Wildner _DUMMY=/etc/passwd 53095a621fSSascha Wildner conf=${_DUMMY} 54095a621fSSascha Wildner while [ ! -d /etc/etc.$conf/. ]; do 55095a621fSSascha Wildner trap "conf=$default; echo; echo Using default of $conf" ALRM 56095a621fSSascha Wildner echo -n "Which configuration [$default] ? " 57095a621fSSascha Wildner (sleep 30 && kill -ALRM $master) >/dev/null 2>&1 & 58095a621fSSascha Wildner read conf 59095a621fSSascha Wildner trap : ALRM 60095a621fSSascha Wildner if [ -z $conf ]; then 61095a621fSSascha Wildner conf=$default 62095a621fSSascha Wildner fi 63095a621fSSascha Wildner if [ ! -d /etc/etc.$conf/. ]; then 64095a621fSSascha Wildner conf=${_DUMMY} 65095a621fSSascha Wildner fi 66095a621fSSascha Wildner done 67095a621fSSascha Wildner 68095a621fSSascha Wildner case $conf in 69095a621fSSascha Wildner current|default) 70095a621fSSascha Wildner ;; 71095a621fSSascha Wildner *) 72095a621fSSascha Wildner rm -f /etc/etc.current 73095a621fSSascha Wildner ln -s /etc/etc.$conf /etc/etc.current 74095a621fSSascha Wildner ;; 75095a621fSSascha Wildner esac 76095a621fSSascha Wildner 77095a621fSSascha Wildner if [ -f /etc/rc.conf ]; then 78095a621fSSascha Wildner . /etc/rc.conf 79095a621fSSascha Wildner fi 80095a621fSSascha Wildner} 81095a621fSSascha Wildner 82095a621fSSascha Wildnercase "$1" in 83095a621fSSascha Wildner*start) 84095a621fSSascha Wildner bootconf_start 85095a621fSSascha Wildner ;; 86095a621fSSascha Wildneresac 87095a621fSSascha Wildner 88095a621fSSascha Wildnerdummy_rc_command $1 XXX 89