freebsd-skq/etc/rc.d/devfs
Konstantin Belousov c4c1575a01 Do not check for existence of symlink source for the link action. This
does not work for link in subdirectory, and sometimes it is useful to
create symlink in advance for dynamically created device node.

MFC after:	1 week
2010-01-23 11:42:31 +00:00

71 lines
1.3 KiB
Bash
Executable File

#!/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 [ ! -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"