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>