Date: Tue, 5 Jan 2010 18:27:02 -0800 From: Rob Farmer <rfarmer@predatorlabs.net> To: freebsd-rc@freebsd.org Subject: devfs ruleset processing in rc.subr Message-ID: <b025ceb71001051827p10a5becfo3e24b73a2f570f81@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hello, I am trying to fix an issue with the port shells/scponly's rc.d script and I think I may have come across a bug in /etc/rc.subr related to devfs. Here's what I'm trying to do: make_devfs() { # $1 is the user name whose home directory needs a minimal # devfs created. If ~/dev exists, it will be deleted. eval DEV="~$1/dev" while /sbin/umount "${DEV}" 2>/dev/null; do :; done /bin/rm -rf "${DEV}" /bin/mkdir -p "${DEV}" devfs_domount "${DEV}" if devfs_init_rulesets; then devfs_apply_ruleset "1" "${DEV}" && \ devfs_apply_ruleset "2" "${DEV}" || \ /sbin/umount "${DEV}" 2>/dev/null fi } The devfs_apply_ruleset function doesn't seem to process its arguments properly - it fails on the second invocation: + devfs_apply_ruleset 1 /home/test/dev + local devdir rs _me + [ -n 1 ] + eval 'rs=$1' + rs=1 + [ -n /home/test/dev ] + devdir='-m /home/test/dev' + _me=devfs_apply_ruleset + [ -z 1 ] + debug 'devfs_apply_ruleset: applying ruleset (1) to mount-point (/home/test/dev)' + /sbin/devfs -m /home/test/dev rule -s 1 applyset + return 0 + devfs_apply_ruleset 2 /home/test/dev + local devdir rs _me + [ -n 2 ] + eval 'rs=$2' + rs=/home/test/dev + [ -n /home/test/dev ] + devdir='-m /home/test/dev' + _me=devfs_apply_ruleset + [ -z /home/test/dev ] + debug 'devfs_apply_ruleset: applying ruleset (/home/test/dev) to mount-point (/home/test/dev)' + /sbin/devfs -m /home/test/dev rule -s /home/test/dev applyset devfs rule: error converting to number: /home/test/dev + warn 'devfs_apply_ruleset: unable to apply ruleset /home/test/dev to /home/test/dev' + [ -x /usr/bin/logger ] + logger 'scponlyc: WARNING: devfs_apply_ruleset: unable to apply ruleset /home/test/dev to /home/test/dev' + echo 'scponlyc: WARNING: devfs_apply_ruleset: unable to apply ruleset /home/test/dev to /home/test/dev' scponlyc: WARNING: devfs_apply_ruleset: unable to apply ruleset /home/test/dev to /home/test/dev + return 1 + /sbin/umount /home/test/dev + read USER + _return=0 + [ 0 -ne 0 ] + return 0 + _run_rc_postcmd + [ -n '' ] + return 0 + return 0 The following fixes it for me (on 9.0): Index: rc.subr =================================================================== --- rc.subr (revision 201473) +++ rc.subr (working copy) @@ -1378,7 +1378,7 @@ devfs_set_ruleset() { local devdir rs _me - [ -n "$1" ] && eval rs=\$$1 || rs= + [ -n "$1" ] && eval rs=$1 || rs= [ -n "$2" ] && devdir="-m "$2"" || devdir= _me="devfs_set_ruleset" @@ -1403,7 +1403,7 @@ devfs_apply_ruleset() { local devdir rs _me - [ -n "$1" ] && eval rs=\$$1 || rs= + [ -n "$1" ] && eval rs=$1 || rs= [ -n "$2" ] && devdir="-m "$2"" || devdir= _me="devfs_apply_ruleset" So, my question is, is this a bug or am I not understanding something here? ---- Rob Farmer
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?b025ceb71001051827p10a5becfo3e24b73a2f570f81>