devfs revision 231660
1219019Sgabor#!/bin/sh
2219019Sgabor#
3219019Sgabor# $FreeBSD: stable/9/etc/rc.d/devfs 231660 2012-02-14 10:29:32Z dougb $
4219019Sgabor#
5219019Sgabor
6219019Sgabor# PROVIDE: devfs
7219019Sgabor# REQUIRE: mountcritremote
8219019Sgabor# BEFORE:  SERVERS securelevel
9219019Sgabor# KEYWORD: nojail
10219019Sgabor
11219019Sgabor. /etc/rc.subr
12219019Sgabor
13219019Sgaborname="devfs"
14219019Sgaborstart_cmd='devfs_start'
15219019Sgaborstop_cmd=':'
16219019Sgabor
17219019Sgabordevfs_start()
18219019Sgabor{
19219019Sgabor	if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ] ||
20219019Sgabor	    checkyesno devfs_load_rulesets; then
21219019Sgabor		devfs_init_rulesets
22219019Sgabor		if [ -n "$devfs_system_ruleset" ]; then
23219019Sgabor			devfs_set_ruleset $devfs_system_ruleset /dev
24219019Sgabor			devfs_apply_ruleset $devfs_system_ruleset /dev
25219019Sgabor		fi
26219019Sgabor		if [ -n "$devfs_set_rulesets" ]; then
27219019Sgabor			local _dir_set
28219019Sgabor			local _dir
29219019Sgabor			local _set
30219019Sgabor			for _dir_set in $devfs_set_rulesets; do
31219019Sgabor				_dir=${_dir_set%=*}
32219019Sgabor				_set=${_dir_set#*=}
33219019Sgabor				devfs_set_ruleset $_set $_dir
34219019Sgabor				devfs_apply_ruleset $_set $_dir
35219019Sgabor			done
36219019Sgabor		fi
37219019Sgabor	fi
38219019Sgabor	read_devfs_conf
39219019Sgabor}
40219019Sgabor
41219019Sgaborread_devfs_conf()
42219019Sgabor{
43219019Sgabor	if [ -r /etc/devfs.conf ]; then
44219019Sgabor		cd /dev
45219019Sgabor		while read action devicelist parameter; do
46219019Sgabor			case "${action}" in
47219019Sgabor			l*)	for device in ${devicelist}; do
48219019Sgabor					if [ ! -e ${parameter} ]; then
49219019Sgabor						ln -fs ${device} ${parameter}
50219019Sgabor					fi
51219019Sgabor				done
52219019Sgabor				;;
53219019Sgabor			o*)	for device in ${devicelist}; do
54219019Sgabor					if [ -c ${device} ]; then
55219019Sgabor						chown ${parameter} ${device}
56219019Sgabor					fi
57219019Sgabor				done
58219019Sgabor				;;
59219019Sgabor			p*)	for device in ${devicelist}; do
60219019Sgabor					if [ -c ${device} ]; then
61219019Sgabor						chmod ${parameter} ${device}
62219019Sgabor					fi
63219019Sgabor				done
64219019Sgabor				;;
65219019Sgabor			esac
66219019Sgabor		done < /etc/devfs.conf
67219019Sgabor	fi
68219019Sgabor}
69219019Sgabor
70219019Sgaborload_rc_config $name
71219019Sgaborrun_rc_command "$1"
72219019Sgabor