Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Oct 2007 10:11:23 -0600
From:      John E Hein <jhein@timing.com>
To:        freebsd-rc@freebsd.org
Subject:   rc.subr, 1.34.2.22, breaks amd_map_program="ypcat -k amd.master" in RELENG_6
Message-ID:  <18199.34219.154950.645190@gromit.timing.com>

next in thread | raw e-mail | index | archive | help
I use amd with nis.
My rc.conf settings are:

amd_enable=YES
amd_map_program="ypcat -k amd.master"

Output of ypcat -k amd.master looks like so:

/foo amd.foo
/bar amd.bar
/baz amd.baz

I was running RELENG_6 from early July.
But I just updated to yesterday's RELENG_6.

Now upon running /etc/rc.d/amd start, I get:

eval: /bar: Permission denied
eval: /baz: Permission denied

And the /var/run/amd.pid is empty (explained below).

The reason is that the rc_flags has line breaks in it
and the new rc.subr no longer converts them to spaces.

If you put set | grep -A 10 rc_flags in /etc/rc.d/amd
after this line:

                rc_flags="${rc_flags} `eval ${amd_map_program}`"

... you will see something like this:

rc_flags='-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map /foo amd.foo
/bar amd.bar
/baz amd.baz'


Later the -p ${rc_flags} > /var/run/amd.pid 2> /dev/null is
tacked on, putting "> ..." it's own separate line.  This
explains why /var/run/amd.pid is empty.

When using 1.34.2.22 (MFC of 1.72, 2007/08/17, committed by yar from
conf/98734), it fails with the described behavior.  Using 1.34.2.21
(2007/07/12), it works fine.  Something in the .22 commit causes the
newlines to not get converted to plain spaces.


I have not yet attempted to narrow down what in .22 (+198 -146)
actually changes the behavior, but the following works around the
problem by converting the newlines to spaces:

Index: amd
===================================================================
RCS file: /base/FreeBSD-CVS/src/etc/rc.d/amd,v
retrieving revision 1.15.2.3
diff -u -p -r1.15.2.3 amd
--- amd	22 Oct 2006 20:33:10 -0000	1.15.2.3
+++ amd	18 Oct 2007 15:57:34 -0000
@@ -34,7 +34,7 @@ amd_precmd()
 	[Nn][Oo] | '')
 		;;
 	*)
-		rc_flags="${rc_flags} `eval ${amd_map_program}`"
+		rc_flags="${rc_flags} `echo $(eval ${amd_map_program})`"
 		;;
 	esac



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?18199.34219.154950.645190>