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