devfs revision 154637
1179339Syongari#!/bin/sh
2179339Syongari#
3179339Syongari# $FreeBSD: head/etc/rc.d/devfs 154637 2006-01-21 14:31:45Z matteo $
4179339Syongari#
5179339Syongari
6179339Syongari# PROVIDE: devfs
7179339Syongari# REQUIRE: mountcritremote
8179339Syongari# BEFORE:  SERVERS securelevel
9179339Syongari# KEYWORD: nojail
10179339Syongari
11179339Syongari. /etc/rc.subr
12179339Syongari
13179339Syongariname="devfs"
14179339Syongaristart_cmd='devfs_start'
15179339Syongaristop_cmd=':'
16179339Syongari
17179339Syongaridevfs_start()
18179339Syongari{
19179339Syongari	if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ]; then
20179339Syongari		devfs_init_rulesets
21179339Syongari		if [ -n "$devfs_system_ruleset" ]; then
22179339Syongari			devfs_set_ruleset $devfs_system_ruleset /dev
23179339Syongari			devfs_apply_ruleset $devfs_system_ruleset /dev
24179339Syongari		fi
25179339Syongari		if [ -n "$devfs_set_rulesets" ]; then
26179339Syongari			local _dir_set
27232496Seadler			local _dir
28179339Syongari			local _set
29179339Syongari			for _dir_set in $devfs_set_rulesets; do
30179339Syongari				_dir=${_dir_set%=*}
31179339Syongari				_set=${_dir_set#*=}
32179339Syongari				devfs_set_ruleset $_set $_dir
33179339Syongari				devfs_apply_ruleset $_set $_dir
34179339Syongari			done
35179339Syongari		fi
36179339Syongari	fi
37179339Syongari	read_devfs_conf
38179339Syongari}
39179339Syongari
40179339Syongariread_devfs_conf()
41179339Syongari{
42179339Syongari	if [ -r /etc/devfs.conf ]; then
43179339Syongari		cd /dev
44179339Syongari		while read action devicelist parameter; do
45179339Syongari			case "${action}" in
46179339Syongari			l*)	for device in ${devicelist}; do
47179339Syongari					if [ -c ${device} -a ! -e ${parameter} ]; then
48179339Syongari						ln -fs ${device} ${parameter}
49179339Syongari					fi
50179339Syongari				done
51216552Syongari				;;
52216552Syongari			o*)	for device in ${devicelist}; do
53179339Syongari					if [ -c ${device} ]; then
54179339Syongari						chown ${parameter} ${device}
55179339Syongari					fi
56179339Syongari				done
57179339Syongari				;;
58179339Syongari			p*)	for device in ${devicelist}; do
59179339Syongari					if [ -c ${device} ]; then
60179339Syongari						chmod ${parameter} ${device}
61179339Syongari					fi
62216552Syongari				done
63179339Syongari				;;
64179339Syongari			esac
65179339Syongari		done < /etc/devfs.conf
66179339Syongari	fi
67179339Syongari}
68179339Syongari
69179339Syongariload_rc_config $name
70179339Syongarirun_rc_command "$1"
71179339Syongari