Hi, On Fri, Sep 24, 2010 at 08:09:14AM -0600, Serge Dubrouski wrote: > Thanks, Lars, for the explanation. > > Dejan, can you fix it?
Fixed. Thanks Lars for keeping an eye on the traffic :) Dejan > On Thu, Sep 23, 2010 at 4:48 PM, Lars Ellenberg > <lars.ellenb...@linbit.com> wrote: > > On Wed, Sep 22, 2010 at 08:26:43AM -0600, Serge Dubrouski wrote: > >> Thanks, Dejan - > >> > >> There was one more little patch for pgsql to replace: > >> > >> ocf_run $quietrun su $OCF_RESKEY_pgdba -c "$*" > >> > >> with > >> > >> ocf_run $quietrun su $OCF_RESKEY_pgdba -c "cd $OCF_RESKEY_pgdata; $@" > > > > Don't do that. > > shell quoting is like gamling at times. > > > > o() { > > output=`"$@" 2>&1`; > > set +x; > > echo "----- result:"; > > echo "$output"; > > }; > > p0() { ( set -x; o su lars -c "cd . ; $@" ); } > > p1() { ( set -x; o su lars -c "cd . ; $*" ); } > > > > # invokation: > > > > The "$@" Variant: > > # p0 'printf "%s\n"' "a white space a" b c d > > + o su lars -c 'cd . ; printf "%s\n"' 'a white space a' b c d > > ++ su lars -c 'cd . ; printf "%s\n"' 'a white space a' b c d > > + output= > > + set +x > > ----- result: > > > > > > D'oh. Nothing. Why? > > Because the extra arguments have become extra arguments to su as > > well, > > and are no longer part of the script passed to -c. > > > > The "$*" Variant: > > # p1 'printf "%s\n"' "a white space a" b c d > > + o su lars -c 'cd . ; printf "%s\n" a white space a b c d' > > ++ su lars -c 'cd . ; printf "%s\n" a white space a b c d' > > + output='a > > white > > space > > a > > b > > c > > d' > > + set +x > > ----- result: > > a > > white > > space > > a > > b > > c > > d > > > > Not too good, but at least acceptable. > > > > All in one parameter, special case, no difference with $* and $@ > > # p1 'printf "%s\n" "a white space a" b c d' > > + o su lars -c 'cd . ; printf "%s\n" "a white space a" b c d' > > ++ su lars -c 'cd . ; printf "%s\n" "a white space a" b c d' > > + output='a white space a > > b > > c > > d' > > + set +x > > ----- result: > > a white space a > > b > > c > > d > > > > > > It does not make a difference for the current use of runasowner, > > as long as you use it always with exactly one parameter. > > > > But as that is non-obvious to most, and people are going to copy'n'paste > > from that resource agent later, don't do the "$@". > > > > Expansion of $@ and $* within double quotes is very much different, > > and $@ in this context is very likely wrong, as it may pass flags > > to su which had been meant to be passed to the command run within -c. > > > > But yes, do the "cd $OCF_RESKEY_pgdata; $*". > > No problem with that. > > > > -- > > : Lars Ellenberg > > : LINBIT | Your Way to High Availability > > : DRBD/HA support and consulting http://www.linbit.com > > > > DRBD® and LINBIT® are registered trademarks of LINBIT, Austria. > > _______________________________________________________ > > Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org > > http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev > > Home Page: http://linux-ha.org/ > > > > > > -- > Serge Dubrouski. > _______________________________________________________ > Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org > http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev > Home Page: http://linux-ha.org/ _______________________________________________________ Linux-HA-Dev: Linux-HA-Dev@lists.linux-ha.org http://lists.linux-ha.org/mailman/listinfo/linux-ha-dev Home Page: http://linux-ha.org/