1*0696600cSBjoern A. Zeeb#!/bin/sh 2*0696600cSBjoern A. Zeeb# 3*0696600cSBjoern A. Zeeb# 4*0696600cSBjoern A. Zeeb 5*0696600cSBjoern A. Zeeb# PROVIDE: devfs 6*0696600cSBjoern A. Zeeb# REQUIRE: mountcritremote 7*0696600cSBjoern A. Zeeb# BEFORE: SERVERS securelevel 8*0696600cSBjoern A. Zeeb# KEYWORD: nojail 9*0696600cSBjoern A. Zeeb 10*0696600cSBjoern A. Zeeb. /etc/rc.subr 11*0696600cSBjoern A. Zeeb 12*0696600cSBjoern A. Zeebname="devfs" 13*0696600cSBjoern A. Zeebdesc="Device filesystem" 14*0696600cSBjoern A. Zeebstart_cmd='devfs_start' 15*0696600cSBjoern A. Zeebstop_cmd=':' 16*0696600cSBjoern A. Zeeb 17*0696600cSBjoern A. Zeebdevfs_start() 18*0696600cSBjoern A. Zeeb{ 19*0696600cSBjoern A. Zeeb if [ -n "$devfs_system_ruleset" -o -n "$devfs_set_rulesets" ] || 20*0696600cSBjoern A. Zeeb checkyesno devfs_load_rulesets; then 21*0696600cSBjoern A. Zeeb devfs_init_rulesets 22*0696600cSBjoern A. Zeeb if [ -n "$devfs_system_ruleset" ]; then 23*0696600cSBjoern A. Zeeb devfs_set_ruleset $devfs_system_ruleset /dev 24*0696600cSBjoern A. Zeeb devfs_apply_ruleset $devfs_system_ruleset /dev 25*0696600cSBjoern A. Zeeb fi 26*0696600cSBjoern A. Zeeb if [ -n "$devfs_set_rulesets" ]; then 27*0696600cSBjoern A. Zeeb local _dir_set 28*0696600cSBjoern A. Zeeb local _dir 29*0696600cSBjoern A. Zeeb local _set 30*0696600cSBjoern A. Zeeb for _dir_set in $devfs_set_rulesets; do 31*0696600cSBjoern A. Zeeb _dir=${_dir_set%=*} 32*0696600cSBjoern A. Zeeb _set=${_dir_set#*=} 33*0696600cSBjoern A. Zeeb devfs_set_ruleset $_set $_dir 34*0696600cSBjoern A. Zeeb devfs_apply_ruleset $_set $_dir 35*0696600cSBjoern A. Zeeb done 36*0696600cSBjoern A. Zeeb fi 37*0696600cSBjoern A. Zeeb fi 38*0696600cSBjoern A. Zeeb read_devfs_conf 39*0696600cSBjoern A. Zeeb} 40*0696600cSBjoern A. Zeeb 41*0696600cSBjoern A. Zeebread_devfs_conf() 42*0696600cSBjoern A. Zeeb{ 43*0696600cSBjoern A. Zeeb if [ -r /etc/devfs.conf ]; then 44*0696600cSBjoern A. Zeeb cd /dev 45*0696600cSBjoern A. Zeeb while read action devicelist parameter; do 46*0696600cSBjoern A. Zeeb case "${action}" in 47*0696600cSBjoern A. Zeeb l*) for device in ${devicelist}; do 48*0696600cSBjoern A. Zeeb if [ ! -e ${parameter} ]; then 49*0696600cSBjoern A. Zeeb ln -fs ${device} ${parameter} 50*0696600cSBjoern A. Zeeb fi 51*0696600cSBjoern A. Zeeb done 52*0696600cSBjoern A. Zeeb ;; 53*0696600cSBjoern A. Zeeb o*) for device in ${devicelist}; do 54*0696600cSBjoern A. Zeeb if [ -c ${device} ]; then 55*0696600cSBjoern A. Zeeb chown ${parameter} ${device} 56*0696600cSBjoern A. Zeeb fi 57*0696600cSBjoern A. Zeeb done 58*0696600cSBjoern A. Zeeb ;; 59*0696600cSBjoern A. Zeeb p*) for device in ${devicelist}; do 60*0696600cSBjoern A. Zeeb if [ -c ${device} ]; then 61*0696600cSBjoern A. Zeeb chmod ${parameter} ${device} 62*0696600cSBjoern A. Zeeb fi 63*0696600cSBjoern A. Zeeb done 64*0696600cSBjoern A. Zeeb ;; 65*0696600cSBjoern A. Zeeb esac 66*0696600cSBjoern A. Zeeb done < /etc/devfs.conf 67*0696600cSBjoern A. Zeeb fi 68*0696600cSBjoern A. Zeeb} 69*0696600cSBjoern A. Zeeb 70*0696600cSBjoern A. Zeebload_rc_config $name 71*0696600cSBjoern A. Zeebrun_rc_command "$1" 72