xref: /dragonfly/etc/rc.d/bootconf (revision e54c8dc8ef199e733518bad6fde7888f8bca3c8e)
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