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