1 1.1 lukem #!/bin/sh 2 1.1 lukem # 3 1.18 martin # $NetBSD: bootconf.sh,v 1.18 2020/09/08 12:52:18 martin Exp $ 4 1.1 lukem # 5 1.1 lukem 6 1.1 lukem # PROVIDE: bootconf 7 1.18 martin # REQUIRE: CRITLOCALMOUNTED 8 1.12 apb # KEYWORD: interactive 9 1.1 lukem 10 1.10 apb $_rc_subr_loaded . /etc/rc.subr 11 1.10 apb 12 1.10 apb name="bootconf" 13 1.10 apb start_cmd="bootconf_start" 14 1.10 apb stop_cmd=":" 15 1.10 apb 16 1.1 lukem bootconf_start() 17 1.1 lukem { 18 1.1 lukem # Refer to newbtconf(8) for more information 19 1.1 lukem # 20 1.1 lukem 21 1.1 lukem if [ ! -e /etc/etc.current ]; then 22 1.1 lukem return 0 23 1.1 lukem fi 24 1.1 lukem if [ -h /etc/etc.default ]; then 25 1.8 christos def=$(ls -ld /etc/etc.default 2>&1) 26 1.6 wiz default="${def##*-> *etc.}" 27 1.1 lukem else 28 1.1 lukem default=current 29 1.1 lukem fi 30 1.4 lukem if [ "$default" = "current" ]; then 31 1.8 christos def=$(ls -ld /etc/etc.current 2>&1) 32 1.6 wiz default="${def##*-> *etc.}" 33 1.4 lukem fi 34 1.4 lukem 35 1.1 lukem spc="" 36 1.4 lukem for i in /etc/etc.*; do 37 1.3 nisimura name="${i##/etc/etc.}" 38 1.3 nisimura case $name in 39 1.3 nisimura current|default|\*) 40 1.3 nisimura continue 41 1.16 skrll ;; 42 1.3 nisimura *) 43 1.3 nisimura if [ "$name" = "$default" ]; then 44 1.3 nisimura echo -n "${spc}[${name}]" 45 1.3 nisimura else 46 1.3 nisimura echo -n "${spc}${name}" 47 1.3 nisimura fi 48 1.3 nisimura spc=" " 49 1.3 nisimura ;; 50 1.3 nisimura esac 51 1.1 lukem done 52 1.1 lukem echo 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.14 christos (sleep 30 && kill -ALRM $RC_PID) >/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.13 apb print_rc_metadata "note:Using configuration \"${conf}\"" 70 1.12 apb 71 1.5 wiz case $conf in 72 1.4 lukem current|default) 73 1.4 lukem ;; 74 1.4 lukem *) 75 1.4 lukem rm -f /etc/etc.current 76 1.9 hubertf ln -s etc.$conf /etc/etc.current 77 1.15 christos sync 78 1.4 lukem ;; 79 1.4 lukem esac 80 1.4 lukem 81 1.1 lukem if [ -f /etc/rc.conf ] ; then 82 1.1 lukem . /etc/rc.conf 83 1.1 lukem fi 84 1.1 lukem } 85 1.1 lukem 86 1.10 apb load_rc_config $name 87 1.10 apb run_rc_command "$1" 88