Revision 4dbb3ffd0487dbcb96b5e8f720daef34f1dbdab1 authored by Michael Tuexen on 18 January 2010, 20:57:50 UTC, committed by Michael Tuexen on 18 January 2010, 20:57:50 UTC
Bugfix: Use formula from section 7.2.3 of RFC 4960. Reported by Martin Becke.
1 parent 13bb7cb
Raw File
devfs
#!/bin/sh
#
# $FreeBSD$
#

# PROVIDE: devfs
# REQUIRE: mountcritremote
# BEFORE:  SERVERS securelevel
# KEYWORD: nojail

. /etc/rc.subr

name="devfs"
start_cmd='devfs_start'
stop_cmd=':'

devfs_start()
{
	if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ]; then
		devfs_init_rulesets
		if [ -n "$devfs_system_ruleset" ]; then
			devfs_set_ruleset $devfs_system_ruleset /dev
			devfs_apply_ruleset $devfs_system_ruleset /dev
		fi
		if [ -n "$devfs_set_rulesets" ]; then
			local _dir_set
			local _dir
			local _set
			for _dir_set in $devfs_set_rulesets; do
				_dir=${_dir_set%=*}
				_set=${_dir_set#*=}
				devfs_set_ruleset $_set $_dir
				devfs_apply_ruleset $_set $_dir
			done
		fi
	fi
	read_devfs_conf
}

read_devfs_conf()
{
	if [ -r /etc/devfs.conf ]; then
		cd /dev
		while read action devicelist parameter; do
			case "${action}" in
			l*)	for device in ${devicelist}; do
					if [ -c ${device} -a ! -e ${parameter} ]; then
						ln -fs ${device} ${parameter}
					fi
				done
				;;
			o*)	for device in ${devicelist}; do
					if [ -c ${device} ]; then
						chown ${parameter} ${device}
					fi
				done
				;;
			p*)	for device in ${devicelist}; do
					if [ -c ${device} ]; then
						chmod ${parameter} ${device}
					fi
				done
				;;
			esac
		done < /etc/devfs.conf
	fi
}

load_rc_config $name
run_rc_command "$1"
back to top