]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - etc/rc.d/devfs
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / etc / rc.d / devfs
1 #!/bin/sh
2 #
3 # $FreeBSD$
4 #
5
6 # PROVIDE: devfs
7 # REQUIRE: mountcritremote
8 # BEFORE:  SERVERS securelevel
9 # KEYWORD: nojail
10
11 . /etc/rc.subr
12
13 name="devfs"
14 start_cmd='devfs_start'
15 stop_cmd=':'
16
17 devfs_start()
18 {
19         if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ] ||
20             checkyesno devfs_load_rulesets; then
21                 devfs_init_rulesets
22                 if [ -n "$devfs_system_ruleset" ]; then
23                         devfs_set_ruleset $devfs_system_ruleset /dev
24                         devfs_apply_ruleset $devfs_system_ruleset /dev
25                 fi
26                 if [ -n "$devfs_set_rulesets" ]; then
27                         local _dir_set
28                         local _dir
29                         local _set
30                         for _dir_set in $devfs_set_rulesets; do
31                                 _dir=${_dir_set%=*}
32                                 _set=${_dir_set#*=}
33                                 devfs_set_ruleset $_set $_dir
34                                 devfs_apply_ruleset $_set $_dir
35                         done
36                 fi
37         fi
38         read_devfs_conf
39 }
40
41 read_devfs_conf()
42 {
43         if [ -r /etc/devfs.conf ]; then
44                 cd /dev
45                 while read action devicelist parameter; do
46                         case "${action}" in
47                         l*)     for device in ${devicelist}; do
48                                         if [ ! -e ${parameter} ]; then
49                                                 ln -fs ${device} ${parameter}
50                                         fi
51                                 done
52                                 ;;
53                         o*)     for device in ${devicelist}; do
54                                         if [ -c ${device} ]; then
55                                                 chown ${parameter} ${device}
56                                         fi
57                                 done
58                                 ;;
59                         p*)     for device in ${devicelist}; do
60                                         if [ -c ${device} ]; then
61                                                 chmod ${parameter} ${device}
62                                         fi
63                                 done
64                                 ;;
65                         esac
66                 done < /etc/devfs.conf
67         fi
68 }
69
70 load_rc_config $name
71 run_rc_command "$1"