devfs revision 202880
1107553Sdes#!/bin/sh
2107553Sdes#
3137019Sdes# $FreeBSD: head/etc/rc.d/devfs 202880 2010-01-23 11:42:31Z kib $
499059Sdes#
599059Sdes
6124244Sdes# PROVIDE: devfs
7124244Sdes# REQUIRE: mountcritremote
8124244Sdes# BEFORE:  SERVERS securelevel
9124244Sdes# KEYWORD: nojail
10124244Sdes
11124244Sdes. /etc/rc.subr
12124244Sdes
13124244Sdesname="devfs"
14124244Sdesstart_cmd='devfs_start'
15124244Sdesstop_cmd=':'
16124244Sdes
17124244Sdesdevfs_start()
18124244Sdes{
19124244Sdes	if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ]; then
20124244Sdes		devfs_init_rulesets
21124244Sdes		if [ -n "$devfs_system_ruleset" ]; then
22124244Sdes			devfs_set_ruleset $devfs_system_ruleset /dev
23124244Sdes			devfs_apply_ruleset $devfs_system_ruleset /dev
24124244Sdes		fi
25124244Sdes		if [ -n "$devfs_set_rulesets" ]; then
26124244Sdes			local _dir_set
27124244Sdes			local _dir
28124244Sdes			local _set
29124244Sdes			for _dir_set in $devfs_set_rulesets; do
3099059Sdes				_dir=${_dir_set%=*}
3199059Sdes				_set=${_dir_set#*=}
3299059Sdes				devfs_set_ruleset $_set $_dir
3399059Sdes				devfs_apply_ruleset $_set $_dir
3499059Sdes			done
3599059Sdes		fi
3699059Sdes	fi
37124244Sdes	read_devfs_conf
38124244Sdes}
39124244Sdes
40124244Sdesread_devfs_conf()
41124244Sdes{
42124244Sdes	if [ -r /etc/devfs.conf ]; then
43124244Sdes		cd /dev
44124244Sdes		while read action devicelist parameter; do
45124244Sdes			case "${action}" in
46126279Sdes			l*)	for device in ${devicelist}; do
47126279Sdes					if [ ! -e ${parameter} ]; then
48126279Sdes						ln -fs ${device} ${parameter}
49126279Sdes					fi
50126279Sdes				done
51126279Sdes				;;
5299059Sdes			o*)	for device in ${devicelist}; do
5399059Sdes					if [ -c ${device} ]; then
5499059Sdes						chown ${parameter} ${device}
55124244Sdes					fi
5699059Sdes				done
5799059Sdes				;;
5899059Sdes			p*)	for device in ${devicelist}; do
5999059Sdes					if [ -c ${device} ]; then
6099059Sdes						chmod ${parameter} ${device}
6199059Sdes					fi
6299059Sdes				done
6399059Sdes				;;
6499059Sdes			esac
6599059Sdes		done < /etc/devfs.conf
6699059Sdes	fi
6799059Sdes}
6899059Sdes
6999059Sdesload_rc_config $name
70126279Sdesrun_rc_command "$1"
71126279Sdes